[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] Provide support for multiple frame buffers in Xen



Hi,

At 15:48 -0500 on 01 Mar (1362152937), Robert Phillips wrote:
> Support is provided for both shadow and hardware assisted paging (HAP)
> modes. This code bookkeeps the set of video frame buffers (vram),
> detects when the guest has modified any of those buffers and, upon request,
> returns a bitmap of the modified pages.
> This lets other software components re-paint the portions of the monitor
> (or monitors) that have changed.
> Each monitor has a frame buffer of some size at some position
> in guest physical memory.
> The set of frame buffers being tracked can change over time as monitors
> are plugged and unplugged.
> 
> This is the 9th version of this patch.

I'm afraid we'll need to go to a tenth.  During VM shutdown of a
shadow-pagetables winXP VM, on AMD:

(XEN) Xen BUG at domain_page.c:143
(XEN) ----[ Xen-4.3-unstable  x86_64  debug=y  Tainted:    C ]----
(XEN) CPU:    2
(XEN) RIP:    e008:[<ffff82c4c015efd2>] map_domain_page+0x423/0x4eb
(XEN) RFLAGS: 0000000000010046   CONTEXT: hypervisor
(XEN) rax: 0000000000000060   rbx: ffff83021797d000   rcx: 0000000000000000
(XEN) rdx: 0000000000000060   rsi: 0000000000000060   rdi: 0000000000000040
(XEN) rbp: ffff83021d60fa68   rsp: ffff83021d60fa28   r8:  00000000ffffffff
(XEN) r9:  ffff820060006008   r10: 0000000000000000   r11: 000000000016a515
(XEN) r12: ffff8300df51d000   r13: 000000000021f9df   r14: 0000000000000060
(XEN) r15: 0000000000000007   cr0: 0000000080050033   cr4: 00000000000006f0
(XEN) cr3: 00000002166c7000   cr2: ffff880002756830
(XEN) ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: e010   cs: e008
(XEN) Xen stack trace from rsp=ffff83021d60fa28:
(XEN)    ffff83021797d2d8 0000000000000286 ffff83021d60fa78 ffff83021f9df1f8
(XEN)    0000000000000000 000000000021fbb6 ffff83021f9df0e0 00000000000000d8
(XEN)    ffff83021d60fa88 ffff82c4c01e96c7 0000000000000006 ffff83021f9df1e0
(XEN)    ffff83021d60fae8 ffff82c4c01f90a3 ffff83021f9df0a0 ffff83021f9df0a0
(XEN)    ffff83021f991000 0000000000000009 00000000002166e7 0000000000000004
(XEN)    000000000016a515 ffff83021f991000 ffff82e0043f76c0 ffff8300df688000
(XEN)    ffff83021d60fb38 ffff82c4c02077c8 0000000000000093 000000000021fbb6
(XEN)    ffff82c4c0125159 0000000000000000 0000000000000601 000000000021f65a
(XEN)    ffff82e0043f76c0 ffff82e000000000 ffff83021d60fb68 ffff82c4c01f2acc
(XEN)    0000000000162aab 000000000021f65a 000000000021f65a ffff820040046008
(XEN)    ffff83021d60fbe8 ffff82c4c0207680 ffff83021d608000 ffff820040046000
(XEN)    ffff8300df688000 000000000021f65a 000000021f65a000 000000000021fbb6
(XEN)    0000000200000000 001040001d60fbc8 ffff82c4c0125159 0000000000000000
(XEN)    ffff82e0043ecb40 ffff82e000000000 ffff83021f991000 ffff82e0043ecb20
(XEN)    ffff83021d60fc18 ffff82c4c01f2ad7 000000fc00000000 0000000000000000
(XEN)    0000000000000000 000000000021f65a ffff83021d60fc78 ffff82c4c01f3c0c
(XEN)    0000000100000000 ffff8300df688000 0000000000000286 ffff83021d60fc58
(XEN)    ffff82c4c0125159 ffff83021f991000 0000000000000000 0000000000000000
(XEN)    00007d2000000000 ffff83021d608000 ffff83021d60fcc8 ffff82c4c01f3f8b
(XEN)    ffff83021d60fcc8 ffff82c4c012d34c ffff82c4c0125416 0000000000000003
(XEN) Xen call trace:
(XEN)    [<ffff82c4c015efd2>] map_domain_page+0x423/0x4eb
(XEN)    [<ffff82c4c01e96c7>] remap_vaddr+0x2b/0x35
(XEN)    [<ffff82c4c01f90a3>] dirty_vram_delete_shadow+0xac/0x18d
(XEN)    [<ffff82c4c02077c8>] sh_destroy_l1_shadow__guest_3+0x10a/0x25d
(XEN)    [<ffff82c4c01f2acc>] sh_destroy_shadow+0x113/0x194
(XEN)    [<ffff82c4c0207680>] sh_destroy_l2_shadow__guest_3+0x38a/0x3c8
(XEN)    [<ffff82c4c01f2ad7>] sh_destroy_shadow+0x11e/0x194
(XEN)    [<ffff82c4c01f3c0c>] _shadow_prealloc+0x45a/0x678
(XEN)    [<ffff82c4c01f3f8b>] sh_set_allocation+0x161/0x2a0
(XEN)    [<ffff82c4c01f893d>] shadow_teardown+0x25e/0x3b4
(XEN)    [<ffff82c4c01dce35>] paging_teardown+0x29/0x40
(XEN)    [<ffff82c4c015e768>] domain_relinquish_resources+0xae/0x2e6
(XEN)    [<ffff82c4c01055b4>] domain_kill+0x87/0xe1
(XEN)    [<ffff82c4c0103a5b>] do_domctl+0xaa3/0x11e8
(XEN)    [<ffff82c4c022601b>] syscall_enter+0xeb/0x145
(XEN)    
(XEN) 
(XEN) ****************************************
(XEN) Panic on CPU 2:
(XEN) Xen BUG at domain_page.c:143
(XEN) ****************************************

