On Wed, 21 Feb 2024, Ben Cheatham wrote:
So the way the EINJ module currently works (at least as I understand it) is that any address supplied for memory errors is checked to make sure it's a "normal" memory address. Looking at the comment above the memory checks: /* * Disallow crazy address masks that give BIOS leeway to pick * injection address almost anywhere. Insist on page or * better granularity and that target address is normal RAM or * NVDIMM. */ it seems that's the case. What this means is that we can't supply the RCRB of a CXL 1.0/1.1 port because it's an MMIO address and we have to disable the checks to inject a CXL 1.0/1.1 error.
Maybe worth a comment here as to why the error checking is skipped for cxl? + } else if ((type & CXL_ERROR_MASK) && (flags & SETWA_FLAGS_MEM)) { + goto inject; Thanks, Davidlohr