Message ID | 20241230214445.27602-10-alejandro.lucero-palau@amd.com |
---|---|
State | New |
Headers | show |
Series | cxl: add type2 device basic support | expand |
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}().
On 1/18/25 01:58, Dan Williams wrote: > 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}(). Yes, it is now all more clear after the "DPA layout mess" work-in-progress. I'll drop the release_resource in patch 8. Thanks
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); kfree(probe_data->cxl->cxlds); kfree(probe_data->cxl); }