Re: Regression in 2.6.27 caused by commit bfc0f59

From: Linus Torvalds
Date: Tue Sep 02 2008 - 14:44:19 EST




On Tue, 2 Sep 2008, Thomas Gleixner wrote:
>
> Yeah, I know. One of the oddballs is the USB->PS2 keyboard emulator
> which is active during early boot. We do the USB handoff definitely
> after the TSC calibration. Found a box with similar (not that bad)
> hickups which go away when I disable that in the BIOS settings.
>
> Can't say anything about the laptop in that regard, because the BIOS
> does not offer me a switch for that :(

Dang.

We actually _used_ to do this fairly early for UHCI, since it was simple
and very useful to do, and not doing it caused serious problems with the
USB stack.

But then it got moved to the USB stack itself, and for some reason the
DECLARE_PCI_FIXUP_HEADER got turned into a DECLARE_PCI_FIXUP_FINAL instead
(probably because the USB layer expected things to be fairly set up),
which means that it now happens much much later.

But I guess even DECLARE_PCI_FIXUP_HEADER was is too late for TSC, so it
doesn't much matter. Even with the old setup, it would be too late.

You're definitely right that this could easily be the _real_ problem.
Especially as your TSC min value of 2160 is (a) pretty close to the
expected time of a microsecond and (b) so stable that I actually do not
believe that the PIT itself is at all emulated or the problem.

Btw - as to caring about the average value: that's pointless. If you only
look at the average time the PIT read takes place, then it is going to
approximate that "pit_count" thing in the end that I already did.

Why? Because the average value should essentially end up being "(end_tsc -
start_tsc) / pit_count". And if you just compare that to "min_tsc", then
that should always be about a microsecond (on normal machines where the
PIT is essentially on the old emulated internal "ISA" bus on the
southbridge). So you end up with what I already posted, and you already
dismissed.

So average TSC is not any more interesting than "pit_count".

Linus
--
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/