Re: [PATCH v2 4/9] coresight: Rename connection members to allow for input connections

From: Mike Leach
Date: Tue Mar 21 2023 - 13:34:54 EST


Hi James,

On Fri, 10 Mar 2023 at 16:06, James Clark <james.clark@xxxxxxx> wrote:
>
> References to outport and child_port will be confusing when we use the
> same struct for inputs as well as outputs. Rename the members to refer
> to the position in terms of local and remote instead.
>
> Signed-off-by: James Clark <james.clark@xxxxxxx>
> ---
> drivers/hwtracing/coresight/coresight-core.c | 70 +++++++++----------
> .../hwtracing/coresight/coresight-platform.c | 32 ++++-----
> drivers/hwtracing/coresight/coresight-sysfs.c | 10 +--
> .../hwtracing/coresight/coresight-tmc-etr.c | 2 +-
> include/linux/coresight.h | 23 +++---
> 5 files changed, 71 insertions(+), 66 deletions(-)
>
> diff --git a/drivers/hwtracing/coresight/coresight-core.c b/drivers/hwtracing/coresight/coresight-core.c
> index 617be08883da..f457914e445e 100644
> --- a/drivers/hwtracing/coresight/coresight-core.c
> +++ b/drivers/hwtracing/coresight/coresight-core.c
> @@ -120,8 +120,8 @@ static int coresight_find_link_inport(struct coresight_device *csdev,
>
> for (i = 0; i < parent->pdata->nr_outconns; i++) {
> conn = &parent->pdata->out_conns[i];
> - if (conn->child_dev == csdev)
> - return conn->child_port;
> + if (conn->remote_dev == csdev)
> + return conn->remote_port;
> }
>
> dev_err(&csdev->dev, "couldn't find inport, parent: %s, child: %s\n",
> @@ -138,8 +138,8 @@ static int coresight_find_link_outport(struct coresight_device *csdev,
>
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> conn = &csdev->pdata->out_conns[i];
> - if (conn->child_dev == child)
> - return conn->outport;
> + if (conn->remote_dev == child)
> + return conn->port;
> }
>
> dev_err(&csdev->dev, "couldn't find outport, parent: %s, child: %s\n",
> @@ -604,11 +604,11 @@ coresight_find_enabled_sink(struct coresight_device *csdev)
> * Recursively explore each port found on this element.
> */
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> - struct coresight_device *child_dev;
> + struct coresight_device *remote_dev;
>
> - child_dev = csdev->pdata->out_conns[i].child_dev;
> - if (child_dev)
> - sink = coresight_find_enabled_sink(child_dev);
> + remote_dev = csdev->pdata->out_conns[i].remote_dev;
> + if (remote_dev)
> + sink = coresight_find_enabled_sink(remote_dev);
> if (sink)
> return sink;
> }
> @@ -722,7 +722,7 @@ static int coresight_grab_device(struct coresight_device *csdev)
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_device *child;
>
> - child = csdev->pdata->out_conns[i].child_dev;
> + child = csdev->pdata->out_conns[i].remote_dev;
> if (child && child->type == CORESIGHT_DEV_TYPE_HELPER)
> if (!coresight_get_ref(child))
> goto err;
> @@ -733,7 +733,7 @@ static int coresight_grab_device(struct coresight_device *csdev)
> for (i--; i >= 0; i--) {
> struct coresight_device *child;
>
> - child = csdev->pdata->out_conns[i].child_dev;
> + child = csdev->pdata->out_conns[i].remote_dev;
> if (child && child->type == CORESIGHT_DEV_TYPE_HELPER)
> coresight_put_ref(child);
> }
> @@ -752,7 +752,7 @@ static void coresight_drop_device(struct coresight_device *csdev)
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_device *child;
>
> - child = csdev->pdata->out_conns[i].child_dev;
> + child = csdev->pdata->out_conns[i].remote_dev;
> if (child && child->type == CORESIGHT_DEV_TYPE_HELPER)
> coresight_put_ref(child);
> }
> @@ -792,11 +792,11 @@ static int _coresight_build_path(struct coresight_device *csdev,
>
> /* Not a sink - recursively explore each port found on this element */
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> - struct coresight_device *child_dev;
> + struct coresight_device *remote_dev;
>
> - child_dev = csdev->pdata->out_conns[i].child_dev;
> - if (child_dev &&
> - _coresight_build_path(child_dev, sink, path) == 0) {
> + remote_dev = csdev->pdata->out_conns[i].remote_dev;
> + if (remote_dev &&
> + _coresight_build_path(remote_dev, sink, path) == 0) {
> found = true;
> break;
> }
> @@ -961,12 +961,12 @@ coresight_find_sink(struct coresight_device *csdev, int *depth)
> * recursively explore each port found on this element.
> */
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> - struct coresight_device *child_dev, *sink = NULL;
> + struct coresight_device *remote_dev, *sink = NULL;
> int child_depth = curr_depth;
>
> - child_dev = csdev->pdata->out_conns[i].child_dev;
> - if (child_dev)
> - sink = coresight_find_sink(child_dev, &child_depth);
> + remote_dev = csdev->pdata->out_conns[i].remote_dev;
> + if (remote_dev)
> + sink = coresight_find_sink(remote_dev, &child_depth);
>
> if (sink)
> found_sink = coresight_select_best_sink(found_sink,
> @@ -1337,12 +1337,12 @@ static int coresight_orphan_match(struct device *dev, void *data)
> conn = &i_csdev->pdata->out_conns[i];
>
> /* Skip the port if FW doesn't describe it */
> - if (!conn->child_fwnode)
> + if (!conn->remote_fwnode)
> continue;
> /* We have found at least one orphan connection */
> - if (conn->child_dev == NULL) {
> + if (conn->remote_dev == NULL) {
> /* Does it match this newly added device? */
> - if (conn->child_fwnode == csdev->dev.fwnode) {
> + if (conn->remote_fwnode == csdev->dev.fwnode) {
> ret = coresight_make_links(i_csdev,
> conn, csdev);
> if (ret)
> @@ -1377,13 +1377,13 @@ static int coresight_fixup_device_conns(struct coresight_device *csdev)
> for (i = 0; i < csdev->pdata->nr_outconns; i++) {
> struct coresight_connection *conn = &csdev->pdata->out_conns[i];
>
> - if (!conn->child_fwnode)
> + if (!conn->remote_fwnode)
> continue;
> - conn->child_dev =
> - coresight_find_csdev_by_fwnode(conn->child_fwnode);
> - if (conn->child_dev && conn->child_dev->has_conns_grp) {
> + conn->remote_dev =
> + coresight_find_csdev_by_fwnode(conn->remote_fwnode);
> + if (conn->remote_dev && conn->remote_dev->has_conns_grp) {
> ret = coresight_make_links(csdev, conn,
> - conn->child_dev);
> + conn->remote_dev);
> if (ret)
> break;
> } else {
> @@ -1414,10 +1414,10 @@ static int coresight_remove_match(struct device *dev, void *data)
> for (i = 0; i < iterator->pdata->nr_outconns; i++) {
> conn = &iterator->pdata->out_conns[i];
>
> - if (conn->child_dev == NULL || conn->child_fwnode == NULL)
> + if (conn->remote_dev == NULL || conn->remote_fwnode == NULL)
> continue;
>
> - if (csdev->dev.fwnode == conn->child_fwnode) {
> + if (csdev->dev.fwnode == conn->remote_fwnode) {
> iterator->orphan = true;
> coresight_remove_links(iterator, conn);
> /*
> @@ -1425,8 +1425,8 @@ static int coresight_remove_match(struct device *dev, void *data)
> * device acquired in parsing the connections from
> * platform data.
> */
> - fwnode_handle_put(conn->child_fwnode);
> - conn->child_fwnode = NULL;
> + fwnode_handle_put(conn->remote_fwnode);
> + conn->remote_fwnode = NULL;
> /* No need to continue */
> break;
> }
> @@ -1552,15 +1552,15 @@ void coresight_release_platform_data(struct coresight_device *csdev,
>
> for (i = 0; i < pdata->nr_outconns; i++) {
> /* If we have made the links, remove them now */
> - if (csdev && conns[i].child_dev)
> + if (csdev && conns[i].remote_dev)
> coresight_remove_links(csdev, &conns[i]);
> /*
> * Drop the refcount and clear the handle as this device
> * is going away
> */
> - if (conns[i].child_fwnode) {
> - fwnode_handle_put(conns[i].child_fwnode);
> - pdata->out_conns[i].child_fwnode = NULL;
> + if (conns[i].remote_fwnode) {
> + fwnode_handle_put(conns[i].remote_fwnode);
> + pdata->out_conns[i].remote_fwnode = NULL;
> }
> }
> if (csdev)
> diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c
> index ed865e0621a9..c77238cdf448 100644
> --- a/drivers/hwtracing/coresight/coresight-platform.c
> +++ b/drivers/hwtracing/coresight/coresight-platform.c
> @@ -252,13 +252,13 @@ static int of_coresight_parse_endpoint(struct device *dev,
> }
>
> conn = &pdata->out_conns[endpoint.port];
> - if (conn->child_fwnode) {
> + if (conn->remote_fwnode) {
> dev_warn(dev, "Duplicate output port %d\n",
> endpoint.port);
> ret = -EINVAL;
> break;
> }
> - conn->outport = endpoint.port;
> + conn->port = endpoint.port;
> /*
> * Hold the refcount to the target device. This could be
> * released via:
> @@ -267,8 +267,8 @@ static int of_coresight_parse_endpoint(struct device *dev,
> * 2) While removing the target device via
> * coresight_remove_match()
> */
> - conn->child_fwnode = fwnode_handle_get(rdev_fwnode);
> - conn->child_port = rendpoint.port;
> + conn->remote_fwnode = fwnode_handle_get(rdev_fwnode);
> + conn->remote_port = rendpoint.port;
> /* Connection record updated */
> } while (0);
>
> @@ -649,8 +649,8 @@ static int acpi_coresight_parse_link(struct acpi_device *adev,
>
> dir = fields[3].integer.value;
> if (dir == ACPI_CORESIGHT_LINK_MASTER) {
> - conn->outport = fields[0].integer.value;
> - conn->child_port = fields[1].integer.value;
> + conn->port = fields[0].integer.value;
> + conn->remote_port = fields[1].integer.value;
> rdev = coresight_find_device_by_fwnode(&r_adev->fwnode);
> if (!rdev)
> return -EPROBE_DEFER;
> @@ -662,14 +662,14 @@ static int acpi_coresight_parse_link(struct acpi_device *adev,
> * 2) While removing the target device via
> * coresight_remove_match().
> */
> - conn->child_fwnode = fwnode_handle_get(&r_adev->fwnode);
> + conn->remote_fwnode = fwnode_handle_get(&r_adev->fwnode);
> } else if (dir == ACPI_CORESIGHT_LINK_SLAVE) {
> /*
> * We are only interested in the port number
> * for the input ports at this component.
> - * Store the port number in child_port.
> + * Store the port number in remote_port.
> */
> - conn->child_port = fields[0].integer.value;
> + conn->remote_port = fields[0].integer.value;
> } else {
> /* Invalid direction */
> return -EINVAL;
> @@ -718,11 +718,11 @@ static int acpi_coresight_parse_graph(struct acpi_device *adev,
> return dir;
>
> if (dir == ACPI_CORESIGHT_LINK_MASTER) {
> - if (ptr->outport >= pdata->nr_outconns)
> - pdata->nr_outconns = ptr->outport + 1;
> + if (ptr->port >= pdata->nr_outconns)
> + pdata->nr_outconns = ptr->port + 1;
> ptr++;
> } else {
> - WARN_ON(pdata->nr_inconns == ptr->child_port + 1);
> + WARN_ON(pdata->nr_inconns == ptr->remote_port + 1);
> /*
> * We do not track input port connections for a device.
> * However we need the highest port number described,
> @@ -730,8 +730,8 @@ static int acpi_coresight_parse_graph(struct acpi_device *adev,
> * record for an output connection. Hence, do not move
> * the ptr for input connections
> */
> - if (ptr->child_port >= pdata->nr_inconns)
> - pdata->nr_inconns = ptr->child_port + 1;
> + if (ptr->remote_port >= pdata->nr_inconns)
> + pdata->nr_inconns = ptr->remote_port + 1;
> }
> }
>
> @@ -741,10 +741,10 @@ static int acpi_coresight_parse_graph(struct acpi_device *adev,
>
> /* Copy the connection information to the final location */
> for (i = 0; conns + i < ptr; i++) {
> - int port = conns[i].outport;
> + int port = conns[i].port;
>
> /* Duplicate output port */
> - WARN_ON(pdata->out_conns[port].child_fwnode);
> + WARN_ON(pdata->out_conns[port].remote_fwnode);
> pdata->out_conns[port] = conns[i];
> }
>
> diff --git a/drivers/hwtracing/coresight/coresight-sysfs.c b/drivers/hwtracing/coresight/coresight-sysfs.c
> index 34d2a2d31d00..3da9868d9237 100644
> --- a/drivers/hwtracing/coresight/coresight-sysfs.c
> +++ b/drivers/hwtracing/coresight/coresight-sysfs.c
> @@ -150,11 +150,11 @@ int coresight_make_links(struct coresight_device *orig,
>
> do {
> outs = devm_kasprintf(&orig->dev, GFP_KERNEL,
> - "out:%d", conn->outport);
> + "out:%d", conn->port);
> if (!outs)
> break;
> ins = devm_kasprintf(&target->dev, GFP_KERNEL,
> - "in:%d", conn->child_port);
> + "in:%d", conn->remote_port);
> if (!ins)
> break;
> link = devm_kzalloc(&orig->dev,
> @@ -178,7 +178,7 @@ int coresight_make_links(struct coresight_device *orig,
> * Install the device connection. This also indicates that
> * the links are operational on both ends.
> */
> - conn->child_dev = target;
> + conn->remote_dev = target;
> return 0;
> } while (0);
>
> @@ -198,9 +198,9 @@ void coresight_remove_links(struct coresight_device *orig,
>
> coresight_remove_sysfs_link(conn->link);
>
> - devm_kfree(&conn->child_dev->dev, conn->link->target_name);
> + devm_kfree(&conn->remote_dev->dev, conn->link->target_name);
> devm_kfree(&orig->dev, conn->link->orig_name);
> devm_kfree(&orig->dev, conn->link);
> conn->link = NULL;
> - conn->child_dev = NULL;
> + conn->remote_dev = NULL;
> }
> diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c
> index 4711dfa7418c..223081dc3ad4 100644
> --- a/drivers/hwtracing/coresight/coresight-tmc-etr.c
> +++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c
> @@ -782,7 +782,7 @@ tmc_etr_get_catu_device(struct tmc_drvdata *drvdata)
> return NULL;
>
> for (i = 0; i < etr->pdata->nr_outconns; i++) {
> - tmp = etr->pdata->out_conns[i].child_dev;
> + tmp = etr->pdata->out_conns[i].remote_dev;
> if (tmp && coresight_is_catu_device(tmp))
> return tmp;
> }
> diff --git a/include/linux/coresight.h b/include/linux/coresight.h
> index cdf0d1def778..64bb5fc95afa 100644
> --- a/include/linux/coresight.h
> +++ b/include/linux/coresight.h
> @@ -164,18 +164,23 @@ struct coresight_desc {
>
> /**
> * struct coresight_connection - representation of a single connection
> - * @outport: a connection's output port number.
> - * @child_port: remote component's port number @output is connected to.
> - * @chid_fwnode: remote component's fwnode handle.
> - * @child_dev: a @coresight_device representation of the component
> - connected to @outport.
> + * @port: this connection's local port number. For input
> + * connections this is the in-port. For outputs it's the
> + * out-port.
> + * @remote_port: remote component's port number @port is connected to.
> + * For input connections this is the out-port number on
> + * remote device. For output connections it's the in-port
> + * on the remote device.
> + * @remote_fwnode: remote component's fwnode handle.
> + * @remote_dev: a @coresight_device representation of the component
> + * connected to @port.
> * @link: Representation of the connection as a sysfs link.
> */
> struct coresight_connection {
> - int outport;
> - int child_port;
> - struct fwnode_handle *child_fwnode;
> - struct coresight_device *child_dev;
> + int port;

perhaps consider naming this explicitly local_port?

> + int remote_port;
> + struct fwnode_handle *remote_fwnode;
> + struct coresight_device *remote_dev;
> struct coresight_sysfs_link *link;

and while we are at it this could be sysfs_link?

> };
>
> --
> 2.34.1
>
Either way,

Reviewed-by: Mike Leach <mike.leach@xxxxxxxxxx>


--
Mike Leach
Principal Engineer, ARM Ltd.
Manchester Design Centre. UK