vm binding interfaces and parallel with mmap

Dave Airlie airlied at gmail.com
Mon Aug 22 07:05:27 UTC 2022


Hey,

I've just been looking at the vm bind type interfaces and wanted to at
least document how we think the unmapping API should work. I know I've
talked on irc before about this, but wanted to solidify things a bit
more around what is required vs what is a nice to have.

My main concerns/thoughts are around the unbind interfaces and how
close to munmap they should be.

I think the mapping operation is mostly consistent
MAP(bo handle, offset into bo, range, VM offset, VM flags)
which puts the range inside to bo at the offset in the current VM
(maybe take an optional vm_id).

now the simplest unmap I can see if one that parallel munmap
UNMAP(vmaddr, range);

But it begs the question on then how much the kernel needs to deal
with here, if we support random vmaddr,range then we really need to be
able to do everything munmap does for CPU VMA, which means splitting
ranges, joining ranges etc.

like
MAP(1, 0, 0x8000, 0xc0000)
UNMAP(0xc1000, 0x1000)
should that be possible?

Do we have any API usage (across Vulkan/CL/CUDA/ROCm etc) that
requires this sort of control, or should we be fine with only
unmapping objects exactly like how they were mapped in the first
place, and not have any splitting/joining?

Dave.


More information about the dri-devel mailing list