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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.