On 15/01/26 06:17PM, Jonathan Cameron wrote:
On Fri,  9 Jan 2026 18:14:31 +0530
Neeraj Kumar <[email protected]> wrote:

devm_cxl_pmem_add_region() is used to create cxl region based on region
information scanned from LSA.

devm_cxl_add_region() is used to just allocate cxlr and its fields are
filled later by userspace tool using device attributes (*_store()).

Inspiration for devm_cxl_pmem_add_region() is taken from these device
attributes (_store*) calls. It allocates cxlr and fills information
parsed from LSA and calls device_add(&cxlr->dev) to initiate further
region creation porbes

Rename __create_region() to cxl_create_region(), which will be used
in later patch to create cxl region after fetching region information
from LSA.
You also add a couple of parameters. At very least say why here.

Not required now, I have created a separate patch for this.



Reviewed-by: Dave Jiang <[email protected]>
Signed-off-by: Neeraj Kumar <[email protected]>

A few things inline.

diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
index 26238fb5e8cf..13779aeacd8e 100644
--- a/drivers/cxl/core/region.c
+++ b/drivers/cxl/core/region.c


+static ssize_t alloc_region_dpa(struct cxl_endpoint_decoder *cxled, u64 size)
+{
+       int rc;
+
+       if (!size)
+               return -EINVAL;
+
+       if (!IS_ALIGNED(size, SZ_256M))
+               return -EINVAL;
+
+       rc = cxl_dpa_free(cxled);

Add a comment on why this make sense.  What already allocated dpa that we need
to clean up?

Inspiration of alloc_region_dpa() is taken from size_store(). But yes here its 
not
required. I have removed it accordingly in V6


+       if (rc)
+               return rc;
+
+       return cxl_dpa_alloc(cxled, size);
+}


-static struct cxl_region *__create_region(struct cxl_root_decoder *cxlrd,
-                                         enum cxl_partition_mode mode, int id)
+struct cxl_region *cxl_create_region(struct cxl_root_decoder *cxlrd,
+                                    enum cxl_partition_mode mode, int id,
+                                    struct cxl_pmem_region_params *pmem_params,
+                                    struct cxl_endpoint_decoder *cxled)

I'm a little dubious that the extra parameters are buried in this patch rather 
than
where we first need them or a separate patch that makes it clear what they are 
for.

Yes I have separated it out in V6.



Regards,
Neeraj


Reply via email to