diff options
author | nwhitehorn <nwhitehorn@FreeBSD.org> | 2016-09-02 01:41:57 +0000 |
---|---|---|
committer | nwhitehorn <nwhitehorn@FreeBSD.org> | 2016-09-02 01:41:57 +0000 |
commit | 2ff56da569941d069a3e6d5b36753d6e1d38e6dd (patch) | |
tree | 10682fc4e69e6910d7e8960a50c11a1f037d65e3 /sys/kern | |
parent | d6d6b83dfe62f01d1f8803be5c0dfc1b243d332c (diff) | |
download | FreeBSD-src-2ff56da569941d069a3e6d5b36753d6e1d38e6dd.zip FreeBSD-src-2ff56da569941d069a3e6d5b36753d6e1d38e6dd.tar.gz |
MFS11 r305250:
MFC r305108,305109:
Refix operation on sparse CPU mappings as in r302372, temporarily broken
by r304716.
PR: kern/210106
Approved by: re (gjb)
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/subr_gtaskqueue.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/subr_gtaskqueue.c b/sys/kern/subr_gtaskqueue.c index 2d655bd..6b431f0 100644 --- a/sys/kern/subr_gtaskqueue.c +++ b/sys/kern/subr_gtaskqueue.c @@ -742,7 +742,7 @@ _taskqgroup_adjust(struct taskqgroup *qgroup, int cnt, int stride) LIST_HEAD(, grouptask) gtask_head = LIST_HEAD_INITIALIZER(NULL); cpuset_t mask; struct grouptask *gtask; - int i, old_cnt, qid; + int i, k, old_cnt, qid, cpu; mtx_assert(&qgroup->tqg_lock, MA_OWNED); @@ -806,8 +806,11 @@ _taskqgroup_adjust(struct taskqgroup *qgroup, int cnt, int stride) /* * Set new CPU and IRQ affinity */ + cpu = CPU_FIRST(); for (i = 0; i < cnt; i++) { - qgroup->tqg_queue[i].tgc_cpu = i * qgroup->tqg_stride; + qgroup->tqg_queue[i].tgc_cpu = cpu; + for (k = 0; k < qgroup->tqg_stride; k++) + cpu = CPU_NEXT(cpu); CPU_ZERO(&mask); CPU_SET(qgroup->tqg_queue[i].tgc_cpu, &mask); LIST_FOREACH(gtask, &qgroup->tqg_queue[i].tgc_tasks, gt_list) { |