public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fix Acer TravelMate 360 interrupt routing
@ 2004-04-10 20:24 Daniel Ritz
  0 siblings, 0 replies; 6+ messages in thread
From: Daniel Ritz @ 2004-04-10 20:24 UTC (permalink / raw)
  To: Andrew Morton; +Cc: linux-kernel

acer travelmate 360 has a broken interrupt routing. there's an interrupt storm
on irq 10 w/o this patch  as soon as yenta_socket is loaded. the problem
has been seen on different machines (reported on l-k and on pcmcia-cs
list). there's also an USB controller on the same interrupt line as the CB
which also works fine after the patch. and routing via ACPI fails too.

against 2.6.5


--- 1.36/arch/i386/pci/irq.c	Fri Feb 27 06:48:13 2004
+++ edited/arch/i386/pci/irq.c	Wed Apr  7 22:15:11 2004
@@ -22,6 +22,7 @@
 #define PIRQ_VERSION 0x0100
 
 int broken_hp_bios_irq9;
+int acer_tm360_irqrouting;
 
 static struct irq_routing_table *pirq_table;
 
@@ -745,6 +744,13 @@
 		dev->irq = 11;
 		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 11);
 		r->set(pirq_router_dev, dev, pirq, 11);
+	}
+
+	/* same for Acer Travelmate 360, but with CB and irq 11 -> 10 */
+	if (acer_tm360_irqrouting && pirq == 0x63 && dev->irq == 11) {
+		dev->irq = 10;
+		pci_write_config_byte(dev, PCI_INTERRUPT_LINE, 10);
+		r->set(pirq_router_dev, dev, pirq, 10);
 	}
 
 	/*
--- 1.56/arch/i386/kernel/dmi_scan.c	Sun Mar 21 06:33:07 2004
+++ edited/arch/i386/kernel/dmi_scan.c	Wed Apr  7 22:19:57 2004
@@ -360,6 +360,22 @@
 }
 
 /*
+ * Work around broken Acer TravelMate 360 Notebooks which assign Cardbus to
+ * IRQ 11 even though it is actually wired to IRQ 10
+ */
+static __init int fix_acer_tm360_irqrouting(struct dmi_blacklist *d)
+{
+#ifdef CONFIG_PCI
+	extern int acer_tm360_irqrouting;
+	if (acer_tm360_irqrouting == 0)
+	{
+		acer_tm360_irqrouting = 1;
+		printk(KERN_INFO "%s detected - fixing broken IRQ routing\n", d->ident);
+	}
+#endif
+	return 0;
+}
+/*
  *  Check for clue free BIOS implementations who use
  *  the following QA technique
  *
@@ -890,6 +906,13 @@
 			MATCH(DMI_PRODUCT_VERSION, "HP Pavilion Notebook Model GE"),
 			MATCH(DMI_BOARD_VERSION, "OmniBook N32N-736")
 			} },
+
+	{ fix_acer_tm360_irqrouting, "Acer TravelMate 36x Laptop", {
+			MATCH(DMI_SYS_VENDOR, "Acer"),
+			MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
+			NO_MATCH, NO_MATCH
+			} },
+ 
  
 
 	/*
@@ -1028,6 +1051,12 @@
 			MATCH(DMI_BIOS_VERSION, "ASUS A7V ACPI BIOS Revision 1007"),
 			NO_MATCH }},
 
+	{ disable_acpi_pci, "Acer TravelMate 36x Laptop", {
+			MATCH(DMI_SYS_VENDOR, "Acer"),
+			MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
+			NO_MATCH, NO_MATCH
+			} },
+ 
 #endif
 
 	{ NULL, }


^ permalink raw reply	[flat|nested] 6+ messages in thread
[parent not found: <A6974D8E5F98D511BB910002A50A6647615F8369@hdsmsx403.hd.intel.com>]
* RE: [PATCH] fix Acer TravelMate 360 interrupt routing
@ 2004-04-16  7:39 Brown, Len
  2004-04-16 11:25 ` Kitt Tientanopajai
  0 siblings, 1 reply; 6+ messages in thread
From: Brown, Len @ 2004-04-16  7:39 UTC (permalink / raw)
  To: Kitt Tientanopajai, daniel.ritz
  Cc: daniel.ritz, akpm, linux-kernel, marcelo.tosatti

 
>Linux version 2.6.5-mm4 (root@peorth.kitty.in.th) (gcc version 
>3.3.2 20031022 (Red Hat Linux 3.3.2-1)) #1 Sun Apr 11 11:46:57 ICT 2004
...
>Acer TravelMate 36x Laptop detected - fixing broken IRQ routing
>Acer TravelMate 36x Laptop detected: force use of pci=noacpi

Kitt,
The patch is a platform specific workaround that forces "pci=noacpi"
for this specific machine -- as if you supplied it on the cmdline.

The idea is to run the kernel w/o this patch and see
If we can fix the root cause, thus possibly helping other
systems which have the same problem.

If we fail to find/fix the root cause, or discover that
the platform has an issue that we simply can't fix
in the kernel, then it makes sense to add this automatic
workaround, but not before.

>> >
>> > So for the ACPI mode part, I encourage you to file a bug here
>> >
>> > http://bugzilla.kernel.org/enter_bug.cgi?product=ACPI
>> > Component Config-Interrupts
>> > and assign it to me.  Or if a bug is open already,
>> > please direct me to it.
>> >
>> > thanks,
>> > -Len

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-04-16 11:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-04-10 20:24 [PATCH] fix Acer TravelMate 360 interrupt routing Daniel Ritz
     [not found] <A6974D8E5F98D511BB910002A50A6647615F8369@hdsmsx403.hd.intel.com>
2004-04-14  1:26 ` Len Brown
2004-04-14 13:47   ` Daniel Ritz
2004-04-16  5:31     ` Kitt Tientanopajai
  -- strict thread matches above, loose matches on Subject: below --
2004-04-16  7:39 Brown, Len
2004-04-16 11:25 ` Kitt Tientanopajai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox