[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] x86/mm: Swap mfn_valid() to use mfn_t
Replace one opencoded mfn_eq() and some coding style issues on altered lines. Swap __mfn_valid() to being bool, although it can't be updated to take mfn_t because of include dependencies. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Stefano Stabellini <sstabellini@xxxxxxxxxx> CC: Julien Grall <julien.grall@xxxxxxx> CC: Tim Deegan <tim@xxxxxxx> CC: George Dunlap <george.dunlap@xxxxxxxxxxxxx> --- xen/arch/arm/mem_access.c | 2 +- xen/arch/arm/mm.c | 2 +- xen/arch/arm/p2m.c | 6 +++--- xen/arch/arm/setup.c | 3 ++- xen/arch/x86/cpu/mcheck/mce.c | 2 +- xen/arch/x86/cpu/mcheck/vmce.c | 2 +- xen/arch/x86/cpu/vpmu.c | 2 +- xen/arch/x86/debug.c | 2 +- xen/arch/x86/domctl.c | 2 +- xen/arch/x86/hvm/mtrr.c | 2 +- xen/arch/x86/mm.c | 20 ++++++++++---------- xen/arch/x86/mm/hap/guest_walk.c | 2 +- xen/arch/x86/mm/hap/hap.c | 2 -- xen/arch/x86/mm/hap/nested_hap.c | 2 -- xen/arch/x86/mm/mem_access.c | 4 ++-- xen/arch/x86/mm/mem_sharing.c | 4 +--- xen/arch/x86/mm/p2m-ept.c | 4 ++-- xen/arch/x86/mm/p2m-pod.c | 2 -- xen/arch/x86/mm/p2m-pt.c | 2 -- xen/arch/x86/mm/p2m.c | 2 -- xen/arch/x86/mm/paging.c | 2 -- xen/arch/x86/mm/shadow/private.h | 2 -- xen/arch/x86/tboot.c | 4 ++-- xen/arch/x86/x86_64/mm.c | 16 ++++++++-------- xen/arch/x86/x86_64/traps.c | 14 +++++++------- xen/common/grant_table.c | 10 +++++----- xen/common/memory.c | 8 ++++---- xen/common/page_alloc.c | 12 ++++++------ xen/common/pdx.c | 2 +- xen/drivers/passthrough/amd/iommu_guest.c | 10 +++++----- xen/drivers/passthrough/amd/pci_amd_iommu.c | 2 +- xen/drivers/passthrough/vtd/dmar.c | 2 +- xen/drivers/passthrough/vtd/x86/vtd.c | 2 +- xen/include/asm-arm/mm.h | 4 ++-- xen/include/asm-arm/p2m.h | 2 +- xen/include/asm-x86/p2m.h | 2 +- xen/include/asm-x86/page.h | 2 +- xen/include/xen/pdx.h | 2 +- xen/include/xen/tmem_xen.h | 2 +- 39 files changed, 77 insertions(+), 92 deletions(-) diff --git a/xen/arch/arm/mem_access.c b/xen/arch/arm/mem_access.c index 03b20c4..04b1506 100644 --- a/xen/arch/arm/mem_access.c +++ b/xen/arch/arm/mem_access.c @@ -172,7 +172,7 @@ p2m_mem_access_check_and_get_page(vaddr_t gva, unsigned long flag, if ( mfn_eq(mfn, INVALID_MFN) ) goto err; - if ( !mfn_valid(mfn_x(mfn)) ) + if ( !mfn_valid(mfn) ) goto err; /* diff --git a/xen/arch/arm/mm.c b/xen/arch/arm/mm.c index 2d96423..f0a2edd 100644 --- a/xen/arch/arm/mm.c +++ b/xen/arch/arm/mm.c @@ -1350,7 +1350,7 @@ int replace_grant_host_mapping(unsigned long addr, unsigned long mfn, bool is_iomem_page(mfn_t mfn) { - return !mfn_valid(mfn_x(mfn)); + return !mfn_valid(mfn); } void clear_and_clean_page(struct page_info *page) diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index 5e8f6cd..e36d075 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -648,7 +648,7 @@ static void p2m_put_l3_page(const lpae_t pte) { unsigned long mfn = pte.p2m.base; - ASSERT(mfn_valid(mfn)); + ASSERT(mfn_valid(_mfn(mfn))); put_page(mfn_to_page(mfn)); } } @@ -695,7 +695,7 @@ static void p2m_free_entry(struct p2m_domain *p2m, p2m_flush_tlb_sync(p2m); mfn = _mfn(entry.p2m.base); - ASSERT(mfn_valid(mfn_x(mfn))); + ASSERT(mfn_valid(mfn)); free_domheap_page(mfn_to_page(mfn_x(mfn))); } @@ -1412,7 +1412,7 @@ struct page_info *get_page_from_gva(struct vcpu *v, vaddr_t va, if ( rc ) goto err; - if ( !mfn_valid(maddr >> PAGE_SHIFT) ) + if ( !mfn_valid(_mfn(maddr >> PAGE_SHIFT)) ) goto err; page = mfn_to_page(maddr >> PAGE_SHIFT); diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 2bf4363..b25ad80 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -268,7 +268,8 @@ void __init discard_initial_modules(void) if ( mi->module[i].kind == BOOTMOD_XEN ) continue; - if ( !mfn_valid(paddr_to_pfn(s)) || !mfn_valid(paddr_to_pfn(e))) + if ( !mfn_valid(_mfn(paddr_to_pfn(s))) || + !mfn_valid(_mfn(paddr_to_pfn(e)))) continue; dt_unreserved_regions(s, e, init_domheap_pages, 0); diff --git a/xen/arch/x86/cpu/mcheck/mce.c b/xen/arch/x86/cpu/mcheck/mce.c index 894db5c..8061c2b 100644 --- a/xen/arch/x86/cpu/mcheck/mce.c +++ b/xen/arch/x86/cpu/mcheck/mce.c @@ -226,7 +226,7 @@ static void mca_init_bank(enum mca_source who, (mib->mc_status & MCi_STATUS_ADDRV) && (mc_check_addr(mib->mc_status, mib->mc_misc, MC_ADDR_PHYSICAL)) && (who == MCA_POLLER || who == MCA_CMCI_HANDLER) && - (mfn_valid(paddr_to_pfn(mib->mc_addr)))) + (mfn_valid(_mfn(paddr_to_pfn(mib->mc_addr))))) { struct domain *d; diff --git a/xen/arch/x86/cpu/mcheck/vmce.c b/xen/arch/x86/cpu/mcheck/vmce.c index 5f002e3..e69eeaa 100644 --- a/xen/arch/x86/cpu/mcheck/vmce.c +++ b/xen/arch/x86/cpu/mcheck/vmce.c @@ -436,7 +436,7 @@ int unmmap_broken_page(struct domain *d, mfn_t mfn, unsigned long gfn) if ( is_hardware_domain(d) ) return 0; - if (!mfn_valid(mfn_x(mfn))) + if ( !mfn_valid(mfn) ) return -EINVAL; if ( !has_hvm_container_domain(d) || !paging_mode_hap(d) ) diff --git a/xen/arch/x86/cpu/vpmu.c b/xen/arch/x86/cpu/vpmu.c index b271c2c..c8615e8 100644 --- a/xen/arch/x86/cpu/vpmu.c +++ b/xen/arch/x86/cpu/vpmu.c @@ -634,7 +634,7 @@ static void pvpmu_finish(struct domain *d, xen_pmu_params_t *params) if ( xenpmu_data ) { mfn = domain_page_map_to_mfn(xenpmu_data); - ASSERT(mfn_valid(mfn)); + ASSERT(mfn_valid(_mfn(mfn))); unmap_domain_page_global(xenpmu_data); put_page_and_type(mfn_to_page(mfn)); } diff --git a/xen/arch/x86/debug.c b/xen/arch/x86/debug.c index 13d4ad7..499574e 100644 --- a/xen/arch/x86/debug.c +++ b/xen/arch/x86/debug.c @@ -150,7 +150,7 @@ dbg_pv_va2mfn(dbgva_t vaddr, struct domain *dp, uint64_t pgd3val) DBGP2("l1t:%p l1to:%lx l1e:%lx mfn:%#"PRI_mfn"\n", l1t, l1_table_offset(vaddr), l1e, mfn_x(mfn)); - return mfn_valid(mfn_x(mfn)) ? mfn : INVALID_MFN; + return mfn_valid(mfn) ? mfn : INVALID_MFN; } /* Returns: number of bytes remaining to be copied */ diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 3b5c3c9..364283e 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -1250,7 +1250,7 @@ long arch_do_domctl( unsigned long pfn = domctl->u.set_broken_page_p2m.pfn; mfn_t mfn = get_gfn_query(d, pfn, &pt); - if ( unlikely(!mfn_valid(mfn_x(mfn))) || unlikely(!p2m_is_ram(pt)) ) + if ( unlikely(!mfn_valid(mfn)) || unlikely(!p2m_is_ram(pt)) ) ret = -EINVAL; else ret = p2m_change_type_one(d, pfn, pt, p2m_ram_broken); diff --git a/xen/arch/x86/hvm/mtrr.c b/xen/arch/x86/hvm/mtrr.c index 86c71be..c5c27cb 100644 --- a/xen/arch/x86/hvm/mtrr.c +++ b/xen/arch/x86/hvm/mtrr.c @@ -792,7 +792,7 @@ int epte_get_entry_emt(struct domain *d, unsigned long gfn, mfn_t mfn, return MTRR_TYPE_WRBACK; } - if ( !mfn_valid(mfn_x(mfn)) ) + if ( !mfn_valid(mfn) ) { *ipat = 1; return MTRR_TYPE_UNCACHABLE; diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 75bdbc3..cfa88b0 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -345,7 +345,7 @@ void __init arch_init_memory(void) /* Mark as I/O up to next RAM region. */ for ( ; pfn < rstart_pfn; pfn++ ) { - if ( !mfn_valid(pfn) ) + if ( !mfn_valid(_mfn(pfn)) ) continue; share_xen_page_with_guest( mfn_to_page(pfn), dom_io, XENSHARE_writable); @@ -689,7 +689,7 @@ static int get_page_from_pagenr(unsigned long page_nr, struct domain *d) { struct page_info *page = mfn_to_page(page_nr); - if ( unlikely(!mfn_valid(page_nr)) || unlikely(!get_page(page, d)) ) + if ( unlikely(!mfn_valid(_mfn(page_nr))) || unlikely(!get_page(page, d)) ) { MEM_LOG("Could not get page ref for pfn %lx", page_nr); return 0; @@ -792,7 +792,7 @@ bool is_iomem_page(mfn_t mfn) { struct page_info *page; - if ( !mfn_valid(mfn_x(mfn)) ) + if ( !mfn_valid(mfn) ) return true; /* Caller must know that it is an iomem page, or a reference is held. */ @@ -880,13 +880,13 @@ get_page_from_l1e( return -EINVAL; } - if ( !mfn_valid(mfn) || + if ( !mfn_valid(_mfn(mfn)) || (real_pg_owner = page_get_owner_and_reference(page)) == dom_io ) { int flip = 0; /* Only needed the reference to confirm dom_io ownership. */ - if ( mfn_valid(mfn) ) + if ( mfn_valid(_mfn(mfn)) ) put_page(page); /* DOMID_IO reverts to caller for privilege checks. */ @@ -2764,7 +2764,7 @@ int get_superpage(unsigned long mfn, struct domain *d) ASSERT(opt_allow_superpage); - if ( !mfn_valid(mfn | (L1_PAGETABLE_ENTRIES - 1)) ) + if ( !mfn_valid(_mfn(mfn | (L1_PAGETABLE_ENTRIES - 1))) ) return -EINVAL; spage = mfn_to_spage(mfn); @@ -3579,7 +3579,7 @@ long do_mmuext_op( MEM_LOG("Unaligned superpage reference mfn %lx", mfn); rc = -EINVAL; } - else if ( !mfn_valid(mfn | (L1_PAGETABLE_ENTRIES - 1)) ) + else if ( !mfn_valid(_mfn(mfn | (L1_PAGETABLE_ENTRIES - 1))) ) rc = -EINVAL; else if ( op.cmd == MMUEXT_MARK_SUPER ) rc = mark_superpage(mfn_to_spage(mfn), d); @@ -4865,7 +4865,7 @@ int xenmem_add_to_physmap_one( /* Remove previously mapped page if it was present. */ prev_mfn = mfn_x(get_gfn(d, gfn_x(gpfn), &p2mt)); - if ( mfn_valid(prev_mfn) ) + if ( mfn_valid(_mfn(prev_mfn)) ) { if ( is_xen_heap_mfn(prev_mfn) ) /* Xen heap frames are simply unhooked from this phys slot. */ @@ -5215,7 +5215,7 @@ static int ptwr_emulated_update( /* We are looking only for read-only mappings of p.t. pages. */ ASSERT((l1e_get_flags(pte) & (_PAGE_RW|_PAGE_PRESENT)) == _PAGE_PRESENT); - ASSERT(mfn_valid(mfn)); + ASSERT(mfn_valid(_mfn(mfn))); ASSERT((page->u.inuse.type_info & PGT_type_mask) == PGT_l1_page_table); ASSERT((page->u.inuse.type_info & PGT_count_mask) != 0); ASSERT(page_get_owner(page) == d); @@ -5539,7 +5539,7 @@ int mmio_ro_do_page_fault(struct vcpu *v, unsigned long addr, return 0; mfn = l1e_get_pfn(pte); - if ( mfn_valid(mfn) ) + if ( mfn_valid(_mfn(mfn)) ) { struct page_info *page = mfn_to_page(mfn); struct domain *owner = page_get_owner_and_reference(page); diff --git a/xen/arch/x86/mm/hap/guest_walk.c b/xen/arch/x86/mm/hap/guest_walk.c index b38b851..569a495 100644 --- a/xen/arch/x86/mm/hap/guest_walk.c +++ b/xen/arch/x86/mm/hap/guest_walk.c @@ -86,7 +86,7 @@ unsigned long hap_p2m_ga_to_gfn(GUEST_PAGING_LEVELS)( top_mfn = _mfn(page_to_mfn(top_page)); /* Map the top-level table and call the tree-walker */ - ASSERT(mfn_valid(mfn_x(top_mfn))); + ASSERT(mfn_valid(top_mfn)); top_map = map_domain_page(top_mfn); #if GUEST_PAGING_LEVELS == 3 top_map += (cr3 & ~(PAGE_MASK | 31)); diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c index b5870bf..9e58393 100644 --- a/xen/arch/x86/mm/hap/hap.c +++ b/xen/arch/x86/mm/hap/hap.c @@ -45,8 +45,6 @@ /* Override macros from asm/page.h to make them work with mfn_t */ #undef mfn_to_page #define mfn_to_page(_m) __mfn_to_page(mfn_x(_m)) -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) diff --git a/xen/arch/x86/mm/hap/nested_hap.c b/xen/arch/x86/mm/hap/nested_hap.c index d41bb09..162afed 100644 --- a/xen/arch/x86/mm/hap/nested_hap.c +++ b/xen/arch/x86/mm/hap/nested_hap.c @@ -71,8 +71,6 @@ /* NESTED VIRT P2M FUNCTIONS */ /********************************************/ /* Override macros from asm/page.h to make them work with mfn_t */ -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) diff --git a/xen/arch/x86/mm/mem_access.c b/xen/arch/x86/mm/mem_access.c index 34a994d..3ebeb4f 100644 --- a/xen/arch/x86/mm/mem_access.c +++ b/xen/arch/x86/mm/mem_access.c @@ -196,14 +196,14 @@ int p2m_set_altp2m_mem_access(struct domain *d, struct p2m_domain *hp2m, mfn = ap2m->get_entry(ap2m, gfn_l, &t, &old_a, 0, NULL, NULL); /* Check host p2m if no valid entry in alternate */ - if ( !mfn_valid(mfn_x(mfn)) ) + if ( !mfn_valid(mfn) ) { mfn = __get_gfn_type_access(hp2m, gfn_l, &t, &old_a, P2M_ALLOC | P2M_UNSHARE, &page_order, 0); rc = -ESRCH; - if ( !mfn_valid(mfn_x(mfn)) || t != p2m_ram_rw ) + if ( !mfn_valid(mfn) || t != p2m_ram_rw ) return rc; /* If this is a superpage, copy that first */ diff --git a/xen/arch/x86/mm/mem_sharing.c b/xen/arch/x86/mm/mem_sharing.c index db7f389..84fce18 100644 --- a/xen/arch/x86/mm/mem_sharing.c +++ b/xen/arch/x86/mm/mem_sharing.c @@ -154,8 +154,6 @@ static inline shr_handle_t get_next_handle(void) #undef mfn_to_page #define mfn_to_page(_m) __mfn_to_page(mfn_x(_m)) -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) @@ -827,7 +825,7 @@ static int nominate_page(struct domain *d, gfn_t gfn, continue; amfn = get_gfn_type_access(ap2m, gfn_x(gfn), &ap2mt, &ap2ma, 0, NULL); - if ( mfn_valid(amfn) && (mfn_x(amfn) != mfn_x(mfn) || ap2ma != p2ma) ) + if ( mfn_valid(amfn) && (!mfn_eq(amfn, mfn) || ap2ma != p2ma) ) { altp2m_list_unlock(d); goto out; diff --git a/xen/arch/x86/mm/p2m-ept.c b/xen/arch/x86/mm/p2m-ept.c index ea614b0..568944f 100644 --- a/xen/arch/x86/mm/p2m-ept.c +++ b/xen/arch/x86/mm/p2m-ept.c @@ -70,7 +70,7 @@ static int atomic_write_ept_entry(ept_entry_t *entryptr, ept_entry_t new, { struct domain *fdom; - if ( !mfn_valid(new.mfn) ) + if ( !mfn_valid(_mfn(new.mfn)) ) goto out; rc = -ESRCH; @@ -776,7 +776,7 @@ ept_set_entry(struct p2m_domain *p2m, unsigned long gfn, mfn_t mfn, ept_entry = table + (gfn_remainder >> (i * EPT_TABLE_ORDER)); } - if ( mfn_valid(mfn_x(mfn)) || p2m_allows_invalid_mfn(p2mt) ) + if ( mfn_valid(mfn) || p2m_allows_invalid_mfn(p2mt) ) { int emt = epte_get_entry_emt(p2m->domain, gfn, mfn, i * EPT_TABLE_ORDER, &ipat, direct_mmio); diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c index 367ee00..d5fea72 100644 --- a/xen/arch/x86/mm/p2m-pod.c +++ b/xen/arch/x86/mm/p2m-pod.c @@ -37,8 +37,6 @@ /* Override macros from asm/page.h to make them work with mfn_t */ #undef mfn_to_page #define mfn_to_page(_m) __mfn_to_page(mfn_x(_m)) -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) diff --git a/xen/arch/x86/mm/p2m-pt.c b/xen/arch/x86/mm/p2m-pt.c index a23d0bd..bbfa54e 100644 --- a/xen/arch/x86/mm/p2m-pt.c +++ b/xen/arch/x86/mm/p2m-pt.c @@ -42,8 +42,6 @@ /* Override macros from asm/page.h to make them work with mfn_t */ #undef mfn_to_page #define mfn_to_page(_m) __mfn_to_page(mfn_x(_m)) -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index 0c1820e..b53cee3 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -50,8 +50,6 @@ boolean_param("hap_2mb", opt_hap_2mb); /* Override macros from asm/page.h to make them work with mfn_t */ #undef mfn_to_page #define mfn_to_page(_m) __mfn_to_page(mfn_x(_m)) -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c index d964ed5..97e2780 100644 --- a/xen/arch/x86/mm/paging.c +++ b/xen/arch/x86/mm/paging.c @@ -50,8 +50,6 @@ DEFINE_PER_CPU(int, mm_lock_level); /* Override macros from asm/page.h to make them work with mfn_t */ #undef mfn_to_page #define mfn_to_page(_m) __mfn_to_page(mfn_x(_m)) -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) diff --git a/xen/arch/x86/mm/shadow/private.h b/xen/arch/x86/mm/shadow/private.h index f0b0ed4..472676c 100644 --- a/xen/arch/x86/mm/shadow/private.h +++ b/xen/arch/x86/mm/shadow/private.h @@ -469,8 +469,6 @@ void sh_reset_l3_up_pointers(struct vcpu *v); /* Override macros from asm/page.h to make them work with mfn_t */ #undef mfn_to_page #define mfn_to_page(_m) __mfn_to_page(mfn_x(_m)) -#undef mfn_valid -#define mfn_valid(_mfn) __mfn_valid(mfn_x(_mfn)) #undef page_to_mfn #define page_to_mfn(_pg) _mfn(__page_to_mfn(_pg)) diff --git a/xen/arch/x86/tboot.c b/xen/arch/x86/tboot.c index 4a573b0..eac182d 100644 --- a/xen/arch/x86/tboot.c +++ b/xen/arch/x86/tboot.c @@ -187,7 +187,7 @@ static void update_pagetable_mac(vmac_ctx_t *ctx) { struct page_info *page = mfn_to_page(mfn); - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(_mfn(mfn)) ) continue; if ( is_page_in_use(page) && !is_xen_heap_page(page) ) { @@ -279,7 +279,7 @@ static void tboot_gen_xenheap_integrity(const uint8_t key[TB_KEY_SIZE], { struct page_info *page = __mfn_to_page(mfn); - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(_mfn(mfn)) ) continue; if ( (mfn << PAGE_SHIFT) < __pa(&_end) ) continue; /* skip Xen */ diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c index 9ead02e..68c2a9e 100644 --- a/xen/arch/x86/x86_64/mm.c +++ b/xen/arch/x86/x86_64/mm.c @@ -65,7 +65,7 @@ void *do_page_walk(struct vcpu *v, unsigned long addr) l3e = l3t[l3_table_offset(addr)]; unmap_domain_page(l3t); mfn = l3e_get_pfn(l3e); - if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || !mfn_valid(mfn) ) + if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || !mfn_valid(_mfn(mfn)) ) return NULL; if ( (l3e_get_flags(l3e) & _PAGE_PSE) ) { @@ -77,7 +77,7 @@ void *do_page_walk(struct vcpu *v, unsigned long addr) l2e = l2t[l2_table_offset(addr)]; unmap_domain_page(l2t); mfn = l2e_get_pfn(l2e); - if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) || !mfn_valid(mfn) ) + if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) || !mfn_valid(_mfn(mfn)) ) return NULL; if ( (l2e_get_flags(l2e) & _PAGE_PSE) ) { @@ -89,7 +89,7 @@ void *do_page_walk(struct vcpu *v, unsigned long addr) l1e = l1t[l1_table_offset(addr)]; unmap_domain_page(l1t); mfn = l1e_get_pfn(l1e); - if ( !(l1e_get_flags(l1e) & _PAGE_PRESENT) || !mfn_valid(mfn) ) + if ( !(l1e_get_flags(l1e) & _PAGE_PRESENT) || !mfn_valid(_mfn(mfn)) ) return NULL; ret: @@ -366,7 +366,7 @@ static int setup_compat_m2p_table(struct mem_hotadd_info *info) continue; for ( n = 0; n < CNT; ++n) - if ( mfn_valid(i + n * PDX_GROUP_COUNT) ) + if ( mfn_valid(_mfn(i + n * PDX_GROUP_COUNT)) ) break; if ( n == CNT ) continue; @@ -436,7 +436,7 @@ static int setup_m2p_table(struct mem_hotadd_info *info) va = RO_MPT_VIRT_START + i * sizeof(*machine_to_phys_mapping); for ( n = 0; n < CNT; ++n) - if ( mfn_valid(i + n * PDX_GROUP_COUNT) ) + if ( mfn_valid(_mfn(i + n * PDX_GROUP_COUNT)) ) break; if ( n < CNT ) { @@ -554,7 +554,7 @@ void __init paging_init(void) for ( holes = k = 0; k < 1 << PAGETABLE_ORDER; ++k) { for ( n = 0; n < CNT; ++n) - if ( mfn_valid(MFN(i + k) + n * PDX_GROUP_COUNT) ) + if ( mfn_valid(_mfn(MFN(i + k) + n * PDX_GROUP_COUNT)) ) break; if ( n == CNT ) ++holes; @@ -587,7 +587,7 @@ void __init paging_init(void) } for ( n = 0; n < CNT; ++n) - if ( mfn_valid(MFN(i) + n * PDX_GROUP_COUNT) ) + if ( mfn_valid(_mfn(MFN(i) + n * PDX_GROUP_COUNT)) ) break; if ( n == CNT ) l1_pg = NULL; @@ -653,7 +653,7 @@ void __init paging_init(void) memflags = MEMF_node(phys_to_nid(i << (L2_PAGETABLE_SHIFT - 2 + PAGE_SHIFT))); for ( n = 0; n < CNT; ++n) - if ( mfn_valid(MFN(i) + n * PDX_GROUP_COUNT) ) + if ( mfn_valid(_mfn(MFN(i) + n * PDX_GROUP_COUNT)) ) break; if ( n == CNT ) continue; diff --git a/xen/arch/x86/x86_64/traps.c b/xen/arch/x86/x86_64/traps.c index 8d5f901..eab7758 100644 --- a/xen/arch/x86/x86_64/traps.c +++ b/xen/arch/x86/x86_64/traps.c @@ -179,47 +179,47 @@ void show_page_walk(unsigned long addr) l4e = l4t[l4_table_offset(addr)]; unmap_domain_page(l4t); mfn = l4e_get_pfn(l4e); - pfn = mfn_valid(mfn) && machine_to_phys_mapping_valid ? + pfn = mfn_valid(_mfn(mfn)) && machine_to_phys_mapping_valid ? get_gpfn_from_mfn(mfn) : INVALID_M2P_ENTRY; printk(" L4[0x%03lx] = %"PRIpte" %016lx\n", l4_table_offset(addr), l4e_get_intpte(l4e), pfn); if ( !(l4e_get_flags(l4e) & _PAGE_PRESENT) || - !mfn_valid(mfn) ) + !mfn_valid(_mfn(mfn)) ) return; l3t = map_domain_page(_mfn(mfn)); l3e = l3t[l3_table_offset(addr)]; unmap_domain_page(l3t); mfn = l3e_get_pfn(l3e); - pfn = mfn_valid(mfn) && machine_to_phys_mapping_valid ? + pfn = mfn_valid(_mfn(mfn)) && machine_to_phys_mapping_valid ? get_gpfn_from_mfn(mfn) : INVALID_M2P_ENTRY; printk(" L3[0x%03lx] = %"PRIpte" %016lx%s\n", l3_table_offset(addr), l3e_get_intpte(l3e), pfn, (l3e_get_flags(l3e) & _PAGE_PSE) ? " (PSE)" : ""); if ( !(l3e_get_flags(l3e) & _PAGE_PRESENT) || (l3e_get_flags(l3e) & _PAGE_PSE) || - !mfn_valid(mfn) ) + !mfn_valid(_mfn(mfn)) ) return; l2t = map_domain_page(_mfn(mfn)); l2e = l2t[l2_table_offset(addr)]; unmap_domain_page(l2t); mfn = l2e_get_pfn(l2e); - pfn = mfn_valid(mfn) && machine_to_phys_mapping_valid ? + pfn = mfn_valid(_mfn(mfn)) && machine_to_phys_mapping_valid ? get_gpfn_from_mfn(mfn) : INVALID_M2P_ENTRY; printk(" L2[0x%03lx] = %"PRIpte" %016lx %s\n", l2_table_offset(addr), l2e_get_intpte(l2e), pfn, (l2e_get_flags(l2e) & _PAGE_PSE) ? "(PSE)" : ""); if ( !(l2e_get_flags(l2e) & _PAGE_PRESENT) || (l2e_get_flags(l2e) & _PAGE_PSE) || - !mfn_valid(mfn) ) + !mfn_valid(_mfn(mfn)) ) return; l1t = map_domain_page(_mfn(mfn)); l1e = l1t[l1_table_offset(addr)]; unmap_domain_page(l1t); mfn = l1e_get_pfn(l1e); - pfn = mfn_valid(mfn) && machine_to_phys_mapping_valid ? + pfn = mfn_valid(_mfn(mfn)) && machine_to_phys_mapping_valid ? get_gpfn_from_mfn(mfn) : INVALID_M2P_ENTRY; printk(" L1[0x%03lx] = %"PRIpte" %016lx\n", l1_table_offset(addr), l1e_get_intpte(l1e), pfn); diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index d3ea805..bce13e8 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -257,7 +257,7 @@ static int __get_paged_frame(unsigned long gfn, unsigned long *frame, struct pag *frame = page_to_mfn(*page); #else *frame = mfn_x(gfn_to_mfn(rd, _gfn(gfn))); - *page = mfn_valid(*frame) ? mfn_to_page(*frame) : NULL; + *page = mfn_valid(_mfn(*frame)) ? mfn_to_page(*frame) : NULL; if ( (!(*page)) || (!get_page(*page, rd)) ) { *frame = mfn_x(INVALID_MFN); @@ -878,7 +878,7 @@ __gnttab_map_grant_ref( /* pg may be set, with a refcount included, from __get_paged_frame */ if ( !pg ) { - pg = mfn_valid(frame) ? mfn_to_page(frame) : NULL; + pg = mfn_valid(_mfn(frame)) ? mfn_to_page(frame) : NULL; if ( pg ) owner = page_get_owner_and_reference(pg); } @@ -1792,7 +1792,7 @@ gnttab_transfer( #endif /* Check the passed page frame for basic validity. */ - if ( unlikely(!mfn_valid(mfn)) ) + if ( unlikely(!mfn_valid(_mfn(mfn))) ) { put_gfn(d, gop.mfn); gdprintk(XENLOG_INFO, "gnttab_transfer: out-of-range %lx\n", @@ -2256,7 +2256,7 @@ __acquire_grant_for_copy( } else { - ASSERT(mfn_valid(act->frame)); + ASSERT(mfn_valid(_mfn(act->frame))); *page = mfn_to_page(act->frame); td = page_get_owner_and_reference(*page); /* @@ -2935,7 +2935,7 @@ static int __gnttab_cache_flush(gnttab_cache_flush_t *cflush, d = rcu_lock_current_domain(); mfn = cflush->a.dev_bus_addr >> PAGE_SHIFT; - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(_mfn(mfn)) ) { rcu_unlock_domain(d); return -EINVAL; diff --git a/xen/common/memory.c b/xen/common/memory.c index ad29b7b..ad0b33c 100644 --- a/xen/common/memory.c +++ b/xen/common/memory.c @@ -191,7 +191,7 @@ static void populate_physmap(struct memop_args *a) for ( j = 0; j < (1U << a->extent_order); j++, mfn++ ) { - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(_mfn(mfn)) ) { gdprintk(XENLOG_INFO, "Invalid mfn %#"PRI_xen_pfn"\n", mfn); @@ -274,7 +274,7 @@ int guest_remove_page(struct domain *d, unsigned long gmfn) * actual page that needs to be released. */ if ( p2mt == p2m_ram_paging_out ) { - ASSERT(mfn_valid(mfn_x(mfn))); + ASSERT(mfn_valid(mfn)); page = mfn_to_page(mfn_x(mfn)); if ( test_and_clear_bit(_PGC_allocated, &page->count_info) ) put_page(page); @@ -291,7 +291,7 @@ int guest_remove_page(struct domain *d, unsigned long gmfn) #else mfn = gfn_to_mfn(d, _gfn(gmfn)); #endif - if ( unlikely(!mfn_valid(mfn_x(mfn))) ) + if ( unlikely(!mfn_valid(mfn)) ) { put_gfn(d, gmfn); gdprintk(XENLOG_INFO, "Domain %u page number %lx invalid\n", @@ -515,7 +515,7 @@ static long memory_exchange(XEN_GUEST_HANDLE_PARAM(xen_memory_exchange_t) arg) #else /* !CONFIG_X86 */ mfn = mfn_x(gfn_to_mfn(d, _gfn(gmfn + k))); #endif - if ( unlikely(!mfn_valid(mfn)) ) + if ( unlikely(!mfn_valid(_mfn(mfn))) ) { put_gfn(d, gmfn + k); rc = -EINVAL; diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c index bbd7bc6..530ede1 100644 --- a/xen/common/page_alloc.c +++ b/xen/common/page_alloc.c @@ -985,7 +985,7 @@ static void free_heap_pages( if ( (page_to_mfn(pg) & mask) ) { /* Merge with predecessor block? */ - if ( !mfn_valid(page_to_mfn(pg-mask)) || + if ( !mfn_valid(_mfn(page_to_mfn(pg-mask))) || !page_state_is(pg-mask, free) || (PFN_ORDER(pg-mask) != order) || (phys_to_nid(page_to_maddr(pg-mask)) != node) ) @@ -996,7 +996,7 @@ static void free_heap_pages( else { /* Merge with successor block? */ - if ( !mfn_valid(page_to_mfn(pg+mask)) || + if ( !mfn_valid(_mfn(page_to_mfn(pg+mask))) || !page_state_is(pg+mask, free) || (PFN_ORDER(pg+mask) != order) || (phys_to_nid(page_to_maddr(pg+mask)) != node) ) @@ -1082,7 +1082,7 @@ int offline_page(unsigned long mfn, int broken, uint32_t *status) struct domain *owner; struct page_info *pg; - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(_mfn(mfn)) ) { dprintk(XENLOG_WARNING, "try to offline page out of range %lx\n", mfn); @@ -1191,7 +1191,7 @@ unsigned int online_page(unsigned long mfn, uint32_t *status) struct page_info *pg; int ret; - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(_mfn(mfn)) ) { dprintk(XENLOG_WARNING, "call expand_pages() first\n"); return -EINVAL; @@ -1242,7 +1242,7 @@ int query_page_offline(unsigned long mfn, uint32_t *status) { struct page_info *pg; - if ( !mfn_valid(mfn) || !page_is_ram_type(mfn, RAM_TYPE_CONVENTIONAL) ) + if ( !mfn_valid(_mfn(mfn)) || !page_is_ram_type(mfn, RAM_TYPE_CONVENTIONAL) ) { dprintk(XENLOG_WARNING, "call expand_pages() first\n"); return -EINVAL; @@ -1412,7 +1412,7 @@ static void __init smp_scrub_heap_pages(void *data) pg = mfn_to_page(mfn); /* Check the mfn is valid and page is free. */ - if ( !mfn_valid(mfn) || !page_state_is(pg, free) ) + if ( !mfn_valid(_mfn(mfn)) || !page_state_is(pg, free) ) continue; scrub_one_page(pg); diff --git a/xen/common/pdx.c b/xen/common/pdx.c index 4baffd4..c991a09 100644 --- a/xen/common/pdx.c +++ b/xen/common/pdx.c @@ -31,7 +31,7 @@ unsigned int __read_mostly pfn_pdx_hole_shift = 0; unsigned long __read_mostly pdx_group_valid[BITS_TO_LONGS( (FRAMETABLE_NR + PDX_GROUP_COUNT - 1) / PDX_GROUP_COUNT)] = { [0] = 1 }; -int __mfn_valid(unsigned long mfn) +bool __mfn_valid(unsigned long mfn) { return likely(mfn < max_page) && likely(!(mfn & pfn_hole_mask)) && diff --git a/xen/drivers/passthrough/amd/iommu_guest.c b/xen/drivers/passthrough/amd/iommu_guest.c index f96fbf4..96175bb 100644 --- a/xen/drivers/passthrough/amd/iommu_guest.c +++ b/xen/drivers/passthrough/amd/iommu_guest.c @@ -199,7 +199,7 @@ void guest_iommu_add_ppr_log(struct domain *d, u32 entry[]) mfn = guest_iommu_get_table_mfn(d, reg_to_u64(iommu->ppr_log.reg_base), sizeof(ppr_entry_t), tail); - ASSERT(mfn_valid(mfn)); + ASSERT(mfn_valid(_mfn(mfn))); log_base = map_domain_page(_mfn(mfn)); log = log_base + tail % (PAGE_SIZE / sizeof(ppr_entry_t)); @@ -248,7 +248,7 @@ void guest_iommu_add_event_log(struct domain *d, u32 entry[]) mfn = guest_iommu_get_table_mfn(d, reg_to_u64(iommu->event_log.reg_base), sizeof(event_entry_t), tail); - ASSERT(mfn_valid(mfn)); + ASSERT(mfn_valid(_mfn(mfn))); log_base = map_domain_page(_mfn(mfn)); log = log_base + tail % (PAGE_SIZE / sizeof(event_entry_t)); @@ -420,7 +420,7 @@ static int do_invalidate_dte(struct domain *d, cmd_entry_t *cmd) dte_mfn = guest_iommu_get_table_mfn(d, reg_to_u64(g_iommu->dev_table.reg_base), sizeof(dev_entry_t), gbdf); - ASSERT(mfn_valid(dte_mfn)); + ASSERT(mfn_valid(_mfn(dte_mfn))); /* Read guest dte information */ dte_base = map_domain_page(_mfn(dte_mfn)); @@ -441,7 +441,7 @@ static int do_invalidate_dte(struct domain *d, cmd_entry_t *cmd) gcr3_mfn = mfn_x(get_gfn(d, gcr3_gfn, &p2mt)); put_gfn(d, gcr3_gfn); - ASSERT(mfn_valid(gcr3_mfn)); + ASSERT(mfn_valid(_mfn(gcr3_mfn))); iommu = find_iommu_for_device(0, mbdf); if ( !iommu ) @@ -502,7 +502,7 @@ static void guest_iommu_process_command(unsigned long _d) cmd_mfn = guest_iommu_get_table_mfn(d, reg_to_u64(iommu->cmd_buffer.reg_base), sizeof(cmd_entry_t), head); - ASSERT(mfn_valid(cmd_mfn)); + ASSERT(mfn_valid(_mfn(cmd_mfn))); cmd_base = map_domain_page(_mfn(cmd_mfn)); cmd = cmd_base + head % entries_per_page; diff --git a/xen/drivers/passthrough/amd/pci_amd_iommu.c b/xen/drivers/passthrough/amd/pci_amd_iommu.c index 94a25a4..b2428f8 100644 --- a/xen/drivers/passthrough/amd/pci_amd_iommu.c +++ b/xen/drivers/passthrough/amd/pci_amd_iommu.c @@ -293,7 +293,7 @@ static void __hwdom_init amd_iommu_hwdom_init(struct domain *d) * XXX Should we really map all non-RAM (above 4G)? Minimally * a pfn_valid() check would seem desirable here. */ - if ( mfn_valid(pfn) ) + if ( mfn_valid(_mfn(pfn)) ) { int ret = amd_iommu_map_page(d, pfn, pfn, IOMMUF_readable|IOMMUF_writable); diff --git a/xen/drivers/passthrough/vtd/dmar.c b/xen/drivers/passthrough/vtd/dmar.c index 9484f3b..16ae6f6 100644 --- a/xen/drivers/passthrough/vtd/dmar.c +++ b/xen/drivers/passthrough/vtd/dmar.c @@ -939,7 +939,7 @@ static int __init add_user_rmrr(void) do { - if ( !mfn_valid(base) ) + if ( !mfn_valid(_mfn(base)) ) { printk(XENLOG_ERR VTDPREFIX "Invalid pfn in RMRR range "ERMRRU_FMT"\n", diff --git a/xen/drivers/passthrough/vtd/x86/vtd.c b/xen/drivers/passthrough/vtd/x86/vtd.c index 974b537..8a89f34 100644 --- a/xen/drivers/passthrough/vtd/x86/vtd.c +++ b/xen/drivers/passthrough/vtd/x86/vtd.c @@ -129,7 +129,7 @@ void __hwdom_init vtd_set_hwdom_mapping(struct domain *d) unsigned long pfn = pdx_to_pfn(i); if ( pfn > (0xffffffffUL >> PAGE_SHIFT) ? - (!mfn_valid(pfn) || + (!mfn_valid(_mfn(pfn)) || !page_is_ram_type(pfn, RAM_TYPE_CONVENTIONAL)) : iommu_inclusive_mapping ? page_is_ram_type(pfn, RAM_TYPE_UNUSABLE) : diff --git a/xen/include/asm-arm/mm.h b/xen/include/asm-arm/mm.h index 3de911c..60ccbf3 100644 --- a/xen/include/asm-arm/mm.h +++ b/xen/include/asm-arm/mm.h @@ -128,7 +128,7 @@ extern vaddr_t xenheap_virt_start; #else #define is_xen_heap_page(page) ((page)->count_info & PGC_xen_heap) #define is_xen_heap_mfn(mfn) \ - (mfn_valid(mfn) && is_xen_heap_page(__mfn_to_page(mfn))) + (mfn_valid(_mfn(mfn)) && is_xen_heap_page(__mfn_to_page(mfn))) #endif #define is_xen_fixed_mfn(mfn) \ @@ -194,7 +194,7 @@ static inline void __iomem *ioremap_wc(paddr_t start, size_t len) /* XXX -- account for base */ #define mfn_valid(mfn) ({ \ - unsigned long __m_f_n = (mfn); \ + unsigned long __m_f_n = mfn_x(mfn); \ likely(pfn_to_pdx(__m_f_n) >= frametable_base_pdx && __mfn_valid(__m_f_n)); \ }) diff --git a/xen/include/asm-arm/p2m.h b/xen/include/asm-arm/p2m.h index 0905a3f..0899523 100644 --- a/xen/include/asm-arm/p2m.h +++ b/xen/include/asm-arm/p2m.h @@ -292,7 +292,7 @@ static inline struct page_info *get_page_from_gfn( if ( !p2m_is_any_ram(p2mt) ) return NULL; - if ( !mfn_valid(mfn) ) + if ( !mfn_valid(_mfn(mfn)) ) return NULL; page = mfn_to_page(mfn); diff --git a/xen/include/asm-x86/p2m.h b/xen/include/asm-x86/p2m.h index 5b1c566..470d29d 100644 --- a/xen/include/asm-x86/p2m.h +++ b/xen/include/asm-x86/p2m.h @@ -465,7 +465,7 @@ static inline struct page_info *get_page_from_gfn( if (t) *t = p2m_ram_rw; page = __mfn_to_page(gfn); - return mfn_valid(gfn) && get_page(page, d) ? page : NULL; + return mfn_valid(_mfn(gfn)) && get_page(page, d) ? page : NULL; } diff --git a/xen/include/asm-x86/page.h b/xen/include/asm-x86/page.h index af7d3e8..46faffc 100644 --- a/xen/include/asm-x86/page.h +++ b/xen/include/asm-x86/page.h @@ -252,7 +252,7 @@ void copy_page_sse2(void *, const void *); * We define non-underscored wrappers for above conversion functions. These are * overridden in various source files while underscored versions remain intact. */ -#define mfn_valid(mfn) __mfn_valid(mfn) +#define mfn_valid(mfn) __mfn_valid(mfn_x(mfn)) #define virt_to_mfn(va) __virt_to_mfn(va) #define mfn_to_virt(mfn) __mfn_to_virt(mfn) #define virt_to_maddr(va) __virt_to_maddr((unsigned long)(va)) diff --git a/xen/include/xen/pdx.h b/xen/include/xen/pdx.h index c7c837e..4c56645 100644 --- a/xen/include/xen/pdx.h +++ b/xen/include/xen/pdx.h @@ -21,7 +21,7 @@ extern void set_pdx_range(unsigned long smfn, unsigned long emfn); #define page_to_pdx(pg) ((pg) - frame_table) #define pdx_to_page(pdx) (frame_table + (pdx)) -extern int __mfn_valid(unsigned long mfn); +bool __mfn_valid(unsigned long mfn); static inline unsigned long pfn_to_pdx(unsigned long pfn) { diff --git a/xen/include/xen/tmem_xen.h b/xen/include/xen/tmem_xen.h index 2b205bf..a6cab00 100644 --- a/xen/include/xen/tmem_xen.h +++ b/xen/include/xen/tmem_xen.h @@ -25,7 +25,7 @@ typedef uint32_t pagesize_t; /* like size_t, must handle largest PAGE_SIZE */ #define IS_PAGE_ALIGNED(addr) IS_ALIGNED((unsigned long)(addr), PAGE_SIZE) -#define IS_VALID_PAGE(_pi) ( mfn_valid(page_to_mfn(_pi)) ) +#define IS_VALID_PAGE(_pi) mfn_valid(_mfn(page_to_mfn(_pi))) extern struct page_list_head tmem_page_list; extern spinlock_t tmem_page_list_lock; -- 2.1.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |