Hi Alex, On 12/11/19 9:28 PM, Alex Williamson wrote: > Commit d850c2ee5fe2 ("iommu/vt-d: Expose ISA direct mapping region via > iommu_get_resv_regions") created a direct-mapped reserved memory region > in order to replace the static identity mapping of the ISA address > space, where the latter was then removed in commit df4f3c603aeb > ("iommu/vt-d: Remove static identity map code"). According to the > history of this code and the Kconfig option surrounding it, this direct > mapping exists for the benefit of legacy ISA drivers that are not > compatible with the DMA API. > > In conjuntion with commit 9b77e5c79840 ("vfio/type1: check dma map > request is within a valid iova range") this change introduced a > regression where the vfio IOMMU backend enforces reserved memory regions > per IOMMU group, preventing userspace from creating IOMMU mappings > conflicting with prescribed reserved regions. A necessary prerequisite > for the vfio change was the introduction of "relaxable" direct mappings > introduced by commit adfd37382090 ("iommu: Introduce > IOMMU_RESV_DIRECT_RELAXABLE reserved memory regions"). These relaxable > direct mappings provide the same identity mapping support in the default > domain, but also indicate that the reservation is software imposed and > may be relaxed under some conditions, such as device assignment. > > Convert the ISA bridge direct-mapped reserved region to relaxable to > reflect that the restriction is self imposed and need not be enforced > by drivers such as vfio. > > Fixes: d850c2ee5fe2 ("iommu/vt-d: Expose ISA direct mapping region via > iommu_get_resv_regions") Maybe it is rather a fix of my patch, below, since above patch landed upstream before the IOMMU_RESV_DIRECT_RELAXABLE availability.
Fixes: 1c5c59fbad20 ("iommu/vt-d: Differentiate relaxable and non relaxable RMRRs") > Cc: sta...@vger.kernel.org # v5.3+ > Link: https://lore.kernel.org/linux-iommu/20191211082304.2d4fa...@x1.home > Reported-by: cprt <c...@protonmail.com> > Tested-by: cprt <c...@protonmail.com> > Signed-off-by: Alex Williamson <alex.william...@redhat.com> Besides Reviewed-by: Eric Auger <eric.au...@redhat.com> Thanks Eric > --- > drivers/iommu/intel-iommu.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c > index 0c8d81f56a30..6eb0dd7489a1 100644 > --- a/drivers/iommu/intel-iommu.c > +++ b/drivers/iommu/intel-iommu.c > @@ -5737,7 +5737,7 @@ static void intel_iommu_get_resv_regions(struct device > *device, > > if ((pdev->class >> 8) == PCI_CLASS_BRIDGE_ISA) { > reg = iommu_alloc_resv_region(0, 1UL << 24, 0, > - IOMMU_RESV_DIRECT); > + IOMMU_RESV_DIRECT_RELAXABLE); > if (reg) > list_add_tail(®->list, head); > } > > _______________________________________________ > iommu mailing list > iommu@lists.linux-foundation.org > https://lists.linuxfoundation.org/mailman/listinfo/iommu > _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu