[PATCH v4 0/4] Add support for S3 non-stop TSC support.
From: Feng Tang
Date: Mon Mar 11 2013 - 23:58:29 EST
Hi All,
On some new Intel Atom processors (Penwell and Cloverview), there is
a feature that the TSC won't stop in S3, say the TSC value won't be
reset to 0 after resume. This feature makes TSC a more reliable
clocksource and could benefit the timekeeping code during system
suspend/resume cycles.
The enabling efforts include adding new flags for this feature,
modifying clocksource.h and timekeeping.c to support and utilizing
it.
The major change to timekeeping is the way to count suspended time,
current way is trying to use the persistent clock first, and then
try the rtc if persistent clock can't do it. This patch will change
the trying order to:
suspend-nonstop clocksource -> persistent clock -> rtc
Please help to review them, thanks a lot!
Changelog:
v4:
* Don't touch clocksource_cyc2ns() API which is under
changes
* add an explicit flag for if the suspend time has been
calculated by nonstop clocksource or persistent clock
v3:
* Adopt Jason Gunthorpe's way to convert large cycles to
nsec. And put it into clocksource_cyc2ns()
* Small change in flag name
v2:
* Dump the code changing a clocksource's mult and shit,
as suggested by John to not hurt accuracy
* Modify the CPU feature flag name to be consistent with
other flags
* Solve the problem of judging S3/S4, as the clocksource
counter will be reset after coming out S4.
- Feng
-------------
Feng Tang (4):
x86: Add cpu capability flag X86_FEATURE_NONSTOP_TSC_S3
clocksource: Add new feature flag CLOCK_SOURCE_SUSPEND_NONSTOP
x86: tsc: Add support for new S3_NONSTOP feature
timekeeping: utilize the suspend-nonstop clocksource to count
suspended time
arch/x86/include/asm/cpufeature.h | 1 +
arch/x86/kernel/cpu/intel.c | 12 ++++++++
arch/x86/kernel/tsc.c | 6 +++-
include/linux/clocksource.h | 1 +
kernel/time/timekeeping.c | 58 ++++++++++++++++++++++++++++++++-----
5 files changed, 70 insertions(+), 8 deletions(-)
--
1.7.9.5
--
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/