All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 0/5] Generic page pool & deferred freeing for system dmabuf heap
@ 2021-03-04 23:20 ` John Stultz
  0 siblings, 0 replies; 24+ messages in thread
From: John Stultz @ 2021-03-04 23:20 UTC (permalink / raw)
  To: lkml
  Cc: John Stultz, Daniel Vetter, Christian Koenig, Sumit Semwal,
	Liam Mark, Chris Goldsworthy, Laura Abbott, Brian Starkey,
	Hridya Valsaraju, Suren Baghdasaryan, Sandeep Patil,
	Daniel Mentz, Ørjan Eide, Robin Murphy, Ezequiel Garcia,
	Simon Ser, James Jones, linux-media, dri-devel

Apologies for letting so much time pass since the last revision!

The point of this series is trying to add both deferred-freeing
logic as well as a page pool to the DMA-BUF system heap to improve
allocation performance.

This is desired, as the combination of deferred freeing along
with the page pool allows us to offload page-zeroing out of
the allocation hot path. This was done originally with ION
and this patch series allows the DMA-BUF system heap to match
ION's system heap allocation performance in a simple
microbenchmark [1] (ION re-added to the kernel for comparision,
running on an x86 vm image):

./dmabuf-heap-bench -i 0 1 system
Testing dmabuf system vs ion heaptype 0 (flags: 0x1)
---------------------------------------------
dmabuf heap: alloc 4096 bytes 5000 times in 88092722 ns          17618 ns/call
ion heap:    alloc 4096 bytes 5000 times in 103043547 ns         20608 ns/call
dmabuf heap: alloc 1048576 bytes 5000 times in 252416639 ns      50483 ns/call
ion heap:    alloc 1048576 bytes 5000 times in 358190744 ns      71638 ns/call
dmabuf heap: alloc 8388608 bytes 5000 times in 2854351310 ns     570870 ns/call
ion heap:    alloc 8388608 bytes 5000 times in 3676328905 ns     735265 ns/call
dmabuf heap: alloc 33554432 bytes 5000 times in 13208119197 ns   2641623 ns/call
ion heap:    alloc 33554432 bytes 5000 times in 15306975287 ns   3061395 ns/call


Daniel didn't like earlier attempts to re-use the network
page-pool code to achieve this, and suggested the ttm_pool be
used instead, so this series pulls the page pool functionality
out of the ttm_pool logic and creates a generic page pool
that can be shared.

New in v7 (never submitted):
* Reworked how I integrated the page pool with the ttm logic
  to use container of to avoid allocating structures per page. 

New in v8:
* Due to the dual license requirement from Christian König
  I completely threw away the earlier shared page pool
  implementation (which had evolved from ion code), and
  rewrote it using just the ttm_pool logic. My apologies
  for any previously reviewed issues that I've reintroduced
  in doing so.

Input would be greatly appreciated. Testing as well, as I don't
have any development hardware that utilizes the ttm pool.

thanks
-john

[1] https://android.googlesource.com/platform/system/memory/libdmabufheap/+/refs/heads/master/tests/dmabuf_heap_bench.c

Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Christian Koenig <christian.koenig@amd.com>
Cc: Sumit Semwal <sumit.semwal@linaro.org>
Cc: Liam Mark <lmark@codeaurora.org>
Cc: Chris Goldsworthy <cgoldswo@codeaurora.org>
Cc: Laura Abbott <labbott@kernel.org>
Cc: Brian Starkey <Brian.Starkey@arm.com>
Cc: Hridya Valsaraju <hridya@google.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Sandeep Patil <sspatil@google.com>
Cc: Daniel Mentz <danielmentz@google.com>
Cc: Ørjan Eide <orjan.eide@arm.com>
Cc: Robin Murphy <robin.murphy@arm.com>
Cc: Ezequiel Garcia <ezequiel@collabora.com>
Cc: Simon Ser <contact@emersion.fr>
Cc: James Jones <jajones@nvidia.com>
Cc: linux-media@vger.kernel.org
Cc: dri-devel@lists.freedesktop.org

John Stultz (5):
  drm: Add a sharable drm page-pool implementation
  drm: ttm_pool: Rework ttm_pool to use drm_page_pool
  dma-buf: heaps: Add deferred-free-helper library code
  dma-buf: system_heap: Add drm pagepool support to system heap
  dma-buf: system_heap: Add deferred freeing to the system heap

 drivers/dma-buf/heaps/Kconfig                |   5 +
 drivers/dma-buf/heaps/Makefile               |   1 +
 drivers/dma-buf/heaps/deferred-free-helper.c | 138 ++++++++++++
 drivers/dma-buf/heaps/deferred-free-helper.h |  55 +++++
 drivers/dma-buf/heaps/system_heap.c          |  47 +++-
 drivers/gpu/drm/Kconfig                      |   5 +
 drivers/gpu/drm/Makefile                     |   2 +
 drivers/gpu/drm/page_pool.c                  | 214 +++++++++++++++++++
 drivers/gpu/drm/ttm/ttm_pool.c               | 156 +++-----------
 include/drm/page_pool.h                      |  65 ++++++
 include/drm/ttm/ttm_pool.h                   |   6 +-
 11 files changed, 557 insertions(+), 137 deletions(-)
 create mode 100644 drivers/dma-buf/heaps/deferred-free-helper.c
 create mode 100644 drivers/dma-buf/heaps/deferred-free-helper.h
 create mode 100644 drivers/gpu/drm/page_pool.c
 create mode 100644 include/drm/page_pool.h

-- 
2.25.1


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

end of thread, other threads:[~2021-03-05 10:51 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-04 23:20 [PATCH v8 0/5] Generic page pool & deferred freeing for system dmabuf heap John Stultz
2021-03-04 23:20 ` John Stultz
2021-03-04 23:20 ` [PATCH v8 1/5] drm: Add a sharable drm page-pool implementation John Stultz
2021-03-04 23:20   ` John Stultz
2021-03-05  9:59   ` Christian König
2021-03-05  9:59     ` Christian König
2021-03-04 23:20 ` [PATCH v8 2/5] drm: ttm_pool: Rework ttm_pool to use drm_page_pool John Stultz
2021-03-04 23:20   ` John Stultz
2021-03-05  7:02   ` kernel test robot
2021-03-05  7:02     ` kernel test robot
2021-03-05  7:02     ` kernel test robot
2021-03-05 10:43   ` Christian König
2021-03-05 10:43     ` Christian König
2021-03-04 23:20 ` [PATCH v8 3/5] dma-buf: heaps: Add deferred-free-helper library code John Stultz
2021-03-04 23:20   ` John Stultz
2021-03-05 10:50   ` Christian König
2021-03-05 10:50     ` Christian König
2021-03-04 23:20 ` [PATCH v8 4/5] dma-buf: system_heap: Add drm pagepool support to system heap John Stultz
2021-03-04 23:20   ` John Stultz
2021-03-05  0:55   ` kernel test robot
2021-03-05  5:00   ` kernel test robot
2021-03-05  5:00     ` kernel test robot
2021-03-04 23:20 ` [PATCH v8 5/5] dma-buf: system_heap: Add deferred freeing to the " John Stultz
2021-03-04 23:20   ` John Stultz

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.