Re: [PATCH 1/3] timekeeping: Add persistent_clock_exist flag

From: John Stultz
Date: Thu Dec 13 2012 - 21:00:27 EST


On 12/13/2012 05:37 PM, Feng Tang wrote:
On Thu, Dec 13, 2012 at 05:20:36PM -0800, John Stultz wrote:
On 12/12/2012 06:05 PM, Feng Tang wrote:
In current kernel, there are several places which need to check
whether there is a persistent clock for the platform. Current check
is done by calling the read_persistent_clock() and validating the
return value.

Add such a flag to make code more readable and call read_persistent_clock()
only once for all the checks.
Sorry.. What the actual benefit of this patch set? (Usually with
changelogs its better to explain why you're doing something, rather
then just what you're doing.)
The main benefits is not bother to do the rtc_resume and rtc_suspend work
if persistent clock exists. Current RTC suspend/resume code will do many
time calculation and compensation work at first, and then call
timekeeping_inject_sleeptime() which will just return for platform with
persistent clock, what I did in this patchset is to put the check at
the start, also I save the persistent_clock_exist flag for all possible
check after timekeeping_init().

CC'ing Jason as his recent patch is conceptually connected here.

Ok, Feng, so your patch set is a suspend/resume optimization for the case where the architecture has a read_persistent_clock() implementation, but the kernel config has also the rtc HCTOSYS_DEVICE set, right?

So we basically short-cut the rtc's HCTOSYS_DEVICE suspend/resume logic, likely to speed up suspend/resume.

So per Jason's related patch, he's made the point that the 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.

So my thought here is that this same behavioral change could be made via Kconfig constraints rather then extra run-time conditionals. Basically we add a HAS_PERSISTENT_CLOCK, that architectures select if they want to use the read/update_persistent_clock calls. Then we make the HCTOSYS option be dependent on !HAS_PERSISTENT_CLOCK. This way we avoid having configs where there are conflicting paths that we chose from.

thanks
-john
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/