diff options
author | gber <gber@FreeBSD.org> | 2013-02-01 11:39:03 +0000 |
---|---|---|
committer | gber <gber@FreeBSD.org> | 2013-02-01 11:39:03 +0000 |
commit | d005d97a01379ab71eeddb9475961c5be0827934 (patch) | |
tree | de7d6f7e81b4e6bc21178ddc726582ce45e4a61d | |
parent | 3322e2fce2263a9217a22c1b73f35f6be6dde164 (diff) | |
download | FreeBSD-src-d005d97a01379ab71eeddb9475961c5be0827934.zip FreeBSD-src-d005d97a01379ab71eeddb9475961c5be0827934.tar.gz |
Get time of next event from other cores only if SMP is already started.
Reviewed by: mav
Obtained from: Semihalf
-rw-r--r-- | sys/kern/kern_clocksource.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/sys/kern/kern_clocksource.c b/sys/kern/kern_clocksource.c index 05e47e0..6fd40a8 100644 --- a/sys/kern/kern_clocksource.c +++ b/sys/kern/kern_clocksource.c @@ -317,14 +317,16 @@ getnextevent(struct bintime *event) nonidle = !state->idle; if ((timer->et_flags & ET_FLAGS_PERCPU) == 0) { #ifdef SMP - CPU_FOREACH(cpu) { - if (curcpu == cpu) - continue; - state = DPCPU_ID_PTR(cpu, timerstate); - nonidle += !state->idle; - if (bintime_cmp(event, &state->nextevent, >)) { - *event = state->nextevent; - c = cpu; + if (smp_started) { + CPU_FOREACH(cpu) { + if (curcpu == cpu) + continue; + state = DPCPU_ID_PTR(cpu, timerstate); + nonidle += !state->idle; + if (bintime_cmp(event, &state->nextevent, >)) { + *event = state->nextevent; + c = cpu; + } } } #endif |