#ifndef _ASM_X86_HW_IRQ_H #define _ASM_X86_HW_IRQ_H /* * (C) 1992, 1993 Linus Torvalds, (C) 1997 Ingo Molnar * * moved some of the old arch/i386/kernel/irq.h to here. VY * * IRQ/IPI changes taken from work by Thomas Radke * <tomsoft@informatik.tu-chemnitz.de> * * hacked by Andi Kleen for x86-64. * unified by tglx */ #include <asm/irq_vectors.h> #ifndef __ASSEMBLY__ #include <linux/percpu.h> #include <linux/profile.h> #include <linux/smp.h> #include <linux/atomic.h> #include <asm/irq.h> #include <asm/sections.h> /* Interrupt handlers registered during init_IRQ */ extern asmlinkage void apic_timer_interrupt(void); extern asmlinkage void x86_platform_ipi(void); extern asmlinkage void kvm_posted_intr_ipi(void); extern asmlinkage void kvm_posted_intr_wakeup_ipi(void); extern asmlinkage void error_interrupt(void); extern asmlinkage void irq_work_interrupt(void); extern asmlinkage void spurious_interrupt(void); extern asmlinkage void thermal_interrupt(void); extern asmlinkage void reschedule_interrupt(void); extern asmlinkage void irq_move_cleanup_interrupt(void); extern asmlinkage void reboot_interrupt(void); extern asmlinkage void threshold_interrupt(void); extern asmlinkage void deferred_error_interrupt(void); extern asmlinkage void call_function_interrupt(void); extern asmlinkage void call_function_single_interrupt(void); #ifdef CONFIG_TRACING /* Interrupt handlers registered during init_IRQ */ extern void trace_apic_timer_interrupt(void); extern void trace_x86_platform_ipi(void); extern void trace_error_interrupt(void); extern void trace_irq_work_interrupt(void); extern void trace_spurious_interrupt(void); extern void trace_thermal_interrupt(void); extern void trace_reschedule_interrupt(void); extern void trace_threshold_interrupt(void); extern void trace_deferred_error_interrupt(void); extern void trace_call_function_interrupt(void); extern void trace_call_function_single_interrupt(void); #define trace_irq_move_cleanup_interrupt irq_move_cleanup_interrupt #define trace_reboot_interrupt reboot_interrupt #define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi #define trace_kvm_posted_intr_wakeup_ipi kvm_posted_intr_wakeup_ipi #endif /* CONFIG_TRACING */ #ifdef CONFIG_X86_LOCAL_APIC struct irq_data; struct pci_dev; struct msi_desc; enum irq_alloc_type { X86_IRQ_ALLOC_TYPE_IOAPIC = 1, X86_IRQ_ALLOC_TYPE_HPET, X86_IRQ_ALLOC_TYPE_MSI, X86_IRQ_ALLOC_TYPE_MSIX, X86_IRQ_ALLOC_TYPE_DMAR, X86_IRQ_ALLOC_TYPE_UV, }; struct irq_alloc_info { enum irq_alloc_type type; u32 flags; const struct cpumask *mask; /* CPU mask for vector allocation */ union { int unused; #ifdef CONFIG_HPET_TIMER struct { int hpet_id; int hpet_index; void *hpet_data; }; #endif #ifdef CONFIG_PCI_MSI struct { struct pci_dev *msi_dev; irq_hw_number_t msi_hwirq; }; #endif #ifdef CONFIG_X86_IO_APIC struct { int ioapic_id; int ioapic_pin; int ioapic_node; u32 ioapic_trigger : 1; u32 ioapic_polarity : 1; u32 ioapic_valid : 1; struct IO_APIC_route_entry *ioapic_entry; }; #endif #ifdef CONFIG_DMAR_TABLE struct { int dmar_id; void *dmar_data; }; #endif #ifdef CONFIG_HT_IRQ struct { int ht_pos; int ht_idx; struct pci_dev *ht_dev; void *ht_update; }; #endif #ifdef CONFIG_X86_UV struct { int uv_limit; int uv_blade; unsigned long uv_offset; char *uv_name; }; #endif #if IS_ENABLED(CONFIG_VMD) struct { struct msi_desc *desc; }; #endif }; }; struct irq_cfg { unsigned int dest_apicid; u8 vector; u8 old_vector; }; extern struct irq_cfg *irq_cfg(unsigned int irq); extern struct irq_cfg *irqd_cfg(struct irq_data *irq_data); extern void lock_vector_lock(void); extern void unlock_vector_lock(void); extern void setup_vector_irq(int cpu); #ifdef CONFIG_SMP extern void send_cleanup_vector(struct irq_cfg *); extern void irq_complete_move(struct irq_cfg *cfg); #else
static inline void send_cleanup_vector(struct irq_cfg *c) { }Contributors
Person | Tokens | Prop | Commits | CommitProp |
Jiang Liu | 11 | 100.00% | 1 | 100.00% |
Total | 11 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Thomas Gleixner | 4 | 36.36% | 1 | 25.00% |
Dimitri Sivanich | 3 | 27.27% | 1 | 25.00% |
Jiang Liu | 3 | 27.27% | 1 | 25.00% |
Suresh B. Siddha | 1 | 9.09% | 1 | 25.00% |
Total | 11 | 100.00% | 4 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Jiang Liu | 8 | 100.00% | 1 | 100.00% |
Total | 8 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Jiang Liu | 8 | 100.00% | 1 | 100.00% |
Total | 8 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
Jiang Liu | 292 | 43.98% | 10 | 25.00% |
Thomas Gleixner | 145 | 21.84% | 9 | 22.50% |
Seiji Aguchi | 98 | 14.76% | 2 | 5.00% |
Dimitri Sivanich | 28 | 4.22% | 3 | 7.50% |
Andi Kleen | 20 | 3.01% | 2 | 5.00% |
Keith Busch | 17 | 2.56% | 1 | 2.50% |
Aravind Gopalakrishnan | 13 | 1.96% | 1 | 2.50% |
Feng Wu | 12 | 1.81% | 1 | 2.50% |
Ingo Molnar | 7 | 1.05% | 1 | 2.50% |
Yang Zhang | 7 | 1.05% | 1 | 2.50% |
Peter Zijlstra | 7 | 1.05% | 2 | 5.00% |
Denys Vlasenko | 6 | 0.90% | 1 | 2.50% |
Prarit Bhargava | 5 | 0.75% | 1 | 2.50% |
H. Peter Anvin | 4 | 0.60% | 2 | 5.00% |
Arun Sharma | 1 | 0.15% | 1 | 2.50% |
Suresh B. Siddha | 1 | 0.15% | 1 | 2.50% |
Paul Gortmaker | 1 | 0.15% | 1 | 2.50% |
Total | 664 | 100.00% | 40 | 100.00% |