On Wed, 19 Nov 2025 13:22:53 +0530
Neeraj Kumar <[email protected]> wrote:

> Using these attributes region label is added/deleted into LSA. These
> attributes are called from userspace (ndctl) after region creation.
> 
> Signed-off-by: Neeraj Kumar <[email protected]>
One quick addition to what Dave called out.

Thanks,

Jonathan

> diff --git a/drivers/cxl/core/pmem_region.c b/drivers/cxl/core/pmem_region.c
> index b45e60f04ff4..be4feb73aafc 100644
> --- a/drivers/cxl/core/pmem_region.c
> +++ b/drivers/cxl/core/pmem_region.c
> @@ -30,9 +30,100 @@ static void cxl_pmem_region_release(struct device *dev)
>       kfree(cxlr_pmem);
>  }
>  
> +static ssize_t region_label_update_store(struct device *dev,
> +                                      struct device_attribute *attr,
> +                                      const char *buf, size_t len)
> +{
> +     struct cxl_pmem_region *cxlr_pmem = to_cxl_pmem_region(dev);
> +     struct cxl_region *cxlr = cxlr_pmem->cxlr;
> +     ssize_t rc;
> +     bool update;
> +
> +     rc = kstrtobool(buf, &update);
> +     if (rc)
> +             return rc;
> +
> +     ACQUIRE(rwsem_write_kill, rwsem)(&cxl_rwsem.region);
> +     rc = ACQUIRE_ERR(rwsem_write_kill, &rwsem);
> +     if (rc)
I'd stick to one style for these.  Elsewhere you have
        if ((rc = ACQUIRE_ERR())

> +             return rc;
> +
> +     /* Region not yet committed */
> +     if (update && cxlr && cxlr->params.state != CXL_CONFIG_COMMIT) {
> +             dev_dbg(dev, "region not committed, can't update into LSA\n");
> +             return -ENXIO;
> +     }
> +
> +     if (!cxlr || !cxlr->cxlr_pmem || !cxlr->cxlr_pmem->nd_region)
> +             return 0;
> +
> +     rc = nd_region_label_update(cxlr->cxlr_pmem->nd_region);
> +     if (rc)
> +             return rc;
> +
> +     cxlr->params.state_region_label = CXL_REGION_LABEL_ACTIVE;
> +
> +     return len;
> +}

Reply via email to