Maciej W. Rozycki wrote:
I don't see how you can have hrtimer support if you choose a periodic
timer...
Well, periodic timers do seem to work somehow for everybody else with no
hassle whatsoever,
Except the purely periodic timers can't serve as HRT (unless one cheats
and also declares them as one-shot).
starting from the DEC code I referred to and including
other platforms, like the i386, which uses the 8254 for the timer
interrupt and as a HPT, by default, the very same counter or the TSC in
What do you mean by HPT -- clocksource?
the CPU if available or, I think, some chipset timer, because some
Weel there was ACPI timer (32-bit free running counter, IIRC) -- but
somehow I was unable to find the code for it in the current source. And there
is HPET which is indeed preferred over broken TSC.
brilliant soul decided to break the TSC at one point.
Note that the 8254 can be reprogrammed into a one-shot mode, but somehow
nobody does it. ;-)
Well, hrtimers can do it but the LAPIC timer is preferred over 8254.
Similarly for the local APIC timer that is used for
scheduling on i386 systems (if available).
LAPIC timer is also used for HRT, i.e. in one-shot mode (simply because
it's the best choice for such purpose -- HRTs are per-CPU).
mips_timer_state appropriately, i.e. to flip at the HZ rate (it may be
based on one of the south bridge choices mentioned above or some
free-running counter for example), but people seem to prefer to write
their own code for some reason. ;-)
Do you have any examples in mind which rewrite their own calibration
code ? I'm too lazy to search into all board code.
See arch/mips/mips-boards/generic/time.c for example. Or any platform
that uses the CP0 timer interrupt and has a configurable CPU frequency --
you can find them easily by looking for ones that calculate
mips_hpt_frequency rather than set it to a fixed value.
Alchemy for one.
Maciej
WBR, Sergei
|