diff options
Diffstat (limited to 'drivers/base')
| -rw-r--r-- | drivers/base/Kconfig | 3 | ||||
| -rw-r--r-- | drivers/base/cpu.c | 48 | 
2 files changed, 51 insertions, 0 deletions
| diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index bdc87907d6a1..2415ad9f6dd4 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig @@ -236,6 +236,9 @@ config GENERIC_CPU_DEVICES  config GENERIC_CPU_AUTOPROBE  	bool +config GENERIC_CPU_VULNERABILITIES +	bool +  config SOC_BUS  	bool  	select GLOB diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c index 58a9b608d821..d99038487a0d 100644 --- a/drivers/base/cpu.c +++ b/drivers/base/cpu.c @@ -511,10 +511,58 @@ static void __init cpu_dev_register_generic(void)  #endif  } +#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();  } |