// SPDX-License-Identifier: GPL-2.0 /* * Copyright (C) 2023 Alibaba Corporation * Authors: Shuai Xue * * This software may be redistributed and/or modified under the terms of * the GNU General Public License ("GPL") version 2 only as published by the * Free Software Foundation. */ #ifndef EINJ_H #define EINJ_H #include #include #include #include #include #include #include #include #define EINJ_ETYPE "/sys/kernel/debug/apei/einj/error_type" #define EINJ_ETYPE_AVAILABLE "/sys/kernel/debug/apei/einj/available_error_type" #define EINJ_ADDR "/sys/kernel/debug/apei/einj/param1" #define EINJ_MASK "/sys/kernel/debug/apei/einj/param2" #define EINJ_APIC "/sys/kernel/debug/apei/einj/param3" #define EINJ_SBDF "/sys/kernel/debug/apei/einj/param4" #define EINJ_FLAGS "/sys/kernel/debug/apei/einj/flags" #define EINJ_NOTRIGGER "/sys/kernel/debug/apei/einj/notrigger" #define EINJ_DOIT "/sys/kernel/debug/apei/einj/error_inject" #define EINJ_VENDOR "/sys/kernel/debug/apei/einj/vendor" #define PRINT_INJECTING printf("injecting ...\n") #define PRINT_TRIGGERING printf("triggering ...\n") extern char *progname; extern int Sflag; extern long pagesize; struct error_type { int type; char *type_name; }; int check_errortype_available(char *file, unsigned long long val); void wfile(char *file, unsigned long long val); int is_einj_support(void); int is_privileged(void); void inject_mem_uc(unsigned long long addr, void *vaddr, int notrigger); char *lookup_type_name(unsigned long long type); #endif /* EINJ_H */