summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_clocksource.c
diff options
context:
space:
mode:
authorgber <gber@FreeBSD.org>2013-02-01 11:39:03 +0000
committergber <gber@FreeBSD.org>2013-02-01 11:39:03 +0000
commitd005d97a01379ab71eeddb9475961c5be0827934 (patch)
treede7d6f7e81b4e6bc21178ddc726582ce45e4a61d /sys/kern/kern_clocksource.c
parent3322e2fce2263a9217a22c1b73f35f6be6dde164 (diff)
downloadFreeBSD-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
Diffstat (limited to 'sys/kern/kern_clocksource.c')
-rw-r--r--sys/kern/kern_clocksource.c18
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
OpenPOWER on IntegriCloud