All of lore.kernel.org
 help / color / mirror / Atom feed
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();
>>   }
>>     /**
>>

  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: link
Be 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.