aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/hw_irq.h
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /arch/x86/include/asm/hw_irq.h
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'arch/x86/include/asm/hw_irq.h')
-rw-r--r--arch/x86/include/asm/hw_irq.h43
1 files changed, 38 insertions, 5 deletions
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
index c17411503f28..c490d89a9b7b 100644
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -29,7 +29,7 @@
29extern void apic_timer_interrupt(void); 29extern void apic_timer_interrupt(void);
30extern void x86_platform_ipi(void); 30extern void x86_platform_ipi(void);
31extern void error_interrupt(void); 31extern void error_interrupt(void);
32extern void perf_pending_interrupt(void); 32extern void irq_work_interrupt(void);
33 33
34extern void spurious_interrupt(void); 34extern void spurious_interrupt(void);
35extern void thermal_interrupt(void); 35extern void thermal_interrupt(void);
@@ -45,6 +45,30 @@ extern void invalidate_interrupt4(void);
45extern void invalidate_interrupt5(void); 45extern void invalidate_interrupt5(void);
46extern void invalidate_interrupt6(void); 46extern void invalidate_interrupt6(void);
47extern void invalidate_interrupt7(void); 47extern void invalidate_interrupt7(void);
48extern void invalidate_interrupt8(void);
49extern void invalidate_interrupt9(void);
50extern void invalidate_interrupt10(void);
51extern void invalidate_interrupt11(void);
52extern void invalidate_interrupt12(void);
53extern void invalidate_interrupt13(void);
54extern void invalidate_interrupt14(void);
55extern void invalidate_interrupt15(void);
56extern void invalidate_interrupt16(void);
57extern void invalidate_interrupt17(void);
58extern void invalidate_interrupt18(void);
59extern void invalidate_interrupt19(void);
60extern void invalidate_interrupt20(void);
61extern void invalidate_interrupt21(void);
62extern void invalidate_interrupt22(void);
63extern void invalidate_interrupt23(void);
64extern void invalidate_interrupt24(void);
65extern void invalidate_interrupt25(void);
66extern void invalidate_interrupt26(void);
67extern void invalidate_interrupt27(void);
68extern void invalidate_interrupt28(void);
69extern void invalidate_interrupt29(void);
70extern void invalidate_interrupt30(void);
71extern void invalidate_interrupt31(void);
48 72
49extern void irq_move_cleanup_interrupt(void); 73extern void irq_move_cleanup_interrupt(void);
50extern void reboot_interrupt(void); 74extern void reboot_interrupt(void);
@@ -80,6 +104,13 @@ static inline void set_io_apic_irq_attr(struct io_apic_irq_attr *irq_attr,
80 irq_attr->polarity = polarity; 104 irq_attr->polarity = polarity;
81} 105}
82 106
107struct irq_2_iommu {
108 struct intel_iommu *iommu;
109 u16 irte_index;
110 u16 sub_handle;
111 u8 irte_mask;
112};
113
83/* 114/*
84 * This is performance-critical, we want to do it O(1) 115 * This is performance-critical, we want to do it O(1)
85 * 116 *
@@ -91,15 +122,17 @@ struct irq_cfg {
91 cpumask_var_t old_domain; 122 cpumask_var_t old_domain;
92 u8 vector; 123 u8 vector;
93 u8 move_in_progress : 1; 124 u8 move_in_progress : 1;
125#ifdef CONFIG_INTR_REMAP
126 struct irq_2_iommu irq_2_iommu;
127#endif
94}; 128};
95 129
96extern struct irq_cfg *irq_cfg(unsigned int);
97extern int assign_irq_vector(int, struct irq_cfg *, const struct cpumask *); 130extern int assign_irq_vector(int, struct irq_cfg *, const struct cpumask *);
98extern void send_cleanup_vector(struct irq_cfg *); 131extern void send_cleanup_vector(struct irq_cfg *);
99 132
100struct irq_desc; 133struct irq_data;
101extern unsigned int set_desc_affinity(struct irq_desc *, const struct cpumask *, 134int __ioapic_set_affinity(struct irq_data *, const struct cpumask *,
102 unsigned int *dest_id); 135 unsigned int *dest_id);
103extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin, struct io_apic_irq_attr *irq_attr); 136extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin, struct io_apic_irq_attr *irq_attr);
104extern void setup_ioapic_dest(void); 137extern void setup_ioapic_dest(void);
105 138