aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2010-04-03 14:38:43 -0400
committerDavid Woodhouse <David.Woodhouse@intel.com>2010-05-19 03:38:11 -0400
commitfd0c8894893cba722bdea12de25b49f980795d06 (patch)
tree1101c32f0c154df0255252ea8bfc1be3dbb74184
parent3a8663ee6171e1e61f5c139ed65aa0a769380f00 (diff)
intel-iommu: Set a more specific taint flag for invalid BIOS DMAR tables
We now know how to deal with these tables so that they are harmless. Set TAINT_FIRMWARE_WORKAROUND instead of the default TAINT_WARN. Signed-off-by: Ben Hutchings <ben@decadent.org.uk> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r--drivers/pci/dmar.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index 1959cdadad51..f4c51709d132 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -360,12 +360,14 @@ dmar_parse_one_rhsa(struct acpi_dmar_header *header)
360 return 0; 360 return 0;
361 } 361 }
362 } 362 }
363 WARN(1, "Your BIOS is broken; RHSA refers to non-existent DMAR unit at %llx\n" 363 WARN_TAINT(
364 "BIOS vendor: %s; Ver: %s; Product Version: %s\n", 364 1, TAINT_FIRMWARE_WORKAROUND,
365 drhd->reg_base_addr, 365 "Your BIOS is broken; RHSA refers to non-existent DMAR unit at %llx\n"
366 dmi_get_system_info(DMI_BIOS_VENDOR), 366 "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
367 dmi_get_system_info(DMI_BIOS_VERSION), 367 drhd->reg_base_addr,
368 dmi_get_system_info(DMI_PRODUCT_VERSION)); 368 dmi_get_system_info(DMI_BIOS_VENDOR),
369 dmi_get_system_info(DMI_BIOS_VERSION),
370 dmi_get_system_info(DMI_PRODUCT_VERSION));
369 371
370 return 0; 372 return 0;
371} 373}
@@ -620,12 +622,14 @@ int __init dmar_table_init(void)
620 622
621static void warn_invalid_dmar(u64 addr, const char *message) 623static void warn_invalid_dmar(u64 addr, const char *message)
622{ 624{
623 WARN_ONCE(1, "Your BIOS is broken; DMAR reported at address %llx%s!\n" 625 WARN_TAINT_ONCE(
624 "BIOS vendor: %s; Ver: %s; Product Version: %s\n", 626 1, TAINT_FIRMWARE_WORKAROUND,
625 addr, message, 627 "Your BIOS is broken; DMAR reported at address %llx%s!\n"
626 dmi_get_system_info(DMI_BIOS_VENDOR), 628 "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
627 dmi_get_system_info(DMI_BIOS_VERSION), 629 addr, message,
628 dmi_get_system_info(DMI_PRODUCT_VERSION)); 630 dmi_get_system_info(DMI_BIOS_VENDOR),
631 dmi_get_system_info(DMI_BIOS_VERSION),
632 dmi_get_system_info(DMI_PRODUCT_VERSION));
629} 633}
630 634
631int __init check_zero_address(void) 635int __init check_zero_address(void)