[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [BUG] After upgrade to Xen 4.12.0 iommu=no-igfx
On Fri, Aug 02, 2019 at 10:05:40AM +0200, Roger Pau Monné wrote: > On Thu, Aug 01, 2019 at 11:25:04AM -0700, Roman Shaposhnik wrote: > > This patch completely fixes the problem for me! > > > > Thanks Roger! I'd love to see this in Xen 4.13 > > Thanks for testing! > > It's still not clear to me why the previous approach didn't work, but > I think this patch is better because it removes the usage of > {set/clear}_identity_p2m_entry from PV domains. I will submit this > formally now. Sorry to bother again, but since we still don't understand why the previous fix didn't work for you, and I can't reproduce this with my hardware, could you give the attached patch a try? AFAICT the only difference between the non-working version and the working version is the flush, so I've added it here. Thanks, Roger. ---8<--- diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index fef97c82f6..3605614aaf 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -1341,7 +1341,7 @@ int set_identity_p2m_entry(struct domain *d, unsigned long gfn_l, if ( !paging_mode_translate(p2m->domain) ) { - if ( !need_iommu_pt_sync(d) ) + if ( !has_iommu_pt(d) ) return 0; return iommu_legacy_map(d, _dfn(gfn_l), _mfn(gfn_l), PAGE_ORDER_4K, IOMMUF_readable | IOMMUF_writable); @@ -1432,7 +1432,7 @@ int clear_identity_p2m_entry(struct domain *d, unsigned long gfn_l) if ( !paging_mode_translate(d) ) { - if ( !need_iommu_pt_sync(d) ) + if ( !has_iommu_pt(d) ) return 0; return iommu_legacy_unmap(d, _dfn(gfn_l), PAGE_ORDER_4K); } diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 5d72270c5b..9fd5c97be2 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -2026,7 +2026,7 @@ static int rmrr_identity_mapping(struct domain *d, bool_t map, mrmrr->count = 1; list_add_tail(&mrmrr->list, &hd->arch.mapped_rmrrs); - return 0; + return iommu_iotlb_flush_all(d, IOMMU_FLUSHF_added | IOMMU_FLUSHF_modified); } static int intel_iommu_add_device(u8 devfn, struct pci_dev *pdev) _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |