mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Alexander Gordeev <agordeev@linux.ibm.com>
To: Heiko Carstens <hca@linux.ibm.com>
Cc: Ilya Leoshkevich <iii@linux.ibm.com>,
	Sven Schnelle <svens@linux.ibm.com>,
	Vasily Gorbik <gor@linux.ibm.com>,
	Christian Borntraeger <borntraeger@linux.ibm.com>,
	linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Subject: Re: [PATCH 2/4] s390/percpu: Drop unused output register from arch_this_cpu_add()
Date: Mon, 12 Oct 2026 15:24:20 +0200	[thread overview]
Message-ID: <4907dbfd-3c5c-483b-be25-b0df83af2d20-agordeev@linux.ibm.com> (raw)
In-Reply-To: <20261012114249.2898572-3-hca@linux.ibm.com>

On Mon, Oct 12, 2026 at 01:42:47PM +0200, Heiko Carstens wrote:
> The laa/laag instructions return the old memory content, but
> arch_this_cpu_add() does not need it. Instead of allocating a dedicated
> output register old__ just to discard the returned value, change the
> val__ constraint from "d" to "+&d" so it is used as input/output
> register.
> 
> This reduces register pressure.

Do you know whether the compiler is may be smart enough to select the
same register for old and val himself?

My concern is if we force the compiler to do so we might lose optimiztions
where the val could be reused after the op.

(CC-ed Ilya)

> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
> ---
>  arch/s390/include/asm/percpu.h | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/arch/s390/include/asm/percpu.h b/arch/s390/include/asm/percpu.h
> index dfab41b43b8b..fd0a3a9951ce 100644
> --- a/arch/s390/include/asm/percpu.h
> +++ b/arch/s390/include/asm/percpu.h
> @@ -188,7 +188,7 @@ do {										\
>  	typedef typeof(pcp) pcp_op_T__;						\
>  	union register_pair rp__;						\
>  	pcp_op_T__ val__ = (val);						\
> -	pcp_op_T__ old__, *ptr__;						\
> +	pcp_op_T__ *ptr__;							\
>  										\
>  	ptr__ = PERCPU_PTR(&(pcp));						\
>  	if (__builtin_constant_p(val__) &&					\
> @@ -209,12 +209,12 @@ do {										\
>  		asm_inline volatile(						\
>  			__PCPU_BEGIN("%[lcreg]","%[lcoff]","%[ptr__]",		\
>  				     "%[pair__]","%N[pair__]")			\
> -			op1 "   %[old__],%[val__],0(%N[pair__])\n"		\
> +			op1 "   %[val__],%[val__],0(%N[pair__])\n"		\
>  			__PCPU_END("%[lcreg]")					\
> -			: [old__] "=&d" (old__), [pair__] "=&a" (rp__.pair),	\
> +			: [val__] "+&d" (val__), [pair__] "=&a" (rp__.pair),	\
>  			  "+m" (*ptr__),					\
>  			  "=m" (((struct lowcore *)0)->percpu_register)		\
> -			: [val__] "d" (val__), [ptr__] "a" (ptr__),		\
> +			: [ptr__] "a" (ptr__),					\
>  			  [lcreg] "i" (LC_PERCPU_REGISTER),			\
>  			  [lcoff] "i" (LC_PERCPU_OFFSET),			\
>  			  "m" (((struct lowcore *)0)->percpu_offset)		\
> -- 
> 2.53.0
> 

  reply	other threads:[~2026-10-12 13:24 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-12 11:42 [PATCH 0/4] s390/percpu: More small improvements Heiko Carstens
2026-10-12 11:42 ` [PATCH 1/4] s390/percpu: Use asm_inline for arch_this_cpu_add() Heiko Carstens
2026-10-12 12:41   ` Alexander Gordeev
2026-10-12 11:42 ` [PATCH 2/4] s390/percpu: Drop unused output register from arch_this_cpu_add() Heiko Carstens
2026-10-12 13:24   ` Alexander Gordeev [this message]
2026-10-12 14:16     ` Heiko Carstens
2026-10-12 14:34   ` Alexander Gordeev
2026-10-12 11:42 ` [PATCH 3/4] s390/percpu: Drop unused output register from arch_this_cpu_to_op() Heiko Carstens
2026-10-12 14:35   ` Alexander Gordeev
2026-10-12 11:42 ` [PATCH 4/4] s390/percpu: Implement this_cpu_try_cmpxchg() Heiko Carstens
2026-10-12 15:11   ` Alexander Gordeev

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=4907dbfd-3c5c-483b-be25-b0df83af2d20-agordeev@linux.ibm.com \
    --to=agordeev@linux.ibm.com \
    --cc=borntraeger@linux.ibm.com \
    --cc=gor@linux.ibm.com \
    --cc=hca@linux.ibm.com \
    --cc=iii@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=svens@linux.ibm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®