Le 13/12/2022 à 17:10, Helge Deller a écrit :
The sparc, hppa and m68k architectures provide an own output for the
emulated /proc/cpuinfo file.
Some userspace applications count (even if that's not the recommended
way) the number of lines which start with "processor:" and assume that
this number then reflects the number of online CPUs. Since those 3
architectures don't provide any such line, applications may assume "0"
CPUs. One such issue can be seen in debian bug report:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1024653
Why don't they use something like system("getconf _NPROCESSORS_CONF") ?
Avoid such issues by adding a "processor:" line for each of the online
CPUs.
Signed-off-by: Helge Deller <del...@gmx.de>
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 9e2c0a18fc..d58e9b8d10 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
...
@@ -8319,6 +8331,7 @@ static int open_cpuinfo(CPUArchState *cpu_env, int fd)
#if defined(TARGET_M68K)
static int open_hardware(CPUArchState *cpu_env, int fd)
{
+ dprintf(fd, "processor\t: 0\n");
dprintf(fd, "Model:\t\tqemu-m68k\n");
return 0;
}
This is /proc/hardware, not /proc/cpuinfo.
root@debian10-vm1:~# cat /proc/hardware
Model: Macintosh Quadra 800
System Memory: 1025024K
root@debian10-vm1:~# cat /proc/cpuinfo
CPU: 68040
MMU: 68040
FPU: 68040
Clocking: 1529.8MHz
BogoMips: 1019.90
Calibration: 5099520 loops
And on m68k, no one expects to have a "processor" line.
Thanks,
Laurent