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 |
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 --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) {
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(+)