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

Re: [Xen-devel] xen.git branch reorg / success with 2.6.30-rc3 pv_ops dom0



On Fri, 2009-06-05 at 11:41 -0400, Pasi KÃrkkÃinen wrote:
> On Fri, Jun 05, 2009 at 02:52:59PM +0100, Ian Campbell wrote:
> > On Fri, 2009-06-05 at 09:38 -0400, Pasi KÃrkkÃinen wrote:
> > > (gdb) list *0xc0405d63
> > > 0xc0405d63 is in xen_set_pte (arch/x86/xen/mmu.c:683).
> > > 678             ADD_STATS(pte_update_batched, paravirt_get_lazy_mode() == 
> > > PARAVIRT_LAZY_MMU);
> > > 679
> > > 680     #ifdef CONFIG_X86_PAE
> > > 681             ptep->pte_high = pte.pte_high;
> > > 682             smp_wmb();
> > > 683             ptep->pte_low = pte.pte_low;
> > > 684     #else
> > > 685             *ptep = pte;
> > > 686     #endif
> > > 687     }
> > 
> > Good that makes most sense. 
> > 
> 
> I rebuilt my Fedora 11 Xen 3.3.1-11 src.rpm with "debug=y verbose=y 
> crash_debug=y".
> 
> And I rebuilt my pv_ops dom0 kernel (CONFIG_HIGHPTE=y) with your
> debugging patch applied. (Some hunks to swiotlb.h failed, because the code
> was already there.. with different newlines or so).

I think I included those changes to swiotlb.h by mistake anyway.

