@@ -30,7 +30,7 @@ long arch_do_domctl(struct xen_domctl *domctl, struct domain *d,
if ( e < s )
return -EINVAL;
- return p2m_cache_flush(d, s, e);
+ return p2m_cache_flush(d, _gfn(s), _gfn(e));
}
case XEN_DOMCTL_bind_pt_irq:
{
@@ -1467,16 +1467,16 @@ int relinquish_p2m_mapping(struct domain *d)
d->arch.p2m.default_access);
}
-int p2m_cache_flush(struct domain *d, xen_pfn_t start_mfn, xen_pfn_t end_mfn)
+int p2m_cache_flush(struct domain *d, gfn_t start_gfn, gfn_t end_gfn)
{
struct p2m_domain *p2m = &d->arch.p2m;
- start_mfn = MAX(start_mfn, p2m->lowest_mapped_gfn);
- end_mfn = MIN(end_mfn, p2m->max_mapped_gfn);
+ start_gfn = max_gfn(start_gfn, _gfn(p2m->lowest_mapped_gfn));
+ end_gfn = min_gfn(end_gfn, _gfn(p2m->max_mapped_gfn));
return apply_p2m_changes(d, CACHEFLUSH,
- pfn_to_paddr(start_mfn),
- pfn_to_paddr(end_mfn),
+ pfn_to_paddr(gfn_x(start_gfn)),
+ pfn_to_paddr(gfn_x(end_gfn)),
pfn_to_paddr(INVALID_MFN),
MATTR_MEM, 0, p2m_invalid,
d->arch.p2m.default_access);
@@ -139,7 +139,7 @@ void p2m_dump_info(struct domain *d);
mfn_t p2m_lookup(struct domain *d, gfn_t gfn, p2m_type_t *t);
/* Clean & invalidate caches corresponding to a region of guest address space */
-int p2m_cache_flush(struct domain *d, xen_pfn_t start_mfn, xen_pfn_t end_mfn);
+int p2m_cache_flush(struct domain *d, gfn_t start_gfn, gfn_t end_gfn);
/* Setup p2m RAM mapping for domain d from start-end. */
int p2m_populate_ram(struct domain *d, paddr_t start, paddr_t end);
p2m_cache_flush is expecting GFNs in parameter and not MFNs. Rename the variable to *gfn* and use typesafe to avoid possible misusage. Signed-off-by: Julien Grall <julien.grall@arm.com> --- xen/arch/arm/domctl.c | 2 +- xen/arch/arm/p2m.c | 10 +++++----- xen/include/asm-arm/p2m.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-)