Thread (6 messages) 6 messages, 2 authors, 2012-06-04

Re: [PATCH] ACPI: Fix the irq0 assigning issue for AMILO PRO V2030 platform

From: Feng Tang <hidden>
Date: 2012-06-04 03:21:03
Also in: lkml

Hi Len,

On Fri, 1 Jun 2012 12:53:00 -0400
Len Brown [off-list ref] wrote:
Hello Tang-Feng,

This looks good, but especially w/ interrupt patches,
it is important to take logically independent baby steps.
So please break this patch into two, and add another small bit
in a 3 patch series:

1. allow the workaround to apply to non global_irq 2
2. delete the WARN from dmi_ignore_irq0_timer_override
	as it causes alarm, but gives no benefit
3. add the DMI to invoke the workaround for this platform
Thanks for the review, will make it 3 patches as you suggested.

- Feng
thanks,
-Len Brown, Intel Open Source Technology Center

On 05/28/2012 10:43 PM, Feng Tang wrote:
quoted
This is to fix the kernel bugzilla 40002: "IRQ 0 assigned to VGA"
 https://bugzilla.kernel.org/show_bug.cgi?id=40002

The root cause is the buggy FW, whose ACPI tables assign the GSI 16
to 2 irqs 0 and 16(VGA), and the VGA is the right owner of GSI 16.
So add a quirk to ignore the irq0 overriding GSI 16 for the
FUJITSU SIEMENS AMILO PRO V2030 platform will solve this issue.

This also slightly modify the current irq0 override handling, as it
only covered the irq0 overriding GSI 2 case.

Reported-and-tested-by: Szymon Kowalczyk <redacted>
Signed-off-by: Feng Tang <redacted>
Cc: x86@kernel.org
---
 arch/x86/kernel/acpi/boot.c |   17 ++++++++++++++---
 1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 4558f0d..06c78c3 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -416,12 +416,14 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header *
header, return 0;
 	}
 
-	if (intsrc->source_irq == 0 && intsrc->global_irq == 2) {
+	if (intsrc->source_irq == 0) {
 		if (acpi_skip_timer_override) {
-			printk(PREFIX "BIOS IRQ0 pin2 override
ignored.\n");
+			printk(PREFIX "BIOS IRQ0 override ignored.\n");
 			return 0;
 		}
-		if (acpi_fix_pin2_polarity && (intsrc->inti_flags &
ACPI_MADT_POLARITY_MASK)) { +
+		if ((intsrc->global_irq == 2) && acpi_fix_pin2_polarity
+			&& (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK))
{ intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK;
 			printk(PREFIX "BIOS IRQ0 pin2 override: forcing
polarity to high active.\n"); }
@@ -1466,6 +1468,15 @@ static struct dmi_system_id __initdata
acpi_dmi_table_late[] = { DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"),
 		     },
 	 },
+	{
+	 .callback = dmi_ignore_irq0_timer_override,
+	 .ident = "FUJITSU SIEMENS",
+	 .matches = {
+		     DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+		     DMI_MATCH(DMI_PRODUCT_NAME, "AMILO PRO V2030"),
+		     },
+	 },
+
 	{}
 };
 
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help