Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 20 Apr 2010 12:02:56 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Charles Owens <cowens@greatbaysoftware.com>
Cc:        freebsd-hardware@freebsd.org
Subject:   Re: Minute+ delay between kernel load and initialization (solved!)
Message-ID:  <201004201202.56275.jhb@freebsd.org>
In-Reply-To: <4BCDCEB2.8040407@greatbaysoftware.com>
References:  <4B5478D1.4000900@greatbaysoftware.com> <201004200913.05426.jhb@freebsd.org> <4BCDCEB2.8040407@greatbaysoftware.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 20 April 2010 11:56:34 am Charles Owens wrote:
> On 4/20/2010 9:13 AM, John Baldwin wrote:
> > On Monday 19 April 2010 6:05:06 pm Charles Owens wrote:
> >   
> >> On 1/18/2010 10:05 AM, Charles Owens wrote:
> >>     
> >>> Hello,
> >>>
> >>> We have a new system based on the Intel S5520 motherboard that seems to
> >>> work fine except during _every_ boot it pauses for about one minute 15
> >>> seconds just before any kernel initialization messages appear.   We see
> >>> the loader appearing to complete its work (the kernel is loaded) and
> >>> then... it sits.  Once it starts up again (with usual kernel-boot
> >>> messages) it appears to boot normally (no error messages).
> >>>
> >>> This has been seen with both FreeBSD 8.0 and 7.1, using GENERIC kernels.
> >>>  I'd appreciate any and all assistance in figuring this out.
> >>>
> >>> Boot output follows (happens to be from a PAE-enabled kernel)
> >>>
> >>> Thank you,
> >>>
> >>> Charles
> >>>
> >>>   
> >>>       
> >> [truncated]
> >>
> >> An answer to this was graciously provided by Titus Manea.   For details,
> >> see
> >>
> >> http://www.freebsd.org/cgi/query-pr.cgi?pr=i386/144956
> >>     
> > Interesting.  I do not see the long delay on Nehalem machines here.  Would 
> > either of you be able to debug this further?  You could maybe grab TSC 
values 
> > at various points during the early console probe and print out the 
relevant 
> > deltas after cninit() returns.  You could then move the TSC probe points 
> > around to pinpoint which operations are taking a long time.
> >   
> 
> John,
> 
> I'm not going to have the cycles to look at this any time soon,
> unfortunately.   But, just in case, how does one display TSC values?  We
> did try to enable the kernel debugger, but the delay happens _before_
> the debugger prompt is available.
> 
> We now think of this more as an issue seen with some particular
> motherboard/BIOS combinations .... initially the only thing we really
> had to go on was the fact that the behavior was seen on new
> Nehalem-based systems.

You would have to patch the source to add various calls to rdtsc() that were 
saved in some sort of global array.  Then, once the console was fully 
initialized you could print out the TSC deltas by walking the array and 
printing out the delta between each pair of entries.  You could then move the 
rdtsc() calls around on subsequent tests to narrow down where the pause is 
happening.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004201202.56275.jhb>