On Tue, Feb 25, 2025 at 12:02:25PM -0400, Jason Gunthorpe wrote:
On Mon, Feb 24, 2025 at 03:45:33PM -0800, Nicolin Chen wrote:
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-iommufd.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-iommufd.c @@ -95,8 +95,6 @@ int arm_smmu_attach_prepare_vmaster(struct arm_smmu_attach_state *state, iommu_group_mutex_assert(state->master->dev);
- if (domain->type != IOMMU_DOMAIN_NESTED)
nested_domain = to_smmu_nested_domain(domain);return 0;
/* Skip invalid vSTE */ @@ -122,19 +120,9 @@ void arm_smmu_attach_commit_vmaster(struct arm_smmu_attach_state *state) { struct arm_smmu_master *master = state->master;
- mutex_lock(&master->smmu->streams_mutex);
- if (state->vmaster != master->vmaster) {
kfree(master->vmaster);
master->vmaster = state->vmaster;
- }
- mutex_unlock(&master->smmu->streams_mutex);
-}
-void arm_smmu_master_clear_vmaster(struct arm_smmu_master *master) -{ mutex_lock(&master->smmu->streams_mutex); kfree(master->vmaster);
- master->vmaster = NULL;
- master->vmaster = state->vmaster; mutex_unlock(&master->smmu->streams_mutex);
}
I'd leave the clear_vmaster just for clarity. Commit should not be unpaired with prepare in the other functions.
Ack. I'd like to pair prepare and commit as well. I'm just confused about the check if (state->vmaster != master->vmaster). Maybe a helpful comment about what are we checking for would make things cleaner.
With this nit:
Reviewed-by: Pranjal Shrivastavat praan@google.com
Thanks, Praan