Re: [PATCH -mm] clocksource init adjustments (fix bug #7426)

Andrew Morton
2007-03-02T10:22:15Z

On Thu, 22 Feb 2007 16:13:02 -0800 john stultz <johnstul@us.ibm.com> wrote:

> This patch resolves the issue found here:
> http://bugme.osdl.org/show_bug.cgi?id=7426
>
> The basic summary is:
> Currently we register most of i386/x86_64 clocksources at module_init
> time. Then we enable clocksource selection at late_initcall time. This
> causes some problems for drivers that use gettimeofday for init
> calibration routines (specifically the es1968 driver in this case),
> where durring module_init, the only clocksource available is the low-res
> jiffies clocksource. This may cause slight calibration errors, due to
> the small sampling time used.
>
> It should be noted that drivers that require fine grained time may not
> function on architectures that do not have better then jiffies
> resolution timekeeping (there are a few). However, this does not
> discount the reasonable need for such fine-grained timekeeping at init
> time.
>
> Thus the solution here is to register clocksources earlier (ideally when
> the hardware is being initialized), and then we enable clocksource
> selection at fs_initcall (before device_initcall).
>
> This patch should probably get some testing time in -mm, since
> clocksource selection is one of the most important issues for correct
> timekeeping, and I've only been able to test this on a few of my own
> boxes.

This doornails my Nocona box early in boot:
http://userweb.kernel.org/~akpm/s5000431.jpg

Slab isn't ready yet - time_init()->hpet_arch_init() is called before
start_kernel() has run kmem_cache_init().