All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Robert Richter <rrichter@amd.com>
Cc: Alison Schofield <alison.schofield@intel.com>,
	Vishal Verma <vishal.l.verma@intel.com>,
	Ira Weiny <ira.weiny@intel.com>,
	Dan Williams <dan.j.williams@intel.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 v4 03/14] cxl/pci: Add comments to cxl_hdm_decode_init()
Date: Fri, 14 Mar 2025 11:33:37 +0000	[thread overview]
Message-ID: <20250314113337.000054b6@huawei.com> (raw)
In-Reply-To: <20250306164448.3354845-4-rrichter@amd.com>

On Thu, 6 Mar 2025 17:44:37 +0100
Robert Richter <rrichter@amd.com> wrote:

> There are various configuration cases of HDM decoder registers causing
> different code paths. Add comments to cxl_hdm_decode_init() to better
> explain them.
> 
> Signed-off-by: Robert Richter <rrichter@amd.com>
> Tested-by: Gregory Price <gourry@gourry.net>
Trivial comment inline.
Otherwise I think this is fine.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

> ---
>  drivers/cxl/core/pci.c | 33 ++++++++++++++++++++++++---------
>  1 file changed, 24 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/cxl/core/pci.c b/drivers/cxl/core/pci.c
> index 6386e84e51a4..ef4b08abe424 100644
> --- a/drivers/cxl/core/pci.c
> +++ b/drivers/cxl/core/pci.c
> @@ -416,9 +416,21 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
>  	if (global_ctrl & CXL_HDM_DECODER_ENABLE || (!hdm && info->mem_enabled))
>  		return devm_cxl_enable_mem(&port->dev, cxlds);
>  
> +	/*
> +	 * If the HDM Decoder Capability does not exist and DVSEC was
> +	 * not setup, the DVSEC based emulation cannot be used.
> +	 */
>  	if (!hdm)
>  		return -ENODEV;
>  
> +	/*
> +	 * The HDM Decoder Capability exists but is globally disabled.

Single line comment syntax appropriate here.

> +	 */
> +
> +	/*
> +	 * If the DVSEC CXL Range registers are not enabled, just
> +	 * enable and use the HDM Decoder Capability registers.
> +	 */
>  	if (!info->mem_enabled) {
>  		rc = devm_cxl_enable_hdm(&port->dev, cxlhdm);
>  		if (rc)
> @@ -427,6 +439,18 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
>  		return devm_cxl_enable_mem(&port->dev, cxlds);
>  	}
>  
> +	/*
> +	 * Per CXL 2.0 Section 8.1.3.8.3 and 8.1.3.8.4 DVSEC CXL Range 1 Base
> +	 * [High,Low] when HDM operation is enabled the range register values
> +	 * are ignored by the device, but the spec also recommends matching the
> +	 * DVSEC Range 1,2 to HDM Decoder Range 0,1. So, non-zero info->ranges
> +	 * are expected even though Linux does not require or maintain that
> +	 * match. Check if at least one DVSEC range is enabled and allowed by
> +	 * the platform. That is, the DVSEC range must be covered by a locked
> +	 * platform window (CFMWS). Fail otherwise as the endpoint's decoders
> +	 * cannot be used.
> +	 */
> +
>  	root = to_cxl_port(port->dev.parent);
>  	while (!is_cxl_root(root) && is_cxl_port(root->dev.parent))
>  		root = to_cxl_port(root->dev.parent);
> @@ -454,15 +478,6 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
>  		return -ENXIO;
>  	}
>  
> -	/*
> -	 * Per CXL 2.0 Section 8.1.3.8.3 and 8.1.3.8.4 DVSEC CXL Range 1 Base
> -	 * [High,Low] when HDM operation is enabled the range register values
> -	 * are ignored by the device, but the spec also recommends matching the
> -	 * DVSEC Range 1,2 to HDM Decoder Range 0,1. So, non-zero info->ranges
> -	 * are expected even though Linux does not require or maintain that
> -	 * match. If at least one DVSEC range is enabled and allowed, skip HDM
> -	 * Decoder Capability Enable.
> -	 */
>  	return 0;
>  }
>  EXPORT_SYMBOL_NS_GPL(cxl_hdm_decode_init, "CXL");


  reply	other threads:[~2025-03-14 11:33 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-06 16:44 [PATCH v4 00/14] cxl: Address translation support, part 1: Cleanups and refactoring Robert Richter
2025-03-06 16:44 ` [PATCH v4 01/14] cxl: Remove else after return Robert Richter
2025-03-14 11:27   ` Jonathan Cameron
2025-04-15 21:27   ` Alison Schofield
2025-04-18 16:23   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 02/14] cxl/pci: Moving code in cxl_hdm_decode_init() Robert Richter
2025-03-14 11:31   ` Jonathan Cameron
2025-04-15 21:29   ` Alison Schofield
2025-04-18 16:28   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 03/14] cxl/pci: Add comments to cxl_hdm_decode_init() Robert Richter
2025-03-14 11:33   ` Jonathan Cameron [this message]
2025-04-17 13:11     ` Robert Richter
2025-04-15 21:30   ` Alison Schofield
2025-04-17 13:48   ` Gregory Price
2025-04-18 16:34   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 04/14] cxl: Introduce parent_port_of() helper Robert Richter
2025-03-06 18:57   ` Dan Williams
2025-04-15 21:30   ` Alison Schofield
2025-04-21 17:49   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 05/14] cxl/region: Rename function to cxl_find_decoder_early() Robert Richter
2025-03-06 19:51   ` Dan Williams
2025-03-06 16:44 ` [PATCH v4 06/14] cxl/region: Avoid duplicate call of cxl_find_decoder_early() Robert Richter
2025-03-06 20:01   ` Dan Williams
2025-03-06 16:44 ` [PATCH v4 07/14] cxl/region: Move find_cxl_root() to cxl_add_to_region() Robert Richter
2025-03-06 20:14   ` Dan Williams
2025-04-15 21:32   ` Alison Schofield
2025-04-21 21:21   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 08/14] cxl/region: Factor out code to find the root decoder Robert Richter
2025-03-06 20:35   ` Dan Williams
2025-04-15 21:32   ` Alison Schofield
2025-04-22 16:09   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 09/14] cxl/region: Factor out code to find a root decoder's region Robert Richter
2025-03-06 20:37   ` Dan Williams
2025-04-15 21:33   ` Alison Schofield
2025-04-23 15:32   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 10/14] cxl/region: Add function to find a port's switch decoder by range Robert Richter
2025-03-06 20:55   ` Dan Williams
2025-03-06 16:44 ` [PATCH v4 11/14] cxl/region: Add a dev_warn() on registration failure Robert Richter
2025-03-06 20:57   ` Dan Williams
2025-04-15 21:34   ` Alison Schofield
2025-04-23 20:49   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 12/14] cxl/region: Add a dev_err() on missing target list entries Robert Richter
2025-03-06 20:58   ` Dan Williams
2025-04-15 21:35   ` Alison Schofield
2025-04-23 20:50   ` Fabio M. De Francesco
2025-03-06 16:44 ` [PATCH v4 13/14] cxl: Add a dev_dbg() when a decoder was added to a port Robert Richter
2025-03-06 21:06   ` Dan Williams
2025-04-29 13:43     ` Robert Richter
2025-04-15 21:36   ` Alison Schofield
2025-03-06 16:44 ` [PATCH v4 14/14] cxl/acpi: Unify CFMWS memory log messages with SRAT messages Robert Richter
2025-03-06 21:12   ` Dan Williams
2025-04-15 23:23 ` [PATCH v4 00/14] cxl: Address translation support, part 1: Cleanups and refactoring Alison Schofield

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=20250314113337.000054b6@huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=alison.schofield@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.