From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3435CC433E7 for ; Fri, 9 Oct 2020 22:21:16 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id AB1B222281 for ; Fri, 9 Oct 2020 22:21:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="gq72WW6C" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AB1B222281 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=telegraphics.com.au Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:Message-ID:In-Reply-To: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Oft4I7RsjtIN8/liX5CNbFjpkva85okTMTUIz9EBGl0=; b=gq72WW6CKBN/ZRwPYwLlr0CVi g17Fuwixu7vDazMkYj5b/NN0BqlpK7t3VMSPRJAmKDkgg228elWuhMUR0B/M2XNZYOsPuzAZpn1Uw ClC+8Xw8uSaGQXzBYwoY9BFM065hWFVK/naMatm28e0e5g/jPutadWTAb6L9wdptjJYsEhkguqyK0 bPSpkmGN00pw0q2WkxOIWfct/R69dnN60/8jaVwrSqkywiZPXkjxokoeJlFl3iXIiY0PX9JE1bLch iTIbvINuD642ZnpqiSGQPnvJtzcjRNgVapstm4wol2iM9fq4X5US62sW+X9Im1f6sJIIhrY/nvbB+ e1A25ISAQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kR0jD-0000nC-6f; Fri, 09 Oct 2020 22:19:07 +0000 Received: from kvm5.telegraphics.com.au ([98.124.60.144]) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kR0jA-0000mY-AJ for linux-arm-kernel@lists.infradead.org; Fri, 09 Oct 2020 22:19:05 +0000 Received: from localhost (localhost.localdomain [127.0.0.1]) by kvm5.telegraphics.com.au (Postfix) with ESMTP id DF3BA29EC3; Fri, 9 Oct 2020 18:18:51 -0400 (EDT) Date: Sat, 10 Oct 2020 09:18:53 +1100 (AEDT) From: Finn Thain To: Arnd Bergmann Subject: Re: [PATCH 01/13] timekeeping: add CONFIG_LEGACY_TIMER_TICK In-Reply-To: <20201008154651.1901126-2-arnd@arndb.de> Message-ID: References: <20201008154651.1901126-1-arnd@arndb.de> <20201008154651.1901126-2-arnd@arndb.de> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201009_181904_370883_2A8278C6 X-CRM114-Status: GOOD ( 28.56 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sam Creasey , Fenghua Yu , Linus Walleij , Tony Luck , Thomas Gleixner , linux-parisc@vger.kernel.org, linux-ia64@vger.kernel.org, Stephen Boyd , Helge Deller , Daniel Lezcano , linux-kernel@vger.kernel.org, Russell King , "James E.J. Bottomley" , linux-m68k@lists.linux-m68k.org, Geert Uytterhoeven , linux-arm-kernel@lists.infradead.org, John Stultz , Philip Blundell , Greg Ungerer , Joshua Thompson Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Arnd, On Thu, 8 Oct 2020, Arnd Bergmann wrote: > All platforms that currently do not use generic clockevents roughly call > the same set of functions in their timer interrupts: xtime_update(), > update_process_times() and profile_tick(), sometimes in a different > sequence. > > Add a helper function that performs all three of them, to make the > callers more uniform and simplify the interface. > > Signed-off-by: Arnd Bergmann > --- > include/linux/timekeeping.h | 1 + > kernel/time/Kconfig | 7 +++++++ > kernel/time/Makefile | 1 + > kernel/time/tick-legacy.c | 19 +++++++++++++++++++ > 4 files changed, 28 insertions(+) > create mode 100644 kernel/time/tick-legacy.c > > diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h > index 7f7e4a3f4394..3670cb1670ff 100644 > --- a/include/linux/timekeeping.h > +++ b/include/linux/timekeeping.h > @@ -12,6 +12,7 @@ extern int timekeeping_suspended; > /* Architecture timer tick functions: */ > extern void update_process_times(int user); > extern void xtime_update(unsigned long ticks); > +extern void legacy_timer_tick(unsigned long ticks); > > /* > * Get and set timeofday > diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig > index a09b1d61df6a..f2b0cfeade47 100644 > --- a/kernel/time/Kconfig > +++ b/kernel/time/Kconfig > @@ -61,6 +61,13 @@ config POSIX_CPU_TIMERS_TASK_WORK > bool > default y if POSIX_TIMERS && HAVE_POSIX_CPU_TIMERS_TASK_WORK > > +config LEGACY_TIMER_TICK > + bool > + help > + The legacy timer tick helper is used by platforms that > + lack support for the generic clockevent framework. > + New platforms should use generic clockevents instead. > + > if GENERIC_CLOCKEVENTS > menu "Timers subsystem" > > diff --git a/kernel/time/Makefile b/kernel/time/Makefile > index c8f00168afe8..1fb1c1ef6a19 100644 > --- a/kernel/time/Makefile > +++ b/kernel/time/Makefile > @@ -16,6 +16,7 @@ ifeq ($(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST),y) > endif > obj-$(CONFIG_GENERIC_SCHED_CLOCK) += sched_clock.o > obj-$(CONFIG_TICK_ONESHOT) += tick-oneshot.o tick-sched.o > +obj-$(CONFIG_LEGACY_TIMER_TICK) += tick-legacy.o > obj-$(CONFIG_HAVE_GENERIC_VDSO) += vsyscall.o > obj-$(CONFIG_DEBUG_FS) += timekeeping_debug.o > obj-$(CONFIG_TEST_UDELAY) += test_udelay.o > diff --git a/kernel/time/tick-legacy.c b/kernel/time/tick-legacy.c > new file mode 100644 > index 000000000000..73c5a0af4743 > --- /dev/null > +++ b/kernel/time/tick-legacy.c > @@ -0,0 +1,19 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Timer tick function for architectures that lack generic clockevents, > + * consolidated here from m68k/ia64/parisc/arm. > + */ > + > +#include > +#include > +#include > + > +#include "tick-internal.h" > + > +void legacy_timer_tick(unsigned long ticks) > +{ > + if (ticks) > + xtime_update(ticks); > + update_process_times(user_mode(get_irq_regs())); > + profile_tick(CPU_PROFILING); > +} > It's good to see this code refactored in this way because, as well as de-duplication, it reveals the logic that's common to the relevant platforms and may shed some light on the need for that logic. Yet it's not clear to me that the clockevents framework is able to replace that logic on all of the affected hardware. I suppose it remains to be seen. I hate to quibble about naming, but you seem to be using "legacy" here to mean "deprecated" (?) Is it a good idea to prepend such adjectives to symbol names? IMO, the term "legacy" is redundant in this context. That term covers a large portion of kernel code, a large number of hardware features in current silicon, a large portion of the userspace ABI, a large number of production Linux systems, probably all "Unix" systems, etc. As a corollary, cutting edge ("non-legacy") code is often kept out of open source projects by the owners of the intellectual property rights. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel