Messages in this thread |  | | Date | Sun, 7 Jan 2018 17:14:38 -0500 | From | Konrad Rzeszutek Wilk <> | Subject | Re: [patch V2 1/2] sysfs/cpu: Add vulnerability folder |
| |
On Sun, Jan 07, 2018 at 10:48:00PM +0100, Thomas Gleixner wrote: > As the meltdown/spectre problem affects several CPU architectures, it makes > sense to have common way to express whether a system is affected by a > particular vulnerability or not. If affected the way to express the > mitigation should be common as well. > > Create /sys/devices/system/cpu/vulnerabilities folder and files for > meltdown, spectre_v1 and spectre_v2. > > Allow architectures to override the show function. > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > --- > Documentation/ABI/testing/sysfs-devices-system-cpu | 16 +++++++ > drivers/base/Kconfig | 3 + > drivers/base/cpu.c | 48 +++++++++++++++++++++ > include/linux/cpu.h | 7 +++ > 4 files changed, 74 insertions(+) > > --- a/Documentation/ABI/testing/sysfs-devices-system-cpu > +++ b/Documentation/ABI/testing/sysfs-devices-system-cpu > @@ -373,3 +373,19 @@ Contact: Linux kernel mailing list <linu > Description: information about CPUs heterogeneity. > > cpu_capacity: capacity of cpu#. > + > +What: /sys/devices/system/cpu/vulnerabilities > + /sys/devices/system/cpu/vulnerabilities/meltdown > + /sys/devices/system/cpu/vulnerabilities/spectre_v1 > + /sys/devices/system/cpu/vulnerabilities/spectre_v2 > +Date: Januar 2018
s/Januar/January/
and with that Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Thank you! > +#ifdef CONFIG_GENERIC_CPU_VULNERABILITIES > + > +ssize_t __weak cpu_show_meltdown(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + return sprintf(buf, "Not affected\n"); > +} > + > +ssize_t __weak cpu_show_spectre_v1(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + return sprintf(buf, "Not affected\n"); > +} > + > +ssize_t __weak cpu_show_spectre_v2(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + return sprintf(buf, "Not affected\n"); > +} > + > +static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); > +static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); > +static DEVICE_ATTR(spectre_v2, 0444, cpu_show_spectre_v2, NULL); > + > +static struct attribute *cpu_root_vulnerabilities_attrs[] = { > + &dev_attr_meltdown.attr, > + &dev_attr_spectre_v1.attr, > + &dev_attr_spectre_v2.attr, > + NULL > +}; > + > +static const struct attribute_group cpu_root_vulnerabilities_group = { > + .name = "vulnerabilities", > + .attrs = cpu_root_vulnerabilities_attrs, > +}; > + > +static void __init cpu_register_vulnerabilities(void) > +{ > + if (sysfs_create_group(&cpu_subsys.dev_root->kobj, > + &cpu_root_vulnerabilities_group)) > + pr_err("Unable to register CPU vulnerabilities\n"); > +} > + > +#else > +static inline void cpu_register_vulnerabilities(void) { } > +#endif > + > void __init cpu_dev_init(void) > { > if (subsys_system_register(&cpu_subsys, cpu_root_attr_groups)) > panic("Failed to register CPU subsystem"); > > cpu_dev_register_generic(); > + cpu_register_vulnerabilities(); > } > --- a/include/linux/cpu.h > +++ b/include/linux/cpu.h > @@ -47,6 +47,13 @@ extern void cpu_remove_dev_attr(struct d > extern int cpu_add_dev_attr_group(struct attribute_group *attrs); > extern void cpu_remove_dev_attr_group(struct attribute_group *attrs); > > +extern ssize_t cpu_show_meltdown(struct device *dev, > + struct device_attribute *attr, char *buf); > +extern ssize_t cpu_show_spectre_v1(struct device *dev, > + struct device_attribute *attr, char *buf); > +extern ssize_t cpu_show_spectre_v2(struct device *dev, > + struct device_attribute *attr, char *buf); > + > extern __printf(4, 5) > struct device *cpu_device_create(struct device *parent, void *drvdata, > const struct attribute_group **groups, > >
|  |