cxl/region: Add a dev_err() on missing target list entries
authorRobert Richter <rrichter@amd.com>
Fri, 9 May 2025 15:06:58 +0000 (17:06 +0200)
committerDave Jiang <dave.jiang@intel.com>
Fri, 9 May 2025 16:57:43 +0000 (09:57 -0700)
Broken target lists are hard to discover as the driver fails at a
later initialization stage. Add an error message for this.

Example log messages:

  cxl_mem mem1: failed to find endpoint6:0000:e0:01.3 in target list of decoder1.1
  cxl_port endpoint6: failed to register decoder6.0: -6
  cxl_port endpoint6: 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-14-rrichter@amd.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/region.c

index 26e63ef772de032bf7037989a2483fada843dd2b..16461c5b3bc351fa3182d83fde444080ccbe683d 100644 (file)
@@ -1809,6 +1809,13 @@ static int find_pos_and_ways(struct cxl_port *port, struct range *range,
        }
        put_device(dev);
 
+       if (rc)
+               dev_err(port->uport_dev,
+                       "failed to find %s:%s in target list of %s\n",
+                       dev_name(&port->dev),
+                       dev_name(port->parent_dport->dport_dev),
+                       dev_name(&cxlsd->cxld.dev));
+
        return rc;
 }