x86: Don't include linux/irq.h from asm/hardirq.h
authorNicolai Stange <nstange@suse.de>
Sun, 29 Jul 2018 10:15:33 +0000 (12:15 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Aug 2018 16:14:52 +0000 (18:14 +0200)
commit 447ae316670230d7d29430e2cbf1f5db4f49d14c upstream

The next patch in this series will have to make the definition of
irq_cpustat_t available to entering_irq().

Inclusion of asm/hardirq.h into asm/apic.h would cause circular header
dependencies like

  asm/smp.h
    asm/apic.h
      asm/hardirq.h
        linux/irq.h
          linux/topology.h
            linux/smp.h
              asm/smp.h

or

  linux/gfp.h
    linux/mmzone.h
      asm/mmzone.h
        asm/mmzone_64.h
          asm/smp.h
            asm/apic.h
              asm/hardirq.h
                linux/irq.h
                  linux/irqdesc.h
                    linux/kobject.h
                      linux/sysfs.h
                        linux/kernfs.h
                          linux/idr.h
                            linux/gfp.h

and others.

This causes compilation errors because of the header guards becoming
effective in the second inclusion: symbols/macros that had been defined
before wouldn't be available to intermediate headers in the #include chain
anymore.

A possible workaround would be to move the definition of irq_cpustat_t
into its own header and include that from both, asm/hardirq.h and
asm/apic.h.

However, this wouldn't solve the real problem, namely asm/harirq.h
unnecessarily pulling in all the linux/irq.h cruft: nothing in
asm/hardirq.h itself requires it. Also, note that there are some other
archs, like e.g. arm64, which don't have that #include in their
asm/hardirq.h.

Remove the linux/irq.h #include from x86' asm/hardirq.h.

Fix resulting compilation errors by adding appropriate #includes to *.c
files as needed.

Note that some of these *.c files could be cleaned up a bit wrt. to their
set of #includes, but that should better be done from separate patches, if
at all.

Signed-off-by: Nicolai Stange <nstange@suse.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
[dwmw2: More fixes for EFI and Xen in 4.9]
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
28 files changed:
arch/x86/include/asm/dmi.h
arch/x86/include/asm/hardirq.h
arch/x86/include/asm/kvm_host.h
arch/x86/kernel/apic/apic.c
arch/x86/kernel/apic/htirq.c
arch/x86/kernel/apic/io_apic.c
arch/x86/kernel/apic/msi.c
arch/x86/kernel/apic/vector.c
arch/x86/kernel/fpu/core.c
arch/x86/kernel/ftrace.c
arch/x86/kernel/hpet.c
arch/x86/kernel/i8259.c
arch/x86/kernel/irq.c
arch/x86/kernel/irq_32.c
arch/x86/kernel/irq_64.c
arch/x86/kernel/irqinit.c
arch/x86/kernel/kprobes/core.c
arch/x86/kernel/kprobes/opt.c
arch/x86/kernel/smpboot.c
arch/x86/kernel/time.c
arch/x86/mm/fault.c
arch/x86/mm/kaiser.c
arch/x86/platform/efi/efi_64.c
arch/x86/platform/efi/quirks.c
arch/x86/platform/intel-mid/device_libs/platform_mrfld_wdt.c
arch/x86/xen/enlighten.c
arch/x86/xen/setup.c
drivers/pci/host/pci-hyperv.c

index 3c69fed215c56c3203e59d97a6c7e11381c97cf8..d8b95604a2e75e75a3b9189e5236812a2ed77c82 100644 (file)
@@ -3,8 +3,8 @@
 
 #include <linux/compiler.h>
 #include <linux/init.h>
+#include <linux/io.h>
 
-#include <asm/io.h>
 #include <asm/setup.h>
 
 static __always_inline __init void *dmi_alloc(unsigned len)
index a61b70efe7a571ab7796f6fb5fc1516272c8a2a8..987165924a32a97757e5994e9ea9511e303c6d53 100644 (file)
@@ -2,7 +2,6 @@
 #define _ASM_X86_HARDIRQ_H
 
 #include <linux/threads.h>
-#include <linux/irq.h>
 
 typedef struct {
        u16          __softirq_pending;
index 05678da200e1efc4e62c231d0195b41c1853c7dc..ce6a70ac237ae9826a9aba650106804cc971a057 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/tracepoint.h>
 #include <linux/cpumask.h>
 #include <linux/irq_work.h>
+#include <linux/irq.h>
 
 #include <linux/kvm.h>
 #include <linux/kvm_para.h>
index 28a1531a3d74ee8a47d0f7f789d9465fa223cab2..e85080b27231706173e7da7cce459edf0e49f5a1 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/dmi.h>
 #include <linux/smp.h>
 #include <linux/mm.h>
+#include <linux/irq.h>
 
 #include <asm/trace/irq_vectors.h>
 #include <asm/irq_remapping.h>
@@ -55,6 +56,7 @@
 #include <asm/mce.h>
 #include <asm/tsc.h>
 #include <asm/hypervisor.h>
+#include <asm/irq_regs.h>
 
 unsigned int num_processors;
 
index ae50d3454d7874e98f1e71e3402fb786dacb67c7..89d6e96d0038b5c15009efdf1ab46c8af5962d53 100644 (file)
@@ -16,6 +16,8 @@
 #include <linux/device.h>
 #include <linux/pci.h>
 #include <linux/htirq.h>
+#include <linux/irq.h>
+
 #include <asm/irqdomain.h>
 #include <asm/hw_irq.h>
 #include <asm/apic.h>
index cf89928dbd46dfb8a64c00dd831c5e0a9939e48a..d34629d70421f859d7e197a85744950bc576a906 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <linux/mm.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/sched.h>
index 015bbf30e3e325f5a9211a62f40f529f11801fe9..cfd17a3518bb00f992cd7305d064fa31ab954612 100644 (file)
@@ -12,6 +12,7 @@
  */
 #include <linux/mm.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/pci.h>
 #include <linux/dmar.h>
 #include <linux/hpet.h>
index 4922ab66fd290c72dfe05774e9b8729e25d1776d..c6bd3f9b4383ef11ce560d2a079561040b20e8bd 100644 (file)
@@ -11,6 +11,7 @@
  * published by the Free Software Foundation.
  */
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/init.h>
 #include <linux/compiler.h>
 #include <linux/slab.h>
index 96d80dfac383eecc5be4490cbb89cd0daacd7600..430c095cfa0e80b38f20c3bd48be69088198ce50 100644 (file)
@@ -10,6 +10,7 @@
 #include <asm/fpu/signal.h>
 #include <asm/fpu/types.h>
 #include <asm/traps.h>
+#include <asm/irq_regs.h>
 
 #include <linux/hardirq.h>
 #include <linux/pkeys.h>
index 6bf09f5594b2526806842785f5e49b44e454c0e3..5e06ffefc5db3d2dd997622524b25da4a75bbe28 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <asm/cacheflush.h>
 #include <asm/kprobes.h>
+#include <asm/sections.h>
 #include <asm/ftrace.h>
 #include <asm/nops.h>
 
index 9512529e8eabcd3ff8d6a4538774b022c6cfabda..756634f14df68d65cabb6562cc780ea11552da2b 100644 (file)
@@ -1,6 +1,7 @@
 #include <linux/clocksource.h>
 #include <linux/clockchips.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/export.h>
 #include <linux/delay.h>
 #include <linux/errno.h>
index 4e3b8a587c882ee8a0e2c39678fde12738c7752c..26d5451b6b4213df29b6857a3262a2b0840156dc 100644 (file)
@@ -4,6 +4,7 @@
 #include <linux/sched.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/timex.h>
 #include <linux/random.h>
 #include <linux/init.h>
index 8a7ad9fb22c15931bd1796e0cda2f46778935ff8..c6f0ef1d9ab7851a7a5185285f40fc6358a2f651 100644 (file)
@@ -10,6 +10,7 @@
 #include <linux/ftrace.h>
 #include <linux/delay.h>
 #include <linux/export.h>
+#include <linux/irq.h>
 
 #include <asm/apic.h>
 #include <asm/io_apic.h>
index 2763573ee1d2fea75a10eb7c0e78eb572e398268..5aaa39a1082315759fbec0daa906ee055ca458c7 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <linux/seq_file.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/kernel_stat.h>
 #include <linux/notifier.h>
 #include <linux/cpu.h>
index 9ebd0b0e73d968a07b11312b0e438a33dedeecc4..bcd1b82c86e8147025ed64173f5322073cfbfc1b 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <linux/kernel_stat.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/seq_file.h>
 #include <linux/delay.h>
 #include <linux/ftrace.h>
index f480b38a03c35b0e2ffa377d4d84aaa4f42f58c0..eeb77e5e5179713a6af36deeadb2f5c56c8198fa 100644 (file)
@@ -4,6 +4,7 @@
 #include <linux/sched.h>
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/timex.h>
 #include <linux/random.h>
 #include <linux/kprobes.h>
index 1fa7783fa51d77a4e0f3532d433a51d75fee498e..64a70b2e22856ca4256bfd7eb8b98ceee0e0378c 100644 (file)
@@ -61,6 +61,7 @@
 #include <asm/alternative.h>
 #include <asm/insn.h>
 #include <asm/debugreg.h>
+#include <asm/sections.h>
 
 #include "common.h"
 
index 1808a9cc7701a72d5d3e72d3083b2aee7e46f1f3..1009d63a2b79fa759150322d8f42c205599a1fc5 100644 (file)
@@ -39,6 +39,7 @@
 #include <asm/insn.h>
 #include <asm/debugreg.h>
 #include <asm/nospec-branch.h>
+#include <asm/sections.h>
 
 #include "common.h"
 
index 168cc3baadf6f0c9e2418ab0eacbad703fe08310..8e0fbce6dfddcdd21b0e78495e87c620bd4234c3 100644 (file)
@@ -76,6 +76,7 @@
 #include <asm/realmode.h>
 #include <asm/misc.h>
 #include <asm/spec-ctrl.h>
+#include <asm/hw_irq.h>
 
 /* Number of siblings per CPU package */
 int smp_num_siblings = 1;
index d39c09119db6d2bf9e7ed6f1921f26f45dee3019..f8a0518d28104e3fadacfba6b5077317ae007244 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <linux/clockchips.h>
 #include <linux/interrupt.h>
+#include <linux/irq.h>
 #include <linux/i8253.h>
 #include <linux/time.h>
 #include <linux/export.h>
index ae23c996e3a803137d704da5ec134058191ec2b7..acef3c6a32a26d641e00d1125554735fdb58ff96 100644 (file)
@@ -23,6 +23,7 @@
 #include <asm/vsyscall.h>              /* emulate_vsyscall             */
 #include <asm/vm86.h>                  /* struct vm86                  */
 #include <asm/mmu_context.h>           /* vma_pkey()                   */
+#include <asm/sections.h>
 
 #define CREATE_TRACE_POINTS
 #include <asm/trace/exceptions.h>
index ec678aafa3f866bdd44b011e1e8b80de0ff3106a..3f729e20f0e3fc6ed8e76b8058eff49dc8bd67fa 100644 (file)
@@ -20,6 +20,7 @@
 #include <asm/desc.h>
 #include <asm/cmdline.h>
 #include <asm/vsyscall.h>
+#include <asm/sections.h>
 
 int kaiser_enabled __read_mostly = 1;
 EXPORT_SYMBOL(kaiser_enabled); /* for inlined TLB flush functions */
index dcb2d9d185a2292f10753dcd00d1afe99c830ff7..351a55dc4a1dce9ae70575f7cb0eff3c3412e154 100644 (file)
@@ -45,6 +45,7 @@
 #include <asm/realmode.h>
 #include <asm/time.h>
 #include <asm/pgalloc.h>
+#include <asm/sections.h>
 
 /*
  * We allocate runtime services regions bottom-up, starting from -4G, i.e.
index 393a0c0288d159f39ff9020281128b30b2a3873d..dee99391d7b2ca119716ee9c0578d7e1bfe11e24 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/dmi.h>
 #include <asm/efi.h>
 #include <asm/uv/uv.h>
+#include <asm/sections.h>
 
 #define EFI_MIN_RESERVE 5120
 
index 10bad1e55fcc5caa136f8ae6c04b233ad68f9a5f..85e112ea7aff85036087492260c89292205923e1 100644 (file)
@@ -18,6 +18,7 @@
 #include <asm/intel-mid.h>
 #include <asm/intel_scu_ipc.h>
 #include <asm/io_apic.h>
+#include <asm/hw_irq.h>
 
 #define TANGIER_EXT_TIMER0_MSI 12
 
index 2986a13b9786db2d553a9d3dd66dcc984d05921c..db7cf8727e1cfacc1e7f6ea2ce6e72622d36a2b9 100644 (file)
@@ -35,6 +35,7 @@
 #include <linux/frame.h>
 
 #include <linux/kexec.h>
+#include <linux/slab.h>
 
 #include <xen/xen.h>
 #include <xen/events.h>
index 9f21b0c5945dfbf4a00c35d3ab5b613336c7c6fe..36bfafb2a853acadcae4838f4b3274bcf3af4413 100644 (file)
@@ -18,6 +18,7 @@
 #include <asm/setup.h>
 #include <asm/acpi.h>
 #include <asm/numa.h>
+#include <asm/sections.h>
 #include <asm/xen/hypervisor.h>
 #include <asm/xen/hypercall.h>
 
index d392a55ec0a9251ea784b01540bcfbffb4e1216e..b4d8ccfd9f7c2c318e61f72e1cdd2f4714f2d87d 100644 (file)
@@ -52,6 +52,8 @@
 #include <linux/pci.h>
 #include <linux/semaphore.h>
 #include <linux/irqdomain.h>
+#include <linux/irq.h>
+
 #include <asm/irqdomain.h>
 #include <asm/apic.h>
 #include <linux/msi.h>