All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Rutland <mark.rutland@arm.com>
To: George Guo <dongtai.guo@linux.dev>
Cc: peterz@infradead.org, jpoimboe@kernel.org, jbaron@akamai.com,
	rostedt@goodmis.org, ardb@kernel.org, catalin.marinas@arm.com,
	will@kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, George Guo <guodongtai@kylinos.cn>
Subject: Re: [PATCH 1/1] arm64: optimize code duplication in arch_static_branch/_jump function
Date: Mon, 22 Apr 2024 10:24:46 +0100	[thread overview]
Message-ID: <ZiYs3itsmdOmuPq4@FVFF77S0Q05N> (raw)
In-Reply-To: <20240422063853.3568733-1-dongtai.guo@linux.dev>

On Mon, Apr 22, 2024 at 02:38:53PM +0800, George Guo wrote:
> From: George Guo <guodongtai@kylinos.cn>
> 
> Extracted the jump table definition code from the arch_static_branch and
> arch_static_branch_jump functions into a macro JUMP_TABLE_ENTRY to reduce
> code duplication and improve readability.

The commit title says this is an optimization, but the commit message says this
is a cleanup (and this clearly is not an optimization).

This seems to be copying what x86 did in commit:

  e1aa35c4c4bc71e4 ("jump_label, x86: Factor out the __jump_table generation")

... where the commit message is much clearer.

