Re: [PATCH] i386: disable local apic timer via command line or dmiquirk

From: Thomas Gleixner
Date: Wed Mar 28 2007 - 05:13:33 EST


Len,

On Tue, 2007-03-27 at 23:28 -0400, Len Brown wrote:
> Is this failure specific to NO_HZ, and that is why the "nolapic_timer" fix is i386 only?
> I'm running 2.6.21-rc5 an nx6325 here in 64-bit mode and I don't see the dramatic
> boot failure described earlier in this thread.

The difference between x86_64 and i386 is that on i386 we now switch off
the PIT and do the jiffies increment in the local apic timer interrupt.
This is necessary for NO_HZ and HIGH_RES_TIMERS. We just fall back to
the PIT in C3 (enforced to C2 now due to massive breakage).

You can see the same problem on x86_64 by adding "apicmaintimer" to the
kernel command line. This should make your box really slow.

> However, I have observed that when running on battery,
> the LOC falls behind the irq0 timer to the tune of about
> 2 interrupt/minute. eg. when i booted my machine, LOC was
> behind irq0 by 50, and now about a 20 minutes later it is behind
> irq0 by 99. However, the LOC for each processor remain at
> a constant offset with respect to each other.
>
> I do not see these this drift when running on AC.
> Yes, the system exports just C1 in both cases.

Right, but it does bad magic when running on battery. The offsets you
observe are due to the LAPIC stops. The delta is rather small, because
you wake up via the PIT periodically, so the APICs start to run as well.
And they do it on both cores.

Someone should apply a huge clue stick to BIOS developers.

I have some experimental code to detect the LAPIC breakage during run
time, but this needs more thought and is definitely not 2.6.21 material.

> Other oddities is the IRQ name on irq0 is garbled:
>
> lenb@nx6325:~> uname -a; cat /proc/interrupts; sleep 100; cat /proc/interrupts
> Linux nx6325 2.6.21-rc5 #37 SMP Tue Mar 27 22:26:00 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
> CPU0 CPU1
> 0: 723812 0 <NULL>-edge timer

Hrmpf. Ingo ???

tglx


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/