drm/i915: Fill unused GGTT with scratch pages for VT-d
authorChris Wilson <chris@chris-wilson.co.uk>
Fri, 24 Jun 2016 13:07:14 +0000 (14:07 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 8 Jul 2016 12:36:27 +0000 (13:36 +0100)
commit48f112fed3b07858f1b3a78548d23320fb96747b
tree7ffbb23cbc214e1cf8182b574b99e16307ca1c2e
parent22dea0be50b2eb0bafd3c82e1fb080113e0c889e
drm/i915: Fill unused GGTT with scratch pages for VT-d

One of the numerous VT-d workarounds we require is that the display
hardware reads past the end of the buffer triggering VT-d faults. This
is acknowledged in the code as being safe "since we fill the unused
portions of the GGTT with the scratch page". Alas, that is no longer
always true and so we trigger DMAR read faults.

Skylake also requires another workaround to avoid mixing VT-d and
unpopulated PTE, and so there we also need to ensure we fill unused
entries with the scratch page.

Reported-by: Mike Lothian <mike@fireburn.co.uk>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96584
Fixes: f7770bfd9fd2 ("drm/i915: Skip clearing the GGTT on full-ppgtt systems")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: David Weinehall <david.weinehall@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1466773634-8106-1-git-send-email-chris@chris-wilson.co.uk
Reviewed-by: David Weinehall <david.weinehall@intel.com>
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/i915_gem_gtt.c
drivers/gpu/drm/i915/intel_display.c