rpms/kernel/F-10 linux-2.6-x86-sb600-skip-acpi-irq0-override-if-not-routed-to-int2.patch, NONE, 1.1 kernel.spec, 1.1135, 1.1136
Chuck Ebbert
cebbert at fedoraproject.org
Wed Nov 12 00:07:07 UTC 2008
- Previous message (by thread): rpms/kdelibs/F-10 kdelibs.spec, 1.386, 1.387 sources, 1.71, 1.72 kdelibs-4.1.2-googlemaps.patch, 1.1, NONE kdelibs-4.1.2-kde#171870-kded-crash.patch, 1.1, NONE kdelibs-4.1.3-kde#172042-windowsize.patch, 1.1, NONE
- Next message (by thread): rpms/kdemultimedia/F-10 kdemultimedia.spec, 1.123, 1.124 sources, 1.57, 1.58
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: cebbert
Update of /cvs/pkgs/rpms/kernel/F-10
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv19201
Modified Files:
kernel.spec
Added Files:
linux-2.6-x86-sb600-skip-acpi-irq0-override-if-not-routed-to-int2.patch
Log Message:
Check for additional ATI chipset timer bugs (#470939, #470723)
linux-2.6-x86-sb600-skip-acpi-irq0-override-if-not-routed-to-int2.patch:
--- NEW FILE linux-2.6-x86-sb600-skip-acpi-irq0-override-if-not-routed-to-int2.patch ---
From: Andreas Herrmann <andreas.herrmann3 at amd.com>
Date: Tue, 14 Oct 2008 19:01:15 +0000 (+0200)
Subject: x86: SB600: skip ACPI IRQ0 override if it is not routed to INT2 of IOAPIC
X-Git-Tag: v2.6.28-rc1~26^2~2^2
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=26adcfbf00e0726b4469070aa2f530dcf963f484
x86: SB600: skip ACPI IRQ0 override if it is not routed to INT2 of IOAPIC
On some more HP laptops BIOS reports an IRQ0 override
but the SB600 chipset is configured such that timer
interrupts go to INT0 of IOAPIC.
Check IRQ0 routing and if it is routed to INT0 of IOAPIC skip the
timer override.
http://bugzilla.kernel.org/show_bug.cgi?id=11715
http://bugzilla.kernel.org/show_bug.cgi?id=11516
Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
Signed-off-by: Len Brown <len.brown at intel.com>
---
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index 733c4f8..3ce029f 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -95,7 +95,8 @@ static void __init nvidia_bugs(int num, int slot, int func)
}
-static u32 ati_ixp4x0_rev(int num, int slot, int func)
+#if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC)
+static u32 __init ati_ixp4x0_rev(int num, int slot, int func)
{
u32 d;
u8 b;
@@ -115,7 +116,6 @@ static u32 ati_ixp4x0_rev(int num, int slot, int func)
static void __init ati_bugs(int num, int slot, int func)
{
-#if defined(CONFIG_ACPI) && defined (CONFIG_X86_IO_APIC)
u32 d;
u8 b;
@@ -138,9 +138,56 @@ static void __init ati_bugs(int num, int slot, int func)
printk(KERN_INFO "If you got timer trouble "
"try acpi_use_timer_override\n");
}
-#endif
}
+static u32 __init ati_sbx00_rev(int num, int slot, int func)
+{
+ u32 old, d;
+
+ d = read_pci_config(num, slot, func, 0x70);
+ old = d;
+ d &= ~(1<<8);
+ write_pci_config(num, slot, func, 0x70, d);
+ d = read_pci_config(num, slot, func, 0x8);
+ d &= 0xff;
+ write_pci_config(num, slot, func, 0x70, old);
+
+ return d;
+}
+
+static void __init ati_bugs_contd(int num, int slot, int func)
+{
+ u32 d, rev;
+
+ if (acpi_use_timer_override)
+ return;
+
+ rev = ati_sbx00_rev(num, slot, func);
+ if (rev > 0x13)
+ return;
+
+ /* check for IRQ0 interrupt swap */
+ d = read_pci_config(num, slot, func, 0x64);
+ if (!(d & (1<<14)))
+ acpi_skip_timer_override = 1;
+
+ if (acpi_skip_timer_override) {
+ printk(KERN_INFO "SB600 revision 0x%x\n", rev);
+ printk(KERN_INFO "Ignoring ACPI timer override.\n");
+ printk(KERN_INFO "If you got timer trouble "
+ "try acpi_use_timer_override\n");
+ }
+}
+#else
+static void __init ati_bugs(int num, int slot, int func)
+{
+}
+
+static void __init ati_bugs_contd(int num, int slot, int func)
+{
+}
+#endif
+
#define QFLAG_APPLY_ONCE 0x1
#define QFLAG_APPLIED 0x2
#define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED)
@@ -162,6 +209,8 @@ static struct chipset early_qrk[] __initdata = {
PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, fix_hypertransport_config },
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS,
PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs },
+ { PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
+ PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs_contd },
{}
};
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-10/kernel.spec,v
retrieving revision 1.1135
retrieving revision 1.1136
diff -u -r1.1135 -r1.1136
--- kernel.spec 11 Nov 2008 21:11:22 -0000 1.1135
+++ kernel.spec 12 Nov 2008 00:06:36 -0000 1.1136
@@ -587,6 +587,7 @@
Patch23: linux-2.6.27-x86-tracehook-syscall-arg-order.patch
Patch30: linux-2.6-x86-mtrr-kill-bogus-warning.patch
+Patch31: linux-2.6-x86-sb600-skip-acpi-irq0-override-if-not-routed-to-int2.patch
Patch41: linux-2.6-sysrq-c.patch
@@ -1096,6 +1097,8 @@
ApplyPatch linux-2.6.27-x86-tracehook-syscall-arg-order.patch
ApplyPatch linux-2.6-x86-mtrr-kill-bogus-warning.patch
+# check for more ATI timer bugs
+ApplyPatch linux-2.6-x86-sb600-skip-acpi-irq0-override-if-not-routed-to-int2.patch
# enable sysrq-c on all kernels, not only kexec
ApplyPatch linux-2.6-sysrq-c.patch
@@ -1908,6 +1911,9 @@
%kernel_variant_files -k vmlinux %{with_kdump} kdump
%changelog
+* Tue Nov 11 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.27.5-100
+- Check for additional ATI chipset timer bugs (#470939, #470723)
+
* Tue Nov 11 2008 Dave Airlie <airlied at redhat.com> 2.6.27.5-99
- drm rebase patches against latest upstream tree.
- Previous message (by thread): rpms/kdelibs/F-10 kdelibs.spec, 1.386, 1.387 sources, 1.71, 1.72 kdelibs-4.1.2-googlemaps.patch, 1.1, NONE kdelibs-4.1.2-kde#171870-kded-crash.patch, 1.1, NONE kdelibs-4.1.3-kde#172042-windowsize.patch, 1.1, NONE
- Next message (by thread): rpms/kdemultimedia/F-10 kdemultimedia.spec, 1.123, 1.124 sources, 1.57, 1.58
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list