Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp1416089pxu; Thu, 8 Oct 2020 10:57:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw7yEDrA/8zTdPgvNQPqA4LAYzP7iSb+8Ya2oRIBkkoKAqJxeH3DlU4vc/FSxUhfYKv1STr X-Received: by 2002:a17:906:34ce:: with SMTP id h14mr9769512ejb.325.1602179849559; Thu, 08 Oct 2020 10:57:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602179849; cv=none; d=google.com; s=arc-20160816; b=ibHw9brjbdWNI2Z9bXYRg1wqbThzie8XMuQft4aEB/IS0KewBGrUIROjoxrMops7E+ +La5eHPLyGCZMfi6twKt0kxdPTzAMQMJixDvgPsfimTTKwzxXNFC1dN4fi9LMHosZ163 5VU2BuuUm9KVg/boWFaMKpbV4AH0vkrT7HE3ojFN1/T5mA051VYBiQIW9ytyGwRfwCQG 5JxcTVpAzlUCBZyyAf9woUiYwPqB1NLl1jqWDkuYzfUPfnroZbtnBH92y7lswigjg/do M7bW5bSuv5mjNG0/hAJx5CybujZWss7X4GAy95CYw3OKPEbMsgQtCNVlcPcSH1TxXZOu Jcbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=+4M1Ih0DJTuBl6/H/sMV2J2xFwDfdhlffjy8UV+tf4w=; b=ivOJJ5ueoGese0SQpCCIGRy8H9hmj+/uVZ1KZGzAYI2wzzTOZ7fCi0g7EejeXMbk3h pJuZOWFW68p7GZ2VMV1B9oDiK9sOgS178tUzXvyjA01zpbp0DxY6nYeOWZQya3izqJuk w4L97VMQyUqXxzPMjpntEKdYBb5CCa7QVLm7MgC9cEzTQNjD/9EUunPiZvhYpiRmf/Q2 v9dRMeBVLBMTNpkO3j492EHfKtBJGUNdAS8Mjulvy0cj9pjFbWvG3fX4LMV8AJYaioo8 pItW8Pq907p9aKNGfVTx9WriihvUftAlKUHUEgOK3YC6JPmmhUjeabAGoQsnlLjMhFu4 pkSw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v3si4224052ejx.576.2020.10.08.10.57.05; Thu, 08 Oct 2020 10:57:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729593AbgJHPsq (ORCPT + 99 others); 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 Content-Transfer-Encoding: 8bit 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-kernel@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 --- 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; -- 2.27.0