On Wed, Nov 30, 2022 at 11:06:51PM +0800, Binbin Wu wrote: > > +iommufd_ioas serves as the metadata datastructure to manage how IOVA ranges are > > +mapped to memory pages, composed of: > > + > > +- struct io_pagetable holding the IOVA map > > +- struct iopt_areas > > The struct name should be iopt_area, adding "s" is a typo or intented for > plural? Yes, plural, I'll add a quote: - struct iopt_area's representing populated portions of IOVA > > representing populated portions of IOVA > > +- struct iopt_pages representing the storage of PFNs > > +- struct iommu_domain representing the IO page table in the IOMMU > > +- struct iopt_pages_access representing in-kernel users of PFNs > > +- struct xarray pinned_pfns holding a list of pages pinned by in-kernel users > > + > > +Each iopt_pages represents a logical linear array of full PFNs. The PFNs are > > +ultimately derived from userspave > > typo, userspave -> userspace > > > > VAs via an mm_struct. Once they have been > > +pinned the PFNs are stored in IOPTEs of an iommu_domain or inside the pinned_pages > > pinned_pages -> pinned_pfns? Yep Got all the other stuff too! Thanks, Jason