[PATCH 2/2] arm64: alternative: Remove 'cfg' parameter
Vladimir Murzin
vladimir.murzin at arm.com
Tue Sep 22 04:34:56 PDT 2026
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 at arm.com>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: James Morse <james.morse at arm.com>
> Cc: Marc Zyngier <maz at kernel.org>
> Cc: Will Deacon <will at 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 at arm.com>
More information about the linux-arm-kernel
mailing list