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