Re: [PATCH 2/3] cxl: Set target type of region with that of root decoder

From: Huang, Ying
Date: Thu Aug 01 2024 - 02:32:43 EST


Alison Schofield <alison.schofield@xxxxxxxxx> writes:

> On Mon, Jul 29, 2024 at 04:46:10PM +0800, Ying Huang wrote:
>> Now, the target type of region is hard-coded to HOSTONLYMEM, because
>> only type3 expanders are supported. To support type2 accelerators,
>> set the target type of region root decoder with that of the root
>> decoder.
>
> Hi Ying,
>
> If the target type of a region is always the same as it's root decoder,
> (is it?)

IIUC, it is. Do you know when they may be different?

> why do we store it as an attribute of the region. Can we look
> it up when needed?

Yes. This is possible via to_cxl_root_decoder(). It's just
a little inconvenient.

> A bit more below -
>
>>
>> Signed-off-by: "Huang, Ying" <ying.huang@xxxxxxxxx>
>> Suggested-by: Dan Williams <dan.j.williams@xxxxxxxxx>
>> Cc: Davidlohr Bueso <dave@xxxxxxxxxxxx>
>> Cc: Jonathan Cameron <jonathan.cameron@xxxxxxxxxx>
>> Cc: Dave Jiang <dave.jiang@xxxxxxxxx>
>> Cc: Alison Schofield <alison.schofield@xxxxxxxxx>
>> Cc: Vishal Verma <vishal.l.verma@xxxxxxxxx>
>> Cc: Ira Weiny <ira.weiny@xxxxxxxxx>
>> Cc: Alejandro Lucero <alucerop@xxxxxxx>
>> ---
>> drivers/cxl/core/region.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c
>> index 21ad5f242875..9a483c8a32fd 100644
>> --- a/drivers/cxl/core/region.c
>> +++ b/drivers/cxl/core/region.c
>> @@ -2545,7 +2545,8 @@ static struct cxl_region *__create_region(struct cxl_root_decoder *cxlrd,
>> return ERR_PTR(-EBUSY);
>> }
>>
>> - return devm_cxl_add_region(cxlrd, id, mode, CXL_DECODER_HOSTONLYMEM);
>> + return devm_cxl_add_region(cxlrd, id, mode,
>> + cxlrd->cxlsd.cxld.target_type);
>> }
>
> Passing the 'cxlrd' and then a piece of the cxlrd (.target_type) looks
> redundant.

Yes. We can remove the parameter. Will change this if we still need
cxlr->type. Thanks!

--
Best Regards,
Huang, Ying

>
> -- Alison
>
>>
>> static ssize_t create_pmem_region_store(struct device *dev,
>> --
>> 2.39.2
>>