From: Dan Williams <dan.j.williams@intel.com>
To: Robert Richter <rrichter@amd.com>,
Dan Williams <dan.j.williams@intel.com>
Cc: Davidlohr Bueso <dave@stgolabs.net>,
Jonathan Cameron <jonathan.cameron@huawei.com>,
Dave Jiang <dave.jiang@intel.com>,
"Alison Schofield" <alison.schofield@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>,
Ira Weiny <ira.weiny@intel.com>, <linux-cxl@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] cxl/pci: Fix disabling CXL memory for zero-based addressing
Date: Tue, 13 Feb 2024 10:40:07 -0800 [thread overview]
Message-ID: <65cbb787e73c_29b129432@dwillia2-mobl3.amr.corp.intel.com.notmuch> (raw)
In-Reply-To: <Zctg4Lx_y_hbChUW@rric.localdomain>
Robert Richter wrote:
> Dan,
>
> On 09.02.24 12:22:01, Dan Williams wrote:
> > Robert Richter wrote:
>
> > > diff --git a/drivers/cxl/core/pci.c b/drivers/cxl/core/pci.c
> > > index 569354a5536f..3a36a2f0c94f 100644
> > > --- a/drivers/cxl/core/pci.c
> > > +++ b/drivers/cxl/core/pci.c
> > > @@ -466,6 +466,18 @@ int cxl_hdm_decode_init(struct cxl_dev_state *cxlds, struct cxl_hdm *cxlhdm,
> > > for (i = 0, allowed = 0; info->mem_enabled && i < info->ranges; i++) {
> > > struct device *cxld_dev;
> > >
> > > + /*
> > > + * Handle zero-based hardware addresses
> > > + */
> > > + if (!info->dvsec_range[i].start &&
> > > + info->dvsec_range[i].end != CXL_RESOURCE_NONE &&
> > > + info->dvsec_range[i].end) {
> > > + dev_dbg(dev, "Zero-based hardware range found [%#llx - %#llx]\n",
> > > + info->dvsec_range[i].start, info->dvsec_range[i].end);
> > > + allowed++;
> > > + continue;
> > > + }
> > > +
> >
> > I am not comfortable with this. It should be checking a platform
> > specific quirk, or similar for the possibility of HPA != SPA. The
> > entirety of the Linux CXL subsystem is built on the assumption that HPA
> > == SPA, and if a platform wants to inject an offset between those Linux
> > needs some way to enumerate that it is running in that new world. Yes,
> > nothing in the CXL specification precludes HPA != SPA, but Linux has
> > long since shipped the opposite assumption.
>
> this check prevents the memory from disabling an enabled decoder. So it
> just keeps everything as it comes out of firmware.
>
> Can you explain the motivation why active memory is disabled?
It is a sanity check that Linux is operating in a CXL world that it
understands. The fundamental assumption is that the CFMWS correctly
conveys the CXL space, and that the HW decoder resources match platform
expectations match Linux resource management.
> This may take system memory offline and could lead to a kernel hang.
Yes, that is not an unreasonable result when Linux fundamental
assumptions are violated.
> The same could happen if the CEDT is broken or just missing (it is not
> mandatory for 1.1). Such systems just die when booting. So the check
> to take memory offline should be changed in a way that it will be safe
> to disable it.
>
> A platform check would fix that only for certain systems.
I am not worried about platforms that accidentally break the CEDT, those
mistakes are typically caught pre-production. Otherwise, if the platform
is designed to break assumptions then Linux needs explicit enabling for
the address translation sitting between the endpoint and the platform
address map.
next prev parent reply other threads:[~2024-02-13 18:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-09 19:34 Robert Richter
2024-02-09 20:22 ` Dan Williams
2024-02-09 23:44 ` Dan Williams
2024-02-13 12:30 ` Robert Richter
2024-02-13 18:40 ` Dan Williams [this message]
2024-02-13 19:09 ` Robert Richter
2024-02-13 19:45 ` Dan Williams
2024-02-14 10:06 ` 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=65cbb787e73c_29b129432@dwillia2-mobl3.amr.corp.intel.com.notmuch \
--to=dan.j.williams@intel.com \
--cc=alison.schofield@intel.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=ira.weiny@intel.com \
--cc=jonathan.cameron@huawei.com \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rrichter@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
all inboxes | Powered by JetHome®