[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH v2] iommu/xen: Add Xen PV-IOMMU driver
On Mon, Jun 24, 2024 at 10:36:13AM -0700, Easwar Hariharan wrote: > Hi Jason, > > On 6/24/2024 9:32 AM, Jason Gunthorpe wrote: > > On Mon, Jun 24, 2024 at 02:36:45PM +0000, Teddy Astie wrote: > >>>> +bool xen_iommu_capable(struct device *dev, enum iommu_cap cap) > >>>> +{ > >>>> + switch (cap) { > >>>> + case IOMMU_CAP_CACHE_COHERENCY: > >>>> + return true; > >>> > >>> Will the PV-IOMMU only ever be exposed on hardware where that really is > >>> always true? > >>> > >> > >> On the hypervisor side, the PV-IOMMU interface always implicitely flush > >> the IOMMU hardware on map/unmap operation, so at the end of the > >> hypercall, the cache should be always coherent IMO. > > > > Cache coherency is a property of the underlying IOMMU HW and reflects > > the ability to prevent generating transactions that would bypass the > > cache. > > > > On AMD and Intel IOMMU HW this maps to a bit in their PTEs that must > > always be set to claim this capability. > > > > No ARM SMMU supports it yet. > > > > Unrelated to this patch: Both the arm-smmu and arm-smmu-v3 drivers claim > this capability if the device tree/IORT table have the corresponding flags. Oh sorry, I misread this, as the ENFORCED version, so it isn't quite right. ENFORCED is as above Just normal CACHE_COHERENCY requires just HW support and any enablement in the IOMMU. AMD and Intel are always enabled ARM requires HW support and possibly some specific iommu programming. > I read through DEN0049 to determine what are the knock-on effects, or > equivalently the requirements to set those flags in the IORT, but came > up empty. Could you help with what I'm missing to resolve the apparent > contradiction between your statement and the code? The flags are set if the underlying HW can do the coherency work, and Linux has the IOMMU (STE/ioptes) set to work with that. Map/unmap cache flushing during the hypercall is not a substitution, Linux still needs to know if streaming DMA requires the flushes. Jason
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |