Add some missing fields which may be parsed by userspace
applications.
Signed-off-by: Helge Deller <deller@gmx.de>
diff --git a/linux-user/sparc/target_proc.h b/linux-user/sparc/target_proc.h
index 3bb3134a47..172d089fed 100644
--- a/linux-user/sparc/target_proc.h
+++ b/linux-user/sparc/target_proc.h
@@ -8,7 +8,23 @@
static int open_cpuinfo(CPUArchState *cpu_env, int fd)
{
+ int i, num_cpus;
+
+ num_cpus = sysconf(_SC_NPROCESSORS_ONLN);
+
+ dprintf(fd, "cpu\t\t: TI UltraSparc II QEMU (BlackBird)\n");
+ dprintf(fd, "fpu\t\t: UltraSparc II integrated FPU\n");
+ dprintf(fd, "promlib\t\t: Version 3 Revision 17\n");
+ dprintf(fd, "prom\t\t: 3.17.0\n");
dprintf(fd, "type\t\t: sun4u\n");
+ dprintf(fd, "ncpus probed\t: %d\n", num_cpus);
+ dprintf(fd, "ncpus active\t: %d\n", num_cpus);
+ dprintf(fd, "MMU Type\t: Spitfire\n");
+ dprintf(fd, "State:\n");
+ for (i = 0; i < num_cpus; i++) {
+ dprintf(fd, "CPU%d:\t\t: online\n", i);
+ }
+
return 0;
}
#define HAVE_ARCH_PROC_CPUINFO
On 1/8/25 13:16, Helge Deller wrote: > Add some missing fields which may be parsed by userspace > applications. > > Signed-off-by: Helge Deller <deller@gmx.de> > > diff --git a/linux-user/sparc/target_proc.h b/linux-user/sparc/target_proc.h > index 3bb3134a47..172d089fed 100644 > --- a/linux-user/sparc/target_proc.h > +++ b/linux-user/sparc/target_proc.h > @@ -8,7 +8,23 @@ > > static int open_cpuinfo(CPUArchState *cpu_env, int fd) > { > + int i, num_cpus; > + > + num_cpus = sysconf(_SC_NPROCESSORS_ONLN); > + > + dprintf(fd, "cpu\t\t: TI UltraSparc II QEMU (BlackBird)\n"); Obviously won't match with non-default cpu. r~ > + dprintf(fd, "fpu\t\t: UltraSparc II integrated FPU\n"); > + dprintf(fd, "promlib\t\t: Version 3 Revision 17\n"); > + dprintf(fd, "prom\t\t: 3.17.0\n"); Do we really want to pretend with any of these? r~
On 1/8/25 23:59, Richard Henderson wrote: > On 1/8/25 13:16, Helge Deller wrote: >> Add some missing fields which may be parsed by userspace >> applications. >> >> Signed-off-by: Helge Deller <deller@gmx.de> >> >> diff --git a/linux-user/sparc/target_proc.h b/linux-user/sparc/target_proc.h >> index 3bb3134a47..172d089fed 100644 >> --- a/linux-user/sparc/target_proc.h >> +++ b/linux-user/sparc/target_proc.h >> @@ -8,7 +8,23 @@ >> static int open_cpuinfo(CPUArchState *cpu_env, int fd) >> { >> + int i, num_cpus; >> + >> + num_cpus = sysconf(_SC_NPROCESSORS_ONLN); >> + >> + dprintf(fd, "cpu\t\t: TI UltraSparc II QEMU (BlackBird)\n"); > > Obviously won't match with non-default cpu. OIC! Well, this would need much more coding which I won't do now (and without any benefit as I haven't seen a program yet which really cares about that specific CPU info). >> + dprintf(fd, "fpu\t\t: UltraSparc II integrated FPU\n"); >> + dprintf(fd, "promlib\t\t: Version 3 Revision 17\n"); >> + dprintf(fd, "prom\t\t: 3.17.0\n"); > > Do we really want to pretend with any of these? I'm now sparc expert, so I don't know. My suggestion: I change my patch to just add: + dprintf(fd, "ncpus probed\t: %d\n", num_cpus); + dprintf(fd, "ncpus active\t: %d\n", num_cpus); + dprintf(fd, "State:\n"); + for (i = 0; i < num_cpus; i++) { + dprintf(fd, "CPU%d:\t\t: online\n", i); + } Those were the lines which I was mostly interested in since I found one application which wants to parse /proc/cpuinfo to get number of CPUs in system. Would that be acceptable (for now) ? Helge
On 1/8/25 15:21, Helge Deller wrote: > My suggestion: > I change my patch to just add: > > + dprintf(fd, "ncpus probed\t: %d\n", num_cpus); > + dprintf(fd, "ncpus active\t: %d\n", num_cpus); > + dprintf(fd, "State:\n"); > + for (i = 0; i < num_cpus; i++) { > + dprintf(fd, "CPU%d:\t\t: online\n", i); > + } > > Those were the lines which I was mostly interested in since > I found one application which wants to parse /proc/cpuinfo > to get number of CPUs in system. > Would that be acceptable (for now) ? Yes, thanks. If only linux had added a prctl or something to not require parsing... r~
On 1/9/25 01:40, Richard Henderson wrote: > On 1/8/25 15:21, Helge Deller wrote: >> My suggestion: >> I change my patch to just add: >> >> + dprintf(fd, "ncpus probed\t: %d\n", num_cpus); >> + dprintf(fd, "ncpus active\t: %d\n", num_cpus); >> + dprintf(fd, "State:\n"); >> + for (i = 0; i < num_cpus; i++) { >> + dprintf(fd, "CPU%d:\t\t: online\n", i); >> + } >> >> Those were the lines which I was mostly interested in since >> I found one application which wants to parse /proc/cpuinfo >> to get number of CPUs in system. >> Would that be acceptable (for now) ? > > Yes, thanks. If only linux had added a prctl or something to not require parsing... True, but most people forget about glibc providing sysconf(_SC_NPROCESSORS_ONLN) as portable function so that people do not need to implement parsing /proc/cpuinfo for each architecture themselves. I'll respin the patch. Helge
© 2016 - 2025 Red Hat, Inc.