diff --git a/kernel/ethosu_buffer.c b/kernel/ethosu_buffer.c
index 7a49b39..07c8033 100644
--- a/kernel/ethosu_buffer.c
+++ b/kernel/ethosu_buffer.c
@@ -1,5 +1,6 @@
 /*
- * Copyright 2020-2023 Arm Limited and/or its affiliates
+ * SPDX-FileCopyrightText: Copyright 2020-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
+ * SPDX-License-Identifier: GPL-2.0-only
  *
  * This program is free software and is provided to you under the terms of the
  * GNU General Public License version 2 as published by the Free Software
@@ -15,7 +16,6 @@
  * along with this program; if not, you can access it online at
  * http://www.gnu.org/licenses/gpl-2.0.html.
  *
- * SPDX-License-Identifier: GPL-2.0-only
  */
 
 /****************************************************************************
@@ -73,7 +73,7 @@
 		container_of(kref, struct ethosu_buffer, kref);
 	struct device *dev = buf->dev;
 
-	dev_info(dev, "Buffer destroy. buf=0x%pK", buf);
+	dev_dbg(dev, "Buffer destroy. buf=0x%pK", buf);
 
 	memset(buf->cpu_addr, 0, buf->capacity);
 	dma_free_coherent(dev, buf->capacity, buf->cpu_addr,
@@ -89,8 +89,8 @@
 	struct ethosu_buffer *buf = file->private_data;
 	struct device *dev = buf->dev;
 
-	dev_info(dev, "Buffer release. file=0x%pK, buf=0x%pK\n",
-		 file, buf);
+	dev_dbg(dev, "Buffer release. file=0x%pK, buf=0x%pK\n",
+		file, buf);
 
 	ethosu_buffer_put(buf);
 
@@ -104,8 +104,8 @@
 	struct device *dev = buf->dev;
 	int ret;
 
-	dev_info(dev, "Buffer mmap. file=0x%pK, buf=0x%pK\n",
-		 file, buf);
+	dev_dbg(dev, "Buffer mmap. file=0x%pK, buf=0x%pK\n",
+		file, buf);
 
 	ret = dma_mmap_coherent(dev, vma, buf->cpu_addr,
 				buf->dma_addr, buf->capacity);
@@ -126,10 +126,6 @@
 	if (ret)
 		return ret;
 
-	dev_info(dev,
-		 "Buffer ioctl. file=0x%pK, buf=0x%pK, cmd=0x%x, arg=%lu\n",
-		 file, buf, cmd, arg);
-
 	switch (cmd) {
 	case ETHOSU_IOCTL_BUFFER_SET: {
 		struct ethosu_uapi_buffer uapi;
@@ -139,9 +135,9 @@
 			break;
 		}
 
-		dev_info(dev,
-			 "Buffer ioctl: Buffer set. size=%u, offset=%u\n",
-			 uapi.size, uapi.offset);
+		dev_dbg(dev,
+			"Buffer ioctl: Buffer set. size=%u, offset=%u\n",
+			uapi.size, uapi.offset);
 
 		ret = ethosu_buffer_resize(buf, uapi.size, uapi.offset);
 		break;
@@ -152,9 +148,9 @@
 		uapi.size = buf->size;
 		uapi.offset = buf->offset;
 
-		dev_info(dev,
-			 "Buffer ioctl: Buffer get. size=%u, offset=%u\n",
-			 uapi.size, uapi.offset);
+		dev_dbg(dev,
+			"Buffer ioctl: Buffer get. size=%u, offset=%u\n",
+			uapi.size, uapi.offset);
 
 		if (copy_to_user(udata, &uapi, sizeof(uapi))) {
 			ret = -EFAULT;
@@ -209,10 +205,10 @@
 	buf->file = fget(ret);
 	fput(buf->file);
 
-	dev_info(dev,
-		 "Buffer create. file=0x%pK, fd=%d, buf=0x%pK, capacity=%zu, cpu_addr=0x%pK, dma_addr=0x%llx, phys_addr=0x%llx\n",
-		 buf->file, ret, buf, capacity, buf->cpu_addr, buf->dma_addr,
-		 virt_to_phys(buf->cpu_addr));
+	dev_dbg(dev,
+		"Buffer create. file=0x%pK, fd=%d, buf=0x%pK, capacity=%zu, cpu_addr=0x%pK, dma_addr=0x%llx, phys_addr=0x%llx\n",
+		buf->file, ret, buf, capacity, buf->cpu_addr, buf->dma_addr,
+		virt_to_phys(buf->cpu_addr));
 
 	return ret;
 
