OSDN Git Service

x86: fix early_ioremap pagetable ops
[uclinux-h8/linux.git] / arch / x86 / mm / ioremap.c
index 1106b7f..a4897a8 100644 (file)
@@ -286,7 +286,7 @@ void __init early_ioremap_init(void)
 
        pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
        memset(bm_pte, 0, sizeof(bm_pte));
-       set_pmd(pmd, __pmd(__pa(bm_pte) | _PAGE_TABLE));
+       pmd_populate_kernel(&init_mm, pmd, bm_pte);
 
        /*
         * The boot-ioremap range spans multiple pmds, for which
@@ -316,7 +316,7 @@ void __init early_ioremap_clear(void)
 
        pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
        pmd_clear(pmd);
-       paravirt_release_pt(__pa(pmd) >> PAGE_SHIFT);
+       paravirt_release_pt(__pa(bm_pte) >> PAGE_SHIFT);
        __flush_tlb_all();
 }