Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 16 Jan 2017 22:10:16 +0100
From:      Hans Petter Selasky <hps@selasky.org>
To:        John Baldwin <jhb@freebsd.org>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>, Konstantin Belousov <kib@freebsd.org>
Subject:   Re: Strange issue after early AP startup
Message-ID:  <264c5dd8-d82d-3326-7de5-96b0bb96ac01@selasky.org>
In-Reply-To: <3466870.vFI8cjabAc@ralph.baldwin.cx>
References:  <b9c53237-4b1a-a140-f692-bf5837060b18@selasky.org> <3466870.vFI8cjabAc@ralph.baldwin.cx>

next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------61B84EA364FFEDA0AB60FEEC
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit

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

--------------61B84EA364FFEDA0AB60FEEC
Content-Type: text/x-patch;
 name="timer_init_fix.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="timer_init_fix.diff"

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);
 		}

--------------61B84EA364FFEDA0AB60FEEC--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?264c5dd8-d82d-3326-7de5-96b0bb96ac01>