[PATCH v2] lib: sbi: Add missing sscrind and sscfg extensions in sbi_hart_ext[]
Atish Patra
atishp at atishpatra.org
Mon Mar 25 14:22:22 PDT 2024
On Wed, Mar 20, 2024 at 8:45 AM Clément Léger <cleger at rivosinc.com> wrote:
>
> The sbi_hart_ext[] array is missing these two extensions ids. It is
> expected that this array contains all the extensions declaration at the
> same index of the SBI_HART_EXT_* define. Without this, when adding a new
> extension, there is a mismatch between ids and extension names and it
> can even display corrupted extension names.
>
> Signed-off-by: Clément Léger <cleger at rivosinc.com>
>
> ---
>
> Changes in v2:
> - Add _Static_assert() to check sbi_hart_ext[] array size
>
> ---
> lib/sbi/sbi_hart.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
> index 3d13694..80efeaa 100644
> --- a/lib/sbi/sbi_hart.c
> +++ b/lib/sbi/sbi_hart.c
> @@ -666,8 +666,13 @@ const struct sbi_hart_ext_data sbi_hart_ext[] = {
> __SBI_HART_EXT_DATA(sdtrig, SBI_HART_EXT_SDTRIG),
> __SBI_HART_EXT_DATA(smcsrind, SBI_HART_EXT_SMCSRIND),
> __SBI_HART_EXT_DATA(smcdeleg, SBI_HART_EXT_SMCDELEG),
> + __SBI_HART_EXT_DATA(sscsrind, SBI_HART_EXT_SSCSRIND),
> + __SBI_HART_EXT_DATA(ssccfg, SBI_HART_EXT_SSCCFG),
> };
>
Good catch. I had this included in an earlier version of the patch.
But I was in two minds whether to
add S-mode only extensions which M-mode doesn't control any states.
I removed it here but forgot to remove it from the SBI_HART_EXT_* defines.
@Anup:
As a general rule, should we include these types of extensions? I just
fear it may blow up in the future.
> +_Static_assert(array_size(sbi_hart_ext) == SBI_HART_EXT_MAX,
> + "sbi_hart_ext[] array should contain all extensions ids");
> +
> /**
> * Get the hart extensions in string format
> *
> --
> 2.43.0
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
--
Regards,
Atish
More information about the opensbi
mailing list