rpms/kernel/F-8 linux-2.6-x86-early_ioremap-fix-fencepost-error.patch, NONE, 1.1 linux-2.6-x86-sb450-skip-irq0-override-if-not-routed-to-INT2.patch, NONE, 1.1 kernel.spec, 1.554, 1.555

Chuck Ebbert cebbert at fedoraproject.org
Tue Oct 14 09:28:33 UTC 2008


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-8
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv31950

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-x86-early_ioremap-fix-fencepost-error.patch 
	linux-2.6-x86-sb450-skip-irq0-override-if-not-routed-to-INT2.patch 
Log Message:
Two x86 fixes from F9:
  x86, early_ioremap: fix fencepost error
  x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC

linux-2.6-x86-early_ioremap-fix-fencepost-error.patch:

--- NEW FILE linux-2.6-x86-early_ioremap-fix-fencepost-error.patch ---
From: Alan Cox <alan at redhat.com>
Date: Fri, 10 Oct 2008 09:46:45 +0000 (+0100)
Subject: x86, early_ioremap: fix fencepost error
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fx86%2Flinux-2.6-tip.git;a=commitdiff_plain;h=dd5698f42a5f2b494c3e811598403f105b00f4f2

x86, early_ioremap: fix fencepost error

The x86 implementation of early_ioremap has an off by one error. If we get
an object which ends on the first byte of a page we undermap by one page and
this causes a crash on boot with the ASUS P5QL whose DMI table happens to fit
this alignment.

The size computation is currently

	last_addr = phys_addr + size - 1;
	npages = (PAGE_ALIGN(last_addr) - phys_addr)

(Consider a request for 1 byte at alignment 0...)

Closes #11693

Debugging work by Ian Campbell/Felix Geyer

Signed-off-by: Alan Cox <alan at rehat.com>
Cc: <stable at kernel.org>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---

diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c
index d4b6e6a..d0975fc 100644
--- a/arch/x86/mm/ioremap.c
+++ b/arch/x86/mm/ioremap.c
@@ -595,7 +595,7 @@ void __init *early_ioremap(unsigned long phys_addr, unsigned long size)
 	 */
 	offset = phys_addr & ~PAGE_MASK;
 	phys_addr &= PAGE_MASK;
-	size = PAGE_ALIGN(last_addr) - phys_addr;
+	size = PAGE_ALIGN(last_addr + 1) - phys_addr;
 
 	/*
 	 * Mappings have to fit in the FIX_BTMAP area.

linux-2.6-x86-sb450-skip-irq0-override-if-not-routed-to-INT2.patch:

--- NEW FILE linux-2.6-x86-sb450-skip-irq0-override-if-not-routed-to-INT2.patch ---
From: Andreas Herrmann <andreas.herrmann3 at amd.com>
Date: Mon, 6 Oct 2008 22:11:22 +0000 (+0200)
Subject: x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=33fb0e4eb53f16af312f9698f974e2e64af39c12

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

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.

[ This more generic PCI ID based quirk should alleviate the need for
  dmi_ignore_irq0_timer_override DMI quirks. ]

Signed-off-by: Andreas Herrmann <andreas.herrmann3 at amd.com>
Acked-by: "Maciej W. Rozycki" <macro at linux-mips.org>
Tested-by: Dmitry Torokhov <dtor at mail.ru>
Cc: <stable at kernel.org>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---

diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c
index 4353cf5..6b839b1 100644
--- a/arch/x86/kernel/early-quirks.c
+++ b/arch/x86/kernel/early-quirks.c
@@ -95,6 +95,52 @@ static void __init nvidia_bugs(int num, int slot, int func)
 
 }
 
+static u32 ati_ixp4x0_rev(int num, int slot, int func)
+{
+	u32 d;
+	u8  b;
+
+	b = read_pci_config_byte(num, slot, func, 0xac);
+	b &= ~(1<<5);
+	write_pci_config_byte(num, slot, func, 0xac, b);
+
+	d = read_pci_config(num, slot, func, 0x70);
+	d |= 1<<8;
+	write_pci_config(num, slot, func, 0x70, d);
+
+	d = read_pci_config(num, slot, func, 0x8);
+	d &= 0xff;
+	return d;
+}
+
+static void __init ati_sb4xx_bugs(int num, int slot, int func)
+{
+#if defined(CONFIG_ACPI) && defined (CONFIG_X86_IO_APIC)
+	u32 d;
+	u8  b;
+
+	if (acpi_use_timer_override)
+		return;
+
+	d = ati_ixp4x0_rev(num, slot, func);
+	if (d  < 0x82)
+		acpi_skip_timer_override = 1;
+	else {
+		/* check for IRQ0 interrupt swap */
+		outb(0x72, 0xcd6); b = inb(0xcd7);
+		if (!(b & 0x2))
+			acpi_skip_timer_override = 1;
+	}
+
+	if (acpi_skip_timer_override) {
+		printk(KERN_INFO "SB4X0 revision 0x%x\n", d);
+		printk(KERN_INFO "Ignoring ACPI timer override.\n");
+		printk(KERN_INFO "If you got timer trouble "
+		       "try acpi_use_timer_override\n");
+	}
+#endif
+}
+
 #define QFLAG_APPLY_ONCE 	0x1
 #define QFLAG_APPLIED		0x2
 #define QFLAG_DONE		(QFLAG_APPLY_ONCE|QFLAG_APPLIED)
