[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH V2 8/9] xentrace: Support for ARM platform
Modified p2m_lookup() to provide support for xentrace on the ARM platform. Added check for DOMID_XEN which skips PFN to MFN translation. DOMID_XEN is considered a PV guest on x86 (i.e MFN == GFN), but on ARM there is no such concept. Thus requests to DOMID_XEN on ARM use a MFN address directly and do not need translation from PFN. Check added to determine read/write or read only page type when requesting DOMID_XEN. This is done by checking the u.inuse.type_info parameter of the requested page. The page rw/ro paddr_t type is then set accordingly. Signed-off-by: Benjamin Sanda <ben.sanda@xxxxxxxxxxxxxxx> --- Changed since v1: * Added check to determine page rw/ro type to correctly set the paddr_t to p2m_ram_rw or p2m_ram_ro instead of assuming p2m_ram_rw * Corrected block comment format to conform to Xen coding standard --- xen/arch/arm/p2m.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/p2m.c b/xen/arch/arm/p2m.c index a2a9c4b..a99b670 100644 --- a/xen/arch/arm/p2m.c +++ b/xen/arch/arm/p2m.c @@ -227,11 +227,38 @@ paddr_t p2m_lookup(struct domain *d, paddr_t paddr, p2m_type_t *t) { paddr_t ret; struct p2m_domain *p2m = &d->arch.p2m; + struct page_info *page; + unsigned long mfn; - spin_lock(&p2m->lock); - ret = __p2m_lookup(d, paddr, t); - spin_unlock(&p2m->lock); - + /* + * DOMID_XEN is considered a PV guest on x86 (i.e MFN == GFN), but + * on ARM there is no such concept. Thus requests to DOMID_XEN + * on ARM use a MFN address directly and do not need translation + * from PFN. + */ + if(DOMID_XEN != d->domain_id) + { + spin_lock(&p2m->lock); + ret = __p2m_lookup(d, paddr, t); + spin_unlock(&p2m->lock); + } + else + { + /* retrieve the page to determine read/write or read only mapping */ + mfn = paddr >> PAGE_SHIFT; + if (mfn_valid(mfn)) + { + page = mfn_to_page(mfn); + *t = (page->u.inuse.type_info == PGT_writable_page ? + p2m_ram_rw : p2m_ram_ro); + } + else + { + *t = p2m_invalid; + } + ret = paddr; + } + return ret; } -- 2.5.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |