Attention is currently required from: Lance Zhao, Marc Jones, Anjaneya "Reddy" Chagam, Martin Roth, Johnny Lin, Rocky Phagura, Tim Wawrzynczak, David Hendricks, Angel Pons, Morgan Jang, Patrick Rudolph, Tim Chu. Rocky Phagura has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/52090 )
Change subject: src/intel/xeon_sp: add hardware error support (HEST) ......................................................................
Patch Set 14:
(2 comments)
File src/soc/intel/xeon_sp/include/soc/hest.h:
https://review.coreboot.org/c/coreboot/+/52090/comment/45756dc2_7a163dc9 PS13, Line 18: : typedef struct acpi_gen_regaddr1 { : u8 space_id; /* Address space ID */ : u8 bit_width; /* Register size in bits */ : u8 bit_offset; /* Register bit offset */ : u8 access_size; /* Access size since ACPI 2.0c */ : u64 addr; /* Register address */ : } __packed acpi_addr64_t;
This is in `acpi. […]
Done...fixed.
File src/soc/intel/xeon_sp/uncore.c:
https://review.coreboot.org/c/coreboot/+/52090/comment/3656cc16_0d856e3b PS13, Line 292: /* Reserve memory for Enhanced error logging */ : if (CONFIG(SOC_RAS_ELOG)) { : base_kb = cbmem_top_addr >> 10; : size_kb = CONFIG_ERROR_LOG_BUFFER_SIZE >> 10; : LOG_MEM_RESOURCE("elog_sts_blk", dev, index, base_kb, size_kb); : reserved_ram_resource(dev, index++, base_kb, size_kb); : elog_addr = cbmem_top_addr; : printk(BIOS_DEBUG, "%s elog_addr = %llx size = %x\n", : __func__, elog_addr, CONFIG_ERROR_LOG_BUFFER_SIZE); : } :
Looks like the reserved region is placed right above CBMEM top. […]
So previously I started out using cbmem_add() for reserving this memory and for the EINJ patch. The problem was; cbmem_add labels the memory as type 16 in e820 table. Type 16 is Unknown to the OS (cat /proc/iomem). So using the cbmem_add mechanism, the APEI driver fails to load becuase the memory is unknown. If I reserve the memory as a dram resource like above, its marked as "reserved" in E820 table then APEI driver loads properly since it recognizes this memory to be valid (which is reserved).
Regarding the overlap, I'm not sure how to notify cbmem of this memory reservation. I'm not aware of a specific method that allows adding of "reserved" memory. If you know of one, let me know and I can try it out.