From: Cory Bell <cory.bell@usa.net>
To: Patrick Mochel <mochel@osdl.org>
Cc: linux-kernel@vger.kernel.org,
Andrew Grover <andrew.grover@intel.com>,
John Clemens <john@deater.net>
Subject: Re: IRQ Routing Problem on ALi Chipset Laptop (HP Pavilion N5425)
Date: 07 Dec 2001 13:23:53 -0800 [thread overview]
Message-ID: <1007760235.10687.0.camel@localhost.localdomain> (raw)
In-Reply-To: <Pine.LNX.4.33.0112070925280.851-100000@segfault.osdlab.org>
In-Reply-To: <Pine.LNX.4.33.0112070925280.851-100000@segfault.osdlab.org>
On Fri, 2001-12-07 at 09:35, Patrick Mochel wrote:
>
> Hey there.
Hey to you too - thanks for chiming in!
> How new is this system?
Brand spankin'. About 3 weeks old. It's definitely acronym compliant
(ACPI, DMI, etc).
> If it's new (3-6 months) PCI IRQ information is probably encoded in ACPI
> AML methods. OEMs are gradually changing from the old way (PIRQ and MP
> tables, APM) to new Grand Unified Way(tm) (ACPI).
I've already noticed that APM locks the machine when "console blanking
with APM" is turned on. The ACPI semantics seem a bit bizarre (the
executable code thing), but it's worked well on (recent) laptops I've
used. Besides, new stuff is cool!
> For a while now, BIOSes have shipped with both old tables and ACPI tables,
> and in a lot of cases, one or the other lies. So, you're almost lucky in a
> sense. Unfortunately, it doesn't solve your problem.
Bizarrely enough, it seems that BOTH the $PIR table and the ACPI table
are borken (at least HP's BIOS engineers are consistent). dump_pirq
reports that 00:02 (my usb controller) is on "link" 0x59 (all the other
links are 0x00-0x03). The $PIR *mask* is correct, though (according to
it, IRQ ll is the only allowable for that slot. As you can see below,
the ACPI table seems to agree about irq 9.
ACPI: Core Subsystem version [20011205]
...
ACPI: PCI Routing Table (bus 00)
device=02 pin=00 irq=9
device=04 pin=00 irq=11
device=04 pin=01 irq=11
device=08 pin=00 irq=5
device=10 pin=00 irq=11
ACPI: PCI Routing Table (bus 01)
device=00 pin=00 irq=11
> For some reason, the people that wrote the spec encoded PCI IRQ
> information in AML (ACPI Machine Language), instead of putting them in a
> flat table. Which means you need the interpretor up and running and you
> need to execute those methods (don't ask, just nod and smile).
Nod. :>
> The Intel ACPI guys kinda have this working. They are able to extract and
> execute the methods. But, they still have yet to make devices request and
> use that information. Maybe Andy Grover can comment on this..
>
> BTW, The latest ACPI patch is at: http://sourceforge.net/projects/acpi/.
Thanks! Just got it and tried it.
Could I get your comments on a patch against 2.4.16-stock? I'm trying to
figure out the best way to automagically work around the bug, and this
is the best I've come up with so far. I need more DMI data from other HP
5400 series AMD/ALi laptops with the problem to come up with the most
accurate matches - right now it's tied to my machine type and BIOS
version.
--- linux/arch/i386/kernel/dmi_scan.c Mon Dec 3 22:11:36 2001
+++ linux/arch/i386/kernel/dmi_scan.c Fri Dec 7 01:14:18 2001
@@ -414,6 +414,20 @@
return 0;
}
+/*
+ * Work around broken HP Pavilion Notebooks which assign USB to
+ * IRQ 9 even though it is actually wired to IRQ 11
+ */
+static __init int fix_broken_hp_bios_irq9(struct dmi_blacklist *d)
+{
+ extern int broken_hp_bios_irq9;
+ if (broken_hp_bios_irq9 == 0)
+ {
+ broken_hp_bios_irq9 = 1;
+ printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident);
+ }
+ return 0;
+}
/*
* Simple "print if true" callback
@@ -603,7 +617,14 @@
NO_MATCH, NO_MATCH
} },
-
+ { fix_broken_hp_bios_irq9, "HP Pavilion N5400 Series Laptop", {
+ MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
+ MATCH(DMI_BIOS_VERSION, "GE.M1.03"),
+ MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GE"),
+ MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736")
+ } },
+
+
/*
* Generic per vendor APM settings
*/
--- linux/arch/i386/kernel/pci-irq.c Sun Nov 4 09:31:58 2001
+++ linux/arch/i386/kernel/pci-irq.c Fri Dec 7 00:38:17 2001
@@ -22,6 +22,8 @@
#define PIRQ_SIGNATURE (('$' << 0) + ('P' << 8) + ('I' << 16) + ('R' << 24))
#define PIRQ_VERSION 0x0100
+int broken_hp_bios_irq9;
+
static struct irq_routing_table *pirq_table;
/*
@@ -565,6 +567,15 @@
DBG(" -> PIRQ %02x, mask %04x, excl %04x", pirq, mask, pirq_table->exclusive_irqs);
mask &= pcibios_irq_mask;
+ /* Work around broken HP Pavilion Notebooks which assign USB to
+ IRQ 9 even though it is actually wired to IRQ 11 */
+
+ if (broken_hp_bios_irq9 && pirq == 0x59 && dev->irq == 9) {
+ dev->irq = 11;
+ pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 11);
+ r->set(pirq_router_dev, dev, pirq, 11);
+ }
+
/*
* Find the best IRQ to assign: use the one
* reported by the device if possible.
next prev parent reply other threads:[~2001-12-07 21:33 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-12-05 5:16 IRQ Routing Problem on ALi Chipset Laptop (HP Pavilion N5425) Cory Bell
2001-12-05 5:58 ` John Clemens
2001-12-05 8:40 ` Cory Bell
2001-12-05 16:41 ` John Clemens
2001-12-05 16:54 ` Daniel Gryniewicz
2001-12-05 18:48 ` James Cassidy
2001-12-05 19:43 ` Daniel Gryniewicz
2001-12-06 7:00 ` Cory Bell
2001-12-06 15:11 ` John Clemens
2001-12-07 0:41 ` Cory Bell
2001-12-07 1:03 ` Randy.Dunlap
2001-12-07 1:27 ` Cory Bell
2001-12-07 16:24 ` rddunlap
2001-12-07 17:35 ` Patrick Mochel
2001-12-07 21:23 ` Cory Bell [this message]
2001-12-07 21:48 ` Daniel Gryniewicz
2001-12-07 22:32 ` Cory Bell
2001-12-08 22:38 ` Pavel Machek
2001-12-08 23:04 ` Pavel Machek
2001-12-09 20:02 ` Cory Bell
2001-12-10 10:49 ` Pavel Machek
2001-12-19 21:53 ` Pavel Machek
2001-12-20 21:48 ` Kai Germaschewski
2001-12-20 22:40 ` Pavel Machek
2001-12-20 23:58 ` Kai Germaschewski
2001-12-07 20:33 ` Pavel Machek
2001-12-09 5:37 ` Cory Bell
2001-12-09 13:13 ` Pavel Machek
2001-12-10 15:26 ` John Clemens
2001-12-10 16:04 ` Pavel Machek
2001-12-10 17:53 ` John Clemens
2001-12-11 1:53 ` Cory Bell
2001-12-11 9:45 ` Pavel Machek
2001-12-10 18:32 ` Pavel Machek
2001-12-10 20:56 ` Cory Bell
2001-12-10 11:03 ` Pavel Machek
2001-12-10 16:01 ` Pavel Machek
2001-12-10 21:24 ` Cory Bell
2001-12-11 10:02 ` Pavel Machek
2001-12-11 10:14 ` Pavel Machek
2001-12-11 15:19 ` Cory Bell
2001-12-11 15:36 ` Pavel Machek
2001-12-11 17:08 ` Cory Bell
-- strict thread matches above, loose matches on Subject: below --
2001-12-07 18:13 Grover, Andrew
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1007760235.10687.0.camel@localhost.localdomain \
--to=cory.bell@usa.net \
--cc=andrew.grover@intel.com \
--cc=john@deater.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mochel@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox