Re: [PATCH V5 11/17] cxl/region: Add devm_cxl_pmem_add_region() for pmem region creation

Neeraj Kumar
2026-01-23T11:17:18Z

[-- Attachment #1: Type: text/plain, Size: 2380 bytes --]

On 15/01/26 06:17PM, Jonathan Cameron wrote:
>On Fri, 9 Jan 2026 18:14:31 +0530
>Neeraj Kumar <s.neeraj@samsung.com> 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 <dave.jiang@intel.com>
>> Signed-off-by: Neeraj Kumar <s.neeraj@samsung.com>
>
>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

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]