[PATCH 1/2] riscv: alternatives: add 3-config alternative set
Conor Dooley
conor at kernel.org
Tue Mar 7 13:31:45 PST 2023
Hey Ben,
On Tue, Mar 07, 2023 at 08:58:33PM +0000, Ben Dooks wrote:
> Add a 3-config alternative macro set for cases where there are
> three different choices for a given erratum. This will be used
> when we come to patch the issues with SVPBMT and ZICBOM.
>
> Signed-off-by: Ben Dooks <ben.dooks at codethink.co.uk>
> ---
> arch/riscv/include/asm/alternative-macros.h | 38 +++++++++++++++++++++
> 1 file changed, 38 insertions(+)
>
> diff --git a/arch/riscv/include/asm/alternative-macros.h b/arch/riscv/include/asm/alternative-macros.h
> index 51c6867e02f3..8c74b00d707c 100644
> --- a/arch/riscv/include/asm/alternative-macros.h
> +++ b/arch/riscv/include/asm/alternative-macros.h
> @@ -50,8 +50,18 @@
> ALT_NEW_CONTENT \vendor_id_2, \errata_id_2, \enable_2, \new_c_2
> .endm
>
> +.macro ALTERNATIVE_CFG_3 old_c, new_c_1, vendor_id_1, errata_id_1, enable_1, \
> + new_c_2, vendor_id_2, errata_id_2, enable_2, \
> + new_c_3, vendor_id_3, errata_id_3, enable_3
> + ALTERNATIVE_CFG "\old_c", "\new_c_1", \vendor_id_1, \errata_id_1, \enable_1
> + ALT_NEW_CONTENT \vendor_id_2, \errata_id_2, \enable_2, \new_c_2
> + ALT_NEW_CONTENT \vendor_id_3, \errata_id_3, \enable_3, \new_c_3
A matter of opinion maybe, but there was a previous ALTERNATIVE_CFG_3
posting that was implemented using ALTERNATIVE_CFG_2 that, to me, is
easier to grok:
https://lore.kernel.org/linux-riscv/20221212115505.36770-2-prabhakar.mahadev-lad.rj@bp.renesas.com/
It's certainly an easier pattern to replicate for the inevitable
ALTERNATIVE_CFG_4,5,6,7 etc.
I'm not super bothered either way, but worth considering I think.
Cheers,
Conor.
> +.endm
> +
> +
btw, here & further down in the patch there's some instances of double
newlines that automation is gonna whinge about.
> #define __ALTERNATIVE_CFG(...) ALTERNATIVE_CFG __VA_ARGS__
> #define __ALTERNATIVE_CFG_2(...) ALTERNATIVE_CFG_2 __VA_ARGS__
> +#define __ALTERNATIVE_CFG_3(...) ALTERNATIVE_CFG_3 __VA_ARGS__
>
> #else /* !__ASSEMBLY__ */
>
> @@ -98,6 +108,13 @@
> __ALTERNATIVE_CFG(old_c, new_c_1, vendor_id_1, errata_id_1, enable_1) \
> ALT_NEW_CONTENT(vendor_id_2, errata_id_2, enable_2, new_c_2)
>
> +#define __ALTERNATIVE_CFG_3(old_c, new_c_1, vendor_id_1, errata_id_1, enable_1, \
> + new_c_2, vendor_id_2, errata_id_2, enable_2, \
> + new_c_3, vendor_id_3, errata_id_3, enable_3) \
> + __ALTERNATIVE_CFG(old_c, new_c_1, vendor_id_1, errata_id_1, enable_1) \
> + ALT_NEW_CONTENT(vendor_id_2, errata_id_2, enable_2, new_c_2) \
> + ALT_NEW_CONTENT(vendor_id_3, errata_id_3, enable_3, new_c_3)
> +
> #endif /* __ASSEMBLY__ */
>
> #define _ALTERNATIVE_CFG(old_c, new_c, vendor_id, errata_id, CONFIG_k) \
> @@ -108,6 +125,13 @@
> __ALTERNATIVE_CFG_2(old_c, new_c_1, vendor_id_1, errata_id_1, IS_ENABLED(CONFIG_k_1), \
> new_c_2, vendor_id_2, errata_id_2, IS_ENABLED(CONFIG_k_2))
>
^ there's also trailing whitespace here that git am complains about.
> +#define _ALTERNATIVE_CFG_3(old_c, new_c_1, vendor_id_1, errata_id_1, CONFIG_k_1, \
> + new_c_2, vendor_id_2, errata_id_2, CONFIG_k_2, \
> + new_c_3, vendor_id_3, errata_id_3, CONFIG_k_3) \
> + __ALTERNATIVE_CFG_3(old_c, new_c_1, vendor_id_1, errata_id_1, IS_ENABLED(CONFIG_k_1), \
> + new_c_2, vendor_id_2, errata_id_2, IS_ENABLED(CONFIG_k_2), \
> + new_c_3, vendor_id_3, errata_id_3, IS_ENABLED(CONFIG_k_3))
> +
> #else /* CONFIG_RISCV_ALTERNATIVE */
> #ifdef __ASSEMBLY__
>
> @@ -121,6 +145,9 @@
> #define _ALTERNATIVE_CFG_2(old_c, ...) \
> ALTERNATIVE_CFG old_c
>
^ and here too.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20230307/da0a448f/attachment.sig>
More information about the linux-riscv
mailing list