mbox series

[v8,00/18] drm/virtio: switch from ttm to gem shmem helpers.

Message ID 20190823095503.2261-1-kraxel@redhat.com (mailing list archive)
Headers show
Series drm/virtio: switch from ttm to gem shmem helpers. | expand

Message

Gerd Hoffmann Aug. 23, 2019, 9:54 a.m. UTC
ttm increasingly gets into the way while hacking on virtio-gpu memory
management.  It also overkill for what virtio-gpu needs.  Lets get rid
of it.

v8:
 - rebase to latest drm-misc-next, adapt to changes.
v7:
 - rebase to latest drm-misc-next
 - reorder patches: switch all virtio commands to object array helpers
   first. then drop ttm, to make sure we don't release objects still in
   use.
 - misc fixes.
v6:
 - largely rewrite fencing logic, using the virtio_gpu_array_* helpers
 - add more patches to the series.
v5:
 - fence bugfixes.
 - minor optimizations.
v4:
 - make gem array helpers private to virtio.
 - misc minor fixes.
v3:
 - add gem array helpers.
 - rework fencing.

please review.

thanks,
  Gerd

Gerd Hoffmann (18):
  drm/virtio: pass gem reservation object to ttm init
  drm/virtio: switch virtio_gpu_wait_ioctl() to gem helper.
  drm/virtio: simplify cursor updates
  drm/virtio: remove virtio_gpu_object_wait
  drm/virtio: drop no_wait argument from virtio_gpu_object_reserve
  drm/virtio: remove ttm calls from in
    virtio_gpu_object_{reserve,unreserve}
  drm/virtio: add virtio_gpu_object_array & helpers
  drm/virtio: rework virtio_gpu_execbuffer_ioctl fencing
  drm/virtio: rework virtio_gpu_object_create fencing
  drm/virtio: rework virtio_gpu_transfer_from_host_ioctl fencing
  drm/virtio: rework virtio_gpu_transfer_to_host_ioctl fencing
  drm/virtio: rework virtio_gpu_cmd_context_{attach,detach}_resource
  drm/virtio: drop virtio_gpu_object_list_validate/virtio_gpu_unref_list
  drm/virtio: switch from ttm to gem shmem helpers
  drm/virtio: remove virtio_gpu_alloc_object
  drm/virtio: drop virtio_gpu_object_{ref,unref}
  drm/virtio: drop virtio_gpu_object_{reserve,unreserve}
  drm/virtio: add fence sanity check

 drivers/gpu/drm/virtio/virtgpu_drv.h    | 123 +++-------
 drivers/gpu/drm/virtio/virtgpu_drv.c    |  20 +-
 drivers/gpu/drm/virtio/virtgpu_fence.c  |   4 +
 drivers/gpu/drm/virtio/virtgpu_gem.c    | 156 ++++++++----
 drivers/gpu/drm/virtio/virtgpu_ioctl.c  | 221 ++++++-----------
 drivers/gpu/drm/virtio/virtgpu_kms.c    |   9 -
 drivers/gpu/drm/virtio/virtgpu_object.c | 220 +++++------------
 drivers/gpu/drm/virtio/virtgpu_plane.c  |  34 +--
 drivers/gpu/drm/virtio/virtgpu_prime.c  |  34 ---
 drivers/gpu/drm/virtio/virtgpu_ttm.c    | 305 ------------------------
 drivers/gpu/drm/virtio/virtgpu_vq.c     |  78 ++++--
 drivers/gpu/drm/virtio/Kconfig          |   2 +-
 drivers/gpu/drm/virtio/Makefile         |   2 +-
 13 files changed, 370 insertions(+), 838 deletions(-)
 delete mode 100644 drivers/gpu/drm/virtio/virtgpu_ttm.c

Comments

