Linux CXL
 help / color / mirror / Atom feed
From: Alison Schofield <alison.schofield@intel.com>
To: Robert Richter <rrichter@amd.com>
Cc: Vishal Verma <vishal.l.verma@intel.com>,
	Ira Weiny <ira.weiny@intel.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>,
	Dave Jiang <dave.jiang@intel.com>,
	Davidlohr Bueso <dave@stgolabs.net>,
	linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org,
	Gregory Price <gourry@gourry.net>,
	"Fabio M. De Francesco" <fabio.m.de.francesco@linux.intel.com>,
	Terry Bowman <terry.bowman@amd.com>
Subject: Re: [PATCH v2 05/18] cxl: Introduce parent_port_of() helper
Date: Fri, 7 Feb 2025 15:08:11 -0800	[thread overview]
Message-ID: <Z6aSW8N4yULozrDE@aschofie-mobl2.lan> (raw)
In-Reply-To: <20250207153753.418849-6-rrichter@amd.com>

On Fri, Feb 07, 2025 at 04:37:40PM +0100, Robert Richter wrote:
> Often a parent port must be determined. Introduce the parent_port_of()
> helper function for this.

Would this be simpler with less touchpoints:

Make next_port() available to the port driver by moving it from
region.c to port.c. Note that simply exporting from the region
driver is not an option since region driver is not guaranteed
to be configured.

