diff options
author | 2025-04-10 09:05:45 +0800 | |
---|---|---|
committer | 2025-04-28 08:48:30 -0700 | |
commit | 89963d5e6906241f5f68fa0899e2895437c7fd4b (patch) | |
tree | 92c33e6ab4067f89c2f602dce8344fdc71d50913 | |
parent | cxl: Remove always true condition for cxlctl_validate_hw_command() (diff) | |
download | wireguard-linux-89963d5e6906241f5f68fa0899e2895437c7fd4b.tar.xz wireguard-linux-89963d5e6906241f5f68fa0899e2895437c7fd4b.zip |
cxl/acpi: Verify CHBS length for CXL2.0
Per CXL Spec r3.1 Table 9-21, both CXL1.1 and CXL2.0 have defined their
own length, verify it to avoid an invalid CHBS.
Additionally, this patch also removes the redundant macro CXL_RCRB_SIZE,
favoring the use of `ACPI_CEDT_CHBS_LENGTH_CXL11`, which offers clearer
semantic meaning.
[DJ: Code edited for readability suggested by djbw]
Reviewed-by: Gregory Price <gourry@gourry.net>
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Link: https://patch.msgid.link/20250410010545.99590-1-lizhijian@fujitsu.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Diffstat (limited to '')
-rw-r--r-- | drivers/cxl/acpi.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c index cb14829bb9be..4eac068a1803 100644 --- a/drivers/cxl/acpi.c +++ b/drivers/cxl/acpi.c @@ -11,8 +11,6 @@ #include "cxlpci.h" #include "cxl.h" -#define CXL_RCRB_SIZE SZ_8K - struct cxl_cxims_data { int nr_maps; u64 xormaps[] __counted_by(nr_maps); @@ -479,7 +477,11 @@ static int cxl_get_chbs_iter(union acpi_subtable_headers *header, void *arg, chbs = (struct acpi_cedt_chbs *) header; if (chbs->cxl_version == ACPI_CEDT_CHBS_VERSION_CXL11 && - chbs->length != CXL_RCRB_SIZE) + chbs->length != ACPI_CEDT_CHBS_LENGTH_CXL11) + return 0; + + if (chbs->cxl_version == ACPI_CEDT_CHBS_VERSION_CXL20 && + chbs->length != ACPI_CEDT_CHBS_LENGTH_CXL20) return 0; if (!chbs->base) |