Chia-I Wu Aug. 28, 2019, 11:14 p.m. UTC | #1
On Fri, Aug 23, 2019 at 2:55 AM Gerd Hoffmann <kraxel@redhat.com> wrote:
>
> ttm increasingly gets into the way while hacking on virtio-gpu memory
> management.  It also overkill for what virtio-gpu needs.  Lets get rid
> of it.
>
> v8:
>  - rebase to latest drm-misc-next, adapt to changes.
Other than two (minor) comments on patch 2 and 7, the series looks good to me.

I was concerned that this series maps BOs write-combine (from
drm_gem_mmap_obj) rather than cached (was the case with ttm because of
TTM_PL_FLAG_CACHED).  But memory types seem to have no effect inside a
guest.  It should still be fixed at some point, but it does not block
this series.


> v7:
>  - rebase to latest drm-misc-next
>  - reorder patches: switch all virtio commands to object array helpers
>    first. then drop ttm, to make sure we don't release objects still in
>    use.
>  - misc fixes.
> v6:
>  - largely rewrite fencing logic, using the virtio_gpu_array_* helpers
>  - add more patches to the series.
> v5:
>  - fence bugfixes.
>  - minor optimizations.
> v4:
>  - make gem array helpers private to virtio.
>  - misc minor fixes.
> v3:
>  - add gem array helpers.
>  - rework fencing.
>
> please review.
>
> thanks,
>   Gerd
>
> Gerd Hoffmann (18):
>   drm/virtio: pass gem reservation object to ttm init
>   drm/virtio: switch virtio_gpu_wait_ioctl() to gem helper.
>   drm/virtio: simplify cursor updates
>   drm/virtio: remove virtio_gpu_object_wait
>   drm/virtio: drop no_wait argument from virtio_gpu_object_reserve
>   drm/virtio: remove ttm calls from in
>     virtio_gpu_object_{reserve,unreserve}
>   drm/virtio: add virtio_gpu_object_array & helpers
>   drm/virtio: rework virtio_gpu_execbuffer_ioctl fencing
>   drm/virtio: rework virtio_gpu_object_create fencing
>   drm/virtio: rework virtio_gpu_transfer_from_host_ioctl fencing
>   drm/virtio: rework virtio_gpu_transfer_to_host_ioctl fencing
>   drm/virtio: rework virtio_gpu_cmd_context_{attach,detach}_resource
>   drm/virtio: drop virtio_gpu_object_list_validate/virtio_gpu_unref_list
>   drm/virtio: switch from ttm to gem shmem helpers
>   drm/virtio: remove virtio_gpu_alloc_object
>   drm/virtio: drop virtio_gpu_object_{ref,unref}
>   drm/virtio: drop virtio_gpu_object_{reserve,unreserve}
>   drm/virtio: add fence sanity check
>
>  drivers/gpu/drm/virtio/virtgpu_drv.h    | 123 +++-------
>  drivers/gpu/drm/virtio/virtgpu_drv.c    |  20 +-
>  drivers/gpu/drm/virtio/virtgpu_fence.c  |   4 +
>  drivers/gpu/drm/virtio/virtgpu_gem.c    | 156 ++++++++----
>  drivers/gpu/drm/virtio/virtgpu_ioctl.c  | 221 ++++++-----------
>  drivers/gpu/drm/virtio/virtgpu_kms.c    |   9 -
>  drivers/gpu/drm/virtio/virtgpu_object.c | 220 +++++------------
>  drivers/gpu/drm/virtio/virtgpu_plane.c  |  34 +--
>  drivers/gpu/drm/virtio/virtgpu_prime.c  |  34 ---
>  drivers/gpu/drm/virtio/virtgpu_ttm.c    | 305 ------------------------
>  drivers/gpu/drm/virtio/virtgpu_vq.c     |  78 ++++--
>  drivers/gpu/drm/virtio/Kconfig          |   2 +-
>  drivers/gpu/drm/virtio/Makefile         |   2 +-
>  13 files changed, 370 insertions(+), 838 deletions(-)
>  delete mode 100644 drivers/gpu/drm/virtio/virtgpu_ttm.c
>
> --
> 2.18.1
>