From patchwork Thu Jan 12 19:43:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Zijlstra X-Patchwork-Id: 13098753 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C44AC63797 for ; Thu, 12 Jan 2023 19:57:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 279D18E0008; Thu, 12 Jan 2023 14:57:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1AFC9900004; Thu, 12 Jan 2023 14:57:26 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A8A7F8E0008; Thu, 12 Jan 2023 14:57:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 797768E0003 for ; Thu, 12 Jan 2023 14:57:25 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 516DFC03A8 for ; Thu, 12 Jan 2023 19:57:25 +0000 (UTC) X-FDA: 80347206450.16.FF4F125 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf17.hostedemail.com (Postfix) with ESMTP id BE98C40002 for ; Thu, 12 Jan 2023 19:57:22 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PpHISELX; dmarc=none; spf=none (imf17.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1673553443; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:references:dkim-signature; bh=Z3KKcWa6kIo8XxnBPrwezUQgJ6x9WmWZQX/flafg2tU=; b=crWkSbtNpQJRbuKakxoiZRciyG/mlU0he6sKY3yaGnvuqONPECsFb12I/n7wnKuq/ZUxzO FOYNyfzBWChE/Iroadrk9UbEYMrjXYH4qJTW7Co92cysjzvu9HTwanfjTUIjso/vyTqg6h YqbztNl+6GfkjJq6HVhmQ+LpMcKeu+0= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=PpHISELX; dmarc=none; spf=none (imf17.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673553443; a=rsa-sha256; cv=none; b=o2l+g9jwqFZ651heLb+B5BEgIY4Nne+Izg4y+eHhS0Clt1A1MY8e4rXEre53ihONdLTllu YAl9gHBqMUxlbq2jTyiqMO6/dS3bwscEUmKIgy6+z6deJDl/GxYIDdq580HP16ReHpfKDX P3iHTYzz2+NDv6mP4fcql70V8wCSmLI= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Type:MIME-Version:References: Subject:Cc:To:From:Date:Message-ID:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:In-Reply-To; bh=Z3KKcWa6kIo8XxnBPrwezUQgJ6x9WmWZQX/flafg2tU=; b=PpHISELXEmnMHJvLFAt16OXB0d DPSGScXaLcWEZ28c+crVEelhP+2NctCyeJdqyEH14VNT937QvaCtPAT1SUKwrARUTyZZPN/9eNb0N uBYDeE24g3byzsfh/5Ct6sdoJZUVTepI+8uCWJIEqNlajiNKddekUu7U1Xb+Li3UjgEkSYGgSw1bo EcmAdpfUVjMr1DpMmSS9iZVU8P2OoWNhWBj+ZOzWdPEE0bEMxVs96sP0ZCKBSQ6IhlV36k/oZtssk ImqoJMqVIwHxbSBtzvjC0yQnFNZYX6rGb5Gd1lIRsPHN44o/4fikx4Sq60jL3JDvn5ueQX8YywLDn WavqFquQ==; Received: from j130084.upc-j.chello.nl ([24.132.130.84] helo=noisy.programming.kicks-ass.net) by casper.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1pG3hX-005OcP-Jj; Thu, 12 Jan 2023 19:57:27 +0000 Received: from hirez.programming.kicks-ass.net (hirez.programming.kicks-ass.net [192.168.1.225]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (Client did not present a certificate) by noisy.programming.kicks-ass.net (Postfix) with ESMTPS id 0262E3033EE; Thu, 12 Jan 2023 20:57:13 +0100 (CET) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 0) id A39622CCF1F58; Thu, 12 Jan 2023 20:57:07 +0100 (CET) Message-ID: <20230112195539.699546331@infradead.org> User-Agent: quilt/0.66 Date: Thu, 12 Jan 2023 20:43:20 +0100 From: Peter Zijlstra To: peterz@infradead.org Cc: richard.henderson@linaro.org, ink@jurassic.park.msu.ru, mattst88@gmail.com, vgupta@kernel.org, linux@armlinux.org.uk, nsekhar@ti.com, brgl@bgdev.pl, ulli.kroll@googlemail.com, linus.walleij@linaro.org, shawnguo@kernel.org, Sascha Hauer , kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, tony@atomide.com, khilman@kernel.org, krzysztof.kozlowski@linaro.org, alim.akhtar@samsung.com, catalin.marinas@arm.com, will@kernel.org, guoren@kernel.org, bcain@quicinc.com, chenhuacai@kernel.org, kernel@xen0n.name, geert@linux-m68k.org, sammy@sammy.net, monstr@monstr.eu, tsbogend@alpha.franken.de, dinguyen@kernel.org, jonas@southpole.se, stefan.kristiansson@saunalahti.fi, shorne@gmail.com, James.Bottomley@HansenPartnership.com, deller@gmx.de, mpe@ellerman.id.au, npiggin@gmail.com, christophe.leroy@csgroup.eu, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, ysato@users.sourceforge.jp, dalias@libc.org, davem@davemloft.net, richard@nod.at, anton.ivanov@cambridgegreys.com, johannes@sipsolutions.net, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, acme@kernel.org, mark.rutland@arm.com, alexander.shishkin@linux.intel.com, jolsa@kernel.org, namhyung@kernel.org, jgross@suse.com, srivatsa@csail.mit.edu, amakhalov@vmware.com, pv-drivers@vmware.com, boris.ostrovsky@oracle.com, chris@zankel.net, jcmvbkbc@gmail.com, rafael@kernel.org, lenb@kernel.org, pavel@ucw.cz, gregkh@linuxfoundation.org, mturquette@baylibre.com, sboyd@kernel.org, daniel.lezcano@linaro.org, lpieralisi@kernel.org, sudeep.holla@arm.com, agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, anup@brainfault.org, thierry.reding@gmail.com, jonathanh@nvidia.com, jacob.jun.pan@linux.intel.com, atishp@atishpatra.org, Arnd Bergmann , yury.norov@gmail.com, andriy.shevchenko@linux.intel.com, linux@rasmusvillemoes.dk, dennis@kernel.org, tj@kernel.org, cl@linux.com, rostedt@goodmis.org, mhiramat@kernel.org, frederic@kernel.org, paulmck@kernel.org, pmladek@suse.com, senozhatsky@chromium.org, john.ogness@linutronix.de, juri.lelli@redhat.com, vincent.guittot@linaro.org, dietmar.eggemann@arm.com, bsegall@google.com, mgorman@suse.de, bristot@redhat.com, vschneid@redhat.com, ryabinin.a.a@gmail.com, glider@google.com, andreyknvl@gmail.com, dvyukov@google.com, vincenzo.frascino@arm.com, Andrew Morton , jpoimboe@kernel.org, linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-omap@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, linux-ia64@vger.kernel.org, loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, openrisc@lists.librecores.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-um@lists.infradead.org, linux-perf-users@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-xtensa@linux-xtensa.org, linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org, linux-clk@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-tegra@vger.kernel.org, linux-arch@vger.kernel.org, linux-mm@kvack.org, linux-trace-kernel@vger.kernel.org, kasan-dev@googlegroups.com, "Rafael J. Wysocki" , Ulf Hansson Subject: [PATCH v3 06/51] cpuidle,tegra: Push RCU-idle into driver References: <20230112194314.845371875@infradead.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: BE98C40002 X-Stat-Signature: f4hipu9w7kg73tg63si8pyngtrtsmuxt X-HE-Tag: 1673553442-438442 X-HE-Meta: U2FsdGVkX1/qocYu2HF6m8aE+B3BLpTBNy2zzBD/bMDK0py28M39lkuUVXn0Q8b+nOhQ3VsGsdRMysUwH8vqOMpCM47T7Ee/kxwjB+VJRqE+bM6xzN65nEP70jnBvMIy/4h0GsfBWMxY0AVcZJmC0d07qfGJHo6EE15AKkkwRt634LOQNqbT7T4tUcAl0eYZe8IAX5uXHE9fzpWBM7zMa6ZkvmFHBrX6yrTg6zbAb2CIp468H8wf2MpaYs1bObods7hnneKDJhgpjyvAt2Fp0p938fIQjU8dDZ8EBdwtCqWgOIvaZx7gORS9tDJIKGrhWTiEq2W7FDJvH8F7m87cvBIHNn4Dv8/uSrhD63eOKNL+2sDag+Gg9ZJBmcz5gHDwjWregFFsbuEvypXqjsZMDlH+bnxaUzRyJ3BLvb4c+Raf53rPmzvpvJ+zOUcpd6u3biVOWiuqaBEiEaUxtd17N9SjsEuSIWYQ33MmcmB7eEWHmLjkw8G5HpAqkE6pI+f6mzCW5GIjcasBrddE0atmo+3feXmTzmWspg8v9C/Cg2at+oaCJw15t4Y1G6Ld/ujPUBagCJDLKP0LlqDLUh//roHaAeKCKDbjcO/kJGWPrjGIBvBuxfs8McpQgvV66IPqre+QFxwncOTEsruLdYP1NEFmOAqMUbqGUX4uz781hMgdpXU1JPafMGspROux9/rEgL35fYdgdYFgZn1GpQlOjd8hYXvtoO/JxCTKGtR6UiK8O4oy4Wx8ZnJRiNSIn4EpJzblkhf8MZCulKvniRURSNRrLd3zV2zw2y7AxXH5LAQEzljfvCcu5d4CA4RMrdfhoz+mB73nVhPgheh3SSNYRaM/Zaeg87HaEeh4tbXgMgyEPVuDet41korbyaVwKsy0vSVoEyHa5N1DxKVvfnTXNn4CVcUr3QKBcBLPzD/GXdxBe/T2fGvEtoYASc4/6gUYvhcqiPQ9HtHV7frBT/b 8LcbICAh KEqaqc3nC2yV3KGtbzhJY9YQgsnaE7R5kh7oFoVBuQoMmG6np9dQy2FfOGHB0s72sGVhMENFAUtY+RcK+6Ya3sRj6GIii0WzFK3lbhbxcx8h8SLwJIz+Ejzka3gbvfJwRr4ryMg+zFbOLOOd4MA9YWu02acANyVEuGcEbSNiJcSGLFrwKHw16Ak685DjsRnJg8bPqw5OLXWY48S4NzEHDB7GH4UK6jgOGu0A5m3anl/nSZwuOJLqhNQwfnG14tXRnxXw9Sm4i1UHf5xdIOo+7S1HhQP8ZKuri/oRhNdr7ykF1Jm0D8B3stAoz2wM25+bVs3YXlSEI0MoLd+TfM9FI48ZaS8eDddTC9pc3+3VSlOmvClNat7NpPm9MjNRt5Evi96zv571Bt14Ku2e6mBbLx5JDzryexqVwiqf5MHW8z9VF7K1a28/kj7ZHd8LvjW8aRRkqHP830Xcbd3ecyC+HGt/Al5xucldxcxSqx+NVShMKaXlhKERLcW3t1sdmuo7lbTGthd6SLKOMFPnS2Rsk2AVI2GiFpUeMVRkzXWbxsvjvHW1C+47KR8fJB8eRu6RJCEZ2HWZXsvnkhwQiyXPO26uKZN35bK6ealn7hNYuBzygv3PDb8atECdLJ5JIPKIdr47e8dcvYq8OJUmnqy2UFw8LeYVGroNt4LHwge0UF+xbWCQkgAPptJVqxzR2BnkdvMI7wpSw9/FG4fx3vQnIWtbzOf49TH5GsrpuSrPJSH0QdfBW86J+4akdjqpZFMt5TJH5WE8UaifV0jqcIwRj9lhHgjXR9sTx9It6hheC49i50Z0kAeIiUCW+03lNYxUoWJuDZ0L7Fs+0bUCgnRjDeMmjjY/xF6+JSoqHUaiokCqXUa6Qr7rgHCkbO8zPPfWJWJNFU8FIf2jvmJzQXuuB8v/eu+mrA1jmTwLM17rUZp/6faTopHG5zPOzc8BiolWNhSE06E3l0RQeMviLei6cV025XELO roOPpKfo ZynFyd5myw6lMoBi6EwibZt9IUvxFmFFBbhA3IF8ZLr0PjYBW/LgOiGHUPlbGgB8z2XePW4YyR8yUvAyd6kVxT3B4e19n12+jp/Veyyw3m0nlmeeryk0zZ4nDwwcKHtDRBcAidhanh/pWc1tWSz+KwnsTClqDJdxWXwDtGb+JRSizat89/Is9Cjq4mf/Do0li2X33uBnjnX8Jh10owRpfq2kx2mno/i2WJFseetuWMujy0iOWazEklt2jYP44HeZAzZYF7OJspT2Q678Fm8ZSbaChwyOwBHl8W0n0BxHmmi7B3pw+jxtR7bVJbwcHnFMOTYoY+fGvHa715gSGRP4QK7ugNH0+gZ0f2jfs3T25qSr2uwBvT/bbLQzgFx92X1+tsWu3dA0S2cABzAriGgBY4el71ubw2ymdjB4dCpjZGqewjN3A0sMsjQm+l4ah8twQmtb9oQZcm5VDxyXaGu8IRzCQUeOX+621mCWfwPilvK7gVTfbjqmN7X+OnfTDmrsir9sxWuxK+cLEUG1CSsyQ+3E7seYiN5nmOGB4lkh6XDK0pQzPfKy4EJ9V6PhBZ6RQehb2UH01nXc7P71QVLmakJ7a/BqZCYZBNQslg4ougdy0xu8ITnNu/Lb7vzKxaBusG2UbbWgho4bjDzK9aXbDMADGeKJUkQ3JH1KDKvu2O0jq/3XqlZd5l6SR50QaAjvT9PAN1n73rq4ekTveobK+Xfc+BIaE0sJyawFTCAsK/eixzL5JUIMwirWN6bpawhxaRQDpPfNgb0toVksb0B0yq8n6dRHMlyqZs5X02yFIYiHWJoK5xjLBWJ8aAlYXE80wbh9S4J6uLBWTBbaxC3cyVGSCNd2E3H4oWj6RjYRp2vleaU7v0llRVCuRK+7ZQw3qEUco/+KUGrBsUQsYp2oOVX1fyz/V9UU2QYcMGQNhZkEIMcvtrEqkErOT8y3mYy6ZsPI3UKqpWl2qGLmNkvgt7JMj2mlU 6iL6kvkd TNu2TKkYrhx6f/WsyHu721uUs/U9KxzG0CWkG4HeNvMbT2jFK568scLyLXM8EtAUkgy+/5hSROK6L0Mms9zpjqPsZOyzpJwRx9WmEd3cfA3ZHIk7sWtZBr2JIsb0q9srVgMH7txbXRlZcVsyYr0pXJG94dKwtGFkEAHTfHyDg3Yv32sgimhN6UgvMNj2Wy4r3puGRqB/txqu3NbpHqqCwH4tV9C17mBm3qramOOv9qPQLQQtj+CNawVV3GA/K29Nlr8wlXj3QFOIPTDU8c+kA4UJJkpieUVtIOkUr3in309OuWGx8hmfD4De8pcMa+1IIcNuV2DFoMFKhCnez1OgKIQsN/S3ONyUHSkblEyQ0RT34dk25IAIRtePTZedrvUJPE9w23ZRnPboWTvMJ+0FeZn/J7zR4ECP9uxqelBR+19f+CUzxcFlnQ0L9QVefD6NbPV78VyfjubIEpMSPBsunB8YIv+nznOkMSSXwsy9hDabYxEvJOz4eYsCBZ5tUtqLe/L+j3W0wQj9vhoBi56dedz7kaztRNZgjSvGD9+TkE1Ro3U02hPmFfKK05XpZmkgQnUJM+EdqMAUyqHaeCPog5E4Usdb8MCGEwB7Uur9n/n6dz3YQiYQL3LWO+QdchVVAaWYye7+0u5A9nL5P0pusYpfRu8ZbhHQ6U1tutPbXU0mCIY+yK5sC0Z2oOf4y9Pe+jAz8Ym2s9aMdD/UGaC5PSBx0d2HvK2rCzUW2q5jQS/FufsooZnges2yXUInibHdQ8H267ufwR+AEKQmdwlk1yPRhm62Yz5681Kl+6HDcA8KUJMM6hTmUQ0p2H/bo1uKoskrMT/UDAjyO16fbJqphBqeZjPqceYuI/FhDxKMzruvS4NJJ3hlm6Bq6/kwFMqMP8bGn8nlwqXQXQArOGLe3Veu5DEghSApAKSb7dTT8tXslY/eLRhrKUT2p1HudgnjaTK4Ty552pmh4qPjYoJRSga6muG/4 YANtWOQG 4ho3q97+KDzNBI+UOyPtsn3Vxq28QUyoHEgCkTHsf6Tcii3LCbkXtOOiDsv29wnIirH4tjENb35iKHTPSIcBihgbwyAIIZSTAU7CGcBnHAmA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Doing RCU-idle outside the driver, only to then temporarily enable it again, at least twice, before going idle is daft. Notably once implicitly through the cpu_pm_*() calls and once explicitly doing RCU_NONIDLE(). Signed-off-by: Peter Zijlstra (Intel) Reviewed-by: Frederic Weisbecker Acked-by: Rafael J. Wysocki Tested-by: Tony Lindgren Tested-by: Ulf Hansson --- drivers/cpuidle/cpuidle-tegra.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) --- a/drivers/cpuidle/cpuidle-tegra.c +++ b/drivers/cpuidle/cpuidle-tegra.c @@ -180,9 +180,11 @@ static int tegra_cpuidle_state_enter(str } local_fiq_disable(); - RCU_NONIDLE(tegra_pm_set_cpu_in_lp2()); + tegra_pm_set_cpu_in_lp2(); cpu_pm_enter(); + ct_idle_enter(); + switch (index) { case TEGRA_C7: err = tegra_cpuidle_c7_enter(); @@ -197,8 +199,10 @@ static int tegra_cpuidle_state_enter(str break; } + ct_idle_exit(); + cpu_pm_exit(); - RCU_NONIDLE(tegra_pm_clear_cpu_in_lp2()); + tegra_pm_clear_cpu_in_lp2(); local_fiq_enable(); return err ?: index; @@ -226,6 +230,7 @@ static int tegra_cpuidle_enter(struct cp struct cpuidle_driver *drv, int index) { + bool do_rcu = drv->states[index].flags & CPUIDLE_FLAG_RCU_IDLE; unsigned int cpu = cpu_logical_map(dev->cpu); int ret; @@ -233,9 +238,13 @@ static int tegra_cpuidle_enter(struct cp if (dev->states_usage[index].disable) return -1; - if (index == TEGRA_C1) + if (index == TEGRA_C1) { + if (do_rcu) + ct_idle_enter(); ret = arm_cpuidle_simple_enter(dev, drv, index); - else + if (do_rcu) + ct_idle_exit(); + } else ret = tegra_cpuidle_state_enter(dev, index, cpu); if (ret < 0) { @@ -285,7 +294,8 @@ static struct cpuidle_driver tegra_idle_ .exit_latency = 2000, .target_residency = 2200, .power_usage = 100, - .flags = CPUIDLE_FLAG_TIMER_STOP, + .flags = CPUIDLE_FLAG_TIMER_STOP | + CPUIDLE_FLAG_RCU_IDLE, .name = "C7", .desc = "CPU core powered off", }, @@ -295,6 +305,7 @@ static struct cpuidle_driver tegra_idle_ .target_residency = 10000, .power_usage = 0, .flags = CPUIDLE_FLAG_TIMER_STOP | + CPUIDLE_FLAG_RCU_IDLE | CPUIDLE_FLAG_COUPLED, .name = "CC6", .desc = "CPU cluster powered off",