]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
iommu/amd: Fix alias device DTE setting
authorVasant Hegde <vasant.hegde@amd.com>
Thu, 11 Sep 2025 13:14:06 +0000 (13:14 +0000)
committerJoerg Roedel <joerg.roedel@amd.com>
Sat, 13 Sep 2025 06:11:30 +0000 (08:11 +0200)
Commit 7bea695ada0 restructured DTE flag handling but inadvertently changed
the alias device configuration logic. This may cause incorrect DTE settings
for certain devices.

Add alias flag check before calling set_dev_entry_from_acpi(). Also move the
device iteration loop inside the alias check to restrict execution to cases
where alias devices are present.

Fixes: 7bea695ada0 ("iommu/amd: Introduce struct ivhd_dte_flags to store persistent DTE flags")
Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Signed-off-by: Vasant Hegde <vasant.hegde@amd.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
drivers/iommu/amd/init.c

index 6795326a6524b80d1c91b4c0621a8126a2de994b..ba9e582a8bbe5d17517a31241248443207164b09 100644 (file)
@@ -1455,12 +1455,12 @@ static int __init init_iommu_from_acpi(struct amd_iommu *iommu,
                                    PCI_FUNC(e->devid));
 
                        devid = e->devid;
-                       for (dev_i = devid_start; dev_i <= devid; ++dev_i) {
-                               if (alias)
+                       if (alias) {
+                               for (dev_i = devid_start; dev_i <= devid; ++dev_i)
                                        pci_seg->alias_table[dev_i] = devid_to;
+                               set_dev_entry_from_acpi(iommu, devid_to, flags, ext_flags);
                        }
                        set_dev_entry_from_acpi_range(iommu, devid_start, devid, flags, ext_flags);
-                       set_dev_entry_from_acpi(iommu, devid_to, flags, ext_flags);
                        break;
                case IVHD_DEV_SPECIAL: {
                        u8 handle, type;