summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2016-09-02 01:41:57 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2016-09-02 01:41:57 +0000
commit2ff56da569941d069a3e6d5b36753d6e1d38e6dd (patch)
tree10682fc4e69e6910d7e8960a50c11a1f037d65e3 /sys/kern
parentd6d6b83dfe62f01d1f8803be5c0dfc1b243d332c (diff)
downloadFreeBSD-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.c7
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) {
OpenPOWER on IntegriCloud