etnaviv-gpu 134000.gpu: MMU fault status 0x00000002 on i.XM6 Quad Plus

Luís Mendes luis.p.mendes at gmail.com
Fri Nov 3 12:05:48 UTC 2017


So this is what I get with picture desc on the candidate corner cases:
Nov  3 11:57:04 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:04 picolo xf86_armada[786]: A: Pict:  0x20e45a8: 32
(1024x768+0+0) R fmt XRGB8888
Nov  3 11:57:04 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:04 picolo xf86_armada[786]: A: Pict:  0x20f4370: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:04 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:04 picolo xf86_armada[786]: A: Pict:  0x1dfba58: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:04 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:04 picolo xf86_armada[786]: A: Pict:  0x20e45a8: 32
(1024x768+0+0) R fmt XRGB8888
Nov  3 11:57:04 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:04 picolo xf86_armada[786]: A: Pict:  0x20f4370: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:04 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:04 picolo xf86_armada[786]: A: Pict:  0x1dfba58: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:08 picolo xf86_armada[786]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:08 picolo xf86_armada[786]: B: Pict:  0x1dfba58: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:08 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:08 picolo xf86_armada[786]: A: Pict:  0x20e45a8: 32
(1024x768+0+0) R fmt XRGB8888
Nov  3 11:57:08 picolo xf86_armada[786]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:08 picolo xf86_armada[786]: A: Pict:  0x20f4370: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:11 picolo xf86_armada[786]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:11 picolo xf86_armada[786]: B: Pict:  0x20e45a8: 32
(1024x768+0+0) R fmt XRGB8888
Nov  3 11:57:11 picolo xf86_armada[786]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:11 picolo xf86_armada[786]: B: Pict:  0x20f4370: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:11 picolo xf86_armada[786]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:11 picolo xf86_armada[786]: B: Pict:  0x20e45a8: 32
(1024x768+0+0) R fmt XRGB8888
Nov  3 11:57:11 picolo xf86_armada[786]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:11 picolo xf86_armada[786]: B: Pict:  0x20f4370: 32
(1024x768+0+0) fmt XRGB8888
Nov  3 11:57:13 picolo xf86_armada[786]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:13 picolo xf86_armada[786]: B: Pict:  0x20e45a8: 32
(1024x768+0+0) R fmt XRGB8888
Nov  3 11:57:13 picolo xf86_armada[786]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 11:57:13 picolo xf86_armada[786]: B: Pict:  0x20f4370: 32
(1024x768+0+0) fmt XRGB8888

The debug code is now:
    if (clip->x2 == 1024 && clip->y2 == 24) {
        syslog(LOG_ERR, "A: clip[x1=%d,y1=%d], vSrc[w=%d,h=%d],
drawable[x=%d,y=%d], src_offset[x=%d,y=%d}\n",
            clip->x1, clip->y1, vSrc->width, vSrc->height, drawable->x,
drawable->y, src_offset.x, src_offset.y);
        if (vSrc->height == 768) {
                char src_buf[80];

                syslog(LOG_ERR,
                        "A: Pict:  %s\n",
                        picture_desc(pict, src_buf, sizeof(src_buf)));

            goto fallback;
        }
    }

    if (clip->x2 == 1024 && clip->y2 == 27) {
        syslog(LOG_ERR, "B: clip[x1=%d,y1=%d], vSrc[w=%d,h=%d],
drawable[x=%d,y=%d], src_offset[x=%d,y=%d}\n",
            clip->x1, clip->y1, vSrc->width, vSrc->height, drawable->x,
drawable->y, src_offset.x, src_offset.y);
        if (vSrc->height == 768) {
            char src_buf[80];

                syslog(LOG_ERR,
                        "B: Pict:  %s\n",
                        picture_desc(pict, src_buf, sizeof(src_buf)));
            goto fallback;
        }
    }

    return vSrc;


On Fri, Nov 3, 2017 at 11:43 AM, Luís Mendes <luis.p.mendes at gmail.com>
wrote:

> Sorry for misspelling your name, Russell, wasn't on purpose.
>
> Regarding what you said, the above code is correct, it is not the
> copy_to_vtemp branch that is causing the MMU faults or screen corruption,
> but rather when the code of etnaviv_aquire_src(...) runs to the end,
> returning vSrc.
> For some reason the kernel dump wasn't capturing the correct failure
> source. Possibly the MMU faults occur a bit after when another operation is
> being started, I don't know.
> I just can say for sure that the above code does circumvent all the MMU
> faults I am getting with Ubuntu MATE at 1024x768.
>
> I will try to add the picture_desc() helper for us to get more details
> regarding the source of the MMU fault condition, will get back soon.
>
> I've refined the code circumvent to this one:
>     if (clip->x2 == 1024 && clip->y2 == 24) {
>         syslog(LOG_ERR, "A: clip[x1=%d,y1=%d], vSrc[w=%d,h=%d],
> drawable[x=%d,y=%d], src_offset[x=%d,y=%d}\n",
>             clip->x1, clip->y1, vSrc->width, vSrc->height, drawable->x,
> drawable->y, src_offset.x, src_offset.y);
>         if (vSrc->height == 768) {
>             goto fallback;
>         }
>     }
>
>     if (clip->x2 == 1024 && clip->y2 == 27) {
>         syslog(LOG_ERR, "B: clip[x1=%d,y1=%d], vSrc[w=%d,h=%d],
> drawable[x=%d,y=%d], src_offset[x=%d,y=%d}\n",
>             clip->x1, clip->y1, vSrc->width, vSrc->height, drawable->x,
> drawable->y, src_offset.x, src_offset.y);
>         if (vSrc->height == 768) {
>             goto fallback;
>         }
>     }
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/etnaviv/attachments/20171103/eab95ba0/attachment.html>


More information about the etnaviv mailing list