public inbox for nvdimm@lists.linux.dev
 help / color / mirror / Atom feed
From: Dave Jiang <dave.jiang@intel.com>
To: linux-cxl@vger.kernel.org, nvdimm@lists.linux.dev
Cc: alison.schofield@intel.com, vishal.l.verma@intel.com
Subject: [NDCTL PATCH] cxl: Add support for extended linear cache
Date: Tue, 14 Oct 2025 11:36:13 -0700	[thread overview]
Message-ID: <20251014183613.1699995-1-dave.jiang@intel.com> (raw)

Add the retrieval of extended linear cache if the sysfs attribute exists
and the libcxl function that retrieves the size of the extended linear
cache. Support for cxl list also is added and presents the json
attribute if the extended linear cache size is greater than 0.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
---
 cxl/json.c         | 10 ++++++++++
 cxl/lib/libcxl.c   | 10 ++++++++++
 cxl/lib/libcxl.sym |  5 +++++
 cxl/lib/private.h  |  1 +
 cxl/libcxl.h       |  2 ++
 5 files changed, 28 insertions(+)

diff --git a/cxl/json.c b/cxl/json.c
index bde4589065e7..e9cb88afa43f 100644
--- a/cxl/json.c
+++ b/cxl/json.c
@@ -994,6 +994,16 @@ struct json_object *util_cxl_region_to_json(struct cxl_region *region,
 			json_object_object_add(jregion, "size", jobj);
 	}
 
+	val = cxl_region_get_extended_linear_cache_size(region);
+	if (val > 0) {
+		jobj = util_json_object_size(val, flags);
+		if (jobj) {
+			json_object_object_add(jregion,
+					       "extended_linear_cache_size",
+					       jobj);
+		}
+	}
+
 	if (mode != CXL_DECODER_MODE_NONE) {
 		jobj = json_object_new_string(cxl_decoder_mode_name(mode));
 		if (jobj)
diff --git a/cxl/lib/libcxl.c b/cxl/lib/libcxl.c
index cafde1cee4e8..32728de9cab6 100644
--- a/cxl/lib/libcxl.c
+++ b/cxl/lib/libcxl.c
@@ -585,6 +585,10 @@ static void *add_cxl_region(void *parent, int id, const char *cxlregion_base)
 	else
 		region->size = strtoull(buf, NULL, 0);
 
+	sprintf(path, "%s/extended_linear_cache_size", cxlregion_base);
+	if (sysfs_read_attr(ctx, path, buf) == 0)
+		region->cache_size = strtoull(buf, NULL, 0);
+
 	sprintf(path, "%s/resource", cxlregion_base);
 	if (sysfs_read_attr(ctx, path, buf) == 0)
 		resource = strtoull(buf, NULL, 0);
@@ -744,6 +748,12 @@ CXL_EXPORT unsigned long long cxl_region_get_size(struct cxl_region *region)
 	return region->size;
 }
 
+CXL_EXPORT unsigned long long
+cxl_region_get_extended_linear_cache_size(struct cxl_region *region)
+{
+	return region->cache_size;
+}
+
 CXL_EXPORT unsigned long long cxl_region_get_resource(struct cxl_region *region)
 {
 	return region->start;
diff --git a/cxl/lib/libcxl.sym b/cxl/lib/libcxl.sym
index e01a676cdeb9..36a93c3c262a 100644
--- a/cxl/lib/libcxl.sym
+++ b/cxl/lib/libcxl.sym
@@ -300,3 +300,8 @@ LIBCXL_10 {
 global:
 	cxl_memdev_is_port_ancestor;
 } LIBCXL_9;
+
+LIBCXL_11 {
+global:
+	cxl_region_get_extended_linear_cache_size;
+} LIBCXL_10;
diff --git a/cxl/lib/private.h b/cxl/lib/private.h
index 7d5a1bcc14ac..542cdb7eec7c 100644
--- a/cxl/lib/private.h
+++ b/cxl/lib/private.h
@@ -174,6 +174,7 @@ struct cxl_region {
 	uuid_t uuid;
 	u64 start;
 	u64 size;
+	u64 cache_size;
 	unsigned int interleave_ways;
 	unsigned int interleave_granularity;
 	enum cxl_decode_state decode_state;
diff --git a/cxl/libcxl.h b/cxl/libcxl.h
index 54bc025b121d..9371aac943fb 100644
--- a/cxl/libcxl.h
+++ b/cxl/libcxl.h
@@ -327,6 +327,8 @@ int cxl_region_get_id(struct cxl_region *region);
 const char *cxl_region_get_devname(struct cxl_region *region);
 void cxl_region_get_uuid(struct cxl_region *region, uuid_t uu);
 unsigned long long cxl_region_get_size(struct cxl_region *region);
+unsigned long long
+cxl_region_get_extended_linear_cache_size(struct cxl_region *region);
 unsigned long long cxl_region_get_resource(struct cxl_region *region);
 enum cxl_decoder_mode cxl_region_get_mode(struct cxl_region *region);
 unsigned int cxl_region_get_interleave_ways(struct cxl_region *region);

base-commit: 38f04b06ac0b0d116b24cefc603cdeb479ab205b
-- 
2.51.0


             reply	other threads:[~2025-10-14 18:36 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-14 18:36 Dave Jiang [this message]
2025-10-16  5:42 ` [NDCTL PATCH] cxl: Add support for extended linear cache 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=20251014183613.1699995-1-dave.jiang@intel.com \
    --to=dave.jiang@intel.com \
    --cc=alison.schofield@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=nvdimm@lists.linux.dev \
    --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