cxl/region: Add a dev_warn() on registration failure
authorRobert Richter <rrichter@amd.com>
Fri, 9 May 2025 15:06:57 +0000 (17:06 +0200)
committerDave Jiang <dave.jiang@intel.com>
Fri, 9 May 2025 16:57:43 +0000 (09:57 -0700)
Esp. in complex system configurations with multiple endpoints and
interleaving setups it is hard to detect region setup failures as its
registration may silently fail. Add messages to show registration
failures.

Example log message:

  cxl region5: region sort successful
  cxl region5: mem0:endpoint5 decoder5.0 add: mem0:decoder5.0 @ 0 next: none nr_eps: 1 nr_targets: 1
  cxl_port endpoint5: decoder5.0: range: 0x22350000000-0x2634fffffff iw: 1 ig: 256
  cxl region5: pci0000:e0:port1 decoder1.2 add: mem0:decoder5.0 @ 0 next: mem0 nr_eps: 1 nr_targets: 1
  cxl region5: pci0000:e0:port1 iw: 1 ig: 256
  cxl region5: pci0000:e0:port1: decoder1.2 expected 0000:e0:01.2 at 0
  cxl endpoint5: failed to attach decoder5.0 to region5: -6
  cxl_port endpoint5: probe: 0

Signed-off-by: Robert Richter <rrichter@amd.com>
Reviewed-by: Gregory Price <gourry@gourry.net>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Alison Schofield <alison.schofield@intel.com>
Reviewed-by: "Fabio M. De Francesco" <fabio.m.de.francesco@linux.intel.com>
Tested-by: Gregory Price <gourry@gourry.net>
Acked-by: Dan Williams <dan.j.williams@intel.com>
Link: https://patch.msgid.link/20250509150700.2817697-13-rrichter@amd.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/region.c

index 20092d68d7a3940e4d1ef6dcf368ffb30a3a8966..26e63ef772de032bf7037989a2483fada843dd2b 100644 (file)
@@ -2166,6 +2166,12 @@ static int attach_target(struct cxl_region *cxlr,
        rc = cxl_region_attach(cxlr, cxled, pos);
        up_read(&cxl_dpa_rwsem);
        up_write(&cxl_region_rwsem);
+
+       if (rc)
+               dev_warn(cxled->cxld.dev.parent,
+                       "failed to attach %s to %s: %d\n",
+                       dev_name(&cxled->cxld.dev), dev_name(&cxlr->dev), rc);
+
        return rc;
 }