aboutsummaryrefslogtreecommitdiffstats
path: root/net/iucv/iucv.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2008-07-18 05:39:39 -0400
committerDavid S. Miller <davem@davemloft.net>2008-07-18 05:39:39 -0400
commit49997d75152b3d23c53b0fa730599f2f74c92c65 (patch)
tree46e93126170d02cfec9505172e545732c1b69656 /net/iucv/iucv.c
parenta0c80b80e0fb48129e4e9d6a9ede914f9ff1850d (diff)
parent5b664cb235e97afbf34db9c4d77f08ebd725335e (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6
Conflicts: Documentation/powerpc/booting-without-of.txt drivers/atm/Makefile drivers/net/fs_enet/fs_enet-main.c drivers/pci/pci-acpi.c net/8021q/vlan.c net/iucv/iucv.c
Diffstat (limited to 'net/iucv/iucv.c')
-rw-r--r--net/iucv/iucv.c30
1 files changed, 17 insertions, 13 deletions
diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c
index d8e0635aace0..a598c7384840 100644
--- a/net/iucv/iucv.c
+++ b/net/iucv/iucv.c
@@ -480,7 +480,7 @@ static void iucv_setmask_mp(void)
480 if (cpu_isset(cpu, iucv_buffer_cpumask) && 480 if (cpu_isset(cpu, iucv_buffer_cpumask) &&
481 !cpu_isset(cpu, iucv_irq_cpumask)) 481 !cpu_isset(cpu, iucv_irq_cpumask))
482 smp_call_function_single(cpu, iucv_allow_cpu, 482 smp_call_function_single(cpu, iucv_allow_cpu,
483 NULL, 0, 1); 483 NULL, 1);
484 put_online_cpus(); 484 put_online_cpus();
485} 485}
486 486
@@ -498,7 +498,7 @@ static void iucv_setmask_up(void)
498 cpumask = iucv_irq_cpumask; 498 cpumask = iucv_irq_cpumask;
499 cpu_clear(first_cpu(iucv_irq_cpumask), cpumask); 499 cpu_clear(first_cpu(iucv_irq_cpumask), cpumask);
500 for_each_cpu_mask(cpu, cpumask) 500 for_each_cpu_mask(cpu, cpumask)
501 smp_call_function_single(cpu, iucv_block_cpu, NULL, 0, 1); 501 smp_call_function_single(cpu, iucv_block_cpu, NULL, 1);
502} 502}
503 503
504/** 504/**
@@ -523,7 +523,12 @@ static int iucv_enable(void)
523 rc = -EIO; 523 rc = -EIO;
524 get_online_cpus(); 524 get_online_cpus();
525 for_each_online_cpu(cpu) 525 for_each_online_cpu(cpu)
526<<<<<<< HEAD:net/iucv/iucv.c
526 smp_call_function_single(cpu, iucv_declare_cpu, NULL, 0, 1); 527 smp_call_function_single(cpu, iucv_declare_cpu, NULL, 0, 1);
528=======
529 smp_call_function_single(cpu, iucv_declare_cpu, NULL, 1);
530 preempt_enable();
531>>>>>>> 5b664cb235e97afbf34db9c4d77f08ebd725335e:net/iucv/iucv.c
527 if (cpus_empty(iucv_buffer_cpumask)) 532 if (cpus_empty(iucv_buffer_cpumask))
528 /* No cpu could declare an iucv buffer. */ 533 /* No cpu could declare an iucv buffer. */
529 goto out_path; 534 goto out_path;
@@ -546,9 +551,13 @@ out:
546 */ 551 */
547static void iucv_disable(void) 552static void iucv_disable(void)
548{ 553{
554<<<<<<< HEAD:net/iucv/iucv.c
549 get_online_cpus(); 555 get_online_cpus();
550 on_each_cpu(iucv_retrieve_cpu, NULL, 0, 1); 556 on_each_cpu(iucv_retrieve_cpu, NULL, 0, 1);
551 put_online_cpus(); 557 put_online_cpus();
558=======
559 on_each_cpu(iucv_retrieve_cpu, NULL, 1);
560>>>>>>> 5b664cb235e97afbf34db9c4d77f08ebd725335e:net/iucv/iucv.c
552 kfree(iucv_path_table); 561 kfree(iucv_path_table);
553} 562}
554 563
@@ -586,7 +595,7 @@ static int __cpuinit iucv_cpu_notify(struct notifier_block *self,
586 case CPU_ONLINE_FROZEN: 595 case CPU_ONLINE_FROZEN:
587 case CPU_DOWN_FAILED: 596 case CPU_DOWN_FAILED:
588 case CPU_DOWN_FAILED_FROZEN: 597 case CPU_DOWN_FAILED_FROZEN:
589 smp_call_function_single(cpu, iucv_declare_cpu, NULL, 0, 1); 598 smp_call_function_single(cpu, iucv_declare_cpu, NULL, 1);
590 break; 599 break;
591 case CPU_DOWN_PREPARE: 600 case CPU_DOWN_PREPARE:
592 case CPU_DOWN_PREPARE_FROZEN: 601 case CPU_DOWN_PREPARE_FROZEN:
@@ -595,10 +604,10 @@ static int __cpuinit iucv_cpu_notify(struct notifier_block *self,
595 if (cpus_empty(cpumask)) 604 if (cpus_empty(cpumask))
596 /* Can't offline last IUCV enabled cpu. */ 605 /* Can't offline last IUCV enabled cpu. */
597 return NOTIFY_BAD; 606 return NOTIFY_BAD;
598 smp_call_function_single(cpu, iucv_retrieve_cpu, NULL, 0, 1); 607 smp_call_function_single(cpu, iucv_retrieve_cpu, NULL, 1);
599 if (cpus_empty(iucv_irq_cpumask)) 608 if (cpus_empty(iucv_irq_cpumask))
600 smp_call_function_single(first_cpu(iucv_buffer_cpumask), 609 smp_call_function_single(first_cpu(iucv_buffer_cpumask),
601 iucv_allow_cpu, NULL, 0, 1); 610 iucv_allow_cpu, NULL, 1);
602 break; 611 break;
603 } 612 }
604 return NOTIFY_OK; 613 return NOTIFY_OK;
@@ -658,7 +667,7 @@ static void iucv_cleanup_queue(void)
658 * pending interrupts force them to the work queue by calling 667 * pending interrupts force them to the work queue by calling
659 * an empty function on all cpus. 668 * an empty function on all cpus.
660 */ 669 */
661 smp_call_function(__iucv_cleanup_queue, NULL, 0, 1); 670 smp_call_function(__iucv_cleanup_queue, NULL, 1);
662 spin_lock_irq(&iucv_queue_lock); 671 spin_lock_irq(&iucv_queue_lock);
663 list_for_each_entry_safe(p, n, &iucv_task_queue, list) { 672 list_for_each_entry_safe(p, n, &iucv_task_queue, list) {
664 /* Remove stale work items from the task queue. */ 673 /* Remove stale work items from the task queue. */
@@ -1565,16 +1574,11 @@ static void iucv_external_interrupt(u16 code)
1565 1574
1566 p = iucv_irq_data[smp_processor_id()]; 1575 p = iucv_irq_data[smp_processor_id()];
1567 if (p->ippathid >= iucv_max_pathid) { 1576 if (p->ippathid >= iucv_max_pathid) {
1568 printk(KERN_WARNING "iucv_do_int: Got interrupt with " 1577 WARN_ON(p->ippathid >= iucv_max_pathid);
1569 "pathid %d > max_connections (%ld)\n",
1570 p->ippathid, iucv_max_pathid - 1);
1571 iucv_sever_pathid(p->ippathid, iucv_error_no_listener); 1578 iucv_sever_pathid(p->ippathid, iucv_error_no_listener);
1572 return; 1579 return;
1573 } 1580 }
1574 if (p->iptype < 0x01 || p->iptype > 0x09) { 1581 BUG_ON(p->iptype < 0x01 || p->iptype > 0x09);
1575 printk(KERN_ERR "iucv_do_int: unknown iucv interrupt\n");
1576 return;
1577 }
1578 work = kmalloc(sizeof(struct iucv_irq_list), GFP_ATOMIC); 1582 work = kmalloc(sizeof(struct iucv_irq_list), GFP_ATOMIC);
1579 if (!work) { 1583 if (!work) {
1580 printk(KERN_WARNING "iucv_external_interrupt: out of memory\n"); 1584 printk(KERN_WARNING "iucv_external_interrupt: out of memory\n");