Commit | Line | Data |
---|---|---|
6fd16ce5 MC |
1 | |
2 | #include <asm/hwrpb.h> | |
3 | #include <linux/device.h> | |
4 | ||
5 | ||
6 | #ifdef CONFIG_SYSFS | |
7 | ||
8 | static int cpu_is_ev6_or_later(void) | |
9 | { | |
10 | struct percpu_struct *cpu; | |
11 | unsigned long cputype; | |
12 | ||
13 | cpu = (struct percpu_struct *)((char *)hwrpb + hwrpb->processor_offset); | |
14 | cputype = cpu->type & 0xffffffff; | |
15 | /* Include all of EV6, EV67, EV68, EV7, EV79 and EV69. */ | |
16 | return (cputype == EV6_CPU) || ((cputype >= EV67_CPU) && (cputype <= EV69_CPU)); | |
17 | } | |
18 | ||
19 | ssize_t cpu_show_meltdown(struct device *dev, | |
20 | struct device_attribute *attr, char *buf) | |
21 | { | |
22 | if (cpu_is_ev6_or_later()) | |
23 | return sprintf(buf, "Vulnerable\n"); | |
24 | else | |
25 | return sprintf(buf, "Not affected\n"); | |
26 | } | |
27 | ||
28 | ssize_t cpu_show_spectre_v1(struct device *dev, | |
29 | struct device_attribute *attr, char *buf) | |
30 | { | |
31 | if (cpu_is_ev6_or_later()) | |
32 | return sprintf(buf, "Vulnerable\n"); | |
33 | else | |
34 | return sprintf(buf, "Not affected\n"); | |
35 | } | |
36 | ||
37 | ssize_t cpu_show_spectre_v2(struct device *dev, | |
38 | struct device_attribute *attr, char *buf) | |
39 | { | |
40 | if (cpu_is_ev6_or_later()) | |
41 | return sprintf(buf, "Vulnerable\n"); | |
42 | else | |
43 | return sprintf(buf, "Not affected\n"); | |
44 | } | |
45 | #endif |