On Fri, 7 Mar 2025 at 02:42, Song Gao <gaos...@loongson.cn> wrote:
>
> For LoongArch th min tlb_ps is 12(4KB), for TLB code,
> the tlb_ps may be 0,this may case UndefinedBehavior
> Add a check-tlb_ps fuction to check tlb_ps,
> to make sure the tlb_ps is avalablie. we check tlb_ps
> when get the tlb_ps from tlb->misc or CSR bits.
> 1. cpu reset
>    set CSR_PWCL.PTBASE and CSR_STLBPS.PS bits a default value
>    from CSR_PRCFG2;
> 2. tlb instructions.
>    some tlb instructions get  the tlb_ps from tlb->misc but the
>    value may  has been initialized to 0. we need just check the tlb_ps
>    skip the function and write a guest log.
> 3. csrwr instructions.
>    to make sure CSR_PWCL.PTBASE and CSR_STLBPS.PS bits are avalable,
>    cheke theses bits and set a default value from CSR_PRCFG2.
>
> Signed-off-by: Song Gao <gaos...@loongson.cn>
> Reviewed-by: Bibo Mao <maob...@loongson.cn>
> Message-Id: <20250305063311.830674-3-gaos...@loongson.cn>

Hi; Coverity points out what looks like an error in this commit
(CID 1593475):

> +bool check_ps(CPULoongArchState *env, int tlb_ps)
> +{
> +     if (tlb_ps > 64) {
> +         return false;
> +     }
> +     return BIT_ULL(tlb_ps) & (env->CSR_PRCFG2);

BIT_ULL(64) isn't valid, as it would be off the end of a
64-bit value. Should the check be for "tlb_ps >= 64" ?

> +}

thanks
-- PMM

Reply via email to