[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CAAhV-H7t8NJYEA=JqSVVFPRZauuqc4pyj6bgNCDRjWcDqR2dqg@mail.gmail.com>
Date: Wed, 30 Apr 2025 15:48:25 +0800
From: Huacai Chen <chenhuacai@...nel.org>
To: Yao Zi <ziyao@...root.org>
Cc: WANG Xuerui <kernel@...0n.name>, Thomas Gleixner <tglx@...utronix.de>,
Tianyang Zhang <zhangtianyang@...ngson.cn>, Jiaxun Yang <jiaxun.yang@...goat.com>,
Jianmin Lv <lvjianmin@...ngson.cn>, loongarch@...ts.linux.dev,
linux-kernel@...r.kernel.org, Mingcong Bai <jeffbai@...c.io>,
Kexy Biscuit <kexybiscuit@...c.io>
Subject: Re: [PATCH] LoongArch: Use a fallback CPU model when IOCSR-based
model probing fails
Hi, Yao Zi,
On Wed, Apr 30, 2025 at 1:41 PM Yao Zi <ziyao@...root.org> wrote:
>
> Reading vendor and cpuname IOCSRs yields 0x258000fff00 instead of
> human-readable model strings on Loongson 2K0300 SoC, which messes up
> format of /proc/cpuinfo since it represents as an empty string.
CPUNAME IOCSR is filled by firmware and readed by kernel. If you read
some garbage, that means you need to modify your firmware.
And if there is completely no CPUNAME register, you need to fill it by
FDT, see init_cpu_fullname() in arch/loongarch/kernel/env.c.
Huacai
>
> Let's consider IOCSR-based model probing fails if the result model is an
> empty string. A fallback model name is set in such cases.
>
> Signed-off-by: Yao Zi <ziyao@...root.org>
> ---
> arch/loongarch/kernel/cpu-probe.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/arch/loongarch/kernel/cpu-probe.c b/arch/loongarch/kernel/cpu-probe.c
> index fedaa67cde41..785513d43696 100644
> --- a/arch/loongarch/kernel/cpu-probe.c
> +++ b/arch/loongarch/kernel/cpu-probe.c
> @@ -270,12 +270,13 @@ static inline void cpu_probe_loongson(struct cpuinfo_loongarch *c, unsigned int
> if (!cpu_has_iocsr)
> return;
>
> - if (!__cpu_full_name[cpu])
> - __cpu_full_name[cpu] = cpu_full_name;
> -
> *vendor = iocsr_read64(LOONGARCH_IOCSR_VENDOR);
> *cpuname = iocsr_read64(LOONGARCH_IOCSR_CPUNAME);
>
> + if (!__cpu_full_name[cpu])
> + __cpu_full_name[cpu] = cpu_full_name[0] ? cpu_full_name :
> + "Loongson-Unknown";
> +
> config = iocsr_read32(LOONGARCH_IOCSR_FEATURES);
> if (config & IOCSRF_CSRIPI)
> c->options |= LOONGARCH_CPU_CSRIPI;
> --
> 2.49.0
>
>
Powered by blists - more mailing lists