cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

bugs.c (1124B)


      1
      2#include <asm/hwrpb.h>
      3#include <linux/device.h>
      4
      5
      6#ifdef CONFIG_SYSFS
      7
      8static 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
     19ssize_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
     28ssize_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
     37ssize_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