[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC PATCH 82/84] x86: deduplicate code a bit and fix an unmapping bug.
From: Hongyan Xia <hongyax@xxxxxxxxxx> Signed-off-by: Hongyan Xia <hongyax@xxxxxxxxxx> --- xen/arch/x86/domain_page.c | 28 +++++++++++----------------- xen/arch/x86/pv/dom0_build.c | 2 +- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/xen/arch/x86/domain_page.c b/xen/arch/x86/domain_page.c index f606677ae6..782dd0650c 100644 --- a/xen/arch/x86/domain_page.c +++ b/xen/arch/x86/domain_page.c @@ -77,29 +77,16 @@ void *map_domain_page(mfn_t mfn) struct mapcache_domain *dcache; struct mapcache_vcpu *vcache; struct vcpu_maphash_entry *hashent; + void *ret; v = mapcache_current_vcpu(); if ( !v ) - { - void *ret; - pmap_lock(); - ret = pmap_map(mfn); - pmap_unlock(); - flush_tlb_one_local(ret); - return ret; - } + goto pmap; dcache = &v->domain->arch.mapcache; vcache = &v->arch.mapcache; if ( !dcache->inuse ) - { - void *ret; - pmap_lock(); - ret = pmap_map(mfn); - pmap_unlock(); - flush_tlb_one_local(ret); - return ret; - } + goto pmap; perfc_incr(map_domain_page_count); @@ -179,9 +166,16 @@ void *map_domain_page(mfn_t mfn) l1e_write(&MAPCACHE_L1ENT(idx), l1e_from_mfn(mfn, __PAGE_HYPERVISOR_RW)); - out: +out: local_irq_restore(flags); return (void *)MAPCACHE_VIRT_START + pfn_to_paddr(idx); + +pmap: + pmap_lock(); + ret = pmap_map(mfn); + pmap_unlock(); + flush_tlb_one_local(ret); + return ret; } void unmap_domain_page(const void *ptr) diff --git a/xen/arch/x86/pv/dom0_build.c b/xen/arch/x86/pv/dom0_build.c index 1555a61b84..202edcaa17 100644 --- a/xen/arch/x86/pv/dom0_build.c +++ b/xen/arch/x86/pv/dom0_build.c @@ -236,7 +236,7 @@ static __init void setup_pv_physmap(struct domain *d, unsigned long pgtbl_pfn, if ( pl3e ) unmap_domain_page(pl3e); - //unmap_domain_page(l4start); + unmap_domain_page(l4start); } static struct page_info * __init alloc_chunk(struct domain *d, -- 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 |