Re: [PATCH v2 03/15] cxl: add function for type2 resource request

Zhi Wang
2024-08-09T09:01:49Z

On Mon, 15 Jul 2024 18:28:23 +0100
<alejandro.lucero-palau@amd.com> wrote:

> From: Alejandro Lucero <alucerop@amd.com>
>
> Create a new function for a type2 device requesting a resource
> passing the opaque struct to work with.
>
> Signed-off-by: Alejandro Lucero <alucerop@amd.com>
> ---
> drivers/cxl/core/memdev.c | 13 +++++++++++++
> drivers/net/ethernet/sfc/efx_cxl.c | 7 ++++++-
> include/linux/cxl_accel_mem.h | 1 +
> 3 files changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c
> index 61b5d35b49e7..04c3a0f8bc2e 100644
> --- a/drivers/cxl/core/memdev.c
> +++ b/drivers/cxl/core/memdev.c
> @@ -744,6 +744,19 @@ void cxl_accel_set_resource(struct cxl_dev_state
> *cxlds, struct resource res, }
> EXPORT_SYMBOL_NS_GPL(cxl_accel_set_resource, CXL);
>
> +int cxl_accel_request_resource(struct cxl_dev_state *cxlds, bool
> is_ram) +{
> + int rc;
> +

In PATCH 1, you got the resource type enumeration. Let's use them here
instead of a bool.

> + if (is_ram)
> + rc = request_resource(&cxlds->dpa_res,
> &cxlds->ram_res);
> + else
> + rc = request_resource(&cxlds->dpa_res,
> &cxlds->pmem_res); +
> + return rc;
> +}
> +EXPORT_SYMBOL_NS_GPL(cxl_accel_request_resource, CXL);
> +
> static int cxl_memdev_release_file(struct inode *inode, struct file
> *file) {
> struct cxl_memdev *cxlmd =
> diff --git a/drivers/net/ethernet/sfc/efx_cxl.c
> b/drivers/net/ethernet/sfc/efx_cxl.c index 10c4fb915278..9cefcaf3caca
> 100644 --- a/drivers/net/ethernet/sfc/efx_cxl.c
> +++ b/drivers/net/ethernet/sfc/efx_cxl.c
> @@ -48,8 +48,13 @@ void efx_cxl_init(struct efx_nic *efx)
> res = DEFINE_RES_MEM_NAMED(0, EFX_CTPIO_BUFFER_SIZE, "ram");
> cxl_accel_set_resource(cxl->cxlds, res, CXL_ACCEL_RES_RAM);
>
> - if (cxl_pci_accel_setup_regs(pci_dev, cxl->cxlds))
> + if (cxl_pci_accel_setup_regs(pci_dev, cxl->cxlds)) {
> pci_info(pci_dev, "CXL accel setup regs failed");
> + return;
> + }
> +
> + if (cxl_accel_request_resource(cxl->cxlds, true))
> + pci_info(pci_dev, "CXL accel resource request
> failed"); }
>
>

The guidelines of error reporting from a driver is mostly considered
from the user perspective. If it is an error, shout, let the user know
what happened. Otherwise, we usually don't disturb the user other than
telling them we are loaded and everything works fine.

Please use pci_err() instead. So the user can spot it from a
message folder filtered by error level in a kernel dmesg logger.

> diff --git a/include/linux/cxl_accel_mem.h
> b/include/linux/cxl_accel_mem.h index ca7af4a9cefc..c7b254edc096
> 100644 --- a/include/linux/cxl_accel_mem.h
> +++ b/include/linux/cxl_accel_mem.h
> @@ -20,4 +20,5 @@ void cxl_accel_set_serial(cxl_accel_state *cxlds,
> u64 serial); void cxl_accel_set_resource(struct cxl_dev_state *cxlds,
> struct resource res, enum accel_resource);
> int cxl_pci_accel_setup_regs(struct pci_dev *pdev, struct
> cxl_dev_state *cxlds); +int cxl_accel_request_resource(struct
> cxl_dev_state *cxlds, bool is_ram); #endif