bcm27xx: switch to 5.15
[openwrt/staging/noltari.git] / target / linux / bcm27xx / patches-5.10 / 950-0167-drm-v3d-Don-t-clear-MMU-control-bits-on-exception.patch
1 From 7372f1f8c151f752aa533eaf2b85ad9b21ec9639 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Mon, 11 Nov 2019 14:01:41 +0000
4 Subject: [PATCH] drm/v3d: Don't clear MMU control bits on exception
5
6 MMU exception conditions are reported in the V3D_MMU_CTRL register as
7 write-1-to-clear (W1C) bits. The MMU interrupt handling code clears any
8 exceptions, but does so by masking out any other bits and writing the
9 result back. There are some important control bits in that register,
10 including MMU_ENABLE, so a safer approach is to simply write back the
11 value just read unaltered.
12
13 This patch doesn't remove the cause of the apparent PTE errors, but it
14 does reduce the impact to just an error in the kernel log.
15
16 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
17 ---
18 drivers/gpu/drm/v3d/v3d_irq.c | 5 +----
19 1 file changed, 1 insertion(+), 4 deletions(-)
20
21 --- a/drivers/gpu/drm/v3d/v3d_irq.c
22 +++ b/drivers/gpu/drm/v3d/v3d_irq.c
23 @@ -178,10 +178,7 @@ v3d_hub_irq(int irq, void *arg)
24 };
25 const char *client = "?";
26
27 - V3D_WRITE(V3D_MMU_CTL,
28 - V3D_READ(V3D_MMU_CTL) & (V3D_MMU_CTL_CAP_EXCEEDED |
29 - V3D_MMU_CTL_PT_INVALID |
30 - V3D_MMU_CTL_WRITE_VIOLATION));
31 + V3D_WRITE(V3D_MMU_CTL, V3D_READ(V3D_MMU_CTL));
32
33 if (v3d->ver >= 41) {
34 axi_id = axi_id >> 5;