Re: [PATCH 00/03] Preventing zero GPU virtual address allocation

Daniel Vetter
2015-05-20T15:58:17Z

On Wed, May 20, 2015 at 03:14:06PM +0100, Chris Wilson wrote:
> On Wed, May 20, 2015 at 03:09:43PM +0100, Chris Wilson wrote:
> > On Wed, May 20, 2015 at 04:54:19PM +0300, David Weinehall wrote:
> > > This patch series (one patch each for libdrm, the kernel, and beignet)
> > > aims to provide a means to add a context-specific means to prevent
> > > a mapping to GPU virtual address zero. This is needed at least by
> > > Beignet (possibly in other use-cases too, though I don't know of any
> > > other) to allow use of address zero to represent NULL.
> >
> > Urm, you cannot allow absolute addressing period. What happens to the
> > object at 0 when the user reads from it or writes to it? You have to
> > have an object at 0 for the user's NULL pointer access.
>
> I'll mollify that: outside of full-ppgtt where you need to share the VM.

The description is misleading, the new flag doesn't prevent anything from
getting mapped at 0 but only prevents any bo submitted through execbuf on
the given context from being bound at address 0. If that would happen
compute kernels using NULL checks for some things would fall over.

Essentially it applies the PIN_BIAS for all execbuf objects, which works
even on ggtt execbufs.

Patches themselves look good, but we miss the igt to update the invalid
ctx flags testcase. And a bare minimal function testcase (which checks the
reloc offset with and without a ctx with this flag set) would be nice too.
With that and an r-b from the beignet developers I'll pull this in.
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation