[Intel-gfx] [PATCH] drm/i915: Exclude top-page for ppgtt as well as ggtt
Chris Wilson
chris at chris-wilson.co.uk
Fri May 12 17:49:09 UTC 2017
We have always excluded the top-page of the Global GTT to prevent
prefetching past the end of the address space. We have been lax about
applying this restriction to the per-process GTT, but there is no reason
to believe that the hw restriction is any less severe.
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
drivers/gpu/drm/i915/i915_gem_gtt.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c
index 5332d8cb1c53..f18ca11a8da6 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -1860,7 +1860,8 @@ static void i915_address_space_init(struct i915_address_space *vm,
{
i915_gem_timeline_init(dev_priv, &vm->timeline, name);
- drm_mm_init(&vm->mm, 0, vm->total);
+ /* Always exclude the top page to avoid prefetches past the end. */
+ drm_mm_init(&vm->mm, 0, vm->total - I915_GTT_PAGE_SIZE);
vm->mm.head_node.color = I915_COLOR_UNEVICTABLE;
INIT_LIST_HEAD(&vm->active_list);
@@ -2390,7 +2391,7 @@ static void i915_gtt_color_adjust(const struct drm_mm_node *node,
* GTT boundary.
*/
node = list_next_entry(node, node_list);
- if (node->color != color)
+ if (node->allocated && node->color != color)
*end -= I915_GTT_PAGE_SIZE;
}
--
2.11.0
More information about the Intel-gfx
mailing list