Skip to content

Commit 8d50cdf

Browse files
pa1guptasuryasaimadhu
authored andcommitted
x86/speculation/mmio: Add sysfs reporting for Processor MMIO Stale Data
Add the sysfs reporting file for Processor MMIO Stale Data vulnerability. It exposes the vulnerability and mitigation state similar to the existing files for the other hardware vulnerabilities. Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com> Signed-off-by: Borislav Petkov <bp@suse.de>
1 parent 99a83db commit 8d50cdf

4 files changed

Lines changed: 34 additions & 0 deletions

File tree

Documentation/ABI/testing/sysfs-devices-system-cpu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,7 @@ What: /sys/devices/system/cpu/vulnerabilities
526526
/sys/devices/system/cpu/vulnerabilities/srbds
527527
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
528528
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
529+
/sys/devices/system/cpu/vulnerabilities/mmio_stale_data
529530
Date: January 2018
530531
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
531532
Description: Information about CPU vulnerabilities

arch/x86/kernel/cpu/bugs.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1902,6 +1902,20 @@ static ssize_t tsx_async_abort_show_state(char *buf)
19021902
sched_smt_active() ? "vulnerable" : "disabled");
19031903
}
19041904

1905+
static ssize_t mmio_stale_data_show_state(char *buf)
1906+
{
1907+
if (mmio_mitigation == MMIO_MITIGATION_OFF)
1908+
return sysfs_emit(buf, "%s\n", mmio_strings[mmio_mitigation]);
1909+
1910+
if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) {
1911+
return sysfs_emit(buf, "%s; SMT Host state unknown\n",
1912+
mmio_strings[mmio_mitigation]);
1913+
}
1914+
1915+
return sysfs_emit(buf, "%s; SMT %s\n", mmio_strings[mmio_mitigation],
1916+
sched_smt_active() ? "vulnerable" : "disabled");
1917+
}
1918+
19051919
static char *stibp_state(void)
19061920
{
19071921
if (spectre_v2_in_eibrs_mode(spectre_v2_enabled))
@@ -2002,6 +2016,9 @@ static ssize_t cpu_show_common(struct device *dev, struct device_attribute *attr
20022016
case X86_BUG_SRBDS:
20032017
return srbds_show_state(buf);
20042018

2019+
case X86_BUG_MMIO_STALE_DATA:
2020+
return mmio_stale_data_show_state(buf);
2021+
20052022
default:
20062023
break;
20072024
}
@@ -2053,4 +2070,9 @@ ssize_t cpu_show_srbds(struct device *dev, struct device_attribute *attr, char *
20532070
{
20542071
return cpu_show_common(dev, attr, buf, X86_BUG_SRBDS);
20552072
}
2073+
2074+
ssize_t cpu_show_mmio_stale_data(struct device *dev, struct device_attribute *attr, char *buf)
2075+
{
2076+
return cpu_show_common(dev, attr, buf, X86_BUG_MMIO_STALE_DATA);
2077+
}
20562078
#endif

drivers/base/cpu.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,12 @@ ssize_t __weak cpu_show_srbds(struct device *dev,
564564
return sysfs_emit(buf, "Not affected\n");
565565
}
566566

567+
ssize_t __weak cpu_show_mmio_stale_data(struct device *dev,
568+
struct device_attribute *attr, char *buf)
569+
{
570+
return sysfs_emit(buf, "Not affected\n");
571+
}
572+
567573
static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL);
568574
static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL);
569575
static DEVICE_ATTR(spectre_v2, 0444, cpu_show_spectre_v2, NULL);
@@ -573,6 +579,7 @@ static DEVICE_ATTR(mds, 0444, cpu_show_mds, NULL);
573579
static DEVICE_ATTR(tsx_async_abort, 0444, cpu_show_tsx_async_abort, NULL);
574580
static DEVICE_ATTR(itlb_multihit, 0444, cpu_show_itlb_multihit, NULL);
575581
static DEVICE_ATTR(srbds, 0444, cpu_show_srbds, NULL);
582+
static DEVICE_ATTR(mmio_stale_data, 0444, cpu_show_mmio_stale_data, NULL);
576583

577584
static struct attribute *cpu_root_vulnerabilities_attrs[] = {
578585
&dev_attr_meltdown.attr,
@@ -584,6 +591,7 @@ static struct attribute *cpu_root_vulnerabilities_attrs[] = {
584591
&dev_attr_tsx_async_abort.attr,
585592
&dev_attr_itlb_multihit.attr,
586593
&dev_attr_srbds.attr,
594+
&dev_attr_mmio_stale_data.attr,
587595
NULL
588596
};
589597

include/linux/cpu.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ extern ssize_t cpu_show_tsx_async_abort(struct device *dev,
6565
extern ssize_t cpu_show_itlb_multihit(struct device *dev,
6666
struct device_attribute *attr, char *buf);
6767
extern ssize_t cpu_show_srbds(struct device *dev, struct device_attribute *attr, char *buf);
68+
extern ssize_t cpu_show_mmio_stale_data(struct device *dev,
69+
struct device_attribute *attr,
70+
char *buf);
6871

6972
extern __printf(4, 5)
7073
struct device *cpu_device_create(struct device *parent, void *drvdata,

0 commit comments

Comments
 (0)