Skip to content

RFC Convert the remaining !GENERIC_TIME architectures to use the full timekeeping core.

john stultz lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest3 patches 1 replyIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/3Create arch_gettimeoffset infrastructure for use in the generic timekeeping core.include/linux/time.h kernel/time/timekeeping.c+22 -00 replies
2/3Convert !GENERIC_TIME arches to use arch_getoffset() infrastructure.arch/arm/Kconfig arch/arm/include/asm/mach/time.h arch/arm/kernel/time.c +19 more+120 -6131 reply
3/3Remove CONFIG_GENERIC_TIMEarch/arm/Kconfig arch/avr32/Kconfig arch/blackfin/Kconfig +25 more+19 -1080 replies

Reviews trailers per patch

1 of 3 patches has a Reviewed-by or Acked-by.

PatchPaul Mundt
1/3
2/3A-b
3/3

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [RFC][PATCH 0/3] Convert the remaining !GENERIC_TIME architectures to use the full timekeeping core.

Hello,
Its been two and a half years since the GENERIC_TIME infrastructure
landed. It allowed architectures that have free running counters to only have to provide a clocksource driver and leave the rest of the timekeeping management to generic code.

So far out of the 23 architectures we've fully converted 15 of them over to GENERIC_TIME. The remaining 8 have in some cases been able to convert, but not fully. The issue that keeps most architectures from converting is that they do not have free running counters. They instead use the counter on their tick timer to determine their inter-tick time. This counter usually wraps every interrupt, so its not really efficient to use as a clocksource.

This has created some difficulty as the generic timekeeping core has had to deal with both GENERIC_TIME arches as well as !GENERIC_TIME arches, and since it didn't manage 100% of the calculation in the !GENERIC_TIME case, we've been limited in some of the changes we could make.

So since these last remaining architectures are unlikely to be able to fully convert to GENERIC_TIME as it stands, the generic core should try to adopt to their needs so we can bring them into the fold and reduce code duplication.

The solution is to provide a arch callout from the generic timekeeping
core: arch_gettimeoffset(). On architectures that do not provide a clocksource, the jiffies clocksource is used, and arch_gettimeoffset is added in to create finer grained inter-tick time.

The patchset is split up into three parts.
1) Introducing the arch_gettimeoffset infrastructure to the timekeeping core.
2) Converting the remaining arches over to use arch_gettimeoffset()
3) Finally, Removing all conditionals and references to GENERIC_TIME.

The full patchset reduces the kernel by about 550 lines.

 43 files changed, 141 insertions(+), 701 deletions(-)

Any thoughts or feedback would be appreciated. I've been unable to test the arch conversions, so any help in getting those right would be appreciated. I expect this will probably take a few tries.

And credit to Roman for initially suggesting the idea quite awhile back.

thanks
-john