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: 11823377 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 46C2D1592 for ; Thu, 8 Oct 2020 15:48:24 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 101D420578 for ; Thu, 8 Oct 2020 15:48:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="u0FEy3Ms" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 101D420578 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=arndb.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=kRabWvZUYadgLlFR0dpJ9G67zPTzB60jXfeIH1ne33A=; b=u0FEy3MsLXcslf3xvZZPLitcK LZ0iMFmoOzNBQV1LHT1h8796CyEl2yWi6FUswFuFxhmnjsMSlMVs3ntT0NlUw31jryek7Uu6KSld/ ARKNDwTR2PgRM9fkWcUoMz6Z27h1mzXFbgxXuz2r8158C1uMuZAdhNbe4u3Iy8D27OqCvoCdgvYVK TzZOr561kWOMKo/IhIwNZkanw5EPOf8Pwfi2dY/u7tFEgTtx/oPTgwktYNNL2MArzgWjgEeTY0jLF /lAVxV12xmbDDvuuW4ofscJtIF3YXcrTJPOBFYVI8RE/x0JB5IREPH/Z0NAcZpFQZiOGMqI7WKLr5 U5tDX8pqQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQY9M-0002U4-1J; Thu, 08 Oct 2020 15:48:12 +0000 Received: from mout.kundenserver.de ([217.72.192.75]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kQY9C-0002RK-UM for linux-arm-kernel@lists.infradead.org; Thu, 08 Oct 2020 15:48:09 +0000 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 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 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201008_114803_178055_187FBEAD X-CRM114-Status: GOOD ( 20.61 ) X-Spam-Score: 0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [217.72.192.75 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [217.72.192.75 listed in wl.mailspike.net] X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sam Creasey , Fenghua Yu , Linus Walleij , Tony Luck , Thomas Gleixner , linux-parisc@vger.kernel.org, Arnd Bergmann , linux-ia64@vger.kernel.org, Stephen Boyd , Helge Deller , Daniel Lezcano , Russell King , Finn Thain , "James E.J. Bottomley" , linux-m68k@lists.linux-m68k.org, Geert Uytterhoeven , linux-arm-kernel@lists.infradead.org, John Stultz , Philip Blundell , Greg Ungerer , Joshua Thompson Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.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 { /*