2004-01-23 06:48:49

by Dave Jones

[permalink] [raw]
Subject: DMI updates from 2.4

A lot of the blacklists never made it forward, here's what I found
still lying around in my old 2.5 tree when I brought it up to date.

I think 2.4 has had more updates since then (and there may be
some entries languishing in vendor 2.4 trees), I'll take a peek
when I get some spare cycles.

Dave


diff -urpN --exclude-from=/home/davej/.exclude bk-linus/arch/i386/kernel/apm.c linux-2.5/arch/i386/kernel/apm.c
--- bk-linus/arch/i386/kernel/apm.c 2004-01-21 15:58:34.000000000 +0000
+++ linux-2.5/arch/i386/kernel/apm.c 2004-01-21 17:46:22.000000000 +0000
@@ -844,6 +844,8 @@ recalc:
idle_percentage *= 100;
idle_percentage /= jiffies_since_last_check;
use_apm_idle = (idle_percentage > idle_threshold);
+ if (apm_info.forbid_idle)
+ use_apm_idle = 0;
last_jiffies = jiffies;
last_stime = current->stime;
}
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/arch/i386/kernel/dmi_scan.c linux-2.5/arch/i386/kernel/dmi_scan.c
--- bk-linus/arch/i386/kernel/dmi_scan.c 2004-01-20 16:42:06.000000000 +0000
+++ linux-2.5/arch/i386/kernel/dmi_scan.c 2004-01-21 17:46:22.000000000 +0000
@@ -283,6 +283,30 @@ static __init int apm_is_horked(struct d
return 0;
}

+static __init int apm_is_horked_d850md(struct dmi_blacklist *d)
+{
+ if (apm_info.disabled == 0) {
+ apm_info.disabled = 1;
+ printk(KERN_INFO "%s machine detected. Disabling APM.\n", d->ident);
+ printk(KERN_INFO "This bug is fixed in bios P15 which is available for \n");
+ printk(KERN_INFO "download from support.intel.com \n");
+ }
+ return 0;
+}
+
+/*
+ * Some APM bioses hang on APM idle calls
+ */
+
+static __init int apm_likes_to_melt(struct dmi_blacklist *d)
+{
+ if (apm_info.forbid_idle == 0) {
+ apm_info.forbid_idle = 1;
+ printk(KERN_INFO "%s machine detected. Disabling APM idle calls.\n", d->ident);
+ }
+ return 0;
+}
+
/*
* Some machines, usually laptops, can't handle an enabled local APIC.
* The symptoms include hangs or reboots when suspending or resuming,
@@ -558,6 +582,22 @@ static __initdata struct dmi_blacklist d
MATCH(DMI_PRODUCT_NAME, "Latitude C600"),
NO_MATCH, NO_MATCH
} },
+ { set_apm_ints, "Dell Latitude", { /* Allow interrupts during suspend on Dell Latitude laptops*/
+ MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ MATCH(DMI_PRODUCT_NAME, "Latitude C510"),
+ NO_MATCH, NO_MATCH
+ } },
+ { apm_is_horked, "Dell Inspiron 2500", { /* APM crashes */
+ MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ MATCH(DMI_PRODUCT_NAME, "Inspiron 2500"),
+ MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
+ MATCH(DMI_BIOS_VERSION,"A11")
+ } },
+ { set_apm_ints, "Dell Inspiron", { /* Allow interrupts during suspend on Dell Inspiron laptops*/
+ MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ MATCH(DMI_PRODUCT_NAME, "Inspiron 4000"),
+ NO_MATCH, NO_MATCH
+ } },
{ broken_apm_power, "Dell Inspiron 5000e", { /* Handle problems with APM on Inspiron 5000e */
MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
MATCH(DMI_BIOS_VERSION, "A04"),
@@ -568,6 +608,12 @@ static __initdata struct dmi_blacklist d
MATCH(DMI_BIOS_VERSION, "A12"),
MATCH(DMI_BIOS_DATE, "02/04/2002"), NO_MATCH
} },
+ { apm_is_horked, "Dell Dimension 4100", { /* APM crashes */
+ MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
+ MATCH(DMI_PRODUCT_NAME, "XPS-Z"),
+ MATCH(DMI_BIOS_VENDOR,"Intel Corp."),
+ MATCH(DMI_BIOS_VERSION,"A11")
+ } },
{ set_realmode_power_off, "Award Software v4.60 PGMA", { /* broken PM poweroff bios */
MATCH(DMI_BIOS_VENDOR, "Award Software International, Inc."),
MATCH(DMI_BIOS_VERSION, "4.60 PGMA"),
@@ -578,21 +624,16 @@ static __initdata struct dmi_blacklist d
MATCH(DMI_PRODUCT_NAME, "PowerEdge 1300/"),
NO_MATCH, NO_MATCH
} },
- { set_bios_reboot, "Dell PowerEdge 300", { /* Handle problems with rebooting on Dell 1300's */
+ { set_bios_reboot, "Dell PowerEdge 300", { /* Handle problems with rebooting on Dell 300's */
MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
MATCH(DMI_PRODUCT_NAME, "PowerEdge 300/"),
NO_MATCH, NO_MATCH
} },
- { set_bios_reboot, "Dell PowerEdge 2400", { /* Handle problems with rebooting on Dell 300/800's */
+ { set_bios_reboot, "Dell PowerEdge 2400", { /* Handle problems with rebooting on Dell 2400's */
MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
MATCH(DMI_PRODUCT_NAME, "PowerEdge 2400"),
NO_MATCH, NO_MATCH
} },
- { set_apm_ints, "Dell Inspiron", { /* Allow interrupts during suspend on Dell Inspiron laptops*/
- MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
- MATCH(DMI_PRODUCT_NAME, "Inspiron 4000"),
- NO_MATCH, NO_MATCH
- } },
{ set_apm_ints, "Compaq 12XL125", { /* Allow interrupts during suspend on Compaq Laptops*/
MATCH(DMI_SYS_VENDOR, "Compaq"),
MATCH(DMI_PRODUCT_NAME, "Compaq PC"),
@@ -647,6 +688,16 @@ static __initdata struct dmi_blacklist d
MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
MATCH(DMI_BIOS_VERSION,"A11")
} },
+ { apm_likes_to_melt, "Jabil AMD", { /* APM idle hangs */
+ MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
+ MATCH(DMI_BIOS_VERSION, "0AASNP06"),
+ NO_MATCH, NO_MATCH,
+ } },
+ { apm_likes_to_melt, "AMI Bios", { /* APM idle hangs */
+ MATCH(DMI_BIOS_VENDOR, "American Megatrends Inc."),
+ MATCH(DMI_BIOS_VERSION, "0AASNP05"),
+ NO_MATCH, NO_MATCH,
+ } },
{ sony_vaio_laptop, "Sony Vaio", { /* This is a Sony Vaio laptop */
MATCH(DMI_SYS_VENDOR, "Sony Corporation"),
MATCH(DMI_PRODUCT_NAME, "PCG-"),
@@ -777,6 +828,11 @@ static __initdata struct dmi_blacklist d
} },
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
+ MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0115.P12"),
+ NO_MATCH, NO_MATCH
+ } },
+ { broken_pirq, "l44GX Bios", { /* Bad $PIR */
+ MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0120.P12"),
NO_MATCH, NO_MATCH
} },
@@ -790,6 +846,12 @@ static __initdata struct dmi_blacklist d
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0066.P07.9906041405"),
NO_MATCH, NO_MATCH
} },
+
+ { broken_pirq, "IBM xseries 370", { /* Bad $PIR */
+ MATCH(DMI_BIOS_VENDOR, "IBM"),
+ MATCH(DMI_BIOS_VERSION,"MMKT33AUS"),
+ NO_MATCH, NO_MATCH
+ } },

