Locking and synchronization in BPF

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I would like to propose a session on locking and synchronization in
BPF programs. We will discuss recent changes and how locking and
synchronization primitives should evolve to support more diverse use
cases.

The adoption of BPF arenas has introduced some new challenges. We need
primitives that allow proper synchronization between BPF programs
running in the kernel, and applications running in user space. Data
structures written for BPF arenas are shared across the user-kernel
boundary, and current synchronization mechanisms fall short in
addressing all needs.

With the resilient queued spin locks series [0], we've taken a step
towards more flexible and safe locking. Introduction of these spin
locks allow us to relax constraints in BPF programs, however, to
permit more complicated logic in critical sections, and enable locks
in more program types, additional work and analysis is necessary.

Some relevant discussion topics include:
* Relaxing verifier restrictions for current spin lock usage.
* BPF arena spin lock implementation.
* Holding locks across user-kernel boundaries, and associated challenges.
* Allowing user space readers to act as RCU readers, and BPF program
in the kernel as the writer, or vice-versa.
* Potentially sharing locks between the kernel and BPF programs, for
mutating kernel data structures.

  [0]: https://lore.kernel.org/bpf/20250206105435.2159977-1-memxor@xxxxxxxxx




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux