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 v3 07/18] cxl/region: Avoid duplicate call of cxl_find_decoder_early()
Date: Fri, 14 Feb 2025 16:07:25 +0000 [thread overview]
Message-ID: <20250214160725.0000662f@huawei.com> (raw)
In-Reply-To: <20250211095349.981096-8-rrichter@amd.com>
On Tue, 11 Feb 2025 10:53:37 +0100
Robert Richter <rrichter@amd.com> wrote:
> Function cxl_find_decoder_early() is called twice, in
> alloc_region_ref() and cxl_rr_alloc_decoder(). Move it out there and
out where? I'd make it clear that both these calls are in
cxl_port_attach_region()
> instead pass the decoder as function argument to both.
>
> Signed-off-by: Robert Richter <rrichter@amd.com>
> Reviewed-by: Gregory Price <gourry@gourry.net>
> Tested-by: Gregory Price <gourry@gourry.net>
I think this is fine but it's not immediately obvious so a request
inline for some more details in this description.
> ---
> drivers/cxl/core/region.c | 31 +++++++++++++++----------------
> 1 file changed, 15 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
> index 13e3ba984a53..b8201c2faa87 100644
> --- a/drivers/cxl/core/region.c
> +++ b/drivers/cxl/core/region.c
> @@ -908,7 +908,8 @@ static bool auto_order_ok(struct cxl_port *port, struct cxl_region *cxlr_iter,
>
> static struct cxl_region_ref *
> alloc_region_ref(struct cxl_port *port, struct cxl_region *cxlr,
> - struct cxl_endpoint_decoder *cxled)
> + struct cxl_endpoint_decoder *cxled,
> + struct cxl_decoder *cxld)
> {
> struct cxl_region_params *p = &cxlr->params;
> struct cxl_region_ref *cxl_rr, *iter;
> @@ -922,9 +923,6 @@ alloc_region_ref(struct cxl_port *port, struct cxl_region *cxlr,
> continue;
>
> if (test_bit(CXL_REGION_F_AUTO, &cxlr->flags)) {
> - struct cxl_decoder *cxld;
> -
> - cxld = cxl_find_decoder_early(port, cxled, cxlr);
This is buried a little deep to be obviously fine to lift out.
Seems like it should always have been done outside the xa_for_each()
loop in here. So I think this is fine but maybe some more in the
patch description is needed to make that point.
> if (auto_order_ok(port, iter->region, cxld))
> continue;
> }
> @@ -1008,17 +1006,9 @@ static int cxl_rr_ep_add(struct cxl_region_ref *cxl_rr,
>
> static int cxl_rr_alloc_decoder(struct cxl_port *port, struct cxl_region *cxlr,
> struct cxl_endpoint_decoder *cxled,
> - struct cxl_region_ref *cxl_rr)
> + struct cxl_region_ref *cxl_rr,
> + struct cxl_decoder *cxld)
> {
> - struct cxl_decoder *cxld;
> -
> - cxld = cxl_find_decoder_early(port, cxled, cxlr);
> - if (!cxld) {
> - dev_dbg(&cxlr->dev, "%s: no decoder available\n",
> - dev_name(&port->dev));
> - return -EBUSY;
> - }
> -
> if (cxld->region) {
> dev_dbg(&cxlr->dev, "%s: %s already attached to %s\n",
> dev_name(&port->dev), dev_name(&cxld->dev),
> @@ -1109,7 +1099,16 @@ static int cxl_port_attach_region(struct cxl_port *port,
> nr_targets_inc = true;
> }
> } else {
> - cxl_rr = alloc_region_ref(port, cxlr, cxled);
> + struct cxl_decoder *cxld;
> +
> + cxld = cxl_find_decoder_early(port, cxled, cxlr);
> + if (!cxld) {
> + dev_dbg(&cxlr->dev, "%s: no decoder available\n",
> + dev_name(&port->dev));
> + return -EBUSY;
> + }
> +
> + cxl_rr = alloc_region_ref(port, cxlr, cxled, cxld);
> if (IS_ERR(cxl_rr)) {
> dev_dbg(&cxlr->dev,
> "%s: failed to allocate region reference\n",
> @@ -1118,7 +1117,7 @@ static int cxl_port_attach_region(struct cxl_port *port,
> }
> nr_targets_inc = true;
>
> - rc = cxl_rr_alloc_decoder(port, cxlr, cxled, cxl_rr);
> + rc = cxl_rr_alloc_decoder(port, cxlr, cxled, cxl_rr, cxld);
> if (rc)
> goto out_erase;
> }
next prev parent reply other threads:[~2025-02-14 16:07 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-11 9:53 [PATCH v3 00/18] cxl: Address translation support, part 1: Cleanups and refactoring Robert Richter
2025-02-11 9:53 ` [PATCH v3 01/18] cxl: Remove else after return Robert Richter
2025-02-11 9:53 ` [PATCH v3 02/18] cxl/pci: Moving code in cxl_hdm_decode_init() Robert Richter
2025-02-12 17:57 ` Jonathan Cameron
2025-02-20 1:03 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 03/18] cxl/pci: cxl_hdm_decode_init: Move comment Robert Richter
2025-02-12 18:09 ` Jonathan Cameron
2025-02-13 0:35 ` Robert Richter
2025-02-14 15:49 ` Jonathan Cameron
2025-03-06 9:38 ` Robert Richter
2025-02-11 9:53 ` [PATCH v3 04/18] cxl/pci: Add comments to cxl_hdm_decode_init() Robert Richter
2025-02-14 15:51 ` Jonathan Cameron
2025-02-11 9:53 ` [PATCH v3 05/18] cxl: Introduce parent_port_of() helper Robert Richter
2025-02-20 16:12 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 06/18] cxl/region: Rename function to cxl_find_decoder_early() Robert Richter
2025-02-14 15:58 ` Jonathan Cameron
2025-03-05 12:48 ` Robert Richter
2025-02-11 9:53 ` [PATCH v3 07/18] cxl/region: Avoid duplicate call of cxl_find_decoder_early() Robert Richter
2025-02-14 16:07 ` Jonathan Cameron [this message]
2025-03-06 9:16 ` Robert Richter
2025-02-11 9:53 ` [PATCH v3 08/18] cxl/region: Move find_cxl_root() to cxl_add_to_region() Robert Richter
2025-02-20 16:39 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 09/18] cxl/region: Factor out code to find the root decoder Robert Richter
2025-02-20 16:48 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 10/18] cxl/region: Factor out code to find a root decoder's region Robert Richter
2025-02-14 16:15 ` Jonathan Cameron
2025-02-20 16:50 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 11/18] cxl/region: Split region registration into an initialization and adding part Robert Richter
2025-02-14 16:24 ` Jonathan Cameron
2025-02-11 9:53 ` [PATCH v3 12/18] cxl/region: Use iterator to find the root port in cxl_find_root_decoder() Robert Richter
2025-02-20 17:17 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 13/18] cxl/region: Add function to find a port's switch decoder by range Robert Richter
2025-02-14 16:29 ` Jonathan Cameron
2025-02-20 17:23 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 14/18] cxl/region: Unfold cxl_find_root_decoder() into cxl_endpoint_decoder_initialize() Robert Richter
2025-02-14 16:33 ` Jonathan Cameron
2025-03-06 16:18 ` Robert Richter
2025-02-11 9:53 ` [PATCH v3 15/18] cxl/region: Add a dev_warn() on registration failure Robert Richter
2025-02-14 16:35 ` Jonathan Cameron
2025-02-20 17:35 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 16/18] cxl/region: Add a dev_err() on missing target list entries Robert Richter
2025-02-14 16:36 ` Jonathan Cameron
2025-02-20 17:44 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 17/18] cxl: Add a dev_dbg() when a decoder was added to a port Robert Richter
2025-02-14 16:37 ` Jonathan Cameron
2025-02-20 17:45 ` Dave Jiang
2025-02-11 9:53 ` [PATCH v3 18/18] cxl/acpi: Unify CFMWS memory log messages with SRAT messages Robert Richter
2025-02-14 16:37 ` Jonathan Cameron
2025-02-20 17:46 ` Dave Jiang
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=20250214160725.0000662f@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.