diff options
Diffstat (limited to 'trunk/2.6.22/20001_x86-early-quirks-unificiation.patch1')
-rw-r--r-- | trunk/2.6.22/20001_x86-early-quirks-unificiation.patch1 | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/trunk/2.6.22/20001_x86-early-quirks-unificiation.patch1 b/trunk/2.6.22/20001_x86-early-quirks-unificiation.patch1 new file mode 100644 index 0000000..12dd843 --- /dev/null +++ b/trunk/2.6.22/20001_x86-early-quirks-unificiation.patch1 @@ -0,0 +1,237 @@ +Subject: x86: Unify i386 and x86-64 early quirks + +They were already very similar; just use the same file now. + +Cc: lenb@kernel.org + +Signed-off-by: Andi Kleen <ak@suse.de> + +--- + arch/i386/kernel/Makefile | 2 + arch/i386/kernel/acpi/Makefile | 3 - + arch/i386/kernel/acpi/earlyquirk.c | 84 ------------------------------------- + arch/i386/kernel/setup.c | 4 - + arch/x86_64/kernel/early-quirks.c | 11 ++++ + include/asm-i386/acpi.h | 6 -- + include/asm-i386/dma.h | 2 + include/asm-x86_64/io_apic.h | 2 + include/asm-x86_64/proto.h | 2 + 9 files changed, 18 insertions(+), 98 deletions(-) + +--- a/arch/i386/kernel/Makefile 2007-08-27 14:01:19.000000000 -0400 ++++ b/arch/i386/kernel/Makefile 2007-08-27 14:02:11.000000000 -0400 +@@ -17,6 +17,7 @@ obj-$(CONFIG_MCA) += mca.o + obj-$(CONFIG_X86_MSR) += msr.o + obj-$(CONFIG_X86_CPUID) += cpuid.o + obj-$(CONFIG_MICROCODE) += microcode.o ++obj-$(CONFIG_PCI) += early-quirks.o + obj-$(CONFIG_APM) += apm.o + obj-$(CONFIG_X86_SMP) += smp.o smpboot.o tsc_sync.o + obj-$(CONFIG_SMP) += smpcommon.o +@@ -84,4 +85,5 @@ $(obj)/vsyscall-syms.o: $(src)/vsyscall. + + k8-y += ../../x86_64/kernel/k8.o + stacktrace-y += ../../x86_64/kernel/stacktrace.o ++early-quirks-y += ../../x86_64/kernel/early-quirks.o + +--- a/arch/i386/kernel/acpi/Makefile 2007-07-08 19:32:17.000000000 -0400 ++++ b/arch/i386/kernel/acpi/Makefile 2007-08-27 14:02:11.000000000 -0400 +@@ -1,7 +1,4 @@ + obj-$(CONFIG_ACPI) += boot.o +-ifneq ($(CONFIG_PCI),) +-obj-$(CONFIG_X86_IO_APIC) += earlyquirk.o +-endif + obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup.o + + ifneq ($(CONFIG_ACPI_PROCESSOR),) +--- a/arch/i386/kernel/acpi/earlyquirk.c 2007-07-08 19:32:17.000000000 -0400 ++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 +@@ -1,84 +0,0 @@ +-/* +- * Do early PCI probing for bug detection when the main PCI subsystem is +- * not up yet. +- */ +-#include <linux/init.h> +-#include <linux/kernel.h> +-#include <linux/pci.h> +-#include <linux/acpi.h> +- +-#include <asm/pci-direct.h> +-#include <asm/acpi.h> +-#include <asm/apic.h> +- +-#ifdef CONFIG_ACPI +- +-static int __init nvidia_hpet_check(struct acpi_table_header *header) +-{ +- return 0; +-} +-#endif +- +-static int __init check_bridge(int vendor, int device) +-{ +-#ifdef CONFIG_ACPI +- static int warned; +- /* According to Nvidia all timer overrides are bogus unless HPET +- is enabled. */ +- if (!acpi_use_timer_override && vendor == PCI_VENDOR_ID_NVIDIA) { +- if (!warned && acpi_table_parse(ACPI_SIG_HPET, +- nvidia_hpet_check)) { +- warned = 1; +- acpi_skip_timer_override = 1; +- printk(KERN_INFO "Nvidia board " +- "detected. Ignoring ACPI " +- "timer override.\n"); +- printk(KERN_INFO "If you got timer trouble " +- "try acpi_use_timer_override\n"); +- +- } +- } +-#endif +- if (vendor == PCI_VENDOR_ID_ATI && timer_over_8254 == 1) { +- timer_over_8254 = 0; +- printk(KERN_INFO "ATI board detected. Disabling timer routing " +- "over 8254.\n"); +- } +- return 0; +-} +- +-void __init check_acpi_pci(void) +-{ +- int num, slot, func; +- +- /* Assume the machine supports type 1. If not it will +- always read ffffffff and should not have any side effect. +- Actually a few buggy systems can machine check. Allow the user +- to disable it by command line option at least -AK */ +- if (!early_pci_allowed()) +- return; +- +- /* Poor man's PCI discovery */ +- for (num = 0; num < 32; num++) { +- for (slot = 0; slot < 32; slot++) { +- for (func = 0; func < 8; func++) { +- u32 class; +- u32 vendor; +- class = read_pci_config(num, slot, func, +- PCI_CLASS_REVISION); +- if (class == 0xffffffff) +- break; +- +- if ((class >> 16) != PCI_CLASS_BRIDGE_PCI) +- continue; +- +- vendor = read_pci_config(num, slot, func, +- PCI_VENDOR_ID); +- +- if (check_bridge(vendor & 0xffff, vendor >> 16)) +- return; +- } +- +- } +- } +-} +--- a/arch/i386/kernel/setup.c 2007-07-08 19:32:17.000000000 -0400 ++++ b/arch/i386/kernel/setup.c 2007-08-27 14:01:19.000000000 -0400 +@@ -627,9 +627,7 @@ void __init setup_arch(char **cmdline_p) + #endif + + #ifdef CONFIG_PCI +-#ifdef CONFIG_X86_IO_APIC +- check_acpi_pci(); /* Checks more than just ACPI actually */ +-#endif ++ early_quirks(); + #endif + + #ifdef CONFIG_ACPI +--- a/arch/x86_64/kernel/early-quirks.c 2007-07-08 19:32:17.000000000 -0400 ++++ b/arch/x86_64/kernel/early-quirks.c 2007-08-27 14:04:27.000000000 -0400 +@@ -13,9 +13,14 @@ + #include <linux/acpi.h> + #include <linux/pci_ids.h> + #include <asm/pci-direct.h> +-#include <asm/proto.h> ++#include <asm/io_apic.h> ++#include <asm/apic.h> + #include <asm/dma.h> + ++#ifdef CONFIG_X86_64 ++#include <asm/proto.h> ++#endif ++ + static void __init via_bugs(void) + { + #ifdef CONFIG_IOMMU +@@ -39,6 +44,7 @@ static int __init nvidia_hpet_check(stru + static void __init nvidia_bugs(void) + { + #ifdef CONFIG_ACPI ++#ifdef CONFIG_X86_IO_APIC + /* + * All timer overrides on Nvidia are + * wrong unless HPET is enabled. +@@ -58,17 +64,20 @@ static void __init nvidia_bugs(void) + "try acpi_use_timer_override\n"); + } + #endif ++#endif + /* RED-PEN skip them on mptables too? */ + + } + + static void __init ati_bugs(void) + { ++#ifdef CONFIG_X86_IO_APIC + if (timer_over_8254 == 1) { + timer_over_8254 = 0; + printk(KERN_INFO + "ATI board detected. Disabling timer routing over 8254.\n"); + } ++#endif + } + + struct chipset { +--- a/include/asm-i386/acpi.h 2007-07-08 19:32:17.000000000 -0400 ++++ b/include/asm-i386/acpi.h 2007-08-27 14:02:03.000000000 -0400 +@@ -81,11 +81,7 @@ int __acpi_release_global_lock(unsigned + :"=r"(n_hi), "=r"(n_lo) \ + :"0"(n_hi), "1"(n_lo)) + +-#ifdef CONFIG_X86_IO_APIC +-extern void check_acpi_pci(void); +-#else +-static inline void check_acpi_pci(void) { } +-#endif ++extern void early_quirks(void); + + #ifdef CONFIG_ACPI + extern int acpi_lapic; +--- a/include/asm-i386/dma.h 2007-07-08 19:32:17.000000000 -0400 ++++ b/include/asm-i386/dma.h 2007-08-27 14:01:19.000000000 -0400 +@@ -294,4 +294,6 @@ extern int isa_dma_bridge_buggy; + #define isa_dma_bridge_buggy (0) + #endif + ++#define MAX_DMA32_PFN ((4UL*1024*1024*1024) >> PAGE_SHIFT) ++ + #endif /* _ASM_DMA_H */ +--- a/include/asm-x86_64/io_apic.h 2007-07-08 19:32:17.000000000 -0400 ++++ b/include/asm-x86_64/io_apic.h 2007-08-27 14:01:51.000000000 -0400 +@@ -127,4 +127,6 @@ void enable_NMI_through_LVT0 (void * dum + + extern spinlock_t i8259A_lock; + ++extern int timer_over_8254; ++ + #endif +--- a/include/asm-x86_64/proto.h 2007-07-08 19:32:17.000000000 -0400 ++++ b/include/asm-x86_64/proto.h 2007-08-27 14:01:19.000000000 -0400 +@@ -106,8 +106,6 @@ extern int fix_aperture; + extern int reboot_force; + extern int notsc_setup(char *); + +-extern int timer_over_8254; +- + extern int gsi_irq_sharing(int gsi); + + extern void smp_local_timer_interrupt(void); |