aboutsummaryrefslogtreecommitdiff
path: root/kernel/rpmsg/ethosu_rpmsg_network.c
diff options
context:
space:
mode:
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);