Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 30 Jan 2023 12:53:58 -0800 | From | Nicolin Chen <> | Subject | Re: [PATCH v2 1/3] iommufd: Add devices_users to track the hw_pagetable usage by device |
| |
On Mon, Jan 30, 2023 at 04:35:35PM -0400, Jason Gunthorpe wrote: > On Mon, Jan 30, 2023 at 12:04:33PM -0800, Nicolin Chen wrote: > > > I recall we've discussed this that SMMU sets up domain when it > > attaches the device to, so we made a compromise here... > > The ARM driver has a problem that it doesn't know what SMMU instance > will host the domain when it is allocated so it doesn't know if it > should select a S1 or S2 page table format - which is determined by > the capabilities of the specific SMMU HW block. > > However, we don't have this problem when creating the S2. The S2 > should be created by a special alloc_domain_iommufd() asking for the > S2 format. Not only does the new alloc_domain_iommufd API directly > request a S2 format table, but it also specifies the struct device so > any residual details can be determined directly. > > Thus there is no need to do the two stage process when working with > the S2.
Ah, right! Taking a quick look, we should be able to call that arm_smmu_domain_finalise when handling alloc_domain_iommufd().
> So fixup the driver to create fully configured iommu_domain's > immediately and get rid of this problem.
OK. I will draft a patch today.
> IMHO I would structure the smmu driver so that all the different > iommu_domain formats have their own ops pointer. The special > "undecided" format would have a special ops with only attach_dev and > at first attach it would switch the ops to whatever format it > selected. > > I think this could get rid of a lot of the 'if undecided/S1/S2/CD' > complexity all over the place. You know what type it is because you > were called on a op that is only called on its type.
I see. I can try that as well. Hopefully it won't touch too many places that cam raise a potential big concern/objection..
Thanks Nicolin
| ![\](/images/icornerr.gif) |