Re: [PATCH v8 08/27] cxl: add functions for resource request/release by a driver
From: Alejandro Lucero Palau <hidden>
Date: 2024-12-27 08:06:16
Also in:
linux-cxl
On 12/24/24 17:25, Jonathan Cameron wrote:
On Mon, 16 Dec 2024 16:10:23 +0000 alejandro.lucero-palau@amd.com wrote:quoted
From: Alejandro Lucero <redacted> Create accessors for an accel driver requesting and releasing a resource. Signed-off-by: Alejandro Lucero <redacted> Reviewed-by: Ben Cheatham <redacted> Reviewed-by: Zhi Wang <redacted> Reviewed-by: Fan Ni <redacted>Hi Alejandro, Minor comment inline. Either way Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>quoted
--- drivers/cxl/core/memdev.c | 45 +++++++++++++++++++++++++++++++++++++++ include/cxl/cxl.h | 2 ++ 2 files changed, 47 insertions(+)diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index 99f533caae1e..c414b0fbbead 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c@@ -744,6 +744,51 @@ int cxl_set_resource(struct cxl_dev_state *cxlds, struct resource res, } EXPORT_SYMBOL_NS_GPL(cxl_set_resource, "CXL"); +int cxl_request_resource(struct cxl_dev_state *cxlds, enum cxl_resource type) +{ + switch (type) { + case CXL_RES_RAM: + if (!resource_size(&cxlds->ram_res)) { + dev_err(cxlds->dev, + "resource request for ram with size 0\n"); + return -EINVAL; + } + + return request_resource(&cxlds->dpa_res, &cxlds->ram_res); + case CXL_RES_PMEM: + if (!resource_size(&cxlds->pmem_res)) { + dev_err(cxlds->dev, + "resource request for pmem with size 0\n"); + return -EINVAL; + } + return request_resource(&cxlds->dpa_res, &cxlds->pmem_res); + default: + dev_err(cxlds->dev, "unsupported resource type (%u)\n", type); + return -EINVAL; + } +} +EXPORT_SYMBOL_NS_GPL(cxl_request_resource, "CXL"); + +int cxl_release_resource(struct cxl_dev_state *cxlds, enum cxl_resource type) +{ + int rc; + + switch (type) { + case CXL_RES_RAM: + rc = release_resource(&cxlds->ram_res);return release_resource() unless a later patch add something that happens after this...quoted
+ break; + case CXL_RES_PMEM: + rc = release_resource(&cxlds->pmem_res);samequoted
+ break; + default: + dev_err(cxlds->dev, "unknown resource type (%u)\n", type); + return -EINVAL; + } + + return rc;With above, this isn't needed.
It is cleaner. I'll do. Thanks
quoted
+} +EXPORT_SYMBOL_NS_GPL(cxl_release_resource, "CXL"); + static int cxl_memdev_release_file(struct inode *inode, struct file *file) { struct cxl_memdev *cxlmd =diff --git a/include/cxl/cxl.h b/include/cxl/cxl.h index 18fb01adcf19..44664c9928a4 100644 --- a/include/cxl/cxl.h +++ b/include/cxl/cxl.h@@ -42,4 +42,6 @@ bool cxl_pci_check_caps(struct cxl_dev_state *cxlds, unsigned long *expected_caps, unsigned long *current_caps); int cxl_pci_accel_setup_regs(struct pci_dev *pdev, struct cxl_dev_state *cxlds); +int cxl_request_resource(struct cxl_dev_state *cxlds, enum cxl_resource type); +int cxl_release_resource(struct cxl_dev_state *cxlds, enum cxl_resource type); #endif