> Serial console log:
> http://pasik.reaktio.net/xen/pv_ops-dom0-debug/pv_ops-dom0-log-03-with-highpte-no-swap-with-debug.txt
> 
> (XEN) mm.c:2006:d0 Bad type (saw 28000001 != exp e0000000) for mfn 683f4 (pfn 
> 29a0b)
> (XEN) mm.c:707:d0 Error getting mfn 683f4 (pfn 29a0b) from L1 entry 
> 00000000683f4063 for dom0
> (XEN) mm.c:3640:d0 ptwr_emulate: could not get_page_from_l1e()
> BUG: unable to handle kernel paging request at c0207c80
> IP: [<c0405d63>] xen_set_pte+0x89/0x93
> *pdpt = 000000003c8ef001 
> Fixmap KM_PTE0 @ 0xf57f0000
> *pdpt = 000000003c8ef001 
> Fixmap KM_PTE0 @ 0xf57ee000
> *pdpt = 000000003c8ef001 
> Oops: 0003 [#1] SMP 

Hmm, this isn't too useful because dump_pagetable() doesn't work for Xen
guests -- it goes direct at the pagetables instead of going via the
normal accessors so it misses the MFN<->PFN translations.

I had some patches to unify the 32 and 64 bit versions of dump page
table at one point, since the 64 bit version does the right thing. I'll
see if I can find or reproduce them.

Ian.

> 
> 
> (gdb) list *0xc0405d63
> 0xc0405d63 is in xen_set_pte (arch/x86/xen/mmu.c:683).
> 678             ADD_STATS(pte_update_batched, paravirt_get_lazy_mode() == 
> PARAVIRT_LAZY_MMU);
> 679
> 680     #ifdef CONFIG_X86_PAE
> 681             ptep->pte_high = pte.pte_high;
> 682             smp_wmb();
> 683             ptep->pte_low = pte.pte_low;
> 684     #else
> 685             *ptep = pte;
> 686     #endif
> 687     }
> 
> 
> (gdb) disas 0xc0405d63
> Dump of assembler code for function xen_set_pte:
> 0xc0405cda <xen_set_pte+0>:     push   %ebp
> 0xc0405cdb <xen_set_pte+1>:     mov    %esp,%ebp
> 0xc0405cdd <xen_set_pte+3>:     push   %edi
> 0xc0405cde <xen_set_pte+4>:     push   %esi
> 0xc0405cdf <xen_set_pte+5>:     mov    %ecx,%esi
> 0xc0405ce1 <xen_set_pte+7>:     push   %ebx
> 0xc0405ce2 <xen_set_pte+8>:     mov    %eax,%ebx
> 0xc0405ce4 <xen_set_pte+10>:    mov    %edx,%eax
> 0xc0405ce6 <xen_set_pte+12>:    sub    $0x4,%esp
> 0xc0405ce9 <xen_set_pte+15>:    and    $0x400,%eax
> 0xc0405cee <xen_set_pte+20>:    je     0xc0405cff <check_zero>
> 0xc0405cf0 <xen_set_iomap_pte+0>:       mov    %ebx,%eax
> 0xc0405cf2 <xen_set_iomap_pte+2>:       push   $0x7ff1
> 0xc0405cf7 <xen_set_iomap_pte+7>:       call   0xc0405c35 <xen_set_domain_pte>
> 0xc0405cfc <xen_set_iomap_pte+12>:      pop    %ebx
> 0xc0405cfd <xen_set_iomap_pte+13>:      jmp    0xc0405d65 <xen_set_pte+139>
> 0xc0405cff <check_zero+0>:      cmpb   $0x0,0xc08f334c
> 0xc0405d06 <check_zero+7>:      je     0xc0405d1b <xen_set_pte+65>
> 0xc0405d08 <__constant_c_and_count_memset+0>:   mov    $0x33,%ecx
> 0xc0405d0d <__constant_c_and_count_memset+5>:   mov    $0xc08f3280,%edi
> 0xc0405d12 <__constant_c_and_count_memset+10>:  rep stos %eax,%es:(%edi)
> 0xc0405d14 <check_zero+21>:     movb   $0x0,0xc08f334c
> 0xc0405d1b <xen_set_pte+65>:    incl   0xc08f32a4
> 0xc0405d21 <check_zero+0>:      cmpb   $0x0,0xc08f334c
> 0xc0405d28 <check_zero+7>:      je     0xc0405d3f <xen_set_pte+101>
> 0xc0405d2a <__constant_c_and_count_memset+0>:   mov    $0x33,%ecx
> 0xc0405d2f <__constant_c_and_count_memset+5>:   mov    $0xc08f3280,%edi
> 0xc0405d34 <__constant_c_and_count_memset+10>:  xor    %eax,%eax
> 0xc0405d36 <__constant_c_and_count_memset+12>:  rep stos %eax,%es:(%edi)
> 0xc0405d38 <check_zero+23>:     movb   $0x0,0xc08f334c
> 0xc0405d3f <xen_set_pte+101>:   mov    0xc08f32ac,%edi
> 0xc0405d45 <xen_set_pte+107>:   mov    %edx,-0x10(%ebp)
> 0xc0405d48 <xen_set_pte+110>:   call   0xc0422f2a <paravirt_get_lazy_mode>
> 0xc0405d4d <xen_set_pte+115>:   dec    %eax
> 0xc0405d4e <xen_set_pte+116>:   sete   %al
> 0xc0405d51 <xen_set_pte+119>:   movzbl %al,%eax
> 0xc0405d54 <xen_set_pte+122>:   lea    (%eax,%edi,1),%edi
> 0xc0405d57 <xen_set_pte+125>:   mov    %edi,0xc08f32ac
> 0xc0405d5d <xen_set_pte+131>:   mov    %esi,0x4(%ebx)
> 0xc0405d60 <xen_set_pte+134>:   mov    -0x10(%ebp),%edx
> 0xc0405d63 <xen_set_pte+137>:   mov    %edx,(%ebx)
> 0xc0405d65 <xen_set_pte+139>:   lea    -0xc(%ebp),%esp
> 0xc0405d68 <xen_set_pte+142>:   pop    %ebx
> 0xc0405d69 <xen_set_pte+143>:   pop    %esi
> 0xc0405d6a <xen_set_pte+144>:   pop    %edi
> 0xc0405d6b <xen_set_pte+145>:   pop    %ebp
> 0xc0405d6c <xen_set_pte+146>:   ret    
> End of assembler dump.
> (gdb) 
> 
> -- Pasi
> 


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

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