aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/common/ethosu_buffer.c19
-rw-r--r--kernel/common/ethosu_dma_mem.c13
-rw-r--r--kernel/rpmsg/ethosu_rpmsg_cancel_inference.c5
-rw-r--r--kernel/rpmsg/ethosu_rpmsg_inference.c25
-rw-r--r--kernel/rpmsg/ethosu_rpmsg_network.c34
-rw-r--r--kernel/rpmsg/ethosu_rpmsg_network_info.c6
6 files changed, 83 insertions, 19 deletions
diff --git a/kernel/common/ethosu_buffer.c b/kernel/common/ethosu_buffer.c
index cf41b8d..519e270 100644
--- a/kernel/common/ethosu_buffer.c
+++ b/kernel/common/ethosu_buffer.c
@@ -139,12 +139,18 @@ int ethosu_buffer_create(struct device *dev,
struct ethosu_buffer *buf;
int ret = -ENOMEM;
- if (!size)
+ if (!size) {
+ dev_err(dev, "Buffer create. Invalid zero size");
+
return -EINVAL;
+ }
buf = devm_kzalloc(dev, sizeof(*buf), GFP_KERNEL);
- if (!buf)
+ if (!buf) {
+ dev_err(dev, "Buffer create. Failed to allocate struct");
+
return -ENOMEM;
+ }
buf->dev = dev;
kref_init(&buf->kref);
@@ -152,13 +158,20 @@ int ethosu_buffer_create(struct device *dev,
buf->dma_mem = ethosu_dma_mem_alloc(dev, size);
if (IS_ERR(buf->dma_mem)) {
ret = PTR_ERR(buf->dma_mem);
+ dev_err(dev,
+ "Buffer create. Failed to allocate DMA memory. ret=%d",
+ ret);
goto free_buf;
}
ret = anon_inode_getfd("ethosu-buffer", &ethosu_buffer_fops, buf,
O_RDWR | O_CLOEXEC);
- if (ret < 0)
+ if (ret < 0) {
+ dev_err(dev,
+ "Buffer create. Failed to get file descriptor. ret=%d",
+ ret);
goto free_dma;
+ }
buf->file = fget(ret);
buf->file->f_mode |= FMODE_LSEEK;
diff --git a/kernel/common/ethosu_dma_mem.c b/kernel/common/ethosu_dma_mem.c
index 0e05978..fd444d2 100644
--- a/kernel/common/ethosu_dma_mem.c
+++ b/kernel/common/ethosu_dma_mem.c
@@ -35,18 +35,27 @@ struct ethosu_dma_mem *ethosu_dma_mem_alloc(struct device *dev,
{
struct ethosu_dma_mem *dma_mem;
- if (!size)
+ if (!size) {
+ dev_err(dev, "DMA mem alloc. Invalid zero size");
+
return ERR_PTR(-EINVAL);
+ }
dma_mem = devm_kzalloc(dev, sizeof(*dma_mem), GFP_KERNEL);
- if (!dma_mem)
+ if (!dma_mem) {
+ dev_err(dev,
+ "DMA mem alloc. Failed to allocate struct");
+
return ERR_PTR(-ENOMEM);
+ }
dma_mem->dev = dev;
dma_mem->size = size;
dma_mem->cpu_addr = dma_alloc_coherent(dev, size, &dma_mem->dma_addr,
GFP_KERNEL);
if (!dma_mem->cpu_addr) {
+ dev_err(dev, "DMA mem alloc. Failed to allocate 0x%02zx bytes",
+ size);
memset(dma_mem, 0, sizeof(*dma_mem));
devm_kfree(dev, dma_mem);
diff --git a/kernel/rpmsg/ethosu_rpmsg_cancel_inference.c b/kernel/rpmsg/ethosu_rpmsg_cancel_inference.c
index 5fa7515..b07c0ec 100644
--- a/kernel/rpmsg/ethosu_rpmsg_cancel_inference.c
+++ b/kernel/rpmsg/ethosu_rpmsg_cancel_inference.c
@@ -83,8 +83,11 @@ int ethosu_rpmsg_cancel_inference_request(struct device *dev,
devm_kzalloc(dev,
sizeof(struct ethosu_rpmsg_cancel_inference),
GFP_KERNEL);
- if (!cancellation)
+ if (!cancellation) {
+ dev_err(dev, "Cancel inference. Failed to allocate struct");
+
return -ENOMEM;
+ }
/* increase ref count on the inference we are refering to */
ethosu_rpmsg_inference_get(inf);
diff --git a/kernel/rpmsg/ethosu_rpmsg_inference.c b/kernel/rpmsg/ethosu_rpmsg_inference.c
index b6288ef..dd88a8a 100644
--- a/kernel/rpmsg/ethosu_rpmsg_inference.c
+++ b/kernel/rpmsg/ethosu_rpmsg_inference.c
@@ -278,16 +278,20 @@ int ethosu_rpmsg_inference_create(struct device *dev,
if (uapi->ifm_count > ETHOSU_FD_MAX ||
uapi->ofm_count > ETHOSU_FD_MAX) {
- dev_warn(dev,
- "Too many IFM and/or OFM buffers for inference. ifm_count=%u, ofm_count=%u",
- uapi->ifm_count, uapi->ofm_count);
+ dev_err(dev,
+ "Inference create. Too many IFM and/or OFM buffers for inference. ifm_count=%u, ofm_count=%u",
+ uapi->ifm_count, uapi->ofm_count);
return -EFAULT;
}
inf = devm_kzalloc(dev, sizeof(*inf), GFP_KERNEL);
- if (!inf)
+ if (!inf) {
+ dev_err(dev,
+ "Inference create. Failed to allocate struct");
+
return -ENOMEM;
+ }
inf->dev = dev;
inf->mailbox = mailbox;
@@ -308,6 +312,9 @@ int ethosu_rpmsg_inference_create(struct device *dev,
inf->ifm[i] = ethosu_buffer_get_from_fd(uapi->ifm_fd[i]);
if (IS_ERR(inf->ifm[i])) {
ret = PTR_ERR(inf->ifm[i]);
+ dev_err(dev,
+ "Inference create. Failed to get IFM buffer%u ret=%d",
+ i, ret);
goto put_ifm;
}
@@ -319,6 +326,9 @@ int ethosu_rpmsg_inference_create(struct device *dev,
inf->ofm[i] = ethosu_buffer_get_from_fd(uapi->ofm_fd[i]);
if (IS_ERR(inf->ofm[i])) {
ret = PTR_ERR(inf->ofm[i]);
+ dev_err(dev,
+ "Inference create. Failed to get OFM buffer%u ret=%d",
+ i, ret);
goto put_ofm;
}
@@ -353,8 +363,13 @@ int ethosu_rpmsg_inference_create(struct device *dev,
ret = fd = anon_inode_getfd("ethosu-inference",
&ethosu_rpmsg_inference_fops,
inf, O_RDWR | O_CLOEXEC);
- if (ret < 0)
+ if (ret < 0) {
+ dev_err(dev,
+ "Inference create. Failed to get file descriptor. ret=%d",
+ ret);
+
goto put_net;
+ }
/* Store pointer to file structure */
inf->file = fget(ret);
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);
diff --git a/kernel/rpmsg/ethosu_rpmsg_network_info.c b/kernel/rpmsg/ethosu_rpmsg_network_info.c
index 36b6290..2445a09 100644
--- a/kernel/rpmsg/ethosu_rpmsg_network_info.c
+++ b/kernel/rpmsg/ethosu_rpmsg_network_info.c
@@ -73,8 +73,12 @@ int ethosu_rpmsg_network_info_request(struct device *dev,
info->msg.fail = ethosu_rpmsg_network_info_fail;
ret = ethosu_rpmsg_mailbox_register(mailbox, &info->msg);
- if (ret < 0)
+ if (ret < 0) {
+ dev_err(dev,
+ "Network info create. Failed to register message in mailbox. ret=%d",
+ ret);
goto kfree;
+ }
/* Get reference to network */
ethosu_rpmsg_network_get(info->net);