[PATCH] LoongArch: Fix wrong fpu version

Tiezhu Yang posted 1 patch 3 years, 10 months ago
arch/loongarch/kernel/cpu-probe.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] LoongArch: Fix wrong fpu version
Posted by Tiezhu Yang 3 years, 10 months ago
According to the configuration information accessible by the CPUCFG
instruction in LoongArch Reference Manual [1], FP_ver is stored in
bit [5: 3] of CPUCFG2, the current code to get fpu version is wrong,
use CPUCFG2_FPVERS to fix it.

[1] https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html

Fixes: 628c3bb40e9a ("LoongArch: Add boot and setup routines")
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
---
 arch/loongarch/kernel/cpu-probe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/loongarch/kernel/cpu-probe.c b/arch/loongarch/kernel/cpu-probe.c
index 6c87ea3..529ab8f4 100644
--- a/arch/loongarch/kernel/cpu-probe.c
+++ b/arch/loongarch/kernel/cpu-probe.c
@@ -263,7 +263,7 @@ void cpu_probe(void)
 
 	c->cputype	= CPU_UNKNOWN;
 	c->processor_id = read_cpucfg(LOONGARCH_CPUCFG0);
-	c->fpu_vers	= (read_cpucfg(LOONGARCH_CPUCFG2) >> 3) & 0x3;
+	c->fpu_vers     = (read_cpucfg(LOONGARCH_CPUCFG2) & CPUCFG2_FPVERS) >> 3;
 
 	c->fpu_csr0	= FPU_CSR_RN;
 	c->fpu_mask	= FPU_CSR_RSVD;
-- 
2.1.0
Re: [PATCH] LoongArch: Fix wrong fpu version
Posted by Huacai Chen 3 years, 10 months ago
Hi, Tiezhu,

On Sat, Jun 18, 2022 at 12:50 PM Tiezhu Yang <yangtiezhu@loongson.cn> wrote:
>
> According to the configuration information accessible by the CPUCFG
> instruction in LoongArch Reference Manual [1], FP_ver is stored in
> bit [5: 3] of CPUCFG2, the current code to get fpu version is wrong,
> use CPUCFG2_FPVERS to fix it.
>
> [1] https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html
>
> Fixes: 628c3bb40e9a ("LoongArch: Add boot and setup routines")
> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> ---
>  arch/loongarch/kernel/cpu-probe.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/loongarch/kernel/cpu-probe.c b/arch/loongarch/kernel/cpu-probe.c
> index 6c87ea3..529ab8f4 100644
> --- a/arch/loongarch/kernel/cpu-probe.c
> +++ b/arch/loongarch/kernel/cpu-probe.c
> @@ -263,7 +263,7 @@ void cpu_probe(void)
>
>         c->cputype      = CPU_UNKNOWN;
>         c->processor_id = read_cpucfg(LOONGARCH_CPUCFG0);
> -       c->fpu_vers     = (read_cpucfg(LOONGARCH_CPUCFG2) >> 3) & 0x3;
> +       c->fpu_vers     = (read_cpucfg(LOONGARCH_CPUCFG2) & CPUCFG2_FPVERS) >> 3;
Looks good to me, thanks.

Huacai
>
>         c->fpu_csr0     = FPU_CSR_RN;
>         c->fpu_mask     = FPU_CSR_RSVD;
> --
> 2.1.0
>