[PATCH v3 2/4] iommu/io-pgtable-arm: Add read_and_clear_dirty() support

Tian, Kevin kevin.tian at intel.com
Sun May 26 18:21:14 PDT 2024


> From: Jason Gunthorpe <jgg at nvidia.com>
> Sent: Friday, May 24, 2024 10:08 PM
> 
> On Fri, May 24, 2024 at 12:30:22PM +0100, Joao Martins wrote:
> > On 23/05/2024 04:30, Tian, Kevin wrote:
> > >> From: Jason Gunthorpe <jgg at nvidia.com>
> > >> Sent: Thursday, May 23, 2024 1:51 AM
> > >>
> > >> diff --git a/drivers/iommu/iommufd/iommufd_private.h
> > >> b/drivers/iommu/iommufd/iommufd_private.h
> > >> index 991f864d1f9bc1..de3761e15cab54 100644
> > >> --- a/drivers/iommu/iommufd/iommufd_private.h
> > >> +++ b/drivers/iommu/iommufd/iommufd_private.h
> > >> @@ -52,6 +52,7 @@ struct io_pagetable {
> > >>  	/* IOVA that cannot be allocated, struct iopt_reserved */
> > >>  	struct rb_root_cached reserved_itree;
> > >>  	u8 disable_large_pages;
> > >> +	u8 dirty_tracking_enabled;
> > >>  	unsigned long iova_alignment;
> > >>  };
> > >>
> > >
> > > should it be a hwpt flag instead?
> > >
> >
> > Most of this deals with iopt locks and walking iopt areas to clear dirty. So
> > this being a iopt attribute looks cleaner in implementation. But I think I see
> > your point suggestion considering it represents a iommu domain property.
> 
> Yeah, the original idea of the hwpt/iopt split was to keep code that
> was principly iommu_domain related away from the code which was
> principally attachment and lifetime related. Since this value is
> covered by iopt locks it makes sense in this struct.
> 
> Not sure the split will stand the test of time as we keep finding
> reasons to muddle the boundary :\
> 

emmm there could be multiple domains under a iopt while the dirty
tracking toggling must be done per domain.

with a iopt flag like this only the 1st domain under the iopt will be
properly configured?



More information about the linux-arm-kernel mailing list