iommu/vt-d: Fix the wrong printing in RHSA parsing
authorZhenzhong Duan <zhenzhong.duan@gmail.com>
Thu, 12 Mar 2020 06:09:54 +0000 (14:09 +0800)
committerJoerg Roedel <jroedel@suse.de>
Sat, 14 Mar 2020 08:37:58 +0000 (09:37 +0100)
When base address in RHSA structure doesn't match base address in
each DRHD structure, the base address in last DRHD is printed out.

This doesn't make sense when there are multiple DRHD units, fix it
by printing the buggy RHSA's base address.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@gmail.com>
Fixes: fd0c8894893cb ("intel-iommu: Set a more specific taint flag for invalid BIOS DMAR tables")
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/dmar.c

index c000ddff822eb23521d24c117d77349e8afb419b..c7b1461e8d0abe00560163aff5276a6c386e67e4 100644 (file)
@@ -476,7 +476,7 @@ static int dmar_parse_one_rhsa(struct acpi_dmar_header *header, void *arg)
        pr_warn(FW_BUG
                "Your BIOS is broken; RHSA refers to non-existent DMAR unit at %llx\n"
                "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
-               drhd->reg_base_addr,
+               rhsa->base_address,
                dmi_get_system_info(DMI_BIOS_VENDOR),
                dmi_get_system_info(DMI_BIOS_VERSION),
                dmi_get_system_info(DMI_PRODUCT_VERSION));