diff options
author | Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com> | 2007-07-17 08:22:33 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2007-07-17 12:52:13 -0400 |
commit | 4994be1b3fe9120c88022ff5c0c33f6312b17adb (patch) | |
tree | b4d32c77681029d2b5dfd94b0eb5a09be0ccae9e /include/asm-ia64 | |
parent | e1b30a392835e92581db09a4e8b4b2ad53a0c370 (diff) |
[IA64] Add support for vector domain
Add fundamental support for multiple vector domain. There still exists
only one vector domain even with this patch. IRQ migration across
domain is not supported yet by this patch.
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include/asm-ia64')
-rw-r--r-- | include/asm-ia64/hw_irq.h | 4 | ||||
-rw-r--r-- | include/asm-ia64/irq.h | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h index 4eff7ff2da82..97ea3900d74a 100644 --- a/include/asm-ia64/hw_irq.h +++ b/include/asm-ia64/hw_irq.h | |||
@@ -92,14 +92,16 @@ extern __u8 isa_irq_to_vector_map[16]; | |||
92 | 92 | ||
93 | struct irq_cfg { | 93 | struct irq_cfg { |
94 | ia64_vector vector; | 94 | ia64_vector vector; |
95 | cpumask_t domain; | ||
95 | }; | 96 | }; |
96 | extern spinlock_t vector_lock; | 97 | extern spinlock_t vector_lock; |
97 | extern struct irq_cfg irq_cfg[NR_IRQS]; | 98 | extern struct irq_cfg irq_cfg[NR_IRQS]; |
99 | #define irq_to_domain(x) irq_cfg[(x)].domain | ||
98 | DECLARE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq); | 100 | DECLARE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq); |
99 | 101 | ||
100 | extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */ | 102 | extern struct hw_interrupt_type irq_type_ia64_lsapic; /* CPU-internal interrupt controller */ |
101 | 103 | ||
102 | extern int bind_irq_vector(int irq, int vector); | 104 | extern int bind_irq_vector(int irq, int vector, cpumask_t domain); |
103 | extern int assign_irq_vector (int irq); /* allocate a free vector */ | 105 | extern int assign_irq_vector (int irq); /* allocate a free vector */ |
104 | extern void free_irq_vector (int vector); | 106 | extern void free_irq_vector (int vector); |
105 | extern int reserve_irq_vector (int vector); | 107 | extern int reserve_irq_vector (int vector); |
diff --git a/include/asm-ia64/irq.h b/include/asm-ia64/irq.h index 67221615e317..35b360b82e43 100644 --- a/include/asm-ia64/irq.h +++ b/include/asm-ia64/irq.h | |||
@@ -14,8 +14,13 @@ | |||
14 | #include <linux/types.h> | 14 | #include <linux/types.h> |
15 | #include <linux/cpumask.h> | 15 | #include <linux/cpumask.h> |
16 | 16 | ||
17 | #define NR_IRQS 256 | 17 | #define NR_VECTORS 256 |
18 | #define NR_IRQ_VECTORS NR_IRQS | 18 | |
19 | #if (NR_VECTORS + 32 * NR_CPUS) < 1024 | ||
20 | #define NR_IRQS (NR_VECTORS + 32 * NR_CPUS) | ||
21 | #else | ||
22 | #define NR_IRQS 1024 | ||
23 | #endif | ||
19 | 24 | ||
20 | static __inline__ int | 25 | static __inline__ int |
21 | irq_canonicalize (int irq) | 26 | irq_canonicalize (int irq) |