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 | |
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')
-rw-r--r-- | arch/x86/include/asm/hw_irq.h | 29 | ||||
-rw-r--r-- | arch/x86/include/asm/uv/uv_irq.h | 7 |
2 files changed, 23 insertions, 13 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); |
diff --git a/arch/x86/include/asm/uv/uv_irq.h b/arch/x86/include/asm/uv/uv_irq.h index 5397e1290952..d6b17c760622 100644 --- a/arch/x86/include/asm/uv/uv_irq.h +++ b/arch/x86/include/asm/uv/uv_irq.h | |||
@@ -31,13 +31,6 @@ enum { | |||
31 | UV_AFFINITY_CPU | 31 | UV_AFFINITY_CPU |
32 | }; | 32 | }; |
33 | 33 | ||
34 | extern struct irq_chip uv_irq_chip; | ||
35 | |||
36 | extern int | ||
37 | arch_enable_uv_irq(char *, unsigned int, int, int, unsigned long, int); | ||
38 | extern void arch_disable_uv_irq(int, unsigned long); | ||
39 | extern int uv_set_irq_affinity(unsigned int, const struct cpumask *); | ||
40 | |||
41 | extern int uv_irq_2_mmr_info(int, unsigned long *, int *); | 34 | extern int uv_irq_2_mmr_info(int, unsigned long *, int *); |
42 | extern int uv_setup_irq(char *, int, int, unsigned long, int); | 35 | extern int uv_setup_irq(char *, int, int, unsigned long, int); |
43 | extern void uv_teardown_irq(unsigned int); | 36 | extern void uv_teardown_irq(unsigned int); |