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)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 16 Dec 2018 22:09:16 +0000 (22:09 +0000)
commit f7eaf6e00fd581043bb540dfe865f1d81769b189 upstream.

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>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
arch/x86/kernel/Makefile
arch/x86/kernel/eisa.c [new file with mode: 0644]
arch/x86/kernel/traps.c

index 047f9ff2e36c13aea165959af6caeac475a650d0..3bda2d9ec0063d517b660839f0db3f7cd17023c2 100644 (file)
@@ -92,6 +92,7 @@ obj-$(CONFIG_PARAVIRT)                += paravirt.o paravirt_patch_$(BITS).o
 obj-$(CONFIG_PARAVIRT_SPINLOCKS)+= paravirt-spinlocks.o
 obj-$(CONFIG_PARAVIRT_CLOCK)   += pvclock.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 87acf447ef2a0a9274eb08ec4597918d1b89a54f..6e0df1be1c19fbda276c0b5bbd00534e30aefaad 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
@@ -796,14 +791,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 */