From: Robert Richter <rrichter@amd.com>
To: 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>,
Jonathan Cameron <jonathan.cameron@huawei.com>,
Dave Jiang <dave.jiang@intel.com>,
Davidlohr Bueso <dave@stgolabs.net>
Cc: <linux-cxl@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
"Robert Richter" <rrichter@amd.com>
Subject: [PATCH v2 0/5] Address translation for HDM decoding
Date: Mon, 1 Jul 2024 19:47:48 +0200 [thread overview]
Message-ID: <20240701174754.967954-1-rrichter@amd.com> (raw)
Default expectation of Linux is that HPA == SPA, which means that
hardware addresses in the decoders are the same as the kernel sees
them. However, there are platforms where this is not the case and an
address translation between decoder's (HPA) and the system's physical
addresses (SPA) is needed.
This series implements address translation for HDM decoding. The
implementation follows the rule that the representation of hardware
address ranges in the kernel are all SPA. If decoder registers (HDM
decoder cap or register range) are not SPA, a base offset must be
applied. Translation happens when accessing the registers back and
forth. After a read access an address will be converted to SPA and
before a write access the programmed address is translated from an
SPA. The decoder register access can be easily encapsulated by address
translation and thus there are only a few places where translation is
needed and the code must be changed. This is implemented in patch #2,
patch #1 is a prerequisite.
Address translation is restricted to platforms that need it. As such a
platform check is needed and a flag is introduced for this (patch #3).
For address translation the base offset must be determined for the
memory domain. Depending on the platform there are various options for
this. The address range in the CEDT's CFWMS entry of the CXL host
bridge can be used to determine the decoder's base address (patch
#4). This is enabled for AMD Zen4 platforms (patch #5).
Changelog:
v2:
* Fixed build error for other archs [kbot]
Robert Richter (5):
cxl/hdm: Moving HDM specific code to core/hdm.c.
cxl/hdm: Implement address translation for HDM decoding
cxl/acpi: Add platform flag for HPA address translation
cxl/hdm: Setup HPA base for address translation using the HPA window
in CFMWS
cxl/acpi: Enable address translation for Zen4 platforms
drivers/cxl/acpi.c | 16 +++
drivers/cxl/core/core.h | 2 +
drivers/cxl/core/hdm.c | 245 ++++++++++++++++++++++++++++++++++++++--
drivers/cxl/core/pci.c | 119 +------------------
drivers/cxl/cxl.h | 2 +
drivers/cxl/cxlmem.h | 4 +
drivers/cxl/cxlpci.h | 3 -
7 files changed, 262 insertions(+), 129 deletions(-)
base-commit: 1613e604df0cd359cf2a7fbd9be7a0bcfacfabd0
--
2.39.2
next reply other threads:[~2024-07-01 17:48 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-01 17:47 Robert Richter [this message]
2024-07-01 17:47 ` [PATCH v2 1/5] cxl/hdm: Moving HDM specific code to core/hdm.c Robert Richter
2024-07-12 0:32 ` Dan Williams
2024-07-01 17:47 ` [PATCH v2 2/5] cxl/hdm: Implement address translation for HDM decoding Robert Richter
2024-07-12 1:03 ` Dan Williams
2024-07-13 7:40 ` Robert Richter
2024-07-01 17:47 ` [PATCH v2 3/5] cxl/acpi: Add platform flag for HPA address translation Robert Richter
2024-07-12 1:27 ` Dan Williams
2024-07-13 7:41 ` Robert Richter
2024-07-01 17:47 ` [PATCH v2 4/5] cxl/hdm: Setup HPA base for address translation using the HPA window in CFMWS Robert Richter
2024-07-01 17:47 ` [PATCH v2 5/5] cxl/acpi: Enable address translation for Zen4 platforms Robert Richter
2024-07-11 0:02 ` [PATCH v2 0/5] Address translation for HDM decoding Alison Schofield
2024-07-11 0:26 ` Alison Schofield
2024-07-11 19:03 ` Robert Richter
2024-07-25 22:00 ` Gregory Price
2024-08-06 10:54 ` Robert Richter
2024-08-16 18:32 ` Gregory Price
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=20240701174754.967954-1-rrichter@amd.com \
--to=rrichter@amd.com \
--cc=alison.schofield@intel.com \
--cc=dan.j.williams@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=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