From: Ben Hutchings on
We now know how to deal with these tables so that they are harmless.
Use the TAINT_FIRMWARE_WORKAROUND flag and don't say the BIOS is
'broken' as this makes users think of hardware damage.

Signed-off-by: Ben Hutchings <ben(a)decadent.org.uk>
---
drivers/pci/dmar.c | 13 +++++++------
1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/pci/dmar.c b/drivers/pci/dmar.c
index f101057..8aa31c2 100644
--- a/drivers/pci/dmar.c
+++ b/drivers/pci/dmar.c
@@ -615,12 +615,13 @@ int __init dmar_table_init(void)

static void warn_invalid_dmar(u64 addr, const char *message)
{
- WARN_ONCE(1, "Your BIOS is broken; DMAR reported at address %llx%s!\n"
- "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
- addr, message,
- dmi_get_system_info(DMI_BIOS_VENDOR),
- dmi_get_system_info(DMI_BIOS_VERSION),
- dmi_get_system_info(DMI_PRODUCT_VERSION));
+ WARN_TAINT_ONCE(1, TAINT_FIRMWARE_WORKAROUND,
+ "BIOS bug: DMAR reported at address %llx%s!\n"
+ "BIOS vendor: %s; Ver: %s; Product Version: %s\n",
+ addr, message,
+ dmi_get_system_info(DMI_BIOS_VENDOR),
+ dmi_get_system_info(DMI_BIOS_VERSION),
+ dmi_get_system_info(DMI_PRODUCT_VERSION));
}

int __init check_zero_address(void)
--
1.7.0