Messages in this thread | | | Date | Tue, 2 Sep 2008 11:42:55 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: Regression in 2.6.27 caused by commit bfc0f59 |
| |
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
| |