Il 09/07/2015 15:10, Paul Durrant ha scritto:
This patch series re-works much of the code involved in emulation of port
and memory mapped I/O for HVM guests.
The code has become very convoluted and, at least by inspection, certain
emulations will apparently malfunction.
The series is broken down into 15 patches (which are also available in
my xenbits repo: http://xenbits.xen.org/gitweb/?p=people/pauldu/xen.git
on the emulation34 branch).
Yesterday I retried with this version and seems that you fixed something
that make possible atleast debug in the domU.
I taken gdb data of X crash inside Sid hvm domU:
#0 sse2_blt (src_bits=<optimized out>, dst_bits=<optimized out>,
src_stride=<optimized out>, dst_stride=<optimized out>,
src_bpp=<optimized out>, src_x=<optimized out>, src_y=0, dest_x=0,
dest_y=0, width=1024, height=<optimized out>, dst_bpp=<optimized out>,
imp=<optimized out>) at ../../pixman/pixman-sse2.c:4773
Latest istruction:
=> 0x7f70360ef8eb <sse2_blt+459>: movaps %xmm0,-0x10(%rsi)
Full log in attachment.
If you need more informations/tests tell me and I'll post them.
Thanks for any reply and sorry for my bad english.
Previous changelog
------------------
v4:
- Removed previous patch (make sure translated MMIO reads or
writes fall within a page) and rebased rest of series.
- Address Jan's comments on patch #1
v3:
- Addressed comments from Jan
- Re-ordered series to bring a couple of more trivial patches to the
front
- Backport to XenServer (4.5) now passing automated tests
- Tested on unstable with QEMU upstream and trad, with and without
HAP (to force shadow emulation)
v2:
- Removed bogus assertion from patch #15
- Re-worked patch #17 after basic testing of back-port onto XenServer
Subsequent changes are logged in the individual patch files (thanks
to David Vrabel for that).
Testing
-------
v6 of the series was been back-ported to staging-4.5 and then dropped
onto the XenServer (Dundee) patch queue. All automated branch-safety tests
pass.
v7 has just been compile tested since changes were largely cosmetic. It
will be back-ported in the near future.
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
Full backtrace:
#0 sse2_blt (src_bits=<optimized out>, dst_bits=<optimized out>,
src_stride=<optimized out>, dst_stride=<optimized out>, src_bpp=<optimized
out>, src_x=<optimized out>, src_y=0, dest_x=0, dest_y=0, width=1024,
height=<optimized out>, dst_bpp=<optimized out>, imp=<optimized out>) at
../../pixman/pixman-sse2.c:4773
w = 4160
s = 0x7f702985e530 "\300\300\300"
d = 0x7f70226d3fd0 "\300\300\300"
src_bytes = 0x7f702985d130
"\277\277\277\261\277\277\277\260\277\277\277\257\277\277\277\256\277\277\277\257\277\277\277\261\300\300\300\261\300\300\300\260\277\277\277\261\277\277\277\261\277\277\277\260\277\277\277\257\277\277\277\262\277\277\277\261\277\277\277\262\300\300\300\261\300\300\300\261\300\300\300\261\277\277\277\257\277\277\277\261\277\277\277\261\277\277\277\261\277\277\277\260\300\300\300\262\277\277\277\261\277\277\277\260\277\277\277\260\277\277\277\260\277\277\277\261\277\277\277\261\277\277\277\261\277\277\277\261\277\277\277\261\277\277\277\260\277\277\277\261\277\277\277\261\277\277\277\261\277\277\277\260\277\277\277\261\277\277\277\261\277\277\277\261\277\277\277\260\277\277\277\262\277\277\277\261\277\277\277\261\277\277\277\260\277\277\277\261\277\277\277\261\277\277\277\261\277\277\277\261"...
dst_bytes = <optimized out>
byte_width = 4096
#1 0x00007f70360efa39 in sse2_blt (height=768, width=1024, dest_y=0,
dest_x=<optimized out>, src_y=<optimized out>, src_x=<optimized out>,
dst_bpp=<optimized out>, src_bpp=<optimized out>, dst_stride=<optimized out>,
src_stride=<optimized out>, dst_bits=<optimized out>, src_bits=<optimized out>,
imp=<optimized out>) at ../../pixman/pixman-sse2.c:4822
No locals.
#2 sse2_composite_copy_area (imp=<optimized out>, info=<optimized out>) at
../../pixman/pixman-sse2.c:4815
op = <optimized out>
src_image = <optimized out>
mask_image = <optimized out>
dest_image = <optimized out>
src_x = <optimized out>
src_y = <optimized out>
mask_x = <optimized out>
mask_y = <optimized out>
dest_x = <optimized out>
dest_y = 0
width = 1024
height = 768
#3 0x00007f7036067711 in pixman_image_composite32 (op=op@entry=PIXMAN_OP_SRC,
src=<optimized out>, mask=mask@entry=0x0, dest=<optimized out>,
src_x=src_x@entry=0, src_y=src_y@entry=0, mask_x=0, mask_y=0, dest_x=0,
dest_y=0, width=1024, height=768) at ../../pixman/pixman.c:707
src_format = <optimized out>
mask_format = 0
dest_format = PIXMAN_a8r8g8b8
region = {extents = {x1 = 0, y1 = 0, x2 = 1024, y2 = 768}, data = 0x0}
extents = {x1 = 0, y1 = 0, x2 = 1024, y2 = 768}
imp = 0x7f7038e848a0
func = 0x7f70360ef9d0 <sse2_composite_copy_area>
info = {op = PIXMAN_OP_SRC, src_image = 0x7f7039267e90, mask_image =
0x0, dest_image = 0x7f70392603d0, src_x = 0, src_y = 0, mask_x = 0, mask_y = 0,
dest_x = 0, dest_y = 0, width = 1024, height = 768, src_flags = 42420863,
mask_flags = 8194, dest_flags = 34032255}
pbox = 0x7fff9ba9e060
n = 0
#4 0x00007f70360677e3 in pixman_image_composite (op=op@entry=PIXMAN_OP_SRC,
src=<optimized out>, mask=mask@entry=0x0, dest=<optimized out>,
src_x=src_x@entry=0, src_y=src_y@entry=0, mask_x=<optimized out>,
mask_y=<optimized out>, dest_x=<optimized out>, dest_y=<optimized out>,
width=<optimized out>, height=<optimized out>) at ../../pixman/pixman.c:730
No locals.
#5 0x00007f7030e61ca8 in download_box_no_update (surface=0x7f7037402f88,
surface=0x7f7037402f88, y2=<optimized out>, x2=<optimized out>, y1=0, x1=0) at
../../src/qxl_surface.c:133
No locals.
#6 qxl_download_box (surface=0x7f7037402f88, x1=0, y1=0, x2=<optimized out>,
y2=<optimized out>) at ../../src/qxl_surface.c:150
No locals.
#7 0x00007f7030e61daf in qxl_surface_prepare_access (surface=0x7f7037402f88,
pixmap=0x7f70392c3fa0, region=0x7fff9ba9e190, access=<optimized out>) at
../../src/qxl_surface.c:183
n_boxes = <optimized out>
boxes = 0x7fff9ba9e190
pScreen = 0x7f7038ea9e50
pScrn = <optimized out>
new = {extents = {x1 = 0, y1 = 0, x2 = 1024, y2 = 768}, data = 0x0}
#8 0x00007f7030e6cd6d in uxa_prepare_access (pDrawable=0x7f70392c3fa0,
region=0x7fff9ba9e200, region@entry=0x0, access=access@entry=UXA_ACCESS_RO) at
../../../src/uxa/uxa.c:172
pScreen = <optimized out>
xoff = 0
yoff = 0
pPixmap = 0x7f70392c3fa0
box = {x1 = 0, y1 = 0, x2 = <optimized out>, y2 = <optimized out>}
region_rec = {extents = {x1 = 0, y1 = 0, x2 = 1024, y2 = 768}, data =
0x0}
result = 1
#9 0x00007f7030e6d0f0 in uxa_prepare_access_window (pWin=0x7f7038f2ef70) at
../../../src/uxa/uxa.c:310
No locals.
#10 0x00007f7030e6d187 in uxa_change_window_attributes (pWin=0x7f7038f2ef70,
mask=1) at ../../../src/uxa/uxa.c:343
ret = <optimized out>
need_access = 1
#11 0x00007f70371346fd in ?? ()
No symbol table info available.
#12 0x00007f70370d5ef4 in ChangeWindowAttributes ()
No symbol table info available.
#13 0x00007f70370a22f6 in ?? ()
No symbol table info available.
#14 0x00007f70370a8117 in ?? ()
No symbol table info available.
#15 0x00007f70370ac29b in ?? ()
No symbol table info available.
#16 0x00007f7034f70b45 in __libc_start_main (main=0x7f7037096660, argc=7,
argv=0x7fff9ba9e588, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fff9ba9e578) at libc-start.c:287
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, 1261194766413414073,
140119936427621, 140735804990848, 0, 0, -1261114930715214151,
-1197746277989925191}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0,
0x7f7037213d90 <__libc_csu_init>, 0x7fff9ba9e588}, data = {prev = 0x0, cleanup
= 0x0, canceltype = 924925328}}}
not_first_call = <optimized out>
#17 0x00007f703709668e in _start ()
No symbol table info available.
Registers:
rax 0x7f70221d3010 140119585402896
rbx 0x7f702985d130 140119709700400
rcx 0x7f702985e530 140119709705520
rdx 0x1000 4096
rsi 0x7f70226d4010 140119590649872
rdi 0x7f702985e530 140119709705520
rbp 0x1400 0x1400
rsp 0x7fff9ba9df88 0x7fff9ba9df88
r8 0x1000 4096
r9 0x7f70221d3010 140119585402896
r10 0x300 768
r11 0x1000 4096
r12 0xffffffffffffec00 -5120
r13 0x0 0
r14 0x0 0
r15 0x0 0
rip 0x7f70360ef8eb 0x7f70360ef8eb <sse2_blt+459>
eflags 0x13202 [ IF #12 #13 RF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
Current instructions:
=> 0x7f70360ef8eb <sse2_blt+459>: movaps %xmm0,-0x10(%rsi)
0x7f70360ef8ef <sse2_blt+463>: cmp $0x3f,%r8d
0x7f70360ef8f3 <sse2_blt+467>: jg 0x7f70360ef8c0 <sse2_blt+416>
0x7f70360ef8f5 <sse2_blt+469>: sub $0x40,%edx
0x7f70360ef8f8 <sse2_blt+472>: mov %edx,%esi
0x7f70360ef8fa <sse2_blt+474>: shr $0x6,%esi
0x7f70360ef8fd <sse2_blt+477>: mov %esi,%ecx
0x7f70360ef8ff <sse2_blt+479>: shl $0x6,%esi
0x7f70360ef902 <sse2_blt+482>: add $0x1,%rcx
0x7f70360ef906 <sse2_blt+486>: sub %esi,%edx
0x7f70360ef908 <sse2_blt+488>: shl $0x6,%rcx
0x7f70360ef90c <sse2_blt+492>: add %rcx,%rdi
0x7f70360ef90f <sse2_blt+495>: add %rcx,%rax
0x7f70360ef912 <sse2_blt+498>: jmpq 0x7f70360ef7cf <sse2_blt+175>
0x7f70360ef917 <sse2_blt+503>: lea (%rdx,%rdx,1),%eax
0x7f70360ef91a <sse2_blt+506>: movslq %r9d,%r9
Threads backtrace:
Thread 3 (Thread 0x7f7023f72700 (LWP 2260)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f7027bfa463 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#2 0x00007f7027bf9cc7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#3 0x00007f70347160a4 in start_thread (arg=0x7f7023f72700) at
pthread_create.c:309
#4 0x00007f703503507d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111
Thread 2 (Thread 0x7f7024773700 (LWP 2259)):
#0 pthread_cond_wait@@GLIBC_2.3.2 () at
../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1 0x00007f7027bfa463 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#2 0x00007f7027bf9cc7 in ?? () from /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
#3 0x00007f70347160a4 in start_thread (arg=0x7f7024773700) at
pthread_create.c:309
#4 0x00007f703503507d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:111
Thread 1 (Thread 0x7f7037451980 (LWP 2255)):
#0 sse2_blt (src_bits=<optimized out>, dst_bits=<optimized out>,
src_stride=<optimized out>, dst_stride=<optimized out>, src_bpp=<optimized
out>, src_x=<optimized out>, src_y=0, dest_x=0, dest_y=0, width=1024,
height=<optimized out>, dst_bpp=<optimized out>, imp=<optimized out>) at
../../pixman/pixman-sse2.c:4773
#1 0x00007f70360efa39 in sse2_blt (height=768, width=1024, dest_y=0,
dest_x=<optimized out>, src_y=<optimized out>, src_x=<optimized out>,
dst_bpp=<optimized out>, src_bpp=<optimized out>, dst_stride=<optimized out>,
src_stride=<optimized out>, dst_bits=<optimized out>, src_bits=<optimized out>,
imp=<optimized out>) at ../../pixman/pixman-sse2.c:4822
#2 sse2_composite_copy_area (imp=<optimized out>, info=<optimized out>) at
../../pixman/pixman-sse2.c:4815
#3 0x00007f7036067711 in pixman_image_composite32 (op=op@entry=PIXMAN_OP_SRC,
src=<optimized out>, mask=mask@entry=0x0, dest=<optimized out>,
src_x=src_x@entry=0, src_y=src_y@entry=0, mask_x=0, mask_y=0, dest_x=0,
dest_y=0, width=1024, height=768) at ../../pixman/pixman.c:707
#4 0x00007f70360677e3 in pixman_image_composite (op=op@entry=PIXMAN_OP_SRC,
src=<optimized out>, mask=mask@entry=0x0, dest=<optimized out>,
src_x=src_x@entry=0, src_y=src_y@entry=0, mask_x=<optimized out>,
mask_y=<optimized out>, dest_x=<optimized out>, dest_y=<optimized out>,
width=<optimized out>, height=<optimized out>) at ../../pixman/pixman.c:730
#5 0x00007f7030e61ca8 in download_box_no_update (surface=0x7f7037402f88,
surface=0x7f7037402f88, y2=<optimized out>, x2=<optimized out>, y1=0, x1=0) at
../../src/qxl_surface.c:133
#6 qxl_download_box (surface=0x7f7037402f88, x1=0, y1=0, x2=<optimized out>,
y2=<optimized out>) at ../../src/qxl_surface.c:150
#7 0x00007f7030e61daf in qxl_surface_prepare_access (surface=0x7f7037402f88,
pixmap=0x7f70392c3fa0, region=0x7fff9ba9e190, access=<optimized out>) at
../../src/qxl_surface.c:183
#8 0x00007f7030e6cd6d in uxa_prepare_access (pDrawable=0x7f70392c3fa0,
region=0x7fff9ba9e200, region@entry=0x0, access=access@entry=UXA_ACCESS_RO) at
../../../src/uxa/uxa.c:172
#9 0x00007f7030e6d0f0 in uxa_prepare_access_window (pWin=0x7f7038f2ef70) at
../../../src/uxa/uxa.c:310
#10 0x00007f7030e6d187 in uxa_change_window_attributes (pWin=0x7f7038f2ef70,
mask=1) at ../../../src/uxa/uxa.c:343
#11 0x00007f70371346fd in ?? ()
#12 0x00007f70370d5ef4 in ChangeWindowAttributes ()
#13 0x00007f70370a22f6 in ?? ()
#14 0x00007f70370a8117 in ?? ()
#15 0x00007f70370ac29b in ?? ()
#16 0x00007f7034f70b45 in __libc_start_main (main=0x7f7037096660, argc=7,
argv=0x7fff9ba9e588, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7fff9ba9e578) at libc-start.c:287
#17 0x00007f703709668e in _start ()
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel