linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v9 00/11] Add generic memory shrinker to VirtIO-GPU and Panfrost DRM drivers
@ 2022-11-23  2:57 Dmitry Osipenko
  2022-11-23  2:57 ` [PATCH v9 01/11] drm/msm/gem: Prevent blocking within shrinker loop Dmitry Osipenko
                   ` (10 more replies)
  0 siblings, 11 replies; 19+ messages in thread
From: Dmitry Osipenko @ 2022-11-23  2:57 UTC (permalink / raw)
  To: David Airlie, Gerd Hoffmann, Gurchetan Singh, Chia-I Wu,
	Daniel Vetter, Daniel Almeida, Gustavo Padovan, Daniel Stone,
	Tomeu Vizoso, Maarten Lankhorst, Maxime Ripard,
	Thomas Zimmermann, Rob Clark, Sumit Semwal, Christian König,
	Qiang Yu, Steven Price, Alyssa Rosenzweig, Rob Herring,
	Sean Paul, Dmitry Baryshkov, Abhinav Kumar
  Cc: dri-devel, linux-kernel, kernel, virtualization

Hello,

This series:

  1. Makes minor fixes for drm_gem_lru and Panfrost
  2. Brings refactoring for older code
  3. Adds common drm-shmem memory shrinker
  4. Enables shrinker for VirtIO-GPU driver
  5. Switches Panfrost driver to the common shrinker

Changelog:

v9: - Replaced struct drm_gem_shmem_shrinker with drm_gem_shmem and
      moved it to drm_device, like was suggested by Thomas Zimmermann.

    - Replaced drm_gem_shmem_shrinker_register() with drmm_gem_shmem_init(),
      like was suggested by Thomas Zimmermann.

    - Moved evict() callback to drm_gem_object_funcs and added common
      drm_gem_object_evict() helper, like was suggested by Thomas Zimmermann.

    - The shmem object now is evictable by default, like was suggested by
      Thomas Zimmermann. Dropped the set_evictable/purgeble() functions
      as well, drivers will decide whether BO is evictable within theirs
      madvise IOCTL.

    - Added patches that convert drm-shmem code to use drm_WARN_ON() and
      drm_dbg_kms(), like was requested by Thomas Zimmermann.

    - Turned drm_gem_shmem_object booleans into 1-bit bit fields, like was
      suggested by Thomas Zimmermann.

    - Switched to use drm_dev->unique for the shmem shrinker name. Drivers
      don't need to specify the name explicitly anymore.

    - Re-added dma_resv_test_signaled() that was missing in v8 and also
      fixed its argument to DMA_RESV_USAGE_READ. See comment to
      dma_resv_usage_rw().

    - Added new fix for Panfrost driver that silences lockdep warning
      caused by shrinker. Both Panfrost old and new shmem shrinkers are
      affected.

v8: - Rebased on top of recent linux-next that now has dma-buf locking
      convention patches merged, which was blocking shmem shrinker before.

    - Shmem shrinker now uses new drm_gem_lru helper.

    - Dropped Steven Price t-b from the Panfrost patch because code
      changed significantly since v6 and should be re-tested.

v7: - dma-buf locking convention

v6: https://lore.kernel.org/dri-devel/20220526235040.678984-1-dmitry.osipenko@collabora.com/

Related patches:

Mesa: https://gitlab.freedesktop.org/digetx/mesa/-/commits/virgl-madvise
igt:  https://gitlab.freedesktop.org/digetx/igt-gpu-tools/-/commits/virtio-madvise
      https://gitlab.freedesktop.org/digetx/igt-gpu-tools/-/commits/panfrost-madvise

I'm going to upstream Mesa and igt patches once the kernel part will land.

Dmitry Osipenko (11):
  drm/msm/gem: Prevent blocking within shrinker loop
  drm/gem: Add evict() callback to drm_gem_object_funcs
  drm/panfrost: Don't sync rpm suspension after mmu flushing
  drm/shmem: Put booleans in the end of struct drm_gem_shmem_object
  drm/shmem: Switch to use drm_* debug helpers
  drm/shmem-helper: Don't use vmap_use_count for dma-bufs
  drm/shmem-helper: Switch to reservation lock
  drm/shmem-helper: Add memory shrinker
  drm/gem: Add drm_gem_pin_unlocked()
  drm/virtio: Support memory shrinking
  drm/panfrost: Switch to generic memory shrinker

