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