From 67fa2a3c5bce77d1f0528f498d5c49da270dddd8 Mon Sep 17 00:00:00 2001 From: Stefano Stabellini Date: Wed, 11 Feb 2009 15:47:52 +0000 Subject: [PATCH] Import CS 18788 from xen-unstable. Fix domain restore bug with Intel VLAPIC acceleration. --- xen/arch/x86/mm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index b076282..986af90 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -1533,6 +1533,7 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e, struct domain *d = curr->domain; unsigned long mfn; struct page_info *l1pg = mfn_to_page(gl1mfn); + p2m_type_t p2mt; int rc = 1; page_lock(l1pg); @@ -1550,8 +1551,8 @@ static int mod_l1_entry(l1_pgentry_t *pl1e, l1_pgentry_t nl1e, if ( l1e_get_flags(nl1e) & _PAGE_PRESENT ) { /* Translate foreign guest addresses. */ - mfn = gmfn_to_mfn(FOREIGNDOM, l1e_get_pfn(nl1e)); - if ( unlikely(mfn == INVALID_MFN) ) + mfn = mfn_x(gfn_to_mfn(FOREIGNDOM, l1e_get_pfn(nl1e), &p2mt)); + if ( !p2m_is_ram(p2mt) || unlikely(mfn == INVALID_MFN) ) return page_unlock(l1pg), 0; ASSERT((mfn & ~(PADDR_MASK >> PAGE_SHIFT)) == 0); nl1e = l1e_from_pfn(mfn, l1e_get_flags(nl1e)); -- 2.39.5