]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu/arm-smmu-v3: Add missing S2FWB feature detection
authorAneesh Kumar K.V (Arm) <aneesh.kumar@kernel.org>
Tue, 8 Apr 2025 03:33:51 +0000 (09:03 +0530)
committerWill Deacon <will@kernel.org>
Thu, 17 Apr 2025 11:25:34 +0000 (12:25 +0100)
Commit 67e4fe398513 ("iommu/arm-smmu-v3: Use S2FWB for NESTED domains")
introduced S2FWB usage but omitted the corresponding feature detection.
As a result, vIOMMU allocation fails on FVP in arm_vsmmu_alloc(), due to
the following check:

if (!arm_smmu_master_canwbs(master) &&
    !(smmu->features & ARM_SMMU_FEAT_S2FWB))
return ERR_PTR(-EOPNOTSUPP);

This patch adds the missing detection logic to prevent allocation
failure when S2FWB is supported.

Fixes: 67e4fe398513 ("iommu/arm-smmu-v3: Use S2FWB for NESTED domains")
Signed-off-by: Aneesh Kumar K.V (Arm) <aneesh.kumar@kernel.org>
Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
Reviewed-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Pranjal Shrivastava <praan@google.com>
Link: https://lore.kernel.org/r/20250408033351.1012411-1-aneesh.kumar@kernel.org
Signed-off-by: Will Deacon <will@kernel.org>
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c

index b4c21aaed1266a025167e03a7e616c6bdc7a6c66..5467f85dd4631a7391b8016f582d84ec360be81e 100644 (file)
@@ -4429,6 +4429,8 @@ static int arm_smmu_device_hw_probe(struct arm_smmu_device *smmu)
        reg = readl_relaxed(smmu->base + ARM_SMMU_IDR3);
        if (FIELD_GET(IDR3_RIL, reg))
                smmu->features |= ARM_SMMU_FEAT_RANGE_INV;
+       if (FIELD_GET(IDR3_FWB, reg))
+               smmu->features |= ARM_SMMU_FEAT_S2FWB;
 
        /* IDR5 */
        reg = readl_relaxed(smmu->base + ARM_SMMU_IDR5);