From: Rik van Riel The probes in i8042_enable_mux_mode, called at initialisation time, make the hpaq proliant 8500 systems reboot immediately. The system does boot with the "i8042.nomux" boot option. The following patch makes this automatic by setting the i8042_nomux variable at DMI scanning time. Signed-off-by: Andrew Morton --- 25-akpm/arch/i386/kernel/dmi_scan.c | 25 +++++++++++++++++++++++++ 25-akpm/drivers/input/serio/i8042.c | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) diff -puN arch/i386/kernel/dmi_scan.c~make-proliant-8500-boot-with-26 arch/i386/kernel/dmi_scan.c --- 25/arch/i386/kernel/dmi_scan.c~make-proliant-8500-boot-with-26 2004-05-25 20:53:11.864449848 -0700 +++ 25-akpm/arch/i386/kernel/dmi_scan.c 2004-05-25 20:53:11.870448936 -0700 @@ -401,6 +401,23 @@ static __init int sony_vaio_laptop(struc } /* + * HP Proliant 8500 systems can't use i8042 in mux mode, + * or they instantly reboot. + */ +#ifdef CONFIG_SERIO_I8042 +extern unsigned int i8042_nomux; +static __init int set_8042_nomux(struct dmi_blacklist *d) +{ + if (i8042_nomux == 0) + { + i8042_nomux = 1; + printk(KERN_INFO "Disabling i8042 mux mode\n"); + } + return 0; +} +#endif + +/* * This bios swaps the APM minute reporting bytes over (Many sony laptops * have this problem). */ @@ -924,6 +941,14 @@ static __initdata struct dmi_blacklist d MATCH(DMI_PRODUCT_NAME, "ProLiant ML350 G3"), NO_MATCH, NO_MATCH }}, +#ifdef CONFIG_SERIO_I8042 + { set_8042_nomux, "Compaq Proliant 8500", { + MATCH(DMI_SYS_VENDOR, "Compaq"), + MATCH(DMI_PRODUCT_NAME , "ProLiant"), + MATCH(DMI_PRODUCT_VERSION, "8500"), + NO_MATCH }}, +#endif + { force_acpi_ht, "Compaq Workstation W8000", { MATCH(DMI_SYS_VENDOR, "Compaq"), MATCH(DMI_PRODUCT_NAME, "Workstation W8000"), diff -puN drivers/input/serio/i8042.c~make-proliant-8500-boot-with-26 drivers/input/serio/i8042.c --- 25/drivers/input/serio/i8042.c~make-proliant-8500-boot-with-26 2004-05-25 20:53:11.865449696 -0700 +++ 25-akpm/drivers/input/serio/i8042.c 2004-05-25 20:53:11.870448936 -0700 @@ -32,7 +32,7 @@ static unsigned int i8042_noaux; module_param_named(noaux, i8042_noaux, bool, 0); MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port."); -static unsigned int i8042_nomux; +unsigned int i8042_nomux; module_param_named(nomux, i8042_nomux, bool, 0); MODULE_PARM_DESC(nomux, "Do not check whether an active multiplexing conrtoller is present."); _