diff -r a1d0a575b4ba xen/arch/x86/hvm/hvm.c --- a/xen/arch/x86/hvm/hvm.c Wed Jan 06 10:13:55 2010 +0000 +++ b/xen/arch/x86/hvm/hvm.c Wed Jan 06 12:17:47 2010 +0000 @@ -937,6 +937,16 @@ mfn = gfn_to_mfn_type_current(gfn, &p2mt, p2m_guest); /* + * If this is a valid entry now, it was probably populated by the PoD code, + * or perhaps the nested fault was spurious. Continue. + */ + if ( p2mt == p2m_ram_rw ) + { + ASSERT( mfn_valid(mfn) ); /* implied by p2mt == p2m_ram_rw */ + return 1; + } + + /* * If this GFN is emulated MMIO or marked as read-only, pass the fault * to the mmio handler. */