blob: 0258ae34e14048a138768f750e40125d520dbf5b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
From 79dd0145cb8220a5be0007350a7501056378e720 Mon Sep 17 00:00:00 2001
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
Date: Wed, 2 Mar 2022 17:23:16 +0000
Subject: [PATCH] staging/vc-sm-cma: Avoid log spamming on Pi0/1 over
cache alias.
Pi 0/1 use the 0x80000000 cache alias as the ARM also sees the world
through the VPU L2 cache.
vc-sm-cma was trying to ensure it was in an uncached alias (0xc), and
complaining on every allocation if it weren't. Reduce this logging.
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
---
drivers/staging/vc04_services/vc-sm-cma/vc_sm.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--- a/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
@@ -720,6 +720,7 @@ vc_sm_cma_import_dmabuf_internal(struct
struct dma_buf_attachment *attach = NULL;
struct sg_table *sgt = NULL;
dma_addr_t dma_addr;
+ u32 cache_alias;
int ret = 0;
int status;
@@ -762,9 +763,13 @@ vc_sm_cma_import_dmabuf_internal(struct
import.type = VC_SM_ALLOC_NON_CACHED;
dma_addr = sg_dma_address(sgt->sgl);
import.addr = (u32)dma_addr;
- if ((import.addr & 0xC0000000) != 0xC0000000) {
+ cache_alias = import.addr & 0xC0000000;
+ if (cache_alias != 0xC0000000 && cache_alias != 0x80000000) {
pr_err("%s: Expecting an uncached alias for dma_addr %pad\n",
__func__, &dma_addr);
+ /* Note that this assumes we're on >= Pi2, but it implies a
+ * DT configuration error.
+ */
import.addr |= 0xC0000000;
}
import.size = sg_dma_len(sgt->sgl);
|