From patchwork Thu May 20 18:47:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12271173 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EFC1AC433B4 for ; Thu, 20 May 2021 18:49:45 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 B924E606A5 for ; Thu, 20 May 2021 18:49:45 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B924E606A5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=V/WRsDVezbhTOQsqGqO/OpJzoOkOYTFrSRzacKXp8IQ=; b=U/BcOFU6YHp3YS2k+AOovUgVGG jQxAkN5Y8GJvUI5jAHszbX1z0fP1EZHSxwmDyRoRzneGlnenLOjo1JCSu53zvGy80S05R5LUTiJfm 4eLDXrqawQPXPzmoTXquWDlBd+YUBBfVU7YEBLy8YW9i/xXP7f48Pp2cX1P6QAyfYxhY23636s/SB jTEcLaNAuS9n03H+evd1/EX+qJxN7wae4dNp/oyDonqzAwYKzzXVTrSKKz95s2F/Y7dHI388pg8EG SG1la9dVRIc8Zoow28oeFOzqJP7xYSUB8Hg+X13iRVjtDjJYXMy0jrY+aNjsl6SRY6A2osA82Kd3i mids9o7g==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljnhu-002Jom-Be; Thu, 20 May 2021 18:47:42 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljnhf-002JlT-Du for linux-arm-kernel@desiato.infradead.org; Thu, 20 May 2021 18:47:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=SxOKfSsGOjcUyfJiQMWz5FONO8chf1uE3d7KNUrA2fQ=; b=kxnY3wJhO0ldV0ofMupVK9Tdpr TGzzyDfLqSR8xkQB75DuhhZjZOsoJQQqPgWE+IKav984wOOdtJXTI+F7N195TX5s91Iy1rVvviVmG jysclY4uDzbin3G6NW9ytMzPFLcm0sQWfEl2jVlbPipeZDCrIFNZpkW4B/IwHgaFdUUvgwgC8a3qW Uj+wZvOUeLCHytboSnTPnKHbaamn08drvU7HT6ewqJhDlCmLDtAt/+T+RFlEr3oUNzyxYbUJ6oYNd fGkOVckURZxHj5vVjPpULCI0CQfUfHeDs5f0NGU29M2yse1DveLdPPv7cYF2Q31RNVNASxCDM57Or suvQKFWw==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljnhd-00GaDm-1v for linux-arm-kernel@lists.infradead.org; Thu, 20 May 2021 18:47:26 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 0FC3C611AB; Thu, 20 May 2021 18:47:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621536444; bh=+VJpt92mcBbsUrWh9kr31YWl1BdzjiW1yi5tLRR3Csk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=q8UVoynLOLpMdIppIYneX64kan/QxB9SBJsGaUmcr5PnjSABQGsROy8nPsL3fK6gh bngoy/uD8IUbEtSpdr+zOuqDeAu6e07XKTOdYFVrGupcmjxsV6z6hMPFG3feqe4P7B woBW90ftxJJSm7cvgc1tm6iQHbdpM5LkqI3RQZ4T1YZUwQZ2qEKI2uD4buySSvLhpg tv5dLt07y6gVg4aZYg6zNk1Yvn6dy1iAzjujmrh3iUXaXq1KgLvyqJESGGaOa5T3bU g4IbgAfxSEVW30Z3uZLiKbypu+U9PER2HlwZu91l0QYLWzyQ3ZH6sCHLnnfb25jK9q BvuT6x2Ma7s2g== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Will Deacon , Frederic Weisbecker , Thomas Gleixner , Marc Zyngier , Lorenzo Colitti , John Stultz , Stephen Boyd , kernel-team@android.com Subject: [PATCH 1/5] tick/broadcast: Drop unneeded CONFIG_GENERIC_CLOCKEVENTS_BROADCAST guard Date: Thu, 20 May 2021 19:47:01 +0100 Message-Id: <20210520184705.10845-2-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210520184705.10845-1-will@kernel.org> References: <20210520184705.10845-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210520_114725_133522_A4DE6FFC X-CRM114-Status: GOOD ( 10.75 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org tick-broadcast.o is only built if CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y so remove the redundant #ifdef guards around the definition of tick_receive_broadcast(). Cc: Frederic Weisbecker Cc: Thomas Gleixner Cc: Marc Zyngier Cc: Lorenzo Colitti Cc: John Stultz Cc: Stephen Boyd Signed-off-by: Will Deacon --- kernel/time/tick-broadcast.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index a44055228796..fb794ff4855e 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -253,7 +253,6 @@ int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) return ret; } -#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST int tick_receive_broadcast(void) { struct tick_device *td = this_cpu_ptr(&tick_cpu_device); @@ -268,7 +267,6 @@ int tick_receive_broadcast(void) evt->event_handler(evt); return 0; } -#endif /* * Broadcast the event to the cpus, which are set in the mask (mangled). From patchwork Thu May 20 18:47:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12271175 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 61465C433B4 for ; Thu, 20 May 2021 18:49:52 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 D8E22606A5 for ; Thu, 20 May 2021 18:49:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D8E22606A5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=V8LFcH1sPwJ9/IT4OKBkGEdkfdhQP6yc9q6O/YPm7i8=; b=iQAeDs9naHt9eNV+pnBuSzAgBd 0juIZBm1hLITUVFqiPlTBOkBVy6EwgRcBwCx4UiRpHVbYg+m0f5rIaZYTWlSWCjYuWPkdsOq3UjyP DI0Ozb3JBs9w04EaTbtbggRaxWFVPKnrKe9U1k/A1dZXtROf2M1kXp/eWPzkSFFXYIoRRUG+8dPRN CB7iRjQl2ZOFQ/qoRaON5f2zjJbImeMT0cD7k5buvivHTWdI7jKER5QxwsFwDkUC1mhQAh8E3nVm3 dbI/SpkS25RWR+lmg6UGDhfaD2gcvNWWZdMHl7dNUFF589hUbVUmif1spofaB0+LD2sJ1HTDtAz9p PsE799ww==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljni7-002JuB-6x; Thu, 20 May 2021 18:47:55 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljnhh-002Jlv-Re for linux-arm-kernel@desiato.infradead.org; Thu, 20 May 2021 18:47:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=e6zYO/sPTUDLqD9hiiGJ6bcs1v6q1JrvnlL1diG7gAU=; b=FFgtYmP/zyyRCR40jg0+Ov2Pc7 NqISApH6tdxb7IBxfrlz1gCORw3nVd5U7bY7LOy96Kyz50b5QoFuDDs5sehbT5+W87upjAP6xWDsI ESWXxmDQ3WjGoBdPMnklbSBFydpOz+L0y52kbmjRt6YMwvoohnbLfAMZJ44egBM4XtREJw8XWureE 0y1SfMjpvpu9dlouDYxzIE2EpY0Tvjz1Ky//jFTjo1ulUb6G05q/ycSLSS6Bs7jet2YKFfgYLAzlT LUTIB/IYN1vXEzmxG9cyTjwFNBDPluk61R+3ODJOwy24KDk9WAdS1duLC7eU4oMIvKSL0ZEbww33U iaCXI0/A==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljnhf-00GaE2-81 for linux-arm-kernel@lists.infradead.org; Thu, 20 May 2021 18:47:28 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 347AA6124C; Thu, 20 May 2021 18:47:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621536446; bh=tjZHOWaK+cFm3eDjHyyP9YNAx0VLERWMIXFQByYvbjk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Tm6u9YuLHKaS5VVmKkehR+QiJCQlNIvK0Rsy7A31iPDsEXalFnU13t2sUQayM0/Rl 2V7HSV1X3TsZITjTscWVqtHfe8lo5Oo0RczMu2RKUIrKIpRMtJz1Y23DOYwWo0nofg O9I1RRg8e+MkzIbusUwamXGpRhNsJmNgCSwpsCpebyfW+s45hHKi50Lj5O/51mwtSN fiBsYS99NpEVjw2SD3lCoxst7iW44ChWXowyc/S5uL6BXroUSbWIHMrqcH7gtunoIn 5atbfOPzcS12lvBg/VVPVj3ec0/PIMxQzOj5Uml/7Jw2VRmXmtHnB/lNxxJUF3YaiI GzYMtg/ARv7vg== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Will Deacon , Frederic Weisbecker , Thomas Gleixner , Marc Zyngier , Lorenzo Colitti , John Stultz , Stephen Boyd , kernel-team@android.com Subject: [PATCH 2/5] tick/broadcast: Split __tick_broadcast_oneshot_control() into a helper Date: Thu, 20 May 2021 19:47:02 +0100 Message-Id: <20210520184705.10845-3-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210520184705.10845-1-will@kernel.org> References: <20210520184705.10845-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210520_114727_322927_A22E260F X-CRM114-Status: GOOD ( 16.53 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org In preparation for adding support for per-cpu wakeup timers, split _tick_broadcast_oneshot_control() into a helper function which deals only with the broadcast timer management across idle transitions. Cc: Frederic Weisbecker Cc: Thomas Gleixner Cc: Marc Zyngier Cc: Lorenzo Colitti Cc: John Stultz Cc: Stephen Boyd Signed-off-by: Will Deacon --- kernel/time/tick-broadcast.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index fb794ff4855e..f3f2f4ba4321 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -717,24 +717,16 @@ static void broadcast_shutdown_local(struct clock_event_device *bc, clockevents_switch_state(dev, CLOCK_EVT_STATE_SHUTDOWN); } -int __tick_broadcast_oneshot_control(enum tick_broadcast_state state) +static int ___tick_broadcast_oneshot_control(enum tick_broadcast_state state, + struct tick_device *td, + int cpu) { - struct clock_event_device *bc, *dev; - int cpu, ret = 0; + struct clock_event_device *bc, *dev = td->evtdev; + int ret = 0; ktime_t now; - /* - * If there is no broadcast device, tell the caller not to go - * into deep idle. - */ - if (!tick_broadcast_device.evtdev) - return -EBUSY; - - dev = this_cpu_ptr(&tick_cpu_device)->evtdev; - raw_spin_lock(&tick_broadcast_lock); bc = tick_broadcast_device.evtdev; - cpu = smp_processor_id(); if (state == TICK_BROADCAST_ENTER) { /* @@ -863,6 +855,21 @@ int __tick_broadcast_oneshot_control(enum tick_broadcast_state state) return ret; } +int __tick_broadcast_oneshot_control(enum tick_broadcast_state state) +{ + struct tick_device *td = this_cpu_ptr(&tick_cpu_device); + int cpu = smp_processor_id(); + + if (tick_broadcast_device.evtdev) + return ___tick_broadcast_oneshot_control(state, td, cpu); + + /* + * If there is no broadcast device, tell the caller not + * to go into deep idle. + */ + return -EBUSY; +} + /* * Reset the one shot broadcast for a cpu * From patchwork Thu May 20 18:47:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12271177 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E7887C433B4 for ; Thu, 20 May 2021 18:49:56 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 62842611AE for ; Thu, 20 May 2021 18:49:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 62842611AE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=nBZgHJMXzcD3CC3vj+2g9glws1jaz3usQBr0TC+xmmQ=; b=qRzYJ2hsjt7zXzBirSw2++rPG+ nEz1kjoDaN0OaAikTHx0ielSSST9Rx03q7Cp1owyCOhDx2prRZsqIzlsjAiG0JgZTowC6D/ie4fKT 6yZsgy6TzAjZau74WRBuvZBt03tE6nhPy+BGsBhIlQFwfN9UHmGLrMMXUJCatEC9OpQgy5G2y+M2e LoHsNymy26e8/VciR0nYOs2ehwBJ67bkIXL4sMxBF5FdLKq19Ouz367P3HR4ISmC7di6mSUCYGe4P W8sDzXKzf0liyH7nPAVJvCKRd0ziyWMid4eAIKOe4UDPS0ukJrzhqVAE+7ZPYqHfaHEO11vGkC1cP g4k0Sh8A==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljniK-002K2C-AX; Thu, 20 May 2021 18:48:08 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljnhk-002JmN-3t for linux-arm-kernel@desiato.infradead.org; Thu, 20 May 2021 18:47:33 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=xy7PINBfmNOjNHPYPZHVffnJ8hmqTlQfFaNDBr8c6s4=; b=M3h3srzxEKuFtBAcR98tysda2k 7hrLA4dwDtFOS/StlIy8WD+hkPfgn8nVdiSTvXfK5nVGzracd5S4C1x7YHgBWB3Um9JQcVh/G4JtX UyGAZRKcq009AREa0bf+yn4FsBSxR8hWNWZxCBpXJMI3J01lxWdEz6S/c/AhWLzVL9bvmphsdaRCK FuVnwn7fzE8N3PmY/IBCfbGzrfQ93/ITWrpeTPj1ZtDcjzmaF5amOnChZA+vvJGns1JJ4t3ju/Jcm WU/mHN+B4a3GPF8hxFFemWx9wnA8lD+lQXVnUP52bd99aOf2OTANjcTbiij5qCJrARmnF66B7De67 nMAKWlFQ==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljnhh-00GaEU-C2 for linux-arm-kernel@lists.infradead.org; Thu, 20 May 2021 18:47:30 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5429F611AE; Thu, 20 May 2021 18:47:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621536449; bh=5M3iD+6AYgGmTxRsjr17d+oS5yIoXNVuSfoJm4ysB5Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t/m4YnaEcrFXutACKlfnFds4FMzkNxpALBpbe73uYs03ELhEuXwJGYgJPUTV6Ds8S qc/lhFKc/G6CoecfM65h/UA7ZukCb3NyZ9GgZcBEuRPy9zsw5qODbQ+cdWmCoFZ7+4 z1yz5UeAZ2OwO+FPDXLvXP1H0KWDgxGIIWysce9TArYQdVC754iOvuRkdoor3TDcgb Jw+SBbKiLUdb0NcRfGUQFb4vd9RkwXZx4UPScBWEAVMGZfddixqqwC5eKklF9lKyxs qEQ2y2fzr3Z38Wa7nC1QAj+ATfEHFiC3tq0a4gj6gsSZQJL8YSigjK3DCRUukPM1/z uv1hGx0/aYg1g== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Will Deacon , Frederic Weisbecker , Thomas Gleixner , Marc Zyngier , Lorenzo Colitti , John Stultz , Stephen Boyd , kernel-team@android.com Subject: [PATCH 3/5] tick/broadcast: Prefer per-cpu oneshot wakeup timers to broadcast Date: Thu, 20 May 2021 19:47:03 +0100 Message-Id: <20210520184705.10845-4-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210520184705.10845-1-will@kernel.org> References: <20210520184705.10845-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210520_114729_469831_91B4CB49 X-CRM114-Status: GOOD ( 18.66 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Some SoCs have two per-cpu timer implementations where the timer with the higher rating stops in deep idle (i.e. suffers from CLOCK_EVT_FEAT_C3STOP) but is otherwise preferable to the timer with the lower rating. In such a design, we rely on a global broadcast timer and IPIs to wake up from deep idle states. To avoid the reliance on a global broadcast timer and also to reduce the overhead associated with the IPI wakeups, extend tick_install_broadcast_device() to manage per-cpu wakeup timers separately from the broadcast device. For now, these timers remain unused. Cc: Frederic Weisbecker Cc: Thomas Gleixner Cc: Marc Zyngier Cc: Lorenzo Colitti Cc: John Stultz Cc: Stephen Boyd Signed-off-by: Will Deacon --- kernel/time/tick-broadcast.c | 57 +++++++++++++++++++++++++++++++++++- kernel/time/tick-common.c | 2 +- kernel/time/tick-internal.h | 4 +-- 3 files changed, 59 insertions(+), 4 deletions(-) diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index f3f2f4ba4321..8bd8cd69c8c9 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -33,6 +33,8 @@ static int tick_broadcast_forced; static __cacheline_aligned_in_smp DEFINE_RAW_SPINLOCK(tick_broadcast_lock); #ifdef CONFIG_TICK_ONESHOT +static DEFINE_PER_CPU(struct clock_event_device *, tick_oneshot_wakeup_device); + static void tick_broadcast_setup_oneshot(struct clock_event_device *bc); static void tick_broadcast_clear_oneshot(int cpu); static void tick_resume_broadcast_oneshot(struct clock_event_device *bc); @@ -88,13 +90,59 @@ static bool tick_check_broadcast_device(struct clock_event_device *curdev, return !curdev || newdev->rating > curdev->rating; } +#ifdef CONFIG_TICK_ONESHOT +static struct clock_event_device *tick_get_oneshot_wakeup_device(int cpu) +{ + return per_cpu(tick_oneshot_wakeup_device, cpu); +} + +static bool tick_set_oneshot_wakeup_device(struct clock_event_device *newdev, + int cpu) +{ + struct clock_event_device *curdev; + + if (!newdev) + goto set_device; + + if ((newdev->features & CLOCK_EVT_FEAT_DUMMY) || + (newdev->features & CLOCK_EVT_FEAT_C3STOP) || + !(newdev->features & CLOCK_EVT_FEAT_ONESHOT)) + return false; + + if (!cpumask_equal(newdev->cpumask, cpumask_of(cpu))) + return false; + + curdev = tick_get_oneshot_wakeup_device(cpu); + if (curdev && newdev->rating <= curdev->rating) + return false; + +set_device: + per_cpu(tick_oneshot_wakeup_device, cpu) = newdev; + return true; +} +#else +static struct clock_event_device *tick_get_oneshot_wakeup_device(int cpu) +{ + return NULL; +} + +static bool tick_set_oneshot_wakeup_device(struct clock_event_device *newdev, + int cpu) +{ + return false; +} +#endif + /* * Conditionally install/replace broadcast device */ -void tick_install_broadcast_device(struct clock_event_device *dev) +void tick_install_broadcast_device(struct clock_event_device *dev, int cpu) { struct clock_event_device *cur = tick_broadcast_device.evtdev; + if (tick_set_oneshot_wakeup_device(dev, cpu)) + return; + if (!tick_check_broadcast_device(cur, dev)) return; @@ -996,6 +1044,13 @@ void hotplug_cpu__broadcast_tick_pull(int deadcpu) */ static void tick_broadcast_oneshot_offline(unsigned int cpu) { + struct clock_event_device *dev = tick_get_oneshot_wakeup_device(cpu); + + if (dev) { + clockevents_switch_state(dev, CLOCK_EVT_STATE_DETACHED); + tick_set_oneshot_wakeup_device(NULL, cpu); + } + /* * Clear the broadcast masks for the dead cpu, but do not stop * the broadcast device! diff --git a/kernel/time/tick-common.c b/kernel/time/tick-common.c index e15bc0ef1912..d663249652ef 100644 --- a/kernel/time/tick-common.c +++ b/kernel/time/tick-common.c @@ -373,7 +373,7 @@ void tick_check_new_device(struct clock_event_device *newdev) /* * Can the new device be used as a broadcast device ? */ - tick_install_broadcast_device(newdev); + tick_install_broadcast_device(newdev, cpu); } /** diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h index 7a981c9e87a4..30c89639e305 100644 --- a/kernel/time/tick-internal.h +++ b/kernel/time/tick-internal.h @@ -61,7 +61,7 @@ extern ssize_t sysfs_get_uname(const char *buf, char *dst, size_t cnt); /* Broadcasting support */ # ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST extern int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu); -extern void tick_install_broadcast_device(struct clock_event_device *dev); +extern void tick_install_broadcast_device(struct clock_event_device *dev, int cpu); extern int tick_is_broadcast_device(struct clock_event_device *dev); extern void tick_suspend_broadcast(void); extern void tick_resume_broadcast(void); @@ -72,7 +72,7 @@ extern int tick_broadcast_update_freq(struct clock_event_device *dev, u32 freq); extern struct tick_device *tick_get_broadcast_device(void); extern struct cpumask *tick_get_broadcast_mask(void); # else /* !CONFIG_GENERIC_CLOCKEVENTS_BROADCAST: */ -static inline void tick_install_broadcast_device(struct clock_event_device *dev) { } +static inline void tick_install_broadcast_device(struct clock_event_device *dev, int cpu) { } static inline int tick_is_broadcast_device(struct clock_event_device *dev) { return 0; } static inline int tick_device_uses_broadcast(struct clock_event_device *dev, int cpu) { return 0; } static inline void tick_do_periodic_broadcast(struct clock_event_device *d) { } From patchwork Thu May 20 18:47:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12271179 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E1252C433B4 for ; Thu, 20 May 2021 18:50:12 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 6985A606A5 for ; Thu, 20 May 2021 18:50:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6985A606A5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=6ImA5pFpshs5CHFwFqdJdn3BusHVhvxL/SR+aToHlQI=; b=PDSQqUzJcHA9a5jjB+8OnBzSUn eo1SlCcuQ/0ta5BPpweYBQ8cnR13NWFkEic2YPhe4FUbGapOT2iAv1DzmBXBPEf/9nOqpmmyEgYPn c0QNSZdVo1G5KXI9e7eTOPvza8PGU1cibQkPHmfRWnoy9n0pie2x4ckBIM8hQe61kOAjrz+gU6MUB LDtk/QuMmJ3lkW+vy7tazN5bCjUJTGm+J6urBACMhKz+GzenWb5BII3OyX19mTiRMHuRzFxcDkwc7 1SiCt5Id8dS05oXvYoJenm/HxBfruZkYMoSbEQPtMkpd1SJScbZdOAfxt+tHQH/h0M8L6PCshCe+P Uwla7E6w==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljniV-002K5A-3z; Thu, 20 May 2021 18:48:19 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljnhm-002JmV-3E for linux-arm-kernel@desiato.infradead.org; Thu, 20 May 2021 18:47:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=uRG4gelGTu33BHMfq016RYRBpJp7Ja0MBBjAPXQEnp0=; b=L9M/gWDS8SuNiB/ACzYvYzESxx /1AQh1YtWh6Fm0C66rGI0maS5KEardeCRPXnQAxBfFQDFhOwVsfMAU8HWkfDvdM4QVMwf1IoJJbe8 BtGPGiJTMWzHPi0ketAeZ0/AUmlHNXFL39BDrAEzMBfdtYxqoH+d1N+QsakqSto8ICMvj58Efgo96 xr1/EeUDnFuGI/viBb87ndskDulO/IPhtNFWwOsFLxExxzwInxnp7xYvWZVeBcj6d0gmqTHstZDPc vRELqCUpBBrdoU2UjEkcxcpUgUJM0RJe4NrNayG++T/qWht2ZOKePETnyjyZAHIMmiZL4Ae/QojOE OZS4AvTQ==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljnhj-00GaEm-EC for linux-arm-kernel@lists.infradead.org; Thu, 20 May 2021 18:47:32 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 7259B61355; Thu, 20 May 2021 18:47:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621536451; bh=2qJHn0NYcRsiDGsS+gVNRop9M5cOLWda5mJZcN1WsXc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Sdx2dYon4xoRVs0Hz9wbxFz/wOK1BTycjLW9cBydCYtm/VH0eAyZG6m3En+vo1Yf3 lo6laU2hralBSiIMoHmfqZuDOaqL53t4nBs5tjyonbHm6GvAzPI1pZmaYqmn1N4G/t v5nZhCozGEs9wRc358hWiwS3J6cEHWeOMKg0oQZ3kLmNVDyrM4QqjHYiqk97sTN7a8 GDd5AVdlecdpFocPg0vtdwCa+ge0mVFobtxpJjUYMElVFqnLDo7S0WPQGsglQS296M GDrdxgKpVKo3ldBHnyi3PdUsZyMO3ocQ5MDkf0uIpb9AndExtM3kv5RAOIGyF0+rIm yPNCEg//JrvWA== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Will Deacon , Frederic Weisbecker , Thomas Gleixner , Marc Zyngier , Lorenzo Colitti , John Stultz , Stephen Boyd , kernel-team@android.com Subject: [PATCH 4/5] tick/broadcast: Program wakeup timer when entering idle if required Date: Thu, 20 May 2021 19:47:04 +0100 Message-Id: <20210520184705.10845-5-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210520184705.10845-1-will@kernel.org> References: <20210520184705.10845-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210520_114731_536234_7C26D1BA X-CRM114-Status: GOOD ( 15.50 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org When configuring the broadcast timer on entry to and exit from deep idle states, prefer a per-CPU wakeup timer if one exists. On entry to idle, stop the tick device and transfer the next event into the oneshot wakeup device, which will serve as the wakeup from idle. To avoid the overhead of additional hardware accesses on exit from idle, leave the timer armed and treat the inevitable interrupt as a (possibly spurious) tick event. Cc: Frederic Weisbecker Cc: Thomas Gleixner Cc: Marc Zyngier Cc: Lorenzo Colitti Cc: John Stultz Cc: Stephen Boyd Signed-off-by: Will Deacon --- kernel/time/tick-broadcast.c | 38 +++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index 8bd8cd69c8c9..ba5264e210d9 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -96,6 +96,15 @@ static struct clock_event_device *tick_get_oneshot_wakeup_device(int cpu) return per_cpu(tick_oneshot_wakeup_device, cpu); } +static void tick_oneshot_wakeup_handler(struct clock_event_device *wd) +{ + /* + * If we woke up early and the tick was reprogrammed in the + * meantime then this may be spurious but harmless. + */ + tick_receive_broadcast(); +} + static bool tick_set_oneshot_wakeup_device(struct clock_event_device *newdev, int cpu) { @@ -116,6 +125,7 @@ static bool tick_set_oneshot_wakeup_device(struct clock_event_device *newdev, if (curdev && newdev->rating <= curdev->rating) return false; + newdev->event_handler = tick_oneshot_wakeup_handler; set_device: per_cpu(tick_oneshot_wakeup_device, cpu) = newdev; return true; @@ -903,16 +913,42 @@ static int ___tick_broadcast_oneshot_control(enum tick_broadcast_state state, return ret; } +static int tick_oneshot_wakeup_control(enum tick_broadcast_state state, + struct tick_device *td, + int cpu) +{ + struct clock_event_device *dev, *wd; + + dev = td->evtdev; + if (td->mode != TICKDEV_MODE_ONESHOT) + return -EINVAL; + + wd = tick_get_oneshot_wakeup_device(cpu); + if (!wd) + return -ENODEV; + + if (state == TICK_BROADCAST_ENTER) { + clockevents_switch_state(dev, CLOCK_EVT_STATE_ONESHOT_STOPPED); + clockevents_switch_state(wd, CLOCK_EVT_STATE_ONESHOT); + clockevents_program_event(wd, dev->next_event, 1); + } + + return 0; +} + int __tick_broadcast_oneshot_control(enum tick_broadcast_state state) { struct tick_device *td = this_cpu_ptr(&tick_cpu_device); int cpu = smp_processor_id(); + if (!tick_oneshot_wakeup_control(state, td, cpu)) + return 0; + if (tick_broadcast_device.evtdev) return ___tick_broadcast_oneshot_control(state, td, cpu); /* - * If there is no broadcast device, tell the caller not + * If there is no broadcast or wakeup device, tell the caller not * to go into deep idle. */ return -EBUSY; From patchwork Thu May 20 18:47:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12271181 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AA1A4C433B4 for ; Thu, 20 May 2021 18:50:15 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (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 3AD01611AE for ; Thu, 20 May 2021 18:50:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3AD01611AE Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=2rIJraY3qnW4JkNy/ynlJFoQF+XhnhgoV7lVcd7Z0gM=; b=GBU/b66ZYR8OktqInNyNHame5l +DTfsF3ASKNhDd8zVHyCitIDMZJJvlTqQeWMEEX8bRyuceA3kfXWiGta+WwG4hi2EsEBz2QeXidmJ WruAeDLDP+hLtSvXJj4MEEt36ly8lRipkvfSiINbrJ6xr5zfJJn80PYIh9tnHWZlhoI3c7ZMEZAjV lelH6dToUjY+Fcrjn2GiFoJSm6DZO/e7RByRXFd84FhOdgYk8pqKh0cMaZ3cBavRH8MVeToSM2kdI 1tjU+ORSaZu8e5ea76gh88NL+Foo2gEryAhQsr7KvJ2aRw7kaIsTECsIKY55FlNzL5koHWksbO+K+ Pk1HyzZg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljnii-002KDx-BM; Thu, 20 May 2021 18:48:33 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1ljnhr-002JoK-7C for linux-arm-kernel@desiato.infradead.org; Thu, 20 May 2021 18:47:39 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=iHuZCZ265v9JwXxmEEcMJn24sn3WIWmltDX7EcdzsMY=; b=wt8/hOheSvsvrcUuK/8hG4lCH4 HN5adTZMhNp2AGrmkOg1A5cyfpjiS+cPEtr23q4TI6uWUBU4dsyuWjRQ1uC+xTXc0ofdKIUpVAmDE ZfMNt6fqDqfaXU/+msWvDGcvs7QxCZgQZ3jh5UPApQc0Fb5iV4mYTN3tTnKFFnJk3q+lvT0ru0VEI 4WoVJgT5wW2pCpMsEWDR+e8l3On9AtXTs51MVDXK5NfUWKcL5w3QiZrg80DB7v/sA6lM33Qx3rI9S cJWBvdmY585IOZTBhNr2UTIMV8erAB2xXTosg8A7YAS0TxgNfi6gKCP9m/9RydcmpfONytGDeDNN1 kCM2MSNA==; Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1ljnhl-00GaF3-J5 for linux-arm-kernel@lists.infradead.org; Thu, 20 May 2021 18:47:38 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 91D866124C; Thu, 20 May 2021 18:47:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621536453; bh=W3ebu1Os4hN8pXOrxUPbr5Ll1oiTdcAgadaiK+KlHbQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=u632zSmy4PnY1SoXPXbaea5Pq3AFpMcfSjIVISALoqozg9k/9Onrlg5Do/XGh3+K6 C/HByhvFkyVxtjeMSTbcc6wduls1hjWmF/qgp3nj3Fkr1HRthIDgjZFAQRt5zxYB7B hUSCTh0VE1eqmrx87tiaIel3eVA91UoLMBP0B2M6K9nLtCWuVisXrFIiBL0oHZN9cQ QYdGxMIADr9XAWUvM1yXFpeej8lOe3qcHTjQyCESDWFtomk+Sh6xkUr+1OjpKn/e7i 0OaGMr/kJIN9FjUDQucdPF+z4hL2y1BDdGVm3SyFHV/ZUPlZz4FGANndle14oGMOpm fQqXhQTHmUe8g== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Will Deacon , Frederic Weisbecker , Thomas Gleixner , Marc Zyngier , Lorenzo Colitti , John Stultz , Stephen Boyd , kernel-team@android.com Subject: [PATCH 5/5] timer_list: Print name of per-cpu wakeup device Date: Thu, 20 May 2021 19:47:05 +0100 Message-Id: <20210520184705.10845-6-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210520184705.10845-1-will@kernel.org> References: <20210520184705.10845-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210520_114733_692072_971D0F1D X-CRM114-Status: GOOD ( 15.15 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org With the introduction of per-cpu wakeup devices that can be used in preference to the broadcast timer, print the name of such devices when they are available. Cc: Frederic Weisbecker Cc: Thomas Gleixner Cc: Marc Zyngier Cc: Lorenzo Colitti Cc: John Stultz Cc: Stephen Boyd Signed-off-by: Will Deacon --- kernel/time/tick-broadcast.c | 7 +++++++ kernel/time/tick-internal.h | 1 + kernel/time/timer_list.c | 11 ++++++++++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c index ba5264e210d9..dbafa7d14aff 100644 --- a/kernel/time/tick-broadcast.c +++ b/kernel/time/tick-broadcast.c @@ -63,6 +63,13 @@ struct cpumask *tick_get_broadcast_mask(void) return tick_broadcast_mask; } +static struct clock_event_device *tick_get_oneshot_wakeup_device(int cpu); + +const struct clock_event_device *tick_get_wakeup_device(int cpu) +{ + return tick_get_oneshot_wakeup_device(cpu); +} + /* * Start the device in periodic mode */ diff --git a/kernel/time/tick-internal.h b/kernel/time/tick-internal.h index 30c89639e305..6a742a29e545 100644 --- a/kernel/time/tick-internal.h +++ b/kernel/time/tick-internal.h @@ -71,6 +71,7 @@ extern void tick_set_periodic_handler(struct clock_event_device *dev, int broadc extern int tick_broadcast_update_freq(struct clock_event_device *dev, u32 freq); extern struct tick_device *tick_get_broadcast_device(void); extern struct cpumask *tick_get_broadcast_mask(void); +extern const struct clock_event_device *tick_get_wakeup_device(int cpu); # else /* !CONFIG_GENERIC_CLOCKEVENTS_BROADCAST: */ static inline void tick_install_broadcast_device(struct clock_event_device *dev, int cpu) { } static inline int tick_is_broadcast_device(struct clock_event_device *dev) { return 0; } diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c index 6939140ab7c5..01158983a335 100644 --- a/kernel/time/timer_list.c +++ b/kernel/time/timer_list.c @@ -229,6 +229,15 @@ print_tickdevice(struct seq_file *m, struct tick_device *td, int cpu) SEQ_printf(m, "\n"); SEQ_printf(m, " retries: %lu\n", dev->retries); SEQ_printf(m, "\n"); + +#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST + if (cpu >= 0) { + const struct clock_event_device *wd = + tick_get_wakeup_device(cpu); + SEQ_printf(m, "Wakeup Device: %s\n", wd ? wd->name : ""); + SEQ_printf(m, "\n"); + } +#endif } static void timer_list_show_tickdevices_header(struct seq_file *m) @@ -248,7 +257,7 @@ static void timer_list_show_tickdevices_header(struct seq_file *m) static inline void timer_list_header(struct seq_file *m, u64 now) { - SEQ_printf(m, "Timer List Version: v0.8\n"); + SEQ_printf(m, "Timer List Version: v0.9\n"); SEQ_printf(m, "HRTIMER_MAX_CLOCK_BASES: %d\n", HRTIMER_MAX_CLOCK_BASES); SEQ_printf(m, "now at %Ld nsecs\n", (unsigned long long)now); SEQ_printf(m, "\n");