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.