diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-20 15:02:20 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-20 15:02:20 -0400 |
commit | efa7e8673c78cc6de2d6c367eb6f50449c57ed90 (patch) | |
tree | 2759535bd50e6d6cc4801a02106ee26f27aa610f /include/asm-ia64 | |
parent | 02d6112cd7d75bf30685ee4b2e9dc0291b4d3133 (diff) | |
parent | bd807f9c5b90c236c3d173a5815d620bc1b1316d (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] Prevent people from directly including <asm/rwsem.h>.
[IA64] remove time interpolator
[IA64] Convert to generic timekeeping/clocksource
[IA64] refresh some config files for 64K pagesize
[IA64] Delete iosapic_free_rte()
[IA64] fallocate system call
[IA64] Enable percpu vector domain for IA64_DIG
[IA64] Enable percpu vector domain for IA64_GENERIC
[IA64] Support irq migration across domain
[IA64] Add support for vector domain
[IA64] Add mapping table between irq and vector
[IA64] Check if irq is sharable
[IA64] Fix invalid irq vector assumption for iosapic
[IA64] Use dynamic irq for iosapic interrupts
[IA64] Use per iosapic lock for indirect iosapic register access
[IA64] Cleanup lock order in iosapic_register_intr
[IA64] Remove duplicated members in iosapic_rte_info
[IA64] Remove block structure for locking in iosapic.c
Diffstat (limited to 'include/asm-ia64')
-rw-r--r-- | include/asm-ia64/hw_irq.h | 18 | ||||
-rw-r--r-- | include/asm-ia64/iosapic.h | 6 | ||||
-rw-r--r-- | include/asm-ia64/irq.h | 9 | ||||
-rw-r--r-- | include/asm-ia64/rwsem.h | 4 | ||||
-rw-r--r-- | include/asm-ia64/unistd.h | 2 |
5 files changed, 32 insertions, 7 deletions
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h index c054d7a9aaa7..efa1b8f7251d 100644 --- a/include/asm-ia64/hw_irq.h +++ b/include/asm-ia64/hw_irq.h | |||
@@ -90,13 +90,27 @@ enum { | |||
90 | extern __u8 isa_irq_to_vector_map[16]; | 90 | extern __u8 isa_irq_to_vector_map[16]; |
91 | #define isa_irq_to_vector(x) isa_irq_to_vector_map[(x)] | 91 | #define isa_irq_to_vector(x) isa_irq_to_vector_map[(x)] |
92 | 92 | ||
93 | struct irq_cfg { | ||
94 | ia64_vector vector; | ||
95 | cpumask_t domain; | ||
96 | }; | ||
97 | extern spinlock_t vector_lock; | ||
98 | extern struct irq_cfg irq_cfg[NR_IRQS]; | ||
99 | #define irq_to_domain(x) irq_cfg[(x)].domain | ||
100 | DECLARE_PER_CPU(int[IA64_NUM_VECTORS], vector_irq); | ||
101 | |||
93 | 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 */ |
94 | 103 | ||
104 | extern int bind_irq_vector(int irq, int vector, cpumask_t domain); | ||
95 | extern int assign_irq_vector (int irq); /* allocate a free vector */ | 105 | extern int assign_irq_vector (int irq); /* allocate a free vector */ |
96 | extern void free_irq_vector (int vector); | 106 | extern void free_irq_vector (int vector); |
97 | extern int reserve_irq_vector (int vector); | 107 | extern int reserve_irq_vector (int vector); |
108 | extern void __setup_vector_irq(int cpu); | ||
109 | extern int reassign_irq_vector(int irq, int cpu); | ||
98 | extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect); | 110 | extern void ia64_send_ipi (int cpu, int vector, int delivery_mode, int redirect); |
99 | extern void register_percpu_irq (ia64_vector vec, struct irqaction *action); | 111 | extern void register_percpu_irq (ia64_vector vec, struct irqaction *action); |
112 | extern int check_irq_used (int irq); | ||
113 | extern void destroy_and_reserve_irq (unsigned int irq); | ||
100 | 114 | ||
101 | static inline void ia64_resend_irq(unsigned int vector) | 115 | static inline void ia64_resend_irq(unsigned int vector) |
102 | { | 116 | { |
@@ -113,7 +127,7 @@ extern irq_desc_t irq_desc[NR_IRQS]; | |||
113 | static inline unsigned int | 127 | static inline unsigned int |
114 | __ia64_local_vector_to_irq (ia64_vector vec) | 128 | __ia64_local_vector_to_irq (ia64_vector vec) |
115 | { | 129 | { |
116 | return (unsigned int) vec; | 130 | return __get_cpu_var(vector_irq)[vec]; |
117 | } | 131 | } |
118 | #endif | 132 | #endif |
119 | 133 | ||
@@ -131,7 +145,7 @@ __ia64_local_vector_to_irq (ia64_vector vec) | |||
131 | static inline ia64_vector | 145 | static inline ia64_vector |
132 | irq_to_vector (int irq) | 146 | irq_to_vector (int irq) |
133 | { | 147 | { |
134 | return (ia64_vector) irq; | 148 | return irq_cfg[irq].vector; |
135 | } | 149 | } |
136 | 150 | ||
137 | /* | 151 | /* |
diff --git a/include/asm-ia64/iosapic.h b/include/asm-ia64/iosapic.h index 421cb6b62a7c..b8f712859140 100644 --- a/include/asm-ia64/iosapic.h +++ b/include/asm-ia64/iosapic.h | |||
@@ -47,19 +47,21 @@ | |||
47 | #define IOSAPIC_MASK_SHIFT 16 | 47 | #define IOSAPIC_MASK_SHIFT 16 |
48 | #define IOSAPIC_MASK (1<<IOSAPIC_MASK_SHIFT) | 48 | #define IOSAPIC_MASK (1<<IOSAPIC_MASK_SHIFT) |
49 | 49 | ||
50 | #define IOSAPIC_VECTOR_MASK 0xffffff00 | ||
51 | |||
50 | #ifndef __ASSEMBLY__ | 52 | #ifndef __ASSEMBLY__ |
51 | 53 | ||
52 | #ifdef CONFIG_IOSAPIC | 54 | #ifdef CONFIG_IOSAPIC |
53 | 55 | ||
54 | #define NR_IOSAPICS 256 | 56 | #define NR_IOSAPICS 256 |
55 | 57 | ||
56 | static inline unsigned int iosapic_read(char __iomem *iosapic, unsigned int reg) | 58 | static inline unsigned int __iosapic_read(char __iomem *iosapic, unsigned int reg) |
57 | { | 59 | { |
58 | writel(reg, iosapic + IOSAPIC_REG_SELECT); | 60 | writel(reg, iosapic + IOSAPIC_REG_SELECT); |
59 | return readl(iosapic + IOSAPIC_WINDOW); | 61 | return readl(iosapic + IOSAPIC_WINDOW); |
60 | } | 62 | } |
61 | 63 | ||
62 | static inline void iosapic_write(char __iomem *iosapic, unsigned int reg, u32 val) | 64 | static inline void __iosapic_write(char __iomem *iosapic, unsigned int reg, u32 val) |
63 | { | 65 | { |
64 | writel(reg, iosapic + IOSAPIC_REG_SELECT); | 66 | writel(reg, iosapic + IOSAPIC_REG_SELECT); |
65 | writel(val, iosapic + IOSAPIC_WINDOW); | 67 | writel(val, iosapic + IOSAPIC_WINDOW); |
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) |
diff --git a/include/asm-ia64/rwsem.h b/include/asm-ia64/rwsem.h index 2d1640cc240a..8aba06a7b038 100644 --- a/include/asm-ia64/rwsem.h +++ b/include/asm-ia64/rwsem.h | |||
@@ -21,6 +21,10 @@ | |||
21 | #ifndef _ASM_IA64_RWSEM_H | 21 | #ifndef _ASM_IA64_RWSEM_H |
22 | #define _ASM_IA64_RWSEM_H | 22 | #define _ASM_IA64_RWSEM_H |
23 | 23 | ||
24 | #ifndef _LINUX_RWSEM_H | ||
25 | #error "Please don't include <asm/rwsem.h> directly, use <linux/rwsem.h> instead." | ||
26 | #endif | ||
27 | |||
24 | #include <linux/list.h> | 28 | #include <linux/list.h> |
25 | #include <linux/spinlock.h> | 29 | #include <linux/spinlock.h> |
26 | 30 | ||
diff --git a/include/asm-ia64/unistd.h b/include/asm-ia64/unistd.h index 441c9e001776..315f8de950a2 100644 --- a/include/asm-ia64/unistd.h +++ b/include/asm-ia64/unistd.h | |||
@@ -292,7 +292,7 @@ | |||
292 | #define __NR_sync_file_range 1300 | 292 | #define __NR_sync_file_range 1300 |
293 | #define __NR_tee 1301 | 293 | #define __NR_tee 1301 |
294 | #define __NR_vmsplice 1302 | 294 | #define __NR_vmsplice 1302 |
295 | /* 1303 reserved for move_pages */ | 295 | #define __NR_fallocate 1303 |
296 | #define __NR_getcpu 1304 | 296 | #define __NR_getcpu 1304 |
297 | #define __NR_epoll_pwait 1305 | 297 | #define __NR_epoll_pwait 1305 |
298 | #define __NR_utimensat 1306 | 298 | #define __NR_utimensat 1306 |