From: Vishal Verma <vishal.l.verma@intel.com>
To: <linux-cxl@vger.kernel.org>
Cc: <nvdimm@lists.linux.dev>, Dan Williams <dan.j.williams@intel.com>,
Alison Schofield <alison.schofield@intel.com>,
Ira Weiny <ira.weiny@intel.com>,
Dave Jiang <dave.jiang@intel.com>,
Vishal Verma <vishal.l.verma@intel.com>
Subject: [ndctl PATCH v3 00/11] cxl: add region management
Date: Mon, 15 Aug 2022 13:22:03 -0600 [thread overview]
Message-ID: <20220815192214.545800-1-vishal.l.verma@intel.com> (raw)
Changes since v2[1]:
- Collect review tags
- Fix -r description in the cxl-list man page (Dan)
- Fix typo + some wordsmithing in man libcxl(3) (Dan)
- s/cxl_ep_decoder_get.../cxl_decoder_get.../ (Dan)
- Move regions invalidation from patch 10 to patch 5 (Dan)
- Consolidate mode string to enum in a common helper (Dan)
- Fix a mid-series compile breakage with printing memdev json in the
region listing.
- Remove the --ep-decoders option (Dan)
- Use a decoder->stale_regions list for stashing duplicate regions
during region creation. Add the necessary helpers around freeing
these.
- Don't free regions to invalidate them, use stale_regions instead (Dan)
- Fix a couple of bugs in the create-region unit test where the regions
array wasn't used correctly leading to weird failures
- Fix max_available_extent json listing to be a size instead of hex
- Add an equals case to the region ordering compare helper (Dan)
- Change the max extent calculations to explicitly add/subtract 1 as
needed (Dan)
[1]: https://lore.kernel.org/linux-cxl/20220810230914.549611-1-vishal.l.verma@intel.com/
---
Introduce the first cut at a 'cxl create-region' command, which uses the
ABI merged in the kernel in [2], and builds on the create-region foundation
laid out in [3].
This introduces libcxl objects for regions and their memdev mappings,
adds listing support for them, and libcxl APIs to create, enable,
disable, and destroy regions. These are consumed by respective cxl-cli
commands to perform the same region management operations.
The 'cxl create-region' command deserves a bit more detail. Its current
version can be considered a fundamental 'plumbing' implementation. It
allows, and in some cases, requires the user to specify the parameters
for the region being created. Future enhancements to this will allow a
simple 'cxl create-region' invocation to automatically pick suitable
root decoders, memdev endpoints, and interleave settings to create a
maximally sized and interleaved region.
Today, the create-region command requires the following from the user:
-d <root decoder> : the root decoder (CFMWS window) under which to
create the region
<targets>: the memdev (-m) targets that will form the new region
It can pick the following settings automatically (though the user can
also override these if desired):
-w : interleave ways - picked based on the number of targets supplied
-g : interleave granularity - selects the interleave granularity
advertised by the root decoder
-t : type of region - defaults to pmem. The ram (volatile) type is not
supported yet.
-s : size of region - deduced based on sizes of the specified targets
[2]: https://git.kernel.org/torvalds/c/c235698355fa94df7073b51befda7d4be00a0e23
[3]: https://lore.kernel.org/linux-cxl/165781810717.1555691.1411727384567016588.stgit@dwillia2-xfh.jf.intel.com/
Vishal Verma (11):
libcxl: add a depth attribute to cxl_port
cxl/port: Consolidate the debug option in cxl-port man pages
cxl/memdev: refactor decoder mode string parsing
libcxl: Introduce libcxl region and mapping objects
cxl-cli: add region listing support
libcxl: add low level APIs for region creation
cxl: add a 'create-region' command
cxl: add commands to {enable,disable,destroy}-region
cxl/list: make memdevs and regions the default listing
test: add a cxl-create-region test
cxl/decoder: add a max_available_extent attribute
Documentation/cxl/bus-option.txt | 5 +
Documentation/cxl/cxl-create-region.txt | 112 +++
Documentation/cxl/cxl-destroy-region.txt | 41 ++
Documentation/cxl/cxl-disable-port.txt | 5 +-
Documentation/cxl/cxl-disable-region.txt | 36 +
Documentation/cxl/cxl-enable-port.txt | 5 +-
Documentation/cxl/cxl-enable-region.txt | 36 +
Documentation/cxl/cxl-list.txt | 13 +-
Documentation/cxl/debug-option.txt | 4 +
Documentation/cxl/decoder-option.txt | 6 +
Documentation/cxl/lib/libcxl.txt | 69 ++
Documentation/cxl/region-description.txt | 7 +
cxl/lib/private.h | 39 +
cxl/lib/libcxl.c | 902 ++++++++++++++++++++++-
cxl/builtin.h | 4 +
cxl/filter.h | 6 +
cxl/json.h | 5 +
cxl/libcxl.h | 80 +-
cxl/cxl.c | 4 +
cxl/filter.c | 158 +++-
cxl/json.c | 131 ++++
cxl/list.c | 26 +-
cxl/memdev.c | 11 +-
cxl/region.c | 753 +++++++++++++++++++
.clang-format | 2 +
Documentation/cxl/meson.build | 7 +
cxl/lib/libcxl.sym | 37 +
cxl/meson.build | 1 +
test/cxl-create-region.sh | 125 ++++
test/meson.build | 2 +
30 files changed, 2580 insertions(+), 52 deletions(-)
create mode 100644 Documentation/cxl/bus-option.txt
create mode 100644 Documentation/cxl/cxl-create-region.txt
create mode 100644 Documentation/cxl/cxl-destroy-region.txt
create mode 100644 Documentation/cxl/cxl-disable-region.txt
create mode 100644 Documentation/cxl/cxl-enable-region.txt
create mode 100644 Documentation/cxl/debug-option.txt
create mode 100644 Documentation/cxl/decoder-option.txt
create mode 100644 Documentation/cxl/region-description.txt
create mode 100644 cxl/region.c
create mode 100644 test/cxl-create-region.sh
--
2.37.1
next reply other threads:[~2022-08-15 19:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-15 19:22 Vishal Verma [this message]
2022-08-15 19:22 ` [ndctl PATCH v3 01/11] libcxl: add a depth attribute to cxl_port Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 02/11] cxl/port: Consolidate the debug option in cxl-port man pages Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 03/11] cxl/memdev: refactor decoder mode string parsing Vishal Verma
2022-08-15 22:57 ` Dan Williams
2022-08-15 19:22 ` [ndctl PATCH v3 04/11] libcxl: Introduce libcxl region and mapping objects Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 05/11] cxl-cli: add region listing support Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 06/11] libcxl: add low level APIs for region creation Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 07/11] cxl: add a 'create-region' command Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 08/11] cxl: add commands to {enable,disable,destroy}-region Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 09/11] cxl/list: make memdevs and regions the default listing Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 10/11] test: add a cxl-create-region test Vishal Verma
2022-08-15 19:22 ` [ndctl PATCH v3 11/11] cxl/decoder: add a max_available_extent attribute Vishal Verma
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=20220815192214.545800-1-vishal.l.verma@intel.com \
--to=vishal.l.verma@intel.com \
--cc=alison.schofield@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=ira.weiny@intel.com \
--cc=linux-cxl@vger.kernel.org \
--cc=nvdimm@lists.linux.dev \
/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;
as well as URLs for NNTP newsgroup(s).