Quoting Mika Kuoppala (2019-12-03 13:24:03) > Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > > > It is not acceptable for context pinning to fail with -ENOSPC as we > > should always be able to make space in the GGTT. The only reason we may > > fail is that other "temporary" context pins are reserving their space > > and we need to wait for an available slot. > > > > Closes: https://gitlab.freedesktop.org/drm/intel/issues/676 > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > --- > > drivers/gpu/drm/i915/i915_gem_gtt.c | 21 ++++++++++++++++++--- > > 1 file changed, 18 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > > index 10b3d6d44045..7e20c6f62cd5 100644 > > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > > @@ -1934,9 +1934,24 @@ int gen6_ppgtt_pin(struct i915_ppgtt *base) > > * size. We allocate at the top of the GTT to avoid fragmentation. > > */ > > if (!atomic_read(&ppgtt->pin_count)) { > > - err = i915_vma_pin(ppgtt->vma, > > - 0, GEN6_PD_ALIGN, > > - PIN_GLOBAL | PIN_HIGH); > > + do { > > + struct i915_address_space *vm = ppgtt->vma->vm; > > + > > + err = i915_vma_pin(ppgtt->vma, > > + 0, GEN6_PD_ALIGN, > > + PIN_GLOBAL | PIN_HIGH); > > + if (err != -ENOSPC) > > + break; > > + > > + /* We don't take no for an answer! */ > > + err = mutex_lock_interruptible(&vm->mutex); > > + if (err == 0) { > > + err = i915_gem_evict_vm(vm); > > Why would we hold any significant amount of vmas? > I thought we need to kick the ggtt hard in order for this > to fit in. Inflight contexts will be pinned occupying that space until they are flushed. We used to track context activity so we could explicitly wait on pinned contexts, but we had to forgo that in order to randomly reordered execution (guc). The challenge is that evict-something can not always succeed by itself in unpinning those contexts, so we need to kick again. In the future, pipelined evictions... The future is complicated. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx