Message ID | 20240320154531.1496553-1-cleger@rivosinc.com |
---|---|
State | Accepted |
Headers | show |
Series | [v2] lib: sbi: Add missing sscrind and sscfg extensions in sbi_hart_ext[] | expand |
On Wed, Mar 20, 2024 at 8:45 AM Clément Léger <cleger@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@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@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/opensbi
On 20.03.24 16:45, Clément Léger 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@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), > }; > > +_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 > * Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
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), }; +_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 *
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@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(+)