Re: [patch-mm 00/28] High resolution timer updates and x86_64 support - V3

Andrew Morton
2007-06-28T09:43:46Z

On Sat, 23 Jun 2007 13:32:25 -0000 Thomas Gleixner <tglx@linutronix.de> wrote:

> The following patch series contains:
>
> - dyntick bugfixes for -mm (caused by the cpuidle changes in ACPI)
>
> - updates and improvements to high resolution timer / dynticks
>
> - high resolution timer / dynticks support for x86_64

Blam. http://userweb.kernel.org/~akpm/hpet-crash.jpg

time_init() is called before slab is set up. We cannot do memory
allocations inside time_init().

> The patch set has been tested in the -hrt and -rt trees for quite a while
> and the initial problems have been sorted out. Thanks to the folks from the
> PowerTop project for testing and feedback.

hrm. Looks like none of your testers have HPET_ID_LEGSUP hardware. This:

--- a/arch/i386/kernel/hpet.c~a
+++ a/arch/i386/kernel/hpet.c
@@ -376,7 +376,7 @@ int __init hpet_enable(void)

clocksource_register(&clocksource_hpet);

- if (id & HPET_ID_LEGSUP) {
+ if (0 && (id & HPET_ID_LEGSUP)) {
hpet_enable_int();
hpet_reserve_platform_timers(id);
/*
_

gets it working. It basically nobbles the hpet and the kernel chose the
TSC clocksource instead.

btw, if you want to know why I go on and on about crappy commenting, try to
work out from the kernel source code what HPET_ID_LEGSUP is, and why it
gets special treatment. It is not possible. This is not maintainable
code.