diff options
author | Shuai Xue <xueshuai@linux.alibaba.com> | 2022-08-20 19:23:09 +0800 |
---|---|---|
committer | Shuai Xue <xueshuai@linux.alibaba.com> | 2022-08-25 10:46:30 +0800 |
commit | 051c9b4379e3ec45b9f5b52fe73a0acd9343ef42 (patch) | |
tree | ce60b45675ecd5744d5af4e15df3443b5dbc3d2f | |
parent | adbf8b3f6959f0eefbf89c3cb6775c4782d58140 (diff) | |
download | ras-tools-051c9b4379e3ec45b9f5b52fe73a0acd9343ef42.tar.gz |
einj_mem_uc: add a case to trigger LLC UCE on arm64
Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
-rw-r--r-- | einj_mem_uc.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/einj_mem_uc.c b/einj_mem_uc.c index e1b3e83..7288eb5 100644 --- a/einj_mem_uc.c +++ b/einj_mem_uc.c @@ -145,7 +145,15 @@ static void inject_llc(unsigned long long addr, void *vaddr, int notrigger) wfile(EINJ_DOIT, 1); } #elif __aarch64__ -static void inject_llc(unsigned long long addr, void *vaddr, int notrigger) {} +static void inject_llc(unsigned long long addr, void *vaddr, int notrigger) +{ + PRINT_INJECTING; + wfile(EINJ_ETYPE, 0x400); + wfile(EINJ_MASK, 0x01); + wfile(EINJ_FLAGS, 0x01); + wfile(EINJ_NOTRIGGER, notrigger); + wfile(EINJ_DOIT, 1); +} #endif static int is_privileged(void) @@ -529,7 +537,10 @@ int trigger_llc(char *addr) asm volatile("clflush %0" : "+m" (*addr)); } #elif __aarch64__ -int trigger_llc(char *addr) {} +int trigger_llc(char *addr) +{ + asm volatile("dc civac, %0" : : "r" (addr) : "memory"); +} #endif int trigger_instr(char *addr) |