cxl/acpi: Fail decoder add if CXIMS for HBIG is missing
authorAlison Schofield <alison.schofield@intel.com>
Mon, 5 Dec 2022 00:29:51 +0000 (16:29 -0800)
committerDan Williams <dan.j.williams@intel.com>
Mon, 5 Dec 2022 20:33:20 +0000 (12:33 -0800)
commit14628aec8415e4847ae7e470b175412896716cd8
treecee84ef3fd8276854b4d29a75a6f053ede98a2fe
parentcb4cdf74bd77af187085ab9d73ab9fd88283e3dc
cxl/acpi: Fail decoder add if CXIMS for HBIG is missing

The BIOS provided CXIMS (CXL XOR Interleave Math Structure) is required
for calculating a targets position in an interleave list during region
creation. The CXL driver expects to discover a CXIMS that matches the
HBIG (Host Bridge Interleave Granularity) and stores the xormaps found
in that CXIMS for retrieval during region creation.

If there is no CXIMS for an HBIG, no maps are stored. That leads to a
NULL pointer dereference at xormap retrieval during region creation.

Add a check during ACPI probe for the case of no matching CXIMS. Emit
an error message and fail to add the decoder.

Fixes: f9db85bfec0d ("cxl/acpi: Support CXL XOR Interleave Math (CXIMS)")
Suggested-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/20221205002951.1788783-1-alison.schofield@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/acpi.c