drm/i915/gtt: drop the page table optimisation
authorMatthew Auld <matthew.auld@intel.com>
Tue, 13 Jul 2021 13:04:31 +0000 (14:04 +0100)
committerMatthew Auld <matthew.auld@intel.com>
Wed, 14 Jul 2021 08:15:53 +0000 (09:15 +0100)
commit8f88ca76b3942d82e2c1cea8735ec368d89ecc15
tree452d0674df552c5c9f5b146a91288cc01f52dab2
parent3aa8c57fe25a9247e25977f1c2302395cbbd8242
drm/i915/gtt: drop the page table optimisation

We skip filling out the pt with scratch entries if the va range covers
the entire pt, since we later have to fill it with the PTEs for the
object pages anyway. However this might leave open a small window where
the PTEs don't point to anything valid for the HW to consume.

When for example using 2M GTT pages this fill_px() showed up as being
quite significant in perf measurements, and ends up being completely
wasted since we ignore the pt and just use the pde directly.

Anyway, currently we have our PTE construction split between alloc and
insert, which is probably slightly iffy nowadays, since the alloc
doesn't actually allocate anything anymore, instead it just sets up the
page directories and points the PTEs at the scratch page. Later when we
do the insert step we re-program the PTEs again. Better might be to
squash the alloc and insert into a single step, then bringing back this
optimisation(along with some others) should be possible.

Fixes: 14826673247e ("drm/i915: Only initialize partially filled pagetables")
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Jon Bloomfield <jon.bloomfield@intel.com>
Cc: Chris Wilson <chris.p.wilson@intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: <stable@vger.kernel.org> # v4.15+
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210713130431.2392740-1-matthew.auld@intel.com
drivers/gpu/drm/i915/gt/gen8_ppgtt.c