drm/ttm: convert to unified vma offset manager
Use the new vma-manager infrastructure. This doesn't change any implementation details as the vma-offset-manager is nearly copied 1-to-1 from TTM. The vm_lock is moved into the offset manager so we can drop it from TTM. During lookup, we use the vma locking helpers to take a reference to the found object. In all other scenarios, locking stays the same as before. We always guarantee that drm_vma_offset_remove() is called only during destruction. Hence, helpers like drm_vma_node_offset_addr() are always safe as long as the node has a valid offset. This also drops the addr_space_offset member as it is a copy of vm_start in vma_node objects. Use the accessor functions instead. v4: - remove vm_lock - use drm_vma_offset_lock_lookup() to protect lookup (instead of vm_lock) Cc: Dave Airlie <airlied@redhat.com> Cc: Ben Skeggs <bskeggs@redhat.com> Cc: Maarten Lankhorst <maarten.lankhorst@canonical.com> Cc: Martin Peres <martin.peres@labri.fr> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: David Herrmann <dh.herrmann@gmail.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@gmail.com>
This commit is contained in:

committed by
Dave Airlie

parent
0de23977cf
commit
72525b3f33
@@ -500,7 +500,7 @@ int vmw_dmabuf_alloc_ioctl(struct drm_device *dev, void *data,
|
||||
goto out_no_dmabuf;
|
||||
|
||||
rep->handle = handle;
|
||||
rep->map_handle = dma_buf->base.addr_space_offset;
|
||||
rep->map_handle = drm_vma_node_offset_addr(&dma_buf->base.vma_node);
|
||||
rep->cur_gmr_id = handle;
|
||||
rep->cur_gmr_offset = 0;
|
||||
|
||||
@@ -834,7 +834,7 @@ int vmw_dumb_map_offset(struct drm_file *file_priv,
|
||||
if (ret != 0)
|
||||
return -EINVAL;
|
||||
|
||||
*offset = out_buf->base.addr_space_offset;
|
||||
*offset = drm_vma_node_offset_addr(&out_buf->base.vma_node);
|
||||
vmw_dmabuf_unreference(&out_buf);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user