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).
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
(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
|