Re: [PATCH v9 09/27] sfc: request cxl ram resource

Dan Williams
2025-01-18T01:59:42Z

alejandro.lucero-palau@ wrote:
> From: Alejandro Lucero <alucerop@amd.com>
>
> Use cxl accessor for obtaining the ram resource the device advertises.
>
> Signed-off-by: Alejandro Lucero <alucerop@amd.com>
> Reviewed-by: Martin Habets <habetsm.xilinx@gmail.com>
> Reviewed-by: Fan Ni <fan.ni@samsung.com>
> Acked-by: Edward Cree <ecree.xilinx@gmail.com>
> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> drivers/net/ethernet/sfc/efx_cxl.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/net/ethernet/sfc/efx_cxl.c b/drivers/net/ethernet/sfc/efx_cxl.c
> index 29368d010adc..2031f08ee689 100644
> --- a/drivers/net/ethernet/sfc/efx_cxl.c
> +++ b/drivers/net/ethernet/sfc/efx_cxl.c
> @@ -85,6 +85,12 @@ int efx_cxl_init(struct efx_probe_data *probe_data)
> goto err_resource_set;
> }
>
> + rc = cxl_request_resource(cxl->cxlds, CXL_RES_RAM);
> + if (rc) {
> + pci_err(pci_dev, "CXL request resource failed");
> + goto err_resource_set;
> + }
> +
> probe_data->cxl = cxl;
>
> return 0;
> @@ -99,6 +105,7 @@ int efx_cxl_init(struct efx_probe_data *probe_data)
> void efx_cxl_exit(struct efx_probe_data *probe_data)
> {
> if (probe_data->cxl) {
> + cxl_release_resource(probe_data->cxl->cxlds, CXL_RES_RAM);

Given that the DPA layout is a static property of 'struct cxl_dev_state'
once set there is no need to release it. Notice how there is no release
in the memdev case either. The 'release' is freeing @cxlds.

Now, any DPA reservations from that partition need to be released, but
those releases are with respect to cxl_dpa_{alloc,free}().