> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Tuesday, August 27, 2024 11:52 PM > > @@ -4189,6 +4193,13 @@ static int arm_smmu_device_hw_probe(struct > arm_smmu_device *smmu) > > /* IDR3 */ > reg = readl_relaxed(smmu->base + ARM_SMMU_IDR3); > + /* > + * If for some reason the HW does not support DMA coherency then > using > + * S2FWB won't work. This will also disable nesting support. > + */ > + if (FIELD_GET(IDR3_FWB, reg) && > + (smmu->features & ARM_SMMU_FEAT_COHERENCY)) > + smmu->features |= ARM_SMMU_FEAT_S2FWB; > if (FIELD_GET(IDR3_RIL, reg)) > smmu->features |= ARM_SMMU_FEAT_RANGE_INV; then also clear ARM_SMMU_FEAT_NESTING?