[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH 78/84] Revert "x86/smpboot: use xenheap pages for rpts in smpboot."
From: Hongyan Xia <hongyax@xxxxxxxxxx> We have properly handled (un)mapping of pages in restore_all_guests. This hack is no longer required. Signed-off-by: Hongyan Xia <hongyax@xxxxxxxxxx> --- xen/arch/x86/smpboot.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/xen/arch/x86/smpboot.c b/xen/arch/x86/smpboot.c index 7034c699d6..53f9173f37 100644 --- a/xen/arch/x86/smpboot.c +++ b/xen/arch/x86/smpboot.c @@ -832,20 +832,14 @@ static int setup_cpu_root_pgt(unsigned int cpu) goto out; } - /* - * Unfortunately, some code (especially in assembly) assumes the rpt is in - * the DIRECTMAP region and is always mapped. Making all of them adapt to - * the new page table APIs is non-trivial. For now, make it always mapped - * on the xenheap. - */ - rpt = alloc_xenheap_page(); - if ( !rpt ) + rpt_mfn = alloc_xen_pagetable(); + if ( mfn_eq(rpt_mfn, INVALID_MFN) ) { rc = -ENOMEM; goto out; } - rpt_mfn = _mfn(virt_to_mfn(rpt)); + rpt = map_xen_pagetable(rpt_mfn); clear_page(rpt); per_cpu(root_pgt_mfn, cpu) = rpt_mfn; @@ -890,6 +884,7 @@ static int setup_cpu_root_pgt(unsigned int cpu) rc = clone_mapping((void *)per_cpu(stubs.addr, cpu), rpt); out: + UNMAP_XEN_PAGETABLE(rpt); return rc; } @@ -905,7 +900,7 @@ static void cleanup_cpu_root_pgt(unsigned int cpu) per_cpu(root_pgt_mfn, cpu) = INVALID_MFN; - rpt = mfn_to_virt(mfn_x(rpt_mfn)); + rpt = map_xen_pagetable(rpt_mfn); for ( r = root_table_offset(DIRECTMAP_VIRT_START); r < root_table_offset(HYPERVISOR_VIRT_END); ++r ) @@ -950,8 +945,8 @@ static void cleanup_cpu_root_pgt(unsigned int cpu) free_xen_pagetable(l3t_mfn); } - /* Unlike other levels, the root level is a xenheap page. */ - free_xenheap_page(rpt); + UNMAP_XEN_PAGETABLE(rpt); + free_xen_pagetable(rpt_mfn); /* Also zap the stub mapping for this CPU. */ if ( stub_linear ) -- 2.17.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |