iommu/arm-smmu-v3: Make arm_smmu_alloc_cd_ptr()
authorJason Gunthorpe <jgg@nvidia.com>
Tue, 30 Apr 2024 17:21:37 +0000 (14:21 -0300)
committerWill Deacon <will@kernel.org>
Wed, 1 May 2024 14:33:52 +0000 (15:33 +0100)
commitb2f4c0fcf094dacd2d1fb96a6fd6598919501589
tree858ecc8558174bcd45ba78a45154ac357a1f76f5
parentaf8f0b83ea2bcc7cd365c32044f31bdadc07c351
iommu/arm-smmu-v3: Make arm_smmu_alloc_cd_ptr()

Only the attach callers can perform an allocation for the CD table entry,
the other callers must not do so, they do not have the correct locking and
they cannot sleep. Split up the functions so this is clear.

arm_smmu_get_cd_ptr() will return pointer to a CD table entry without
doing any kind of allocation.

arm_smmu_alloc_cd_ptr() will allocate the table and any required
leaf.

A following patch will add lockdep assertions to arm_smmu_alloc_cd_ptr()
once the restructuring is completed and arm_smmu_alloc_cd_ptr() is never
called in the wrong context.

Tested-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/5-v9-5040dc602008+177d7-smmuv3_newapi_p2_jgg@nvidia.com
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h