cxl/region: Support empty uuids for non-pmem regions
Shipping versions of the cxl-cli utility expect all regions to have a 'uuid' attribute. In preparation for 'ram' regions, update the 'uuid' attribute to return an empty string which satisfies the current expectations of 'cxl list -R'. Otherwise, 'cxl list -R' fails in the presence of regions with the 'uuid' attribute missing. Force the attribute to be read-only as there is no facility or expectation for a 'ram' region to recall its uuid from one boot to the next. Reviewed-by: Vishal Verma <vishal.l.verma@intel.com> Tested-by: Fan Ni <fan.ni@samsung.com> Reviewed-by: Ira Weiny <ira.weiny@intel.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Link: https://lore.kernel.org/r/167601994558.1924368.12612811533724694444.stgit@dwillia2-xfh.jf.intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
7d505f982f
commit
a8e7d558f7
@ -317,7 +317,8 @@ Contact: linux-cxl@vger.kernel.org
|
||||
Description:
|
||||
(RW) Write a unique identifier for the region. This field must
|
||||
be set for persistent regions and it must not conflict with the
|
||||
UUID of another region.
|
||||
UUID of another region. For volatile ram regions this
|
||||
attribute is a read-only empty string.
|
||||
|
||||
|
||||
What: /sys/bus/cxl/devices/regionZ/interleave_granularity
|
||||
|
@ -45,7 +45,10 @@ static ssize_t uuid_show(struct device *dev, struct device_attribute *attr,
|
||||
rc = down_read_interruptible(&cxl_region_rwsem);
|
||||
if (rc)
|
||||
return rc;
|
||||
rc = sysfs_emit(buf, "%pUb\n", &p->uuid);
|
||||
if (cxlr->mode != CXL_DECODER_PMEM)
|
||||
rc = sysfs_emit(buf, "\n");
|
||||
else
|
||||
rc = sysfs_emit(buf, "%pUb\n", &p->uuid);
|
||||
up_read(&cxl_region_rwsem);
|
||||
|
||||
return rc;
|
||||
@ -300,8 +303,12 @@ static umode_t cxl_region_visible(struct kobject *kobj, struct attribute *a,
|
||||
struct device *dev = kobj_to_dev(kobj);
|
||||
struct cxl_region *cxlr = to_cxl_region(dev);
|
||||
|
||||
/*
|
||||
* Support tooling that expects to find a 'uuid' attribute for all
|
||||
* regions regardless of mode.
|
||||
*/
|
||||
if (a == &dev_attr_uuid.attr && cxlr->mode != CXL_DECODER_PMEM)
|
||||
return 0;
|
||||
return 0444;
|
||||
return a->mode;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user