2c91dc1bcd
This includes support for the CXL commands, and adds the following packages: cxl-cli, cxl-devel, cxl-libs. Resolves: rhbz#2132167
165 lines
4.9 KiB
Diff
165 lines
4.9 KiB
Diff
From 0be46d9c6638903978d16388c765a1907d5970bc Mon Sep 17 00:00:00 2001
|
|
From: Dan Williams <dan.j.williams@intel.com>
|
|
Date: Sun, 23 Jan 2022 16:52:47 -0800
|
|
Subject: [PATCH 097/217] cxl/lib: Rename nvdimm bridge to pmem
|
|
|
|
The kernel has 2 object classes for connecting CXL to NVDIMM. There is an
|
|
'nvdimm-bridge' object (one per root CXL port) that represents a CXL NVDIMM
|
|
Bus, and there are 'pmem' object that represent CXL NVDIMM DIMM devices.
|
|
The object that the library is currently calling an nvdimm-bridge is
|
|
actually the 'pmem' object. Rename accordingly.
|
|
|
|
The exported function cxl_memdev_nvdimm_bridge_active() is not renamed, but
|
|
since it is a cxl_memdev operation and 'struct cxl_pmem' is an
|
|
implementation detail it is fine as is.
|
|
|
|
Link: https://lore.kernel.org/r/164298556712.3021641.15612755067301105130.stgit@dwillia2-desk3.amr.corp.intel.com
|
|
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
|
|
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
|
|
---
|
|
cxl/lib/libcxl.c | 56 +++++++++++++++++++++++------------------------
|
|
cxl/lib/private.h | 4 ++--
|
|
2 files changed, 30 insertions(+), 30 deletions(-)
|
|
|
|
diff --git a/cxl/lib/libcxl.c b/cxl/lib/libcxl.c
|
|
index 8d3cf80..9839f26 100644
|
|
--- a/cxl/lib/libcxl.c
|
|
+++ b/cxl/lib/libcxl.c
|
|
@@ -45,11 +45,11 @@ struct cxl_ctx {
|
|
void *private_data;
|
|
};
|
|
|
|
-static void free_bridge(struct cxl_nvdimm_bridge *bridge)
|
|
+static void free_pmem(struct cxl_pmem *pmem)
|
|
{
|
|
- free(bridge->dev_buf);
|
|
- free(bridge->dev_path);
|
|
- free(bridge);
|
|
+ free(pmem->dev_buf);
|
|
+ free(pmem->dev_path);
|
|
+ free(pmem);
|
|
}
|
|
|
|
static void free_memdev(struct cxl_memdev *memdev, struct list_head *head)
|
|
@@ -57,7 +57,7 @@ static void free_memdev(struct cxl_memdev *memdev, struct list_head *head)
|
|
if (head)
|
|
list_del_from(head, &memdev->list);
|
|
kmod_module_unref(memdev->module);
|
|
- free_bridge(memdev->bridge);
|
|
+ free_pmem(memdev->pmem);
|
|
free(memdev->firmware_version);
|
|
free(memdev->dev_buf);
|
|
free(memdev->dev_path);
|
|
@@ -213,36 +213,36 @@ CXL_EXPORT void cxl_set_log_priority(struct cxl_ctx *ctx, int priority)
|
|
ctx->ctx.log_priority = priority;
|
|
}
|
|
|
|
-static void *add_cxl_bridge(void *parent, int id, const char *br_base)
|
|
+static void *add_cxl_pmem(void *parent, int id, const char *br_base)
|
|
{
|
|
const char *devname = devpath_to_devname(br_base);
|
|
struct cxl_memdev *memdev = parent;
|
|
struct cxl_ctx *ctx = memdev->ctx;
|
|
- struct cxl_nvdimm_bridge *bridge;
|
|
+ struct cxl_pmem *pmem;
|
|
|
|
- dbg(ctx, "%s: bridge_base: \'%s\'\n", devname, br_base);
|
|
+ dbg(ctx, "%s: pmem_base: \'%s\'\n", devname, br_base);
|
|
|
|
- bridge = calloc(1, sizeof(*bridge));
|
|
- if (!bridge)
|
|
+ pmem = calloc(1, sizeof(*pmem));
|
|
+ if (!pmem)
|
|
goto err_dev;
|
|
- bridge->id = id;
|
|
+ pmem->id = id;
|
|
|
|
- bridge->dev_path = strdup(br_base);
|
|
- if (!bridge->dev_path)
|
|
+ pmem->dev_path = strdup(br_base);
|
|
+ if (!pmem->dev_path)
|
|
goto err_read;
|
|
|
|
- bridge->dev_buf = calloc(1, strlen(br_base) + 50);
|
|
- if (!bridge->dev_buf)
|
|
+ pmem->dev_buf = calloc(1, strlen(br_base) + 50);
|
|
+ if (!pmem->dev_buf)
|
|
goto err_read;
|
|
- bridge->buf_len = strlen(br_base) + 50;
|
|
+ pmem->buf_len = strlen(br_base) + 50;
|
|
|
|
- memdev->bridge = bridge;
|
|
- return bridge;
|
|
+ memdev->pmem = pmem;
|
|
+ return pmem;
|
|
|
|
err_read:
|
|
- free(bridge->dev_buf);
|
|
- free(bridge->dev_path);
|
|
- free(bridge);
|
|
+ free(pmem->dev_buf);
|
|
+ free(pmem->dev_path);
|
|
+ free(pmem);
|
|
err_dev:
|
|
return NULL;
|
|
}
|
|
@@ -319,7 +319,7 @@ static void *add_cxl_memdev(void *parent, int id, const char *cxlmem_base)
|
|
goto err_read;
|
|
memdev->buf_len = strlen(cxlmem_base) + 50;
|
|
|
|
- sysfs_device_parse(ctx, cxlmem_base, "pmem", memdev, add_cxl_bridge);
|
|
+ sysfs_device_parse(ctx, cxlmem_base, "pmem", memdev, add_cxl_pmem);
|
|
|
|
cxl_memdev_foreach(ctx, memdev_dup)
|
|
if (memdev_dup->id == memdev->id) {
|
|
@@ -430,18 +430,18 @@ static int is_enabled(const char *drvpath)
|
|
CXL_EXPORT int cxl_memdev_nvdimm_bridge_active(struct cxl_memdev *memdev)
|
|
{
|
|
struct cxl_ctx *ctx = cxl_memdev_get_ctx(memdev);
|
|
- struct cxl_nvdimm_bridge *bridge = memdev->bridge;
|
|
+ struct cxl_pmem *pmem = memdev->pmem;
|
|
char *path;
|
|
int len;
|
|
|
|
- if (!bridge)
|
|
+ if (!pmem)
|
|
return 0;
|
|
|
|
- path = bridge->dev_buf;
|
|
- len = bridge->buf_len;
|
|
+ path = pmem->dev_buf;
|
|
+ len = pmem->buf_len;
|
|
|
|
- if (snprintf(path, len, "%s/driver", bridge->dev_path) >= len) {
|
|
- err(ctx, "%s: nvdimm bridge buffer too small!\n",
|
|
+ if (snprintf(path, len, "%s/driver", pmem->dev_path) >= len) {
|
|
+ err(ctx, "%s: nvdimm pmem buffer too small!\n",
|
|
cxl_memdev_get_devname(memdev));
|
|
return 0;
|
|
}
|
|
diff --git a/cxl/lib/private.h b/cxl/lib/private.h
|
|
index 28f7e16..7c81e24 100644
|
|
--- a/cxl/lib/private.h
|
|
+++ b/cxl/lib/private.h
|
|
@@ -10,7 +10,7 @@
|
|
|
|
#define CXL_EXPORT __attribute__ ((visibility("default")))
|
|
|
|
-struct cxl_nvdimm_bridge {
|
|
+struct cxl_pmem {
|
|
int id;
|
|
void *dev_buf;
|
|
size_t buf_len;
|
|
@@ -30,7 +30,7 @@ struct cxl_memdev {
|
|
int payload_max;
|
|
size_t lsa_size;
|
|
struct kmod_module *module;
|
|
- struct cxl_nvdimm_bridge *bridge;
|
|
+ struct cxl_pmem *pmem;
|
|
unsigned long long serial;
|
|
};
|
|
|
|
--
|
|
2.27.0
|
|
|