On Tue, Aug 15, 2023 at 01:42:35PM -0300, Jason Gunthorpe wrote: > On Fri, Aug 11, 2023 at 12:15:00AM -0700, Yi Liu wrote: > > Under nested IOMMU translation, userspace owns the stage-1 translation > > table (e.g. the stage-1 page table of Intel VT-d or the context table > > of ARM SMMUv3, and etc.). Stage-1 translation tables are vendor specific, > > and need to be compatible with the underlying IOMMU hardware. Hence, > > userspace should know the IOMMU hardware capability before creating and > > configuring the stage-1 translation table to kernel. > > > > This adds IOMMU_GET_HW_INFO ioctl to query the IOMMU hardware information > > (a.k.a capability) for a given device. The returned data is vendor specific, > > userspace needs to decode it with the structure mapped by the @out_data_type > > field. > > > > As only physical devices have IOMMU hardware, so this will return error > > if the given device is not a physical device. > > > > Reviewed-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > > Co-developed-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > > Signed-off-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > > Signed-off-by: Yi Liu <yi.l.liu@xxxxxxxxx> > > --- > > drivers/iommu/iommufd/main.c | 85 ++++++++++++++++++++++++++++++++++++ > > include/uapi/linux/iommufd.h | 36 +++++++++++++++ > > 2 files changed, 121 insertions(+) > > > > diff --git a/drivers/iommu/iommufd/main.c b/drivers/iommu/iommufd/main.c > > index 94c498b8fdf6..d459811c5381 100644 > > --- a/drivers/iommu/iommufd/main.c > > +++ b/drivers/iommu/iommufd/main.c > > @@ -17,6 +17,7 @@ > > I was looking at this more and this code should be in device.c: > > > +static int iommufd_fill_hw_info(struct device *dev, void __user *user_ptr, > > + unsigned int *length, u32 *type) > > +{ > > Since it is working on devices > > main.c is primarily for context related stuff Ack for that. We'd make similar changes to the other handlers too. Thanks Nic