On Fri, Aug 30, 2024 at 03:19:16PM +0000, Mostafa Saleh wrote: > > @@ -2263,6 +2266,28 @@ static bool arm_smmu_capable(struct device *dev, enum iommu_cap cap) > > } > > } > > > > +static bool arm_smmu_enforce_cache_coherency(struct iommu_domain *domain) > > +{ > > + struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); > > + struct arm_smmu_master_domain *master_domain; > > + unsigned long flags; > > + bool ret = false; > nit: we can avoid the goto, if we inverse the logic of ret (and set it > to false if device doesn't support CANWBS) Yeah, that is tidier: static bool arm_smmu_enforce_cache_coherency(struct iommu_domain *domain) { struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); struct arm_smmu_master_domain *master_domain; unsigned long flags; bool ret = true; spin_lock_irqsave(&smmu_domain->devices_lock, flags); list_for_each_entry(master_domain, &smmu_domain->devices, devices_elm) { if (!arm_smmu_master_canwbs(master_domain->master)) { ret = false; break; } } smmu_domain->enforce_cache_coherency = ret; spin_unlock_irqrestore(&smmu_domain->devices_lock, flags); return ret; } Thanks, Jason