The typical case is that CXL devices are pure ram devices. Only emit capacity sizes when they are non-zero to avoid confusion around whether pmem is available via partitioning or not.
The confusion being that a user may assign more meaning to the zero size value than it actually deserves. A zero value for either pmem or ram, doesn't indicate the devices capability for either mode. Use the -I option to cxl list to include paritition info in the memdev listing. That will explicitly show the ram and pmem capabilities of the device. Do the same for ram_size on the odd case that someone builds a pure pmem device. Cc: Alison Schofield <alison.schofi...@intel.com> [alison: clarify changelog] Signed-off-by: Dan Williams <dan.j.willi...@intel.com> --- Documentation/cxl/cxl-list.txt | 5 ----- cxl/json.c | 20 +++++++++++++------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Documentation/cxl/cxl-list.txt b/Documentation/cxl/cxl-list.txt index 14a2b4bb5c2a..56229abcb053 100644 --- a/Documentation/cxl/cxl-list.txt +++ b/Documentation/cxl/cxl-list.txt @@ -70,7 +70,6 @@ configured. { "memdev":"mem0", "pmem_size":"256.00 MiB (268.44 MB)", - "ram_size":0, "serial":"0", "host":"0000:35:00.0" } @@ -88,7 +87,6 @@ EXAMPLE { "memdev":"mem0", "pmem_size":268435456, - "ram_size":0, "serial":0, "host":"0000:35:00.0" } @@ -101,7 +99,6 @@ EXAMPLE { "memdev":"mem0", "pmem_size":"256.00 MiB (268.44 MB)", - "ram_size":0, "serial":"0" } ] @@ -129,7 +126,6 @@ OPTIONS { "memdev":"mem0", "pmem_size":268435456, - "ram_size":0, "serial":0 }, { @@ -204,7 +200,6 @@ OPTIONS [ { "memdev":"mem0", - "pmem_size":0, "ram_size":273535729664, "partition_info":{ "total_size":273535729664, diff --git a/cxl/json.c b/cxl/json.c index 2f3639ede2f8..292e8428ccee 100644 --- a/cxl/json.c +++ b/cxl/json.c @@ -305,7 +305,7 @@ struct json_object *util_cxl_memdev_to_json(struct cxl_memdev *memdev, { const char *devname = cxl_memdev_get_devname(memdev); struct json_object *jdev, *jobj; - unsigned long long serial; + unsigned long long serial, size; int numa_node; jdev = json_object_new_object(); @@ -316,13 +316,19 @@ struct json_object *util_cxl_memdev_to_json(struct cxl_memdev *memdev, if (jobj) json_object_object_add(jdev, "memdev", jobj); - jobj = util_json_object_size(cxl_memdev_get_pmem_size(memdev), flags); - if (jobj) - json_object_object_add(jdev, "pmem_size", jobj); + size = cxl_memdev_get_pmem_size(memdev); + if (size) { + jobj = util_json_object_size(size, flags); + if (jobj) + json_object_object_add(jdev, "pmem_size", jobj); + } - jobj = util_json_object_size(cxl_memdev_get_ram_size(memdev), flags); - if (jobj) - json_object_object_add(jdev, "ram_size", jobj); + size = cxl_memdev_get_ram_size(memdev); + if (size) { + jobj = util_json_object_size(size, flags); + if (jobj) + json_object_object_add(jdev, "ram_size", jobj); + } if (flags & UTIL_JSON_HEALTH) { jobj = util_cxl_memdev_health_to_json(memdev, flags);