* [PATCH] x86/mm: Swap mfn_valid() to use mfn_t
@ 2017-02-16 20:07 Andrew Cooper
2017-02-17 9:40 ` Jan Beulich
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Andrew Cooper @ 2017-02-16 20:07 UTC (permalink / raw)
To: Xen-devel
Cc: Stefano Stabellini, George Dunlap, Andrew Cooper, Tim Deegan,
Julien Grall, Jan Beulich
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@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien.grall@arm.com>
CC: Tim Deegan <tim@xen.org>
CC: George Dunlap <george.dunlap@eu.citrix.com>
---
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@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/mm: Swap mfn_valid() to use mfn_t
2017-02-16 20:07 [PATCH] x86/mm: Swap mfn_valid() to use mfn_t Andrew Cooper
@ 2017-02-17 9:40 ` Jan Beulich
2017-02-20 10:51 ` Tim Deegan
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Jan Beulich @ 2017-02-17 9:40 UTC (permalink / raw)
To: Andrew Cooper
Cc: George Dunlap, JulienGrall, Stefano Stabellini, Tim Deegan, Xen-devel
>>> On 16.02.17 at 21:07, <andrew.cooper3@citrix.com> wrote:
> 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@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/mm: Swap mfn_valid() to use mfn_t
2017-02-16 20:07 [PATCH] x86/mm: Swap mfn_valid() to use mfn_t Andrew Cooper
2017-02-17 9:40 ` Jan Beulich
@ 2017-02-20 10:51 ` Tim Deegan
2017-02-22 14:15 ` Julien Grall
2017-02-27 9:38 ` George Dunlap
3 siblings, 0 replies; 5+ messages in thread
From: Tim Deegan @ 2017-02-20 10:51 UTC (permalink / raw)
To: Andrew Cooper
Cc: George Dunlap, Julien Grall, Stefano Stabellini, Jan Beulich, Xen-devel
At 20:07 +0000 on 16 Feb (1487275634), Andrew Cooper wrote:
> 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@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/mm: Swap mfn_valid() to use mfn_t
2017-02-16 20:07 [PATCH] x86/mm: Swap mfn_valid() to use mfn_t Andrew Cooper
2017-02-17 9:40 ` Jan Beulich
2017-02-20 10:51 ` Tim Deegan
@ 2017-02-22 14:15 ` Julien Grall
2017-02-27 9:38 ` George Dunlap
3 siblings, 0 replies; 5+ messages in thread
From: Julien Grall @ 2017-02-22 14:15 UTC (permalink / raw)
To: Andrew Cooper, Xen-devel
Cc: George Dunlap, nd, Tim Deegan, Stefano Stabellini, Jan Beulich
Hi Andre,
On 16/02/17 20:07, Andrew Cooper wrote:
> 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@citrix.com>
Acked-by: Julien Grall <julien.grall@arm.com>
Cheers,
--
Julien Grall
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] x86/mm: Swap mfn_valid() to use mfn_t
2017-02-16 20:07 [PATCH] x86/mm: Swap mfn_valid() to use mfn_t Andrew Cooper
` (2 preceding siblings ...)
2017-02-22 14:15 ` Julien Grall
@ 2017-02-27 9:38 ` George Dunlap
3 siblings, 0 replies; 5+ messages in thread
From: George Dunlap @ 2017-02-27 9:38 UTC (permalink / raw)
To: Andrew Cooper, Xen-devel
Cc: George Dunlap, Julien Grall, Stefano Stabellini, Tim Deegan, Jan Beulich
On 16/02/17 20:07, Andrew Cooper wrote:
> 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@citrix.com>
Acked-by: George Dunlap <george.dunlap@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien.grall@arm.com>
> CC: Tim Deegan <tim@xen.org>
> CC: George Dunlap <george.dunlap@eu.citrix.com>
> ---
> 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;
>
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-02-27 9:38 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-16 20:07 [PATCH] x86/mm: Swap mfn_valid() to use mfn_t Andrew Cooper
2017-02-17 9:40 ` Jan Beulich
2017-02-20 10:51 ` Tim Deegan
2017-02-22 14:15 ` Julien Grall
2017-02-27 9:38 ` George Dunlap
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.