Quoting Mika Kuoppala (2019-07-10 15:18:32) > Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> writes: > > - if (i915_vm_is_4lvl(vm)) { > > - if (unlikely(setup_page_dma(vm, &vm->scratch_pdp))) { > > - ret = -ENOMEM; > > - goto free_pd; > > - } > > - fill_page_dma(&vm->scratch_pdp, > > - gen8_pde_encode(vm->scratch_pdp.daddr, > > - I915_CACHE_LLC)); > > + fill_px(&vm->scratch[i], vm->scratch[i - 1].encode); > > + vm->scratch[i].encode = > > + gen8_pde_encode(px_dma(&vm->scratch[i]), > > + I915_CACHE_LLC); > > Ok. The new code makes perfect sense here. > > And with it confusion arises: how did we manage > to get the old code work with pdp encoding pointing to itself? What the.... You're right. That must have caused some funky GPU hangs if people tried to access something far outside of their set. Hmm, you know that's exactly what live_contexts/vm_isolation tries. Well it tries to write into random invalid addresses and see if the writes affect scratch of another context. Did I choose randomly carefully enough? Hmm. offset &= -sizeof(u32); Is there a danger there that's only u32 and not u64. Maybe. But otherwise it looks like it should be picking a prng over the whole vm->total and so should be tripping over the recursion :| -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx