lkml.org 
[lkml]   [2008]   [Oct]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: [PATCH] x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC

* Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:

> On Tue, Oct 07, 2008 at 05:41:32AM +0200, Ingo Molnar wrote:
> >
> > * Andreas Herrmann <andreas.herrmann3@amd.com> wrote:
> >
> > > So, let's work around BIOS bugs in Linux then ...
> > >
> > > Following patch is almost untested -- especially I didn't get my hands
> > > on one of the HP Laptops with broken DSDT.
> > [...]
> > > On some HP nx6... laptops (e.g. nx6325) BIOS reports an IRQ0 override
> > > but the SB450 chipset is configured such that timer interrupts goe to
> > > INT0 of IOAPIC.
> > >
> > > Check IRQ0 routing and if it is routed to INT0 of IOAPIC skip the
> > > timer override.
> > >
> > > Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
> > >
> > > ---
> > > arch/x86/kernel/early-quirks.c | 48 ++++++++++++++++++++++++++++++++++++++++
> > > 1 files changed, 48 insertions(+), 0 deletions(-)
> >
> > very nice, thanks Andreas! Applied to tip/x86/quirks. This PCI ID based
> > quirk should be more complete than DMI matches.
> >
>
> You may add 'Tested by: Dmitry Torokhov <dtor@mail.ru> on nx6115'
> It works fine here with Andreas patch applied and with Rafael's patch
> dropped.
>
> Thanks Andreas!

ok, added your Tested-by to the changelog, thanks.

I also applied the patch below to deprioritize the DMI quirks for this
problem (without actually removing them, yet). Could you please check
whether latest tip/master:

http://people.redhat.com/mingo/tip.git/README

boots fine out of box and that the WARN() does not trigger?

Ingo

--------------->
From 8d89adf44cf750e49691ba5b744b2ad77a05e997 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Tue, 7 Oct 2008 06:47:52 +0200
Subject: [PATCH] x86: SB450: deprioritize DMI quirks

This PCI ID based quick should be a full solution for the IRQ0 override
related slowdown problem on SB450 based systems:

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

Emit a warning in those cases where the DMI quirk triggers but
the PCI ID based quirk didnt.

If this warning does not trigger then we can phase out the DMI quirks.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
arch/x86/kernel/acpi/boot.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index c102af8..096102d 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -1421,8 +1421,16 @@ static int __init force_acpi_ht(const struct dmi_system_id *d)
*/
static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d)
{
- pr_notice("%s detected: Ignoring BIOS IRQ0 pin2 override\n", d->ident);
- acpi_skip_timer_override = 1;
+ /*
+ * 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;
}



\
 
 \ /
  Last update: 2008-10-07 07:01    [W:0.083 / U:12.400 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site