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 10:45:04 UTC 2017


Hi Russel,

I was able to identify and circumvent the root cause of the MMU faults. We
had 4 MMU faults, it seems.
Each one for each of these conditions:
Nov  3 10:26:26 picolo xf86_armada[1271]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 10:26:26 picolo xf86_armada[1271]: A: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 10:26:29 picolo xf86_armada[1271]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=768], drawable[x=0,y=0], src_offset[x=0,y=0}
Nov  3 10:26:32 picolo xf86_armada[1271]: B: clip[x1=0,y1=0],
vSrc[w=1024,h=27], drawable[x=0,y=0], src_offset[x=0,y=0}

The modified etnaviv_render.c - etnaviv_acquire_src(...), that is able to
circumvent the MMU faults and generate the above log is this one (changes
in bold):
static struct etnaviv_pixmap *etnaviv_acquire_src(ScreenPtr pScreen,
    PicturePtr pict, const BoxRec *clip, PixmapPtr *ppPixTemp,
    xPoint *src_topleft, Bool force_vtemp)
{
    struct etnaviv *etnaviv = etnaviv_get_screen_priv(pScreen);
    struct etnaviv_pixmap *vSrc, *vTemp;
    struct etnaviv_blend_op copy_op;
    DrawablePtr drawable;
    uint32_t colour;
    xPoint src_offset;
    int tx, ty;

    if (etnaviv_pict_solid_argb(pict, &colour)) {
        vTemp = etnaviv_get_scratch_argb(pScreen, ppPixTemp,
                         clip->x2, clip->y2);
        if (!vTemp)
            return NULL;

        if (!etnaviv_fill_single(etnaviv, vTemp, clip, colour))
            return NULL;

        src_topleft->x = 0;
        src_topleft->y = 0;
        return vTemp;
    }

    drawable = pict->pDrawable;
    vSrc = etnaviv_drawable_offset(drawable, &src_offset);
    if (!vSrc)
        goto fallback;

    if (vSrc->width < clip->x2 || vSrc->height < clip->y2)
        goto fallback;

    etnaviv_set_format(vSrc, pict);
    if (!etnaviv_src_format_valid(etnaviv, vSrc->pict_format))
        goto fallback;

    if (!transform_is_integer_translation(pict->transform, &tx, &ty))
        goto fallback;

    if (picture_needs_repeat(pict, src_topleft->x + tx, src_topleft->y + ty,
                 clip->x2, clip->y2))
        goto fallback;



    src_topleft->x += drawable->x + src_offset.x + tx;
    src_topleft->y += drawable->y + src_offset.y + ty;
    if (force_vtemp) {
        goto copy_to_vtemp;
    }












*    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);
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);        goto fallback;    }*
    return vSrc;
   ...


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

> Hi Russell,
>
> Great news! The issue we were getting with copyNtoN(...) is just a side
> effect of etnaviv_render.c - etnaviv_acquire_src().
> The root cause of the MMU falts is etnaviv_render.c -
> etnaviv_acquire_src().
>
> I have enabled copyNtoN(...), but made etnaviv_acquire_src(...) always go
> to fallback and now I am able to log into Ubuntu MATE without any MMU
> faults.
> I will include debug logs and get back with them.
>
>  static struct etnaviv_pixmap *etnaviv_acquire_src(ScreenPtr pScreen,
>         PicturePtr pict, const BoxRec *clip, PixmapPtr *ppPixTemp,
>         xPoint *src_topleft, Bool force_vtemp)
> {
>         struct etnaviv *etnaviv = etnaviv_get_screen_priv(pScreen);
>         struct etnaviv_pixmap *vSrc, *vTemp;
>         struct etnaviv_blend_op copy_op;
>         DrawablePtr drawable;
>         uint32_t colour;
>         xPoint src_offset;
>         int tx, ty;
>
>         goto fallback;
>         ...
>
> Luis
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/etnaviv/attachments/20171103/f8365b61/attachment-0001.html>


More information about the etnaviv mailing list