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
>
>
next prev parent 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.