Re: [PATCH v2] Add suspend/resume for HPET

Ingo Molnar
2007-03-31T17:17:40Z

* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> Umm.. WHy not make the device tree look like this:
>
> -- "clocksource" -- +-- HPET
> |
> +-- TSC
> |
> +-- i8259
> |
> +-- lapic timer
> |
> .. whatever else
>
> and use the "struct device" that we *have* for this? The whole "struct
> device" is literally designed to do this, and to be embedded into
> whatever bigger structures you have that describes higher-level
> behaviour. Ie you'd put a "struct device" inside the "struct
> clocksource".

yeah. There's some practical problems that need to be sorted out: much
of the current GTOD code is irq-driven (and all GTOD locks are
irq-safe), while the sysfs code needs to run in process-context level.

Clocksources 'arrive' and 'depart' in hardirq context (which is the
primary place where we notice their breakage, determine that they are
now verified to be usable, etc.). This came partly from legacy: the
gradual conversion of the monolithic time code, and the need to preserve
GTOD and non-GTOD architectures without too much duplication. It also
came partly because there's also a fundamental need to have accurate
time, which is better served from irq context.

i very much agree that this should and must be cleaned up, but it needs
quite a bit more logistics than it might appear at first sight.
Clockevents basically just followed (and had to follow) the direction of
clocksources in this regard.

Ingo