From patchwork Thu Oct 8 15:46:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823375 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 487941580 for ; Thu, 8 Oct 2020 15:48:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 30A1021897 for ; Thu, 8 Oct 2020 15:48:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728622AbgJHPsT (ORCPT ); Thu, 8 Oct 2020 11:48:19 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:43905 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728323AbgJHPsP (ORCPT ); Thu, 8 Oct 2020 11:48:15 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MQMdz-1k4KSW1S3l-00MNpC; Thu, 08 Oct 2020 17:47:22 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 01/13] timekeeping: add CONFIG_LEGACY_TIMER_TICK Date: Thu, 8 Oct 2020 17:46:39 +0200 Message-Id: <20201008154651.1901126-2-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:lJJKtGZAxWt7DMFVnzZRB47PnCLatINXoORTSIFhtBK1TMTdNiv RG4yLsnkyOAV7i7CY4P6/yTTsoYlGUtq5FolW0zFQmapsMzTrePJNwmGfm6BWP+Zj/wddj3 L1sjseIS105PzF6aN9WPsUH3h0CWoHEvfIlgpVpv9Loi24x65wMHlFaPhAQ/Zd5HCND4YC8 a5Apn6ItpnEokOcusQ+YQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:LRXNx4Y7rGM=:W7aq/8a9yjrM8EkUU5AZjb KRhqGA4PFyX2G6oCIIIvLpEOsxxfnokV1+U4lVGw+713pi22Z2jAYx2+OLR3eo4/G8+4vgK3p pX2TbMknPaniCvgONqCrrNhqSqsm7b4l3qnYaXNCRKbqUOty/aF753t5ZwdhlByx5YN14cPfQ QwFuNJRQRPQVIqhJS3YEXx6RVGw6fT+KxGpyZdnfjjmD16ZMQx3Mb+rN/nTQNugTsbrwc3eFW pGWl/GE0s1czW1DB4UqH6MJy5sgdQBmJU36SJx6gzyXQVNN7sDHpOMCuuGsAbpkXCbzIPPVM1 sqn1+jNvH7zxTQ3puVsYymfmUFP4QCs0LXHwH2qML7YU7sJLMMx8jOv5SkoR985WFCY8VZ37b VMIkdIP0uMWMQxhJKHI/nc3f6WdynC7AHHnrUuoX1FjeGj+U2u0ajNtUFIJtQLIDuSMg0IXma KYyj9fO3pmII6+ghqSiR7HejGK3Jr/GPJYuEL9ikQibsqRmEBmYxgDGmJzZdiIRPgkU8E0exT C7t+0L8ll3T2CBZDBaFlbImApYvroGjmFe0p/Kuhq8bowvKZdls/mB2aN3Eu6VVFHPvo/zPhN qp1WHrOO9otDZxX3Xt1CcrhDCsVNVDcg9jOE3Kpp9IgLSLNXmRCDCxldZD4FU0HOsibcmeUm7 9RIqwNBNoNAfE5/aurdG2zdES2SbuCh0cLP0LojJnWxHQ48vMaUQknug6iwTayNUe7q+kVxfY bBetwKQnt/NYaDZvViPfyq3HOJl8WcN0mmpp9rztNyaPUH/tlh0ohxjLIQt0NJZvycMnBTsoa xGiKuBJaEO4MO7ukG8X4jYD+RlsFPm1cbW2v3nNqzfV1ixvBzsHSWtW1ratVBDFK3kLJGAi Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org 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 Reviewed-by: Geert Uytterhoeven --- 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); +} From patchwork Thu Oct 8 15:46:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823373 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1EA111592 for ; Thu, 8 Oct 2020 15:48:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 075A420739 for ; Thu, 8 Oct 2020 15:48:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729035AbgJHPsO (ORCPT ); Thu, 8 Oct 2020 11:48:14 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:36713 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726165AbgJHPsO (ORCPT ); Thu, 8 Oct 2020 11:48:14 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MbjBo-1kw2bm0QD0-00dFFd; Thu, 08 Oct 2020 17:47:28 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 02/13] ia64: convert to legacy_timer_tick Date: Thu, 8 Oct 2020 17:46:40 +0200 Message-Id: <20201008154651.1901126-3-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:ePraAn9sYfjjmN+Pfy1LK/TlC3kbuYMGC10htaNZtEoL4EElh6V uUfQ2M8RrzwilxlpRECo4aworXpv0mPq14YV7xgWgDbr3CkCTdz8ck/laM6m2cSFVWk8wr+ OdiIDGttczrWtoFrBfLrn6aGhfOgPSiDPwJDDepEQn7bbNFk5FuGhTcqhm0p6r9IWAxCHqN K+0illtvK/O63i5klIqSg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:cyBT1lbAb9E=:codLXYZPwTd7MCDcZiI75B P8juIUxynuMFPV6+uX9zpIuubWLpskzTn1R3hmKbzbkdm92glxZXZd8v74/ZHXgMLldY+vqkg XBvH/SUxBSL/EHjcLoaxAsBd9xZ4Fs4f9Fr5fPVErU9CemrnjXxTegDtfYsNdh0o7M3JsXvS1 N8LYnzF+qpmUK/qyXcfXujk4jPShJf3iIy/gHNyjRGOqt/aggkM8YYDmj/8WUSOJNCBP5t4xC hwd2PAe/AflX0qWGcHJ/nJWS8F2js8H72FSyM5ENpmSAxQaQZeCyFSkA8OqBkbwUIlzdyjSUW sUeS0DuWpDJu+YTNsbaKyz2bB3Wb4zmQhkYEgPiEEGG7N5n71Vw0tGKs6A0ptGGOosOo4f4py DAKkYvhv4mQ2JVIU36iiXbMqYpFRZRPGsquOn7AqI+tLbku6+gHW4+gSedB06euHb8dUma0We bnl9vcs1ITAxJ5qpcOJ1Fnblgpfaw5XSx3sAWE4pwycsFoypo7oWuBISD5mfA8Do34aGjsSGG uq2AgHJH9dx7QI7uIqPtYYZO9eyT50QfrntVjEhxSBOkasx3lMSNYhOWWbb6p3y+A2KjEkQJt AbX4eUGLJN976MbgzAUgC1rF1wqRImvaIsKDGKKsJu6N56T7r8AVXjRfcXeBH/RXMurpyIAn5 8bG3zyAgLijtK2CKVPGGDsBKyreAHi7JZ+d5ea81DaAfdvoVD31DuE94XjkTIy/VkotqXj4Q4 iKGRPp1zwgliRU99icuQGNQWDfn3HbrMdyJB0w5srO6ANnhspDtlb0J9CmJ0iNVdibJ58AV56 TO2Pnqz13Y3jOpNam49OSAkfTyRggSKFN+XI+q01x1ycQ7B39ZLSN5mZwDmCuPW8/809ahb Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org ia64 is the only architecture that calls xtime_update() in a loop, once for each jiffie that has passed since the last event. Before commit 3171a0305d62 ("[PATCH] simplify update_times (avoid jiffies/jiffies_64 aliasing problem)") in 2006, it could not actually do this any differently, but now it seems simpler to just pass the number of jiffies that passed in the meantime. While this loses the ability process interrupts in the middle of the timer tick by calling local_irq_enable(), doing so is fairly peculiar anyway and it seems better to just do what everyone else does here. Signed-off-by: Arnd Bergmann --- arch/ia64/Kconfig | 1 + arch/ia64/kernel/time.c | 36 +++++++++++++----------------------- 2 files changed, 14 insertions(+), 23 deletions(-) diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 39b25a5a591b..db8c2a365b70 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -46,6 +46,7 @@ config IA64 select ARCH_THREAD_STACK_ALLOCATOR select ARCH_CLOCKSOURCE_DATA select GENERIC_TIME_VSYSCALL + select LEGACY_TIMER_TICK select SWIOTLB select SYSCTL_ARCH_UNALIGN_NO_WARN select HAVE_MOD_ARCH_SPECIFIC diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index 7abc5f37bfaf..9431edb08508 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c @@ -161,39 +161,29 @@ void vtime_account_idle(struct task_struct *tsk) static irqreturn_t timer_interrupt (int irq, void *dev_id) { - unsigned long new_itm; + unsigned long cur_itm, new_itm, ticks; if (cpu_is_offline(smp_processor_id())) { return IRQ_HANDLED; } new_itm = local_cpu_data->itm_next; + cur_itm = ia64_get_itc(); - if (!time_after(ia64_get_itc(), new_itm)) + if (!time_after(cur_itm, new_itm)) { printk(KERN_ERR "Oops: timer tick before it's due (itc=%lx,itm=%lx)\n", - ia64_get_itc(), new_itm); - - profile_tick(CPU_PROFILING); - - while (1) { - update_process_times(user_mode(get_irq_regs())); - - new_itm += local_cpu_data->itm_delta; - - if (smp_processor_id() == time_keeper_id) - xtime_update(1); - - local_cpu_data->itm_next = new_itm; + cur_itm, new_itm); + ticks = 1; + } else { + ticks = DIV_ROUND_UP(cur_itm - new_itm, + local_cpu_data->itm_delta); + new_itm += ticks * local_cpu_data->itm_delta; + } - if (time_after(new_itm, ia64_get_itc())) - break; + if (smp_processor_id() != time_keeper_id) + ticks = 0; - /* - * Allow IPIs to interrupt the timer loop. - */ - local_irq_enable(); - local_irq_disable(); - } + legacy_timer_tick(ticks); do { /* From patchwork Thu Oct 8 15:46:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823381 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8FF531580 for ; Thu, 8 Oct 2020 15:48:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7F68721897 for ; Thu, 8 Oct 2020 15:48:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731163AbgJHPsZ (ORCPT ); Thu, 8 Oct 2020 11:48:25 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:35595 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726304AbgJHPsW (ORCPT ); Thu, 8 Oct 2020 11:48:22 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MQdMG-1k2x0a3lRe-00NkbV; Thu, 08 Oct 2020 17:47:35 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 03/13] ARM: rpc: use legacy_timer_tick Date: Thu, 8 Oct 2020 17:46:41 +0200 Message-Id: <20201008154651.1901126-4-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:AV/xQQR2jt9Rwk0ymjAs+h06lgep6VgQtpKXSCm3RsvPedqWUvi k4xxlR1Egxcic8tT5i13A/WWoGB0lOB3XDe3RLEMa5aSAJ198tXUY5jfimFkr/t+H8PeSiO ou+MyWyazink8mfnqoLPk4rmHIQhJJM8u6Z5luNIbJyW7sL8WLXmM7pDT7b710FQyzvF1pN NYN6qpDk6KkYtg+eJTyYA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:HJYHx377UCA=:x/7rjJt+7xnjvb99y4WTbl cy+IsvGh3OG7yWjqodDRveTEuOWpIO3rbNU+jmFFmK/nohkqNWSVLuHFOOENtAxMhoMDjoNMC LQSmtU7RW5FF2lTBKlhkOk81b7fJPfIQnlELDI1jxBFvAsSwwiq9ib7p+7jvwFytw3dMwM1ve mJ4TMN44fIiPSxSM5RLxF6Wuc97rNJVa8fP3Dsm37YT6w+9xcQPCLVaAEx09tCCqFZBIeklsv UtMeQdswWU5fX0EGDZoPZgTTO+Coe+Iuowo1hbJEkY2Vrp3a+QtX7Xpw8s8pkMzyweyGzxdrP jIh4F6imG5gupoxZuP/mjiOxpsFGhP9UEmTpmxCvbnIB2sR4/fznuL0tlRku2KIBVWUZcb1yt fY3VkGQoGi6+hZ+4mFC3Y4OMQ8qSw8CgbNZwexkb5sDBxBZuc4sciWmo0ZMkxYOm06CfySarx JFUUwNLVoQHbZVydSdQX+BdwdK1Xh9rvnmtxQ1CTF+C7SMAoj440oBlhoAkZNbYG2G+v/qcTc 08wZdcP5uwlOyrOPOTOvS7nRXZCL0No1XSk4gQ6C+d5QsVJDECW9vqCNQdAbtj2l7pbtcTlhQ Zfw7MK94SfxGmGJNvmFb9a0lxL6YEshI5wwfBbobr/Q3E/w5n2UUwzj25x1BLRFebonP6KBRK ELzh6zwYfL7jT6d5mL/fDVIBrqbJ7oja+bzAIWNyUJkmKCkZf4ZC+p5IcrE5UCOubLc/z/Kuj LqYbQnUv6Lgspo76cwb7OIKKflco8Sk3Fzsrs6BSCmW3Y3Bc18QKuON2YgbdHaJsho8wpaFHM 5dzeyP6tLppPFy+cEmdJmFeVQpJz8JO/CANIprUirlscJmMf1FeFBdBmNEcQ8HXK9Cj44ym Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org rpc is the only user of the timer_tick() function now, and can just call the newly added generic version instead. Signed-off-by: Arnd Bergmann --- arch/arm/Kconfig | 1 + arch/arm/include/asm/mach/time.h | 2 -- arch/arm/kernel/time.c | 14 -------------- arch/arm/mach-rpc/time.c | 2 +- 4 files changed, 2 insertions(+), 17 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index fe2f17eb2b50..13af8d7a6c17 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -467,6 +467,7 @@ config ARCH_RPC select HAVE_IDE select HAVE_PATA_PLATFORM select ISA_DMA_API + select LEGACY_TIMER_TICK select NEED_MACH_IO_H select NEED_MACH_MEMORY_H select NO_IOPORT_MAP diff --git a/arch/arm/include/asm/mach/time.h b/arch/arm/include/asm/mach/time.h index d75d39280db7..5f522916ec99 100644 --- a/arch/arm/include/asm/mach/time.h +++ b/arch/arm/include/asm/mach/time.h @@ -7,8 +7,6 @@ #ifndef __ASM_ARM_MACH_TIME_H #define __ASM_ARM_MACH_TIME_H -extern void timer_tick(void); - typedef void (*clock_access_fn)(struct timespec64 *); extern int register_persistent_clock(clock_access_fn read_persistent); diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index 09b149b09c43..b3836c94dc74 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c @@ -60,20 +60,6 @@ unsigned long profile_pc(struct pt_regs *regs) EXPORT_SYMBOL(profile_pc); #endif -#ifndef CONFIG_GENERIC_CLOCKEVENTS -/* - * Kernel system timer support. - */ -void timer_tick(void) -{ - profile_tick(CPU_PROFILING); - xtime_update(1); -#ifndef CONFIG_SMP - update_process_times(user_mode(get_irq_regs())); -#endif -} -#endif - static void dummy_clock_access(struct timespec64 *ts) { ts->tv_sec = 0; diff --git a/arch/arm/mach-rpc/time.c b/arch/arm/mach-rpc/time.c index da85cac761ba..9f8edcfe9357 100644 --- a/arch/arm/mach-rpc/time.c +++ b/arch/arm/mach-rpc/time.c @@ -81,7 +81,7 @@ static irqreturn_t ioc_timer_interrupt(int irq, void *dev_id) { ioc_time += RPC_LATCH; - timer_tick(); + legacy_timer_tick(1); return IRQ_HANDLED; } From patchwork Thu Oct 8 15:46:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823383 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 517691592 for ; Thu, 8 Oct 2020 15:48:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3E129217BA for ; Thu, 8 Oct 2020 15:48:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729527AbgJHPs3 (ORCPT ); Thu, 8 Oct 2020 11:48:29 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:55725 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726304AbgJHPs3 (ORCPT ); Thu, 8 Oct 2020 11:48:29 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MWSFB-1jskwY2rRj-00Xu9o; Thu, 08 Oct 2020 17:47:42 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 04/13] parisc: use legacy_timer_tick Date: Thu, 8 Oct 2020 17:46:42 +0200 Message-Id: <20201008154651.1901126-5-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:JdVsDzGIawLwj8GEUcu7QzV/eSgsFBBvS0zSunz+ouzZc2Q42gH wrq8P/ptdFN5PdXAnSdPK0jcmjjMVf2vwLGkyGbU+4+wf7ii7gGAJOpJxhpL50KcY/HrtG/ cWCdxngFkr9agKUW7Hbh21FchDr+S7YHVvrOZTcGziVShhOCTL4Yu5VjfVRuTZfOWZaoUva CcYs2SG7EoaTpdxAmfUzA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:KZruJGxefIk=:xe3mRoOuTB6CmdWXSfBp/W OxmZ6VsiGfShkMH1AvQb3F7fr+iAbCgSbX/UM3s0vTBpZDkM3oEuD5h0UsiHP/2qzs5gcY436 Odm6b+I7fFLD0OMLDqKzkb7D5hORDXcGk5ob+C5YMe2wObJw3Mg1zgKV+mzBdfSj6yOeTfhqS 478MASLcP8Qqc1N2NOJ1ukQvGIhiucZTuHdhGPmlRwGPiuZUZ6+j4yT/C/SpkMX6ehPnH9okK jNOCK7+HVIxxlbKtzOi0YSwT/ikQAHBRKYToKMUpbGRZwDQdHDqL9/LHFNW7rLG7gCpCBrvP2 IZoBoAN3Wm1FHx/NN3jHYSTfrX9PGYtgT4ACQ0XseAi4iNuQCFfd7ztsA8H+sO4wmaCaJUXRR PD9WCPi16Zrizrhvyp3gswizEF+Gbxmu0cjCcNrIJhWPLmrpXv+3TK3us04jpfQHInW/ogqV1 a/24PqyLY/NvbJwxO+HTYnbhXFzIM9cLmw66It7D8ThBhFAmNaP1Pbpm5COVz9YL0HTC0dpzc yE96fToR2MNVWM3i5dVUmxrTBMhwlHfkayyb6bXBtbltsf3ZCAVL8xCBPOo3zEe8YLXufyg7G BHUMrmSx5xE1mVF0ssKoLh8Uz+fjmXMrIo7je9EU68kjozzKmFbWQKWrAT33olxXvB23K+pYr T+kVW32AGwSkx+1fZWkpQJoBud4RhdI62tZEkmNV+sTPHbNG0yi3kg5g3rQrSjCSvkE32R1Aj 8p5Rws7nG8SCU2qhjGQghuOCDq/ACf0+pkOC7fbNgfdsA6I/Nu/MlU8ZVo91WaRyePMWSA1BI sW1IR23mPOEb2kT3spdqoIRUDps68oE2qN17RLFhr92t9xFlIeoxQ+6gys/MRXh5YzG8K1B Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org parisc has selected CONFIG_GENERIC_CLOCKEVENTS since commit 43b1f6abd590 ("parisc: Switch to generic sched_clock implementation"), but does not appear to actually be using it, and instead calls the low-level timekeeping functions directly. Remove the GENERIC_CLOCKEVENTS select again, and instead convert to the newly added legacy_timer_tick() helper. Signed-off-by: Arnd Bergmann --- Documentation/features/time/clockevents/arch-support.txt | 2 +- arch/parisc/Kconfig | 2 +- arch/parisc/kernel/time.c | 9 +++------ 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Documentation/features/time/clockevents/arch-support.txt b/Documentation/features/time/clockevents/arch-support.txt index 8287b6aa522e..61a5c9d68c15 100644 --- a/Documentation/features/time/clockevents/arch-support.txt +++ b/Documentation/features/time/clockevents/arch-support.txt @@ -21,7 +21,7 @@ | nds32: | ok | | nios2: | ok | | openrisc: | ok | - | parisc: | ok | + | parisc: | TODO | | powerpc: | ok | | riscv: | ok | | s390: | ok | diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig index b234e8154cbd..78b17621ee4a 100644 --- a/arch/parisc/Kconfig +++ b/arch/parisc/Kconfig @@ -52,7 +52,7 @@ config PARISC select HAVE_REGS_AND_STACK_ACCESS_API select GENERIC_SCHED_CLOCK select HAVE_UNSTABLE_SCHED_CLOCK if SMP - select GENERIC_CLOCKEVENTS + select LEGACY_TIMER_TICK select CPU_NO_EFFICIENT_FFS select NEED_DMA_MAP_STATE select NEED_SG_DMA_LENGTH diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index 04508158815c..889aaaa555ea 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c @@ -70,8 +70,6 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id) /* gcc can optimize for "read-only" case with a local clocktick */ unsigned long cpt = clocktick; - profile_tick(CPU_PROFILING); - /* Initialize next_tick to the old expected tick time. */ next_tick = cpuinfo->it_value; @@ -86,10 +84,9 @@ irqreturn_t __irq_entry timer_interrupt(int irq, void *dev_id) cpuinfo->it_value = next_tick; /* Go do system house keeping. */ - if (cpu == 0) - xtime_update(ticks_elapsed); - - update_process_times(user_mode(get_irq_regs())); + if (cpu != 0) + ticks_elapsed = 0; + legacy_timer_tick(ticks_elapsed); /* Skip clockticks on purpose if we know we would miss those. * The new CR16 must be "later" than current CR16 otherwise From patchwork Thu Oct 8 15:46:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823387 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 127D31592 for ; Thu, 8 Oct 2020 15:48:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E67A320739 for ; Thu, 8 Oct 2020 15:48:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731205AbgJHPsj (ORCPT ); Thu, 8 Oct 2020 11:48:39 -0400 Received: from mout.kundenserver.de ([212.227.17.10]:56269 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731178AbgJHPsi (ORCPT ); Thu, 8 Oct 2020 11:48:38 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1Mn1iT-1kp7mV2szP-00k4sm; Thu, 08 Oct 2020 17:47:49 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 05/13] m68k: coldfire: use legacy_timer_tick() Date: Thu, 8 Oct 2020 17:46:43 +0200 Message-Id: <20201008154651.1901126-6-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:xNQxS2XthDSdDM0fGxa0OcEpfzhuQeGcWB55DeOgoAALv6NRiur EcuewQB+TTEl3bne5Oz1MWVYMU3jfDcmVWBNe4Jz53Ma61yGreo2XZNX08gunfwwUXS6DHo ETJWbwiHtG6dXsQNe6llZp9PCSpmCZJA77Dy5/jHVXEHXT+Dw0yIR6Pon+8/MJVPWSC24yg 3yohRLHTfW+RAfhNEitVQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:ri+t/fACKuk=:q4aukyYZnZOvR98hZhLtT2 +pr15i/AgsInH8Epuvg/PLEnJAzzr37jF9HhP3vXuC7apUauO931yJtR329OHwpcGXdHnTi3w XpKVoTERi6P3mbQV8klWRC94kQlcWsIEFLueTHw48ujkea8sgCCwcEx3F3oBQFYhsxP9XlfI0 SzijQB37ScmmHnoyRAkLHVfKcahumtbB2yPiazNT57MJErpvXfza1AYhC6Hq0Ka22J75CmxVc 9Ce6PuI1WHc//cCBkNrwiyk2Y3ATGxTdbrzyxzEkWW/sYBOcu7JvB1yCSP1Mnh8ToQNANeuzb Tb8xAgsTMBGnlDxa94ZHgAfGIn9fr6g3XNSrdj5ePe44aAXluhpwRgVm7AkvQ+rPzujLsBTQ4 xqHaKmlk8eA/o5D5SdtSB1dU1NUPSPdhVUKZHlBo+aa/Ldiv8O8IJ8Ce2ODwm6PFC59nOWgoe QsfoyGc6YFcdcF6rDX5wwIM2axDM+cBy9Rv8q6uO1FMaffY9WGeEglvVP2PS4MG0MCwq4obN7 ZYjCj7miHQo9uqk490MIO6zdrZjFowhAnduzjo10xjJPWtJDXiRa+XplDqM96ApH/CIIsiplG VLzKwUOBR3fR5VkbADwW1Y47VwyJrHJvG08f9icaHU8FJLEYfZj2IeI9Egcn3WbasVlaNnRwB 6yC5Uu8PZQ6bprjtq4JQers2q1YXwmF13bEmda+jn/PGY8hWORyq9KzC9rQXDF4GiqPvDk2Aa qs+RE1zS89LPXa8EjzvNeoxi3u0FjahRcrp7J2TU1EMB/ekJapr4YjvCyFesjuBVMXHdTUQMW VaMBL9Ae0k5h9jYeFdz+oCTCYNlkL1AYAk1qCDmztRtGGz1bpvpbU4j6gxZu2Gv1Omf2Lnk Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org Replace the indirect function calls in the timer code with direct calls to the newly added legacy_timer_tick() helper for those that have not yet been converted to generic clockevents. This makes the timer code a little more self-contained. Signed-off-by: Arnd Bergmann Tested-by: Greg Ungerer --- arch/m68k/Kconfig.cpu | 35 +++++++++++++++++++++++++++++------ arch/m68k/coldfire/Makefile | 32 ++++++++++++++++++-------------- arch/m68k/coldfire/sltimers.c | 6 ++---- arch/m68k/coldfire/timers.c | 6 ++---- 4 files changed, 51 insertions(+), 28 deletions(-) diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu index 694c4fca9f5d..322a35ef14c6 100644 --- a/arch/m68k/Kconfig.cpu +++ b/arch/m68k/Kconfig.cpu @@ -137,6 +137,7 @@ config M5206 bool "MCF5206" depends on !MMU select COLDFIRE_SW_A7 + select COLDFIRE_TIMERS select HAVE_MBAR select CPU_NO_EFFICIENT_FFS help @@ -146,6 +147,7 @@ config M5206e bool "MCF5206e" depends on !MMU select COLDFIRE_SW_A7 + select COLDFIRE_TIMERS select HAVE_MBAR select CPU_NO_EFFICIENT_FFS help @@ -154,7 +156,7 @@ config M5206e config M520x bool "MCF520x" depends on !MMU - select GENERIC_CLOCKEVENTS + select COLDFIRE_PIT_TIMER select HAVE_CACHE_SPLIT help Freescale Coldfire 5207/5208 processor support. @@ -162,7 +164,7 @@ config M520x config M523x bool "MCF523x" depends on !MMU - select GENERIC_CLOCKEVENTS + select COLDFIRE_PIT_TIMER select HAVE_CACHE_SPLIT select HAVE_IPSBAR help @@ -172,6 +174,7 @@ config M5249 bool "MCF5249" depends on !MMU select COLDFIRE_SW_A7 + select COLDFIRE_TIMERS select HAVE_MBAR select CPU_NO_EFFICIENT_FFS help @@ -181,6 +184,7 @@ config M525x bool "MCF525x" depends on !MMU select COLDFIRE_SW_A7 + select COLDFIRE_TIMERS select HAVE_MBAR select CPU_NO_EFFICIENT_FFS help @@ -189,10 +193,10 @@ config M525x config M5271 bool "MCF5271" depends on !MMU + select COLDFIRE_PIT_TIMER select M527x select HAVE_CACHE_SPLIT select HAVE_IPSBAR - select GENERIC_CLOCKEVENTS help Freescale (Motorola) ColdFire 5270/5271 processor support. @@ -200,6 +204,7 @@ config M5272 bool "MCF5272" depends on !MMU select COLDFIRE_SW_A7 + select COLDFIRE_TIMERS select HAVE_MBAR select CPU_NO_EFFICIENT_FFS help @@ -208,17 +213,17 @@ config M5272 config M5275 bool "MCF5275" depends on !MMU + select COLDFIRE_PIT_TIMER select M527x select HAVE_CACHE_SPLIT select HAVE_IPSBAR - select GENERIC_CLOCKEVENTS help Freescale (Motorola) ColdFire 5274/5275 processor support. config M528x bool "MCF528x" depends on !MMU - select GENERIC_CLOCKEVENTS + select COLDFIRE_PIT_TIMER select HAVE_CACHE_SPLIT select HAVE_IPSBAR help @@ -227,6 +232,7 @@ config M528x config M5307 bool "MCF5307" depends on !MMU + select COLDFIRE_TIMERS select COLDFIRE_SW_A7 select HAVE_CACHE_CB select HAVE_MBAR @@ -237,6 +243,7 @@ config M5307 config M532x bool "MCF532x" depends on !MMU + select COLDFIRE_TIMERS select M53xx select HAVE_CACHE_CB help @@ -245,6 +252,7 @@ config M532x config M537x bool "MCF537x" depends on !MMU + select COLDFIRE_TIMERS select M53xx select HAVE_CACHE_CB help @@ -254,6 +262,7 @@ config M5407 bool "MCF5407" depends on !MMU select COLDFIRE_SW_A7 + select COLDFIRE_TIMERS select HAVE_CACHE_CB select HAVE_MBAR select CPU_NO_EFFICIENT_FFS @@ -263,6 +272,7 @@ config M5407 config M547x bool "MCF547x" select M54xx + select COLDFIRE_SLTIMERS select MMU_COLDFIRE if MMU select FPU if MMU select HAVE_CACHE_CB @@ -273,6 +283,7 @@ config M547x config M548x bool "MCF548x" + select COLDFIRE_SLTIMERS select MMU_COLDFIRE if MMU select FPU if MMU select M54xx @@ -284,8 +295,8 @@ config M548x config M5441x bool "MCF5441x" + select COLDFIRE_PIT_TIMER select MMU_COLDFIRE if MMU - select GENERIC_CLOCKEVENTS select HAVE_CACHE_CB help Freescale Coldfire 54410/54415/54416/54417/54418 processor support. @@ -302,6 +313,18 @@ config M54xx select HAVE_PCI bool +config COLDFIRE_PIT_TIMER + bool + select GENERIC_CLOCKEVENTS + +config COLDFIRE_TIMERS + bool + select LEGACY_TIMER_TICK + +config COLDFIRE_SLTIMERS + bool + select LEGACY_TIMER_TICK + endif # COLDFIRE diff --git a/arch/m68k/coldfire/Makefile b/arch/m68k/coldfire/Makefile index 573eabca1a3a..a3e18d73d8b8 100644 --- a/arch/m68k/coldfire/Makefile +++ b/arch/m68k/coldfire/Makefile @@ -16,20 +16,24 @@ asflags-$(CONFIG_FULLDEBUG) := -DDEBUGGER_COMPATIBLE_CACHE=1 obj-$(CONFIG_COLDFIRE) += cache.o clk.o device.o dma.o entry.o vectors.o -obj-$(CONFIG_M5206) += m5206.o timers.o intc.o reset.o -obj-$(CONFIG_M5206e) += m5206.o timers.o intc.o reset.o -obj-$(CONFIG_M520x) += m520x.o pit.o intc-simr.o reset.o -obj-$(CONFIG_M523x) += m523x.o pit.o dma_timer.o intc-2.o reset.o -obj-$(CONFIG_M5249) += m5249.o timers.o intc.o intc-5249.o reset.o -obj-$(CONFIG_M525x) += m525x.o timers.o intc.o intc-525x.o reset.o -obj-$(CONFIG_M527x) += m527x.o pit.o intc-2.o reset.o -obj-$(CONFIG_M5272) += m5272.o intc-5272.o timers.o -obj-$(CONFIG_M528x) += m528x.o pit.o intc-2.o reset.o -obj-$(CONFIG_M5307) += m5307.o timers.o intc.o reset.o -obj-$(CONFIG_M53xx) += m53xx.o timers.o intc-simr.o reset.o -obj-$(CONFIG_M5407) += m5407.o timers.o intc.o reset.o -obj-$(CONFIG_M54xx) += m54xx.o sltimers.o intc-2.o -obj-$(CONFIG_M5441x) += m5441x.o pit.o intc-simr.o reset.o +obj-$(CONFIG_M5206) += m5206.o intc.o reset.o +obj-$(CONFIG_M5206e) += m5206.o intc.o reset.o +obj-$(CONFIG_M520x) += m520x.o intc-simr.o reset.o +obj-$(CONFIG_M523x) += m523x.o dma_timer.o intc-2.o reset.o +obj-$(CONFIG_M5249) += m5249.o intc.o intc-5249.o reset.o +obj-$(CONFIG_M525x) += m525x.o intc.o intc-525x.o reset.o +obj-$(CONFIG_M527x) += m527x.o intc-2.o reset.o +obj-$(CONFIG_M5272) += m5272.o intc-5272.o +obj-$(CONFIG_M528x) += m528x.o intc-2.o reset.o +obj-$(CONFIG_M5307) += m5307.o intc.o reset.o +obj-$(CONFIG_M53xx) += m53xx.o intc-simr.o reset.o +obj-$(CONFIG_M5407) += m5407.o intc.o reset.o +obj-$(CONFIG_M54xx) += m54xx.o intc-2.o +obj-$(CONFIG_M5441x) += m5441x.o intc-simr.o reset.o + +obj-$(CONFIG_COLDFIRE_PIT_TIMER) += pit.o +obj-$(CONFIG_COLDFIRE_TIMERS) += timers.o +obj-$(CONFIG_COLDFIRE_SLTIMERS) += sltimers.o obj-$(CONFIG_NETtel) += nettel.o obj-$(CONFIG_CLEOPATRA) += nettel.o diff --git a/arch/m68k/coldfire/sltimers.c b/arch/m68k/coldfire/sltimers.c index 5ab81c9c552d..25a1319f3cb8 100644 --- a/arch/m68k/coldfire/sltimers.c +++ b/arch/m68k/coldfire/sltimers.c @@ -83,14 +83,13 @@ void mcfslt_profile_init(void) static u32 mcfslt_cycles_per_jiffy; static u32 mcfslt_cnt; -static irq_handler_t timer_interrupt; - static irqreturn_t mcfslt_tick(int irq, void *dummy) { /* Reset Slice Timer 0 */ __raw_writel(MCFSLT_SSR_BE | MCFSLT_SSR_TE, TA(MCFSLT_SSR)); mcfslt_cnt += mcfslt_cycles_per_jiffy; - return timer_interrupt(irq, dummy); + legacy_timer_tick(1); + return IRQ_HANDLED; } static u64 mcfslt_read_clk(struct clocksource *cs) @@ -136,7 +135,6 @@ void hw_timer_init(irq_handler_t handler) /* initialize mcfslt_cnt knowing that slice timers count down */ mcfslt_cnt = mcfslt_cycles_per_jiffy; - timer_interrupt = handler; r = request_irq(MCF_IRQ_TIMER, mcfslt_tick, IRQF_TIMER, "timer", NULL); if (r) { pr_err("Failed to request irq %d (timer): %pe\n", MCF_IRQ_TIMER, diff --git a/arch/m68k/coldfire/timers.c b/arch/m68k/coldfire/timers.c index b8301fddf901..24b5e2d1b00b 100644 --- a/arch/m68k/coldfire/timers.c +++ b/arch/m68k/coldfire/timers.c @@ -48,8 +48,6 @@ void coldfire_profile_init(void); static u32 mcftmr_cycles_per_jiffy; static u32 mcftmr_cnt; -static irq_handler_t timer_interrupt; - /***************************************************************************/ static void init_timer_irq(void) @@ -77,7 +75,8 @@ static irqreturn_t mcftmr_tick(int irq, void *dummy) __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, TA(MCFTIMER_TER)); mcftmr_cnt += mcftmr_cycles_per_jiffy; - return timer_interrupt(irq, dummy); + legacy_timer_tick(1); + return IRQ_HANDLED; } /***************************************************************************/ @@ -126,7 +125,6 @@ void hw_timer_init(irq_handler_t handler) clocksource_register_hz(&mcftmr_clk, FREQ); - timer_interrupt = handler; init_timer_irq(); r = request_irq(MCF_IRQ_TIMER, mcftmr_tick, IRQF_TIMER, "timer", NULL); if (r) { From patchwork Thu Oct 8 15:46:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823391 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D2F19175A for ; Thu, 8 Oct 2020 15:48:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BE3BD217BA for ; Thu, 8 Oct 2020 15:48:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726304AbgJHPsq (ORCPT ); Thu, 8 Oct 2020 11:48:46 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:37319 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725987AbgJHPsp (ORCPT ); Thu, 8 Oct 2020 11:48:45 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MKszj-1k5RzS1wE9-00LIxa; Thu, 08 Oct 2020 17:47:56 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 06/13] m68k: split heartbeat out of timer function Date: Thu, 8 Oct 2020 17:46:44 +0200 Message-Id: <20201008154651.1901126-7-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:9dogH0lDmXqhgYFQOL+Lk++oX4XbAfHtinaTN1FAILEIwJoSYcs pje8LKNSkxCKC5N1sfRTrZt8nMFibpgxf4gKtYgeqJhRsr/OynkyP4UPBYjvOIKNqXCDCC+ Y0eQu9eKxYSjwdOyRVU/Q5f9w6wdQwp46ymRa2lFz8XVhRomdRno5TH4QSSzp/T1utLIFJ5 nWi+bDjRgN6b2fPTyH1Tw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:wZhxtDxgXMc=:JIQdvfkU6OFN7EDBUpldhF 7V0CvcuadwYYx4Fxt2DRivlaxinpNO4PE0TWApAsyUYWaGYrKt53c5d3l7hyOo+9HM9+UIcp3 9tXl7Ufj/C/qTgOHutXvpdiaEIJhslMHhJns6dY3lyV5uWuUAN8VN1Mjf5JNq0qitYgujTJU5 lL81eqhTEvsypDHLZvCHtwgrnt7kKtyqC3VO2DrIoBm23a/b64jP6LETV9p9Kdse7MKoK69qD cKar03XFgTVA32zQLHOk9ir4k5O7cZU4mdTqXymI9kmXX+5XzTbheUxuZSli32DNNOXN283Sh 0fG3BnuIjJBELM6vWFKsC2acdiAgzcc09FOKd8C5UEORdC43CCxdUfMsJf4mqumGu/a/Hdy6h eqHI66EEWGITc/lwHnzxdvLu3nJLH9mLFEsjL//sCcQaCTjKeSHWwrJOvebjn65Dgtlz1V72k 0uGssMoBRpeKa/88XZqaNuhLgtmWY8gwrnNf6ol2JhpF1QVe2PuOHotuKkQ6o9ZcIHD1wm71g wXnnVTXTPI+VraEWagxYwdVdXwg+zvUyhu0gBjyGijHRMl4BGw9A07ON41D6WXc/+FGsQHZdv tMwoGiNEynykFTX9Xqm75GjJl3UI+kF3QsfI0YBNYpECdvsKcU0AUPpn7SRhWft++iSsXC8um x4ONqnM7Y+EzUzstNc7Zikx3L+j94Hu7ARXFob+RNlvFqwK5mQRdJIDB3ggggpG0vkIg39D7X USSsOqT6O6YOcNwwyY9J/vU/zhHNndNf6JUkN69e8ngFcFTSXHt6Dlf2VoJDrhV6re7oMl/Fp n5a7+A+wRl7LPU4l9mxRyxOkBjOaxd3vBpJouZEpPokQLqrOadk7ZWpafHk+1eRQyhAw3ZB Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org The heartbeat functionality is mostly separate from the actual timer interrupt handling, and it is only used on five platforms. Split it out into a separate function and call that directly from the timer irq on those platforms. Signed-off-by: Arnd Bergmann Reviewed-by: Geert Uytterhoeven Acked-by: Geert Uytterhoeven Tested-by: Geert Uytterhoeven --- arch/m68k/amiga/config.c | 1 + arch/m68k/apollo/config.c | 1 + arch/m68k/atari/time.c | 2 ++ arch/m68k/hp300/time.c | 1 + arch/m68k/include/asm/machdep.h | 7 +++++++ arch/m68k/kernel/time.c | 7 +++++-- arch/m68k/q40/q40ints.c | 2 ++ 7 files changed, 19 insertions(+), 2 deletions(-) diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index bee9f240f35d..29f92333119e 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c @@ -480,6 +480,7 @@ static irqreturn_t ciab_timer_handler(int irq, void *dev_id) clk_total += jiffy_ticks; clk_offset = 0; timer_routine(0, NULL); + timer_heartbeat(); return IRQ_HANDLED; } diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c index 762da5d7a415..30915f1a8760 100644 --- a/arch/m68k/apollo/config.c +++ b/arch/m68k/apollo/config.c @@ -173,6 +173,7 @@ irqreturn_t dn_timer_int(int irq, void *dev_id) volatile unsigned char x; timer_handler(irq, dev_id); + timer_heartbeat(); x = *(volatile unsigned char *)(apollo_timer + 3); x = *(volatile unsigned char *)(apollo_timer + 5); diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c index ce923a523695..ce4a5961ca93 100644 --- a/arch/m68k/atari/time.c +++ b/arch/m68k/atari/time.c @@ -21,6 +21,7 @@ #include #include +#include DEFINE_SPINLOCK(rtc_lock); EXPORT_SYMBOL_GPL(rtc_lock); @@ -49,6 +50,7 @@ static irqreturn_t mfp_timer_c_handler(int irq, void *dev_id) } while (last_timer_count == 1); clk_total += INT_TICKS; timer_routine(0, NULL); + timer_heartbeat(); local_irq_restore(flags); return IRQ_HANDLED; diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c index bfee13e1d0fe..e3cd938de0f9 100644 --- a/arch/m68k/hp300/time.c +++ b/arch/m68k/hp300/time.c @@ -65,6 +65,7 @@ static irqreturn_t hp300_tick(int irq, void *dev_id) clk_total += INTVAL; clk_offset = 0; timer_routine(0, NULL); + timer_heartbeat(); local_irq_restore(flags); /* Turn off the network and SCSI leds */ diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h index 49bd3266b4b1..e62a39d01ae4 100644 --- a/arch/m68k/include/asm/machdep.h +++ b/arch/m68k/include/asm/machdep.h @@ -35,6 +35,13 @@ extern void (*mach_beep) (unsigned int, unsigned int); /* Hardware clock functions */ extern void hw_timer_init(irq_handler_t handler); extern unsigned long hw_timer_offset(void); +#ifdef CONFIG_HEARTBEAT +extern void timer_heartbeat(void); +#else +static inline void timer_heartbeat(void) +{ +} +#endif extern void config_BSP(char *command, int len); diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index c2697a4d4ddd..c05cec21b05f 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c @@ -45,8 +45,12 @@ static irqreturn_t timer_interrupt(int irq, void *dummy) xtime_update(1); update_process_times(user_mode(get_irq_regs())); profile_tick(CPU_PROFILING); + return IRQ_HANDLED; +} #ifdef CONFIG_HEARTBEAT +void timer_heartbeat(void) +{ /* use power LED as a heartbeat instead -- much more useful for debugging -- based on the version for PReP by Cort */ /* acts like an actual heart beat -- ie thump-thump-pause... */ @@ -68,9 +72,8 @@ static irqreturn_t timer_interrupt(int irq, void *dummy) dist = period / 4; } } -#endif /* CONFIG_HEARTBEAT */ - return IRQ_HANDLED; } +#endif /* CONFIG_HEARTBEAT */ #ifdef CONFIG_M68KCLASSIC #if !IS_BUILTIN(CONFIG_RTC_DRV_GENERIC) diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c index 1c696906c159..b01b545a2db0 100644 --- a/arch/m68k/q40/q40ints.c +++ b/arch/m68k/q40/q40ints.c @@ -17,6 +17,7 @@ #include #include +#include #include #include @@ -144,6 +145,7 @@ static irqreturn_t q40_timer_int(int irq, void *dev_id) local_irq_save(flags); timer_routine(0, NULL); + timer_heartbeat(); local_irq_restore(flags); } return IRQ_HANDLED; From patchwork Thu Oct 8 15:46:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823393 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2DBE91592 for ; Thu, 8 Oct 2020 15:48:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1868220578 for ; Thu, 8 Oct 2020 15:48:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729654AbgJHPsv (ORCPT ); Thu, 8 Oct 2020 11:48:51 -0400 Received: from mout.kundenserver.de ([212.227.17.24]:49739 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729585AbgJHPsu (ORCPT ); Thu, 8 Oct 2020 11:48:50 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1Mc0Aj-1kvldN13hX-00dWMm; Thu, 08 Oct 2020 17:48:03 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 07/13] m68k: sun3/sun3c: use legacy_timer_tick Date: Thu, 8 Oct 2020 17:46:45 +0200 Message-Id: <20201008154651.1901126-8-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:zzQepl59kGHqC31NpC7bG+PeDhhMCTHQVd0gy+gcmjQuJwPro/e YgST2M/5bg8pOnYtalrizCt/CQyfRU+vMCZDSUytu+vPazaG4fAxasAdlunS51IYkSBYlio iPqKfp3Ni+6XHGef7N1RuGA1HbD8Bj6TL8ALg1RiJsRZLOv9XJUGmO2imGEXPXrvBfzClTK ZAePO58Y6+u0ShYOmkmbQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:VCTA03n0EEU=:F2qbphEYNVKx6MJTqdbPS9 8XM2b9J+zhO6UDLal5j3YrCnsMUxDdJxYBaNUcsRTQ50xeOEYAta4l2IPNxQSpYjQW5t/ydFc oLCOg7bQJ/MrIFK1/PKD1yW5HMMSFGHmKNFVaV+61PV4O3WwHJoWAhOnOmtRXOoM7pjW/qyAY y6A08V3bvjAnGOWn+dhu8i4PTeG+zHOIZbn0uOKj3A08KrinOovfDrJq0SKSzH7uZXsgeh8iq ToLrCTD60CE6Rjv+5MIFFRjFydwUurD4CLFnhCCb0ti/Hfhz8GmACo+PJjg0iGr/9dFjCEBoJ q7MgBIx3cFt5CA+uCEarAjCXnWh0qdMQJcF3VZUy1iSQqJSEYPqhcAvfcQ3N4DegjK73H+g+n 3XrHPgIW3FBIEUGmqZTQHgkqA8Y/zSX+59SaE2SIC65pOHaPoYCQcB1QdZ+4xX735HeZFfJ85 zdikSNwG+1vfTMCev89+QsrYDGYep1hUlU1EZ44dWzZLWWbyDzk62Kn0QnKZiFABMlF+uc+sI U0ZKZFcYeHfzL87AFsCQlyNNWqRRv+/sPRhvgYVmFinY+pUz7tmkRJeoPngeAH6cAlUIvnXUE r5huH7yKmGaqxZ2vGUqHHOcYugSn+y0aHJE4hcA4FLUegviVCy9Q1h5FOsWdsVWfwntp5GzG5 HcE3seAhPVXL7OB4N/KU2Y8epU4W0XNvUUWV6AJ0vfOuwwdhymaOXjphbvzY+PrxaMsk30ept 9t/01z/QE2X9pNLvqNr5kgaqWiAq8HhGu6Z8s02Pr5CYEVUnrm2os6W2MnDulbkL46Y65IQAW aGK4w26/nvMdyCrpo6U45G4k+/M+lhSqScEFjggjoU9EF5AiAeRqMeFBXBF3mF6ryjud+PD Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org These two are different from all other machines: * sun3 does not call timer_routine() but open-codes it except for the profile_tick() call that appears to be unintentionally missing. * sun3x has a commented-out timer irq handler but no functional timer tick I could find. Change both to calling the new legacy_timer_tick here, which includes the call to profile_tick() but does not fix sun3x as that is still commented out. Signed-off-by: Arnd Bergmann Reviewed-by: Geert Uytterhoeven Acked-by: Geert Uytterhoeven --- arch/m68k/Kconfig.machine | 2 ++ arch/m68k/sun3/sun3ints.c | 3 +-- arch/m68k/sun3x/time.c | 3 +-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine index 17e8c3a292d7..e3c835440d9a 100644 --- a/arch/m68k/Kconfig.machine +++ b/arch/m68k/Kconfig.machine @@ -99,6 +99,7 @@ config HP300 config SUN3X bool "Sun3x support" depends on MMU + select LEGACY_TIMER_TICK select MMU_MOTOROLA if MMU select M68030 help @@ -126,6 +127,7 @@ config SUN3 depends on MMU depends on !MMU_MOTOROLA select MMU_SUN3 if MMU + select LEGACY_TIMER_TICK select NO_DMA select M68020 help diff --git a/arch/m68k/sun3/sun3ints.c b/arch/m68k/sun3/sun3ints.c index a5824abb4a39..41ae422119d3 100644 --- a/arch/m68k/sun3/sun3ints.c +++ b/arch/m68k/sun3/sun3ints.c @@ -73,8 +73,7 @@ static irqreturn_t sun3_int5(int irq, void *dev_id) #ifdef CONFIG_SUN3 intersil_clear(); #endif - xtime_update(1); - update_process_times(user_mode(get_irq_regs())); + legacy_timer_tick(1); cnt = kstat_irqs_cpu(irq, 0); if (!(cnt % 20)) sun3_leds(led_pattern[cnt % 160 / 20]); diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c index 9163294b0fb6..f6e25fdc008c 100644 --- a/arch/m68k/sun3x/time.c +++ b/arch/m68k/sun3x/time.c @@ -77,14 +77,13 @@ int sun3x_hwclk(int set, struct rtc_time *t) #if 0 static irqreturn_t sun3x_timer_tick(int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; unsigned long flags; local_irq_save(flags); /* Clear the pending interrupt - pulse the enable line low */ disable_irq(5); enable_irq(5); - timer_routine(0, NULL); + legacy_timer_tick(1); local_irq_restore(flags); return IRQ_HANDLED; From patchwork Thu Oct 8 15:46:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823395 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 124641580 for ; Thu, 8 Oct 2020 15:48:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F33D320578 for ; Thu, 8 Oct 2020 15:48:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731231AbgJHPsv (ORCPT ); Thu, 8 Oct 2020 11:48:51 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:55405 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725987AbgJHPst (ORCPT ); Thu, 8 Oct 2020 11:48:49 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MFbmS-1k9SJ504kA-00H3b3; Thu, 08 Oct 2020 17:48:09 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 08/13] m68k: m68328: use legacy_timer_tick() Date: Thu, 8 Oct 2020 17:46:46 +0200 Message-Id: <20201008154651.1901126-9-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:X94e4tE6h1ucE2ptsUxdCsFjY5Vt4Yxb8o2F6d+WCVsxW3/pMXg FSX762vrq4q7eZ/50hBxTz/TSg4JHk9WT8w2l5djQmOGWFTvkaMwMOKxbJHu0yBszQ/wLF9 w8OAHadLWVgTzZ4+T9le/sPTI6CdGiJMJZGRacnqSQDG8Mfh/Bo4RRtSxrQju/Gu1WgZrdO P81KGjziyKRQaHc8+bi7g== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:JZX3P9KuXIw=:RlCKXSHeShn4FJEVlMGuL8 K/aJCs3QddlZYJRHnyZ4t/Pa4oGfXCF79wf/KHA5fssa/SOnPhNw/rV69J0NefDyw1Z7XajrW Gigo1IAyBHWzwyH0ceCSFrMn4BiKZRVwrGGXsJEHP3YEoaNAX07MaYmBw9g+75ufMsowTrjR/ 4vfLnmXbv1+r4Za1/PrIPvrg71rPL7kh2PmNaXMGdj/WUhG+2+ykWCxoiRcfcY9jCmo9IOoGh qIxTfvFcKzwjRKpQCgLWxG+KYophSkeylusJML1y6ccJWUG+Qcrd5kLtfUFUStchrd4RVqATJ supGqhInRtECv2NX6R0CKNQboZ27f1b/7zbaC2LQtbnpvX2IIFd+guKZCwqEGtLXQlLXyLDZW 496wwMZRPCYihJkKon12c76/PXonZ7xcf6e1a0H/jnsTKW9UmFu93RdC13LVbXE01e17IVwFE K5r+mdqsknPcEFbHQd41irWcrVax4ScHJ7MOmDjPVowkodd5vNxspEbru5eh/E01uAy3z0BoB Fr17rxcpGpuFh1SipceLToKFWGdZ6nOFDkTi5As0RcSGGU5fGXPFrFSB8SRs3SnSjaxhuba/8 w5tQ3uNjA+FSjURhyDsPNUx2IF+w1wz+IZP0ifMgPUupPo+JPY4/uQmCw6NbAnJVg4KvieFJA n+yFNexWC3vi9gDo+TSHLqfpIY7ZbHOsXNRF/P4t63VYvfbIicSYwNQ6xnGYxkuZ+uomTZT70 hswbhza1vTpRnTNuy5u3NCSP+++jigRvTBIrTQsUB+cOnW+P34CBqAADz4orO9lnRndyibVqj P3A5NDBTaS6Qpj7orts+Y7ASc081u53+K3gPaHeltGUn2wTyyZtgUkb8LXQM+4JqM5/oHjV Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org A couple of machines share the m68328 timer code that is based on calling timer_interrupt(). Change these to the new and slightly more generic legacy_timer_tick() helper. Signed-off-by: Arnd Bergmann Reviewed-by: Geert Uytterhoeven --- arch/m68k/68000/timers.c | 5 ++--- arch/m68k/Kconfig.machine | 4 ++++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/m68k/68000/timers.c b/arch/m68k/68000/timers.c index e8dfdd2556a5..3aa006f8e7ea 100644 --- a/arch/m68k/68000/timers.c +++ b/arch/m68k/68000/timers.c @@ -52,7 +52,6 @@ #endif static u32 m68328_tick_cnt; -static irq_handler_t timer_interrupt; /***************************************************************************/ @@ -62,7 +61,8 @@ static irqreturn_t hw_tick(int irq, void *dummy) TSTAT &= 0; m68328_tick_cnt += TICKS_PER_JIFFY; - return timer_interrupt(irq, dummy); + legacy_timer_tick(1); + return IRQ_HANDLED; } /***************************************************************************/ @@ -113,7 +113,6 @@ void hw_timer_init(irq_handler_t handler) /* Enable timer 1 */ TCTL |= TCTL_TEN; clocksource_register_hz(&m68328_clk, TICKS_PER_JIFFY*HZ); - timer_interrupt = handler; } /***************************************************************************/ diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine index e3c835440d9a..0ff9338b958e 100644 --- a/arch/m68k/Kconfig.machine +++ b/arch/m68k/Kconfig.machine @@ -146,6 +146,7 @@ config PILOT config PILOT3 bool "Pilot 1000/5000, PalmPilot Personal/Pro, or PalmIII support" depends on M68328 + select LEGACY_TIMER_TICK select PILOT help Support for the Palm Pilot 1000/5000, Personal/Pro and PalmIII. @@ -159,18 +160,21 @@ config XCOPILOT_BUGS config UCSIMM bool "uCsimm module support" depends on M68EZ328 + select LEGACY_TIMER_TICK help Support for the Arcturus Networks uCsimm module. config UCDIMM bool "uDsimm module support" depends on M68VZ328 + select LEGACY_TIMER_TICK help Support for the Arcturus Networks uDsimm module. config DRAGEN2 bool "DragenEngine II board support" depends on M68VZ328 + select LEGACY_TIMER_TICK help Support for the DragenEngine II board. From patchwork Thu Oct 8 15:46:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823403 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 937831580 for ; Thu, 8 Oct 2020 15:49:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7CB0420739 for ; Thu, 8 Oct 2020 15:49:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731197AbgJHPtN (ORCPT ); Thu, 8 Oct 2020 11:49:13 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:58457 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727409AbgJHPtL (ORCPT ); Thu, 8 Oct 2020 11:49:11 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MA88C-1kEycX3OBu-00BZwf; Thu, 08 Oct 2020 17:48:16 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 09/13] m68k: change remaining timers to legacy_timer_tick Date: Thu, 8 Oct 2020 17:46:47 +0200 Message-Id: <20201008154651.1901126-10-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:GkB5LqTlkNZLfnUiOZJvJvBDMZ97M/7R4K+zhH9g2QSW9ZOJXI8 1SXdMqlDwizOBAGhVM0VsX/fHUdYmdh45B7b/EwQL1thTM6+p2A7W36HNoaoSXanksrapql yhIcLbsDvvGvNgZoETLPbb/CESvrJyjYkWUA98kZfAG7L6nRJu4+7wfHz5GAon32fng54JY h2A/tIGnf4sSS0c9pASSw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:bfTkvzDpuf4=:pEYcun/oGxZcZi36KnC8yP gUMfc/UOlj8sf/32umXcjjT3cYUS2+SsTnGHu87hABKCYenkmgN6VzLF0vkmT8VuqMbygs8/Y SgPJqM3nopIwbDAH83/N3P5W5OgXCpA6erh9dl2kmMgTTVgYTrZdUaamWFmGlZmEfjY/Zyfkd MJ/oXk/duglz3HU4oGEU3q8X3Z9AurWb8JE9soGg79AoCDumdYBnERZRtngzV2VPJ8oPzgDor WwfHfI5DmUeiOmbTuiovyAMKhIn0Ct8HSdmfoYRe2zgMTkm0FQEwlKHylKzGH1o0GLyfYKWfw Zxe6Hp2Gdc16fjPSabAg6LuDeram2spI9//NZ3oxO/sTw5Cf5Djug7P6+CkL1qoDJJkTznuSe jOnojajF4gaOeghqG/cMlGAKp6Db0je/KFaN/Fg+Huph8ANqV8aifVYe2bIKgS+riEYIViaC4 zZH57VAc+j8b4lcFCdxa9I2u32sxfPP1vMoHop1ASU123zlc3eHp/YDhSpxONJKKyWsAdinnK hqFAxGb+KjA/RJUJ5psZ2dYysvsQFdJo5fPNeVmUzz0DNmTJyB1rqG+v1bs5nhonYTNLa2QQZ atXuxew9jtPHPw42rLFfhzofXvDk3X3FWpomqc3oVtv2iof0DgZA41h8ckeWkKPgBgFNktMSE r9CxVmrHpNcaphj7V5VgXz7oMnWiy3cN+k7hWDYB2R6ua4YWd+sB1nObuFVk5U3Jlk3/N3wAL ILkFJwX6SJ+RSvR0zGA+P8g5/brd7mJMjbdviqXnwp2Wcx+xceZGJPVIzcNafe+xlEV9nwXUl Ayskz7qclCGxadmrja6XKRH4RZaGtHxVqP6iFtEDXwv2JIhwojn1suhv3oIjGI6J3p71dwu Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org There are nine more machines that each have their own timer interrupt calling the m68k timer_interrupt() function through an indirect pointer. This function is now the same as legacy_timer_tick, so just call that directly and select the corresponding Kconfig symbol. Signed-off-by: Arnd Bergmann Reviewed-by: Geert Uytterhoeven Acked-by: Geert Uytterhoeven Tested-by: Geert Uytterhoeven --- arch/m68k/Kconfig.machine | 9 +++++++++ arch/m68k/amiga/config.c | 6 ++---- arch/m68k/apollo/config.c | 6 ++---- arch/m68k/atari/time.c | 5 ++--- arch/m68k/bvme6000/config.c | 5 ++--- arch/m68k/hp300/time.c | 5 ++--- arch/m68k/mac/via.c | 6 ++---- arch/m68k/mvme147/config.c | 5 ++--- arch/m68k/mvme16x/config.c | 5 ++--- arch/m68k/q40/q40ints.c | 6 ++---- 10 files changed, 27 insertions(+), 31 deletions(-) diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine index 0ff9338b958e..8a4e8bd8aade 100644 --- a/arch/m68k/Kconfig.machine +++ b/arch/m68k/Kconfig.machine @@ -7,6 +7,7 @@ config AMIGA bool "Amiga support" depends on MMU select MMU_MOTOROLA if MMU + select LEGACY_TIMER_TICK help This option enables support for the Amiga series of computers. If you plan to use this kernel on an Amiga, say Y here and browse the @@ -17,6 +18,7 @@ config ATARI depends on MMU select MMU_MOTOROLA if MMU select HAVE_ARCH_NVRAM_OPS + select LEGACY_TIMER_TICK help This option enables support for the 68000-based Atari series of computers (including the TT, Falcon and Medusa). If you plan to use @@ -28,6 +30,7 @@ config MAC depends on MMU select MMU_MOTOROLA if MMU select HAVE_ARCH_NVRAM_OPS + select LEGACY_TIMER_TICK help This option enables support for the Apple Macintosh series of computers (yes, there is experimental support now, at least for part @@ -40,6 +43,7 @@ config APOLLO bool "Apollo support" depends on MMU select MMU_MOTOROLA if MMU + select LEGACY_TIMER_TICK help Say Y here if you want to run Linux on an MC680x0-based Apollo Domain workstation such as the DN3500. @@ -58,6 +62,7 @@ config MVME147 bool "MVME147 support" depends on MMU depends on VME + select LEGACY_TIMER_TICK help Say Y to include support for early Motorola VME boards. This will build a kernel which can run on MVME147 single-board computers. If @@ -68,6 +73,7 @@ config MVME16x bool "MVME162, 166 and 167 support" depends on MMU depends on VME + select LEGACY_TIMER_TICK help Say Y to include support for Motorola VME boards. This will build a kernel which can run on MVME162, MVME166, MVME167, MVME172, and @@ -79,6 +85,7 @@ config BVME6000 bool "BVME4000 and BVME6000 support" depends on MMU depends on VME + select LEGACY_TIMER_TICK help Say Y to include support for VME boards from BVM Ltd. This will build a kernel which can run on BVME4000 and BVME6000 boards. If @@ -89,6 +96,7 @@ config HP300 bool "HP9000/300 and HP9000/400 support" depends on MMU select MMU_MOTOROLA if MMU + select LEGACY_TIMER_TICK help This option enables support for the HP9000/300 and HP9000/400 series of workstations. Support for these machines is still somewhat @@ -115,6 +123,7 @@ config Q40 bool "Q40/Q60 support" depends on MMU select MMU_MOTOROLA if MMU + select LEGACY_TIMER_TICK help The Q40 is a Motorola 68040-based successor to the Sinclair QL manufactured in Germany. There is an official Q40 home page at diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index 29f92333119e..91dc87b86411 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c @@ -475,11 +475,9 @@ static u32 clk_total, clk_offset; static irqreturn_t ciab_timer_handler(int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; - clk_total += jiffy_ticks; clk_offset = 0; - timer_routine(0, NULL); + legacy_timer_tick(1); timer_heartbeat(); return IRQ_HANDLED; @@ -504,7 +502,7 @@ static void __init amiga_sched_init(irq_handler_t timer_routine) * SCSI code. We'll have to take a look at this later */ if (request_irq(IRQ_AMIGA_CIAB_TA, ciab_timer_handler, IRQF_TIMER, - "timer", timer_routine)) + "timer", NULL)) pr_err("Couldn't register timer interrupt\n"); /* start timer */ ciab.cra |= 0x11; diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c index 30915f1a8760..17d59fa6b25b 100644 --- a/arch/m68k/apollo/config.c +++ b/arch/m68k/apollo/config.c @@ -168,11 +168,9 @@ void __init config_apollo(void) irqreturn_t dn_timer_int(int irq, void *dev_id) { - irq_handler_t timer_handler = dev_id; - volatile unsigned char x; - timer_handler(irq, dev_id); + legacy_timer_tick(1); timer_heartbeat(); x = *(volatile unsigned char *)(apollo_timer + 3); @@ -199,7 +197,7 @@ void dn_sched_init(irq_handler_t timer_routine) *(volatile unsigned char *)(apollo_timer + 0x3)); #endif - if (request_irq(IRQ_APOLLO, dn_timer_int, 0, "time", timer_routine)) + if (request_irq(IRQ_APOLLO, dn_timer_int, 0, "time", NULL)) pr_err("Couldn't register timer interrupt\n"); } diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c index ce4a5961ca93..36d811ae09ee 100644 --- a/arch/m68k/atari/time.c +++ b/arch/m68k/atari/time.c @@ -41,7 +41,6 @@ static u8 last_timer_count; static irqreturn_t mfp_timer_c_handler(int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; unsigned long flags; local_irq_save(flags); @@ -49,7 +48,7 @@ static irqreturn_t mfp_timer_c_handler(int irq, void *dev_id) last_timer_count = st_mfp.tim_dt_c; } while (last_timer_count == 1); clk_total += INT_TICKS; - timer_routine(0, NULL); + legacy_timer_tick(1); timer_heartbeat(); local_irq_restore(flags); @@ -65,7 +64,7 @@ atari_sched_init(irq_handler_t timer_routine) st_mfp.tim_ct_cd = (st_mfp.tim_ct_cd & 15) | 0x60; /* install interrupt service routine for MFP Timer C */ if (request_irq(IRQ_MFP_TIMC, mfp_timer_c_handler, IRQF_TIMER, "timer", - timer_routine)) + NULL)) pr_err("Couldn't register timer interrupt\n"); clocksource_register_hz(&atari_clk, INT_CLK); diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index 50f4d01363df..d3f5963021d3 100644 --- a/arch/m68k/bvme6000/config.c +++ b/arch/m68k/bvme6000/config.c @@ -165,7 +165,6 @@ static u32 clk_total, clk_offset; static irqreturn_t bvme6000_timer_int (int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; unsigned long flags; volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; unsigned char msr; @@ -175,7 +174,7 @@ static irqreturn_t bvme6000_timer_int (int irq, void *dev_id) rtc->msr = msr | 0x20; /* Ack the interrupt */ clk_total += RTC_TIMER_CYCLES; clk_offset = 0; - timer_routine(0, NULL); + legacy_timer_tick(1); local_irq_restore(flags); return IRQ_HANDLED; @@ -198,7 +197,7 @@ void bvme6000_sched_init (irq_handler_t timer_routine) rtc->msr = 0; /* Ensure timer registers accessible */ if (request_irq(BVME_IRQ_RTC, bvme6000_timer_int, IRQF_TIMER, "timer", - timer_routine)) + NULL)) panic ("Couldn't register timer int"); rtc->t1cr_omr = 0x04; /* Mode 2, ext clk */ diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c index e3cd938de0f9..011fc2e5a68a 100644 --- a/arch/m68k/hp300/time.c +++ b/arch/m68k/hp300/time.c @@ -55,7 +55,6 @@ static u32 clk_total, clk_offset; static irqreturn_t hp300_tick(int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; unsigned long flags; unsigned long tmp; @@ -64,7 +63,7 @@ static irqreturn_t hp300_tick(int irq, void *dev_id) asm volatile ("movpw %1@(5),%0" : "=d" (tmp) : "a" (CLOCKBASE)); clk_total += INTVAL; clk_offset = 0; - timer_routine(0, NULL); + legacy_timer_tick(1); timer_heartbeat(); local_irq_restore(flags); @@ -106,7 +105,7 @@ void __init hp300_sched_init(irq_handler_t vector) asm volatile(" movpw %0,%1@(5)" : : "d" (INTVAL), "a" (CLOCKBASE)); - if (request_irq(IRQ_AUTO_6, hp300_tick, IRQF_TIMER, "timer tick", vector)) + if (request_irq(IRQ_AUTO_6, hp300_tick, IRQF_TIMER, "timer tick", NULL)) pr_err("Couldn't register timer interrupt\n"); out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */ diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c index ac77d73af19a..ba444e1774b8 100644 --- a/arch/m68k/mac/via.c +++ b/arch/m68k/mac/via.c @@ -602,11 +602,9 @@ static u32 clk_total, clk_offset; static irqreturn_t via_timer_handler(int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; - clk_total += VIA_TIMER_CYCLES; clk_offset = 0; - timer_routine(0, NULL); + legacy_timer_tick(1); return IRQ_HANDLED; } @@ -614,7 +612,7 @@ static irqreturn_t via_timer_handler(int irq, void *dev_id) void __init via_init_clock(irq_handler_t timer_routine) { if (request_irq(IRQ_MAC_TIMER_1, via_timer_handler, IRQF_TIMER, "timer", - timer_routine)) { + NULL)) { pr_err("Couldn't register %s interrupt\n", "timer"); return; } diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index 490700aa2212..5dabbc915b8d 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c @@ -112,14 +112,13 @@ static u32 clk_total; static irqreturn_t mvme147_timer_int (int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; unsigned long flags; local_irq_save(flags); m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; m147_pcc->t1_cntrl = PCC_TIMER_CLR_OVF; clk_total += PCC_TIMER_CYCLES; - timer_routine(0, NULL); + legacy_timer_tick(1); local_irq_restore(flags); return IRQ_HANDLED; @@ -129,7 +128,7 @@ static irqreturn_t mvme147_timer_int (int irq, void *dev_id) void mvme147_sched_init (irq_handler_t timer_routine) { if (request_irq(PCC_IRQ_TIMER1, mvme147_timer_int, IRQF_TIMER, - "timer 1", timer_routine)) + "timer 1", NULL)) pr_err("Couldn't register timer interrupt\n"); /* Init the clock with a value */ diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c index 5b86d10e0f84..ae9bb7fda161 100644 --- a/arch/m68k/mvme16x/config.c +++ b/arch/m68k/mvme16x/config.c @@ -372,14 +372,13 @@ static u32 clk_total; static irqreturn_t mvme16x_timer_int (int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; unsigned long flags; local_irq_save(flags); out_8(PCCTIC1, in_8(PCCTIC1) | PCCTIC1_INT_CLR); out_8(PCCTOVR1, PCCTOVR1_OVR_CLR); clk_total += PCC_TIMER_CYCLES; - timer_routine(0, NULL); + legacy_timer_tick(1); local_irq_restore(flags); return IRQ_HANDLED; @@ -396,7 +395,7 @@ void mvme16x_sched_init (irq_handler_t timer_routine) out_8(PCCTOVR1, in_8(PCCTOVR1) | PCCTOVR1_TIC_EN | PCCTOVR1_COC_EN); out_8(PCCTIC1, PCCTIC1_INT_EN | 6); if (request_irq(MVME16x_IRQ_TIMER, mvme16x_timer_int, IRQF_TIMER, "timer", - timer_routine)) + NULL)) panic ("Couldn't register timer int"); clocksource_register_hz(&mvme16x_clk, PCC_TIMER_CLOCK_FREQ); diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c index b01b545a2db0..4c6c409053fd 100644 --- a/arch/m68k/q40/q40ints.c +++ b/arch/m68k/q40/q40ints.c @@ -130,8 +130,6 @@ void q40_mksound(unsigned int hz, unsigned int ticks) static irqreturn_t q40_timer_int(int irq, void *dev_id) { - irq_handler_t timer_routine = dev_id; - ql_ticks = ql_ticks ? 0 : 1; if (sound_ticks) { unsigned char sval=(sound_ticks & 1) ? 128-SVOL : 128+SVOL; @@ -144,7 +142,7 @@ static irqreturn_t q40_timer_int(int irq, void *dev_id) unsigned long flags; local_irq_save(flags); - timer_routine(0, NULL); + legacy_timer_tick(1); timer_heartbeat(); local_irq_restore(flags); } @@ -157,7 +155,7 @@ void q40_sched_init (irq_handler_t timer_routine) timer_irq = Q40_IRQ_FRAME; - if (request_irq(timer_irq, q40_timer_int, 0, "timer", timer_routine)) + if (request_irq(timer_irq, q40_timer_int, 0, "timer", NULL)) panic("Couldn't register timer int"); master_outb(-1, FRAME_CLEAR_REG); From patchwork Thu Oct 8 15:46:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823401 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id BABEE1592 for ; Thu, 8 Oct 2020 15:49:12 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9A57120739 for ; Thu, 8 Oct 2020 15:49:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731267AbgJHPtJ (ORCPT ); Thu, 8 Oct 2020 11:49:09 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:44205 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725987AbgJHPtI (ORCPT ); Thu, 8 Oct 2020 11:49:08 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1Mjjvp-1ko2Pd2Nkx-00lBsW; Thu, 08 Oct 2020 17:48:23 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 10/13] m68k: remove timer_interrupt() function Date: Thu, 8 Oct 2020 17:46:48 +0200 Message-Id: <20201008154651.1901126-11-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:o9+uqEYPJWMC8KyTN52xBCgB0YrMP/bIcn0nDknzLZHcnnYOdIx 3bm5R2Hdnq3AnAuxrRAzZepaYCiFR0UGRJ8Rt73H883uyzHQheuY+w5XGHOTlLDho3TTvxf xkvu4l/qV2OBfNZ6Pg0RuCYHQVwNo8uCvHsA+0MEY74yJAXNU9vx3sXEt7ro2w9w3LNtm0w R600g0WjfvjDLrhZ29wjg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:dIaM/h8khPQ=:s0567C5Ew/S/tvdYmAQrfp yt2ZClXgn1fTxpT+wZ2FaqSWsi9kYIm9skoATq7QdzHDgNEyidSqvnfjFBamk4syj48k/w0g2 7wUqsAD54BVYmC31PigJUVSAJC0RV0Ajl4rOC3i+youTm+4swqdZe0bEXtMOzpEAyeX5kz6v6 JgrSBL+VKR1Ija/vgY4/Iaa1P32UA1V1BKJerm/2TuKRo9fBiym95A2Nu+IKTXPyVpotkysGm x0qOxtbeWxQLGD3gPyxmTZRqMQxchlL7oFhFh9SrUSeqIW0qwVhxURHKfnonEaikAQuu/LWQR T0ESuJu58Z3EiG+FYlhQ+rPpiSZBo0FCG9kyxfwOTUTpfnbKW9rL+Ced08ccHO0fqVQzxRhPD OHztR2aZUWzlsvWqMkJCKbvazdsury/P95mh6WQ/BOj/b/dLfaZhCMSl50IiWoKCQTfrEIopS MJJ1C07mxC8XO3lOjcnl4KVyG+pcY7cmfrbYZvJxzusb5yljQz1PtUX+Y5+ZvkTnPk1BoRIH/ 3u1BixKt4e+U+IGctfsb3o80vAanBX7HIu3i+COsBVn/yxCyhUYJvD9CRR/HhkVp5W1V93SpT w1i1Yj9feQReuwXkX2I5hGksK7RaSCxpkqyPSoVUgNKg/NEz4cK6+ADtt9zRHPE3lItsuso2h 13UPdK+JiCiPl8fcMZCHifvNWg1toLMtj2+37A6V1lQNd68nJGPgcXK7sDV0rAIn4s0xBKjjw ZdESxPiK04mJMNgNpQs/H4rEUcsEsSvYHz4zu2hkpoHJcpTxcYShRbekihzGRM6fmtcUqMjqB zlnhN19mD7MwMChfJ7mnlJNLxzY8YiBfEdacEhjRUkh1AaBx30SR4J+zwkH6x4qp/dQEtUA Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org This gets passed to a number of init functions, but is ignored everywhere, so remove the function and change the mach_sched_init callback to take no arguments. Signed-off-by: Arnd Bergmann Reviewed-by: Geert Uytterhoeven Acked-by: Geert Uytterhoeven Tested-by: Geert Uytterhoeven --- arch/m68k/68000/timers.c | 2 +- arch/m68k/amiga/config.c | 4 ++-- arch/m68k/apollo/config.c | 4 ++-- arch/m68k/atari/config.c | 2 +- arch/m68k/atari/time.c | 2 +- arch/m68k/bvme6000/config.c | 4 ++-- arch/m68k/coldfire/pit.c | 2 +- arch/m68k/coldfire/sltimers.c | 2 +- arch/m68k/coldfire/timers.c | 2 +- arch/m68k/hp300/time.c | 2 +- arch/m68k/hp300/time.h | 2 +- arch/m68k/include/asm/machdep.h | 5 ++--- arch/m68k/kernel/setup_mm.c | 2 +- arch/m68k/kernel/setup_no.c | 2 +- arch/m68k/kernel/time.c | 15 +-------------- arch/m68k/mac/config.c | 6 +++--- arch/m68k/mac/via.c | 2 +- arch/m68k/mvme147/config.c | 4 ++-- arch/m68k/mvme16x/config.c | 4 ++-- arch/m68k/q40/config.c | 2 +- arch/m68k/q40/q40ints.c | 2 +- arch/m68k/sun3/config.c | 4 ++-- arch/m68k/sun3x/time.c | 2 +- arch/m68k/sun3x/time.h | 2 +- 24 files changed, 33 insertions(+), 47 deletions(-) diff --git a/arch/m68k/68000/timers.c b/arch/m68k/68000/timers.c index 3aa006f8e7ea..0d0417cebc7f 100644 --- a/arch/m68k/68000/timers.c +++ b/arch/m68k/68000/timers.c @@ -91,7 +91,7 @@ static struct clocksource m68328_clk = { /***************************************************************************/ -void hw_timer_init(irq_handler_t handler) +void hw_timer_init(void) { int ret; diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index 91dc87b86411..50e9a2c6523e 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c @@ -92,7 +92,7 @@ static char *amiga_models[] __initdata = { static char amiga_model_name[13] = "Amiga "; -static void amiga_sched_init(irq_handler_t handler); +static void amiga_sched_init(void); static void amiga_get_model(char *model); static void amiga_get_hardware_list(struct seq_file *m); extern void amiga_mksound(unsigned int count, unsigned int ticks); @@ -483,7 +483,7 @@ static irqreturn_t ciab_timer_handler(int irq, void *dev_id) return IRQ_HANDLED; } -static void __init amiga_sched_init(irq_handler_t timer_routine) +static void __init amiga_sched_init(void) { static struct resource sched_res = { .name = "timer", .start = 0x00bfd400, .end = 0x00bfd5ff, diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c index 17d59fa6b25b..36c2cd97f228 100644 --- a/arch/m68k/apollo/config.c +++ b/arch/m68k/apollo/config.c @@ -26,7 +26,7 @@ u_long cpuctrl_physaddr; u_long timer_physaddr; u_long apollo_model; -extern void dn_sched_init(irq_handler_t handler); +extern void dn_sched_init(void); extern void dn_init_IRQ(void); extern int dn_dummy_hwclk(int, struct rtc_time *); extern void dn_dummy_reset(void); @@ -179,7 +179,7 @@ irqreturn_t dn_timer_int(int irq, void *dev_id) return IRQ_HANDLED; } -void dn_sched_init(irq_handler_t timer_routine) +void dn_sched_init(void) { /* program timer 1 */ *(volatile unsigned char *)(apollo_timer + 3) = 0x01; diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c index 7ec3161e8517..50fda4bea521 100644 --- a/arch/m68k/atari/config.c +++ b/arch/m68k/atari/config.c @@ -77,7 +77,7 @@ static void atari_heartbeat(int on); #endif /* atari specific timer functions (in time.c) */ -extern void atari_sched_init(irq_handler_t); +extern void atari_sched_init(void); extern int atari_mste_hwclk (int, struct rtc_time *); extern int atari_tt_hwclk (int, struct rtc_time *); diff --git a/arch/m68k/atari/time.c b/arch/m68k/atari/time.c index 36d811ae09ee..1068670cb741 100644 --- a/arch/m68k/atari/time.c +++ b/arch/m68k/atari/time.c @@ -56,7 +56,7 @@ static irqreturn_t mfp_timer_c_handler(int irq, void *dev_id) } void __init -atari_sched_init(irq_handler_t timer_routine) +atari_sched_init(void) { /* set Timer C data Register */ st_mfp.tim_dt_c = INT_TICKS; diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index d3f5963021d3..b37f8ce034e7 100644 --- a/arch/m68k/bvme6000/config.c +++ b/arch/m68k/bvme6000/config.c @@ -38,7 +38,7 @@ #include static void bvme6000_get_model(char *model); -extern void bvme6000_sched_init(irq_handler_t handler); +extern void bvme6000_sched_init(void); extern int bvme6000_hwclk (int, struct rtc_time *); extern void bvme6000_reset (void); void bvme6000_set_vectors (void); @@ -189,7 +189,7 @@ static irqreturn_t bvme6000_timer_int (int irq, void *dev_id) * so divide by 8 to get the microsecond result. */ -void bvme6000_sched_init (irq_handler_t timer_routine) +void bvme6000_sched_init (void) { volatile RtcPtr_t rtc = (RtcPtr_t)BVME_RTC_BASE; unsigned char msr = rtc->msr & 0xc0; diff --git a/arch/m68k/coldfire/pit.c b/arch/m68k/coldfire/pit.c index fd1d9c915daa..855d0af47097 100644 --- a/arch/m68k/coldfire/pit.c +++ b/arch/m68k/coldfire/pit.c @@ -136,7 +136,7 @@ static struct clocksource pit_clk = { /***************************************************************************/ -void hw_timer_init(irq_handler_t handler) +void hw_timer_init(void) { int ret; diff --git a/arch/m68k/coldfire/sltimers.c b/arch/m68k/coldfire/sltimers.c index 25a1319f3cb8..f9d572ee63db 100644 --- a/arch/m68k/coldfire/sltimers.c +++ b/arch/m68k/coldfire/sltimers.c @@ -118,7 +118,7 @@ static struct clocksource mcfslt_clk = { .flags = CLOCK_SOURCE_IS_CONTINUOUS, }; -void hw_timer_init(irq_handler_t handler) +void hw_timer_init(void) { int r; diff --git a/arch/m68k/coldfire/timers.c b/arch/m68k/coldfire/timers.c index 24b5e2d1b00b..05a42d8e0a59 100644 --- a/arch/m68k/coldfire/timers.c +++ b/arch/m68k/coldfire/timers.c @@ -107,7 +107,7 @@ static struct clocksource mcftmr_clk = { /***************************************************************************/ -void hw_timer_init(irq_handler_t handler) +void hw_timer_init(void) { int r; diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c index 011fc2e5a68a..1d1b7b3b5dd4 100644 --- a/arch/m68k/hp300/time.c +++ b/arch/m68k/hp300/time.c @@ -98,7 +98,7 @@ static u64 hp300_read_clk(struct clocksource *cs) return ticks; } -void __init hp300_sched_init(irq_handler_t vector) +void __init hp300_sched_init(void) { out_8(CLOCKBASE + CLKCR2, 0x1); /* select CR1 */ out_8(CLOCKBASE + CLKCR1, 0x1); /* reset */ diff --git a/arch/m68k/hp300/time.h b/arch/m68k/hp300/time.h index 1d77b55cc72a..040a098b7db1 100644 --- a/arch/m68k/hp300/time.h +++ b/arch/m68k/hp300/time.h @@ -1 +1 @@ -extern void hp300_sched_init(irq_handler_t vector); +extern void hp300_sched_init(void); diff --git a/arch/m68k/include/asm/machdep.h b/arch/m68k/include/asm/machdep.h index e62a39d01ae4..7181ed43ba22 100644 --- a/arch/m68k/include/asm/machdep.h +++ b/arch/m68k/include/asm/machdep.h @@ -12,7 +12,7 @@ struct rtc_time; struct rtc_pll_info; struct buffer_head; -extern void (*mach_sched_init) (irq_handler_t handler); +extern void (*mach_sched_init) (void); /* machine dependent irq functions */ extern void (*mach_init_IRQ) (void); extern void (*mach_get_model) (char *model); @@ -33,8 +33,7 @@ extern void (*mach_l2_flush) (int); extern void (*mach_beep) (unsigned int, unsigned int); /* Hardware clock functions */ -extern void hw_timer_init(irq_handler_t handler); -extern unsigned long hw_timer_offset(void); +extern void hw_timer_init(void); #ifdef CONFIG_HEARTBEAT extern void timer_heartbeat(void); #else diff --git a/arch/m68k/kernel/setup_mm.c b/arch/m68k/kernel/setup_mm.c index ab8aa7be260f..0628733bfb88 100644 --- a/arch/m68k/kernel/setup_mm.c +++ b/arch/m68k/kernel/setup_mm.c @@ -82,7 +82,7 @@ static struct m68k_mem_info m68k_ramdisk __initdata; static char m68k_command_line[CL_SIZE] __initdata; -void (*mach_sched_init) (irq_handler_t handler) __initdata = NULL; +void (*mach_sched_init) (void) __initdata = NULL; /* machine dependent irq functions */ void (*mach_init_IRQ) (void) __initdata = NULL; void (*mach_get_model) (char *model); diff --git a/arch/m68k/kernel/setup_no.c b/arch/m68k/kernel/setup_no.c index f66f4b1d062e..e377b4219528 100644 --- a/arch/m68k/kernel/setup_no.c +++ b/arch/m68k/kernel/setup_no.c @@ -49,7 +49,7 @@ EXPORT_SYMBOL(memory_end); char __initdata command_line[COMMAND_LINE_SIZE]; /* machine dependent timer functions */ -void (*mach_sched_init)(irq_handler_t handler) __initdata = NULL; +void (*mach_sched_init)(void) __initdata = NULL; int (*mach_hwclk) (int, struct rtc_time*); /* machine dependent reboot functions */ diff --git a/arch/m68k/kernel/time.c b/arch/m68k/kernel/time.c index c05cec21b05f..340ffeea0a9d 100644 --- a/arch/m68k/kernel/time.c +++ b/arch/m68k/kernel/time.c @@ -35,19 +35,6 @@ unsigned long (*mach_random_get_entropy)(void); EXPORT_SYMBOL_GPL(mach_random_get_entropy); - -/* - * timer_interrupt() needs to keep up the real-time clock, - * as well as call the "xtime_update()" routine every clocktick - */ -static irqreturn_t timer_interrupt(int irq, void *dummy) -{ - xtime_update(1); - update_process_times(user_mode(get_irq_regs())); - profile_tick(CPU_PROFILING); - return IRQ_HANDLED; -} - #ifdef CONFIG_HEARTBEAT void timer_heartbeat(void) { @@ -157,5 +144,5 @@ module_init(rtc_init); void __init time_init(void) { - mach_sched_init(timer_interrupt); + mach_sched_init(); } diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index 0ac53d87493c..0dbe0fedd826 100644 --- a/arch/m68k/mac/config.c +++ b/arch/m68k/mac/config.c @@ -58,7 +58,7 @@ extern int mac_hwclk(int, struct rtc_time *); extern void iop_preinit(void); extern void iop_init(void); extern void via_init(void); -extern void via_init_clock(irq_handler_t func); +extern void via_init_clock(void); extern void oss_init(void); extern void psc_init(void); extern void baboon_init(void); @@ -69,9 +69,9 @@ static void mac_get_model(char *str); static void mac_identify(void); static void mac_report_hardware(void); -static void __init mac_sched_init(irq_handler_t vector) +static void __init mac_sched_init(void) { - via_init_clock(vector); + via_init_clock(); } /* diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c index ba444e1774b8..8ad734e3c934 100644 --- a/arch/m68k/mac/via.c +++ b/arch/m68k/mac/via.c @@ -609,7 +609,7 @@ static irqreturn_t via_timer_handler(int irq, void *dev_id) return IRQ_HANDLED; } -void __init via_init_clock(irq_handler_t timer_routine) +void __init via_init_clock(void) { if (request_irq(IRQ_MAC_TIMER_1, via_timer_handler, IRQF_TIMER, "timer", NULL)) { diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index 5dabbc915b8d..4fc43b5d7545 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c @@ -37,7 +37,7 @@ static void mvme147_get_model(char *model); -extern void mvme147_sched_init(irq_handler_t handler); +extern void mvme147_sched_init(void); extern int mvme147_hwclk (int, struct rtc_time *); extern void mvme147_reset (void); @@ -125,7 +125,7 @@ static irqreturn_t mvme147_timer_int (int irq, void *dev_id) } -void mvme147_sched_init (irq_handler_t timer_routine) +void mvme147_sched_init (void) { if (request_irq(PCC_IRQ_TIMER1, mvme147_timer_int, IRQF_TIMER, "timer 1", NULL)) diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c index ae9bb7fda161..18e158887ec9 100644 --- a/arch/m68k/mvme16x/config.c +++ b/arch/m68k/mvme16x/config.c @@ -43,7 +43,7 @@ extern t_bdid mvme_bdid; static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE; static void mvme16x_get_model(char *model); -extern void mvme16x_sched_init(irq_handler_t handler); +extern void mvme16x_sched_init(void); extern int mvme16x_hwclk (int, struct rtc_time *); extern void mvme16x_reset (void); @@ -384,7 +384,7 @@ static irqreturn_t mvme16x_timer_int (int irq, void *dev_id) return IRQ_HANDLED; } -void mvme16x_sched_init (irq_handler_t timer_routine) +void mvme16x_sched_init(void) { uint16_t brdno = be16_to_cpu(mvme_bdid.brdno); int irq; diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c index 4627de3c0603..55f76f0fa29b 100644 --- a/arch/m68k/q40/config.c +++ b/arch/m68k/q40/config.c @@ -37,7 +37,7 @@ extern void q40_init_IRQ(void); static void q40_get_model(char *model); -extern void q40_sched_init(irq_handler_t handler); +extern void q40_sched_init(void); static int q40_hwclk(int, struct rtc_time *); static unsigned int q40_get_ss(void); diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c index 4c6c409053fd..6886a5d0007b 100644 --- a/arch/m68k/q40/q40ints.c +++ b/arch/m68k/q40/q40ints.c @@ -149,7 +149,7 @@ static irqreturn_t q40_timer_int(int irq, void *dev_id) return IRQ_HANDLED; } -void q40_sched_init (irq_handler_t timer_routine) +void q40_sched_init (void) { int timer_irq; diff --git a/arch/m68k/sun3/config.c b/arch/m68k/sun3/config.c index 7204c0ea0dc7..f7dd47232b6c 100644 --- a/arch/m68k/sun3/config.c +++ b/arch/m68k/sun3/config.c @@ -36,7 +36,7 @@ char sun3_reserved_pmeg[SUN3_PMEGS_NUM]; -static void sun3_sched_init(irq_handler_t handler); +static void sun3_sched_init(void); extern void sun3_get_model (char* model); extern int sun3_hwclk(int set, struct rtc_time *t); @@ -151,7 +151,7 @@ void __init config_sun3(void) sun3_bootmem_alloc(memory_start, memory_end); } -static void __init sun3_sched_init(irq_handler_t timer_routine) +static void __init sun3_sched_init(void) { sun3_disable_interrupts(); intersil_clock->cmd_reg=(INTERSIL_RUN|INTERSIL_INT_DISABLE|INTERSIL_24H_MODE); diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c index f6e25fdc008c..a2c97821faf2 100644 --- a/arch/m68k/sun3x/time.c +++ b/arch/m68k/sun3x/time.c @@ -90,7 +90,7 @@ static irqreturn_t sun3x_timer_tick(int irq, void *dev_id) } #endif -void __init sun3x_sched_init(irq_handler_t vector) +void __init sun3x_sched_init(void) { sun3_disable_interrupts(); diff --git a/arch/m68k/sun3x/time.h b/arch/m68k/sun3x/time.h index 86ce78bb3c28..7cfff22e4986 100644 --- a/arch/m68k/sun3x/time.h +++ b/arch/m68k/sun3x/time.h @@ -3,7 +3,7 @@ #define SUN3X_TIME_H extern int sun3x_hwclk(int set, struct rtc_time *t); -void sun3x_sched_init(irq_handler_t vector); +void sun3x_sched_init(void); struct mostek_dt { volatile unsigned char csr; From patchwork Thu Oct 8 15:46:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823405 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EDB4B1580 for ; Thu, 8 Oct 2020 15:49:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D7737217BA for ; Thu, 8 Oct 2020 15:49:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731279AbgJHPtO (ORCPT ); Thu, 8 Oct 2020 11:49:14 -0400 Received: from mout.kundenserver.de ([212.227.17.13]:39441 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725987AbgJHPtM (ORCPT ); Thu, 8 Oct 2020 11:49:12 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MvJjz-1ki52S1Qcj-00rKvC; Thu, 08 Oct 2020 17:48:30 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 11/13] timekeeping: remove xtime_update Date: Thu, 8 Oct 2020 17:46:49 +0200 Message-Id: <20201008154651.1901126-12-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:6hJbbfGGg12T/dGQyGr13rPvlOPGP87+2hmxJ9JNtjqfzkSruqQ 3sYoq+6M4I1LdwOLC7sKDE250RVhmpc78c3BQspDMhaS4LJfzDMyzLJhjXg53If0X3/FuMD sMH6WNikT5+qcswQ8b0y0w9Ftcd6KVENO2wgrWSHB5GL0Ri2N8aipMhqIAV4NolUsn8QFKp qZUlasYHU6tqY2pWw3rMg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:H9MQKeVk4qE=:KUXoCc01BNDOKLCr4zxTW0 r9FjgYvk6nCJBvKvVeu3kX8PMKtF1c1ocI+bml1u/BQ3WdVX4OXlVEa1ftkhLyTuvJhEAKiWo D72w9b/8UANH+rdzWpYGsq3U8vf+N0t7P0VGu/dZ0n2MrUC5/twmMgRhM+Mg32PE3CxV6q6p3 GJbXjMfOeSp0dUrOS6/IGM7nhMAnLk3ZympP0nJNCUB5V40aHgM7lNRmU/peR9OOMbuNsRZE3 8k9bI/Y3FohU/V+ekt5hwd9k8r23KuHS3zE6tiKLMejLdCeU/BCGHaglcFb6oEAXkwFexHhtB W2Ah1wovG81JBennNyt6H0eKSQA8V2VC4RU6d3k80eu1wys7s4PDc9qgzs8SmRo9n6jsGwDpd 6Z0C5wms8bG4Dbc5by6AaRiIktuCekQNkXISuUKRNlDj+dDwpzqxSwvgnSHO01mRZ4+huruMh sGCc9t5fEEMVlLYFg73Qy6fN2LQTRdffi5/M0t7f2S+P03rO4fSpRHGeWzQycTVYemL9KYs+X Q7BjMshOUKt5xXsIuV8i9XcbcOhbCvcCa7oc5ZGJBESXvJsfBos6dS1euPGx+cKUvFj+kzKZq XGaetMXcVQMmDGovlLV6OtGFHfcarO9wIlNI4JMtOlQX0szPbwk3Z5vtjBGR30Ntqu3Q2zgpD Emf0DwZ0bYxA0hG9PZQeoLJjvf62j87AU7aMrCfZrEUU6VaABEUbN1tdbX3h0ki1qKHlCHlf2 qt+Q5YpcLfbNQDwLDhs7PNHgdMH5FPBcDfiwZOOovom4b4PC5JA7/6MPo5Wzg5xNGcvjopQcZ IlJlFdntWyVftMLdVr7PSMNbprRwP9oXdX02a4+/gpuPTfiunwiPDS8HgA3vmA5+v6wpUH7 Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org There are no more users of xtime_update aside from legacy_timer_tick(), so fold it into that function and remove the declaration. update_process_times() is now only called inside of the kernel/time/ code, so the declaration can be moved there. Signed-off-by: Arnd Bergmann Reviewed-by: Geert Uytterhoeven Tested-by: Geert Uytterhoeven --- include/linux/timekeeping.h | 4 +--- kernel/time/tick-legacy.c | 22 ++++++++++++++++++++-- kernel/time/timekeeping.c | 16 ---------------- kernel/time/timekeeping.h | 1 + 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h index 3670cb1670ff..a8bef0ffcbdd 100644 --- a/include/linux/timekeeping.h +++ b/include/linux/timekeeping.h @@ -9,9 +9,7 @@ void timekeeping_init(void); extern int timekeeping_suspended; -/* Architecture timer tick functions: */ -extern void update_process_times(int user); -extern void xtime_update(unsigned long ticks); +/* Architecture timer tick functions */ extern void legacy_timer_tick(unsigned long ticks); /* diff --git a/kernel/time/tick-legacy.c b/kernel/time/tick-legacy.c index 73c5a0af4743..af225b32f5b3 100644 --- a/kernel/time/tick-legacy.c +++ b/kernel/time/tick-legacy.c @@ -10,10 +10,28 @@ #include "tick-internal.h" +/** + * legacy_timer_tick() - advances the timekeeping infrastructure + * @ticks: number of ticks, that have elapsed since the last call. + * + * This is used by platforms that have not been converted to + * generic clockevents. + * + * If 'ticks' is zero, the CPU is not handling timekeeping, so + * only perform process accounting and profiling. + * + * Must be called with interrupts disabled. + */ void legacy_timer_tick(unsigned long ticks) { - if (ticks) - xtime_update(ticks); + if (ticks) { + raw_spin_lock(&jiffies_lock); + write_seqcount_begin(&jiffies_seq); + do_timer(ticks); + write_seqcount_end(&jiffies_seq); + raw_spin_unlock(&jiffies_lock); + update_wall_time(); + } update_process_times(user_mode(get_irq_regs())); profile_tick(CPU_PROFILING); } diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 6858a31364b6..2c7814411f83 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -2461,19 +2461,3 @@ void hardpps(const struct timespec64 *phase_ts, const struct timespec64 *raw_ts) } EXPORT_SYMBOL(hardpps); #endif /* CONFIG_NTP_PPS */ - -/** - * xtime_update() - advances the timekeeping infrastructure - * @ticks: number of ticks, that have elapsed since the last call. - * - * Must be called with interrupts disabled. - */ -void xtime_update(unsigned long ticks) -{ - raw_spin_lock(&jiffies_lock); - write_seqcount_begin(&jiffies_seq); - do_timer(ticks); - write_seqcount_end(&jiffies_seq); - raw_spin_unlock(&jiffies_lock); - update_wall_time(); -} diff --git a/kernel/time/timekeeping.h b/kernel/time/timekeeping.h index 099737f6f10c..d94b69c5b869 100644 --- a/kernel/time/timekeeping.h +++ b/kernel/time/timekeeping.h @@ -22,6 +22,7 @@ static inline int sched_clock_suspend(void) { return 0; } static inline void sched_clock_resume(void) { } #endif +extern void update_process_times(int user); extern void do_timer(unsigned long ticks); extern void update_wall_time(void); From patchwork Thu Oct 8 15:46:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823409 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 3A1551580 for ; Thu, 8 Oct 2020 15:49:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0EFCD20739 for ; Thu, 8 Oct 2020 15:49:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731299AbgJHPt1 (ORCPT ); Thu, 8 Oct 2020 11:49:27 -0400 Received: from mout.kundenserver.de ([217.72.192.73]:50393 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725987AbgJHPtW (ORCPT ); Thu, 8 Oct 2020 11:49:22 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MmkjY-1kpOnC0irW-00jnld; Thu, 08 Oct 2020 17:48:37 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 12/13] timekeeping: default GENERIC_CLOCKEVENTS to enabled Date: Thu, 8 Oct 2020 17:46:50 +0200 Message-Id: <20201008154651.1901126-13-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:7ucb1lwfY52+dKVVsc4Lsrz1MSdDMxITcHlJH7jAN7OZDEd8SIb 3foh8oZmtaP6MQJ9Tr4xbm4uhdHuG8e1jJmN8B0V9HyOxokq0tZ/U/zb+rTGrrdz+19lOcO Iif0bpawPadmL8j1quUf6XB0+uDSKO+mu3iu7zhU+ua/9dNJZy+zByMU0urTV+lEU/gKbnz 6jDQCl6bKN7AxTkLSioTw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:WWrdhm5PmF8=:IF/aluLuwvVtHEC52vjtMv 4/4q2B/v/XQloPlWUAfWW9PpilnpvsQH6O2iXs1up1E3idrjuLoW46QcFANlbLqaXIBjLGNf0 ee7vytDuXnQKXZsGxHdCKhWQGPc2TZQ9DmduRkRjilNE7BNEi7xCHR5RjX1dO8XX1XT1Wd+6j 50Dx/lejKeVPan6TOsl6Tk5XyoGhSNQSejBifHZTKMt352kf9Waq2Mb4jjemWlWPEUDI2eIzz 3PvwFyxP6MdemPUHWxIFHX8Jop4hZN8VmrtNL84BrqKSIfbk70oJR7mlucQ7Vwy140xrXdR+U 7f6qLVQZbuU20W0qH4X7px0cSb6vKbVp3ck63oDJDhs3vbjakd3gAd7odMI2l8ZuP7fxxlOvc Ok/9U+i/iZUeenTZaRJfmhCMdeMjiboqTTEAEsCyFEn1JNiZZVPALDagVPRLuS5qF60GGBbVr Vk4VahXFgo0IAmvn/Wm5Eu7276iOss9zLiYQrPcmLM7Qoe7531mkiwBpZZEGNxaiLuriNxm3l aS9U5+PCJzuZnm3J/k0xK9XXLl84dGHI8FJCHjPomfHnh4JD8KpinNp8NHQMgHilDQy5lVbuv Hhtl5hDQ7d/qcFz9vohvW/ThzQQpg2iQiIqcpUnnM0/I3pS3ZCANaMRzgeU7AxjJrfoaD3CfK e4kFlSo8x2wv2O7CCCM+YxLoOLdc7/FBEJJHnIcuthDoDwJYl/mgmS4jIbsthUTeIFwdJUTxr SE/VBoX1Ux7E6pOAUmtEAikBY6zOdBUJwxBdTkY3n6iiTCzKMEGLZozJZ92ciqg1AzJIFDHaf Sh3q5ILz/IWepnrjXYedlCJIfb8xCmpFJVhJJ9mPCrYQImz5/NqlfpjXi3d7QTTUHqqhbPO Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org Almost all machines use GENERIC_CLOCKEVENTS, so it feels wrong to require each one to select that symbol manually. Instead, enable it whenever CONFIG_LEGACY_TIMER_TICK is disabled as a simplification. It should be possible to select both GENERIC_CLOCKEVENTS and LEGACY_TIMER_TICK from an architecture now and decide at runtime between the two. For the clockevents arch-support.txt file, this means that additional architectures are marked as TODO when they have at least one machine that still uses LEGACY_TIMER_TICK, rather than being marked 'ok' when at least one machine has been converted. This means that both m68k and arm (for riscpc) revert to TODO. At this point, we could just always enable CONFIG_GENERIC_CLOCKEVENTS rather than leaving it off when not needed. I built an m68k defconfig kernel (using gcc-10.1.0) and found that this would add around 5.5KB in kernel image size: text data bss dec hex filename 3861936 1092236 196656 5150828 4e986c obj-m68k/vmlinux-no-clockevent 3866201 1093832 196184 5156217 4ead79 obj-m68k/vmlinux-clockevent On Arm (MACH_RPC), that difference appears to be twice as large, around 11KB on top of an 6MB vmlinux. Signed-off-by: Arnd Bergmann Reviewed-by: Geert Uytterhoeven Acked-by: Geert Uytterhoeven Tested-by: Geert Uytterhoeven --- .../features/time/clockevents/arch-support.txt | 6 +++--- arch/alpha/Kconfig | 1 - arch/arc/Kconfig | 1 - arch/arm/Kconfig | 12 ------------ arch/arm64/Kconfig | 1 - arch/arm64/Kconfig.platforms | 1 - arch/c6x/Kconfig | 1 - arch/csky/Kconfig | 1 - arch/h8300/Kconfig | 1 - arch/hexagon/Kconfig | 1 - arch/m68k/Kconfig.cpu | 1 - arch/microblaze/Kconfig | 1 - arch/mips/Kconfig | 1 - arch/nds32/Kconfig | 1 - arch/nios2/Kconfig | 1 - arch/openrisc/Kconfig | 1 - arch/powerpc/Kconfig | 1 - arch/riscv/Kconfig | 1 - arch/s390/Kconfig | 1 - arch/sh/Kconfig | 1 - arch/sparc/Kconfig | 1 - arch/um/Kconfig | 1 - arch/x86/Kconfig | 1 - arch/xtensa/Kconfig | 1 - kernel/time/Kconfig | 2 +- 25 files changed, 4 insertions(+), 38 deletions(-) diff --git a/Documentation/features/time/clockevents/arch-support.txt b/Documentation/features/time/clockevents/arch-support.txt index 61a5c9d68c15..6863a3fbddad 100644 --- a/Documentation/features/time/clockevents/arch-support.txt +++ b/Documentation/features/time/clockevents/arch-support.txt @@ -1,6 +1,6 @@ # # Feature name: clockevents -# Kconfig: GENERIC_CLOCKEVENTS +# Kconfig: !LEGACY_TIMER_TICK # description: arch support generic clock events # ----------------------- @@ -8,14 +8,14 @@ ----------------------- | alpha: | ok | | arc: | ok | - | arm: | ok | + | arm: | TODO | | arm64: | ok | | c6x: | ok | | csky: | ok | | h8300: | ok | | hexagon: | ok | | ia64: | TODO | - | m68k: | ok | + | m68k: | TODO | | microblaze: | ok | | mips: | ok | | nds32: | ok | diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index d6e9fc7a7b19..f0a700946cac 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -27,7 +27,6 @@ config ALPHA select ARCH_WANT_IPC_PARSE_VERSION select ARCH_HAVE_NMI_SAFE_CMPXCHG select AUDIT_ARCH - select GENERIC_CLOCKEVENTS select GENERIC_CPU_VULNERABILITIES select GENERIC_SMP_IDLE_THREAD select GENERIC_STRNCPY_FROM_USER diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig index 0a89cc9def65..061eb8e23739 100644 --- a/arch/arc/Kconfig +++ b/arch/arc/Kconfig @@ -19,7 +19,6 @@ config ARC select COMMON_CLK select DMA_DIRECT_REMAP select GENERIC_ATOMIC64 if !ISA_ARCV2 || !(ARC_HAS_LL64 && ARC_HAS_LLSC) - select GENERIC_CLOCKEVENTS select GENERIC_FIND_FIRST_BIT # for now, we don't need GENERIC_IRQ_PROBE, CONFIG_GENERIC_IRQ_CHIP select GENERIC_IRQ_SHOW diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 13af8d7a6c17..7adbc7387146 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -322,7 +322,6 @@ config ARCH_MULTIPLATFORM select AUTO_ZRELADDR select TIMER_OF select COMMON_CLK - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_MULTI_HANDLER select HAVE_PCI select PCI_DOMAINS_GENERIC if PCI @@ -337,7 +336,6 @@ config ARM_SINGLE_ARMV7M select TIMER_OF select COMMON_CLK select CPU_V7M - select GENERIC_CLOCKEVENTS select NO_IOPORT_MAP select SPARSE_IRQ select USE_OF @@ -366,7 +364,6 @@ config ARCH_EP93XX select CLKDEV_LOOKUP select CLKSRC_MMIO select CPU_ARM920T - select GENERIC_CLOCKEVENTS select GPIOLIB select HAVE_LEGACY_CLK help @@ -376,7 +373,6 @@ config ARCH_FOOTBRIDGE bool "FootBridge" select CPU_SA110 select FOOTBRIDGE - select GENERIC_CLOCKEVENTS select HAVE_IDE select NEED_MACH_IO_H if !MMU select NEED_MACH_MEMORY_H @@ -404,7 +400,6 @@ config ARCH_IXP4XX select ARCH_SUPPORTS_BIG_ENDIAN select CPU_XSCALE select DMABOUNCE if PCI - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_MULTI_HANDLER select GPIO_IXP4XX select GPIOLIB @@ -420,7 +415,6 @@ config ARCH_IXP4XX config ARCH_DOVE bool "Marvell Dove" select CPU_PJ4 - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_MULTI_HANDLER select GPIOLIB select HAVE_PCI @@ -444,7 +438,6 @@ config ARCH_PXA select CLKSRC_MMIO select TIMER_OF select CPU_XSCALE if !CPU_XSC3 - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_MULTI_HANDLER select GPIO_PXA select GPIOLIB @@ -485,7 +478,6 @@ config ARCH_SA1100 select COMMON_CLK select CPU_FREQ select CPU_SA1100 - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_MULTI_HANDLER select GPIOLIB select HAVE_IDE @@ -500,7 +492,6 @@ config ARCH_S3C24XX bool "Samsung S3C24XX SoCs" select ATAGS select CLKSRC_SAMSUNG_PWM - select GENERIC_CLOCKEVENTS select GPIO_SAMSUNG select GPIOLIB select GENERIC_IRQ_MULTI_HANDLER @@ -524,7 +515,6 @@ config ARCH_OMAP1 select ARCH_OMAP select CLKDEV_LOOKUP select CLKSRC_MMIO - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_CHIP select GENERIC_IRQ_MULTI_HANDLER select GPIOLIB @@ -787,7 +777,6 @@ config ARCH_ACORN config PLAT_IOP bool - select GENERIC_CLOCKEVENTS config PLAT_ORION bool @@ -1178,7 +1167,6 @@ config HAVE_SMP config SMP bool "Symmetric Multi-Processing" depends on CPU_V6K || CPU_V7 - depends on GENERIC_CLOCKEVENTS depends on HAVE_SMP depends on MMU || ARM_MPU select IRQ_WORK diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 08fa3a1c50f0..3e56f6840a32 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -101,7 +101,6 @@ config ARM64 select FRAME_POINTER select GENERIC_ALLOCATOR select GENERIC_ARCH_TOPOLOGY - select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS_BROADCAST select GENERIC_CPU_AUTOPROBE select GENERIC_CPU_VULNERABILITIES diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms index 6f2494dd6d60..748e6d8c3b94 100644 --- a/arch/arm64/Kconfig.platforms +++ b/arch/arm64/Kconfig.platforms @@ -256,7 +256,6 @@ config ARCH_TEGRA select ARM_GIC_PM select CLKSRC_MMIO select TIMER_OF - select GENERIC_CLOCKEVENTS select GPIOLIB select PINCTRL select PM diff --git a/arch/c6x/Kconfig b/arch/c6x/Kconfig index 48d66bf0465d..bdeeac28b1be 100644 --- a/arch/c6x/Kconfig +++ b/arch/c6x/Kconfig @@ -19,7 +19,6 @@ config C6X select IRQ_DOMAIN select OF select OF_EARLY_FLATTREE - select GENERIC_CLOCKEVENTS select MODULES_USE_ELF_RELA select MMU_GATHER_NO_RANGE if MMU select SET_FS diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig index 50bb8b4477be..8fec85ab5da6 100644 --- a/arch/csky/Kconfig +++ b/arch/csky/Kconfig @@ -28,7 +28,6 @@ config CSKY select GENERIC_LIB_UCMPDI2 select GENERIC_ALLOCATOR select GENERIC_ATOMIC64 - select GENERIC_CLOCKEVENTS select GENERIC_CPU_DEVICES select GENERIC_IRQ_CHIP select GENERIC_IRQ_PROBE diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig index 7945de067e9f..3e3e0f16f7e0 100644 --- a/arch/h8300/Kconfig +++ b/arch/h8300/Kconfig @@ -12,7 +12,6 @@ config H8300 select FRAME_POINTER select GENERIC_CPU_DEVICES select MODULES_USE_ELF_RELA - select GENERIC_CLOCKEVENTS select COMMON_CLK select ARCH_WANT_FRAME_POINTERS select OF diff --git a/arch/hexagon/Kconfig b/arch/hexagon/Kconfig index f2afabbadd43..6e00c16a36b5 100644 --- a/arch/hexagon/Kconfig +++ b/arch/hexagon/Kconfig @@ -27,7 +27,6 @@ config HEXAGON select GENERIC_IOMAP select GENERIC_SMP_IDLE_THREAD select STACKTRACE_SUPPORT - select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS_BROADCAST select MODULES_USE_ELF_RELA select GENERIC_CPU_DEVICES diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu index 322a35ef14c6..abeb2e4dc72d 100644 --- a/arch/m68k/Kconfig.cpu +++ b/arch/m68k/Kconfig.cpu @@ -315,7 +315,6 @@ config M54xx config COLDFIRE_PIT_TIMER bool - select GENERIC_CLOCKEVENTS config COLDFIRE_TIMERS bool diff --git a/arch/microblaze/Kconfig b/arch/microblaze/Kconfig index 33925ffed68f..2f0d3f431faf 100644 --- a/arch/microblaze/Kconfig +++ b/arch/microblaze/Kconfig @@ -17,7 +17,6 @@ config MICROBLAZE select COMMON_CLK select DMA_DIRECT_REMAP if MMU select GENERIC_ATOMIC64 - select GENERIC_CLOCKEVENTS select GENERIC_CPU_DEVICES select GENERIC_IDLE_POLL_SETUP select GENERIC_IRQ_PROBE diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index f52fa211a4cf..977c50d90933 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -21,7 +21,6 @@ config MIPS select CPU_NO_EFFICIENT_FFS if (TARGET_ISA_REV < 1) select CPU_PM if CPU_IDLE select GENERIC_ATOMIC64 if !64BIT - select GENERIC_CLOCKEVENTS select GENERIC_CMOS_UPDATE select GENERIC_CPU_AUTOPROBE select GENERIC_GETTIMEOFDAY diff --git a/arch/nds32/Kconfig b/arch/nds32/Kconfig index e8e541fd2267..62313902d75d 100644 --- a/arch/nds32/Kconfig +++ b/arch/nds32/Kconfig @@ -17,7 +17,6 @@ config NDS32 select DMA_DIRECT_REMAP select GENERIC_ATOMIC64 select GENERIC_CPU_DEVICES - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_CHIP select GENERIC_IRQ_SHOW select GENERIC_IOREMAP diff --git a/arch/nios2/Kconfig b/arch/nios2/Kconfig index c7c6ba6bec9d..c24955c81c92 100644 --- a/arch/nios2/Kconfig +++ b/arch/nios2/Kconfig @@ -10,7 +10,6 @@ config NIOS2 select COMMON_CLK select TIMER_OF select GENERIC_ATOMIC64 - select GENERIC_CLOCKEVENTS select GENERIC_CPU_DEVICES select GENERIC_IRQ_PROBE select GENERIC_IRQ_SHOW diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig index 6233c6293180..591acc5990dc 100644 --- a/arch/openrisc/Kconfig +++ b/arch/openrisc/Kconfig @@ -24,7 +24,6 @@ config OPENRISC select GENERIC_CPU_DEVICES select HAVE_UID16 select GENERIC_ATOMIC64 - select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS_BROADCAST select GENERIC_STRNCPY_FROM_USER select GENERIC_STRNLEN_USER diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 47a639ba7084..4a4c0c9e2287 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -163,7 +163,6 @@ config PPC select EDAC_ATOMIC_SCRUB select EDAC_SUPPORT select GENERIC_ATOMIC64 if PPC32 - select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS_BROADCAST if SMP select GENERIC_CMOS_UPDATE select GENERIC_CPU_AUTOPROBE diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 44377fd7860e..3842bbb4fe62 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -37,7 +37,6 @@ config RISCV select EDAC_SUPPORT select GENERIC_ARCH_TOPOLOGY if SMP select GENERIC_ATOMIC64 if !64BIT - select GENERIC_CLOCKEVENTS select GENERIC_EARLY_IOREMAP select GENERIC_GETTIMEOFDAY if HAVE_GENERIC_VDSO select GENERIC_IOREMAP diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 34371539a9b9..a91a678b33f9 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig @@ -116,7 +116,6 @@ config S390 select CLONE_BACKWARDS2 select DMA_OPS if PCI select DYNAMIC_FTRACE if FUNCTION_TRACER - select GENERIC_CLOCKEVENTS select GENERIC_CPU_AUTOPROBE select GENERIC_CPU_VULNERABILITIES select GENERIC_FIND_FIRST_BIT diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 159da4ed578f..5fa580219a86 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -16,7 +16,6 @@ config SUPERH select CPU_NO_EFFICIENT_FFS select DMA_DECLARE_COHERENT select GENERIC_ATOMIC64 - select GENERIC_CLOCKEVENTS select GENERIC_CMOS_UPDATE if SH_SH03 || SH_DREAMCAST select GENERIC_IDLE_POLL_SETUP select GENERIC_IRQ_SHOW diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index 54bd4143b02f..36a69443241c 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -39,7 +39,6 @@ config SPARC select HAVE_EBPF_JIT if SPARC64 select HAVE_DEBUG_BUGVERBOSE select GENERIC_SMP_IDLE_THREAD - select GENERIC_CLOCKEVENTS select GENERIC_STRNCPY_FROM_USER select GENERIC_STRNLEN_USER select MODULES_USE_ELF_RELA diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 78c14216c11b..27a964cba2a5 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -17,7 +17,6 @@ config UML select NO_DMA select GENERIC_IRQ_SHOW select GENERIC_CPU_DEVICES - select GENERIC_CLOCKEVENTS select HAVE_GCC_PLUGINS select SET_FS select TTY # Needed for line.c diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index fca50af29faf..badeb71fdf6e 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -108,7 +108,6 @@ config X86 select DCACHE_WORD_ACCESS select EDAC_ATOMIC_SCRUB select EDAC_SUPPORT - select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS_BROADCAST if X86_64 || (X86_32 && X86_LOCAL_APIC) select GENERIC_CLOCKEVENTS_MIN_ADJUST select GENERIC_CMOS_UPDATE diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig index d0dfa50bd0bb..2611ba336af8 100644 --- a/arch/xtensa/Kconfig +++ b/arch/xtensa/Kconfig @@ -16,7 +16,6 @@ config XTENSA select COMMON_CLK select DMA_REMAP if MMU select GENERIC_ATOMIC64 - select GENERIC_CLOCKEVENTS select GENERIC_IRQ_SHOW select GENERIC_PCI_IOMAP select GENERIC_SCHED_CLOCK diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig index f2b0cfeade47..22ec4d89e57d 100644 --- a/kernel/time/Kconfig +++ b/kernel/time/Kconfig @@ -32,7 +32,7 @@ config ARCH_USES_GETTIMEOFFSET # The generic clock events infrastructure config GENERIC_CLOCKEVENTS - bool + def_bool !LEGACY_TIMER_TICK # Architecture can handle broadcast in a driver-agnostic way config ARCH_HAS_TICK_BROADCAST From patchwork Thu Oct 8 15:46:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 11823411 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 65C3A175A for ; Thu, 8 Oct 2020 15:49:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4AC5A20578 for ; Thu, 8 Oct 2020 15:49:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729737AbgJHPt1 (ORCPT ); Thu, 8 Oct 2020 11:49:27 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:49485 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729866AbgJHPtV (ORCPT ); Thu, 8 Oct 2020 11:49:21 -0400 Received: from localhost.localdomain ([192.30.34.233]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.145]) with ESMTPA (Nemesis) id 1MStT6-1jwLIa42la-00ULFd; Thu, 08 Oct 2020 17:48:43 +0200 From: Arnd Bergmann To: linux-kernel@vger.kernel.org Cc: Arnd Bergmann , Russell King , Tony Luck , Fenghua Yu , Greg Ungerer , Geert Uytterhoeven , Finn Thain , Philip Blundell , Joshua Thompson , Sam Creasey , "James E.J. Bottomley" , Helge Deller , Thomas Gleixner , Daniel Lezcano , John Stultz , Stephen Boyd , Linus Walleij , linux-ia64@vger.kernel.org, linux-parisc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-arm-kernel@lists.infradead.org Subject: [RFC 13/13] m68k: mac: convert to generic clockevent Date: Thu, 8 Oct 2020 17:46:51 +0200 Message-Id: <20201008154651.1901126-14-arnd@arndb.de> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201008154651.1901126-1-arnd@arndb.de> References: <20201008154651.1901126-1-arnd@arndb.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:t2TT0Gg6iZNzNSgl+OLD57/ppw5gg1Qso/eeRLVLEYaTBf/jIqQ Hjytsid5qWOgO94sXb2HqufDu6sYujxasZU8I0d6fpbSQ3aPXdulhuhjy1hT49RzBos4jzD TAn0VTtO47u4tnZhkeNMXUv9noQBvjvT6/jveq0eVE28BolhK15dXE6GaGQHpS+2wQbV7+C u0hUaI+Xe6zAY/NJfNthg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:gXB8YuDxJok=:EX4k3kZ8QtbIajiEgQTjiv SxHIuk7BFtV13qQjcBtlTsbXwtVoVK8kQhARoOlwilggxhieawtrezJt3Nn/X5O7tByqjdCC0 BF62tpUUIYAbDtBIVIyZL2hUzvGMBZNsEbCoqkY9JNhrpx9qZIHES7A8RwQ3xHrexkILfIFta ySe2T7/BEMRY7zaRt35YvBZwbB2RYMnEHD4/epdU+npcF0vqxHlZ8EGd349xDSIQkFZLZ5/Qd A6jnQYe7kQEHk2S9vzlaQOLax2NzPVWqx2qJ8khlWwesz67wbkkbpL0Dia4r2XK7k5JK1j+1D OMulG+KxbdmVVTvwvWNoHtad5bJVLSuGm2XUP6X+H61R+j+K8DXxGPjyevNrwIRaX6RLhZxQP zqis6uJwcdAddHd2+B9sXPL6z4eBoA1GmBGjW/SJD50AJACvQ4E0e/0i2tHiNHS0rnm3bJLBJ lwrq4bHMoSrC7PqyJ7+CBr3egpqFuksOiesZ1mQdOw3OPSAD6kA3Yr0hajcJyhVUXPycwhCVN C++u17zvMBTUP/mYPIpUdEBDhmSi38cn4WzhKDeC3hciNlHjXobBSdiixilXs3+Dw4XeCYSVz 7Jy4BI50XcOxXCsnDEB4OPfSY3lqmAlyfxuSOW71Bbyl2aq4pE3hKYNiEQgx7M9GbLDsZCOhK /hwCC8rZXxH5x7+rCA0y7WcXnU+HjxGdER3IrB1Y5dZA3PXErgwUwwS2FAj8rlOKAMDs2zlVj BCQFJHvQcyP0SVgL+KsIAIoC2cONpmrqvhYyJ8KXY4ZKZCPOXJYlz2xx0MLLHvLC31pYlmJdM gh3zpYEZMSfwruQm5IBEZRtnKPMy9488EKTQyfQYASbr3lI25bzfMveHN011XHRSJ3ZPMfJ Precedence: bulk List-ID: X-Mailing-List: linux-parisc@vger.kernel.org Now that the infrastructure allows kernels to have both legacy timer ticks and clockevent drivers in the same image, start by moving one platform to generic clockevents. As qemu only supports the q800 platform among the classic m68k, use that as an example. I also tried adding oneshot mode, which was successful but broke the clocksource. It's probably not hard to make it work properly, but this is where I've stopped. Signed-off-by: Arnd Bergmann --- I have never tried implementing a clockevent or clocksource driver in the past, so this is really just an experiment and I expect I got something wrong. arch/m68k/Kconfig.machine | 2 +- arch/m68k/mac/via.c | 44 ++++++++++++++++++++++++++++++++------- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/arch/m68k/Kconfig.machine b/arch/m68k/Kconfig.machine index 8a4e8bd8aade..cccabdad618e 100644 --- a/arch/m68k/Kconfig.machine +++ b/arch/m68k/Kconfig.machine @@ -30,7 +30,7 @@ config MAC depends on MMU select MMU_MOTOROLA if MMU select HAVE_ARCH_NVRAM_OPS - select LEGACY_TIMER_TICK + select GENERIC_CLOCKEVENTS help This option enables support for the Apple Macintosh series of computers (yes, there is experimental support now, at least for part diff --git a/arch/m68k/mac/via.c b/arch/m68k/mac/via.c index 8ad734e3c934..dd4c13c318b6 100644 --- a/arch/m68k/mac/via.c +++ b/arch/m68k/mac/via.c @@ -24,6 +24,7 @@ */ #include +#include #include #include #include @@ -602,27 +603,54 @@ static u32 clk_total, clk_offset; static irqreturn_t via_timer_handler(int irq, void *dev_id) { + struct clock_event_device *evt = dev_id; + clk_total += VIA_TIMER_CYCLES; clk_offset = 0; - legacy_timer_tick(1); + evt->event_handler(evt); return IRQ_HANDLED; } -void __init via_init_clock(void) +static int via_set_periodic(struct clock_event_device *evt) { - if (request_irq(IRQ_MAC_TIMER_1, via_timer_handler, IRQF_TIMER, "timer", - NULL)) { - pr_err("Couldn't register %s interrupt\n", "timer"); - return; - } - via1[vT1LL] = VIA_TC_LOW; via1[vT1LH] = VIA_TC_HIGH; via1[vT1CL] = VIA_TC_LOW; via1[vT1CH] = VIA_TC_HIGH; via1[vACR] |= 0x40; + return 0; +} + +static int via_set_shutdown(struct clock_event_device *evt) +{ + via1[vACR] &= ~0x40; + + return 0; +} + +static struct clock_event_device via_clk_event = { + .name = "via1", + .rating = 250, + .irq = IRQ_MAC_TIMER_1, + .owner = THIS_MODULE, + + .features = CLOCK_EVT_FEAT_PERIODIC, + .set_state_shutdown = via_set_shutdown, + .set_state_periodic = via_set_periodic, +}; + +void __init via_init_clock(void) +{ + clockevents_config_and_register(&via_clk_event, VIA_CLOCK_FREQ, 1, 0xffff); + + if (request_irq(IRQ_MAC_TIMER_1, via_timer_handler, IRQF_TIMER, "timer", + &via_clk_event)) { + pr_err("Couldn't register %s interrupt\n", "timer"); + return; + } + clocksource_register_hz(&mac_clk, VIA_CLOCK_FREQ); }