(Jeremy/Ian - here's some more info on the bug reported here:
http://lists.xensource.com/archives/html/xen-devel/2009-01/msg00176.html
)
Hi Jon/Phill,
Thanks for all the info.
Here's the important bits:
1) Host kernel is 2.6.21.7-5.fc8xen, that means the hypervisor is
xen-3.1.4
2) The guest kernel is 2.6.27.5-117.fc10.x86_64
3) Phill points out the faulting instruction is UD2. That just means
the guest kernel is hitting a BUG() assertion. See /asm-x86/bug.h:
#define BUG() \
do { \
asm volatile("ud2"); \
for (;;) ; \
} while (0)
4) The backtrace shows the fault happens in set_page_prot()
5) Jon's dmesg contains:
(XEN) mm.c:1362:d46 Bad L1 flags 800000
That means the guest is faulting here:
static void set_page_prot(void *addr, pgprot_t prot)
{
....
if (HYPERVISOR_update_va_mapping((unsigned long)addr, pte, 0))
BUG();
}
because the PTE update is failing in the HV here:
static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e,
unsigned long gl1mfn)
{
...
if ( unlikely(l1e_get_flags(nl1e) & L1_DISALLOW_MASK) )
{
MEM_LOG("Bad L1 flags %x",
l1e_get_flags(nl1e) & L1_DISALLOW_MASK);
return 0;
}
...
}
the PTE flags are 800000 which corresponds to:
#define _PAGE_NX_BIT (1U<<23)
Jon/Phill - can one of you two file a bug (
bugzilla.redhat.com) with all
this info?
Thanks,
Mark.
Previous posts, for reference:
http://www.redhat.com/archives/fedora-xen/2009-January/thread.html#00022
http://www.redhat.com/archives/fedora-virt/2009-January/thread.html#00013