static struct pci_driver piix4_driver;
 static struct i2c_adapter piix4_adapter;
 
-static struct dmi_system_id __devinitdata piix4_dmi_table[] = {
+static struct dmi_system_id __devinitdata piix4_dmi_blacklist[] = {
+       {
+               .ident = "Sapphire AM2RD790",
+               .matches = {
+                       DMI_MATCH(DMI_BOARD_VENDOR, "SAPPHIRE Inc."),
+                       DMI_MATCH(DMI_BOARD_NAME, "PC-AM2RD790"),
+               },
+       },
+       {
+               .ident = "DFI Lanparty UT 790FX",
+               .matches = {
+                       DMI_MATCH(DMI_BOARD_VENDOR, "DFI Inc."),
+                       DMI_MATCH(DMI_BOARD_NAME, "LP UT 790FX"),
+               },
+       },
+       { }
+};
+
+/* The IBM entry is in a separate table because we only check it
+   on Intel-based systems */
+static struct dmi_system_id __devinitdata piix4_dmi_ibm[] = {
        {
                .ident = "IBM",
                .matches = { DMI_MATCH(DMI_SYS_VENDOR, "IBM"), },
            (PIIX4_dev->device == PCI_DEVICE_ID_SERVERWORKS_CSB5))
                srvrworks_csb5_delay = 1;
 
+       /* On some motherboards, it was reported that accessing the SMBus
+          caused severe hardware problems */
+       if (dmi_check_system(piix4_dmi_blacklist)) {
+               dev_err(&PIIX4_dev->dev,
+                       "Accessing the SMBus on this system is unsafe!\n");
+               return -EPERM;
+       }
+
        /* Don't access SMBus on IBM systems which get corrupted eeproms */
-       if (dmi_check_system(piix4_dmi_table) &&
+       if (dmi_check_system(piix4_dmi_ibm) &&
                        PIIX4_dev->vendor == PCI_VENDOR_ID_INTEL) {
                dev_err(&PIIX4_dev->dev, "IBM system detected; this module "
                        "may corrupt your serial eeprom! Refusing to load "