From: Vladimir Murzin <vladimir.murzin@arm.com>
To: Mark Rutland <mark.rutland@arm.com>,
linux-arm-kernel@lists.infradead.org
Cc: catalin.marinas@arm.com, james.morse@arm.com, maz@kernel.org,
will@kernel.org
Subject: Re: [PATCH 2/2] arm64: alternative: Remove 'cfg' parameter
Date: Tue, 22 Sep 2026 12:34:56 +0100 [thread overview]
Message-ID: <ac89b76e-90d0-4372-b95c-f1f11097c510@arm.com> (raw)
In-Reply-To: <20260902113232.314831-3-mark.rutland@arm.com>
On 9/2/26 12:32, Mark Rutland wrote:
> There are no remaining users of the 'cfg' parameter for alternative
> sequences.
>
> Remove support for the 'cfg' parameter. In general, it's better to use
> explicit ifdeffery or IS_ENABLED() checks.
>
> Signed-off-by: Mark Rutland <mark.rutland@arm.com>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: James Morse <james.morse@arm.com>
> Cc: Marc Zyngier <maz@kernel.org>
> Cc: Will Deacon <will@kernel.org>
> ---
> arch/arm64/include/asm/alternative-macros.h | 30 +++++++--------------
> 1 file changed, 10 insertions(+), 20 deletions(-)
>
> diff --git a/arch/arm64/include/asm/alternative-macros.h b/arch/arm64/include/asm/alternative-macros.h
> index 8624166248528..ee75a2f1a575f 100644
> --- a/arch/arm64/include/asm/alternative-macros.h
> +++ b/arch/arm64/include/asm/alternative-macros.h
> @@ -53,8 +53,7 @@
> *
> * Alternatives with callbacks do not generate replacement instructions.
> */
> -#define __ALTERNATIVE_CFG(oldinstr, newinstr, cpucap, cfg_enabled) \
> - ".if "__stringify(cfg_enabled)" == 1\n" \
> +#define __ALTERNATIVE(oldinstr, newinstr, cpucap) \
> "661:\n\t" \
> oldinstr "\n" \
> "662:\n" \
> @@ -68,10 +67,8 @@
> ".org . - (664b-663b) + (662b-661b)\n\t" \
> ".org . - (662b-661b) + (664b-663b)\n\t" \
> ".previous\n" \
> - ".endif\n"
>
> -#define __ALTERNATIVE_CFG_CB(oldinstr, cpucap, cfg_enabled, cb) \
> - ".if "__stringify(cfg_enabled)" == 1\n" \
> +#define __ALTERNATIVE_CB(oldinstr, cpucap, cb) \
> "661:\n\t" \
> oldinstr "\n" \
> "662:\n" \
> @@ -80,13 +77,12 @@
> ".popsection\n" \
> "663:\n\t" \
> "664:\n\t" \
> - ".endif\n"
>
> -#define _ALTERNATIVE_CFG(oldinstr, newinstr, cpucap, cfg, ...) \
> - __ALTERNATIVE_CFG(oldinstr, newinstr, cpucap, IS_ENABLED(cfg))
> +#define _ALTERNATIVE(oldinstr, newinstr, cpucap) \
> + __ALTERNATIVE(oldinstr, newinstr, cpucap)
>
> #define ALTERNATIVE_CB(oldinstr, cpucap, cb) \
> - __ALTERNATIVE_CFG_CB(oldinstr, (1 << ARM64_CB_SHIFT) | (cpucap), 1, cb)
> + __ALTERNATIVE_CB(oldinstr, (1 << ARM64_CB_SHIFT) | (cpucap), cb)
> #else
>
> #include <asm/assembler.h>
> @@ -99,8 +95,7 @@
> .byte \alt_len
> .endm
>
> -.macro alternative_insn insn1, insn2, cap, enable = 1
> - .if \enable
> +.macro alternative_insn insn1, insn2, cap
> 661: \insn1
> 662: .pushsection .altinstructions, "a"
> altinstruction_entry 661b, 663f, \cap, 662b-661b, 664f-663f
> @@ -110,7 +105,6 @@
> 664: .org . - (664b-663b) + (662b-661b)
> .org . - (662b-661b) + (664b-663b)
> .previous
> - .endif
> .endm
>
> /*
> @@ -204,20 +198,16 @@ alternative_else
> alternative_endif
> .endm
>
> -#define _ALTERNATIVE_CFG(insn1, insn2, cap, cfg, ...) \
> - alternative_insn insn1, insn2, cap, IS_ENABLED(cfg)
> +#define _ALTERNATIVE(insn1, insn2, cap) \
> + alternative_insn insn1, insn2, cap
>
> #endif /* __ASSEMBLER__ */
>
> /*
> * Usage: asm(ALTERNATIVE(oldinstr, newinstr, cpucap));
> - *
> - * Usage: asm(ALTERNATIVE(oldinstr, newinstr, cpucap, CONFIG_FOO));
> - * N.B. If CONFIG_FOO is specified, but not selected, the whole block
> - * will be omitted, including oldinstr.
> */
> -#define ALTERNATIVE(oldinstr, newinstr, ...) \
> - _ALTERNATIVE_CFG(oldinstr, newinstr, __VA_ARGS__, 1)
> +#define ALTERNATIVE(oldinstr, newinstr, cpucap) \
> + _ALTERNATIVE(oldinstr, newinstr, cpucap)
>
> #ifndef __ASSEMBLER__
>
> -- 2.30.2
>
Digging through the history, it looks like the only users of cfg
used to be PAN and UAO (modulo MTE from the previous patch),
which are either gone (UAO) or have become unconditional (PAN).
FWIW,
Reviewed-by: Vladimir Murzin <vladimir.murzin@arm.com>
next prev parent reply other threads:[~2026-09-22 11:35 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-02 11:32 [PATCH 0/2] arm64: alternative: Remove optional 'cfg' parameter Mark Rutland
2026-09-02 11:32 ` [PATCH 1/2] arm64: mte-kasan: Use IS_ENABLED() rather than ALTERNATIVE() " Mark Rutland
2026-09-22 11:25 ` Vladimir Murzin
2026-09-02 11:32 ` [PATCH 2/2] arm64: alternative: Remove " Mark Rutland
2026-09-22 11:34 ` Vladimir Murzin [this message]
2026-09-23 18:20 ` [PATCH 0/2] arm64: alternative: Remove optional " Catalin Marinas
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=ac89b76e-90d0-4372-b95c-f1f11097c510@arm.com \
--to=vladimir.murzin@arm.com \
--cc=catalin.marinas@arm.com \
--cc=james.morse@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox