aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include
diff options
context:
space:
mode:
authorDimitri Sivanich <sivanich@sgi.com>2009-10-13 16:32:36 -0400
committerIngo Molnar <mingo@elte.hu>2009-10-14 03:17:09 -0400
commit9338ad6ffb70eca97f335d93c54943828c8b209e (patch)
tree40b259ecd99f08e42d5e51ba8b346cf8e10417bc /arch/x86/include
parent6c2c502910247d2820cb630e7b28fb6bdecdbf45 (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.h29
-rw-r--r--arch/x86/include/asm/uv/uv_irq.h7
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
88extern 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 */
93struct 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
102extern struct irq_cfg *irq_cfg(unsigned int);
103extern int assign_irq_vector(int, struct irq_cfg *, const struct cpumask *);
104extern void send_cleanup_vector(struct irq_cfg *);
105extern unsigned int set_desc_affinity(struct irq_desc *, const struct cpumask *);
106extern int IO_APIC_get_PCI_irq_vector(int bus, int devfn, int pin, struct io_apic_irq_attr *irq_attr);
90extern void setup_ioapic_dest(void); 107extern void setup_ioapic_dest(void);
91 108
92extern void enable_IO_APIC(void); 109extern 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
34extern struct irq_chip uv_irq_chip;
35
36extern int
37arch_enable_uv_irq(char *, unsigned int, int, int, unsigned long, int);
38extern void arch_disable_uv_irq(int, unsigned long);
39extern int uv_set_irq_affinity(unsigned int, const struct cpumask *);
40
41extern int uv_irq_2_mmr_info(int, unsigned long *, int *); 34extern int uv_irq_2_mmr_info(int, unsigned long *, int *);
42extern int uv_setup_irq(char *, int, int, unsigned long, int); 35extern int uv_setup_irq(char *, int, int, unsigned long, int);
43extern void uv_teardown_irq(unsigned int); 36extern void uv_teardown_irq(unsigned int);