aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/xen/mmu.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index a2d78ad35a55..6e27979506c1 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -1701,9 +1701,6 @@ static __init void xen_map_identity_early(pmd_t *pmd, unsigned long max_pfn)
1701 for (pteidx = 0; pteidx < PTRS_PER_PTE; pteidx++, pfn++) { 1701 for (pteidx = 0; pteidx < PTRS_PER_PTE; pteidx++, pfn++) {
1702 pte_t pte; 1702 pte_t pte;
1703 1703
1704 if (pfn > max_pfn_mapped)
1705 max_pfn_mapped = pfn;
1706
1707 if (!pte_none(pte_page[pteidx])) 1704 if (!pte_none(pte_page[pteidx]))
1708 continue; 1705 continue;
1709 1706
@@ -1761,6 +1758,12 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
1761 pud_t *l3; 1758 pud_t *l3;
1762 pmd_t *l2; 1759 pmd_t *l2;
1763 1760
1761 /* max_pfn_mapped is the last pfn mapped in the initial memory
1762 * mappings. Considering that on Xen after the kernel mappings we
1763 * have the mappings of some pages that don't exist in pfn space, we
1764 * set max_pfn_mapped to the last real pfn mapped. */
1765 max_pfn_mapped = PFN_DOWN(__pa(xen_start_info->mfn_list));
1766
1764 /* Zap identity mapping */ 1767 /* Zap identity mapping */
1765 init_level4_pgt[0] = __pgd(0); 1768 init_level4_pgt[0] = __pgd(0);
1766 1769
@@ -1865,9 +1868,7 @@ __init pgd_t *xen_setup_kernel_pagetable(pgd_t *pgd,
1865 initial_kernel_pmd = 1868 initial_kernel_pmd =
1866 extend_brk(sizeof(pmd_t) * PTRS_PER_PMD, PAGE_SIZE); 1869 extend_brk(sizeof(pmd_t) * PTRS_PER_PMD, PAGE_SIZE);
1867 1870
1868 max_pfn_mapped = PFN_DOWN(__pa(xen_start_info->pt_base) + 1871 max_pfn_mapped = PFN_DOWN(__pa(xen_start_info->mfn_list));
1869 xen_start_info->nr_pt_frames * PAGE_SIZE +
1870 512*1024);
1871 1872
1872 kernel_pmd = m2v(pgd[KERNEL_PGD_BOUNDARY].pgd); 1873 kernel_pmd = m2v(pgd[KERNEL_PGD_BOUNDARY].pgd);
1873 memcpy(initial_kernel_pmd, kernel_pmd, sizeof(pmd_t) * PTRS_PER_PMD); 1874 memcpy(initial_kernel_pmd, kernel_pmd, sizeof(pmd_t) * PTRS_PER_PMD);