diff --git a/sys/dev/drm/i915/i915_gem_gtt.c b/sys/dev/drm/i915/i915_gem_gtt.c --- a/sys/dev/drm/i915/i915_gem_gtt.c +++ b/sys/dev/drm/i915/i915_gem_gtt.c @@ -1071,8 +1071,9 @@ gen8_ppgtt_insert_pte_entries(struct i915_hw_ppgtt *ppgtt, idx->pde = 0; /* Limited by sg length for 3lvl */ - if (++idx->pdpe == GEN8_PML4ES_PER_PML4) { + ++idx->pdpe; + if (GEM_WARN_ON(idx->pdpe >= i915_pdpes_per_pdp(&ppgtt->vm)) || + idx->pdpe == GEN8_PML4ES_PER_PML4) { idx->pdpe = 0; ret = true; break; } - GEM_BUG_ON(idx->pdpe >= i915_pdpes_per_pdp(&ppgtt->vm)); pd = pdp->page_directory[idx->pdpe];