On Thu, Dec 13, 2012 at 06:00:23PM -0800, John Stultz wrote:Fair enough. I think you've done a decent job convincing me that for the update path converting everything to using the RTC class exclusively is the better approach. That way we avoid the duplication on the write at least.
So per Jason's related patch, he's made the point that theI only studied update_persistent_clock, read_persistent_clock is
persistent_clock and RTC class functionality are basically exclusive
(well, in his case, he said this with respect to updating the RTC,
not reading it - I don't mean to put words in his mouth - Please do
correct me here Jason. :). In other words, we probably should avoid
configurations where both the rtc hctosys and persistent_clock
interfaces are both active.
very much different.
Looking at it, I don't think that update_persistent_clock is in any
way related to read_persistent_clock.. update_persistent_clock is
*only* called by NTP, and its *only* purpose is to update the RTC with
NTP synchronized time. In many configurations it will never even be
called.
I think update_persistent_clock is badly named, it should be called
platform_save_ntp_time_to_rtc(), keep it divorced from
read_presistent_clock :)
Yea, the 32k counter in that case is an interesting one (and a good example of wanting both a read_persistent_clock and a rtc). It doesn't exactly implement what read_persistent_clock() intends, but gets away with it, since on the suspend/resume we only take a delta from the read_persistent_clock(), we don't actually care if its accurate time wise. It works well enough for suspend/resume and is nicely more accurate then the RTC.make the HCTOSYS option be dependent on !HAS_PERSISTENT_CLOCK. ThisOn ARM the read_presistent_clock is used to access a true monotonic
way we avoid having configs where there are conflicting paths that
we chose from.
counter that is divorced from the system RTC - look at
arch/arm/plat-omap/counter_32k.c for instance.
This seems like a great use of that hardware resource, and no doubtAlthough he wants to avoid even doing any read/calculation in the RTC suspend/resume path if read_persistent_clock is there. So probably some sort of a flag interface will be needed in that case.
those mach's also have a class RTC driver available talking to
different hardware.
For mach's without that functionality ARM returns a fixed 0 value
from read_persistent_clock, persumably the kernel detects this and
falls back to using class rtc functions?
Maybe Feng would be better off adjusting read_persistent_clock to
return ENODEV in such cases??
So, I think you have to keep your test as a run time test. To supportSo yea, I agree there are some cases where both are necessary, but I also think that in *most* cases we can optimize out the choice at compile time, which is even better then having even the improved runtime conditional checking.
the single image ARM boot you can't make the distinction with kconfig.