Message ID | 20240206222951.1833098-9-dave.jiang@intel.com |
---|---|
State | Superseded |
Headers | show |
Series | cxl: Add support to report region access coordinates to numa nodes | expand |
On Tue, 6 Feb 2024 15:28:36 -0700 Dave Jiang <dave.jiang@intel.com> wrote: > Move setting of cxlmd->endpoint to before calling add_device() on the port > device. Otherwise when referencing cxlmd->endpoint in region discovery code > that is triggered by the port driver probe function, the endpoint port > pointer is not valid. Maybe make it clear this only matters (I assume) when we start doing such a look up? Otherwise description sounds like a fix. > > Signed-off-by: Dave Jiang <dave.jiang@intel.com> Change looks fine Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huwei.com> > --- > drivers/cxl/core/port.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c > index e8029170b8c6..2f2b7af9275e 100644 > --- a/drivers/cxl/core/port.c > +++ b/drivers/cxl/core/port.c > @@ -822,6 +822,7 @@ static struct cxl_port *__devm_cxl_add_port(struct device *host, > */ > port->reg_map = cxlds->reg_map; > port->reg_map.host = &port->dev; > + cxlmd->endpoint = port; > } else if (parent_dport) { > rc = dev_set_name(dev, "port%d", port->id); > if (rc) > @@ -1374,7 +1375,6 @@ int cxl_endpoint_autoremove(struct cxl_memdev *cxlmd, struct cxl_port *endpoint) > > get_device(host); > get_device(&endpoint->dev); > - cxlmd->endpoint = endpoint; > cxlmd->depth = endpoint->depth; > return devm_add_action_or_reset(dev, delete_endpoint, cxlmd); > }
diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c index e8029170b8c6..2f2b7af9275e 100644 --- a/drivers/cxl/core/port.c +++ b/drivers/cxl/core/port.c @@ -822,6 +822,7 @@ static struct cxl_port *__devm_cxl_add_port(struct device *host, */ port->reg_map = cxlds->reg_map; port->reg_map.host = &port->dev; + cxlmd->endpoint = port; } else if (parent_dport) { rc = dev_set_name(dev, "port%d", port->id); if (rc) @@ -1374,7 +1375,6 @@ int cxl_endpoint_autoremove(struct cxl_memdev *cxlmd, struct cxl_port *endpoint) get_device(host); get_device(&endpoint->dev); - cxlmd->endpoint = endpoint; cxlmd->depth = endpoint->depth; return devm_add_action_or_reset(dev, delete_endpoint, cxlmd); }
Move setting of cxlmd->endpoint to before calling add_device() on the port device. Otherwise when referencing cxlmd->endpoint in region discovery code that is triggered by the port driver probe function, the endpoint port pointer is not valid. Signed-off-by: Dave Jiang <dave.jiang@intel.com> --- drivers/cxl/core/port.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)