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

Lucas Stach l.stach at pengutronix.de
Wed Aug 30 12:23:39 UTC 2017


Am Mittwoch, den 30.08.2017, 12:52 +0100 schrieb Russell King - ARM
Linux:
> On Wed, Aug 30, 2017 at 12:20:32PM +0100, Luís Mendes wrote:
> > I've found a couple of minutes to test these and I have found that on
> > iMX6QP:
> > 
> > static RegionPtr
> > etnaviv_CopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
> >     int srcx, int srcy, int w, int h, int dstx, int dsty)
> > 
> > when forcing the unaccel call, no missing text areas occur in the menus and
> > dialog windows, however the MMU fault still occur.
> 
> It would be good to know the failure case - this has been tested with
> the various X test programs which do not reveal any issues with it.
> 
> I've found it rather difficult and very time consuming to setup test
> scenarios for issues that other people see with my DDX driver (which
> basically mean downloading an entire distro and trying to replicate
> their setup.)
> 
> > The MMU fault seem to not cause any visibile disruption, in fact, if I
> > disable all acceleration functions in the function below, like shown:
> > 
> > 
> > static void
> > etnaviv_ValidateGC(GCPtr pGC, unsigned long changes, DrawablePtr
> > pDrawable)  {
> > ...
> > /* if (!etnaviv->force_fallback && etnaviv_GC_can_accel(pGC, pDrawable))
> >         pGC->ops = &etnaviv_GCOps;
> >     else */
> >         pGC->ops = &etnaviv_unaccel_GCOps;
> > 
> > The MMU faults still occur.
> 
> That doesn't disable /all/ acceleration functions.  That disables the
> acceleration functions for the GC - in other words, operations that
> require a graphic context.  There's a number of other operations that
> the backend can use that do not use a GC and are unaffected by this.
> CopyWindow is one such example, but also the Render backend as well.
> 
> Now, all that said, this could be due to a known GC320 bug: the GC320
> fails to properly flush its caches after performing operations even if
> you ask it to.  In order to work around this, it is necessary to insert
> into the command stream an additional copy operation.  That copy
> operation pushes the previous operation out of the GC320's caches, but
> it could very well result in this very operation also falling foul of
> the very same bug (the difference being that its with the dummy buffer
> rather than with a real buffer, so the user shouldn't see any on-screen
> corruption.)

This issue is no longer present in the GC320 revision on the QuadPlus.
In fact I have a local patch to disable the workaround for this GC320
revision and have been unable to trigger the bug with a testcase that
was easily hitting the issue on the Quad/Duallite.

Regards,
Lucas



More information about the etnaviv mailing list