From: Andi Kleen <ak@suse.de>
To: lenb@kernel.org, patches@x86-64.org, linux-kernel@vger.kernel.org
Subject: [PATCH] [6/45] x86: Unify i386 and x86-64 early quirks
Date: Fri, 21 Sep 2007 22:44:47 +0200 (CEST) [thread overview]
Message-ID: <20070921204447.4E53A14EFF@wotan.suse.de> (raw)
In-Reply-To: <200709211044.901175000@suse.de>
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 | 12 ++++-
include/asm-i386/acpi.h | 6 --
include/asm-x86_64/io_apic.h | 2
include/asm-x86_64/proto.h | 2
8 files changed, 16 insertions(+), 99 deletions(-)
Index: linux/arch/x86_64/kernel/early-quirks.c
===================================================================
--- linux.orig/arch/x86_64/kernel/early-quirks.c
+++ linux/arch/x86_64/kernel/early-quirks.c
@@ -13,9 +13,13 @@
#include <linux/acpi.h>
#include <linux/pci_ids.h>
#include <asm/pci-direct.h>
-#include <asm/proto.h>
-#include <asm/iommu.h>
#include <asm/dma.h>
+#include <asm/io_apic.h>
+#include <asm/apic.h>
+
+#ifdef CONFIG_IOMMU
+#include <asm/iommu.h>
+#endif
static void __init via_bugs(void)
{
@@ -40,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.
@@ -59,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 {
Index: linux/arch/i386/kernel/Makefile
===================================================================
--- linux.orig/arch/i386/kernel/Makefile
+++ linux/arch/i386/kernel/Makefile
@@ -18,6 +18,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
@@ -87,4 +88,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
Index: linux/arch/i386/kernel/acpi/earlyquirk.c
===================================================================
--- linux.orig/arch/i386/kernel/acpi/earlyquirk.c
+++ /dev/null
@@ -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;
- }
-
- }
- }
-}
Index: linux/arch/i386/kernel/setup.c
===================================================================
--- linux.orig/arch/i386/kernel/setup.c
+++ linux/arch/i386/kernel/setup.c
@@ -619,9 +619,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
Index: linux/include/asm-i386/acpi.h
===================================================================
--- linux.orig/include/asm-i386/acpi.h
+++ linux/include/asm-i386/acpi.h
@@ -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;
Index: linux/arch/i386/kernel/acpi/Makefile
===================================================================
--- linux.orig/arch/i386/kernel/acpi/Makefile
+++ linux/arch/i386/kernel/acpi/Makefile
@@ -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),)
Index: linux/include/asm-x86_64/io_apic.h
===================================================================
--- linux.orig/include/asm-x86_64/io_apic.h
+++ linux/include/asm-x86_64/io_apic.h
@@ -133,4 +133,6 @@ void enable_NMI_through_LVT0 (void * dum
extern spinlock_t i8259A_lock;
+extern int timer_over_8254;
+
#endif
Index: linux/include/asm-x86_64/proto.h
===================================================================
--- linux.orig/include/asm-x86_64/proto.h
+++ linux/include/asm-x86_64/proto.h
@@ -86,8 +86,6 @@ extern unsigned tsc_khz;
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);
next prev parent reply other threads:[~2007-09-21 20:46 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-21 20:44 [PATCH] [0/45] x86 2.6.24 patches review I Andi Kleen
2007-09-21 20:44 ` [PATCH] [1/45] x86: misc. constifications Andi Kleen
2007-09-21 20:44 ` [PATCH] [2/45] x86: constify stacktrace_ops Andi Kleen
2007-09-21 20:44 ` [PATCH] [3/45] x86: Separate checking of unsynchronized and unstable TSC Andi Kleen
2007-09-21 20:44 ` [PATCH] [4/45] i386: Rewrite sched_clock Andi Kleen
2007-09-21 20:44 ` [PATCH] [5/45] x86_64: Use new shared sched_clock in x86-64 too Andi Kleen
2007-09-21 20:44 ` Andi Kleen [this message]
2007-09-21 20:44 ` [PATCH] [7/45] x86_64: Replace nvidia timer override quirk with pci id list and unify quirks Andi Kleen
2007-09-21 20:44 ` [PATCH] [8/45] x86_64: Use string instruction memcpy on AMD Fam11h Andi Kleen
2007-09-22 9:29 ` Jan Engelhardt
2007-09-21 20:44 ` [PATCH] [9/45] i386: Clean up duplicate includes in arch/i386/kernel/ Andi Kleen
2007-09-21 20:44 ` [PATCH] [10/45] x86_64: x86_64 Sanitize user specified e820 memmap values Andi Kleen
2007-09-21 20:44 ` [PATCH] [11/45] x86_64: Remove rogue default m in drivers/video/Kconfig Andi Kleen
2007-09-22 3:15 ` Len Brown
2007-09-21 20:44 ` [PATCH] [12/45] i386: Fix arch/i386/kernel/nmi.c - 'unknown_nmi_panic_callback' declared 'static' but never defined warning Andi Kleen
2007-09-21 21:08 ` Dave Jones
2007-09-21 20:44 ` [PATCH] [13/45] x86_64: Increase VDSO_TEXT_OFFSET for ancient binutils Andi Kleen
2007-11-14 0:21 ` CaT
2007-11-14 0:25 ` Andi Kleen
2007-09-21 20:44 ` [PATCH] [14/45] x86: Create clflush() inline, remove hardcoded wbinvd Andi Kleen
2007-09-21 20:44 ` [PATCH] [15/45] i386: i386 add AMD64 Barcelona PMU MSR definitions to msr.h Andi Kleen
2007-09-21 20:44 ` [PATCH] [16/45] i386: do not BUG_ON() when MSR is unknown Andi Kleen
2007-09-21 20:44 ` [PATCH] [17/45] i386: make Oprofile call shutdown() only once per session Andi Kleen
2007-09-21 20:44 ` [PATCH] [18/45] x86_64: 0 -> NULL, for arch/x86_64 Andi Kleen
2007-09-21 20:45 ` [PATCH] [19/45] x86_64: Always accumulate compiler options in CFLAGS Andi Kleen
2007-09-21 20:45 ` [PATCH] [20/45] x86_64: Use 8 byte stack alignment when possible Andi Kleen
2007-09-21 21:13 ` Dave Jones
2007-09-21 22:34 ` Andi Kleen
2007-09-21 22:52 ` Dave Jones
2007-09-21 21:19 ` Jakub Jelinek
2007-09-30 22:07 ` Andi Kleen
2007-09-21 20:45 ` [PATCH] [21/45] x86_64: Some cleanups for pci gart code Andi Kleen
2007-09-21 20:45 ` [PATCH] [22/45] x86_64: Enable iommu_merge by default Andi Kleen
2007-09-21 20:45 ` [PATCH] [23/45] i386: Make callgraph use dump_trace() on i386/x86_64 Andi Kleen
2007-09-21 20:45 ` [PATCH] [24/45] x86: Introduce frame_pointer() and stack_pointer() Andi Kleen
2007-09-22 9:26 ` Christoph Hellwig
2007-10-01 16:48 ` Andi Kleen
2007-09-21 20:45 ` [PATCH] [25/45] x86_64: remove sync_Arb_IDs Andi Kleen
2007-09-21 20:45 ` [PATCH] [26/45] x86_64: clear IO_APIC before enabing apic error vector Andi Kleen
2007-09-21 20:45 ` [PATCH] [27/45] x86_64: convert mm_context_t semaphore to a mutex Andi Kleen
2007-09-21 20:45 ` [PATCH] [28/45] x86_64: clean up apicid_to_node declaration Andi Kleen
2007-09-21 20:45 ` [PATCH] [29/45] i386: Consolidate show_regs and show_registers for i386 Andi Kleen
2007-09-21 20:45 ` [PATCH] [30/45] i386: Remove local CPU logic in MTRR call to smp_call_function_single Andi Kleen
2007-09-21 20:45 ` [PATCH] [31/45] i386: make struct apic_probe static Andi Kleen
2007-09-21 20:45 ` [PATCH] [32/45] x86_64: hide cond_syscall behind __KERNEL__ Andi Kleen
2007-09-22 9:30 ` Christoph Hellwig
2007-09-21 20:45 ` [PATCH] [33/45] i386: es7000 minor cleanups Andi Kleen
2007-09-21 20:45 ` [PATCH] [34/45] i386: no need to make enable_cpu_hotplug a variable Andi Kleen
2007-09-21 20:45 ` [PATCH] [35/45] i386: make some variables static Andi Kleen
2007-09-21 20:45 ` [PATCH] [36/45] x86_64: kmalloc + memset conversion to kzalloc Andi Kleen
2007-09-21 20:45 ` [PATCH] [37/45] i386: remove -maccumulate-outgoing-args Andi Kleen
2007-09-21 20:45 ` [PATCH] [38/45] i386: setup_trampoline() must be __cpuinit Andi Kleen
2007-09-21 20:45 ` [PATCH] [39/45] x86_64: block irq balancing for timer Andi Kleen
2007-09-21 20:45 ` [PATCH] [40/45] i386: deactivate the test for the dead CONFIG_DEBUG_PAGE_TYPE Andi Kleen
2007-09-21 20:45 ` [PATCH] [41/45] i386: remove unnecessary code Andi Kleen
2007-09-21 20:45 ` [PATCH] [42/45] x86_64: use descriptor's functions instead of inline assembly Andi Kleen
2007-09-21 20:45 ` [PATCH] [43/45] i386: Clean up duplicate includes in arch/i386/xen/ Andi Kleen
2007-09-21 20:45 ` [PATCH] [44/45] i386: simplify smp_call_function_single() call sequence in cpuid Andi Kleen
2007-09-21 20:45 ` [PATCH] [45/45] i386: simplify smp_call_function_single() call sequence Andi Kleen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070921204447.4E53A14EFF@wotan.suse.de \
--to=ak@suse.de \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@x86-64.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®