I'm just looking over the userptr handling in both drivers, and of course they've chosen different ways to represent things. Again this is a divergence that is just going to get more annoying over time and eventually I'd like to make hmm/userptr driver independent as much as possible, so we get consistent semantics in userspace. AFAICS the main difference is that amdgpu builds the userptr handling inside a GEM object in the kernel, whereas xe doesn't bother creating a holding object and just handles things directly in the VM binding code. Is this just different thinking at different times here? like since we have VM BIND in xe, it made sense not to bother creating a gem object for userptrs? or is there some other advantages to going one way or the other? Dave.