linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ACPI: Fix the irq0 assigning issue for AMILO PRO V2030 platform
@ 2012-05-29  2:43 Feng Tang
  2012-06-01 16:53 ` Len Brown
  0 siblings, 1 reply; 6+ messages in thread
From: Feng Tang @ 2012-05-29  2:43 UTC (permalink / raw)
  To: len.brown, linux-kernel, linux-acpi; +Cc: rui.zhang, fazerxlo, Feng Tang, x86

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 <fazerxlo@o2.pl>
Signed-off-by: Feng Tang <feng.tang@intel.com>
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"),
+		     },
+	 },
+
 	{}
 };
 
-- 
1.7.9


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

* Re: [PATCH] ACPI: Fix the irq0 assigning issue for AMILO PRO V2030 platform
  2012-05-29  2:43 [PATCH] ACPI: Fix the irq0 assigning issue for AMILO PRO V2030 platform Feng Tang
@ 2012-06-01 16:53 ` Len Brown
  2012-06-04  3:17   ` Feng Tang
                     ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Len Brown @ 2012-06-01 16:53 UTC (permalink / raw)
  To: Feng Tang; +Cc: linux-kernel, linux-acpi, rui.zhang, fazerxlo, x86

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,
-Len Brown, Intel Open Source Technology Center

On 05/28/2012 10:43 PM, Feng Tang wrote:

> 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 <fazerxlo@o2.pl>
> Signed-off-by: Feng Tang <feng.tang@intel.com>
> 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"),
> +		     },
> +	 },
> +
>  	{}
>  };
>  



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

* Re: [PATCH] ACPI: Fix the irq0 assigning issue for AMILO PRO V2030 platform
  2012-06-01 16:53 ` Len Brown
@ 2012-06-04  3:17   ` Feng Tang
  2012-06-04  5:23   ` [PATCH 1/3] ACPI: Make acpi_skip_timer_override cover all source_irq==0 cases Feng Tang
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 6+ messages in thread
From: Feng Tang @ 2012-06-04  3:17 UTC (permalink / raw)
  To: Len Brown; +Cc: linux-kernel, linux-acpi, rui.zhang, fazerxlo, x86

Hi Len,

On Fri, 1 Jun 2012 12:53:00 -0400
Len Brown <lenb@kernel.org> 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:
> 
> > 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 <fazerxlo@o2.pl>
> > Signed-off-by: Feng Tang <feng.tang@intel.com>
> > 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"),
> > +		     },
> > +	 },
> > +
> >  	{}
> >  };
> >  
> 
> 

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

* [PATCH 1/3] ACPI: Make acpi_skip_timer_override cover all  source_irq==0 cases
  2012-06-01 16:53 ` Len Brown
  2012-06-04  3:17   ` Feng Tang
@ 2012-06-04  5:23   ` Feng Tang
  2012-06-04  5:23   ` [PATCH 2/3] ACPI: Remove one board specific WARN when ignoring timer overriding Feng Tang
  2012-06-04  5:23   ` [PATCH 3/3] ACPI: Add a quirk for "AMILO PRO V2030" to ignore the " Feng Tang
  3 siblings, 0 replies; 6+ messages in thread
From: Feng Tang @ 2012-06-04  5:23 UTC (permalink / raw)
  To: Len Brown; +Cc: linux-kernel, linux-acpi, rui.zhang, fazerxlo, x86

>From b10f528c1973e89bf6a4da8f91d62228c259acba Mon Sep 17 00:00:00 2001
From: Feng Tang <feng.tang@intel.com>
Date: Mon, 4 Jun 2012 10:40:26 +0800
Subject: [PATCH 1/3] ACPI: Make acpi_skip_timer_override cover all
 source_irq==0 cases

Currently when acpi_skip_timer_override is set, it only cover the
(source_irq == 0 && global_irq == 2) cases. While there is also
platform which need use this option and its global_irq is not 2.
This patch will extend acpi_skip_timer_override to cover all
timer overriding cases as long as the source irq is 0.

This is the first part of a fix to kernel bug bugzilla 40002:
	"IRQ 0 assigned to VGA"
https://bugzilla.kernel.org/show_bug.cgi?id=40002

Reported-and-tested-by: Szymon Kowalczyk <fazerxlo@o2.pl>
Signed-off-by: Feng Tang <feng.tang@intel.com>
---
 arch/x86/kernel/acpi/boot.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 8afb693..e7c698e 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -422,12 +422,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");
 		}
@@ -1334,7 +1336,7 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d)
 }
 
 /*
- * Force ignoring BIOS IRQ0 pin2 override
+ * Force ignoring BIOS IRQ0 override
  */
 static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
 {
@@ -1344,7 +1346,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
 	 */
 	if (!acpi_skip_timer_override) {
 		WARN(1, KERN_ERR "ati_ixp4x0 quirk not complete.\n");
-		pr_notice("%s detected: Ignoring BIOS IRQ0 pin2 override\n",
+		pr_notice("%s detected: Ignoring BIOS IRQ0 override\n",
 			d->ident);
 		acpi_skip_timer_override = 1;
 	}
@@ -1438,7 +1440,7 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
 	 * is enabled.  This input is incorrectly designated the
 	 * ISA IRQ 0 via an interrupt source override even though
 	 * it is wired to the output of the master 8259A and INTIN0
-	 * is not connected at all.  Force ignoring BIOS IRQ0 pin2
+	 * is not connected at all.  Force ignoring BIOS IRQ0
 	 * override in that cases.
 	 */
 	{
-- 
1.7.9

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

* [PATCH 2/3] ACPI: Remove one board specific WARN when ignoring timer overriding
  2012-06-01 16:53 ` Len Brown
  2012-06-04  3:17   ` Feng Tang
  2012-06-04  5:23   ` [PATCH 1/3] ACPI: Make acpi_skip_timer_override cover all source_irq==0 cases Feng Tang
