When moving away RAM pages, there having been a mapping of those is not
a proper indication that instead MMIO should be mapped there. At the
point in time this effectively covers the low megabyte only. Mapping of
that is, however, the job of init_mem_mapping(). Comparing the two one
can also spot that we've been wrongly (or at least inconsistently) using
PAGE_KERNEL_IO here.

Simply zap any such mappings instead.

Signed-off-by: Jan Beulich <[email protected]>

--- a/arch/x86/xen/setup.c
+++ b/arch/x86/xen/setup.c
@@ -425,13 +425,13 @@ static unsigned long __init xen_set_iden
        }
 
        /*
-        * If the PFNs are currently mapped, the VA mapping also needs
-        * to be updated to be 1:1.
+        * If the PFNs are currently mapped, their VA mappings need to be
+        * zapped.
         */
        for (pfn = start_pfn; pfn <= max_pfn_mapped && pfn < end_pfn; pfn++)
                (void)HYPERVISOR_update_va_mapping(
                        (unsigned long)__va(pfn << PAGE_SHIFT),
-                       mfn_pte(pfn, PAGE_KERNEL_IO), 0);
+                       native_make_pte(0), 0);
 
        return remap_pfn;
 }


Reply via email to