(Basically I'm suggesting keep the name and touch region.c less)

> 
> Signed-off-by: Robert Richter <rrichter@amd.com>
> Reviewed-by: Gregory Price <gourry@gourry.net>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
>  drivers/cxl/core/port.c   | 15 +++++++++------
>  drivers/cxl/core/region.c | 11 ++---------
>  drivers/cxl/cxl.h         |  1 +
>  3 files changed, 12 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c
> index f9501a16b390..d19930c009ce 100644
> --- a/drivers/cxl/core/port.c
> +++ b/drivers/cxl/core/port.c
> @@ -606,17 +606,20 @@ struct cxl_port *to_cxl_port(const struct device *dev)
>  }
>  EXPORT_SYMBOL_NS_GPL(to_cxl_port, "CXL");
>  
> +struct cxl_port *parent_port_of(struct cxl_port *port)
> +{
> +	if (!port || !port->parent_dport)
> +		return NULL;
> +	return port->parent_dport->port;
> +}
> +EXPORT_SYMBOL_NS_GPL(parent_port_of, "CXL");
> +
>  static void unregister_port(void *_port)
>  {
>  	struct cxl_port *port = _port;
> -	struct cxl_port *parent;
> +	struct cxl_port *parent = parent_port_of(port);
>  	struct device *lock_dev;
>  
> -	if (is_cxl_root(port))
> -		parent = NULL;
> -	else
> -		parent = to_cxl_port(port->dev.parent);
> -
>  	/*
>  	 * CXL root port's and the first level of ports are unregistered
>  	 * under the platform firmware device lock, all other ports are
> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
> index 5d252dfae138..54afdb0fa61c 100644
> --- a/drivers/cxl/core/region.c
> +++ b/drivers/cxl/core/region.c
> @@ -1734,13 +1734,6 @@ static int cmp_interleave_pos(const void *a, const void *b)
>  	return cxled_a->pos - cxled_b->pos;
>
}
>  
> -static struct cxl_port *next_port(struct cxl_port *port)
> -{
> -	if (!port->parent_dport)
> -		return NULL;
> -	return port->parent_dport->port;
> -}
> -
>  static int match_switch_decoder_by_range(struct device *dev,
>  					 const void *data)
>  {
> @@ -1767,7 +1760,7 @@ static int find_pos_and_ways(struct cxl_port *port, struct range *range,
>  	struct device *dev;
>  	int rc = -ENXIO;
>  
> -	parent = next_port(port);
> +	parent = parent_port_of(port);
>  	if (!parent)
>  		return rc;
>  
> @@ -1847,7 +1840,7 @@ static int cxl_calc_interleave_pos(struct cxl_endpoint_decoder *cxled)
>  	 */
>  
>  	/* Iterate from endpoint to root_port refining the position */
> -	for (iter = port; iter; iter = next_port(iter)) {
> +	for (iter = port; iter; iter = parent_port_of(iter)) {
>  		if (is_cxl_root(iter))
>  			break;
>  
> diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
> index 6baec4ba9141..0d7aff8b97b3 100644
> --- a/drivers/cxl/cxl.h
> +++ b/drivers/cxl/cxl.h
> @@ -721,6 +721,7 @@ static inline bool is_cxl_root(struct cxl_port *port)
>  int cxl_num_decoders_committed(struct cxl_port *port);
>  bool is_cxl_port(const struct device *dev);
>  struct cxl_port *to_cxl_port(const struct device *dev);
> +struct cxl_port *parent_port_of(struct cxl_port *port);
>  void cxl_port_commit_reap(struct cxl_decoder *cxld);
>  struct pci_bus;
>  int devm_cxl_register_pci_bus(struct device *host, struct device *uport_dev,
> -- 
> 2.39.5
> 

  reply	other threads:[~2025-02-07 23:08 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-07 15:37 [PATCH v2 00/18] cxl: Address translation support, part 1: Cleanups and refactoring Robert Richter
2025-02-07 15:37 ` [PATCH v2 01/18] cxl: Remove else after return Robert Richter
2025-02-07 18:11   ` Jonathan Cameron
2025-02-07 23:56   ` Davidlohr Bueso
2025-02-07 15:37 ` [PATCH v2 02/18] cxl/pci: Moving code in cxl_hdm_decode_init() Robert Richter
2025-02-07 16:02   ` Gregory Price
2025-02-07 23:57   ` Davidlohr Bueso
2025-02-07 15:37 ` [PATCH v2 03/18] cxl/pci: cxl_hdm_decode_init: Move comment Robert Richter
2025-02-07 16:02   ` Gregory Price
2025-02-07 21:36     ` Jim Kao
2025-02-07 22:19       ` Gregory Price
2025-02-10 11:07         ` Robert Richter
2025-02-07 15:37 ` [PATCH v2 04/18] cxl/pci: Add comments to cxl_hdm_decode_init() Robert Richter
2025-02-07 15:37 ` [PATCH v2 05/18] cxl: Introduce parent_port_of() helper Robert Richter
2025-02-07 23:08   ` Alison Schofield [this message]
2025-02-10 11:38     ` Robert Richter
2025-02-07 15:37 ` [PATCH v2 06/18] cxl/region: Rename function to cxl_find_decoder_early() Robert Richter
2025-02-07 15:37 ` [PATCH v2 07/18] cxl/region: Avoid duplicate call of cxl_find_decoder_early() Robert Richter
2025-02-07 15:37 ` [PATCH v2 08/18] cxl/region: Move find_cxl_root() to cxl_add_to_region() Robert Richter
2025-02-07 15:37 ` [PATCH v2 09/18] cxl/region: Factor out code to find the root decoder Robert Richter
2025-02-07 15:37 ` [PATCH v2 10/18] cxl/region: Factor out code to find a root decoder's region Robert Richter
2025-02-07 16:20   ` Gregory Price
2025-02-07 15:37 ` [PATCH v2 11/18] cxl/region: Split region registration into an initialization and adding part Robert Richter
2025-02-07 15:37 ` [PATCH v2 12/18] cxl/region: Use iterator to find the root port in cxl_find_root_decoder() Robert Richter
2025-02-07 15:37 ` [PATCH v2 13/18] cxl/region: Add function to find a port's switch decoder by range Robert Richter
2025-02-07 16:29   ` Gregory Price
2025-02-07 22:22   ` Alison Schofield
2025-02-10 12:31     ` Robert Richter
2025-02-07 15:37 ` [PATCH v2 14/18] cxl/region: Unfold cxl_find_root_decoder() into cxl_endpoint_decoder_initialize() Robert Richter
2025-02-07 15:37 ` [PATCH v2 15/18] cxl/region: Show message on registration failure Robert Richter
2025-02-07 15:37 ` [PATCH v2 16/18] cxl/region: Show message on broken target list Robert Richter
2025-02-07 23:36   ` Alison Schofield
2025-02-10 12:35     ` Robert Richter
2025-02-07 15:37 ` [PATCH v2 17/18] cxl: Show message when a decoder was added to a port Robert Richter
2025-02-07 15:37 ` [PATCH v2 18/18] cxl/acpi: Unify CFMWS memory log messages with SRAT messages Robert Richter
2025-02-07 16:30   ` Gregory Price
2025-02-07 17:48     ` Robert Richter
2025-02-07 21:24 ` [PATCH v2 00/18] cxl: Address translation support, part 1: Cleanups and refactoring Gregory Price
2025-02-11  8:43   ` Robert Richter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Z6aSW8N4yULozrDE@aschofie-mobl2.lan \
    --to=alison.schofield@intel.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=dave@stgolabs.net \
    --cc=fabio.m.de.francesco@linux.intel.com \
    --cc=gourry@gourry.net \
    --cc=ira.weiny@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rrichter@amd.com \
    --cc=terry.bowman@amd.com \
    --cc=vishal.l.verma@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox