aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/generate_rust_target.rs
diff options
context:
space:
mode:
authorNicolin Chen <[email protected]>2025-08-01 03:01:27 +0000
committerJoerg Roedel <[email protected]>2025-08-22 06:41:20 +0000
commit685ca577b408ffd9c5a4057a2acc0cd3e6978b36 (patch)
tree15fa147ee1c94b822566893aa4a8e12280ec8f30 /scripts/generate_rust_target.rs
parentiommu/tegra241-cmdqv: Fix missing cpu_to_le64 at lvcmdq_err_map (diff)
downloadkernel-685ca577b408ffd9c5a4057a2acc0cd3e6978b36.tar.gz
kernel-685ca577b408ffd9c5a4057a2acc0cd3e6978b36.zip
iommu/arm-smmu-v3: Fix smmu_domain->nr_ats_masters decrement
The arm_smmu_attach_commit() updates master->ats_enabled before calling arm_smmu_remove_master_domain() that is supposed to clean up everything in the old domain, including the old domain's nr_ats_masters. So, it is supposed to use the old ats_enabled state of the device, not an updated state. This isn't a problem if switching between two domains where: - old ats_enabled = false; new ats_enabled = false - old ats_enabled = true; new ats_enabled = true but can fail cases where: - old ats_enabled = false; new ats_enabled = true (old domain should keep the counter but incorrectly decreased it) - old ats_enabled = true; new ats_enabled = false (old domain needed to decrease the counter but incorrectly missed it) Update master->ats_enabled after arm_smmu_remove_master_domain() to fix this. Fixes: 7497f4211f4f ("iommu/arm-smmu-v3: Make changing domains be hitless for ATS") Cc: [email protected] Signed-off-by: Nicolin Chen <[email protected]> Acked-by: Will Deacon <[email protected]> Reviewed-by: Jason Gunthorpe <[email protected]> Reviewed-by: Pranjal Shrivastava <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Joerg Roedel <[email protected]>
Diffstat (limited to 'scripts/generate_rust_target.rs')
0 files changed, 0 insertions, 0 deletions