diff options
44 files changed, 83 insertions, 34 deletions
diff --git a/xen/arch/x86/acpi/cpu_idle.c b/xen/arch/x86/acpi/cpu_idle.c index 3b52c5469b..32dc4250ba 100644 --- a/xen/arch/x86/acpi/cpu_idle.c +++ b/xen/arch/x86/acpi/cpu_idle.c @@ -51,6 +51,7 @@ #include <public/platform.h> #include <public/sysctl.h> #include <acpi/cpufreq/cpufreq.h> +#include <asm/apic.h> /*#define DEBUG_PM_CX*/ diff --git a/xen/arch/x86/acpi/power.c b/xen/arch/x86/acpi/power.c index 90a8fff470..f429d9914e 100644 --- a/xen/arch/x86/acpi/power.c +++ b/xen/arch/x86/acpi/power.c @@ -28,7 +28,8 @@ #include <xen/cpu.h> #include <public/platform.h> #include <asm/tboot.h> - +#include <asm/apic.h> +#include <asm/io_apic.h> #include <acpi/cpufreq/cpufreq.h> uint32_t system_reset_counter = 1; diff --git a/xen/arch/x86/cpu/amd.c b/xen/arch/x86/cpu/amd.c index 24e6c2da26..2d4192be4f 100644 --- a/xen/arch/x86/cpu/amd.c +++ b/xen/arch/x86/cpu/amd.c @@ -9,6 +9,7 @@ #include <asm/processor.h> #include <asm/hvm/support.h> #include <asm/setup.h> /* amd_init_cpu */ +#include <asm/acpi.h> #include "cpu.h" #include "amd.h" diff --git a/xen/arch/x86/cpu/mcheck/mce_intel.c b/xen/arch/x86/cpu/mcheck/mce_intel.c index 573838c4d4..e18e7d23b0 100644 --- a/xen/arch/x86/cpu/mcheck/mce_intel.c +++ b/xen/arch/x86/cpu/mcheck/mce_intel.c @@ -13,6 +13,7 @@ #include <asm/msr.h> #include <asm/p2m.h> #include <asm/mce.h> +#include <asm/apic.h> #include "mce.h" #include "x86_mca.h" diff --git a/xen/arch/x86/crash.c b/xen/arch/x86/crash.c index 1c90b6eca2..a95154771e 100644 --- a/xen/arch/x86/crash.c +++ b/xen/arch/x86/crash.c @@ -26,6 +26,8 @@ #include <asm/shared.h> #include <asm/hvm/support.h> #include <asm/hpet.h> +#include <asm/apic.h> +#include <asm/io_apic.h> static atomic_t waiting_for_crash_ipi; static unsigned int crashing_cpu; diff --git a/xen/arch/x86/domain_build.c b/xen/arch/x86/domain_build.c index 8dba898281..166509f2e2 100644 --- a/xen/arch/x86/domain_build.c +++ b/xen/arch/x86/domain_build.c @@ -32,6 +32,7 @@ #include <asm/e820.h> #include <asm/acpi.h> #include <asm/bzimage.h> /* for bzimage_parse */ +#include <asm/io_apic.h> #include <public/version.h> diff --git a/xen/arch/x86/genapic/bigsmp.c b/xen/arch/x86/genapic/bigsmp.c index 1be2e97139..95861691cf 100644 --- a/xen/arch/x86/genapic/bigsmp.c +++ b/xen/arch/x86/genapic/bigsmp.c @@ -10,6 +10,7 @@ #include <xen/init.h> #include <xen/dmi.h> #include <asm/mach-default/mach_mpparse.h> +#include <asm/io_apic.h> static int dmi_bigsmp; /* can be set by dmi scanners */ diff --git a/xen/arch/x86/genapic/default.c b/xen/arch/x86/genapic/default.c index 5665ded0c0..dbab88fab4 100644 --- a/xen/arch/x86/genapic/default.c +++ b/xen/arch/x86/genapic/default.c @@ -12,6 +12,7 @@ #include <xen/string.h> #include <xen/smp.h> #include <xen/init.h> +#include <asm/io_apic.h> #include <asm/mach-default/mach_mpparse.h> /* should be called last. */ diff --git a/xen/arch/x86/genapic/summit.c b/xen/arch/x86/genapic/summit.c index 910f2e0da5..c84f14eddd 100644 --- a/xen/arch/x86/genapic/summit.c +++ b/xen/arch/x86/genapic/summit.c @@ -13,6 +13,7 @@ #include <xen/smp.h> #include <xen/init.h> #include <asm/mach-summit/mach_mpparse.h> +#include <asm/io_apic.h> static __init int probe_summit(void) { diff --git a/xen/arch/x86/genapic/x2apic.c b/xen/arch/x86/genapic/x2apic.c index d84e66fba6..bea9cb0ade 100644 --- a/xen/arch/x86/genapic/x2apic.c +++ b/xen/arch/x86/genapic/x2apic.c @@ -17,9 +17,13 @@ * Place - Suite 330, Boston, MA 02111-1307 USA. */ +#include <xen/config.h> +#include <xen/init.h> #include <xen/cpumask.h> #include <asm/apicdef.h> #include <asm/genapic.h> +#include <asm/apic.h> +#include <asm/io_apic.h> #include <xen/smp.h> #include <asm/mach-default/mach_mpparse.h> diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c index d0c878d6bb..1eef66d5e7 100644 --- a/xen/arch/x86/hvm/hvm.c +++ b/xen/arch/x86/hvm/hvm.c @@ -55,6 +55,7 @@ #include <asm/hvm/cacheattr.h> #include <asm/hvm/trace.h> #include <asm/mtrr.h> +#include <asm/apic.h> #include <public/sched.h> #include <public/hvm/ioreq.h> #include <public/version.h> diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index c29ff34ea5..01c94c52f1 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -53,6 +53,7 @@ #include <asm/hvm/vpt.h> #include <asm/hvm/trace.h> #include <asm/hap.h> +#include <asm/apic.h> #include <asm/debugger.h> u32 svm_feature_flags; diff --git a/xen/arch/x86/hvm/svm/vpmu.c b/xen/arch/x86/hvm/svm/vpmu.c index 97163e9f20..be257834d4 100644 --- a/xen/arch/x86/hvm/svm/vpmu.c +++ b/xen/arch/x86/hvm/svm/vpmu.c @@ -27,6 +27,7 @@ #include <asm/system.h> #include <asm/regs.h> #include <asm/types.h> +#include <asm/apic.h> #include <asm/msr.h> #include <asm/msr-index.h> #include <asm/hvm/support.h> diff --git a/xen/arch/x86/hvm/vioapic.c b/xen/arch/x86/hvm/vioapic.c index 9c0033a23e..6e6b94ea7b 100644 --- a/xen/arch/x86/hvm/vioapic.c +++ b/xen/arch/x86/hvm/vioapic.c @@ -39,6 +39,7 @@ #include <asm/hvm/support.h> #include <asm/current.h> #include <asm/event.h> +#include <asm/io_apic.h> /* HACK: Route IRQ0 only to VCPU0 to prevent time jumps. */ #define IRQ0_SPECIAL_ROUTING 1 diff --git a/xen/arch/x86/hvm/viridian.c b/xen/arch/x86/hvm/viridian.c index ef48dfa3e9..2e1b4ecc08 100644 --- a/xen/arch/x86/hvm/viridian.c +++ b/xen/arch/x86/hvm/viridian.c @@ -11,6 +11,7 @@ #include <xen/domain_page.h> #include <asm/paging.h> #include <asm/p2m.h> +#include <asm/apic.h> #include <asm/hvm/support.h> #include <public/sched.h> #include <public/hvm/hvm_op.h> diff --git a/xen/arch/x86/hvm/vlapic.c b/xen/arch/x86/hvm/vlapic.c index ad0e0ceca7..da513de052 100644 --- a/xen/arch/x86/hvm/vlapic.c +++ b/xen/arch/x86/hvm/vlapic.c @@ -31,6 +31,8 @@ #include <xen/numa.h> #include <asm/current.h> #include <asm/page.h> +#include <asm/apic.h> +#include <asm/io_apic.h> #include <asm/hvm/hvm.h> #include <asm/hvm/io.h> #include <asm/hvm/support.h> @@ -803,6 +805,12 @@ int vlapic_ack_pending_irq(struct vcpu *v, int vector) return 1; } +bool_t is_vlapic_lvtpc_enabled(struct vlapic *vlapic) +{ + return (vlapic_enabled(vlapic) && + !(vlapic_get_reg(vlapic, APIC_LVTPC) & APIC_LVT_MASKED)); +} + /* Reset the VLPAIC back to its power-on/reset state. */ void vlapic_reset(struct vlapic *vlapic) { diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c index 31ee9b7cfe..ccc629e180 100644 --- a/xen/arch/x86/hvm/vmsi.c +++ b/xen/arch/x86/hvm/vmsi.c @@ -39,6 +39,7 @@ #include <asm/hvm/support.h> #include <asm/current.h> #include <asm/event.h> +#include <asm/io_apic.h> static void vmsi_inj_irq( struct domain *d, diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c index f2c143afa1..c4093154a4 100644 --- a/xen/arch/x86/hvm/vmx/vmx.c +++ b/xen/arch/x86/hvm/vmx/vmx.c @@ -53,6 +53,7 @@ #include <asm/hvm/trace.h> #include <asm/xenoprof.h> #include <asm/debugger.h> +#include <asm/apic.h> enum handler_return { HNDL_done, HNDL_unhandled, HNDL_exception_raised }; diff --git a/xen/arch/x86/hvm/vmx/vpmu_core2.c b/xen/arch/x86/hvm/vmx/vpmu_core2.c index 279d9b002e..4646600ca4 100644 --- a/xen/arch/x86/hvm/vmx/vpmu_core2.c +++ b/xen/arch/x86/hvm/vmx/vpmu_core2.c @@ -24,6 +24,7 @@ #include <asm/system.h> #include <asm/regs.h> #include <asm/types.h> +#include <asm/apic.h> #include <asm/msr.h> #include <asm/msr-index.h> #include <asm/hvm/support.h> diff --git a/xen/arch/x86/hvm/vpt.c b/xen/arch/x86/hvm/vpt.c index 096d083f74..7056769ea3 100644 --- a/xen/arch/x86/hvm/vpt.c +++ b/xen/arch/x86/hvm/vpt.c @@ -21,6 +21,7 @@ #include <asm/hvm/support.h> #include <asm/hvm/vpt.h> #include <asm/event.h> +#include <asm/apic.h> #define mode_is(d, name) \ ((d)->arch.hvm_domain.params[HVM_PARAM_TIMER_MODE] == HVMPTM_##name) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index f9ab808da4..6256e0d027 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -114,6 +114,7 @@ #include <xsm/xsm.h> #include <xen/trace.h> #include <asm/setup.h> +#include <asm/fixmap.h> #include <asm/mem_sharing.h> /* diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c index 75d4be1d20..466ff76db6 100644 --- a/xen/arch/x86/numa.c +++ b/xen/arch/x86/numa.c @@ -51,6 +51,11 @@ int numa_off __devinitdata = 0; int acpi_numa __devinitdata; +int srat_disabled(void) +{ + return numa_off || acpi_numa < 0; +} + /* * Given a shift value, try to populate memnodemap[] * Returns : diff --git a/xen/arch/x86/platform_hypercall.c b/xen/arch/x86/platform_hypercall.c index 2ab7617a86..5be2970d36 100644 --- a/xen/arch/x86/platform_hypercall.c +++ b/xen/arch/x86/platform_hypercall.c @@ -25,6 +25,7 @@ #include <acpi/cpufreq/processor_perf.h> #include <asm/edd.h> #include <asm/mtrr.h> +#include <asm/io_apic.h> #include "cpu/mtrr/mtrr.h" #include <xsm/xsm.h> diff --git a/xen/arch/x86/shutdown.c b/xen/arch/x86/shutdown.c index 6466df4ee8..dcaa79346b 100644 --- a/xen/arch/x86/shutdown.c +++ b/xen/arch/x86/shutdown.c @@ -23,6 +23,7 @@ #include <asm/processor.h> #include <asm/mpspec.h> #include <asm/tboot.h> +#include <asm/apic.h> enum reboot_type { BOOT_TRIPLE = 't', diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index 650835ff1f..239dde6fb7 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -22,6 +22,16 @@ #include <asm/hvm/support.h> #include <mach_apic.h> +int hard_smp_processor_id(void) +{ + return get_apic_id(); +} + +int logical_smp_processor_id(void) +{ + return get_logical_apic_id(); +} + /* * send_IPI_mask(cpumask, vector): sends @vector IPI to CPUs in @cpumask, * excluding the local CPU. @cpumask may be empty. diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c index e30b1528d7..1d833beff6 100644 --- a/xen/arch/x86/traps.c +++ b/xen/arch/x86/traps.c @@ -66,6 +66,7 @@ #include <asm/hvm/vpt.h> #include <asm/hypercall.h> #include <asm/mce.h> +#include <asm/apic.h> #include <public/arch-x86/cpuid.h> /* diff --git a/xen/arch/x86/x86_32/domain_page.c b/xen/arch/x86/x86_32/domain_page.c index c381a0e98f..6d09a879b3 100644 --- a/xen/arch/x86/x86_32/domain_page.c +++ b/xen/arch/x86/x86_32/domain_page.c @@ -15,6 +15,7 @@ #include <asm/flushtlb.h> #include <asm/hardirq.h> #include <asm/hvm/support.h> +#include <asm/fixmap.h> static inline struct vcpu *mapcache_current_vcpu(void) { diff --git a/xen/arch/x86/x86_64/mmconfig-shared.c b/xen/arch/x86/x86_64/mmconfig-shared.c index 905a62bf16..97e58e7231 100644 --- a/xen/arch/x86/x86_64/mmconfig-shared.c +++ b/xen/arch/x86/x86_64/mmconfig-shared.c @@ -12,6 +12,8 @@ * Author: Allen Kay <allen.m.kay@intel.com> - adapted to xen from Linux */ +#include <xen/config.h> +#include <xen/init.h> #include <xen/mm.h> #include <xen/acpi.h> #include <xen/xmalloc.h> diff --git a/xen/arch/x86/x86_64/mmconfig_64.c b/xen/arch/x86/x86_64/mmconfig_64.c index 78a7da732c..fc5cca847e 100644 --- a/xen/arch/x86/x86_64/mmconfig_64.c +++ b/xen/arch/x86/x86_64/mmconfig_64.c @@ -7,6 +7,8 @@ * copied from Linux */ +#include <xen/config.h> +#include <xen/init.h> #include <xen/mm.h> #include <xen/acpi.h> #include <xen/xmalloc.h> diff --git a/xen/common/shutdown.c b/xen/common/shutdown.c index 65d59b5ca0..6e0b412308 100644 --- a/xen/common/shutdown.c +++ b/xen/common/shutdown.c @@ -6,6 +6,7 @@ #include <xen/delay.h> #include <xen/shutdown.h> #include <xen/console.h> +#include <xen/kexec.h> #include <asm/debugger.h> #include <public/sched.h> diff --git a/xen/drivers/passthrough/amd/iommu_acpi.c b/xen/drivers/passthrough/amd/iommu_acpi.c index 7905e12f07..b2471aaf67 100644 --- a/xen/drivers/passthrough/amd/iommu_acpi.c +++ b/xen/drivers/passthrough/amd/iommu_acpi.c @@ -20,6 +20,7 @@ #include <xen/config.h> #include <xen/errno.h> +#include <asm/apicdef.h> #include <asm/amd-iommu.h> #include <asm/hvm/svm/amd-iommu-proto.h> #include <asm/hvm/svm/amd-iommu-acpi.h> diff --git a/xen/drivers/passthrough/amd/iommu_intr.c b/xen/drivers/passthrough/amd/iommu_intr.c index 8c284d3c98..fb36e5af0f 100644 --- a/xen/drivers/passthrough/amd/iommu_intr.c +++ b/xen/drivers/passthrough/amd/iommu_intr.c @@ -21,6 +21,7 @@ #include <xen/hvm/iommu.h> #include <asm/amd-iommu.h> #include <asm/hvm/svm/amd-iommu-proto.h> +#include <asm/io_apic.h> #define INTREMAP_TABLE_ORDER 1 #define INTREMAP_LENGTH 0xB diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c index 23dc95ca4e..bd8da7fe1a 100644 --- a/xen/drivers/passthrough/pci.c +++ b/xen/drivers/passthrough/pci.c @@ -26,6 +26,9 @@ #include <xen/delay.h> #include <xen/keyhandler.h> #include <xen/tasklet.h> +#ifdef CONFIG_X86 +#include <asm/msi.h> +#endif LIST_HEAD(alldevs_list); spinlock_t pcidevs_lock = SPIN_LOCK_UNLOCKED; diff --git a/xen/drivers/passthrough/vtd/intremap.c b/xen/drivers/passthrough/vtd/intremap.c index 71b423011b..03dff08e29 100644 --- a/xen/drivers/passthrough/vtd/intremap.c +++ b/xen/drivers/passthrough/vtd/intremap.c @@ -35,6 +35,8 @@ #define nr_ioapics iosapic_get_nr_iosapics() #define nr_ioapic_registers(i) iosapic_get_nr_pins(i) #else +#include <asm/apic.h> +#include <asm/io_apic.h> #define nr_ioapic_registers(i) nr_ioapic_registers[i] #endif diff --git a/xen/drivers/passthrough/vtd/utils.c b/xen/drivers/passthrough/vtd/utils.c index 8cc89f3c90..fc7d6c2cec 100644 --- a/xen/drivers/passthrough/vtd/utils.c +++ b/xen/drivers/passthrough/vtd/utils.c @@ -28,6 +28,10 @@ #include "vtd.h" #include "extern.h" +#if defined(CONFIG_X86) +#include <asm/io_apic.h> +#endif + int is_usb_device(u8 bus, u8 devfn) { u16 class = pci_conf_read16(bus, PCI_SLOT(devfn), PCI_FUNC(devfn), diff --git a/xen/drivers/passthrough/vtd/x86/vtd.c b/xen/drivers/passthrough/vtd/x86/vtd.c index bdd980c264..2c11dc775f 100644 --- a/xen/drivers/passthrough/vtd/x86/vtd.c +++ b/xen/drivers/passthrough/vtd/x86/vtd.c @@ -24,6 +24,7 @@ #include <asm/paging.h> #include <xen/iommu.h> #include <xen/numa.h> +#include <asm/fixmap.h> #include "../iommu.h" #include "../dmar.h" #include "../vtd.h" diff --git a/xen/include/asm-x86/apic.h b/xen/include/asm-x86/apic.h index 15ba62beb3..b02e7b38b9 100644 --- a/xen/include/asm-x86/apic.h +++ b/xen/include/asm-x86/apic.h @@ -219,9 +219,6 @@ extern int lapic_resume(void); extern int check_nmi_watchdog (void); extern void enable_NMI_through_LVT0 (void * dummy); -extern void watchdog_disable(void); -extern void watchdog_enable(void); - extern unsigned int nmi_watchdog; #define NMI_NONE 0 #define NMI_IO_APIC 1 diff --git a/xen/include/asm-x86/bzimage.h b/xen/include/asm-x86/bzimage.h index 31dacdf1ec..410ecd4cfe 100644 --- a/xen/include/asm-x86/bzimage.h +++ b/xen/include/asm-x86/bzimage.h @@ -2,6 +2,7 @@ #define __X86_BZIMAGE_H__ #include <xen/config.h> +#include <xen/init.h> int __init bzimage_headroom(char *image_start, unsigned long image_length); diff --git a/xen/include/asm-x86/config.h b/xen/include/asm-x86/config.h index 4235c3524f..58cbe490e6 100644 --- a/xen/include/asm-x86/config.h +++ b/xen/include/asm-x86/config.h @@ -394,4 +394,9 @@ extern unsigned long xenheap_phys_end; #define ARCH_CRASH_SAVE_VMCOREINFO +#ifndef __ASSEMBLY__ +extern void watchdog_disable(void); +extern void watchdog_enable(void); +#endif + #endif /* __X86_CONFIG_H__ */ diff --git a/xen/include/asm-x86/hvm/vlapic.h b/xen/include/asm-x86/hvm/vlapic.h index 9d0b0bdc57..eda970f780 100644 --- a/xen/include/asm-x86/hvm/vlapic.h +++ b/xen/include/asm-x86/hvm/vlapic.h @@ -74,11 +74,7 @@ static inline void vlapic_set_reg( *((uint32_t *)(&vlapic->regs->data[reg])) = val; } -static inline int is_vlapic_lvtpc_enabled(struct vlapic *vlapic) -{ - return vlapic_enabled(vlapic) && - !(vlapic_get_reg(vlapic, APIC_LVTPC) & APIC_LVT_MASKED); -} +bool_t is_vlapic_lvtpc_enabled(struct vlapic *vlapic); int vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig); diff --git a/xen/include/asm-x86/mach-generic/mach_apic.h b/xen/include/asm-x86/mach-generic/mach_apic.h index c022362606..ecf96d47c2 100644 --- a/xen/include/asm-x86/mach-generic/mach_apic.h +++ b/xen/include/asm-x86/mach-generic/mach_apic.h @@ -1,6 +1,8 @@ #ifndef __ASM_MACH_APIC_H #define __ASM_MACH_APIC_H +#include <asm/apic.h> +#include <asm/io_apic.h> #include <asm/genapic.h> #include <asm/smp.h> diff --git a/xen/include/asm-x86/numa.h b/xen/include/asm-x86/numa.h index d00b56fcf0..27d4e30e8a 100644 --- a/xen/include/asm-x86/numa.h +++ b/xen/include/asm-x86/numa.h @@ -30,10 +30,8 @@ extern void numa_add_cpu(int cpu); extern void numa_init_array(void); extern int numa_off; -static __devinit inline int srat_disabled(void) -{ - return numa_off || acpi_numa < 0; -} + +extern int srat_disabled(void); extern void numa_set_node(int cpu, int node); extern int setup_node(int pxm); extern void srat_detect_node(int cpu); diff --git a/xen/include/asm-x86/smp.h b/xen/include/asm-x86/smp.h index d2a4334ae6..76413e70b9 100644 --- a/xen/include/asm-x86/smp.h +++ b/xen/include/asm-x86/smp.h @@ -11,15 +11,9 @@ #include <asm/current.h> #endif -#ifdef CONFIG_X86_LOCAL_APIC #ifndef __ASSEMBLY__ #include <asm/bitops.h> #include <asm/mpspec.h> -#ifdef CONFIG_X86_IO_APIC -#include <asm/io_apic.h> -#endif -#include <asm/apic.h> -#endif #endif #define BAD_APICID -1U @@ -64,21 +58,8 @@ int cpu_add(uint32_t apic_id, uint32_t acpi_id, uint32_t pxm); */ #define raw_smp_processor_id() (get_processor_id()) -#ifdef CONFIG_X86_LOCAL_APIC - -static inline int hard_smp_processor_id(void) -{ - /* we don't want to mark this access volatile - bad code generation */ - return get_apic_id(); -} - -static __inline int logical_smp_processor_id(void) -{ - /* we don't want to mark this access volatile - bad code generation */ - return get_logical_apic_id(); -} - -#endif +int hard_smp_processor_id(void); +int logical_smp_processor_id(void); #endif /* !__ASSEMBLY__ */ diff --git a/xen/include/xen/irq.h b/xen/include/xen/irq.h index dae4a2a122..2889c71fa7 100644 --- a/xen/include/xen/irq.h +++ b/xen/include/xen/irq.h @@ -5,6 +5,7 @@ #include <xen/cpumask.h> #include <xen/spinlock.h> #include <xen/time.h> +#include <xen/list.h> #include <asm/regs.h> #include <asm/hardirq.h> |