[HVM] Save/Restore: don't clobber page types in shadow code
authorTim Deegan <Tim.Deegan@xensource.com>
Thu, 18 Jan 2007 16:48:12 +0000 (16:48 +0000)
committerTim Deegan <Tim.Deegan@xensource.com>
Thu, 18 Jan 2007 16:48:12 +0000 (16:48 +0000)
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
xen/arch/x86/mm/shadow/common.c
xen/arch/x86/mm/shadow/multi.c

index 609fa6e122cd602f1da49b1c4b510e10d8b6d173..b821222634edaa376130b4f8263d75c2f02e1ab4 100644 (file)
@@ -2184,10 +2184,11 @@ int sh_remove_all_mappings(struct vcpu *v, mfn_t gmfn)
     expected_count = (page->count_info & PGC_allocated) ? 1 : 0;
     if ( (page->count_info & PGC_count_mask) != expected_count )
     {
-        /* Don't complain if we're in HVM and there's one extra mapping: 
-         * The qemu helper process has an untyped mapping of this dom's RAM */
+        /* Don't complain if we're in HVM and there are some extra mappings: 
+         * The qemu helper process has an untyped mapping of this dom's RAM 
+         * and the HVM restore program takes another. */
         if ( !(shadow_mode_external(v->domain)
-               && (page->count_info & PGC_count_mask) <= 3 /* vmx restore add one extra mapping*/
+               && (page->count_info & PGC_count_mask) <= 3
                && (page->u.inuse.type_info & PGT_count_mask) == 0) )
         {
             SHADOW_ERROR("can't find all mappings of mfn %lx: "
index 6a594682a548436c883df90c009a0dc2ee88b0fb..8b8b8585a7127495086b62998ef3526f7e6ffe62 100644 (file)
@@ -1627,14 +1627,6 @@ sh_make_shadow(struct vcpu *v, mfn_t gmfn, u32 shadow_type)
         default: /* Do nothing */ break;
         }
     }
-    
-    {
-        struct page_info *page = mfn_to_page(gmfn);
-        /* XXX: add it to emulate a touched page */
-        if ((page->u.inuse.type_info & PGT_type_mask) == PGT_none){
-            page->u.inuse.type_info |= (PGT_writable_page | PGT_validated);
-        }
-    }
 
     shadow_promote(v, gmfn, shadow_type);
     set_shadow_status(v, gmfn, shadow_type, smfn);