[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |