Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932088AbZLWWFQ (ORCPT ); Wed, 23 Dec 2009 17:05:16 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756501AbZLWWFL (ORCPT ); Wed, 23 Dec 2009 17:05:11 -0500 Received: from e2.ny.us.ibm.com ([32.97.182.142]:34424 "EHLO e2.ny.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755859AbZLWWFJ (ORCPT ); Wed, 23 Dec 2009 17:05:09 -0500 Subject: Re: [RFC][PATCH 0/14] Convert remaining arches to read/update_persistent_clock From: john stultz To: Paul Mundt Cc: lkml , Richard Henderson , linux-alpha@vger.kernel.org, linux-sh@vger.kernel.org, Russell King , Haavard Skinnemoen , Mike Frysinger , Mikael Starvik , David Howells , Yoshinori Sato , Tony Luck , Hirokazu Takata , Geert Uytterhoeven , Koichi Yasutake , Kyle McMartin , "David S. Miller" , David Brownell In-Reply-To: <20091223050810.GA25791@linux-sh.org> References: <1261540762.3508.61.camel@localhost.localdomain> <20091223050810.GA25791@linux-sh.org> Content-Type: text/plain; charset="UTF-8" Date: Wed, 23 Dec 2009 14:04:59 -0800 Message-ID: <1261605899.4163.107.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.28.1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3403 Lines: 66 On Wed, 2009-12-23 at 14:08 +0900, Paul Mundt wrote: > On Tue, Dec 22, 2009 at 07:59:22PM -0800, john stultz wrote: > > In this case the generic read_persistent_clock() and > > update_persistent_clock() methods have been provided to allow the > > generic timekeeping code to initialize xtime and set the persistent > > clock when NTP is synced. However many arches haven't converted, so the > > generic code has to handle the case where the arch is doing this > > management itself. > > > > This patch series tries to convert the following 14 architectures over > > to use read_persistent_clock() and update_persistent_clock() as > > applicable, killing off about 200 lines of arch specific code. > > > While I think that this is a good goal, many of the underlying > architectures have veered pretty far away from having meaningful > persistent clock interfaces after having moved entirely to generic > timekeeping and the RTC subsystem. > > In the case of SH at least that interface along with the generic CMOS > stuff is largely a stop-gap for antiquated platforms that don't have > proper RTC drivers and likely never will, while the default for all of > the rest of the platforms effectively returns a fixed dummy value. I > copied this approach from MIPS originally, so there are at least a few > architectures that this will apply to. > > In any event, I wonder if it might make more sense to take something like > the SPARC implementation that is simply a wrapper around the RTC, move > that out in to a more generic place, and permit architectures to select > an RTC class backed persistent clock instead (it seems to be only > platforms that haven't caught up yet in terms of generic time and RTC > migration that would want to define this interface on their own at all at > this point)? Yea, there's some additional complications with the RTC interface via read_persistent_clock, as some RTC clocks require irqs enabled to be able to read. This keeps them from being used via read_persistent_clock() as it is used prior to irqs being enabled, and then again with irqs disabled in the suspend and resume path. This has a bit of a trade-off, as we can better handle timekeeping around a suspend/resume with read_persistent_clock(), but for some hardware we just can't use the RTC for that. Anyway, if we can improve the timekeeping/RTC interface used for initialization and suspend/resume, I'm all for it (maybe having the RTC code to tell the timekeeping code if it can be accessed with irqs off?). But for hardware that needs irqs, i'm not sure how we can handle resumes correctly there. So suggestions would be welcome. Anyway, the main point of this patch set is to remove the direct access to timekeeping internals (xtime, wall_to_monotonic). Those need to go soon, as they're limiting changes in the timekeeping code. read_persistent_clock() is the current way to avoid it, but if systems are fine doing a settimeofday() at init that's ok too (although some oddities may be seen wrt boot time with the direct settimeofday, I need to refresh my head on how the varying default boot times between arches may be effected). thanks -john -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/