diff options
author | Dimitri Sivanich <sivanich@sgi.com> | 2009-10-13 16:32:36 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-10-14 03:17:09 -0400 |
commit | 9338ad6ffb70eca97f335d93c54943828c8b209e (patch) | |
tree | 40b259ecd99f08e42d5e51ba8b346cf8e10417bc /arch/x86/include/asm/hw_irq.h | |
parent | 6c2c502910247d2820cb630e7b28fb6bdecdbf45 (diff) |
x86, apic: Move SGI UV functionality out of generic IO-APIC code
Move UV specific functionality out of the generic IO-APIC code.
Signed-off-by: Dimitri Sivanich <sivanich@sgi.com>
LKML-Reference: <20091013203236.GD20543@sgi.com>
[ Cleaned up the code some more in their new places. ]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm/hw_irq.h')
-rw-r--r-- | arch/x86/include/asm/hw_irq.h | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h index ba180d93b08c..56f0877c9329 100644 --- a/arch/x86/include/asm/hw_irq.h +++ b/arch/x86/include/asm/hw_irq.h | |||
@@ -79,14 +79,31 @@ static inline void set_io_apic_irq_attr(struct io_apic_irq_attr *irq_attr, | |||
79 | int ioapic, int ioapic_pin, | 79 | int ioapic, int ioapic_pin, |
80 | int trigger, int polarity) | 80 | int trigger, int polarity) |
81 | { | 81 | { |
82 | irq_attr->ioapic = ioapic; | 82 | irq_attr->ioapic = ioapic; |
83 | irq_attr->ioapic_pin = ioapic_pin; | 83 | irq_attr->ioapic_pin = ioapic_pin; |
84 | irq_attr->trigger = trigger; | 84 | irq_attr->trigger = trigger; |
85 | irq_attr->polarity = polarity; | 85 | irq_attr->polarity = polarity; |
86 | } | 86 | } |
87 | 87 | ||
88 | extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin, | 88 | /* |
89 | struct io_apic_irq_attr *irq_attr); | 89 | * This is performance-critical, we want to do it O(1) |
90 | * | ||
91 | * Most irqs are mapped 1:1 with pins. | ||
92 | */ | ||
93 | struct irq_cfg { | ||
94 | struct irq_pin_list *irq_2_pin; | ||
95 | cpumask_var_t domain; | ||
96 | cpumask_var_t old_domain; | ||
97 | unsigned move_cleanup_count; | ||
98 | u8 vector; | ||
99 | u8 move_in_progress : 1; | ||
100 | }; | ||
101 | |||
102 | extern struct irq_cfg *irq_cfg(unsigned int); | ||
103 | extern int assign_irq_vector(int, struct irq_cfg *, const struct cpumask *); | ||
104 | extern void send_cleanup_vector(struct irq_cfg *); | ||
105 | extern unsigned int set_desc_affinity(struct irq_desc *, const struct cpumask *); | ||
106 | extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin, struct io_apic_irq_attr *irq_attr); | ||
90 | extern void setup_ioapic_dest(void); | 107 | extern void setup_ioapic_dest(void); |
91 | 108 | ||
92 | extern void enable_IO_APIC(void); | 109 | extern void enable_IO_APIC(void); |