]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Only initialize partially filled pagetables
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 8 Sep 2017 18:16:22 +0000 (19:16 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Sat, 9 Sep 2017 08:03:05 +0000 (09:03 +0100)
commit604e806074f8f7c5031aeb6d14bb2dbea4d14305
tree65ef9c90ec4055d01e3067123fa534b26481e985
parent96ec7c654fea876fa90f41cad7931d4abc6e4158
drm/i915: Only initialize partially filled pagetables

If we know that we will completely fill a pagetable (i.e. we are
inserting a complete set of 512 pages), we can skip prefilling that PT
with scratch entries. If we have to abort the insertion prior to writing
the real entries, we will teardown the pagetable and remove it from the
page directory (so that we will restart the allocation next time).

We could do similar tricks for the PD and PDP, but the likelihood of a
single insertion covering the entire 512 entries diminishes, as do the
cycle savings. The saving are even greater (relatively) when we are
preallocating page tables for huge pages, as then we never need to fill
the page table.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170908181622.17791-1-chris@chris-wilson.co.uk
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
drivers/gpu/drm/i915/i915_gem_gtt.c