[Sound-open-firmware] [PATCH] intel-ipc: fix host ring buffer size not page aligned issue

Keyon Jie yang.jie at linux.intel.com
Tue Nov 14 07:15:28 CET 2017


The host ring buffer size may be not page aligned,
but the last page was ulitlized by host component
wrongly, which may introduce beating noise.

Here change to correct size for the last element,
which will fix the issue.

Signed-off-by: Keyon Jie <yang.jie at linux.intel.com>
---
 src/ipc/intel-ipc.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/ipc/intel-ipc.c b/src/ipc/intel-ipc.c
index 56bd8ba..2e503e1 100644
--- a/src/ipc/intel-ipc.c
+++ b/src/ipc/intel-ipc.c
@@ -192,6 +192,17 @@ static int parse_page_descriptors(struct intel_ipc_data *iipc,
 		else
 			elem.dest = phy_addr;
 
+		if (elem.size * (i + 1) >= ring->size) {
+			/* the last page may be not full used */
+			if (i == (ring->pages - 1))
+				elem.size = ring->size - elem.size * i;
+			else {
+				trace_ipc_error("eBs");
+				/* should not happen*/
+				return -EINVAL;
+			}
+		}
+
 		if (is_trace)
 			err = dma_trace_host_buffer(d, &elem, ring->size);
 		else
-- 
2.11.0



More information about the Sound-open-firmware mailing list