/* Intel in disguise - In this case they can't hide and they don't run
too well either... */
diff -urpN --exclude-from=/home/davej/.exclude bk-linus/include/linux/apm_bios.h linux-2.5/include/linux/apm_bios.h
--- bk-linus/include/linux/apm_bios.h 2003-09-29 20:09:11.000000000 +0100
+++ linux-2.5/include/linux/apm_bios.h 2003-09-29 20:13:03.000000000 +0100
@@ -53,6 +53,7 @@ struct apm_info {
int get_power_status_broken;
int get_power_status_swabinminutes;
int allow_ints;
+ int forbid_idle;
int realmode_power_off;
int disabled;
};


2004-01-23 07:36:49

by Andrew Morton

[permalink] [raw]
Subject: Re: DMI updates from 2.4

[email protected] wrote:
>
> +static __init int apm_is_horked_d850md(struct dmi_blacklist *d)

this new function is unreferenced.

2004-01-23 07:50:24

by Dave Jones

[permalink] [raw]
Subject: Re: DMI updates from 2.4

On Thu, Jan 22, 2004 at 11:37:34PM -0800, Andrew Morton wrote:
> [email protected] wrote:
> >
> > +static __init int apm_is_horked_d850md(struct dmi_blacklist *d)
>
> this new function is unreferenced.

ok, I'll chase that one down later.

Dave

2004-01-23 13:33:00

by Matt Domsch

[permalink] [raw]
Subject: Re: DMI updates from 2.4

