aboutsummaryrefslogtreecommitdiffstats
path: root/arch/tile
diff options
context:
space:
mode:
authorJiri Kosina <jkosina@suse.cz>2011-04-26 04:22:15 -0400
committerJiri Kosina <jkosina@suse.cz>2011-04-26 04:22:59 -0400
commit07f9479a40cc778bc1462ada11f95b01360ae4ff (patch)
tree0676cf38df3844004bb3ebfd99dfa67a4a8998f5 /arch/tile
parent9d5e6bdb3013acfb311ab407eeca0b6a6a3dedbf (diff)
parentcd2e49e90f1cae7726c9a2c54488d881d7f1cd1c (diff)
Merge branch 'master' into for-next
Fast-forwarded to current state of Linus' tree as there are patches to be applied for files that didn't exist on the old branch.
Diffstat (limited to 'arch/tile')
-rw-r--r--arch/tile/Kconfig4
-rw-r--r--arch/tile/include/asm/bitops.h3
-rw-r--r--arch/tile/include/asm/thread_info.h2
-rw-r--r--arch/tile/include/hv/drv_xgbe_intf.h2
-rw-r--r--arch/tile/include/hv/hypervisor.h4
-rw-r--r--arch/tile/kernel/irq.c45
-rw-r--r--arch/tile/kernel/pci.c4
-rw-r--r--arch/tile/kernel/process.c4
-rw-r--r--arch/tile/lib/atomic_32.c12
-rw-r--r--arch/tile/mm/fault.c2
-rw-r--r--arch/tile/mm/hugetlbpage.c2
-rw-r--r--arch/tile/mm/pgtable.c2
12 files changed, 22 insertions, 64 deletions
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig
index f3b78701c219..e32b0c23c4c8 100644
--- a/arch/tile/Kconfig
+++ b/arch/tile/Kconfig
@@ -11,7 +11,7 @@ config TILE
11 select HAVE_GENERIC_HARDIRQS 11 select HAVE_GENERIC_HARDIRQS
12 select GENERIC_IRQ_PROBE 12 select GENERIC_IRQ_PROBE
13 select GENERIC_PENDING_IRQ if SMP 13 select GENERIC_PENDING_IRQ if SMP
14 select GENERIC_HARDIRQS_NO_DEPRECATED 14 select GENERIC_IRQ_SHOW
15 15
16# FIXME: investigate whether we need/want these options. 16# FIXME: investigate whether we need/want these options.
17# select HAVE_IOREMAP_PROT 17# select HAVE_IOREMAP_PROT
@@ -51,7 +51,7 @@ config GENERIC_TIME
51config GENERIC_CLOCKEVENTS 51config GENERIC_CLOCKEVENTS
52 def_bool y 52 def_bool y
53 53
54# FIXME: tilegx can implement a more efficent rwsem. 54# FIXME: tilegx can implement a more efficient rwsem.
55config RWSEM_GENERIC_SPINLOCK 55config RWSEM_GENERIC_SPINLOCK
56 def_bool y 56 def_bool y
57 57
diff --git a/arch/tile/include/asm/bitops.h b/arch/tile/include/asm/bitops.h
index 6d4f0ff2c68c..132e6bbd07e9 100644
--- a/arch/tile/include/asm/bitops.h
+++ b/arch/tile/include/asm/bitops.h
@@ -122,7 +122,6 @@ static inline unsigned long __arch_hweight64(__u64 w)
122#include <asm-generic/bitops/lock.h> 122#include <asm-generic/bitops/lock.h>
123#include <asm-generic/bitops/find.h> 123#include <asm-generic/bitops/find.h>
124#include <asm-generic/bitops/sched.h> 124#include <asm-generic/bitops/sched.h>
125#include <asm-generic/bitops/ext2-non-atomic.h> 125#include <asm-generic/bitops/le.h>
126#include <asm-generic/bitops/minix.h>
127 126
128#endif /* _ASM_TILE_BITOPS_H */ 127#endif /* _ASM_TILE_BITOPS_H */
diff --git a/arch/tile/include/asm/thread_info.h b/arch/tile/include/asm/thread_info.h
index 9e8e9c4dfa2a..3405b52853b8 100644
--- a/arch/tile/include/asm/thread_info.h
+++ b/arch/tile/include/asm/thread_info.h
@@ -84,7 +84,7 @@ register unsigned long stack_pointer __asm__("sp");
84 ((struct thread_info *)(stack_pointer & -THREAD_SIZE)) 84 ((struct thread_info *)(stack_pointer & -THREAD_SIZE))
85 85
86#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR 86#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
87extern struct thread_info *alloc_thread_info(struct task_struct *task); 87extern struct thread_info *alloc_thread_info_node(struct task_struct *task, int node);
88extern void free_thread_info(struct thread_info *info); 88extern void free_thread_info(struct thread_info *info);
89 89
90/* Sit on a nap instruction until interrupted. */ 90/* Sit on a nap instruction until interrupted. */
diff --git a/arch/tile/include/hv/drv_xgbe_intf.h b/arch/tile/include/hv/drv_xgbe_intf.h
index 146e47d5334b..f13188ac281a 100644
--- a/arch/tile/include/hv/drv_xgbe_intf.h
+++ b/arch/tile/include/hv/drv_xgbe_intf.h
@@ -319,7 +319,7 @@ typedef union
319 * is an error code, or zero if no error. The val0 member is the 319 * is an error code, or zero if no error. The val0 member is the
320 * updated value of seqno; it has been incremented by 1 for each 320 * updated value of seqno; it has been incremented by 1 for each
321 * packet sent. That increment may be less than nentries if an 321 * packet sent. That increment may be less than nentries if an
322 * error occured, or if some of the entries in the vector contain 322 * error occurred, or if some of the entries in the vector contain
323 * handles equal to NETIO_PKT_HANDLE_NONE. The val1 member is the 323 * handles equal to NETIO_PKT_HANDLE_NONE. The val1 member is the
324 * updated value of nentries; it has been decremented by 1 for each 324 * updated value of nentries; it has been decremented by 1 for each
325 * vector entry processed. Again, that decrement may be less than 325 * vector entry processed. Again, that decrement may be less than
diff --git a/arch/tile/include/hv/hypervisor.h b/arch/tile/include/hv/hypervisor.h
index 1b8bf03d62a0..ee41bca4c8c4 100644
--- a/arch/tile/include/hv/hypervisor.h
+++ b/arch/tile/include/hv/hypervisor.h
@@ -1340,7 +1340,7 @@ typedef struct
1340 * this operation. If any permanent delivery errors were encountered, 1340 * this operation. If any permanent delivery errors were encountered,
1341 * the routine returns HV_ERECIP. In the event of permanent delivery 1341 * the routine returns HV_ERECIP. In the event of permanent delivery
1342 * errors, it may be the case that delivery was not attempted to all 1342 * errors, it may be the case that delivery was not attempted to all
1343 * recipients; if any messages were succesfully delivered, however, 1343 * recipients; if any messages were successfully delivered, however,
1344 * recipients' state values will be updated appropriately. 1344 * recipients' state values will be updated appropriately.
1345 * 1345 *
1346 * It is explicitly legal to specify a recipient structure whose state 1346 * It is explicitly legal to specify a recipient structure whose state
@@ -1359,7 +1359,7 @@ typedef struct
1359 * never call hv_receive_message, or could register a different state 1359 * never call hv_receive_message, or could register a different state
1360 * buffer, losing the message. 1360 * buffer, losing the message.
1361 * 1361 *
1362 * Specifiying the same recipient more than once in the recipient list 1362 * Specifying the same recipient more than once in the recipient list
1363 * is an error, which will not result in an error return but which may 1363 * is an error, which will not result in an error return but which may
1364 * or may not result in more than one message being delivered to the 1364 * or may not result in more than one message being delivered to the
1365 * recipient tile. 1365 * recipient tile.
diff --git a/arch/tile/kernel/irq.c b/arch/tile/kernel/irq.c
index 0baa7580121f..aa0134db2dd6 100644
--- a/arch/tile/kernel/irq.c
+++ b/arch/tile/kernel/irq.c
@@ -241,14 +241,14 @@ void tile_irq_activate(unsigned int irq, int tile_irq_type)
241 irq_flow_handler_t handle = handle_level_irq; 241 irq_flow_handler_t handle = handle_level_irq;
242 if (tile_irq_type == TILE_IRQ_PERCPU) 242 if (tile_irq_type == TILE_IRQ_PERCPU)
243 handle = handle_percpu_irq; 243 handle = handle_percpu_irq;
244 set_irq_chip_and_handler(irq, &tile_irq_chip, handle); 244 irq_set_chip_and_handler(irq, &tile_irq_chip, handle);
245 245
246 /* 246 /*
247 * Flag interrupts that are hardware-cleared so that ack() 247 * Flag interrupts that are hardware-cleared so that ack()
248 * won't clear them. 248 * won't clear them.
249 */ 249 */
250 if (tile_irq_type == TILE_IRQ_HW_CLEAR) 250 if (tile_irq_type == TILE_IRQ_HW_CLEAR)
251 set_irq_chip_data(irq, (void *)IS_HW_CLEARED); 251 irq_set_chip_data(irq, (void *)IS_HW_CLEARED);
252} 252}
253EXPORT_SYMBOL(tile_irq_activate); 253EXPORT_SYMBOL(tile_irq_activate);
254 254
@@ -262,47 +262,6 @@ void ack_bad_irq(unsigned int irq)
262 * Generic, controller-independent functions: 262 * Generic, controller-independent functions:
263 */ 263 */
264 264
265int show_interrupts(struct seq_file *p, void *v)
266{
267 int i = *(loff_t *) v, j;
268 struct irqaction *action;
269 unsigned long flags;
270
271 if (i == 0) {
272 seq_printf(p, " ");
273 for (j = 0; j < NR_CPUS; j++)
274 if (cpu_online(j))
275 seq_printf(p, "CPU%-8d", j);
276 seq_putc(p, '\n');
277 }
278
279 if (i < NR_IRQS) {
280 struct irq_desc *desc = irq_to_desc(i);
281
282 raw_spin_lock_irqsave(&desc->lock, flags);
283 action = desc->action;
284 if (!action)
285 goto skip;
286 seq_printf(p, "%3d: ", i);
287#ifndef CONFIG_SMP
288 seq_printf(p, "%10u ", kstat_irqs(i));
289#else
290 for_each_online_cpu(j)
291 seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
292#endif
293 seq_printf(p, " %14s", get_irq_desc_chip(desc)->name);
294 seq_printf(p, " %s", action->name);
295
296 for (action = action->next; action; action = action->next)
297 seq_printf(p, ", %s", action->name);
298
299 seq_putc(p, '\n');
300skip:
301 raw_spin_unlock_irqrestore(&desc->lock, flags);
302 }
303 return 0;
304}
305
306#if CHIP_HAS_IPI() 265#if CHIP_HAS_IPI()
307int create_irq(void) 266int create_irq(void)
308{ 267{
diff --git a/arch/tile/kernel/pci.c b/arch/tile/kernel/pci.c
index a1ee25be9ad9..ea38f0c9ec7c 100644
--- a/arch/tile/kernel/pci.c
+++ b/arch/tile/kernel/pci.c
@@ -36,7 +36,7 @@
36 * Initialization flow and process 36 * Initialization flow and process
37 * ------------------------------- 37 * -------------------------------
38 * 38 *
39 * This files containes the routines to search for PCI buses, 39 * This files contains the routines to search for PCI buses,
40 * enumerate the buses, and configure any attached devices. 40 * enumerate the buses, and configure any attached devices.
41 * 41 *
42 * There are two entry points here: 42 * There are two entry points here:
@@ -519,7 +519,7 @@ static int __devinit tile_cfg_read(struct pci_bus *bus,
519 519
520 520
521/* 521/*
522 * See tile_cfg_read() for relevent comments. 522 * See tile_cfg_read() for relevant comments.
523 * Note that "val" is the value to write, not a pointer to that value. 523 * Note that "val" is the value to write, not a pointer to that value.
524 */ 524 */
525static int __devinit tile_cfg_write(struct pci_bus *bus, 525static int __devinit tile_cfg_write(struct pci_bus *bus,
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c
index b9cd962e1d30..d0065103eb7b 100644
--- a/arch/tile/kernel/process.c
+++ b/arch/tile/kernel/process.c
@@ -109,7 +109,7 @@ void cpu_idle(void)
109 } 109 }
110} 110}
111 111
112struct thread_info *alloc_thread_info(struct task_struct *task) 112struct thread_info *alloc_thread_info_node(struct task_struct *task, int node)
113{ 113{
114 struct page *page; 114 struct page *page;
115 gfp_t flags = GFP_KERNEL; 115 gfp_t flags = GFP_KERNEL;
@@ -118,7 +118,7 @@ struct thread_info *alloc_thread_info(struct task_struct *task)
118 flags |= __GFP_ZERO; 118 flags |= __GFP_ZERO;
119#endif 119#endif
120 120
121 page = alloc_pages(flags, THREAD_SIZE_ORDER); 121 page = alloc_pages_node(node, flags, THREAD_SIZE_ORDER);
122 if (!page) 122 if (!page)
123 return NULL; 123 return NULL;
124 124
diff --git a/arch/tile/lib/atomic_32.c b/arch/tile/lib/atomic_32.c
index f02040d3614e..46570211df52 100644
--- a/arch/tile/lib/atomic_32.c
+++ b/arch/tile/lib/atomic_32.c
@@ -202,32 +202,32 @@ static inline int *__futex_setup(int __user *v)
202 return __atomic_hashed_lock((int __force *)v); 202 return __atomic_hashed_lock((int __force *)v);
203} 203}
204 204
205struct __get_user futex_set(int __user *v, int i) 205struct __get_user futex_set(u32 __user *v, int i)
206{ 206{
207 return __atomic_xchg((int __force *)v, __futex_setup(v), i); 207 return __atomic_xchg((int __force *)v, __futex_setup(v), i);
208} 208}
209 209
210struct __get_user futex_add(int __user *v, int n) 210struct __get_user futex_add(u32 __user *v, int n)
211{ 211{
212 return __atomic_xchg_add((int __force *)v, __futex_setup(v), n); 212 return __atomic_xchg_add((int __force *)v, __futex_setup(v), n);
213} 213}
214 214
215struct __get_user futex_or(int __user *v, int n) 215struct __get_user futex_or(u32 __user *v, int n)
216{ 216{
217 return __atomic_or((int __force *)v, __futex_setup(v), n); 217 return __atomic_or((int __force *)v, __futex_setup(v), n);
218} 218}
219 219
220struct __get_user futex_andn(int __user *v, int n) 220struct __get_user futex_andn(u32 __user *v, int n)
221{ 221{
222 return __atomic_andn((int __force *)v, __futex_setup(v), n); 222 return __atomic_andn((int __force *)v, __futex_setup(v), n);
223} 223}
224 224
225struct __get_user futex_xor(int __user *v, int n) 225struct __get_user futex_xor(u32 __user *v, int n)
226{ 226{
227 return __atomic_xor((int __force *)v, __futex_setup(v), n); 227 return __atomic_xor((int __force *)v, __futex_setup(v), n);
228} 228}
229 229
230struct __get_user futex_cmpxchg(int __user *v, int o, int n) 230struct __get_user futex_cmpxchg(u32 __user *v, int o, int n)
231{ 231{
232 return __atomic_cmpxchg((int __force *)v, __futex_setup(v), o, n); 232 return __atomic_cmpxchg((int __force *)v, __futex_setup(v), o, n);
233} 233}
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c
index 758f597f488c..51f8663bf074 100644
--- a/arch/tile/mm/fault.c
+++ b/arch/tile/mm/fault.c
@@ -290,7 +290,7 @@ static int handle_page_fault(struct pt_regs *regs,
290 /* 290 /*
291 * Early on, we need to check for migrating PTE entries; 291 * Early on, we need to check for migrating PTE entries;
292 * see homecache.c. If we find a migrating PTE, we wait until 292 * see homecache.c. If we find a migrating PTE, we wait until
293 * the backing page claims to be done migrating, then we procede. 293 * the backing page claims to be done migrating, then we proceed.
294 * For kernel PTEs, we rewrite the PTE and return and retry. 294 * For kernel PTEs, we rewrite the PTE and return and retry.
295 * Otherwise, we treat the fault like a normal "no PTE" fault, 295 * Otherwise, we treat the fault like a normal "no PTE" fault,
296 * rather than trying to patch up the existing PTE. 296 * rather than trying to patch up the existing PTE.
diff --git a/arch/tile/mm/hugetlbpage.c b/arch/tile/mm/hugetlbpage.c
index 201a582c4137..42cfcba4e1ef 100644
--- a/arch/tile/mm/hugetlbpage.c
+++ b/arch/tile/mm/hugetlbpage.c
@@ -219,7 +219,7 @@ try_again:
219 if (mm->free_area_cache < len) 219 if (mm->free_area_cache < len)
220 goto fail; 220 goto fail;
221 221
222 /* either no address requested or cant fit in requested address hole */ 222 /* either no address requested or can't fit in requested address hole */
223 addr = (mm->free_area_cache - len) & huge_page_mask(h); 223 addr = (mm->free_area_cache - len) & huge_page_mask(h);
224 do { 224 do {
225 /* 225 /*
diff --git a/arch/tile/mm/pgtable.c b/arch/tile/mm/pgtable.c
index 1a2b36f8866d..de7d8e21e01d 100644
--- a/arch/tile/mm/pgtable.c
+++ b/arch/tile/mm/pgtable.c
@@ -41,7 +41,7 @@
41 * The normal show_free_areas() is too verbose on Tile, with dozens 41 * The normal show_free_areas() is too verbose on Tile, with dozens
42 * of processors and often four NUMA zones each with high and lowmem. 42 * of processors and often four NUMA zones each with high and lowmem.
43 */ 43 */
44void show_mem(void) 44void show_mem(unsigned int filter)
45{ 45{
46 struct zone *zone; 46 struct zone *zone;
47 47