On Sat, Sep 23, 2023 at 02:25:00AM +0100, Joao Martins wrote: > diff --git a/drivers/iommu/iommufd/hw_pagetable.c b/drivers/iommu/iommufd/hw_pagetable.c > index 32e259245314..22354b0ba554 100644 > --- a/drivers/iommu/iommufd/hw_pagetable.c > +++ b/drivers/iommu/iommufd/hw_pagetable.c > @@ -198,3 +198,24 @@ int iommufd_hwpt_alloc(struct iommufd_ucmd *ucmd) > iommufd_put_object(&idev->obj); > return rc; > } > + > +int iommufd_hwpt_set_dirty(struct iommufd_ucmd *ucmd) > +{ > + struct iommu_hwpt_set_dirty *cmd = ucmd->cmd; > + struct iommufd_hw_pagetable *hwpt; > + struct iommufd_ioas *ioas; > + int rc = -EOPNOTSUPP; Default is never used? > + bool enable; > + > + hwpt = iommufd_get_hwpt(ucmd, cmd->hwpt_id); > + if (IS_ERR(hwpt)) > + return PTR_ERR(hwpt); > + > + ioas = hwpt->ioas; > + enable = cmd->flags & IOMMU_DIRTY_TRACKING_ENABLED; Check that incoming flags are not invalid if (cmd->flags & ~IOMMU_DIRTY_TRACKING_ENABLED) return -EOPNOTSUPP > diff --git a/drivers/iommu/iommufd/main.c b/drivers/iommu/iommufd/main.c > index e71523cbd0de..ec0c34086af3 100644 > --- a/drivers/iommu/iommufd/main.c > +++ b/drivers/iommu/iommufd/main.c > @@ -315,6 +315,7 @@ union ucmd_buffer { > struct iommu_ioas_unmap unmap; > struct iommu_option option; > struct iommu_vfio_ioas vfio_ioas; > + struct iommu_hwpt_set_dirty set_dirty; > #ifdef CONFIG_IOMMUFD_TEST > struct iommu_test_cmd test; > #endif > @@ -358,6 +359,8 @@ static const struct iommufd_ioctl_op iommufd_ioctl_ops[] = { > val64), > IOCTL_OP(IOMMU_VFIO_IOAS, iommufd_vfio_ioas, struct iommu_vfio_ioas, > __reserved), > + IOCTL_OP(IOMMU_HWPT_SET_DIRTY, iommufd_hwpt_set_dirty, > + struct iommu_hwpt_set_dirty, __reserved), > #ifdef CONFIG_IOMMUFD_TEST > IOCTL_OP(IOMMU_TEST_CMD, iommufd_test, struct iommu_test_cmd, last), > #endif These two lists of things are sorted > + > +/* /** ? > + * enum iommufd_set_dirty_flags - Flags for steering dirty tracking > + * @IOMMU_DIRTY_TRACKING_DISABLED: Disables dirty tracking > + * @IOMMU_DIRTY_TRACKING_ENABLED: Enables dirty tracking > + */ > +enum iommufd_hwpt_set_dirty_flags { > + IOMMU_DIRTY_TRACKING_DISABLED = 0, > + IOMMU_DIRTY_TRACKING_ENABLED = 1, > +}; Probably get rid of disabled and call it _ENABLE so it is actualy a flag Jason