From mboxrd@z Thu Jan 1 00:00:00 1970 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 CF956C61DB3 for ; Thu, 12 Jan 2023 19:57:33 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A67778E000C; Thu, 12 Jan 2023 14:57:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 88DDE8E000B; 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 DE5408E0005; Thu, 12 Jan 2023 14:57:25 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 9C5308E0007 for ; Thu, 12 Jan 2023 14:57:25 -0500 (EST) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 55EC0806FB for ; Thu, 12 Jan 2023 19:57:25 +0000 (UTC) X-FDA: 80347206450.16.AF86D6F Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf18.hostedemail.com (Postfix) with ESMTP id 6AC2C1C0010 for ; Thu, 12 Jan 2023 19:57:21 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=f8TroYQi; spf=none (imf18.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org; dmarc=none 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=A36GBNDeZcYlVC8rkRiSg7Fkb66ciqPmteGiazOXnKo=; b=WzkzayQtivJMq9rw0npBPa/5omEvNBKJ9CyLPVFa8QcEKCH9y2A1Y4J1FVwnT2AnkQoCUZ KmagetvQjDOPgE7FvLFmnMmKlcF1Mq+6OK6ANny2Cq2DPhw9D3D81kg5fhdvEd6FdXBHpM Jlk+7PuwNCjvejsjV4UWjePSA7uFTh0= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=f8TroYQi; spf=none (imf18.hostedemail.com: domain of peterz@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=peterz@infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1673553443; a=rsa-sha256; cv=none; b=L2lQCo9RqdeO/XSsccKq3N9g2rhdEnhB70rcY9t1FL1BTNju15+WeDlYMfQ0zlD489+cFx /D3+qLx7pi6mPxR7r1SSXRv77B+EbK0G3cCSP9Eq4azSBBS9fI6PgDqblv4sOAEzbHyhcB xVGY4t2rkFsVCw1zVKnRxXdWlwvtQGM= 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=A36GBNDeZcYlVC8rkRiSg7Fkb66ciqPmteGiazOXnKo=; b=f8TroYQijIlc9MuWlP4LwBLqev fPz8ciZ+SdwGgd+2dJNYnnpQQfPyL98wQLCxEdxcxA7jXGonUiF59Vm/+fX/v7qM8g5FLUmOTcYTd hqPpoLIDep8jXNb4QI+vppOcG4nANADValU324FWAQyr0xAZKKscT0Fj8Jrh7UyUfLwpsYnsOEWNz eQRPSdLyPwoJR6DYI9crm2nvFg9liwcgMxc46hAGZACQUxHgHL8kM0Lc1lLwF9174dIfxotwuNWx0 KkzVpLQtlnyo1ad4E13LtdvMggDa3/MeFTlRbijDXhqwH1GQuZNTKtNRZ9gryMA3HVyhHm3enhGOO s4VYrYww==; 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 1pG3hZ-005Odj-TU; Thu, 12 Jan 2023 19:57:30 +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 4AEF830341C; Thu, 12 Jan 2023 20:57:13 +0100 (CET) Received: by hirez.programming.kicks-ass.net (Postfix, from userid 0) id DFC6A2CCF1F66; Thu, 12 Jan 2023 20:57:07 +0100 (CET) Message-ID: <20230112195540.373461409@infradead.org> User-Agent: quilt/0.66 Date: Thu, 12 Jan 2023 20:43:31 +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 17/51] objtool/idle: Validate __cpuidle code as noinstr References: <20230112194314.845371875@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: 6AC2C1C0010 X-Stat-Signature: ceayd41wymn6t56j884cix1jdjzf4c6u X-Rspam-User: X-HE-Tag: 1673553441-64011 X-HE-Meta: U2FsdGVkX1+72GmJm5uEjKWqdttAm4LKFgssDm+f5pJUOd8Oiw5AryzK91h0EktqDd6pGAWygLzOlJavm9lgUjbs6ApWwJ0DprPryCJzmAC648HcnkNR6jts6l3jBnQHa/dsB7F0bHJ6q8ZYcTxXDMpw/vhU24yszIPsyQr3pBZ0qEPrX+XDnLgE4Yo1n43ttuPKs5RWmvNKTLqRylX3cwvYOFLyqit1tV2mLSPJi+yjGJBE0mUgus2Jh52vyMlV5Aa2R1f7Qruibtqkzt8JLKAQvbgDDYbPm/gtTlQFFEOYosIkY79Xiu3M0nYQcM2AeI8oA0Rt1qaCFFoQNWED2gg2swkoLC7EW6fKpBhzB0yCTap1QNzZxyja62zvpJWqHIfGcnIhx6o82mXDW/k4F3ME7aD1YCmDSvGADIj9l7BKCMzRgqhPtL8zLWxxmWcDvex0YIXcC4aH+/kBVlcQUmiKINNVt6dAUW4kDNKyGOT9Zq/sWcnGeEXfTVVAUGpskeYwp6/QGcKJpOEz2cLQgFnQGN9Y8qilw7etHqSsGs1SvYh/fN0rUMIYepPDwz8GFrVTp0fKwx/jmn9RgeF+Vvb9Cwb3V6XXkIxC5XCz5t0ZF3eqXWw3h7CuJC7fwhJURArQKhJ3DpmFrUV9OqxHvrIvFuY6a6qfEVp7XE2NsW3tlWs/ykwfbe6nEvtpVBwnVfrmfpFYmVT56icZSmfPFvLXjR0VRZnJHgJdvq4B8wLN4DdlF86/lXDI2GDXA/bBDYTX75T5daImPvjLYemDGDpqmVzzbO3IstTc3MJlPM5ugeG+XtO2z4XYgaTTncS6cjFoUSTvX369cKYxhK3ZgEyLlddYhN1fLtAJ7aMMZgzTxIju5rXMSfslcLCdU1yslPYGQn8brYV408tNxvY7iH1rqk68EgRb1EYazfLmXiGvI396bMe1gS+XAijotGH/t6HGURdZr75Bt4nTpk8 dkq/ea4z r1XLHvB/Eh2DXPBi62XDQ2+0DZfhTB9D+X5Y0Dqvkc8yEHjzo8JWB5Bv9aQ0s0SnURfzsUBl8hhUE4odoJxQB4jsNIldXsEiyjxIJDAx7YSloap8LFm9aVFqULwOK85/+sXWuxCmvzCBtu0BNSBLBs6j6+ovWWyzmQG6PH1GKAJ9m99+6aeB+y1hKPA+xbkr+JMI+dZlRZ+1zHcp/VpX6wfgph2Ql6xxAyResjOYX3BWHBjHyyhsI5QkUrkzIs59g1hatIJkDaa4fwMNbKDZiS64ozi7WHN0Wd9mJ/vbFUfFO5PGSQl13Jolinl6oKIhwi+Nuw3lc9hmLiorvf8QGr/krCHMZls88j0Zgj+S+d3WUVfOYOO3fcUvUBwV/89KAAjeED4YaAkxxxx7/326uMwEPndVHQEQrxnLARaMny1XekpvaG34xVCeRofZ20V+xxp8Iq/yN1Scy7t2lMJ/0ysatmnW3J6cLiMYKD8QekBB5NWNLnmbeYP/JxDz+YsIASmshXFt/wVswLfwJU2dGsKgAxC+AYZrZsfkARaV5P2mZoRYzi/nw9etgg0AGhyXb1+409WFmoCvX07spIjr9Og4xhtkcnI86i6VoCDMV4G4zOQH9U6XMPOM7skxBbOqogOQnKsjgeII1psA/cxKUXyLWFtAPLMMhuQgorxercaPudGDiSfsnkcYGazcZevJuix8QIJYVG5qrNGhEPbnlHCraO3FBPwbpn0LkgQR7LP15gtLPVSrNNyYQs63SvjAz1BugSTMRDtxXmDrtjSfpPUDhQ24Ngn4cPy89qfs2eaqZgba7PVS+iaNL4BbqFCdps6ymjbGXUbKCCif2KVjPXd92/hOarERIc/NWrmpxE1K2GkmY4ayYV52VcK9LVcFTFr4Yz6spV5cMV0+pIDmi3N2+cJJUCUm6vs7dPSnnjyenyFHijIFeApJiabKe8bcgr0gj0gSDMQ8cKxIFcC/Db4BizKZP 5FXMwM2D DqtvZmWE8Ykfo1qBUlJEezA1V5TSedPf9Pm46cgHcdMeRcP/RnOny4+IJJGf3R6VUIRCIoZZuTonPUf23SUuG7C97ZAl4HdX2di04bks5beClqKkp1sa5RDgaJLXWGYFb9ocOfN8jjv1ieeSnBMf3gTzDu7Skmi6gY7vZ7Cc57H26rXKrDVU2iKWCkkDOUrpEczZujDw/bFlfFkz6LoAlWGKlq1U3+GOwCwPpwq1xDISOZWZJJxZUz0rtgah0mKsbl08AKl2TEDrEZLY9axledsXQT6JJL4BYJ617eeuyvnUPvk6gAEyzo6rwNufrAZH+Z7uhgKUpMbjvx02Sef5krYXs5HrLOzhF+2C958W9oJKCc5aUdxMmLzwpuJ2Ag+QBfHjjppfAyzrKCjO3ns5iPLFF8S2SlWe88ZyvNoMnDcrSJOh+jh6KFVHSjq3RdZSgiRRwOF5llajhgIiHcQcB0H51yyIryoYGZ5v0ZXab7Bj8Yaq0HmyDG5g0HrG/+HXCUXCn7JEqnQ5+VGyXxgNJ4QN1TLvPgENtDpDq0nDaL4OsviimmPL9CIbRm7KiIdmAENEeEGVWUb0BLBPL0eU8ZmGn2wseC0OB10HqXs/9A/G3/nhkeLWd6fzFgmwqz66YI9HRfJQ994c30pgZ/UY0G+chxPbXaXjOfAKgVG+OwA3Ci5CuONlmmjcjwRGVnAele4oikrmCcY6DqtyOFP35B28+oSQi5QFMsEkdRCt7CjE0q4DzGy60DusHZeecGxHE+PIlObinJeH4H/ltEmfuZXKxwMvTm0/EDjPPJ3AIrBxKWI44KlWVZQpbBHhuLBMkQrqZROLsFU31Y9PWraCRCgQpI2Bw5VIObITysmmafZrzfld7x3nGNYe/0n3VLkn2gCi72w34kDwRB3qBOu5MNn7kwZHPLuInSmZGc0fUD1iVnJKXN/EGs3LEZEhBulU+z+mP6tMoiy/jSGGaJkUyI2mupD7s +oJ19eat JW4w4GiB2r66m+/pe/pjBuiPEpxdDyCcwjo70aa8zyY50M5ARNAOhi/Y+5dXLwLIyP5n/fbT/PGcEki6Fzjr7/Mx+Z8yQR3h4vsrYFdNJHGbnGt1AlF1r98nYTYwfEEreF3Or5gP10g2sGDvMK5aM2DF0K1/ejIqDhlUzPcdqGK/wEneupibiYhByVXjfcH1O1gKHy2q3kiF8mCdUpb8iR0/44IFq7SHoo45pDu/WZjPwRTjhlcMrDSOIukcGThuwxfUii6Cw0i87RwQnaCxtVqAmgJptd6FxMT4NMtSH1t7NQ7NrvsjF9bgD8YTid4KIqdAT82Z4y6NbiPBdgFXdNZnHdGXw0/LbyDbBOYqhlBA+MHUPb1TtyXrsNEPzX46WeaU5018qpAN7uBPQcmeGr03czDeUMWHe8UiZDZXmLeRKXhvn2g6OrYaHuc94PHhDQCBqMNovZKBU3/y2HFV0P5EnFbpIoQVoWkr1R2vIaUX2/tatwHsX6ndCRApVybC8ge3yRrCh9cqVtnX+s/QELoupDloZxsMT8C8NwWr8UuCuaa3KQqlFKBWF1mtfLeFEXTBrul4XFaVZABKhT4Uc7dlqVr5AzNWDJpDwOmeU3OvKjCgeBSJcBGPtmx8OMons/ctM6gVqhVGYdb3luVHJm2aYHmqxOtQ32nFAlfZKh0aTCWp5WPbdsF1wkDGNCW+oBrQBHfLPScLD6VrHxrTKuq+e+oWUPrOV8uNdX9m5CXRmOW0th+NP0TykW98JRldTCIyGqjqcrkpolLI2schdQNXNd1xnewF18IHHWHP1dkyvQgqpwlkuAt0Yny5GJ3cS15jJZhfqApc8PSe8ycW2MFgLjubsK7dNaLX75LmzRDPnNukj8e1H27fNGqhdDQfMTnwauMgnPDCLdQrbrHudBQ2ztOO3ADYPpqMDUGv3t2GJRqotBQgWSTiHa6ve3ISxj+yVFHZVfofEPGE4VTev5HVOL0lG 5BHP5v9h QD3MUGyiLxjuQduCGejRU4IIMhyWSEpn50sbk9O6xgj030Qwrgo8Kdt06Bo8Ph99QJCRCX+NUYsyjLBp411WkXaK7xN/g/lpkJUJ+HKULtiW/rzRx3ybWObMKvEhf911tixaYd6+jkvkgFh8FhYkHd 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: Idle code is very like entry code in that RCU isn't available. As such, add a little validation. Signed-off-by: Peter Zijlstra (Intel) Acked-by: Geert Uytterhoeven Acked-by: Rafael J. Wysocki Acked-by: Frederic Weisbecker Tested-by: Tony Lindgren Tested-by: Ulf Hansson --- arch/alpha/kernel/vmlinux.lds.S | 1 - arch/arc/kernel/vmlinux.lds.S | 1 - arch/arm/include/asm/vmlinux.lds.h | 1 - arch/arm64/kernel/vmlinux.lds.S | 1 - arch/csky/kernel/vmlinux.lds.S | 1 - arch/hexagon/kernel/vmlinux.lds.S | 1 - arch/ia64/kernel/vmlinux.lds.S | 1 - arch/loongarch/kernel/vmlinux.lds.S | 1 - arch/m68k/kernel/vmlinux-nommu.lds | 1 - arch/m68k/kernel/vmlinux-std.lds | 1 - arch/m68k/kernel/vmlinux-sun3.lds | 1 - arch/microblaze/kernel/vmlinux.lds.S | 1 - arch/mips/kernel/vmlinux.lds.S | 1 - arch/nios2/kernel/vmlinux.lds.S | 1 - arch/openrisc/kernel/vmlinux.lds.S | 1 - arch/parisc/kernel/vmlinux.lds.S | 1 - arch/powerpc/kernel/vmlinux.lds.S | 1 - arch/riscv/kernel/vmlinux-xip.lds.S | 1 - arch/riscv/kernel/vmlinux.lds.S | 1 - arch/s390/kernel/vmlinux.lds.S | 1 - arch/sh/kernel/vmlinux.lds.S | 1 - arch/sparc/kernel/vmlinux.lds.S | 1 - arch/um/kernel/dyn.lds.S | 1 - arch/um/kernel/uml.lds.S | 1 - arch/x86/include/asm/irqflags.h | 11 ++++------- arch/x86/include/asm/mwait.h | 2 +- arch/x86/kernel/vmlinux.lds.S | 1 - arch/xtensa/kernel/vmlinux.lds.S | 1 - include/asm-generic/vmlinux.lds.h | 9 +++------ include/linux/compiler_types.h | 8 ++++++-- include/linux/cpu.h | 3 --- tools/objtool/check.c | 13 +++++++++++++ 32 files changed, 27 insertions(+), 45 deletions(-) --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S @@ -27,7 +27,6 @@ SECTIONS HEAD_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT *(.fixup) *(.gnu.warning) --- a/arch/arc/kernel/vmlinux.lds.S +++ b/arch/arc/kernel/vmlinux.lds.S @@ -85,7 +85,6 @@ SECTIONS _stext = .; TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/arm/include/asm/vmlinux.lds.h +++ b/arch/arm/include/asm/vmlinux.lds.h @@ -96,7 +96,6 @@ SOFTIRQENTRY_TEXT \ TEXT_TEXT \ SCHED_TEXT \ - CPUIDLE_TEXT \ LOCK_TEXT \ KPROBES_TEXT \ ARM_STUBS_TEXT \ --- a/arch/arm64/kernel/vmlinux.lds.S +++ b/arch/arm64/kernel/vmlinux.lds.S @@ -175,7 +175,6 @@ SECTIONS ENTRY_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT HYPERVISOR_TEXT --- a/arch/csky/kernel/vmlinux.lds.S +++ b/arch/csky/kernel/vmlinux.lds.S @@ -34,7 +34,6 @@ SECTIONS SOFTIRQENTRY_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT *(.fixup) --- a/arch/hexagon/kernel/vmlinux.lds.S +++ b/arch/hexagon/kernel/vmlinux.lds.S @@ -41,7 +41,6 @@ SECTIONS IRQENTRY_TEXT SOFTIRQENTRY_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT *(.fixup) --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S @@ -51,7 +51,6 @@ SECTIONS { __end_ivt_text = .; TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/loongarch/kernel/vmlinux.lds.S +++ b/arch/loongarch/kernel/vmlinux.lds.S @@ -42,7 +42,6 @@ SECTIONS .text : { TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/m68k/kernel/vmlinux-nommu.lds +++ b/arch/m68k/kernel/vmlinux-nommu.lds @@ -48,7 +48,6 @@ SECTIONS { IRQENTRY_TEXT SOFTIRQENTRY_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT *(.fixup) . = ALIGN(16); --- a/arch/m68k/kernel/vmlinux-std.lds +++ b/arch/m68k/kernel/vmlinux-std.lds @@ -19,7 +19,6 @@ SECTIONS IRQENTRY_TEXT SOFTIRQENTRY_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT *(.fixup) *(.gnu.warning) --- a/arch/m68k/kernel/vmlinux-sun3.lds +++ b/arch/m68k/kernel/vmlinux-sun3.lds @@ -19,7 +19,6 @@ SECTIONS IRQENTRY_TEXT SOFTIRQENTRY_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT *(.fixup) *(.gnu.warning) --- a/arch/microblaze/kernel/vmlinux.lds.S +++ b/arch/microblaze/kernel/vmlinux.lds.S @@ -36,7 +36,6 @@ SECTIONS { EXIT_TEXT EXIT_CALL SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S @@ -61,7 +61,6 @@ SECTIONS .text : { TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/nios2/kernel/vmlinux.lds.S +++ b/arch/nios2/kernel/vmlinux.lds.S @@ -24,7 +24,6 @@ SECTIONS .text : { TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT IRQENTRY_TEXT SOFTIRQENTRY_TEXT --- a/arch/openrisc/kernel/vmlinux.lds.S +++ b/arch/openrisc/kernel/vmlinux.lds.S @@ -52,7 +52,6 @@ SECTIONS _stext = .; TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S @@ -86,7 +86,6 @@ SECTIONS TEXT_TEXT LOCK_TEXT SCHED_TEXT - CPUIDLE_TEXT KPROBES_TEXT IRQENTRY_TEXT SOFTIRQENTRY_TEXT --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S @@ -111,7 +111,6 @@ SECTIONS #endif NOINSTR_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/riscv/kernel/vmlinux-xip.lds.S +++ b/arch/riscv/kernel/vmlinux-xip.lds.S @@ -39,7 +39,6 @@ SECTIONS _stext = .; TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT ENTRY_TEXT --- a/arch/riscv/kernel/vmlinux.lds.S +++ b/arch/riscv/kernel/vmlinux.lds.S @@ -42,7 +42,6 @@ SECTIONS _stext = .; TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT ENTRY_TEXT --- a/arch/s390/kernel/vmlinux.lds.S +++ b/arch/s390/kernel/vmlinux.lds.S @@ -42,7 +42,6 @@ SECTIONS HEAD_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/sh/kernel/vmlinux.lds.S +++ b/arch/sh/kernel/vmlinux.lds.S @@ -29,7 +29,6 @@ SECTIONS HEAD_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/sparc/kernel/vmlinux.lds.S +++ b/arch/sparc/kernel/vmlinux.lds.S @@ -50,7 +50,6 @@ SECTIONS HEAD_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT IRQENTRY_TEXT --- a/arch/um/kernel/dyn.lds.S +++ b/arch/um/kernel/dyn.lds.S @@ -74,7 +74,6 @@ SECTIONS _stext = .; TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT IRQENTRY_TEXT SOFTIRQENTRY_TEXT --- a/arch/um/kernel/uml.lds.S +++ b/arch/um/kernel/uml.lds.S @@ -35,7 +35,6 @@ SECTIONS _stext = .; TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT IRQENTRY_TEXT SOFTIRQENTRY_TEXT --- a/arch/x86/include/asm/irqflags.h +++ b/arch/x86/include/asm/irqflags.h @@ -8,9 +8,6 @@ #include -/* Provide __cpuidle; we can't safely include */ -#define __cpuidle __section(".cpuidle.text") - /* * Interrupt control: */ @@ -45,13 +42,13 @@ static __always_inline void native_irq_e asm volatile("sti": : :"memory"); } -static inline __cpuidle void native_safe_halt(void) +static __always_inline void native_safe_halt(void) { mds_idle_clear_cpu_buffers(); asm volatile("sti; hlt": : :"memory"); } -static inline __cpuidle void native_halt(void) +static __always_inline void native_halt(void) { mds_idle_clear_cpu_buffers(); asm volatile("hlt": : :"memory"); @@ -84,7 +81,7 @@ static __always_inline void arch_local_i * Used in the idle loop; sti takes one instruction cycle * to complete: */ -static inline __cpuidle void arch_safe_halt(void) +static __always_inline void arch_safe_halt(void) { native_safe_halt(); } @@ -93,7 +90,7 @@ static inline __cpuidle void arch_safe_h * Used when interrupts are already enabled or to * shutdown the processor: */ -static inline __cpuidle void halt(void) +static __always_inline void halt(void) { native_halt(); } --- a/arch/x86/include/asm/mwait.h +++ b/arch/x86/include/asm/mwait.h @@ -105,7 +105,7 @@ static inline void __sti_mwait(unsigned * New with Core Duo processors, MWAIT can take some hints based on CPU * capability. */ -static inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx) +static __always_inline void mwait_idle_with_hints(unsigned long eax, unsigned long ecx) { if (static_cpu_has_bug(X86_BUG_MONITOR) || !current_set_polling_and_test()) { if (static_cpu_has_bug(X86_BUG_CLFLUSH_MONITOR)) { --- a/arch/x86/kernel/vmlinux.lds.S +++ b/arch/x86/kernel/vmlinux.lds.S @@ -129,7 +129,6 @@ SECTIONS HEAD_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT KPROBES_TEXT SOFTIRQENTRY_TEXT --- a/arch/xtensa/kernel/vmlinux.lds.S +++ b/arch/xtensa/kernel/vmlinux.lds.S @@ -125,7 +125,6 @@ SECTIONS ENTRY_TEXT TEXT_TEXT SCHED_TEXT - CPUIDLE_TEXT LOCK_TEXT *(.fixup) } --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -580,6 +580,9 @@ ALIGN_FUNCTION(); \ __noinstr_text_start = .; \ *(.noinstr.text) \ + __cpuidle_text_start = .; \ + *(.cpuidle.text) \ + __cpuidle_text_end = .; \ __noinstr_text_end = .; /* @@ -620,12 +623,6 @@ *(.spinlock.text) \ __lock_text_end = .; -#define CPUIDLE_TEXT \ - ALIGN_FUNCTION(); \ - __cpuidle_text_start = .; \ - *(.cpuidle.text) \ - __cpuidle_text_end = .; - #define KPROBES_TEXT \ ALIGN_FUNCTION(); \ __kprobes_text_start = .; \ --- a/include/linux/compiler_types.h +++ b/include/linux/compiler_types.h @@ -232,11 +232,15 @@ struct ftrace_likely_data { #endif /* Section for code which can't be instrumented at all */ -#define noinstr \ - noinline notrace __attribute((__section__(".noinstr.text"))) \ +#define __noinstr_section(section) \ + noinline notrace __attribute((__section__(section))) \ __no_kcsan __no_sanitize_address __no_profile __no_sanitize_coverage \ __no_sanitize_memory +#define noinstr __noinstr_section(".noinstr.text") + +#define __cpuidle __noinstr_section(".cpuidle.text") + #endif /* __KERNEL__ */ #endif /* __ASSEMBLY__ */ --- a/include/linux/cpu.h +++ b/include/linux/cpu.h @@ -176,9 +176,6 @@ void __noreturn cpu_startup_entry(enum c void cpu_idle_poll_ctrl(bool enable); -/* Attach to any functions which should be considered cpuidle. */ -#define __cpuidle __section(".cpuidle.text") - bool cpu_in_idle(unsigned long pc); void arch_cpu_idle(void); --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -376,6 +376,7 @@ static int decode_instructions(struct ob if (!strcmp(sec->name, ".noinstr.text") || !strcmp(sec->name, ".entry.text") || + !strcmp(sec->name, ".cpuidle.text") || !strncmp(sec->name, ".text.__x86.", 12)) sec->noinstr = true; @@ -3361,6 +3362,12 @@ static inline bool noinstr_call_dest(str return true; /* + * If the symbol is a static_call trampoline, we can't tell. + */ + if (func->static_call_tramp) + return true; + + /* * The __ubsan_handle_*() calls are like WARN(), they only happen when * something 'BAD' happened. At the risk of taking the machine down, * let them proceed to get the message out. @@ -4155,6 +4162,12 @@ static int validate_noinstr_sections(str if (sec) { warnings += validate_section(file, sec); warnings += validate_unwind_hints(file, sec); + } + + sec = find_section_by_name(file->elf, ".cpuidle.text"); + if (sec) { + warnings += validate_section(file, sec); + warnings += validate_unwind_hints(file, sec); } return warnings;