diff options
author | peter <peter@FreeBSD.org> | 2002-01-05 09:38:47 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2002-01-05 09:38:47 +0000 |
commit | 5e902a48f6ffa366d3573e7e7b3c571d7f384c9b (patch) | |
tree | 2869b61673054a14c50f42ca3755b21e38860d10 /sys | |
parent | d0a39cc230c0913e147d6d457395dacacde596b3 (diff) | |
download | FreeBSD-src-5e902a48f6ffa366d3573e7e7b3c571d7f384c9b.zip FreeBSD-src-5e902a48f6ffa366d3573e7e7b3c571d7f384c9b.tar.gz |
Fix forward_roundrobin(). It was mistakenly using the cpu number as
though it was a mask. As a result, we sent AST IPI's to the wrong
cpu and/or left out some.
Spotted by: jake
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/subr_smp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index 6b55133..2734f7e 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -147,8 +147,8 @@ forward_roundrobin(void) map = 0; SLIST_FOREACH(pc, &cpuhead, pc_allcpu) { td = pc->pc_curthread; - id = pc->pc_cpuid; - if (id != PCPU_GET(cpuid) && (id & stopped_cpus) == 0 && + id = pc->pc_cpumask; + if (id != PCPU_GET(cpumask) && (id & stopped_cpus) == 0 && td != pc->pc_idlethread) { td->td_kse->ke_flags |= KEF_NEEDRESCHED; map |= id; |