diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-09-24 16:22:33 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-09-24 16:22:33 -0400 |
commit | baea7b946f00a291b166ccae7fcfed6c01530cc6 (patch) | |
tree | 4aa275fbdbec9c7b9b4629e8bee2bbecd3c6a6af /arch/arm/include | |
parent | ae19ffbadc1b2100285a5b5b3d0a4e0a11390904 (diff) | |
parent | 94e0fb086fc5663c38bbc0fe86d698be8314f82f (diff) |
Merge branch 'origin' into for-linus
Conflicts:
MAINTAINERS
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/cacheflush.h | 8 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/iop3xx-adma.h | 81 | ||||
-rw-r--r-- | arch/arm/include/asm/hardware/iop_adma.h | 3 | ||||
-rw-r--r-- | arch/arm/include/asm/mman.h | 18 | ||||
-rw-r--r-- | arch/arm/include/asm/mmu_context.h | 7 | ||||
-rw-r--r-- | arch/arm/include/asm/smp.h | 1 | ||||
-rw-r--r-- | arch/arm/include/asm/tlbflush.h | 4 | ||||
-rw-r--r-- | arch/arm/include/asm/unistd.h | 2 |
8 files changed, 94 insertions, 30 deletions
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 1a711ea8418b..fd03fb63a332 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h | |||
@@ -334,14 +334,14 @@ static inline void outer_flush_range(unsigned long start, unsigned long end) | |||
334 | #ifndef CONFIG_CPU_CACHE_VIPT | 334 | #ifndef CONFIG_CPU_CACHE_VIPT |
335 | static inline void flush_cache_mm(struct mm_struct *mm) | 335 | static inline void flush_cache_mm(struct mm_struct *mm) |
336 | { | 336 | { |
337 | if (cpu_isset(smp_processor_id(), mm->cpu_vm_mask)) | 337 | if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) |
338 | __cpuc_flush_user_all(); | 338 | __cpuc_flush_user_all(); |
339 | } | 339 | } |
340 | 340 | ||
341 | static inline void | 341 | static inline void |
342 | flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) | 342 | flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end) |
343 | { | 343 | { |
344 | if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) | 344 | if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) |
345 | __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end), | 345 | __cpuc_flush_user_range(start & PAGE_MASK, PAGE_ALIGN(end), |
346 | vma->vm_flags); | 346 | vma->vm_flags); |
347 | } | 347 | } |
@@ -349,7 +349,7 @@ flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long | |||
349 | static inline void | 349 | static inline void |
350 | flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) | 350 | flush_cache_page(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn) |
351 | { | 351 | { |
352 | if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) { | 352 | if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { |
353 | unsigned long addr = user_addr & PAGE_MASK; | 353 | unsigned long addr = user_addr & PAGE_MASK; |
354 | __cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags); | 354 | __cpuc_flush_user_range(addr, addr + PAGE_SIZE, vma->vm_flags); |
355 | } | 355 | } |
@@ -360,7 +360,7 @@ flush_ptrace_access(struct vm_area_struct *vma, struct page *page, | |||
360 | unsigned long uaddr, void *kaddr, | 360 | unsigned long uaddr, void *kaddr, |
361 | unsigned long len, int write) | 361 | unsigned long len, int write) |
362 | { | 362 | { |
363 | if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) { | 363 | if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { |
364 | unsigned long addr = (unsigned long)kaddr; | 364 | unsigned long addr = (unsigned long)kaddr; |
365 | __cpuc_coherent_kern_range(addr, addr + len); | 365 | __cpuc_coherent_kern_range(addr, addr + len); |
366 | } | 366 | } |
diff --git a/arch/arm/include/asm/hardware/iop3xx-adma.h b/arch/arm/include/asm/hardware/iop3xx-adma.h index 83e6ba338e2c..1a8c7279a28b 100644 --- a/arch/arm/include/asm/hardware/iop3xx-adma.h +++ b/arch/arm/include/asm/hardware/iop3xx-adma.h | |||
@@ -187,11 +187,74 @@ union iop3xx_desc { | |||
187 | void *ptr; | 187 | void *ptr; |
188 | }; | 188 | }; |
189 | 189 | ||
190 | /* No support for p+q operations */ | ||
191 | static inline int | ||
192 | iop_chan_pq_slot_count(size_t len, int src_cnt, int *slots_per_op) | ||
193 | { | ||
194 | BUG(); | ||
195 | return 0; | ||
196 | } | ||
197 | |||
198 | static inline void | ||
199 | iop_desc_init_pq(struct iop_adma_desc_slot *desc, int src_cnt, | ||
200 | unsigned long flags) | ||
201 | { | ||
202 | BUG(); | ||
203 | } | ||
204 | |||
205 | static inline void | ||
206 | iop_desc_set_pq_addr(struct iop_adma_desc_slot *desc, dma_addr_t *addr) | ||
207 | { | ||
208 | BUG(); | ||
209 | } | ||
210 | |||
211 | static inline void | ||
212 | iop_desc_set_pq_src_addr(struct iop_adma_desc_slot *desc, int src_idx, | ||
213 | dma_addr_t addr, unsigned char coef) | ||
214 | { | ||
215 | BUG(); | ||
216 | } | ||
217 | |||
218 | static inline int | ||
219 | iop_chan_pq_zero_sum_slot_count(size_t len, int src_cnt, int *slots_per_op) | ||
220 | { | ||
221 | BUG(); | ||
222 | return 0; | ||
223 | } | ||
224 | |||
225 | static inline void | ||
226 | iop_desc_init_pq_zero_sum(struct iop_adma_desc_slot *desc, int src_cnt, | ||
227 | unsigned long flags) | ||
228 | { | ||
229 | BUG(); | ||
230 | } | ||
231 | |||
232 | static inline void | ||
233 | iop_desc_set_pq_zero_sum_byte_count(struct iop_adma_desc_slot *desc, u32 len) | ||
234 | { | ||
235 | BUG(); | ||
236 | } | ||
237 | |||
238 | #define iop_desc_set_pq_zero_sum_src_addr iop_desc_set_pq_src_addr | ||
239 | |||
240 | static inline void | ||
241 | iop_desc_set_pq_zero_sum_addr(struct iop_adma_desc_slot *desc, int pq_idx, | ||
242 | dma_addr_t *src) | ||
243 | { | ||
244 | BUG(); | ||
245 | } | ||
246 | |||
190 | static inline int iop_adma_get_max_xor(void) | 247 | static inline int iop_adma_get_max_xor(void) |
191 | { | 248 | { |
192 | return 32; | 249 | return 32; |
193 | } | 250 | } |
194 | 251 | ||
252 | static inline int iop_adma_get_max_pq(void) | ||
253 | { | ||
254 | BUG(); | ||
255 | return 0; | ||
256 | } | ||
257 | |||
195 | static inline u32 iop_chan_get_current_descriptor(struct iop_adma_chan *chan) | 258 | static inline u32 iop_chan_get_current_descriptor(struct iop_adma_chan *chan) |
196 | { | 259 | { |
197 | int id = chan->device->id; | 260 | int id = chan->device->id; |
@@ -332,6 +395,11 @@ static inline int iop_chan_zero_sum_slot_count(size_t len, int src_cnt, | |||
332 | return slot_cnt; | 395 | return slot_cnt; |
333 | } | 396 | } |
334 | 397 | ||
398 | static inline int iop_desc_is_pq(struct iop_adma_desc_slot *desc) | ||
399 | { | ||
400 | return 0; | ||
401 | } | ||
402 | |||
335 | static inline u32 iop_desc_get_dest_addr(struct iop_adma_desc_slot *desc, | 403 | static inline u32 iop_desc_get_dest_addr(struct iop_adma_desc_slot *desc, |
336 | struct iop_adma_chan *chan) | 404 | struct iop_adma_chan *chan) |
337 | { | 405 | { |
@@ -349,6 +417,14 @@ static inline u32 iop_desc_get_dest_addr(struct iop_adma_desc_slot *desc, | |||
349 | return 0; | 417 | return 0; |
350 | } | 418 | } |
351 | 419 | ||
420 | |||
421 | static inline u32 iop_desc_get_qdest_addr(struct iop_adma_desc_slot *desc, | ||
422 | struct iop_adma_chan *chan) | ||
423 | { | ||
424 | BUG(); | ||
425 | return 0; | ||
426 | } | ||
427 | |||
352 | static inline u32 iop_desc_get_byte_count(struct iop_adma_desc_slot *desc, | 428 | static inline u32 iop_desc_get_byte_count(struct iop_adma_desc_slot *desc, |
353 | struct iop_adma_chan *chan) | 429 | struct iop_adma_chan *chan) |
354 | { | 430 | { |
@@ -756,13 +832,14 @@ static inline void iop_desc_set_block_fill_val(struct iop_adma_desc_slot *desc, | |||
756 | hw_desc->src[0] = val; | 832 | hw_desc->src[0] = val; |
757 | } | 833 | } |
758 | 834 | ||
759 | static inline int iop_desc_get_zero_result(struct iop_adma_desc_slot *desc) | 835 | static inline enum sum_check_flags |
836 | iop_desc_get_zero_result(struct iop_adma_desc_slot *desc) | ||
760 | { | 837 | { |
761 | struct iop3xx_desc_aau *hw_desc = desc->hw_desc; | 838 | struct iop3xx_desc_aau *hw_desc = desc->hw_desc; |
762 | struct iop3xx_aau_desc_ctrl desc_ctrl = hw_desc->desc_ctrl_field; | 839 | struct iop3xx_aau_desc_ctrl desc_ctrl = hw_desc->desc_ctrl_field; |
763 | 840 | ||
764 | iop_paranoia(!(desc_ctrl.tx_complete && desc_ctrl.zero_result_en)); | 841 | iop_paranoia(!(desc_ctrl.tx_complete && desc_ctrl.zero_result_en)); |
765 | return desc_ctrl.zero_result_err; | 842 | return desc_ctrl.zero_result_err << SUM_CHECK_P; |
766 | } | 843 | } |
767 | 844 | ||
768 | static inline void iop_chan_append(struct iop_adma_chan *chan) | 845 | static inline void iop_chan_append(struct iop_adma_chan *chan) |
diff --git a/arch/arm/include/asm/hardware/iop_adma.h b/arch/arm/include/asm/hardware/iop_adma.h index 385c6e8cbbd2..59b8c3892f76 100644 --- a/arch/arm/include/asm/hardware/iop_adma.h +++ b/arch/arm/include/asm/hardware/iop_adma.h | |||
@@ -86,6 +86,7 @@ struct iop_adma_chan { | |||
86 | * @idx: pool index | 86 | * @idx: pool index |
87 | * @unmap_src_cnt: number of xor sources | 87 | * @unmap_src_cnt: number of xor sources |
88 | * @unmap_len: transaction bytecount | 88 | * @unmap_len: transaction bytecount |
89 | * @tx_list: list of descriptors that are associated with one operation | ||
89 | * @async_tx: support for the async_tx api | 90 | * @async_tx: support for the async_tx api |
90 | * @group_list: list of slots that make up a multi-descriptor transaction | 91 | * @group_list: list of slots that make up a multi-descriptor transaction |
91 | * for example transfer lengths larger than the supported hw max | 92 | * for example transfer lengths larger than the supported hw max |
@@ -102,10 +103,12 @@ struct iop_adma_desc_slot { | |||
102 | u16 idx; | 103 | u16 idx; |
103 | u16 unmap_src_cnt; | 104 | u16 unmap_src_cnt; |
104 | size_t unmap_len; | 105 | size_t unmap_len; |
106 | struct list_head tx_list; | ||
105 | struct dma_async_tx_descriptor async_tx; | 107 | struct dma_async_tx_descriptor async_tx; |
106 | union { | 108 | union { |
107 | u32 *xor_check_result; | 109 | u32 *xor_check_result; |
108 | u32 *crc32_result; | 110 | u32 *crc32_result; |
111 | u32 *pq_check_result; | ||
109 | }; | 112 | }; |
110 | }; | 113 | }; |
111 | 114 | ||
diff --git a/arch/arm/include/asm/mman.h b/arch/arm/include/asm/mman.h index fc26976d8e3a..8eebf89f5ab1 100644 --- a/arch/arm/include/asm/mman.h +++ b/arch/arm/include/asm/mman.h | |||
@@ -1,17 +1 @@ | |||
1 | #ifndef __ARM_MMAN_H__ | #include <asm-generic/mman.h> | |
2 | #define __ARM_MMAN_H__ | ||
3 | |||
4 | #include <asm-generic/mman-common.h> | ||
5 | |||
6 | #define MAP_GROWSDOWN 0x0100 /* stack-like segment */ | ||
7 | #define MAP_DENYWRITE 0x0800 /* ETXTBSY */ | ||
8 | #define MAP_EXECUTABLE 0x1000 /* mark it as an executable */ | ||
9 | #define MAP_LOCKED 0x2000 /* pages are locked */ | ||
10 | #define MAP_NORESERVE 0x4000 /* don't check for reservations */ | ||
11 | #define MAP_POPULATE 0x8000 /* populate (prefault) page tables */ | ||
12 | #define MAP_NONBLOCK 0x10000 /* do not block on IO */ | ||
13 | |||
14 | #define MCL_CURRENT 1 /* lock all current mappings */ | ||
15 | #define MCL_FUTURE 2 /* lock all future mappings */ | ||
16 | |||
17 | #endif /* __ARM_MMAN_H__ */ | ||
diff --git a/arch/arm/include/asm/mmu_context.h b/arch/arm/include/asm/mmu_context.h index bcdb9291ef0c..de6cefb329dd 100644 --- a/arch/arm/include/asm/mmu_context.h +++ b/arch/arm/include/asm/mmu_context.h | |||
@@ -103,14 +103,15 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next, | |||
103 | 103 | ||
104 | #ifdef CONFIG_SMP | 104 | #ifdef CONFIG_SMP |
105 | /* check for possible thread migration */ | 105 | /* check for possible thread migration */ |
106 | if (!cpus_empty(next->cpu_vm_mask) && !cpu_isset(cpu, next->cpu_vm_mask)) | 106 | if (!cpumask_empty(mm_cpumask(next)) && |
107 | !cpumask_test_cpu(cpu, mm_cpumask(next))) | ||
107 | __flush_icache_all(); | 108 | __flush_icache_all(); |
108 | #endif | 109 | #endif |
109 | if (!cpu_test_and_set(cpu, next->cpu_vm_mask) || prev != next) { | 110 | if (!cpumask_test_and_set_cpu(cpu, mm_cpumask(next)) || prev != next) { |
110 | check_context(next); | 111 | check_context(next); |
111 | cpu_switch_mm(next->pgd, next); | 112 | cpu_switch_mm(next->pgd, next); |
112 | if (cache_is_vivt()) | 113 | if (cache_is_vivt()) |
113 | cpu_clear(cpu, prev->cpu_vm_mask); | 114 | cpumask_clear_cpu(cpu, mm_cpumask(prev)); |
114 | } | 115 | } |
115 | #endif | 116 | #endif |
116 | } | 117 | } |
diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h index a06e735b262a..e0d763be1846 100644 --- a/arch/arm/include/asm/smp.h +++ b/arch/arm/include/asm/smp.h | |||
@@ -93,7 +93,6 @@ extern void platform_cpu_enable(unsigned int cpu); | |||
93 | 93 | ||
94 | extern void arch_send_call_function_single_ipi(int cpu); | 94 | extern void arch_send_call_function_single_ipi(int cpu); |
95 | extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); | 95 | extern void arch_send_call_function_ipi_mask(const struct cpumask *mask); |
96 | #define arch_send_call_function_ipi_mask arch_send_call_function_ipi_mask | ||
97 | 96 | ||
98 | /* | 97 | /* |
99 | * show local interrupt info | 98 | * show local interrupt info |
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index c964f3fc3bc5..a45ab5dd8255 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
@@ -350,7 +350,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm) | |||
350 | if (tlb_flag(TLB_WB)) | 350 | if (tlb_flag(TLB_WB)) |
351 | dsb(); | 351 | dsb(); |
352 | 352 | ||
353 | if (cpu_isset(smp_processor_id(), mm->cpu_vm_mask)) { | 353 | if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(mm))) { |
354 | if (tlb_flag(TLB_V3_FULL)) | 354 | if (tlb_flag(TLB_V3_FULL)) |
355 | asm("mcr p15, 0, %0, c6, c0, 0" : : "r" (zero) : "cc"); | 355 | asm("mcr p15, 0, %0, c6, c0, 0" : : "r" (zero) : "cc"); |
356 | if (tlb_flag(TLB_V4_U_FULL)) | 356 | if (tlb_flag(TLB_V4_U_FULL)) |
@@ -388,7 +388,7 @@ local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr) | |||
388 | if (tlb_flag(TLB_WB)) | 388 | if (tlb_flag(TLB_WB)) |
389 | dsb(); | 389 | dsb(); |
390 | 390 | ||
391 | if (cpu_isset(smp_processor_id(), vma->vm_mm->cpu_vm_mask)) { | 391 | if (cpumask_test_cpu(smp_processor_id(), mm_cpumask(vma->vm_mm))) { |
392 | if (tlb_flag(TLB_V3_PAGE)) | 392 | if (tlb_flag(TLB_V3_PAGE)) |
393 | asm("mcr p15, 0, %0, c6, c0, 0" : : "r" (uaddr) : "cc"); | 393 | asm("mcr p15, 0, %0, c6, c0, 0" : : "r" (uaddr) : "cc"); |
394 | if (tlb_flag(TLB_V4_U_PAGE)) | 394 | if (tlb_flag(TLB_V4_U_PAGE)) |
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h index 9122c9ee18fb..89f7eade20af 100644 --- a/arch/arm/include/asm/unistd.h +++ b/arch/arm/include/asm/unistd.h | |||
@@ -390,7 +390,7 @@ | |||
390 | #define __NR_preadv (__NR_SYSCALL_BASE+361) | 390 | #define __NR_preadv (__NR_SYSCALL_BASE+361) |
391 | #define __NR_pwritev (__NR_SYSCALL_BASE+362) | 391 | #define __NR_pwritev (__NR_SYSCALL_BASE+362) |
392 | #define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE+363) | 392 | #define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE+363) |
393 | #define __NR_perf_counter_open (__NR_SYSCALL_BASE+364) | 393 | #define __NR_perf_event_open (__NR_SYSCALL_BASE+364) |
394 | 394 | ||
395 | /* | 395 | /* |
396 | * The following SWIs are ARM private. | 396 | * The following SWIs are ARM private. |