aboutsummaryrefslogtreecommitdiff
path: root/kernel/rpmsg/ethosu_rpmsg_network.c
diff options
context:
space:
mode:
authorMikael Olsson <mikael.olsson@arm.com>2024-04-04 17:28:52 +0200
committerMikael Olsson <mikael.olsson@arm.com>2024-04-08 11:33:31 +0200
commitd80345fa00fea2816787ff3864318382edfd4949 (patch)
treedb4fc59187b1da9ee3c0db0410572c0e9302273f /kernel/rpmsg/ethosu_rpmsg_network.c
parentb2f4a2cd2de6647c9e6d6d4db9108a81d4757e33 (diff)
downloadethos-u-linux-driver-stack-d80345fa00fea2816787ff3864318382edfd4949.tar.gz
Add additional error logging in NPU driver
To make it easier to distinguish where an error occurred in the NPU driver, additional logging has been added to the error cases. Change-Id: I9d744e7adf3ba3098d456d1f3c2859aa0ce66de4 Signed-off-by: Mikael Olsson <mikael.olsson@arm.com>
Diffstat (limited to 'kernel/rpmsg/ethosu_rpmsg_network.c')
-rw-r--r--kernel/rpmsg/ethosu_rpmsg_network.c34
1 files changed, 27 insertions, 7 deletions
diff --git a/kernel/rpmsg/ethosu_rpmsg_network.c b/kernel/rpmsg/ethosu_rpmsg_network.c
index 38d7db2..cf36f2d 100644
--- a/kernel/rpmsg/ethosu_rpmsg_network.c
+++ b/kernel/rpmsg/ethosu_rpmsg_network.c
@@ -108,7 +108,7 @@ static long ethosu_rpmsg_network_ioctl(struct file *file,
case ETHOSU_IOCTL_NETWORK_INFO: {
struct ethosu_uapi_network_info uapi = { 0 };
- dev_dbg(dev, "Network ioctl: Network info. net=0x%pK\n", net);
+ dev_dbg(dev, "Network ioctl: Network info. net=0x%pK", net);
ret = ethosu_rpmsg_network_info_request(dev, net->mailbox, net,
&uapi);
@@ -122,12 +122,14 @@ static long ethosu_rpmsg_network_ioctl(struct file *file,
struct ethosu_uapi_inference_create uapi;
if (copy_from_user(&uapi, udata, sizeof(uapi))) {
+ dev_err(dev,
+ "Network ioctl: Failed to copy inference request");
ret = -EFAULT;
break;
}
dev_dbg(dev,
- "Network ioctl: Inference. ifm_fd=%u, ofm_fd=%u\n",
+ "Network ioctl: Inference. ifm_fd=%u, ofm_fd=%u",
uapi.ifm_fd[0], uapi.ofm_fd[0]);
ret = ethosu_rpmsg_inference_create(dev, net->mailbox, net,
@@ -156,8 +158,11 @@ int ethosu_rpmsg_network_create(struct device *dev,
int ret;
net = devm_kzalloc(dev, sizeof(*net), GFP_KERNEL);
- if (!net)
+ if (!net) {
+ dev_err(dev, "Network create. Failed to allocate struct");
+
return -ENOMEM;
+ }
net->dev = dev;
net->mailbox = mailbox;
@@ -166,13 +171,15 @@ int ethosu_rpmsg_network_create(struct device *dev,
switch (uapi->type) {
case ETHOSU_UAPI_NETWORK_USER_BUFFER:
if (!uapi->network.data_ptr) {
- dev_err(dev, "Invalid network data ptr\n");
+ dev_err(dev,
+ "Network create. Invalid network data ptr");
ret = -EINVAL;
goto free_net;
}
if (!uapi->network.size) {
- dev_err(dev, "Invalid network data size\n");
+ dev_err(dev,
+ "Network create. Invalid network data size");
ret = -EINVAL;
goto free_net;
}
@@ -180,20 +187,29 @@ int ethosu_rpmsg_network_create(struct device *dev,
net->dma_mem = ethosu_dma_mem_alloc(dev, uapi->network.size);
if (IS_ERR(net->dma_mem)) {
ret = PTR_ERR(net->dma_mem);
+ dev_err(dev,
+ "Network create. Failed to allocate DMA memory. ret=%d",
+ ret);
goto free_net;
}
data = u64_to_user_ptr(uapi->network.data_ptr);
ret = copy_from_user(net->dma_mem->cpu_addr, data,
uapi->network.size);
- if (ret)
+ if (ret) {
+ dev_err(dev,
+ "Network create. Failed to copy network data from user buffer. ret=%d",
+ ret);
goto free_dma_mem;
+ }
break;
case ETHOSU_UAPI_NETWORK_INDEX:
net->index = uapi->index;
break;
default:
+ dev_err(dev, "Network create. Invalid buffer type. type=%u",
+ uapi->type);
ret = -EINVAL;
goto free_net;
}
@@ -201,8 +217,12 @@ int ethosu_rpmsg_network_create(struct device *dev,
ret = anon_inode_getfd("ethosu-network", &ethosu_rpmsg_network_fops,
net,
O_RDWR | O_CLOEXEC);
- if (ret < 0)
+ if (ret < 0) {
+ dev_err(dev,
+ "Network create. Failed to get file descriptor. ret=%d",
+ ret);
goto free_dma_mem;
+ }
net->file = fget(ret);
fput(net->file);