public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks
@ 2008-10-16 10:57 Andreas Herrmann
  2008-10-22 10:02 ` Ingo Molnar
  2008-10-22 10:03 ` [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks Andreas Herrmann
  0 siblings, 2 replies; 6+ messages in thread
From: Andreas Herrmann @ 2008-10-16 10:57 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner; +Cc: linux-kernel

The problem should be solved with commits:

x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC

IMHO it does not make sense to check within a dmi-quirk
whether an early-quirk was applied. Boot sequence is as follows:

acpi_boot_table_init()   (it applies dmi-quirks)
...
early_quirks()           (detect bogus IRQ0 override)
...
acpi_boot_init()         (setup IO APIC)

Thus with current code we will always get following warnings for
Laptops that have this dmi_ignore_irq0_timer_override dmi quirk:

  WARNING: at arch/x86/kernel/acpi/boot.c:1410
  dmi_ignore_irq0_timer_override+0x30/0x60()
  ati_ixp4x0 quirk not complete.

... just because the early-quirk (ati_ixp4x0) was not yet executed.

Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
---
 arch/x86/kernel/acpi/boot.c |   60 -------------------------------------------
 1 files changed, 0 insertions(+), 60 deletions(-)

Please apply.

Thanks,
Andreas


diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index eb875cd..4835cf9 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1414,24 +1414,6 @@ static int __init force_acpi_ht(const struct dmi_system_id *d)
 }
 
 /*
- * Force ignoring BIOS IRQ0 pin2 override
- */
-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 pin2 override\n",
-			d->ident);
-		acpi_skip_timer_override = 1;
-	}
-	return 0;
-}
-
-/*
  * If your system is blacklisted here, but you find that acpi=force
  * works for you, please contact acpi-devel@sourceforge.net
  */
@@ -1598,48 +1580,6 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
 		     DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
 		     },
 	 },
-	/*
-	 * HP laptops which use a DSDT reporting as HP/SB400/10000,
-	 * which includes some code which overrides all temperature
-	 * trip points to 16C if the INTIN2 input of the I/O APIC
-	 * 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
-	 * override in that cases.
-	 */
-	{
-	 .callback = dmi_ignore_irq0_timer_override,
-	 .ident = "HP nx6115 laptop",
-	 .matches = {
-		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6115"),
-		     },
-	 },
-	{
-	 .callback = dmi_ignore_irq0_timer_override,
-	 .ident = "HP NX6125 laptop",
-	 .matches = {
-		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6125"),
-		     },
-	 },
-	{
-	 .callback = dmi_ignore_irq0_timer_override,
-	 .ident = "HP NX6325 laptop",
-	 .matches = {
-		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq nx6325"),
-		     },
-	 },
-	{
-	 .callback = dmi_ignore_irq0_timer_override,
-	 .ident = "HP 6715b laptop",
-	 .matches = {
-		     DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
-		     DMI_MATCH(DMI_PRODUCT_NAME, "HP Compaq 6715b"),
-		     },
-	 },
 	{}
 };
 
-- 
1.6.0.2




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

