[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [POWERPC][XEN] Alloc IOMMU to map a Foreign page
# HG changeset patch # User Jimi Xenidis <jimix@xxxxxxxxxxxxxx> # Node ID 4a2a96e72076f84ad5c9166812c6f3dcea23214e # Parent 0f4c73a1e92a195bd90beff00c1e1c669e6f4a6a [POWERPC][XEN] Alloc IOMMU to map a Foreign page VIO to a physical device reulsts in the granted page getting mapped into the IOMMU. Signed-off-by: Jimi Xenidis <jimix@xxxxxxxxxxxxxx> Signed-off-by: Hollis Blanchard <hollisb@xxxxxxxxxx> --- xen/arch/powerpc/iommu.c | 35 ++++++++++++++++++++++++++++------- 1 files changed, 28 insertions(+), 7 deletions(-) diff -r 0f4c73a1e92a -r 4a2a96e72076 xen/arch/powerpc/iommu.c --- a/xen/arch/powerpc/iommu.c Wed Oct 04 14:06:14 2006 -0400 +++ b/xen/arch/powerpc/iommu.c Sat Oct 07 15:38:27 2006 -0400 @@ -32,6 +32,12 @@ #include "tce.h" #include "iommu.h" +#ifdef DEBUG +#define DBG(fmt...) printk(fmt) +#else +#define DBG(fmt...) +#endif + struct iommu_funcs { int (*iommu_put)(ulong, union tce); }; @@ -46,16 +52,31 @@ int iommu_put(u32 buid, ulong ioba, unio struct domain *d = v->domain; if (buid < iommu_phbs_num && iommu_phbs[buid].iommu_put != NULL) { - ulong gpfn; + ulong gmfn; ulong mfn; + int mtype; - gpfn = tce.tce_bits.tce_rpn; - mfn = gmfn_to_mfn(d, gpfn); + gmfn = tce.tce_bits.tce_rpn; + + + mfn = pfn2mfn(d, gmfn, &mtype); if (mfn != INVALID_MFN) { -#ifdef DEBUG - printk("%s: ioba=0x%lx pfn=0x%lx mfn=0x%lx\n", __func__, - ioba, pfn, mfn); -#endif + switch (mtype) { + case PFN_TYPE_RMA: + case PFN_TYPE_LOGICAL: + break; + case PFN_TYPE_FOREIGN: + DBG("%s: assigning to Foriegn page: " + "gmfn: 0x%lx mfn: 0x%lx\n", __func__, gmfn, mfn); + break; + default: + printk("%s: unsupported type[%d]: gmfn: 0x%lx mfn: 0x%lx\n", + __func__, mtype, gmfn, mfn); + return -1; + break; + } + DBG("%s: ioba=0x%lx gmfn=0x%lx mfn=0x%lx\n", __func__, + ioba, gmfn, mfn); tce.tce_bits.tce_rpn = mfn; return iommu_phbs[buid].iommu_put(ioba, tce); } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |