]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cxl/port: Reduce number of @dport variables in cxl_port_add_dport()
authorDan Williams <dan.j.williams@intel.com>
Sat, 31 Jan 2026 00:03:56 +0000 (16:03 -0800)
committerDave Jiang <dave.jiang@intel.com>
Mon, 2 Feb 2026 15:41:29 +0000 (08:41 -0700)
In preparation for refactoring cxl_port_add_dport() to add RAS register
setup, cleanup the number of dport variables with a dport_exists() helper.

Kill the @dport needed to check for duplicates, rename @new_dport to
@dport.

Reported-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Closes: http://lore.kernel.org/20260116150119.00003bbd@huawei.com
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Tested-by: Terry Bowman <terry.bowman@amd.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Link: https://patch.msgid.link/20260131000403.2135324-3-dan.j.williams@intel.com
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
drivers/cxl/core/port.c

index ff899c690d85d00022efdd3ab6dee04674241f79..d7b6f52d0adc1b985e3630ba421e0a495b6ce905 100644 (file)
@@ -1587,30 +1587,38 @@ static int update_decoder_targets(struct device *dev, void *data)
        return 0;
 }
 
+static bool dport_exists(struct cxl_port *port, struct device *dport_dev)
+{
+       struct cxl_dport *dport = cxl_find_dport_by_dev(port, dport_dev);
+
+       if (dport) {
+               dev_dbg(&port->dev, "dport%d:%s already exists\n",
+                       dport->port_id, dev_name(dport_dev));
+               return true;
+       }
+
+       return false;
+}
+
 DEFINE_FREE(del_cxl_dport, struct cxl_dport *, if (!IS_ERR_OR_NULL(_T)) del_dport(_T))
 static struct cxl_dport *cxl_port_add_dport(struct cxl_port *port,
                                            struct device *dport_dev)
 {
-       struct cxl_dport *dport;
        int rc;
 
        device_lock_assert(&port->dev);
        if (!port->dev.driver)
                return ERR_PTR(-ENXIO);
 
-       dport = cxl_find_dport_by_dev(port, dport_dev);
-       if (dport) {
-               dev_dbg(&port->dev, "dport%d:%s already exists\n",
-                       dport->port_id, dev_name(dport_dev));
+       if (dport_exists(port, dport_dev))
                return ERR_PTR(-EBUSY);
-       }
 
-       struct cxl_dport *new_dport __free(del_cxl_dport) =
+       struct cxl_dport *dport __free(del_cxl_dport) =
                devm_cxl_add_dport_by_dev(port, dport_dev);
-       if (IS_ERR(new_dport))
-               return new_dport;
+       if (IS_ERR(dport))
+               return dport;
 
-       cxl_switch_parse_cdat(new_dport);
+       cxl_switch_parse_cdat(dport);
 
        if (port->nr_dports == 1) {
                /*
@@ -1626,17 +1634,17 @@ static struct cxl_dport *cxl_port_add_dport(struct cxl_port *port,
                if (rc)
                        return ERR_PTR(rc);
                dev_dbg(&port->dev, "first dport%d:%s added with decoders\n",
-                       new_dport->port_id, dev_name(dport_dev));
-               return no_free_ptr(new_dport);
+                       dport->port_id, dev_name(dport_dev));
+               return no_free_ptr(dport);
        }
 
        /* New dport added, update the decoder targets */
-       device_for_each_child(&port->dev, new_dport, update_decoder_targets);
+       device_for_each_child(&port->dev, dport, update_decoder_targets);
 
-       dev_dbg(&port->dev, "dport%d:%s added\n", new_dport->port_id,
+       dev_dbg(&port->dev, "dport%d:%s added\n", dport->port_id,
                dev_name(dport_dev));
 
-       return no_free_ptr(new_dport);
+       return no_free_ptr(dport);
 }
 
 static struct cxl_dport *devm_cxl_create_port(struct device *ep_dev,