From: Greg Kroah-Hartman Date: Fri, 29 Jan 2010 19:42:56 +0000 (-0800) Subject: another .32 patch X-Git-Tag: v2.6.32.8~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8c68b8fb13f92e8d2afd8b98a8857d9f151d00a4;p=thirdparty%2Fkernel%2Fstable-queue.git another .32 patch --- diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 54501972a85..4351f05843a 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -33,3 +33,4 @@ sparc-tif_abi_pending-bit-removal.patch x86-get-rid-of-the-insane-tif_abi_pending-bit.patch drm-i915-add-display-hotplug-event-on-ironlake.patch input-winbond-cir-remove-dmesg-spam.patch +x86-disable-hpet-msi-on-ati-sb700-sb800.patch diff --git a/queue-2.6.32/x86-disable-hpet-msi-on-ati-sb700-sb800.patch b/queue-2.6.32/x86-disable-hpet-msi-on-ati-sb700-sb800.patch new file mode 100644 index 00000000000..161e0e6c4ff --- /dev/null +++ b/queue-2.6.32/x86-disable-hpet-msi-on-ati-sb700-sb800.patch @@ -0,0 +1,94 @@ +From venkatesh.pallipadi@intel.com Fri Jan 29 11:40:46 2010 +From: Venkatesh Pallipadi +Date: Fri, 29 Jan 2010 11:27:31 -0800 +Subject: x86: Disable HPET MSI on ATI SB700/SB800 +To: Greg KH +Cc: "Pallipadi, Venkatesh" , Mark Hounschell , "H. Peter Anvin" , "stable@kernel.org" +Message-ID: <20100129192731.GA11626@linux-os.sc.intel.com> +Content-Disposition: inline + +From: Venkatesh Pallipadi + +commit 73472a46b5b28116b145fb5fc05242c1aa8e1461 upstream + +HPET MSI on platforms with ATI SB700/SB800 as they seem to have some +side-effects on floppy DMA. Do not use HPET MSI on such platforms. + +Original problem report from Mark Hounschell +http://lkml.indiana.edu/hypermail/linux/kernel/0912.2/01118.html + +Tested-by: Mark Hounschell +Signed-off-by: Venkatesh Pallipadi +Cc: +LKML-Reference: <20100121190952.GA32523@linux-os.sc.intel.com> +Signed-off-by: H. Peter Anvin + +--- + arch/x86/include/asm/hpet.h | 1 + + arch/x86/kernel/hpet.c | 8 ++++++++ + arch/x86/kernel/quirks.c | 13 +++++++++++++ + 3 files changed, 22 insertions(+) + +--- a/arch/x86/include/asm/hpet.h ++++ b/arch/x86/include/asm/hpet.h +@@ -66,6 +66,7 @@ + extern unsigned long hpet_address; + extern unsigned long force_hpet_address; + extern int hpet_force_user; ++extern u8 hpet_msi_disable; + extern int is_hpet_enabled(void); + extern int hpet_enable(void); + extern void hpet_disable(void); +--- a/arch/x86/kernel/hpet.c ++++ b/arch/x86/kernel/hpet.c +@@ -33,6 +33,8 @@ + * HPET address is set in acpi/boot.c, when an ACPI entry exists + */ + unsigned long hpet_address; ++u8 hpet_msi_disable; ++ + #ifdef CONFIG_PCI_MSI + static unsigned long hpet_num_timers; + #endif +@@ -584,6 +586,9 @@ static void hpet_msi_capability_lookup(u + unsigned int num_timers_used = 0; + int i; + ++ if (hpet_msi_disable) ++ return; ++ + id = hpet_readl(HPET_ID); + + num_timers = ((id & HPET_ID_NUMBER) >> HPET_ID_NUMBER_SHIFT); +@@ -911,6 +916,9 @@ static __init int hpet_late_init(void) + hpet_reserve_platform_timers(hpet_readl(HPET_ID)); + hpet_print_config(); + ++ if (hpet_msi_disable) ++ return 0; ++ + for_each_online_cpu(cpu) { + hpet_cpuhp_notify(NULL, CPU_ONLINE, (void *)(long)cpu); + } +--- a/arch/x86/kernel/quirks.c ++++ b/arch/x86/kernel/quirks.c +@@ -491,6 +491,19 @@ void force_hpet_resume(void) + break; + } + } ++ ++/* ++ * HPET MSI on some boards (ATI SB700/SB800) has side effect on ++ * floppy DMA. Disable HPET MSI on such platforms. ++ */ ++static void force_disable_hpet_msi(struct pci_dev *unused) ++{ ++ hpet_msi_disable = 1; ++} ++ ++DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, ++ force_disable_hpet_msi); ++ + #endif + + #if defined(CONFIG_PCI) && defined(CONFIG_NUMA)