[PATCH v2 3/4] platform: Allow platform uses hart count as the size of tlb info
Inochi Amaoto
inochiama at outlook.com
Sun Oct 8 17:24:57 PDT 2023
>在 2023-10-08星期日的 20:17 +0800,Inochi Amaoto写道:
>> For platform with high number of harts, it is better to auto detect a
>> suitable number of entries in tlb fifo. Since allocating tlb entry for
>> all online harts can reduce the wait time significantly, using the
>> number of the online harts can make most platforms happy. This auto
>> detection can avoid most duplicate code for setting tlb fifo size if
>> the hart count of platform is big.
>>
>> Signed-off-by: Inochi Amaoto <inochiama at outlook.com>
>> ---
>> platform/generic/platform.c | 7 +++++++
>> 1 file changed, 7 insertions(+)
>>
>> diff --git a/platform/generic/platform.c b/platform/generic/platform.c
>> index 66a0b77..9397afc 100644
>> --- a/platform/generic/platform.c
>> +++ b/platform/generic/platform.c
>> @@ -258,8 +258,15 @@ static u64 generic_tlbr_flush_limit(void)
>>
>> static u32 generic_tlb_num_entries(void)
>> {
>> + const struct sbi_platform *plat = sbi_platform_thishart_ptr();
>> + u32 hart_count = sbi_platform_hart_count(plat);
>The two lines above can be replaced with:
> u32 hart_count = sbi_scratch_last_hartindex() + 1;
>
Thx.
>If returning hart_count directly is appropriate, is it possible to remove
>SBI_PLATFORM_TLB_FIFO_NUM_ENTRIES and generic_plat->tlb_num_entries?
>
I think replacing SBI_PLATFORM_TLB_FIFO_NUM_ENTRIES with hart_count is
reasonable.
For the override functions, it gives a chance for platform to setting up
a new entry number. I suggest to perserve it, so the platform can define
its own if needed.
>This patch does not seem to belong to sg2042 and should be sent separately.
>
Yes, The only reason I added it is that sg2042 require the new default
value.
I will send it separately.
>Regards,
>Xiang W
>
>> +
>> if (generic_plat && generic_plat->tlb_num_entries)
>> return generic_plat->tlb_num_entries(generic_plat_match);
>> +
>> + /* for platform with too many harts, use hart count instead */
>> + if (hart_count > SBI_PLATFORM_TLB_FIFO_NUM_ENTRIES)
>> + return hart_count;
>> return SBI_PLATFORM_TLB_FIFO_NUM_ENTRIES;
>> }
>>
More information about the opensbi
mailing list