On Mon, Aug 26, 2024 at 10:04 AM Alex Williamson <alex.williamson@xxxxxxxxxx> wrote: > > On Mon, 26 Aug 2024 07:16:37 +0000 > Manoj Vishwanathan <manojvishy@xxxxxxxxxx> wrote: > > > Hi maintainers, > > > > This RFC patch introduces the ability for userspace to control whether > > device (DMA) buffers are marked as cacheable, enabling them to utilize > > the system-level cache. > > > > The specific changes made in this patch are: > > > > * Introduce a new flag in `include/linux/iommu.h`: > > * `IOMMU_SYS_CACHE` - Indicates if the associated page should be cached in the system's cache hierarchy. > > * Add `VFIO_DMA_MAP_FLAG_SYS_CACHE` to `include/uapi/linux/vfio.h`: > > * Allows userspace to set the cacheable attribute to PTE when mapping DMA regions using the VFIO interface. > > * Update `vfio_iommu_type1.c`: > > * Handle the `VFIO_DMA_MAP_FLAG_SYS_CACHE` flag during DMA mapping operations. > > * Set the `IOMMU_SYS_CACHE` flag in the IOMMU page table entry if > > the `VFIO_DMA_MAP_FLAG_SYS_CACHE` is set. > > We intend to eventually drop vfio type1 in favor of using IOMMUFD, > therefore all new type1 features need to first be available in IOMMUFD. > Once there we may consider use cases for providing the feature in the > legacy type1 interface and the IOMMUFD compatibility interface. Thanks, > > Alex Thank You, Alex! I will redirect this patch to iommufd in the next version. > > * arm/smmu/io-pgtable-arm: Set the MAIR for SYS_CACHE > > > > The reasoning behind these changes is to provide userspace with > > finer-grained control over memory access patterns for devices, > > potentially improving performance in scenarios where caching is > > beneficial. We saw in some of the use cases where the buffers were > > for transient data ( in and out without processing). > > > > I have tested this patch on certain arm64 machines and observed the > > following: > > > > * There is 14-21% improvement in jitter measurements, where the > > buffer on System Level Cache vs DDR buffers > > * There was not much of an improvement in latency in the diration of > > the tests that I have tried. > > > > I am open to feedback and suggestions for further improvements. > > Please let me know if you have any questions or concerns. Also, I am > > working on adding a check in the VFIO layer to ensure that if there > > is no architecture supported implementation for sys cache, if should > > not apply them. > > > > Thanks, > > Manoj Vishwanathan > > > > Manoj Vishwanathan (4): > > iommu: Add IOMMU_SYS_CACHE flag for system cache control > > iommu/io-pgtable-arm: Force outer cache for page-level MAIR via user > > flag > > vfio: Add VFIO_DMA_MAP_FLAG_SYS_CACHE to control device access to > > system cache > > vfio/type1: Add support for VFIO_DMA_MAP_FLAG_SYS_CACHE > > > > drivers/iommu/io-pgtable-arm.c | 3 +++ > > drivers/vfio/vfio_iommu_type1.c | 5 +++-- > > include/linux/iommu.h | 6 ++++++ > > include/uapi/linux/vfio.h | 1 + > > 4 files changed, 13 insertions(+), 2 deletions(-) > > >