mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-13 10:38:44 -04:00
IB/ipath: Convert old cpumask api into new one
Adapt to new api. We plan to remove old one later. Almost all
changes are trivial, but there is one real fix: the following code is
unsafe:
int ncpus = num_online_cpus()
for (i = 0; i < ncpus; i++) {
..
}
because 1) we don't guarantee last bit of online cpus is equal to
num_online_cpus(). some arch assign sparse cpu number. 2) cpu
hotplugging may change cpu_online_mask at same time. we need to pin
it by get_online_cpus().
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Acked-by: Mike Marciniszyn <mike.marciniszyn@qlogic.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
committed by
Roland Dreier
parent
620917de59
commit
5763181172
@@ -40,6 +40,7 @@
|
||||
#include <linux/highmem.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/cpu.h>
|
||||
#include <asm/pgtable.h>
|
||||
|
||||
#include "ipath_kernel.h"
|
||||
@@ -1684,17 +1685,19 @@ static int find_best_unit(struct file *fp,
|
||||
* information. There may be some issues with dual core numbering
|
||||
* as well. This needs more work prior to release.
|
||||
*/
|
||||
if (!cpumask_empty(¤t->cpus_allowed) &&
|
||||
!cpumask_full(¤t->cpus_allowed)) {
|
||||
if (!cpumask_empty(tsk_cpus_allowed(current)) &&
|
||||
!cpumask_full(tsk_cpus_allowed(current))) {
|
||||
int ncpus = num_online_cpus(), curcpu = -1, nset = 0;
|
||||
for (i = 0; i < ncpus; i++)
|
||||
if (cpumask_test_cpu(i, ¤t->cpus_allowed)) {
|
||||
get_online_cpus();
|
||||
for_each_online_cpu(i)
|
||||
if (cpumask_test_cpu(i, tsk_cpus_allowed(current))) {
|
||||
ipath_cdbg(PROC, "%s[%u] affinity set for "
|
||||
"cpu %d/%d\n", current->comm,
|
||||
current->pid, i, ncpus);
|
||||
curcpu = i;
|
||||
nset++;
|
||||
}
|
||||
put_online_cpus();
|
||||
if (curcpu != -1 && nset != ncpus) {
|
||||
if (npresent) {
|
||||
prefunit = curcpu / (ncpus / npresent);
|
||||
|
||||
Reference in New Issue
Block a user