/* SPDX-License-Identifier: GPL-2.0 */ #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 kvm_posted_intr_nested_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_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 |
Jiang Liu | 7 | 63.64% | 2 | 66.67% |
Thomas Gleixner | 4 | 36.36% | 1 | 33.33% |
Total | 11 | 100.00% | 3 | 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 | 306 | 53.40% | 9 | 23.08% |
Thomas Gleixner | 145 | 25.31% | 8 | 20.51% |
Andi Kleen | 20 | 3.49% | 2 | 5.13% |
Keith Busch | 17 | 2.97% | 1 | 2.56% |
Dimitri Sivanich | 13 | 2.27% | 3 | 7.69% |
Seiji Aguchi | 9 | 1.57% | 2 | 5.13% |
Wincy Van | 8 | 1.40% | 1 | 2.56% |
Aravind Gopalakrishnan | 8 | 1.40% | 1 | 2.56% |
Feng Wu | 8 | 1.40% | 1 | 2.56% |
Yang Zhang | 7 | 1.22% | 1 | 2.56% |
Peter Zijlstra | 7 | 1.22% | 2 | 5.13% |
Ingo Molnar | 7 | 1.22% | 1 | 2.56% |
Denys Vlasenko | 6 | 1.05% | 1 | 2.56% |
Prarit Bhargava | 5 | 0.87% | 1 | 2.56% |
H. Peter Anvin | 4 | 0.70% | 2 | 5.13% |
Greg Kroah-Hartman | 1 | 0.17% | 1 | 2.56% |
Paul Gortmaker | 1 | 0.17% | 1 | 2.56% |
Arun Sharma | 1 | 0.17% | 1 | 2.56% |
Total | 573 | 100.00% | 39 | 100.00% |