Commit b3f13ec9 authored by Gerd Hoffmann's avatar Gerd Hoffmann

drm/virtio: add virtio_gpu_object_detach() function

The new function balances virtio_gpu_object_attach().

Also make virtio_gpu_cmd_resource_inval_backing() static and switch
call sites to the new virtio_gpu_object_attach() function.
Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20180829122026.27012-2-kraxel@redhat.com
parent 6c19787e
...@@ -277,13 +277,13 @@ int virtio_gpu_object_attach(struct virtio_gpu_device *vgdev, ...@@ -277,13 +277,13 @@ int virtio_gpu_object_attach(struct virtio_gpu_device *vgdev,
struct virtio_gpu_object *obj, struct virtio_gpu_object *obj,
uint32_t resource_id, uint32_t resource_id,
struct virtio_gpu_fence **fence); struct virtio_gpu_fence **fence);
void virtio_gpu_object_detach(struct virtio_gpu_device *vgdev,
struct virtio_gpu_object *obj);
int virtio_gpu_attach_status_page(struct virtio_gpu_device *vgdev); int virtio_gpu_attach_status_page(struct virtio_gpu_device *vgdev);
int virtio_gpu_detach_status_page(struct virtio_gpu_device *vgdev); int virtio_gpu_detach_status_page(struct virtio_gpu_device *vgdev);
void virtio_gpu_cursor_ping(struct virtio_gpu_device *vgdev, void virtio_gpu_cursor_ping(struct virtio_gpu_device *vgdev,
struct virtio_gpu_output *output); struct virtio_gpu_output *output);
int virtio_gpu_cmd_get_display_info(struct virtio_gpu_device *vgdev); int virtio_gpu_cmd_get_display_info(struct virtio_gpu_device *vgdev);
void virtio_gpu_cmd_resource_inval_backing(struct virtio_gpu_device *vgdev,
uint32_t resource_id);
int virtio_gpu_cmd_get_capset_info(struct virtio_gpu_device *vgdev, int idx); int virtio_gpu_cmd_get_capset_info(struct virtio_gpu_device *vgdev, int idx);
int virtio_gpu_cmd_get_capset(struct virtio_gpu_device *vgdev, int virtio_gpu_cmd_get_capset(struct virtio_gpu_device *vgdev,
int idx, int version, int idx, int version,
......
...@@ -291,7 +291,7 @@ static int virtio_gpufb_create(struct drm_fb_helper *helper, ...@@ -291,7 +291,7 @@ static int virtio_gpufb_create(struct drm_fb_helper *helper,
return 0; return 0;
err_fb_alloc: err_fb_alloc:
virtio_gpu_cmd_resource_inval_backing(vgdev, resid); virtio_gpu_object_detach(vgdev, obj);
err_obj_attach: err_obj_attach:
err_obj_vmap: err_obj_vmap:
virtio_gpu_gem_free_object(&obj->gem_base); virtio_gpu_gem_free_object(&obj->gem_base);
......
...@@ -343,8 +343,7 @@ static void virtio_gpu_bo_move_notify(struct ttm_buffer_object *tbo, ...@@ -343,8 +343,7 @@ static void virtio_gpu_bo_move_notify(struct ttm_buffer_object *tbo,
if (!new_mem || (new_mem->placement & TTM_PL_FLAG_SYSTEM)) { if (!new_mem || (new_mem->placement & TTM_PL_FLAG_SYSTEM)) {
if (bo->hw_res_handle) if (bo->hw_res_handle)
virtio_gpu_cmd_resource_inval_backing(vgdev, virtio_gpu_object_detach(vgdev, bo);
bo->hw_res_handle);
} else if (new_mem->placement & TTM_PL_FLAG_TT) { } else if (new_mem->placement & TTM_PL_FLAG_TT) {
if (bo->hw_res_handle) { if (bo->hw_res_handle) {
......
...@@ -423,7 +423,7 @@ void virtio_gpu_cmd_unref_resource(struct virtio_gpu_device *vgdev, ...@@ -423,7 +423,7 @@ void virtio_gpu_cmd_unref_resource(struct virtio_gpu_device *vgdev,
virtio_gpu_queue_ctrl_buffer(vgdev, vbuf); virtio_gpu_queue_ctrl_buffer(vgdev, vbuf);
} }
void virtio_gpu_cmd_resource_inval_backing(struct virtio_gpu_device *vgdev, static void virtio_gpu_cmd_resource_inval_backing(struct virtio_gpu_device *vgdev,
uint32_t resource_id) uint32_t resource_id)
{ {
struct virtio_gpu_resource_detach_backing *cmd_p; struct virtio_gpu_resource_detach_backing *cmd_p;
...@@ -883,6 +883,12 @@ int virtio_gpu_object_attach(struct virtio_gpu_device *vgdev, ...@@ -883,6 +883,12 @@ int virtio_gpu_object_attach(struct virtio_gpu_device *vgdev,
return 0; return 0;
} }
void virtio_gpu_object_detach(struct virtio_gpu_device *vgdev,
struct virtio_gpu_object *obj)
{
virtio_gpu_cmd_resource_inval_backing(vgdev, obj->hw_res_handle);
}
void virtio_gpu_cursor_ping(struct virtio_gpu_device *vgdev, void virtio_gpu_cursor_ping(struct virtio_gpu_device *vgdev,
struct virtio_gpu_output *output) struct virtio_gpu_output *output)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment