On 01/16/17 20:31, John Baldwin wrote:
On Monday, January 16, 2017 04:51:42 PM Hans Petter Selasky wrote:
Hi,
When booting I observe an additional 30-second delay after this print:
Timecounters tick every 1.000 msec
~30 second delay and boot continues like normal.
Checking "vmstat -i" reveals that some timers have been running loose.
cpu0:timer 44300 442
cpu1:timer 40561 404
cpu3:timer 48462822 483058
cpu2:timer 48477898 483209
Trying to add delays and/or prints around the Timecounters printout
makes the issue go away. Any ideas for debugging?
I have generally used KTR tracing to trace what is happening during
boot to debug EARLY_AP_STARTUP issues.
Hi John,
What happens is that getnextcpuevent(0) keeps on returning
"state->nextcall" which is in the past for CPU #2 and #3 on my box.
In "cpu_new_callout()" there is a check if "bt >= state->nextcall",
which I suspect is true, so "state->nextcall" never gets set to real
minimum sbintime.
The attached patch fixes the problem for me, but I'm not 100% sure if it
is correct.
--HPS
diff --git a/sys/kern/kern_clocksource.c b/sys/kern/kern_clocksource.c
index 7f7769d..454a130 100644
--- a/sys/kern/kern_clocksource.c
+++ b/sys/kern/kern_clocksource.c
@@ -511,7 +511,7 @@ configtimer(int start)
state->nexthard = next;
state->nextstat = next;
state->nextprof = next;
- state->nextcall = next;
+ state->nextcall = SBT_MAX;
state->nextcallopt = next;
hardclock_sync(cpu);
}
_______________________________________________
freebsd-current@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"