| From foo@baz Tue Aug 14 16:14:56 CEST 2018 |
| From: Nicolai Stange <nstange@suse.de> |
| Date: Sun, 29 Jul 2018 12:15:33 +0200 |
| Subject: x86: Don't include linux/irq.h from asm/hardirq.h |
| |
| From: Nicolai Stange <nstange@suse.de> |
| |
| 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> |
| --- |
| arch/x86/include/asm/dmi.h | 2 +- |
| arch/x86/include/asm/hardirq.h | 1 - |
| arch/x86/include/asm/kvm_host.h | 1 + |
| arch/x86/kernel/apic/apic.c | 2 ++ |
| arch/x86/kernel/apic/htirq.c | 2 ++ |
| arch/x86/kernel/apic/io_apic.c | 1 + |
| arch/x86/kernel/apic/msi.c | 1 + |
| arch/x86/kernel/apic/vector.c | 1 + |
| arch/x86/kernel/fpu/core.c | 1 + |
| arch/x86/kernel/ftrace.c | 1 + |
| arch/x86/kernel/hpet.c | 1 + |
| arch/x86/kernel/i8259.c | 1 + |
| arch/x86/kernel/irq.c | 1 + |
| arch/x86/kernel/irq_32.c | 1 + |
| arch/x86/kernel/irq_64.c | 1 + |
| arch/x86/kernel/irqinit.c | 1 + |
| arch/x86/kernel/kprobes/core.c | 1 + |
| arch/x86/kernel/kprobes/opt.c | 1 + |
| arch/x86/kernel/smpboot.c | 1 + |
| arch/x86/kernel/time.c | 1 + |
| arch/x86/mm/fault.c | 1 + |
| arch/x86/mm/kaiser.c | 1 + |
| arch/x86/platform/efi/efi_64.c | 1 + |
| arch/x86/platform/efi/quirks.c | 1 + |
| arch/x86/platform/intel-mid/device_libs/platform_mrfld_wdt.c | 1 + |
| arch/x86/xen/enlighten.c | 1 + |
| arch/x86/xen/setup.c | 1 + |
| drivers/pci/host/pci-hyperv.c | 2 ++ |
| 28 files changed, 30 insertions(+), 2 deletions(-) |
| |
| --- a/arch/x86/include/asm/dmi.h |
| +++ b/arch/x86/include/asm/dmi.h |
| @@ -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) |
| --- a/arch/x86/include/asm/hardirq.h |
| +++ b/arch/x86/include/asm/hardirq.h |
| @@ -2,7 +2,6 @@ |
| #define _ASM_X86_HARDIRQ_H |
| |
| #include <linux/threads.h> |
| -#include <linux/irq.h> |
| |
| typedef struct { |
| u16 __softirq_pending; |
| --- a/arch/x86/include/asm/kvm_host.h |
| +++ b/arch/x86/include/asm/kvm_host.h |
| @@ -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> |
| --- a/arch/x86/kernel/apic/apic.c |
| +++ b/arch/x86/kernel/apic/apic.c |
| @@ -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; |
| |
| --- a/arch/x86/kernel/apic/htirq.c |
| +++ b/arch/x86/kernel/apic/htirq.c |
| @@ -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> |
| --- a/arch/x86/kernel/apic/io_apic.c |
| +++ b/arch/x86/kernel/apic/io_apic.c |
| @@ -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> |
| --- a/arch/x86/kernel/apic/msi.c |
| +++ b/arch/x86/kernel/apic/msi.c |
| @@ -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> |
| --- a/arch/x86/kernel/apic/vector.c |
| +++ b/arch/x86/kernel/apic/vector.c |
| @@ -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> |
| --- a/arch/x86/kernel/fpu/core.c |
| +++ b/arch/x86/kernel/fpu/core.c |
| @@ -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> |
| --- a/arch/x86/kernel/ftrace.c |
| +++ b/arch/x86/kernel/ftrace.c |
| @@ -26,6 +26,7 @@ |
| |
| #include <asm/cacheflush.h> |
| #include <asm/kprobes.h> |
| +#include <asm/sections.h> |
| #include <asm/ftrace.h> |
| #include <asm/nops.h> |
| |
| --- a/arch/x86/kernel/hpet.c |
| +++ b/arch/x86/kernel/hpet.c |
| @@ -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> |
| --- a/arch/x86/kernel/i8259.c |
| +++ b/arch/x86/kernel/i8259.c |
| @@ -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> |
| --- a/arch/x86/kernel/irq.c |
| +++ b/arch/x86/kernel/irq.c |
| @@ -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> |
| --- a/arch/x86/kernel/irq_32.c |
| +++ b/arch/x86/kernel/irq_32.c |
| @@ -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> |
| --- a/arch/x86/kernel/irq_64.c |
| +++ b/arch/x86/kernel/irq_64.c |
| @@ -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> |
| --- a/arch/x86/kernel/irqinit.c |
| +++ b/arch/x86/kernel/irqinit.c |
| @@ -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> |
| --- a/arch/x86/kernel/kprobes/core.c |
| +++ b/arch/x86/kernel/kprobes/core.c |
| @@ -61,6 +61,7 @@ |
| #include <asm/alternative.h> |
| #include <asm/insn.h> |
| #include <asm/debugreg.h> |
| +#include <asm/sections.h> |
| |
| #include "common.h" |
| |
| --- a/arch/x86/kernel/kprobes/opt.c |
| +++ b/arch/x86/kernel/kprobes/opt.c |
| @@ -39,6 +39,7 @@ |
| #include <asm/insn.h> |
| #include <asm/debugreg.h> |
| #include <asm/nospec-branch.h> |
| +#include <asm/sections.h> |
| |
| #include "common.h" |
| |
| --- a/arch/x86/kernel/smpboot.c |
| +++ b/arch/x86/kernel/smpboot.c |
| @@ -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; |
| --- a/arch/x86/kernel/time.c |
| +++ b/arch/x86/kernel/time.c |
| @@ -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> |
| --- a/arch/x86/mm/fault.c |
| +++ b/arch/x86/mm/fault.c |
| @@ -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> |
| --- a/arch/x86/mm/kaiser.c |
| +++ b/arch/x86/mm/kaiser.c |
| @@ -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 */ |
| --- a/arch/x86/platform/efi/efi_64.c |
| +++ b/arch/x86/platform/efi/efi_64.c |
| @@ -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. |
| --- a/arch/x86/platform/efi/quirks.c |
| +++ b/arch/x86/platform/efi/quirks.c |
| @@ -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 |
| |
| --- a/arch/x86/platform/intel-mid/device_libs/platform_mrfld_wdt.c |
| +++ b/arch/x86/platform/intel-mid/device_libs/platform_mrfld_wdt.c |
| @@ -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 |
| |
| --- a/arch/x86/xen/enlighten.c |
| +++ b/arch/x86/xen/enlighten.c |
| @@ -35,6 +35,7 @@ |
| #include <linux/frame.h> |
| |
| #include <linux/kexec.h> |
| +#include <linux/slab.h> |
| |
| #include <xen/xen.h> |
| #include <xen/events.h> |
| --- a/arch/x86/xen/setup.c |
| +++ b/arch/x86/xen/setup.c |
| @@ -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> |
| |
| --- a/drivers/pci/host/pci-hyperv.c |
| +++ b/drivers/pci/host/pci-hyperv.c |
| @@ -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> |