Re: [PATCH v2] MIPS: Expose prid and globalnumber to sysfs
From: Greg KH
Date: Thu Aug 11 2022 - 06:22:47 EST
On Thu, Aug 11, 2022 at 10:12:36AM +0000, Jiaxun Yang wrote:
> Some application would like to know precise model and rev of processor
> to do errata workaround or optimization.
>
> Expose them in sysfs as:
> /sys/devices/system/cpu/cpuX/regs/identification/prid
> /sys/devices/system/cpu/cpuX/regs/identification/globalnumber
>
> Reusing AArch64 CPU registers directory.
>
> Signed-off-by: Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx>
> ---
> v2: Drop static qualifier for kobj (gregkh)
> ---
> .../ABI/testing/sysfs-devices-system-cpu | 11 +++
> arch/mips/kernel/topology.c | 96 +++++++++++++++++++
> 2 files changed, 107 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-devices-system-cpu b/Documentation/ABI/testing/sysfs-devices-system-cpu
> index 5bf61881f012..adf855e7bb9b 100644
> --- a/Documentation/ABI/testing/sysfs-devices-system-cpu
> +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu
> @@ -512,6 +512,17 @@ Description: information about CPUs heterogeneity.
>
> cpu_capacity: capacity of cpuX.
>
> +What: /sys/devices/system/cpu/cpuX/regs/
> + /sys/devices/system/cpu/cpuX/regs/identification/
> + /sys/devices/system/cpu/cpuX/regs/identification/prid
> + /sys/devices/system/cpu/cpuX/regs/identification/globalnumber
> +Date: Augest 2022
> +Contact: Linux MIPS Kernel Mailing list <linux-mips@xxxxxxxxxxxxxxx>
> +Description: MIPS CPU registers
> +
> + 'identification' directory exposes the Processor ID and Global Number
> + registers for identifying model and revision of the CPU.
You do not document that this is only for MIPS processors.
Actually, why not do this for all chip types? Why is this only for MIPS
chips?
> +
> What: /sys/devices/system/cpu/vulnerabilities
> /sys/devices/system/cpu/vulnerabilities/meltdown
> /sys/devices/system/cpu/vulnerabilities/spectre_v1
> diff --git a/arch/mips/kernel/topology.c b/arch/mips/kernel/topology.c
> index 9429d85a4703..0e3730f3c00f 100644
> --- a/arch/mips/kernel/topology.c
> +++ b/arch/mips/kernel/topology.c
> @@ -5,6 +5,8 @@
> #include <linux/node.h>
> #include <linux/nodemask.h>
> #include <linux/percpu.h>
> +#include <linux/seq_file.h>
> +#include <linux/smp.h>
>
> static DEFINE_PER_CPU(struct cpu, cpu_devices);
>
> @@ -26,3 +28,97 @@ static int __init topology_init(void)
> }
>
> subsys_initcall(topology_init);
> +
> +static struct kobj_type cpuregs_kobj_type = {
> + .sysfs_ops = &kobj_sysfs_ops,
> +};
> +
> +struct cpureg {
> + struct kobject kobj;
> + struct cpuinfo_mips *info;
> +};
> +DEFINE_PER_CPU(struct cpureg, cpuregs);
You still have static kobjects here, nothing changed from your previous
submission :(