[Nouveau] [PATCH 10/10] drm/nouveau: fix off-by-one bugs related to command submission in IB mode

Ben Skeggs skeggsb at gmail.com
Mon Aug 20 14:13:23 PDT 2012


Am Dienstag, 21. August 2012 schrieb Marcin Slusarz :

> On Mon, Aug 20, 2012 at 04:33:24PM +1000, Ben Skeggs wrote:
> > On Sun, Aug 19, 2012 at 11:02:00PM +0200, Marcin Slusarz wrote:
> > > Commit "drm/nouveau: port all engines to new engine module format"
> changed
> > > IB size calculation to be less wasteful, but didn't take into account
> already
> > > existing off-by-one bugs :).
> > >
> > > So:
> > > - ib_max is the last entry, so we need to +1 when calculating number of
> > >   free entries
> > > - nv50_dma_wait already does +1 (for FIRE_RING), so we don't need
> another +1
> > >   on nouveau_gem_ioctl_pushbuf side
> > > - there are 512 allocated IB entries (and it needs to be round
> number), so we
> > >   can accept at most 511 entries from userspace (we need one for
> FIRE_RING) -
> > >   fortunately userspace already flushes at 511, so nr_push check
> change won't
> > >   have any impact
> > Also skipped this patch for now as I have work in progress that will
> improve this and
> > related code.  I should have it in the tree soon.
>
> Maybe I should have written this in the changelog, but this patch fixes
> total
> mayhem seen in warsow and nexuiz (at least). It's better to integrate it
> sooner
> than later.

I presume bumping the IB size to 8KiB also helps? I prefer this in the
meantime, and it's probably best to do anyway, I didn't take into account
what we allow userspace to do in one shot.  If this works too, i'll push
that change this morning.

I did try and reproduce on a couple of cards with warsow and wasn't able to.

Also, what happened to instmem being the culprit here?

Marcin
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/nouveau/attachments/20120821/44c18b96/attachment.html>


More information about the Nouveau mailing list