From: Stefan Agner <stefan@agner.ch> To: Robin Murphy <robin.murphy@arm.com> Cc: arm@kernel.org, arnd@arndb.de, linux@armlinux.org.uk, ard.biesheuvel@linaro.org, nicolas.pitre@linaro.org, marc.zyngier@arm.com, behanw@converseincode.com, keescook@chromium.org, Bernhard.Rosenkranzer@linaro.org, mka@chromium.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [RESEND PATCH v2] bus: arm-cci: use asm unreachable Date: Tue, 08 May 2018 15:01:53 +0200 [thread overview] Message-ID: <ec78df47e392cfae784bc492d0426152@agner.ch> (raw) In-Reply-To: <9925be9a-2e24-7ab4-4d7e-cb8f62c422e7@arm.com> On 08.05.2018 14:19, Robin Murphy wrote: > On 08/05/18 12:32, Stefan Agner wrote: >> Mixing asm and C code is not recommended in a naked function by >> gcc and leads to an error when using clang: >> drivers/bus/arm-cci.c:2107:2: error: non-ASM statement in naked >> function is not supported >> unreachable(); >> ^ >> >> While the function is marked __naked it actually properly return >> in asm. There is no need for the unreachable() call. > > The commit title is a bit out-of-date now (I guess it could just be > something like "remove unnecessary unreachable()" now), but the rest > looks OK to me - even GCC clearly doesn't expect anything beyond the > asm to be reachable anyway since the lack of epilogue includes the > lack of any compiler-generated return. I've checked that GCC 7.2 > generates identical object files before and after, other than (for > obvious reasons) the line numbers generated by WANT_WARN_ON_SLOWPATH > for all the WARN()s appearing later in the file. Title: Oops, good catch! Will send a v3. Thanks for checking gcc. -- Stefan > > Reviewed-by: Robin Murphy <robin.murphy@arm.com> > >> Suggested-by: Russell King <linux@arm.linux.org.uk> >> Signed-off-by: Stefan Agner <stefan@agner.ch> >> Acked-by: Nicolas Pitre <nico@linaro.org> >> --- >> drivers/bus/arm-cci.c | 2 -- >> 1 file changed, 2 deletions(-) >> >> diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c >> index 443e4c3fd357..b8184a903583 100644 >> --- a/drivers/bus/arm-cci.c >> +++ b/drivers/bus/arm-cci.c >> @@ -371,8 +371,6 @@ asmlinkage void __naked cci_enable_port_for_self(void) >> [sizeof_struct_cpu_port] "i" (sizeof(struct cpu_port)), >> [sizeof_struct_ace_port] "i" (sizeof(struct cci_ace_port)), >> [offsetof_port_phys] "i" (offsetof(struct cci_ace_port, phys)) ); >> - >> - unreachable(); >> } >> /** >>
WARNING: multiple messages have this Message-ID (diff)
From: stefan@agner.ch (Stefan Agner) To: linux-arm-kernel@lists.infradead.org Subject: [RESEND PATCH v2] bus: arm-cci: use asm unreachable Date: Tue, 08 May 2018 15:01:53 +0200 [thread overview] Message-ID: <ec78df47e392cfae784bc492d0426152@agner.ch> (raw) In-Reply-To: <9925be9a-2e24-7ab4-4d7e-cb8f62c422e7@arm.com> On 08.05.2018 14:19, Robin Murphy wrote: > On 08/05/18 12:32, Stefan Agner wrote: >> Mixing asm and C code is not recommended in a naked function by >> gcc and leads to an error when using clang: >> drivers/bus/arm-cci.c:2107:2: error: non-ASM statement in naked >> function is not supported >> unreachable(); >> ^ >> >> While the function is marked __naked it actually properly return >> in asm. There is no need for the unreachable() call. > > The commit title is a bit out-of-date now (I guess it could just be > something like "remove unnecessary unreachable()" now), but the rest > looks OK to me - even GCC clearly doesn't expect anything beyond the > asm to be reachable anyway since the lack of epilogue includes the > lack of any compiler-generated return. I've checked that GCC 7.2 > generates identical object files before and after, other than (for > obvious reasons) the line numbers generated by WANT_WARN_ON_SLOWPATH > for all the WARN()s appearing later in the file. Title: Oops, good catch! Will send a v3. Thanks for checking gcc. -- Stefan > > Reviewed-by: Robin Murphy <robin.murphy@arm.com> > >> Suggested-by: Russell King <linux@arm.linux.org.uk> >> Signed-off-by: Stefan Agner <stefan@agner.ch> >> Acked-by: Nicolas Pitre <nico@linaro.org> >> --- >> drivers/bus/arm-cci.c | 2 -- >> 1 file changed, 2 deletions(-) >> >> diff --git a/drivers/bus/arm-cci.c b/drivers/bus/arm-cci.c >> index 443e4c3fd357..b8184a903583 100644 >> --- a/drivers/bus/arm-cci.c >> +++ b/drivers/bus/arm-cci.c >> @@ -371,8 +371,6 @@ asmlinkage void __naked cci_enable_port_for_self(void) >> [sizeof_struct_cpu_port] "i" (sizeof(struct cpu_port)), >> [sizeof_struct_ace_port] "i" (sizeof(struct cci_ace_port)), >> [offsetof_port_phys] "i" (offsetof(struct cci_ace_port, phys)) ); >> - >> - unreachable(); >> } >> /** >>
next prev parent reply other threads:[~2018-05-08 13:01 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-05-08 11:32 [RESEND PATCH v2] bus: arm-cci: use asm unreachable Stefan Agner 2018-05-08 11:32 ` Stefan Agner 2018-05-08 12:19 ` Robin Murphy 2018-05-08 12:19 ` Robin Murphy 2018-05-08 13:01 ` Stefan Agner [this message] 2018-05-08 13:01 ` Stefan Agner
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=ec78df47e392cfae784bc492d0426152@agner.ch \ --to=stefan@agner.ch \ --cc=Bernhard.Rosenkranzer@linaro.org \ --cc=ard.biesheuvel@linaro.org \ --cc=arm@kernel.org \ --cc=arnd@arndb.de \ --cc=behanw@converseincode.com \ --cc=keescook@chromium.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=marc.zyngier@arm.com \ --cc=mka@chromium.org \ --cc=nicolas.pitre@linaro.org \ --cc=robin.murphy@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.