]> git.ipfire.org Git - people/arne_f/kernel.git/commitdiff
x86/boot: Move EISA setup to a separate file
authorThomas Gleixner <tglx@linutronix.de>
Mon, 28 Aug 2017 06:47:20 +0000 (08:47 +0200)
committerIngo Molnar <mingo@kernel.org>
Tue, 29 Aug 2017 09:42:22 +0000 (11:42 +0200)
EISA has absolutely nothing to do with traps, so move it out of traps.c
into its own eisa.c file.

Furthermore, the EISA bus detection does not need to run during
very early boot, it's good enough to run it before the EISA bus
and drivers are initialized.

I.e. instead of calling it from the very early trap_init() code,
make it a subsys_initcall().

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/20170828064956.515322409@linutronix.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/Makefile
arch/x86/kernel/eisa.c [new file with mode: 0644]
arch/x86/kernel/traps.c

index 287eac7d207ffb3b89f25283b9c82fbd62781c41..6ab5fbfa71b1e69edb6b72ddbc25392af0592405 100644 (file)
@@ -111,6 +111,7 @@ obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= paravirt-spinlocks.o
 obj-$(CONFIG_PARAVIRT_CLOCK)   += pvclock.o
 obj-$(CONFIG_X86_PMEM_LEGACY_DEVICE) += pmem.o
 
+obj-$(CONFIG_EISA)             += eisa.o
 obj-$(CONFIG_PCSPKR_PLATFORM)  += pcspeaker.o
 
 obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION) += check.o
diff --git a/arch/x86/kernel/eisa.c b/arch/x86/kernel/eisa.c
new file mode 100644 (file)
index 0000000..881f923
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * EISA specific code
+ *
+ * This file is licensed under the GPL V2
+ */
+#include <linux/ioport.h>
+#include <linux/eisa.h>
+
+static __init int eisa_bus_probe(void)
+{
+       void __iomem *p = ioremap(0x0FFFD9, 4);
+
+       if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24))
+               EISA_bus = 1;
+       iounmap(p);
+       return 0;
+}
+subsys_initcall(eisa_bus_probe);
index 556f8f53965dd3857723b1724da9cc43353637b6..309532451d949f6711b32a3553b248db27ee8174 100644 (file)
 #include <linux/smp.h>
 #include <linux/io.h>
 
-#ifdef CONFIG_EISA
-#include <linux/ioport.h>
-#include <linux/eisa.h>
-#endif
-
 #if defined(CONFIG_EDAC)
 #include <linux/edac.h>
 #endif
@@ -969,14 +964,6 @@ void __init trap_init(void)
 {
        int i;
 
-#ifdef CONFIG_EISA
-       void __iomem *p = early_ioremap(0x0FFFD9, 4);
-
-       if (readl(p) == 'E' + ('I'<<8) + ('S'<<16) + ('A'<<24))
-               EISA_bus = 1;
-       early_iounmap(p, 4);
-#endif
-
        set_intr_gate(X86_TRAP_DE, divide_error);
        set_intr_gate_ist(X86_TRAP_NMI, &nmi, NMI_STACK);
        /* int4 can be called from all */