diff options
author | David S. Miller <davem@davemloft.net> | 2008-07-18 05:39:39 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-07-18 05:39:39 -0400 |
commit | 49997d75152b3d23c53b0fa730599f2f74c92c65 (patch) | |
tree | 46e93126170d02cfec9505172e545732c1b69656 /net/iucv/iucv.c | |
parent | a0c80b80e0fb48129e4e9d6a9ede914f9ff1850d (diff) | |
parent | 5b664cb235e97afbf34db9c4d77f08ebd725335e (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.c | 30 |
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 | */ |
547 | static void iucv_disable(void) | 552 | static 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"); |