]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
parisc: Fix /proc/cpuinfo output for lscpu
authorHelge Deller <deller@gmx.de>
Fri, 18 Aug 2023 20:48:04 +0000 (22:48 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Sep 2023 08:47:00 +0000 (10:47 +0200)
commit 9f5ba4b3e1b3c123eeca5d2d09161e8720048b5c upstream.

The lscpu command is broken since commit cab56b51ec0e ("parisc: Fix
device names in /proc/iomem") added the PA pathname to all PA
devices, includig the CPUs.

lscpu parses /proc/cpuinfo and now believes it found different CPU
types since every CPU is listed with an unique identifier (PA
pathname).

Fix this problem by simply dropping the PA pathname when listing the
CPUs in /proc/cpuinfo. There is no need to show the pathname in this
procfs file.

Fixes: cab56b51ec0e ("parisc: Fix device names in /proc/iomem")
Signed-off-by: Helge Deller <deller@gmx.de>
Cc: <stable@vger.kernel.org> # v4.9+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/parisc/kernel/processor.c

index 58ece781a1767045240ce8c199a02f640a91f35b..663ff1658cd5ff7547166ee752e601217cb27658 100644 (file)
@@ -370,10 +370,18 @@ int
 show_cpuinfo (struct seq_file *m, void *v)
 {
        unsigned long cpu;
+       char cpu_name[60], *p;
+
+       /* strip PA path from CPU name to not confuse lscpu */
+       strlcpy(cpu_name, per_cpu(cpu_data, 0).dev->name, sizeof(cpu_name));
+       p = strrchr(cpu_name, '[');
+       if (p)
+               *(--p) = 0;
 
        for_each_online_cpu(cpu) {
-               const struct cpuinfo_parisc *cpuinfo = &per_cpu(cpu_data, cpu);
 #ifdef CONFIG_SMP
+               const struct cpuinfo_parisc *cpuinfo = &per_cpu(cpu_data, cpu);
+
                if (0 == cpuinfo->hpa)
                        continue;
 #endif
@@ -410,8 +418,7 @@ show_cpuinfo (struct seq_file *m, void *v)
 
                seq_printf(m, "model\t\t: %s - %s\n",
                                 boot_cpu_data.pdc.sys_model_name,
-                                cpuinfo->dev ?
-                                cpuinfo->dev->name : "Unknown");
+                                cpu_name);
 
                seq_printf(m, "hversion\t: 0x%08x\n"
                                "sversion\t: 0x%08x\n",