[PATCH 0/3] Sparse HART id improvements

Anup Patel anup at brainfault.org
Mon Oct 9 01:36:52 PDT 2023


On Sat, Oct 7, 2023 at 9:19 AM Xiang W <wxjstz at 126.com> wrote:
>
> 在 2023-10-06星期五的 10:05 +0530,Anup Patel写道:
> > On Sun, Sep 24, 2023 at 9:28 PM Xiang W <wxjstz at 126.com> wrote:
> > >
> > > Modify last_hartindex_having_scratch/hartindex_to_hartid_table
> > > /hartindex_to_scratch_table as static variables to prevent accidental
> > > modification and reduce memory consumption
> > >
> > > Xiang W (3):
> > >   lib: sbi: Refactor sbi_scratch_last_hartindex as a function
> > >   lib: sbi: Refactor sbi_hartindex_to_hartid as a function
> > >   lib: sbi: Refactor sbi_hartindex_to_scratch as a function
> >
> > All these are in hot-path at various places so introducing a
> > function is certainly not helping.
> >
> > Also, if some buggy code is accidentally modifying global data
> > then that buggy code should be fixed rather than papering over
> > the problem by introducing these functions.
> PATCH1:
> The original code is a bit strange in that there is already a global variable
> last_hartindex_having_scratch, but instead of using it outside of sbi_scratch.c,
> the macro sbi_scratch_last_hartindex is used. If don't want to modify this macro
> into a function, why not just change the name of the last_hartindex_having_scratch
> renamed to sbi_scratch_last_hartindex and then remove the macro?

The sbi_scratch_last_hartindex() macro allows adding instrumentation
code for debugging purposes. The caller of sbi_scratch_last_hartindex()
should not care about how it is implemented.

>
> PATCH2:
> The arrays hartindex_to_hartid_table and plat->hart_index2id store similar content,
> and the extra length of the hartindex_to_hartid_table array is not used because
> there is a determination of whether the index is less than sbi_scratch_last_ hartindex.
> the array can be removed by adding just a little bit of checking.

The "plat->hart_index2id" is optional and can be NULL as well so
we have to always use "if ()" before accessing "plat->hart_index2id".

Also, we always have to access "hart_index2id[]" via "plat" pointer
which is slower compared to a global array like "hartindex_to_hartid_table[]".

Regards,
Anup

>
> Regards,
> Xiang W
> >
> > Regards,
> > Anup
> >
> > >
> > >  include/sbi/sbi_scratch.h | 35 ++++++++++++-----------------------
> > >  lib/sbi/sbi_scratch.c     | 30 ++++++++++++++++++++++++++----
> > >  2 files changed, 38 insertions(+), 27 deletions(-)
> > >
> > > --
> > > 2.40.1
> > >
> > >
> > > --
> > > opensbi mailing list
> > > opensbi at lists.infradead.org
> > > http://lists.infradead.org/mailman/listinfo/opensbi
>



More information about the opensbi mailing list