aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r--arch/parisc/kernel/cache.c5
-rw-r--r--arch/parisc/kernel/entry.S6
-rw-r--r--arch/parisc/kernel/firmware.c12
-rw-r--r--arch/parisc/kernel/irq.c18
-rw-r--r--arch/parisc/kernel/pci-dma.c22
5 files changed, 26 insertions, 37 deletions
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index 5259d8c20676..837530ea32e7 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -551,10 +551,7 @@ void flush_cache_range(struct vm_area_struct *vma,
551{ 551{
552 int sr3; 552 int sr3;
553 553
554 if (!vma->vm_mm->context) { 554 BUG_ON(!vma->vm_mm->context);
555 BUG();
556 return;
557 }
558 555
559 sr3 = mfsp(3); 556 sr3 = mfsp(3);
560 if (vma->vm_mm->context == sr3) { 557 if (vma->vm_mm->context == sr3) {
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index d1fa4edd2d80..0db9fdcb7709 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -368,7 +368,7 @@
368 * abstractions for the macros */ 368 * abstractions for the macros */
369 .macro EXTR reg1,start,length,reg2 369 .macro EXTR reg1,start,length,reg2
370#ifdef CONFIG_64BIT 370#ifdef CONFIG_64BIT
371 extrd,u \reg1,32+\start,\length,\reg2 371 extrd,u \reg1,32+(\start),\length,\reg2
372#else 372#else
373 extrw,u \reg1,\start,\length,\reg2 373 extrw,u \reg1,\start,\length,\reg2
374#endif 374#endif
@@ -376,7 +376,7 @@
376 376
377 .macro DEP reg1,start,length,reg2 377 .macro DEP reg1,start,length,reg2
378#ifdef CONFIG_64BIT 378#ifdef CONFIG_64BIT
379 depd \reg1,32+\start,\length,\reg2 379 depd \reg1,32+(\start),\length,\reg2
380#else 380#else
381 depw \reg1,\start,\length,\reg2 381 depw \reg1,\start,\length,\reg2
382#endif 382#endif
@@ -384,7 +384,7 @@
384 384
385 .macro DEPI val,start,length,reg 385 .macro DEPI val,start,length,reg
386#ifdef CONFIG_64BIT 386#ifdef CONFIG_64BIT
387 depdi \val,32+\start,\length,\reg 387 depdi \val,32+(\start),\length,\reg
388#else 388#else
389 depwi \val,\start,\length,\reg 389 depwi \val,\start,\length,\reg
390#endif 390#endif
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index 03f26bd75bd8..f6d241238a78 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -151,7 +151,7 @@ static void convert_to_wide(unsigned long *addr)
151} 151}
152 152
153#ifdef CONFIG_64BIT 153#ifdef CONFIG_64BIT
154void __init set_firmware_width_unlocked(void) 154void __cpuinit set_firmware_width_unlocked(void)
155{ 155{
156 int ret; 156 int ret;
157 157
@@ -168,7 +168,7 @@ void __init set_firmware_width_unlocked(void)
168 * This function must be called before any pdc_* function that uses the 168 * This function must be called before any pdc_* function that uses the
169 * convert_to_wide function. 169 * convert_to_wide function.
170 */ 170 */
171void __init set_firmware_width(void) 171void __cpuinit set_firmware_width(void)
172{ 172{
173 unsigned long flags; 173 unsigned long flags;
174 spin_lock_irqsave(&pdc_lock, flags); 174 spin_lock_irqsave(&pdc_lock, flags);
@@ -176,11 +176,11 @@ void __init set_firmware_width(void)
176 spin_unlock_irqrestore(&pdc_lock, flags); 176 spin_unlock_irqrestore(&pdc_lock, flags);
177} 177}
178#else 178#else
179void __init set_firmware_width_unlocked(void) { 179void __cpuinit set_firmware_width_unlocked(void) {
180 return; 180 return;
181} 181}
182 182
183void __init set_firmware_width(void) { 183void __cpuinit set_firmware_width(void) {
184 return; 184 return;
185} 185}
186#endif /*CONFIG_64BIT*/ 186#endif /*CONFIG_64BIT*/
@@ -302,7 +302,7 @@ int pdc_chassis_warn(unsigned long *warn)
302 return retval; 302 return retval;
303} 303}
304 304
305int __init pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info) 305int __cpuinit pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info)
306{ 306{
307 int ret; 307 int ret;
308 308
@@ -323,7 +323,7 @@ int __init pdc_coproc_cfg_unlocked(struct pdc_coproc_cfg *pdc_coproc_info)
323 * This PDC call returns the presence and status of all the coprocessors 323 * This PDC call returns the presence and status of all the coprocessors
324 * attached to the processor. 324 * attached to the processor.
325 */ 325 */
326int __init pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info) 326int __cpuinit pdc_coproc_cfg(struct pdc_coproc_cfg *pdc_coproc_info)
327{ 327{
328 int ret; 328 int ret;
329 unsigned long flags; 329 unsigned long flags;
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index ac2c822928c7..29e70e16ede8 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -112,7 +112,7 @@ void cpu_end_irq(unsigned int irq)
112} 112}
113 113
114#ifdef CONFIG_SMP 114#ifdef CONFIG_SMP
115int cpu_check_affinity(unsigned int irq, cpumask_t *dest) 115int cpu_check_affinity(unsigned int irq, const struct cpumask *dest)
116{ 116{
117 int cpu_dest; 117 int cpu_dest;
118 118
@@ -120,23 +120,25 @@ int cpu_check_affinity(unsigned int irq, cpumask_t *dest)
120 if (CHECK_IRQ_PER_CPU(irq)) { 120 if (CHECK_IRQ_PER_CPU(irq)) {
121 /* Bad linux design decision. The mask has already 121 /* Bad linux design decision. The mask has already
122 * been set; we must reset it */ 122 * been set; we must reset it */
123 irq_desc[irq].affinity = CPU_MASK_ALL; 123 cpumask_setall(&irq_desc[irq].affinity);
124 return -EINVAL; 124 return -EINVAL;
125 } 125 }
126 126
127 /* whatever mask they set, we just allow one CPU */ 127 /* whatever mask they set, we just allow one CPU */
128 cpu_dest = first_cpu(*dest); 128 cpu_dest = first_cpu(*dest);
129 *dest = cpumask_of_cpu(cpu_dest);
130 129
131 return 0; 130 return cpu_dest;
132} 131}
133 132
134static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest) 133static void cpu_set_affinity_irq(unsigned int irq, const struct cpumask *dest)
135{ 134{
136 if (cpu_check_affinity(irq, dest)) 135 int cpu_dest;
136
137 cpu_dest = cpu_check_affinity(irq, dest);
138 if (cpu_dest < 0)
137 return; 139 return;
138 140
139 irq_desc[irq].affinity = *dest; 141 cpumask_copy(&irq_desc[irq].affinity, &cpumask_of_cpu(cpu_dest));
140} 142}
141#endif 143#endif
142 144
@@ -295,7 +297,7 @@ int txn_alloc_irq(unsigned int bits_wide)
295unsigned long txn_affinity_addr(unsigned int irq, int cpu) 297unsigned long txn_affinity_addr(unsigned int irq, int cpu)
296{ 298{
297#ifdef CONFIG_SMP 299#ifdef CONFIG_SMP
298 irq_desc[irq].affinity = cpumask_of_cpu(cpu); 300 cpumask_copy(&irq_desc[irq].affinity, cpumask_of(cpu));
299#endif 301#endif
300 302
301 return per_cpu(cpu_data, cpu).txn_addr; 303 return per_cpu(cpu_data, cpu).txn_addr;
@@ -352,7 +354,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)
352 irq = eirr_to_irq(eirr_val); 354 irq = eirr_to_irq(eirr_val);
353 355
354#ifdef CONFIG_SMP 356#ifdef CONFIG_SMP
355 dest = irq_desc[irq].affinity; 357 cpumask_copy(&dest, &irq_desc[irq].affinity);
356 if (CHECK_IRQ_PER_CPU(irq_desc[irq].status) && 358 if (CHECK_IRQ_PER_CPU(irq_desc[irq].status) &&
357 !cpu_isset(smp_processor_id(), dest)) { 359 !cpu_isset(smp_processor_id(), dest)) {
358 int cpu = first_cpu(dest); 360 int cpu = first_cpu(dest);
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index df47895db828..7d927eac932b 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -447,10 +447,7 @@ static void pa11_dma_free_consistent (struct device *dev, size_t size, void *vad
447 447
448static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t size, enum dma_data_direction direction) 448static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t size, enum dma_data_direction direction)
449{ 449{
450 if (direction == DMA_NONE) { 450 BUG_ON(direction == DMA_NONE);
451 printk(KERN_ERR "pa11_dma_map_single(PCI_DMA_NONE) called by %p\n", __builtin_return_address(0));
452 BUG();
453 }
454 451
455 flush_kernel_dcache_range((unsigned long) addr, size); 452 flush_kernel_dcache_range((unsigned long) addr, size);
456 return virt_to_phys(addr); 453 return virt_to_phys(addr);
@@ -458,10 +455,7 @@ static dma_addr_t pa11_dma_map_single(struct device *dev, void *addr, size_t siz
458 455
459static void pa11_dma_unmap_single(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction) 456static void pa11_dma_unmap_single(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction direction)
460{ 457{
461 if (direction == DMA_NONE) { 458 BUG_ON(direction == DMA_NONE);
462 printk(KERN_ERR "pa11_dma_unmap_single(PCI_DMA_NONE) called by %p\n", __builtin_return_address(0));
463 BUG();
464 }
465 459
466 if (direction == DMA_TO_DEVICE) 460 if (direction == DMA_TO_DEVICE)
467 return; 461 return;
@@ -480,8 +474,7 @@ static int pa11_dma_map_sg(struct device *dev, struct scatterlist *sglist, int n
480{ 474{
481 int i; 475 int i;
482 476
483 if (direction == DMA_NONE) 477 BUG_ON(direction == DMA_NONE);
484 BUG();
485 478
486 for (i = 0; i < nents; i++, sglist++ ) { 479 for (i = 0; i < nents; i++, sglist++ ) {
487 unsigned long vaddr = sg_virt_addr(sglist); 480 unsigned long vaddr = sg_virt_addr(sglist);
@@ -496,8 +489,7 @@ static void pa11_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, in
496{ 489{
497 int i; 490 int i;
498 491
499 if (direction == DMA_NONE) 492 BUG_ON(direction == DMA_NONE);
500 BUG();
501 493
502 if (direction == DMA_TO_DEVICE) 494 if (direction == DMA_TO_DEVICE)
503 return; 495 return;
@@ -511,16 +503,14 @@ static void pa11_dma_unmap_sg(struct device *dev, struct scatterlist *sglist, in
511 503
512static void pa11_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction) 504static void pa11_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction)
513{ 505{
514 if (direction == DMA_NONE) 506 BUG_ON(direction == DMA_NONE);
515 BUG();
516 507
517 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size); 508 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size);
518} 509}
519 510
520static void pa11_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction) 511static void pa11_dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle, unsigned long offset, size_t size, enum dma_data_direction direction)
521{ 512{
522 if (direction == DMA_NONE) 513 BUG_ON(direction == DMA_NONE);
523 BUG();
524 514
525 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size); 515 flush_kernel_dcache_range((unsigned long) phys_to_virt(dma_handle) + offset, size);
526} 516}