diff mbox series

[3/4] ndctl/libndctl: Add retrieving of unique_id for cxl mem dev

Message ID 166379417347.433612.4934530706825880453.stgit@djiang5-desk3.ch.intel.com (mailing list archive)
State Accepted
Commit fd4df3ad7b25a7270dad8257a10c12df8b797cdb
Headers show
Series ndctl: Add security test for cxl devices through nvdimm | expand

Commit Message

Dave Jiang Sept. 21, 2022, 9:02 p.m. UTC
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>
---
 ndctl/lib/libndctl.c |   28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

Comments

Verma, Vishal L Dec. 13, 2022, 11:14 p.m. UTC | #1
Also s/cxl/CXL/On Wed, 2022-09-21 at 14:02 -0700, Dave Jiang wrote:

> Subject: [PATCH 3/4] ndctl/libndctl: Add retrieving of unique_id for cxl mem dev

"Allow retrieving" or just "Retrieve unique_id for.."

> 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.

Also s/cxl/CXL/

> 
> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
> ---
>  ndctl/lib/libndctl.c |   28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
> index d2e800bc840a..c569178b9a3a 100644
> --- a/ndctl/lib/libndctl.c
> +++ b/ndctl/lib/libndctl.c
> @@ -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) {
> 
>
diff mbox series

Patch

diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
index d2e800bc840a..c569178b9a3a 100644
--- a/ndctl/lib/libndctl.c
+++ b/ndctl/lib/libndctl.c
@@ -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) {