diff options
| -rw-r--r-- | drivers/infiniband/hw/ipath/ipath_file_ops.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_file_ops.c b/drivers/infiniband/hw/ipath/ipath_file_ops.c index ee79a2d97b14..8697eca14356 100644 --- a/drivers/infiniband/hw/ipath/ipath_file_ops.c +++ b/drivers/infiniband/hw/ipath/ipath_file_ops.c | |||
| @@ -40,6 +40,7 @@ | |||
| 40 | #include <linux/highmem.h> | 40 | #include <linux/highmem.h> |
| 41 | #include <linux/io.h> | 41 | #include <linux/io.h> |
| 42 | #include <linux/jiffies.h> | 42 | #include <linux/jiffies.h> |
| 43 | #include <linux/cpu.h> | ||
| 43 | #include <asm/pgtable.h> | 44 | #include <asm/pgtable.h> |
| 44 | 45 | ||
| 45 | #include "ipath_kernel.h" | 46 | #include "ipath_kernel.h" |
| @@ -1684,17 +1685,19 @@ static int find_best_unit(struct file *fp, | |||
| 1684 | * information. There may be some issues with dual core numbering | 1685 | * information. There may be some issues with dual core numbering |
| 1685 | * as well. This needs more work prior to release. | 1686 | * as well. This needs more work prior to release. |
| 1686 | */ | 1687 | */ |
| 1687 | if (!cpumask_empty(¤t->cpus_allowed) && | 1688 | if (!cpumask_empty(tsk_cpus_allowed(current)) && |
| 1688 | !cpumask_full(¤t->cpus_allowed)) { | 1689 | !cpumask_full(tsk_cpus_allowed(current))) { |
| 1689 | int ncpus = num_online_cpus(), curcpu = -1, nset = 0; | 1690 | int ncpus = num_online_cpus(), curcpu = -1, nset = 0; |
| 1690 | for (i = 0; i < ncpus; i++) | 1691 | get_online_cpus(); |
| 1691 | if (cpumask_test_cpu(i, ¤t->cpus_allowed)) { | 1692 | for_each_online_cpu(i) |
| 1693 | if (cpumask_test_cpu(i, tsk_cpus_allowed(current))) { | ||
| 1692 | ipath_cdbg(PROC, "%s[%u] affinity set for " | 1694 | ipath_cdbg(PROC, "%s[%u] affinity set for " |
| 1693 | "cpu %d/%d\n", current->comm, | 1695 | "cpu %d/%d\n", current->comm, |
| 1694 | current->pid, i, ncpus); | 1696 | current->pid, i, ncpus); |
| 1695 | curcpu = i; | 1697 | curcpu = i; |
| 1696 | nset++; | 1698 | nset++; |
| 1697 | } | 1699 | } |
| 1700 | put_online_cpus(); | ||
| 1698 | if (curcpu != -1 && nset != ncpus) { | 1701 | if (curcpu != -1 && nset != ncpus) { |
| 1699 | if (npresent) { | 1702 | if (npresent) { |
| 1700 | prefunit = curcpu / (ncpus / npresent); | 1703 | prefunit = curcpu / (ncpus / npresent); |
