On Thu, May 8, 2025 at 11:04 PM Christian König
<christian.koe...@amd.com> wrote:
>
> Feel free to add my Acked-by to the patches which don't have my rb yet.
>
> And ping me when I should upstream this through drm-misc-next, but if you 
> want to upstream this through some other branch then that is fine with me as 
> well.

Thanks Christian. Alexei mentioned he was willing to take the series
through bpf-next here:
https://lore.kernel.org/all/caadnvqlqv-zpoqehk2uwvszorslcjgf7qld76ohguh5-gcs...@mail.gmail.com/

I think it makes sense to send the CONFIG_DMABUF_SYSFS_STATS removal
through drm-misc-next though, so I'll resend that as a standalone
patch whenever I hear about the next longterm stable release.

>
> Regards,
> Christian.
>
> On 5/8/25 20:20, T.J. Mercier wrote:
> > Until CONFIG_DMABUF_SYSFS_STATS was added [1] it was only possible to
> > perform per-buffer accounting with debugfs which is not suitable for
> > production environments. Eventually we discovered the overhead with
> > per-buffer sysfs file creation/removal was significantly impacting
> > allocation and free times, and exacerbated kernfs lock contention. [2]
> > dma_buf_stats_setup() is responsible for 39% of single-page buffer
> > creation duration, or 74% of single-page dma_buf_export() duration when
> > stressing dmabuf allocations and frees.
> >
> > I prototyped a change from per-buffer to per-exporter statistics with a
> > RCU protected list of exporter allocations that accommodates most (but
> > not all) of our use-cases and avoids almost all of the sysfs overhead.
> > While that adds less overhead than per-buffer sysfs, and less even than
> > the maintenance of the dmabuf debugfs_list, it's still *additional*
> > overhead on top of the debugfs_list and doesn't give us per-buffer info.
> >
> > This series uses the existing dmabuf debugfs_list to implement a BPF
> > dmabuf iterator, which adds no overhead to buffer allocation/free and
> > provides per-buffer info. The list has been moved outside of
> > CONFIG_DEBUG_FS scope so that it is always populated. The BPF program
> > loaded by userspace that extracts per-buffer information gets to define
> > its own interface which avoids the lack of ABI stability with debugfs.
> >
> > This will allow us to replace our use of CONFIG_DMABUF_SYSFS_STATS, and
> > the plan is to remove it from the kernel after the next longterm stable
> > release.
> >
> > [1] 
> > https://lore.kernel.org/linux-media/20201210044400.1080308-1-hri...@google.com
> > [2] 
> > https://lore.kernel.org/all/20220516171315.2400578-1-tjmerc...@google.com
> >
> > v1: 
> > https://lore.kernel.org/all/20250414225227.3642618-1-tjmerc...@google.com
> > v1 -> v2:
> > Make the DMA buffer list independent of CONFIG_DEBUG_FS per Christian König
> > Add CONFIG_DMA_SHARED_BUFFER check to kernel/bpf/Makefile per kernel test 
> > robot
> > Use BTF_ID_LIST_SINGLE instead of BTF_ID_LIST_GLOBAL_SINGLE per Song Liu
> > Fixup comment style, mixing code/declarations, and use ASSERT_OK_FD in 
> > selftest per Song Liu
> > Add BPF_ITER_RESCHED feature to bpf_dmabuf_reg_info per Alexei Starovoitov
> > Add open-coded iterator and selftest per Alexei Starovoitov
> > Add a second test buffer from the system dmabuf heap to selftests
> > Use the BPF program we'll use in production for selftest per Alexei 
> > Starovoitov
> >   https://r.android.com/c/platform/system/bpfprogs/+/3616123/2/dmabufIter.c
> >   
> > https://r.android.com/c/platform/system/memory/libmeminfo/+/3614259/1/libdmabufinfo/dmabuf_bpf_stats.cpp
> > v2: 
> > https://lore.kernel.org/all/20250504224149.1033867-1-tjmerc...@google.com
> > v2 -> v3:
> > Rebase onto bpf-next/master
> > Move get_next_dmabuf() into drivers/dma-buf/dma-buf.c, along with the
> >   new get_first_dmabuf(). This avoids having to expose the dmabuf list
> >   and mutex to the rest of the kernel, and keeps the dmabuf mutex
> >   operations near each other in the same file. (Christian König)
> > Add Christian's RB to dma-buf: Rename debugfs symbols
> > Drop RFC: dma-buf: Remove DMA-BUF statistics
> > v3: 
> > https://lore.kernel.org/all/20250507001036.2278781-1-tjmerc...@google.com
> > v3 -> v4:
> > Fix selftest BPF program comment style (not kdoc) per Alexei Starovoitov
> > Fix dma-buf.c kdoc comment style per Alexei Starovoitov
> > Rename get_first_dmabuf / get_next_dmabuf to dma_buf_iter_begin /
> >   dma_buf_iter_next per Christian König
> > Add Christian's RB to bpf: Add dmabuf iterator
> >
> > T.J. Mercier (5):
> >   dma-buf: Rename debugfs symbols
> >   bpf: Add dmabuf iterator
> >   bpf: Add open coded dmabuf iterator
> >   selftests/bpf: Add test for dmabuf_iter
> >   selftests/bpf: Add test for open coded dmabuf_iter
> >
> >  drivers/dma-buf/dma-buf.c                     |  98 +++++--
> >  include/linux/dma-buf.h                       |   4 +-
> >  kernel/bpf/Makefile                           |   3 +
> >  kernel/bpf/dmabuf_iter.c                      | 149 ++++++++++
> >  kernel/bpf/helpers.c                          |   5 +
> >  .../testing/selftests/bpf/bpf_experimental.h  |   5 +
> >  tools/testing/selftests/bpf/config            |   3 +
> >  .../selftests/bpf/prog_tests/dmabuf_iter.c    | 258 ++++++++++++++++++
> >  .../testing/selftests/bpf/progs/dmabuf_iter.c |  91 ++++++
> >  9 files changed, 594 insertions(+), 22 deletions(-)
> >  create mode 100644 kernel/bpf/dmabuf_iter.c
> >  create mode 100644 tools/testing/selftests/bpf/prog_tests/dmabuf_iter.c
> >  create mode 100644 tools/testing/selftests/bpf/progs/dmabuf_iter.c
> >
> >
> > base-commit: 43745d11bfd9683abdf08ad7a5cc403d6a9ffd15
>

Reply via email to