@@ -1749,6 +1749,33 @@ NDCTL_EXPORT void ndctl_dimm_refresh_flags(struct ndctl_dimm *dimm)
parse_papr_flags(dimm, buf);
}
+static int populate_cxl_dimm_attributes(struct ndctl_dimm *dimm,
+ const char *dimm_base)
+{
+ int rc = 0;
+ char buf[SYSFS_ATTR_SIZE];
+ struct ndctl_ctx *ctx = dimm->bus->ctx;
+ char *path = calloc(1, strlen(dimm_base) + 100);
+ const char *bus_prefix = dimm->bus_prefix;
+
+ if (!path)
+ return -ENOMEM;
+
+ sprintf(path, "%s/%s/id", dimm_base, bus_prefix);
+ if (sysfs_read_attr(ctx, path, buf) == 0) {
+ dimm->unique_id = strdup(buf);
+ if (!dimm->unique_id) {
+ rc = -ENOMEM;
+ goto err_read;
+ }
+ }
+
+ err_read:
+
+ free(path);
+ return rc;
+}
+
static int populate_dimm_attributes(struct ndctl_dimm *dimm,
const char *dimm_base)
{
@@ -2018,6 +2045,7 @@ static void *add_dimm(void *parent, int id, const char *dimm_base)
rc = -ENOMEM;
goto out;
}
+ rc = populate_cxl_dimm_attributes(dimm, dimm_base);
}
if (rc == -ENODEV) {
With bus_prefix, retrieve the unique_id of CXL mem device. This will allow selecting a specific CXL mem device for the security test code. Signed-off-by: Dave Jiang <dave.jiang@intel.com> --- v2: - Fix commit subject. (Vishal) --- ndctl/lib/libndctl.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+)