> + { set_apm_ints, "Dell Latitude", { /* Allow interrupts during suspend on Dell Latitude laptops*/
> + MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
> + MATCH(DMI_PRODUCT_NAME, "Latitude C510"),
> + NO_MATCH, NO_MATCH
> + } },
> + { apm_is_horked, "Dell Inspiron 2500", { /* APM crashes */
> + MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
> + MATCH(DMI_PRODUCT_NAME, "Inspiron 2500"),
> + MATCH(DMI_BIOS_VENDOR,"Phoenix Technologies LTD"),
> + MATCH(DMI_BIOS_VERSION,"A11")
> + } },
> + { set_apm_ints, "Dell Inspiron", { /* Allow interrupts during suspend on Dell Inspiron laptops*/
> + MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
> + MATCH(DMI_PRODUCT_NAME, "Inspiron 4000"),
> + NO_MATCH, NO_MATCH
> + } },
> { broken_apm_power, "Dell Inspiron 5000e", { /* Handle problems with APM on Inspiron 5000e */
> MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
> MATCH(DMI_BIOS_VERSION, "A04"),
> @@ -568,6 +608,12 @@ static __initdata struct dmi_blacklist d
> MATCH(DMI_BIOS_VERSION, "A12"),
> MATCH(DMI_BIOS_DATE, "02/04/2002"), NO_MATCH
> } },
> + { apm_is_horked, "Dell Dimension 4100", { /* APM crashes */
> + MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
> + MATCH(DMI_PRODUCT_NAME, "XPS-Z"),
> + MATCH(DMI_BIOS_VENDOR,"Intel Corp."),
> + MATCH(DMI_BIOS_VERSION,"A11")
> + } },
> - { set_apm_ints, "Dell Inspiron", { /* Allow interrupts during suspend on Dell Inspiron laptops*/
> - MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
> - MATCH(DMI_PRODUCT_NAME, "Inspiron 4000"),
> - NO_MATCH, NO_MATCH
> - } },


For Dell desktops/notebooks, if someone can provide me with details
regarding BIOS crashes (more than "it's horked", but how it's horked,
and if it's clearly like an ACPI table that's wrong and can be shown
how), I've got the ears of the BIOS guys (being held in jars on
my desk). They're getting tired of hearing on the discussion boards
"Dell BIOSses are broken".

Of course, I take reports of server and workstation BIOS problems too.

Thanks,
Matt

--
Matt Domsch
Sr. Software Engineer, Lead Engineer
Dell Linux Solutions http://www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com

2004-01-23 15:18:16

by Bruno Ducrot

[permalink] [raw]
Subject: Re: DMI updates from 2.4

On Fri, Jan 23, 2004 at 07:32:50AM -0600, Matt Domsch wrote:
> For Dell desktops/notebooks, if someone can provide me with details
> regarding BIOS crashes (more than "it's horked", but how it's horked,
> and if it's clearly like an ACPI table that's wrong and can be shown
> how), I've got the ears of the BIOS guys (being held in jars on
> my desk). They're getting tired of hearing on the discussion boards
> "Dell BIOSses are broken".
>
> Of course, I take reports of server and workstation BIOS problems too.
>

That fine. I searched someone from Dell for this kind of issues (note
that I can only report ACPI related problems in general, not APM).


--
Ducrot Bruno

-- Which is worse: ignorance or apathy?
-- Don't know. Don't care.

2004-01-23 21:32:57

by Dave Jones

[permalink] [raw]
Subject: Re: DMI updates from 2.4

On Fri, Jan 23, 2004 at 07:48:57AM +0000, Dave Jones wrote:
> On Thu, Jan 22, 2004 at 11:37:34PM -0800, Andrew Morton wrote:
> > [email protected] wrote:
> > >
> > > +static __init int apm_is_horked_d850md(struct dmi_blacklist *d)
> >
> > this new function is unreferenced.
>
> ok, I'll chase that one down later.

fix0red..

Made to match that in 2.4

Dave

# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1153 -> 1.1154
# arch/i386/kernel/dmi_scan.c 1.48 -> 1.49
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 04/01/23 [email protected] 1.1154
# wire up dmi string
# --------------------------------------------
#
diff -Nru a/arch/i386/kernel/dmi_scan.c b/arch/i386/kernel/dmi_scan.c
--- a/arch/i386/kernel/dmi_scan.c Fri Jan 23 21:30:50 2004
+++ b/arch/i386/kernel/dmi_scan.c Fri Jan 23 21:30:50 2004
@@ -660,7 +660,7 @@
MATCH(DMI_BIOS_VERSION, "Version1.01"),
NO_MATCH, NO_MATCH,
} },
- { apm_is_horked, "Intel D850MD", { /* APM crashes */
+ { apm_is_horked_d850md, "Intel D850MD", { /* APM crashes */
MATCH(DMI_BIOS_VENDOR, "Intel Corp."),
MATCH(DMI_BIOS_VERSION, "MV85010A.86A.0016.P07.0201251536"),
NO_MATCH, NO_MATCH,