> 
> Signed-off-by: George Guo <guodongtai@kylinos.cn>
> ---
>  arch/arm64/include/asm/jump_label.h | 19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/jump_label.h b/arch/arm64/include/asm/jump_label.h
> index 6aafbb789991..69407b70821e 100644
> --- a/arch/arm64/include/asm/jump_label.h
> +++ b/arch/arm64/include/asm/jump_label.h
> @@ -15,16 +15,19 @@
>  
>  #define JUMP_LABEL_NOP_SIZE		AARCH64_INSN_SIZE
>  
> +#define JUMP_TABLE_ENTRY				\
> +	 ".pushsection	__jump_table, \"aw\"	\n\t"	\
> +	 ".align	3			\n\t"	\
> +	 ".long		1b - ., %l[l_yes] - .	\n\t"	\
> +	 ".quad		%c0 - .			\n\t"	\
> +	 ".popsection				\n\t"
> +
>  static __always_inline bool arch_static_branch(struct static_key * const key,
>  					       const bool branch)
>  {
>  	asm goto(
>  		"1:	nop					\n\t"
> -		 "	.pushsection	__jump_table, \"aw\"	\n\t"
> -		 "	.align		3			\n\t"
> -		 "	.long		1b - ., %l[l_yes] - .	\n\t"
> -		 "	.quad		%c0 - .			\n\t"
> -		 "	.popsection				\n\t"
> +		JUMP_TABLE_ENTRY
>  		 :  :  "i"(&((char *)key)[branch]) :  : l_yes);

If we really need to factor this out, I'd prefer that the JUMP_TABLE_ENTRY()
macro took the label and key as arguments, similar to what we do for
_ASM_EXTABLE_*().

Mark.

>  
>  	return false;
> @@ -37,11 +40,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key * const ke
>  {
>  	asm goto(
>  		"1:	b		%l[l_yes]		\n\t"
> -		 "	.pushsection	__jump_table, \"aw\"	\n\t"
> -		 "	.align		3			\n\t"
> -		 "	.long		1b - ., %l[l_yes] - .	\n\t"
> -		 "	.quad		%c0 - .			\n\t"
> -		 "	.popsection				\n\t"
> +		JUMP_TABLE_ENTRY
>  		 :  :  "i"(&((char *)key)[branch]) :  : l_yes);
>  
>  	return false;
> -- 
> 2.34.1
> 
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com>
To: George Guo <dongtai.guo@linux.dev>
Cc: peterz@infradead.org, jpoimboe@kernel.org, jbaron@akamai.com,
	rostedt@goodmis.org, ardb@kernel.org, catalin.marinas@arm.com,
	will@kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, George Guo <guodongtai@kylinos.cn>
Subject: Re: [PATCH 1/1] arm64: optimize code duplication in arch_static_branch/_jump function
Date: Mon, 22 Apr 2024 10:24:46 +0100	[thread overview]
Message-ID: <ZiYs3itsmdOmuPq4@FVFF77S0Q05N> (raw)
In-Reply-To: <20240422063853.3568733-1-dongtai.guo@linux.dev>

On Mon, Apr 22, 2024 at 02:38:53PM +0800, George Guo wrote:
> From: George Guo <guodongtai@kylinos.cn>
> 
> Extracted the jump table definition code from the arch_static_branch and
> arch_static_branch_jump functions into a macro JUMP_TABLE_ENTRY to reduce
> code duplication and improve readability.

The commit title says this is an optimization, but the commit message says this
is a cleanup (and this clearly is not an optimization).

This seems to be copying what x86 did in commit:

  e1aa35c4c4bc71e4 ("jump_label, x86: Factor out the __jump_table generation")

... where the commit message is much clearer.

> 
> Signed-off-by: George Guo <guodongtai@kylinos.cn>
> ---
>  arch/arm64/include/asm/jump_label.h | 19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/arch/arm64/include/asm/jump_label.h b/arch/arm64/include/asm/jump_label.h
> index 6aafbb789991..69407b70821e 100644
> --- a/arch/arm64/include/asm/jump_label.h
> +++ b/arch/arm64/include/asm/jump_label.h
> @@ -15,16 +15,19 @@
>  
>  #define JUMP_LABEL_NOP_SIZE		AARCH64_INSN_SIZE
>  
> +#define JUMP_TABLE_ENTRY				\
> +	 ".pushsection	__jump_table, \"aw\"	\n\t"	\
> +	 ".align	3			\n\t"	\
> +	 ".long		1b - ., %l[l_yes] - .	\n\t"	\
> +	 ".quad		%c0 - .			\n\t"	\
> +	 ".popsection				\n\t"
> +
>  static __always_inline bool arch_static_branch(struct static_key * const key,
>  					       const bool branch)
>  {
>  	asm goto(
>  		"1:	nop					\n\t"
> -		 "	.pushsection	__jump_table, \"aw\"	\n\t"
> -		 "	.align		3			\n\t"
> -		 "	.long		1b - ., %l[l_yes] - .	\n\t"
> -		 "	.quad		%c0 - .			\n\t"
> -		 "	.popsection				\n\t"
> +		JUMP_TABLE_ENTRY
>  		 :  :  "i"(&((char *)key)[branch]) :  : l_yes);

If we really need to factor this out, I'd prefer that the JUMP_TABLE_ENTRY()
macro took the label and key as arguments, similar to what we do for
_ASM_EXTABLE_*().

Mark.

>  
>  	return false;
> @@ -37,11 +40,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key * const ke
>  {
>  	asm goto(
>  		"1:	b		%l[l_yes]		\n\t"
> -		 "	.pushsection	__jump_table, \"aw\"	\n\t"
> -		 "	.align		3			\n\t"
> -		 "	.long		1b - ., %l[l_yes] - .	\n\t"
> -		 "	.quad		%c0 - .			\n\t"
> -		 "	.popsection				\n\t"
> +		JUMP_TABLE_ENTRY
>  		 :  :  "i"(&((char *)key)[branch]) :  : l_yes);
>  
>  	return false;
> -- 
> 2.34.1
> 
> 

  reply	other threads:[~2024-04-22  9:25 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-22  6:38 [PATCH 1/1] arm64: optimize code duplication in arch_static_branch/_jump function George Guo
2024-04-22  6:38 ` George Guo
2024-04-22  9:24 ` Mark Rutland [this message]
2024-04-22  9:24   ` Mark Rutland
2024-04-25  9:21   ` [PATCH v2 0/1] cleanup arch_static_branch/_jump George Guo
2024-04-25  9:21     ` George Guo
2024-04-25  9:21     ` [PATCH v2 1/1] arm64: simplify arch_static_branch/_jump function George Guo
2024-04-25  9:21       ` George Guo
2024-04-30  8:56   ` [PATCH v3 0/1] cleanup arch_static_branch/_jump George Guo
2024-04-30  8:56     ` George Guo
2024-04-30  8:56     ` [PATCH v3 1/1] arm64: simplify arch_static_branch/_jump function George Guo
2024-04-30  8:56       ` George Guo
2024-05-03 17:32     ` [PATCH v3 0/1] cleanup arch_static_branch/_jump Will Deacon
2024-05-03 17:32       ` Will Deacon

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=ZiYs3itsmdOmuPq4@FVFF77S0Q05N \
    --to=mark.rutland@arm.com \
    --cc=ardb@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=dongtai.guo@linux.dev \
    --cc=guodongtai@kylinos.cn \
    --cc=jbaron@akamai.com \
    --cc=jpoimboe@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=will@kernel.org \
    /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.