[PATCH 7/8] 2.6.3-rc3-mm1, Port PnP BIOS driver to new DMI probing

From: Andrey Panin
Date: Fri May 07 2004 - 03:48:20 EST


diff -urpN -X /usr/share/dontdiff linux-2.6.6-rc3-mm1.vanulla/arch/i386/kernel/dmi_scan.c linux-2.6.6-rc3-mm1/arch/i386/kernel/dmi_scan.c
--- linux-2.6.6-rc3-mm1.vanulla/arch/i386/kernel/dmi_scan.c 2004-05-07 12:00:29.000000000 +0400
+++ linux-2.6.6-rc3-mm1/arch/i386/kernel/dmi_scan.c 2004-05-07 11:54:35.000000000 +0400
@@ -262,17 +262,6 @@ static __init int reset_videomode_after_
}
#endif

-/*
- * Exploding PnPBIOS. Don't yet know if its the BIOS or us for
- * some entries
- */
-
-static __init int exploding_pnp_bios(struct dmi_system_id *d)
-{
- printk(KERN_WARNING "%s detected. Disabling PnPBIOS\n", d->ident);
- dmi_broken |= BROKEN_PNP_BIOS;
- return 0;
-}

static __init int acer_cpufreq_pst(struct dmi_system_id *d)
{
@@ -369,17 +358,6 @@ static __initdata struct dmi_system_id d
DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
} },

- { exploding_pnp_bios, "Higraded P14H", { /* PnPBIOS GPF on boot */
- DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
- DMI_MATCH(DMI_BIOS_VERSION, "07.00T"),
- DMI_MATCH(DMI_SYS_VENDOR, "Higraded"),
- DMI_MATCH(DMI_PRODUCT_NAME, "P14H")
- } },
- { exploding_pnp_bios, "ASUS P4P800", { /* PnPBIOS GPF on boot */
- DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc."),
- DMI_MATCH(DMI_BOARD_NAME, "P4P800"),
- } },
-
/* Machines which have problems handling enabled local APICs */

{ local_apic_kills_bios, "Dell Inspiron", {
diff -urpN -X /usr/share/dontdiff linux-2.6.6-rc3-mm1.vanulla/drivers/pnp/pnpbios/core.c linux-2.6.6-rc3-mm1/drivers/pnp/pnpbios/core.c
--- linux-2.6.6-rc3-mm1.vanulla/drivers/pnp/pnpbios/core.c 2004-04-04 07:36:15.000000000 +0400
+++ linux-2.6.6-rc3-mm1/drivers/pnp/pnpbios/core.c 2004-05-07 11:56:59.000000000 +0400
@@ -62,6 +62,7 @@
#include <linux/kmod.h>
#include <linux/completion.h>
#include <linux/spinlock.h>
+#include <linux/dmi.h>
#include <asm/system.h>
#include <asm/byteorder.h>

@@ -498,10 +499,39 @@ int __init pnpbios_probe_system(void)
return 0;
}

+static int __init exploding_pnp_bios(struct dmi_system_id *d)
+{
+ printk(KERN_WARNING "%s detected. Disabling PnPBIOS\n", d->ident);
+ return 0;
+}
+
+static struct dmi_system_id pnpbios_dmi_table[] = {
+ { /* PnPBIOS GPF on boot */
+ .callback = exploding_pnp_bios,
+ .ident = "Higraded P14H",
+ .matches = {
+ DMI_MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
+ DMI_MATCH(DMI_BIOS_VERSION, "07.00T"),
+ DMI_MATCH(DMI_SYS_VENDOR, "Higraded"),
+ DMI_MATCH(DMI_PRODUCT_NAME, "P14H"),
+ },
+ },
+ { /* PnPBIOS GPF on boot */
+ .callback = exploding_pnp_bios,
+ .ident = "ASUS P4P800",
+ .matches = {
+ DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK Computer Inc."),
+ DMI_MATCH(DMI_BOARD_NAME, "P4P800"),
+ },
+ },
+ { }
+};
+
int __init pnpbios_init(void)
{
int ret;
- if(pnpbios_disabled || (dmi_broken & BROKEN_PNP_BIOS)) {
+
+ if (pnpbios_disabled || dmi_check_system(pnpbios_dmi_table)) {
printk(KERN_INFO "PnPBIOS: Disabled\n");
return -ENODEV;
}

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/