Commit f0c5d3bc authored by Dave Jiang's avatar Dave Jiang
Browse files

cxl: Adjust extended linear cache failure emission in cxl_acpi



The cxl_acpi module spams "Extended linear cache calculation failed"
when the hmat memory target is not found for a node. This is normal
when the memory target does not contain extended linear cache
attributes. Adjust cxl_acpi_set_cache_size() to just return 0 if error
is returned from hmat_get_extended_linear_cache_size(). That is the
only error returned from hmat_get_extended_linear_cache_size() as
-ENOENT.

Also remove the check for -EOPNOTSUPP in cxl_setup_extended_linear_cache()
since that errno is never returned by cxl_acpi_set_cache_size().

[dj: Flipped minor return logic suggested by Jonathan ]
Suggested-by: default avatarDan Williams <dan.j.williams@intel.com>
Reviewed-by: default avatarAlison Schofield <alison.schofield@intel.com>
Reviewed-by: default avatarJonathan Cameron <jonathan.cameron@huawei.com>
Link: https://patch.msgid.link/20251003185509.3215900-1-dave.jiang@intel.com


Signed-off-by: default avatarDave Jiang <dave.jiang@intel.com>
parent 6146a0f1
Loading
Loading
Loading
Loading
+7 −10
Original line number Diff line number Diff line
@@ -353,7 +353,7 @@ static int cxl_acpi_set_cache_size(struct cxl_root_decoder *cxlrd)

	rc = hmat_get_extended_linear_cache_size(&res, nid, &cache_size);
	if (rc)
		return rc;
		return 0;

	/*
	 * The cache range is expected to be within the CFMWS.
@@ -378,22 +378,19 @@ static void cxl_setup_extended_linear_cache(struct cxl_root_decoder *cxlrd)
	int rc;

	rc = cxl_acpi_set_cache_size(cxlrd);
	if (!rc)
		return;

	if (rc != -EOPNOTSUPP) {
	if (rc) {
		/*
		 * Failing to support extended linear cache region resize does not
		 * Failing to retrieve extended linear cache region resize does not
		 * prevent the region from functioning. Only causes cxl list showing
		 * incorrect region size.
		 */
		dev_warn(cxlrd->cxlsd.cxld.dev.parent,
			 "Extended linear cache calculation failed rc:%d\n", rc);
	}
			 "Extended linear cache retrieval failed rc:%d\n", rc);

		/* Ignoring return code */
		cxlrd->cache_size = 0;
	}
}

DEFINE_FREE(put_cxlrd, struct cxl_root_decoder *,
	    if (!IS_ERR_OR_NULL(_T)) put_device(&_T->cxlsd.cxld.dev))