iris: Avoid holding the lock while allocating pages.
authorKenneth Graunke <kenneth@whitecape.org>
Thu, 30 May 2019 07:04:38 +0000 (00:04 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 30 May 2019 07:46:37 +0000 (00:46 -0700)
commite917bb7ad4300a1943a0100114c708915324127c
tree34eaa7abc28da36862c99a0f8fb017c66f6463a9
parent0cb380a6b318376743174d173f5bc9e18b9b8ce3
iris: Avoid holding the lock while allocating pages.

We only need the lock for:
1. Rummaging through the cache
2. Allocating VMA

We don't need it for alloc_fresh_bo(), which does GEM_CREATE, and also
SET_DOMAIN to allocate the underlying pages.  The idea behind calling
SET_DOMAIN was to avoid a lock in the kernel while allocating pages,
now we avoid our own global lock as well.

We do have to re-lock around VMA.  Hopefully this shouldn't happen too
much in practice because we'll find a cached BO in the right memzone
and not have to reallocate it.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
src/gallium/drivers/iris/iris_bufmgr.c