( config: 
 name = "winxp"
 builder = "hvm"
 memory = 4096
 vcpus = 2
 hap = 0
 vif = [ 'type=ioemu, bridge=xenbr0' ]
 disk = [ 'phy:/dev/loop0,hda,w', 'file:/root/winxpsp3.iso,hdc:cdrom,r' ]
 usb = 1
 usbdevice = "tablet"
)

And in normal operation of a 64-bit Win7 VM, on Intel:

(XEN) Xen BUG at domain_page.c:143
(XEN) ----[ Xen-4.3-unstable  x86_64  debug=y  Not tainted ]----
(XEN) CPU:    5
(XEN) RIP:    e008:[<ffff82c4c015efd2>] map_domain_page+0x423/0x4eb
(XEN) RFLAGS: 0000000000010046   CONTEXT: hypervisor
(XEN) rax: 0000000000000000   rbx: ffff83023d508000   rcx: 00000000ffffffff
(XEN) rdx: 0000000000000000   rsi: 0000000000000000   rdi: ffff8300bf2fb338
(XEN) rbp: ffff83023d527c28   rsp: ffff83023d527be8   r8:  ffffffffffffffff
(XEN) r9:  ffff820060006008   r10: 0000000000000000   r11: 0180000000000000
(XEN) r12: ffff8300bf2fb000   r13: 00000000001cd200   r14: 0000000000000080
(XEN) r15: 0000000000000000   cr0: 0000000080050033   cr4: 00000000000026f0
(XEN) cr3: 000000023f3d6000   cr2: ffff88002da162b0
(XEN) ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: e010   cs: e008
(XEN) Xen stack trace from rsp=ffff83023d527be8:
(XEN)    ffff83023d5082d8 0000000000000286 0000000000000069 ffff8301cd2006a8
(XEN)    0000000000000007 00000000000f0047 000000020f0be038 ffff83023f213d90
(XEN)    ffff83023d527c48 ffff82c4c01e96c7 00000000001d6a00 ffff82004006e038
(XEN)    ffff83023d527cc8 ffff82c4c01e9c18 ffff8300bf2fb000 000000000020f0be
(XEN)    000000000000006e 00000000000006a8 ffff830200000001 00000000000f0047
(XEN)    ffff83023fca0000 0000000000000000 00000000001d6a00 ffff82004006e038
(XEN)    0000000000000007 00000000000f0047 000ffffffffff000 ffff83023fca0000
(XEN)    ffff83023d527d38 ffff82c4c0212bf9 ffff82004000c000 ffff82004006e000
(XEN)    000000020f0be000 ffff8300bf2ee000 00000000000f0160 00000000000f0000
(XEN)    ffff83023f213d50 ffff82e0041e17c0 0000000000000001 00007d2000000000
(XEN)    ffff8300bf2ee000 00000000000f0000 ffff83023d527da8 ffff82c4c01f92ca
(XEN)    ffff83023f213d50 ffff83023fca0000 0000000000000390 00000000000f0160
(XEN)    ffff83023f213d90 00000000000f0160 ffff82c4c0125416 0000000000000000
(XEN)    0000000000000160 00000000000f0000 00007f3489409004 00000000000f0000
(XEN)    ffff83023d527e48 ffff82c4c01ea132 0000000100000001 ffff83023d508000
(XEN)    ffff82e0046b1b40 00000000002358da 00007f3486a84004 ffff83023f213d90
(XEN)    ffff83023fca0ad0 ffff82e0046b1b40 0000000000000000 ffff82c4c017589c
(XEN)    ffff83023fca0000 000000000000000f 0000000000237487 ffff83023d508000
(XEN)    ffffffffffffffea 0000000000000006 00007f3489409004 00000000000f0000
(XEN)    ffff83023d527ef8 ffff82c4c01b4315 ffff83023d527e68 ffff82c4c016d072
(XEN) Xen call trace:
(XEN)    [<ffff82c4c015efd2>] map_domain_page+0x423/0x4eb
(XEN)    [<ffff82c4c01e96c7>] remap_vaddr+0x2b/0x35
(XEN)    [<ffff82c4c01e9c18>] dirty_vram_range_update+0x96/0x3bc
(XEN)    [<ffff82c4c0212bf9>] sh_find_vram_mappings_in_l1__guest_4+0x107/0x135
(XEN)    [<ffff82c4c01f92ca>] sh_find_all_vram_mappings+0x146/0x19e
(XEN)    [<ffff82c4c01ea132>] shadow_track_dirty_vram+0x1f4/0x46e
(XEN)    [<ffff82c4c01b4315>] do_hvm_op+0xf39/0x1f43
(XEN)    [<ffff82c4c022601b>] syscall_enter+0xeb/0x145
(XEN)    
(XEN) 
(XEN) ****************************************
(XEN) Panic on CPU 5:
(XEN) Xen BUG at domain_page.c:143
(XEN) ****************************************

( config: 
 name = "win7"
 builder = "hvm"
 memory = 6000
 vcpus = 2
 vif = [ 'type=ioemu, bridge=xenbr0' ]
 disk = [ 'file:/root/win7.img,hda,w', 'file:/root/win7sp1-x64.iso,hdc:cdrom,r' 
]
 usb = 1
 usbdevice = "tablet"
 hap = 0
) 

Those were the first two VMs I tried, so I don't know if anything else
works.

Since we're going to v10 anway, can you please make the new
remap_[vm]addr functions static?  They're not used outside
dirty_vram.c.

Also, please drop the mm/p2m.c changes, which are just whitespace
adjustments now, and not related to the rest of the patch. 

Cheers,

Tim. 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.