/* Intel Broadwell-DE Memory Controller kernel module * * This driver supports the memory controllers found on the Intel * processor family Broadwell. * * This file may be distributed under the terms of the * GNU General Public License version only. * * Copyright (c) 2014 by: * Ken Hu */ #ifndef MEM_DRV_H #define MEM_DRV_H #define MC_DRV_MAGIC_NUMBER 'i' #define MC_DEV_NAME "mem_drv" #define DIAG_ECC_COUNT_FILE "/usr/local/share/diag_ecc" typedef enum { MC_DRV_IOCTL_ENABLE_SCRUB = 0x90, MC_DRV_IOCTL_DISABLE_SCRUB, MC_DRV_IOCTL_GET_SCRUB_STATUS, MC_DRV_IOCTL_CLEAR_ERROR, MC_DRV_IOCTL_GET_ERROR_NUM, MC_DRV_IOCTL_GET_ERROR_ENTRY_NUM, MC_DRV_IOCTL_GET_ERROR_INFO, MC_DRV_IOCTL_READ_MEMORY, MC_DRV_IOCTL_CMD_ECC_INJECT, } MEM_DRV_IOCTL_CMD; typedef enum { GET_PCI_DEV_FAIL = 1, REGISTER_CHAR_DEV_FAIL, CREATE_CHAR_DEV_FAIL, READ_PCI_DEV_FAIL, WRITE_PCI_DEV_FAIL, BUFFER_ALLOC_FAIL, INCORRECT_MAGIC_NUM, UNKNOWN_IOCTL_CMD, MODULE_OPEN_FAIL, ERROR_ENTRY_NOT_FOUND, MEMORY_MAP_FAIL, ECC_INJECT_NOT_SUPPORT, ADDR_CAN_NOT_BE_TESTED, ADDR_TRANSLATION_FAIL, ECC_INJECT_FAIL, COMPARE_DATA_FAIL, ENABLE_ECC_INJECT_FAIL, INCORRECT_ECC_COUNT, } MEM_DRV_ERRORCODE; struct corr_err_info { unsigned char cpu_id; unsigned char mc_id; unsigned char channel_id; unsigned char rank_id; unsigned short error_count; unsigned long long fail_addr; struct corr_err_info *next; }; struct get_err_info { int index; struct corr_err_info info; }; struct mem_access_info { unsigned long long addr; int size; unsigned long long data; }; struct ecc_inj_info { unsigned long long address; unsigned int size; unsigned long long pattern; unsigned int elem_size; unsigned int error_code; }; #endif // MEM_DRV_H