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

Re: [Xen-devel] Bug on shadow page mode



>>> On 02.04.13 at 10:40, "Hao, Xudong" <xudong.hao@xxxxxxxxx> wrote:
> (XEN) ----[ Xen-4.3-unstable  x86_64  debug=y  Tainted:    C ]----
> (XEN) CPU:    4
> (XEN) RIP:    e008:[<ffff82c4c01e637f>] guest_walk_tables_4_levels+0x135/0x6a6
> (XEN) RFLAGS: 0000000000010286   CONTEXT: hypervisor
> (XEN) rax: 0000000000000001   rbx: ffff83007f087c98   rcx: 0000000000000005
> (XEN) rdx: 0000000000000002   rsi: 0000000000800000   rdi: ffff83007f087ce0
> (XEN) rbp: ffff83007f087ab8   rsp: ffff83007f087a38   r8:  0000000000000004
> (XEN) r9:  000000000002b650   r10: 0000000000000022   r11: 0000000000000206
> (XEN) r12: ffff830047374000   r13: 0000003a0f388718   r14: ffff82c4c025f90c
> (XEN) r15: ffff82c406a00000   cr0: 000000008005003b   cr4: 00000000000426f0
> (XEN) cr3: 000000004767e000   cr2: ffff82c406a00000
> (XEN) ds: 0000   es: 0000   fs: 0000   gs: 0000   ss: 0000   cs: e008
> (XEN) Xen stack trace from rsp=ffff83007f087a38:
> (XEN)    000000007f087a88 ffff8300477df000 800000003e604025 000000007f087b10
> (XEN)    ffff83007f087ac8 ffff8300477c4820 0000000528dd40f8 0080000000000004
> (XEN)    ffff830028dd4ff8 ffff830000000000 ffff83007f087b48 ffff830047374000
> (XEN)    ffff8300477df000 ffff83007f087f18 0000000000000000 000000000000000e
> (XEN)    ffff83007f087d18 ffff82c4c020d8cc ffff82c406a00000 ffff83007f087b18
> (XEN)    ffff83007f080000 ffff82c4c0311cc8 0000000000000c40 ffff83007f080000
> (XEN)    ffff82c4c0311cc8 00000000000003c8 0000000000000740 0000000000000000
> (XEN)    0000000000000001 0000000000028dd4 ffff8300477dfb58 0000000000000108
> (XEN)    ffff8300477dfb58 ffff83007f080000 ffff82c4c0311cc8 ffff82c4c0311cd8
> (XEN)    0000000003a0f388 ffff82c4c011759c ffff8300477dfae8 ffff830047374980
> (XEN)    ffff8300477df000 000000000000652f 0000003a0f388718 000000000002b650
> (XEN)    ffff83007f087c18 ffff82c4c01ef4d7 ffff83007f087be0 ffff83007f080000
> (XEN)    ffff83007f087c18 0000000100000100 ffff83007f087c18 ffff830047374000
> (XEN)    0000000000006a00 000000370002b650 000000000002b650 ffff830047374000
> (XEN)    ffff830047374980 0000000000000000 ffff83007f087c18 ffff82c4c0125e3d
> (XEN)    ffff83007f087c78 ffff82c4c021017d 0c00000000000000 ffff8300477df000
> (XEN)    ffff82e0008e8640 ffff830047374000 0000000013650000 0000000013650000
> (XEN)    0000000000000000 0000000000000000 ffff83007f087c78 ffff82c4c01ae218
> (XEN)    ffff83007f087cc8 ffff82c4c01b4abc 0000000028dd4027 ffff82c4c0207f86
> (XEN)    0000003a0f388718 0000000000000000 0000000000000000 0000000000000000
> (XEN) Xen call trace:
> (XEN)    [<ffff82c4c01e637f>] guest_walk_tables_4_levels+0x135/0x6a6
> (XEN)    [<ffff82c4c020d8cc>] sh_page_fault__guest_4+0x505/0x2015
> (XEN)    [<ffff82c4c01d2135>] vmx_vmexit_handler+0x86c/0x1748
> (XEN)    
> (XEN) Pagetable walk from ffff82c406a00000:
> (XEN)  L4[0x105] = 000000007f26e063 ffffffffffffffff
> (XEN)  L3[0x110] = 000000005ce30063 ffffffffffffffff
> (XEN)  L2[0x035] = 0000000014aab063 ffffffffffffffff 
> (XEN)  L1[0x000] = 0000000000000000 ffffffffffffffff

Tim,

I'm afraid this is something for you. From what I can tell, despite
sh_walk_guest_tables() being called from sh_page_fault() without
the paging lock held, there doesn't appear to be a way for this to
race sh_update_cr3(). And with the way the latter updates
guest_vtable, the only way for a page fault to happen upon use
of that cached mapping would be between the call to
sh_unmap_domain_page_global() and the immediately following
one to sh_map_domain_page_global() (i.e. while the pointer is
stale).

What I do note is

        /* PAGING_LEVELS==4 implies 64-bit, which means that
         * map_domain_page_global can't fail */
        BUG_ON(v->arch.paging.shadow.guest_vtable == NULL);

which is no longer true. Sadly the 2-level paging case also
doesn't really handle the similar error there, so it's not really
clear to me how this would best be fixed. And that's not the
reason for the problem here anyway.

> (XEN) 
> (XEN) ****************************************
> (XEN) Panic on CPU 4:
> (XEN) FATAL PAGE FAULT
> (XEN) [error_code=0000]
> (XEN) Faulting linear address: ffff82c406a00000
> (XEN) ****************************************
> (XEN) 
> (XEN) Reboot in five seconds...
> (XEN) Resetting with ACPI MEMORY or I/O RESET_REG


_______________________________________________
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®.