Dmitry Osipenko (11):
  drm/msm/gem: Prevent blocking within shrinker loop
  drm/panfrost: Don't sync rpm suspension after mmu flushing
  drm/gem: Add evict() callback to drm_gem_object_funcs
  drm/shmem: Put booleans in the end of struct drm_gem_shmem_object
  drm/shmem: Switch to use drm_* debug helpers
  drm/shmem-helper: Don't use vmap_use_count for dma-bufs
  drm/shmem-helper: Switch to reservation lock
  drm/shmem-helper: Add memory shrinker
  drm/gem: Add drm_gem_pin_unlocked()
  drm/virtio: Support memory shrinking
  drm/panfrost: Switch to generic memory shrinker

 drivers/gpu/drm/drm_gem.c                     |  53 +-
 drivers/gpu/drm/drm_gem_shmem_helper.c        | 647 +++++++++++++-----
 drivers/gpu/drm/lima/lima_gem.c               |   8 +-
 drivers/gpu/drm/msm/msm_gem_shrinker.c        |   8 +-
 drivers/gpu/drm/panfrost/Makefile             |   1 -
 drivers/gpu/drm/panfrost/panfrost_device.h    |   4 -
 drivers/gpu/drm/panfrost/panfrost_drv.c       |  34 +-
 drivers/gpu/drm/panfrost/panfrost_gem.c       |  30 +-
 drivers/gpu/drm/panfrost/panfrost_gem.h       |   9 -
 .../gpu/drm/panfrost/panfrost_gem_shrinker.c  | 122 ----
 drivers/gpu/drm/panfrost/panfrost_job.c       |  18 +-
 drivers/gpu/drm/panfrost/panfrost_mmu.c       |  21 +-
 drivers/gpu/drm/virtio/virtgpu_drv.h          |  18 +-
 drivers/gpu/drm/virtio/virtgpu_gem.c          |  52 ++
 drivers/gpu/drm/virtio/virtgpu_ioctl.c        |  37 +
 drivers/gpu/drm/virtio/virtgpu_kms.c          |   8 +
 drivers/gpu/drm/virtio/virtgpu_object.c       | 132 +++-
 drivers/gpu/drm/virtio/virtgpu_plane.c        |  22 +-
 drivers/gpu/drm/virtio/virtgpu_vq.c           |  40 ++
 include/drm/drm_device.h                      |  10 +-
 include/drm/drm_gem.h                         |  19 +-
 include/drm/drm_gem_shmem_helper.h            | 112 +--
 include/uapi/drm/virtgpu_drm.h                |  14 +
 23 files changed, 1010 insertions(+), 409 deletions(-)
 delete mode 100644 drivers/gpu/drm/panfrost/panfrost_gem_shrinker.c

-- 
2.38.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2022-11-29 16:40 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-23  2:57 [PATCH v9 00/11] Add generic memory shrinker to VirtIO-GPU and Panfrost DRM drivers Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 01/11] drm/msm/gem: Prevent blocking within shrinker loop Dmitry Osipenko
2022-11-29 16:40   ` Rob Clark
2022-11-23  2:57 ` [PATCH v9 02/11] drm/panfrost: Don't sync rpm suspension after mmu flushing Dmitry Osipenko
2022-11-23 15:59   ` Steven Price
2022-11-23  2:57 ` [PATCH v9 03/11] drm/gem: Add evict() callback to drm_gem_object_funcs Dmitry Osipenko
2022-11-23 15:58   ` Steven Price
2022-11-23 16:40     ` Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 04/11] drm/shmem: Put booleans in the end of struct drm_gem_shmem_object Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 05/11] drm/shmem: Switch to use drm_* debug helpers Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 06/11] drm/shmem-helper: Don't use vmap_use_count for dma-bufs Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 07/11] drm/shmem-helper: Switch to reservation lock Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 08/11] drm/shmem-helper: Add memory shrinker Dmitry Osipenko
2022-11-23 15:56   ` kernel test robot
2022-11-23 18:08   ` kernel test robot
2022-11-23  2:57 ` [PATCH v9 09/11] drm/gem: Add drm_gem_pin_unlocked() Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 10/11] drm/virtio: Support memory shrinking Dmitry Osipenko
2022-11-23  2:57 ` [PATCH v9 11/11] drm/panfrost: Switch to generic memory shrinker Dmitry Osipenko
2022-11-23 17:03   ` Steven Price

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).