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 46