On Mon, 14 Sep 2020 18:25:31 -0400 Matthew Rosato <mjrosato@xxxxxxxxxxxxx> wrote: > Commit 492855939bdb ("vfio/type1: Limit DMA mappings per container") > added the ability to limit the number of memory backed DMA mappings. > However on s390x, when lazy mapping is in use, we use a very large > number of concurrent mappings. Let's provide the current allowable > number of DMA mappings to userspace via the IOMMU info chain so that > userspace can take appropriate mitigation. > > Signed-off-by: Matthew Rosato <mjrosato@xxxxxxxxxxxxx> > --- > drivers/vfio/vfio_iommu_type1.c | 17 +++++++++++++++++ > include/uapi/linux/vfio.h | 16 ++++++++++++++++ > 2 files changed, 33 insertions(+) (...) > diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h > index 9204705..a8cc4a5 100644 > --- a/include/uapi/linux/vfio.h > +++ b/include/uapi/linux/vfio.h > @@ -1039,6 +1039,22 @@ struct vfio_iommu_type1_info_cap_migration { > __u64 max_dirty_bitmap_size; /* in bytes */ > }; > > +/* > + * The DMA available capability allows to report the current number of > + * simultaneously outstanding DMA mappings that are allowed. > + * > + * The structures below define version 1 of this capability. "The structure below defines..." ? > + * > + * max: specifies the maximum number of outstanding DMA mappings allowed. I think you forgot to tweak that one: "avail: specifies the current number of outstanding DMA mappings allowed." ? > + */ > +#define VFIO_IOMMU_TYPE1_INFO_DMA_AVAIL 3 > + > +struct vfio_iommu_type1_info_dma_avail { > + struct vfio_info_cap_header header; > + __u32 avail; > +}; > + > + > #define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12) > > /**