On Mon, May 16, 2011 at 7:44 AM, Thomas Gleixner<tglx@xxxxxxxxxxxxx> wrote:This was the exact reason I asked this question. As discussedOn Mon, 16 May 2011, Santosh Shilimkar wrote:On 5/14/2011 9:21 PM, Thomas Gleixner wrote:
Just for my understanding, the clockevents_reconfigure() needs to
be called with interrupts disabled on that CPU as part of
the CPUFREQ notifiers. I assume the right place is do it
in POST notifier after the CPU clock and hence TWD clock is
updated. Is that right ?
Yes.
Is it safe to only call it in POST? If the frequency is increasing,
and the TWD is not updated until after the CPU frequency has changed,
it is possible for a clockevent to fire too early. Will that cause
problems, or does the clockevent code check against a clocksource to
ensure the desired time has been reached? If that is OK, it
drastically simplifies the code, because the driver only needs to know
the current TWD frequency, not predict a future TWD frequency.
Ok. So it's indirectly taken care then.Since there is need to call this API in interrupt
disable context, does it make sense to take care of it
inside the API itself instead of relying on caller fn ?
Hmm, no strong opinion
For SMP TWD, the caller will always be in interrupt disabled mode,
because the cpufreq notifier will get called on a random cpu, so
smp_call_function_single will be used to transition to the correct
cpu, which disables interrupts.
That's where I was kind of leaning to. Basically doing this in commonThe arch's where the per CPU TWD's share clock, per-cpu
clock-events should be reconfigured on all CPUs, whenever
the parent(CPU) clock has changed using some thing like
smp_call_function_any() etc. Is that right understanding?
Yes. If that's a common requirement we should move that to core code.
Santosh, are you suggesting the TWD be updated from the clock
framework instead of the cpufreq notifier?
I believe ARMv7 requires all CPUs to run at the same frequency, so itYes but the code managing the architectural timer(A15) and TWD(A9) is
would be possible to do this in the core code somewhere, but A15 has
fixed frequency counters, and all SMP Cortex-A9s I've seen use the SMP
TWD driver, so in practice this may end up being the only user.
It would be possible for the clockevent to have a flag>
CLOCKEVENT_EVT_FEAT_SCALES_WITH_CPU, which registers a cpufreq
notifier, if there were any other users.