[PATCH 1/2] riscv: alternatives: add 3-config alternative set
Ben Dooks
ben.dooks at codethink.co.uk
Wed Mar 8 01:34:08 PST 2023
On 07/03/2023 21:31, Conor Dooley wrote:
> 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.
I'll have a look, whatever way we need to have this support before
we can add the fixes for zibom fixes in.
>> +.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.
>
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
--
Ben Dooks http://www.codethink.co.uk/
Senior Engineer Codethink - Providing Genius
https://www.codethink.co.uk/privacy.html
More information about the linux-riscv
mailing list