Skip to content

Commit 8330671

Browse files
committed
cxl: Add helper to delete dport
Refactor the code in reap_dports() out to provide a helper function that reaps a single dport. This will be used later in the cleanup path for allocating a dport. Renaming to del_port() and del_dports() to mirror devm_cxl_add_dport(). [dj] Fixed up subject per Robert Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com> Reviewed-by: Li Ming <ming.li@zohomail.com> Reviewed-by: Alison Schofield <alison.schofield@intel.com> Reviewed-by: Dan Williams <dan.j.williams@intel.com> Tested-by: Robert Richter <rrichter@amd.com> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
1 parent 4fde895 commit 8330671

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

drivers/cxl/core/port.c

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1432,7 +1432,7 @@ EXPORT_SYMBOL_NS_GPL(cxl_endpoint_autoremove, "CXL");
14321432
* through ->remove(). This "bottom-up" removal selectively removes individual
14331433
* child ports manually. This depends on devm_cxl_add_port() to not change is
14341434
* devm action registration order, and for dports to have already been
1435-
* destroyed by reap_dports().
1435+
* destroyed by del_dports().
14361436
*/
14371437
static void delete_switch_port(struct cxl_port *port)
14381438
{
@@ -1441,18 +1441,24 @@ static void delete_switch_port(struct cxl_port *port)
14411441
devm_release_action(port->dev.parent, unregister_port, port);
14421442
}
14431443

1444-
static void reap_dports(struct cxl_port *port)
1444+
static void del_dport(struct cxl_dport *dport)
1445+
{
1446+
struct cxl_port *port = dport->port;
1447+
1448+
devm_release_action(&port->dev, cxl_dport_unlink, dport);
1449+
devm_release_action(&port->dev, cxl_dport_remove, dport);
1450+
devm_kfree(&port->dev, dport);
1451+
}
1452+
1453+
static void del_dports(struct cxl_port *port)
14451454
{
14461455
struct cxl_dport *dport;
14471456
unsigned long index;
14481457

14491458
device_lock_assert(&port->dev);
14501459

1451-
xa_for_each(&port->dports, index, dport) {
1452-
devm_release_action(&port->dev, cxl_dport_unlink, dport);
1453-
devm_release_action(&port->dev, cxl_dport_remove, dport);
1454-
devm_kfree(&port->dev, dport);
1455-
}
1460+
xa_for_each(&port->dports, index, dport)
1461+
del_dport(dport);
14561462
}
14571463

14581464
struct detach_ctx {
@@ -1510,7 +1516,7 @@ static void cxl_detach_ep(void *data)
15101516
*/
15111517
died = true;
15121518
port->dead = true;
1513-
reap_dports(port);
1519+
del_dports(port);
15141520
}
15151521
device_unlock(&port->dev);
15161522

0 commit comments

Comments
 (0)