diff options
-rw-r--r-- | kernel/ethosu_device.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/kernel/ethosu_device.c b/kernel/ethosu_device.c index b63d068..6866857 100644 --- a/kernel/ethosu_device.c +++ b/kernel/ethosu_device.c @@ -244,10 +244,6 @@ static long ethosu_ioctl(struct file *file, void __user *udata = (void __user *)arg; int ret; - ret = device_lock_interruptible(dev); - if (ret) - return ret; - dev_info(dev, "Device ioctl. file=0x%pK, cmd=0x%x, arg=0x%lx", file, cmd, arg); @@ -271,8 +267,16 @@ static long ethosu_ioctl(struct file *file, break; } case ETHOSU_IOCTL_PING: { + ret = device_lock_interruptible(dev); + if (ret) + return ret; + dev_info(dev, "Device ioctl: Send ping"); + ret = ethosu_mailbox_ping(&edev->mailbox); + + device_unlock(dev); + break; } case ETHOSU_IOCTL_BUFFER_CREATE: { @@ -283,11 +287,18 @@ static long ethosu_ioctl(struct file *file, break; } + ret = device_lock_interruptible(dev); + if (ret) + return ret; + dev_info(dev, "Device ioctl: Buffer create. capacity=%u", uapi.capacity); ret = ethosu_buffer_create(dev, uapi.capacity); + + device_unlock(dev); + break; } case ETHOSU_IOCTL_NETWORK_CREATE: { @@ -298,11 +309,18 @@ static long ethosu_ioctl(struct file *file, break; } + ret = device_lock_interruptible(dev); + if (ret) + return ret; + dev_info(dev, "Device ioctl: Network create. type=%u, fd/index=%u", uapi.type, uapi.fd); ret = ethosu_network_create(dev, &edev->mailbox, &uapi); + + device_unlock(dev); + break; } default: { @@ -313,8 +331,6 @@ static long ethosu_ioctl(struct file *file, } } - device_unlock(dev); - return ret; } |