@ 2012-06-04  5:23   ` Feng Tang
  2012-06-04  5:23   ` [PATCH 3/3] ACPI: Add a quirk for "AMILO PRO V2030" to ignore the " Feng Tang
  3 siblings, 0 replies; 6+ messages in thread
From: Feng Tang @ 2012-06-04  5:23 UTC (permalink / raw)
  To: Len Brown; +Cc: linux-kernel, linux-acpi, rui.zhang, fazerxlo, x86

>From 54e631547eb5150417370fc04a89d7eac6d627e6 Mon Sep 17 00:00:00 2001
From: Feng Tang <feng.tang@intel.com>
Date: Mon, 4 Jun 2012 11:02:24 +0800
Subject: [PATCH 2/3] ACPI: Remove one board specific WARN when ignoring timer
 overriding

Current WARN msg is only for the ati_ixp4x0 board, while this function
is used by mulitple platforms. So this one board specific warning
is not appropriate any more.

Signed-off-by: Feng Tang <feng.tang@intel.com>
---
 arch/x86/kernel/acpi/boot.c |    5 -----
 1 files changed, 0 insertions(+), 5 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index e7c698e..3a6afba 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1340,12 +1340,7 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d)
  */
 static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
 {
-	/*
-	 * The ati_ixp4x0_rev() early PCI quirk should have set
-	 * the acpi_skip_timer_override flag already:
-	 */
 	if (!acpi_skip_timer_override) {
-		WARN(1, KERN_ERR "ati_ixp4x0 quirk not complete.\n");
 		pr_notice("%s detected: Ignoring BIOS IRQ0 override\n",
 			d->ident);
 		acpi_skip_timer_override = 1;
-- 
1.7.9

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

* [PATCH 3/3] ACPI: Add a quirk for "AMILO PRO V2030" to ignore the timer overriding
  2012-06-01 16:53 ` Len Brown
                     ` (2 preceding siblings ...)
  2012-06-04  5:23   ` [PATCH 2/3] ACPI: Remove one board specific WARN when ignoring timer overriding Feng Tang
@ 2012-06-04  5:23   ` Feng Tang
  3 siblings, 0 replies; 6+ messages in thread
From: Feng Tang @ 2012-06-04  5:23 UTC (permalink / raw)
  To: Len Brown; +Cc: linux-kernel, linux-acpi, rui.zhang, fazerxlo, x86

>From cfca8634132c1b2f89c39f681ae2aa1fe227c9f5 Mon Sep 17 00:00:00 2001
From: Feng Tang <feng.tang@intel.com>
Date: Mon, 4 Jun 2012 11:06:35 +0800
Subject: [PATCH 3/3] ACPI: Add a quirk for "AMILO PRO V2030" to ignore the
 timer overriding

This is the 2nd part of fix for 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.

Reported-and-tested-by: Szymon Kowalczyk <fazerxlo@o2.pl>
Signed-off-by: Feng Tang <feng.tang@intel.com>
---
 arch/x86/kernel/acpi/boot.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 3a6afba..b2297e5 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1470,6 +1470,14 @@ 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"),
+		     },
+	 },
 	{}
 };
 
-- 
1.7.9

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

end of thread, other threads:[~2012-06-04  5:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-05-29  2:43 [PATCH] ACPI: Fix the irq0 assigning issue for AMILO PRO V2030 platform Feng Tang
2012-06-01 16:53 ` Len Brown
2012-06-04  3:17   ` Feng Tang
2012-06-04  5:23   ` [PATCH 1/3] ACPI: Make acpi_skip_timer_override cover all source_irq==0 cases Feng Tang
2012-06-04  5:23   ` [PATCH 2/3] ACPI: Remove one board specific WARN when ignoring timer overriding Feng Tang
2012-06-04  5:23   ` [PATCH 3/3] ACPI: Add a quirk for "AMILO PRO V2030" to ignore the " Feng Tang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).