@@ -114,6 +160,8 @@ static struct chipset early_qrk[] __initdata = {
 	  PCI_CLASS_BRIDGE_PCI, PCI_ANY_ID, QFLAG_APPLY_ONCE, via_bugs },
 	{ PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_K8_NB,
 	  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_sb4xx_bugs },
 	{}
 };
 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-8/kernel.spec,v
retrieving revision 1.554
retrieving revision 1.555
diff -u -r1.554 -r1.555
--- kernel.spec	14 Oct 2008 08:16:58 -0000	1.554
+++ kernel.spec	14 Oct 2008 09:28:03 -0000	1.555
@@ -592,6 +592,8 @@
 Patch102: linux-2.6-x86-improve-up-kernel-when-cpu-hotplug-and-smp.patch
 Patch103: linux-2.6-x86-avoid-dereferencing-beyond-stack-THREAD_SIZE.patch
 Patch104: linux-2.6-x86-Reserve-FIRST_DEVICE_VECTOR-in-used_vectors-bit.patch
+Patch105: linux-2.6-x86-early_ioremap-fix-fencepost-error.patch
+Patch106: linux-2.6-x86-sb450-skip-irq0-override-if-not-routed-to-INT2.patch
 
 Patch120: linux-2.6-pci-disable-aspm-per-acpi-fadt-setting.patch
 Patch121: linux-2.6-pci-disable-aspm-on-pre-1.1-devices.patch
@@ -1050,6 +1052,10 @@
 ApplyPatch linux-2.6-x86-avoid-dereferencing-beyond-stack-THREAD_SIZE.patch
 # reserve first device vector on x86-32
 ApplyPatch linux-2.6-x86-Reserve-FIRST_DEVICE_VECTOR-in-used_vectors-bit.patch
+#
+ApplyPatch linux-2.6-x86-early_ioremap-fix-fencepost-error.patch
+# fix boot on some broken HP notebooks (nx6...)
+ApplyPatch linux-2.6-x86-sb450-skip-irq0-override-if-not-routed-to-INT2.patch
 
 # disable ASPM on devices that don't support it
 ApplyPatch linux-2.6-pci-disable-aspm-per-acpi-fadt-setting.patch
@@ -1879,6 +1885,11 @@
 
 
 %changelog
+* Tue Oct 14 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.26.6-45
+- Two x86 fixes from F9:
+  x86, early_ioremap: fix fencepost error
+  x86: SB450: skip IRQ0 override if it is not routed to INT2 of IOAPIC
+
 * Tue Oct 14 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.26.6-44
 - Three libata fixes from F9:
   libata: always do follow-up SRST if hardreset returned -EAGAIN




More information about the scm-commits mailing list