* Re: [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks
  2008-10-16 10:57 [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks Andreas Herrmann
@ 2008-10-22 10:02 ` Ingo Molnar
  2008-10-22 10:09   ` Andreas Herrmann
  2008-10-22 10:03 ` [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks Andreas Herrmann
  1 sibling, 1 reply; 6+ messages in thread
From: Ingo Molnar @ 2008-10-22 10:02 UTC (permalink / raw)
  To: Andreas Herrmann; +Cc: Thomas Gleixner, linux-kernel


* Andreas Herrmann <andreas.herrmann3@amd.com> wrote:

> The problem should be solved with commits:
> 
> x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> 
> IMHO it does not make sense to check within a dmi-quirk
> whether an early-quirk was applied. Boot sequence is as follows:
> 
> acpi_boot_table_init()   (it applies dmi-quirks)
> ...
> early_quirks()           (detect bogus IRQ0 override)
> ...
> acpi_boot_init()         (setup IO APIC)
> 
> Thus with current code we will always get following warnings for
> Laptops that have this dmi_ignore_irq0_timer_override dmi quirk:
> 
>   WARNING: at arch/x86/kernel/acpi/boot.c:1410
>   dmi_ignore_irq0_timer_override+0x30/0x60()
>   ati_ixp4x0 quirk not complete.
> 
> ... just because the early-quirk (ati_ixp4x0) was not yet executed.

could we move the DMI check to after the early quicks stage? It would be 
nice to have this double check, for at least one kernel cycle.

	Ingo

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

* Re: [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks
  2008-10-16 10:57 [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks Andreas Herrmann
  2008-10-22 10:02 ` Ingo Molnar
@ 2008-10-22 10:03 ` Andreas Herrmann
  1 sibling, 0 replies; 6+ messages in thread
From: Andreas Herrmann @ 2008-10-22 10:03 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner; +Cc: linux-kernel

On Thu, Oct 16, 2008 at 12:57:06PM +0200, Andreas Herrmann wrote:
> The problem should be solved with commits:
> 
> x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> 
> IMHO it does not make sense to check within a dmi-quirk
> whether an early-quirk was applied. Boot sequence is as follows:
> 
> acpi_boot_table_init()   (it applies dmi-quirks)
> ...
> early_quirks()           (detect bogus IRQ0 override)
> ...
> acpi_boot_init()         (setup IO APIC)
> 
> Thus with current code we will always get following warnings for
> Laptops that have this dmi_ignore_irq0_timer_override dmi quirk:
> 
>   WARNING: at arch/x86/kernel/acpi/boot.c:1410
>   dmi_ignore_irq0_timer_override+0x30/0x60()
>   ati_ixp4x0 quirk not complete.
> 
> ... just because the early-quirk (ati_ixp4x0) was not yet executed.
> 

Hi Ingo,

How are chances that this patch will go into tip-tree?
I'd like to see this fix in 2.6.28.


Thanks,

Andreas



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

* Re: [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks
  2008-10-22 10:02 ` Ingo Molnar
@ 2008-10-22 10:09   ` Andreas Herrmann
  2008-10-22 11:28     ` [PATCH] x86: call dmi-quirks for HP Laptops after early-quirks are executed Andreas Herrmann
  0 siblings, 1 reply; 6+ messages in thread
From: Andreas Herrmann @ 2008-10-22 10:09 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Thomas Gleixner, linux-kernel

On Wed, Oct 22, 2008 at 12:02:54PM +0200, Ingo Molnar wrote:
> 
> * Andreas Herrmann <andreas.herrmann3@amd.com> wrote:
> 
> > The problem should be solved with commits:
> > 
> > x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> > x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> > 
> > IMHO it does not make sense to check within a dmi-quirk
> > whether an early-quirk was applied. Boot sequence is as follows:
> > 
> > acpi_boot_table_init()   (it applies dmi-quirks)
> > ...
> > early_quirks()           (detect bogus IRQ0 override)
> > ...
> > acpi_boot_init()         (setup IO APIC)
> > 
> > Thus with current code we will always get following warnings for
> > Laptops that have this dmi_ignore_irq0_timer_override dmi quirk:
> > 
> >   WARNING: at arch/x86/kernel/acpi/boot.c:1410
> >   dmi_ignore_irq0_timer_override+0x30/0x60()
> >   ati_ixp4x0 quirk not complete.
> > 
> > ... just because the early-quirk (ati_ixp4x0) was not yet executed.
> 
> could we move the DMI check to after the early quicks stage? It would be 
> nice to have this double check, for at least one kernel cycle.

Ok, I'll have a look at that.

Andreas



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

* [PATCH] x86: call dmi-quirks for HP Laptops after early-quirks are executed
  2008-10-22 10:09   ` Andreas Herrmann
@ 2008-10-22 11:28     ` Andreas Herrmann
  2008-10-22 12:55       ` Ingo Molnar
  0 siblings, 1 reply; 6+ messages in thread
From: Andreas Herrmann @ 2008-10-22 11:28 UTC (permalink / raw)
  To: Ingo Molnar; +Cc: Thomas Gleixner, linux-kernel

Problems with bogus IRQ0 override of those laptops should be fixed
with commits

x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC

that introduce early-quirks based on chipset configuration.

For further information, see
http://bugzilla.kernel.org/show_bug.cgi?id=11516

Instead of removing the related dmi-quirks completely we'd like to
keep them for (at least) one kernel version -- to double-check whether
the early-quirks really took effect. But the dmi-quirks need to be
called after early-quirks are executed. With this patch calling
sequence for dmi-quirks is changed as follows:

 acpi_boot_table_init()   (dmi-quirks)
 ...
 early_quirks()           (detect bogus IRQ0 override)
 ...
 acpi_boot_init()         (late dmi-quirks and setup IO APIC)

Note: Plan is to remove the "late dmi-quirks" with next kernel version.

Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.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 0d1c26a..3e822bc 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1598,6 +1598,11 @@ static struct dmi_system_id __initdata acpi_dmi_table[] = {
 		     DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),
 		     },
 	 },
+	{}
+};
+
+/* second table for DMI checks that should run after early-quirks */
+static struct dmi_system_id __initdata acpi_dmi_table_late[] = {
 	/*
 	 * HP laptops which use a DSDT reporting as HP/SB400/10000,
 	 * which includes some code which overrides all temperature
@@ -1726,6 +1731,9 @@ int __init early_acpi_boot_init(void)
 
 int __init acpi_boot_init(void)
 {
+        /* those are executed after early-quirks are executed */
+	dmi_check_system(acpi_dmi_table_late);
+
 	/*
 	 * If acpi_disabled, bail out
 	 * One exception: acpi=ht continues far enough to enumerate LAPICs
-- 
1.6.0.2




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

* Re: [PATCH] x86: call dmi-quirks for HP Laptops after early-quirks are executed
  2008-10-22 11:28     ` [PATCH] x86: call dmi-quirks for HP Laptops after early-quirks are executed Andreas Herrmann
@ 2008-10-22 12:55       ` Ingo Molnar
  0 siblings, 0 replies; 6+ messages in thread
From: Ingo Molnar @ 2008-10-22 12:55 UTC (permalink / raw)
  To: Andreas Herrmann; +Cc: Thomas Gleixner, linux-kernel


* Andreas Herrmann <andreas.herrmann3@amd.com> wrote:

> Problems with bogus IRQ0 override of those laptops should be fixed
> with commits
> 
> x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
> 
> that introduce early-quirks based on chipset configuration.
> 
> For further information, see
> http://bugzilla.kernel.org/show_bug.cgi?id=11516
> 
> Instead of removing the related dmi-quirks completely we'd like to
> keep them for (at least) one kernel version -- to double-check whether
> the early-quirks really took effect. But the dmi-quirks need to be
> called after early-quirks are executed. With this patch calling
> sequence for dmi-quirks is changed as follows:
> 
>  acpi_boot_table_init()   (dmi-quirks)
>  ...
>  early_quirks()           (detect bogus IRQ0 override)
>  ...
>  acpi_boot_init()         (late dmi-quirks and setup IO APIC)
> 
> Note: Plan is to remove the "late dmi-quirks" with next kernel version.
> 
> Cc: Ingo Molnar <mingo@elte.hu>
> Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>

applied to tip/x86/urgent, thanks Andreas!

	Ingo

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

end of thread, other threads:[~2008-10-22 12:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-10-16 10:57 [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks Andreas Herrmann
2008-10-22 10:02 ` Ingo Molnar
2008-10-22 10:09   ` Andreas Herrmann
2008-10-22 11:28     ` [PATCH] x86: call dmi-quirks for HP Laptops after early-quirks are executed Andreas Herrmann
2008-10-22 12:55       ` Ingo Molnar
2008-10-22 10:03 ` [PATCH] x86: remove superfluous dmi_ignore_irq0_timer_override quirks Andreas Herrmann

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