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

Marcin Slusarz marcin.slusarz at gmail.com
Mon Aug 20 10:07:19 PDT 2012


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.

Marcin


More information about the Nouveau mailing list