The main motivation behind this is to have eventually have something like this: struct virtio_gpu_shmem {     struct drm_gem_shmem_object base;     uint32_t hw_res_handle;     struct sg_table *pages;     (...) }; struct virtio_gpu_vram {     struct drm_gem_object base;  // or *drm_gem_vram_object     uint32_t hw_res_handle;     {offset, range};     (...) }; Sending this out to solicit feedback on this approach.  Whichever approach we decide, landing incremental changes to internal structures is reduces rebasing costs and avoids mega-changes. Gurchetan Singh (8): drm/virtio: make mmap callback consistent with callbacks drm/virtio: add virtio_gpu_is_shmem helper drm/virtio: add virtio_gpu_get_handle function drm/virtio: make RESOURCE_UNREF use virtio_gpu_get_handle(..) drm/virtio: make {ATTACH_RESOURCE, DETACH_RESOURCE} use virtio_gpu_get_handle(..) drm/virtio: rename virtio_gpu_object_array to virtio_gpu_gem_array drm/virtio: rename virtio_gpu_object_params to virtio_gpu_create_params drm/virtio: rename virtio_gpu_object to virtio_gpu_shmem drivers/gpu/drm/virtio/virtgpu_drv.h | 72 ++++++------ drivers/gpu/drm/virtio/virtgpu_gem.c | 132 ++++++++++----------- drivers/gpu/drm/virtio/virtgpu_ioctl.c | 50 ++++---- drivers/gpu/drm/virtio/virtgpu_object.c | 148 +++++++++++++----------- drivers/gpu/drm/virtio/virtgpu_plane.c | 52 ++++----- drivers/gpu/drm/virtio/virtgpu_vq.c | 113 +++++++++--------- 6 files changed, 298 insertions(+), 269 deletions(-) -- 2.25.1.481.gfbce0eb801-goog