Skip to content

Commit 83ccbaf

Browse files
djbwdavejiang
authored andcommitted
cxl/port: Reduce number of @DPORT variables in cxl_port_add_dport()
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>
1 parent 47fec71 commit 83ccbaf

1 file changed

Lines changed: 23 additions & 15 deletions

File tree

drivers/cxl/core/port.c

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1587,30 +1587,38 @@ static int update_decoder_targets(struct device *dev, void *data)
15871587
return 0;
15881588
}
15891589

1590+
static bool dport_exists(struct cxl_port *port, struct device *dport_dev)
1591+
{
1592+
struct cxl_dport *dport = cxl_find_dport_by_dev(port, dport_dev);
1593+
1594+
if (dport) {
1595+
dev_dbg(&port->dev, "dport%d:%s already exists\n",
1596+
dport->port_id, dev_name(dport_dev));
1597+
return true;
1598+
}
1599+
1600+
return false;
1601+
}
1602+
15901603
DEFINE_FREE(del_cxl_dport, struct cxl_dport *, if (!IS_ERR_OR_NULL(_T)) del_dport(_T))
15911604
static struct cxl_dport *cxl_port_add_dport(struct cxl_port *port,
15921605
struct device *dport_dev)
15931606
{
1594-
struct cxl_dport *dport;
15951607
int rc;
15961608

15971609
device_lock_assert(&port->dev);
15981610
if (!port->dev.driver)
15991611
return ERR_PTR(-ENXIO);
16001612

1601-
dport = cxl_find_dport_by_dev(port, dport_dev);
1602-
if (dport) {
1603-
dev_dbg(&port->dev, "dport%d:%s already exists\n",
1604-
dport->port_id, dev_name(dport_dev));
1613+
if (dport_exists(port, dport_dev))
16051614
return ERR_PTR(-EBUSY);
1606-
}
16071615

1608-
struct cxl_dport *new_dport __free(del_cxl_dport) =
1616+
struct cxl_dport *dport __free(del_cxl_dport) =
16091617
devm_cxl_add_dport_by_dev(port, dport_dev);
1610-
if (IS_ERR(new_dport))
1611-
return new_dport;
1618+
if (IS_ERR(dport))
1619+
return dport;
16121620

1613-
cxl_switch_parse_cdat(new_dport);
1621+
cxl_switch_parse_cdat(dport);
16141622

16151623
if (port->nr_dports == 1) {
16161624
/*
@@ -1626,17 +1634,17 @@ static struct cxl_dport *cxl_port_add_dport(struct cxl_port *port,
16261634
if (rc)
16271635
return ERR_PTR(rc);
16281636
dev_dbg(&port->dev, "first dport%d:%s added with decoders\n",
1629-
new_dport->port_id, dev_name(dport_dev));
1630-
return no_free_ptr(new_dport);
1637+
dport->port_id, dev_name(dport_dev));
1638+
return no_free_ptr(dport);
16311639
}
16321640

16331641
/* New dport added, update the decoder targets */
1634-
device_for_each_child(&port->dev, new_dport, update_decoder_targets);
1642+
device_for_each_child(&port->dev, dport, update_decoder_targets);
16351643

1636-
dev_dbg(&port->dev, "dport%d:%s added\n", new_dport->port_id,
1644+
dev_dbg(&port->dev, "dport%d:%s added\n", dport->port_id,
16371645
dev_name(dport_dev));
16381646

1639-
return no_free_ptr(new_dport);
1647+
return no_free_ptr(dport);
16401648
}
16411649

16421650
static struct cxl_dport *devm_cxl_create_port(struct device *ep_dev,

0 commit comments

Comments
 (0)