This set introduces support for managing IRQ state from BPF programs. Two new kfuncs, bpf_local_irq_save, and bpf_local_irq_restore are introduced to enable this functionality. Intended use cases are writing IRQ safe data structures (e.g. memory allocator) in BPF programs natively, and use in new spin locking primitives intended to be introduced in the next few weeks. The set begins with some refactoring patches before the actual functionality is introduced. First, we rename bpf_reference_state to bpf_resource_state, and stick to calling pointer resources as actual references, as the meaning is right now mixed (with lock state management functions calling acquire_reference_state and check_reference_leak not considering lock resoures, causing confusion). The first patch also takes this opportunity to eliminate code duplication where possible. The second patch resolves an inconsistency in the same set of functions for managing lock state, in preparation for later patches that require passing bpf_func_state explicitly to find a lock state. Since we now manage locks in bpf_func_state alongside other resources, this is a good opportunity to consolidate all other resources like RCU read sections and preempt-disabled section tracking into bpf_func_state as well, which is what patch 3 achieves. After this, patch 4 refactors stack slot liveness marking logic to be shared between dynptr, and iterators, in preparation for introducing same logic for irq flag object on stack. Finally, patch 5 and 7 introduce the new kfuncs and their selftests. For more details, please inspect the patch commit logs. Patch 6 expands coverage of existing preempt-disable selftest to cover sleepable kfuncs. Kumar Kartikeya Dwivedi (7): bpf: Refactor and rename resource management bpf: Be consistent between {acquire,find,release}_lock_state bpf: Consolidate RCU and preempt locks in bpf_func_state bpf: Refactor mark_{dynptr,iter}_read bpf: Introduce support for bpf_local_irq_{save,restore} selftests/bpf: Expand coverage of preempt tests to sleepable kfunc selftests/bpf: Add IRQ save/restore tests include/linux/bpf_verifier.h | 47 +- kernel/bpf/helpers.c | 24 + kernel/bpf/log.c | 11 +- kernel/bpf/verifier.c | 540 ++++++++++++++---- tools/testing/selftests/bpf/prog_tests/irq.c | 9 + tools/testing/selftests/bpf/progs/irq.c | 393 +++++++++++++ .../selftests/bpf/progs/preempt_lock.c | 12 + 7 files changed, 889 insertions(+), 147 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/irq.c create mode 100644 tools/testing/selftests/bpf/progs/irq.c base-commit: 2c8b09ac2537299511c898bc71b1a5f2756c831c -- 2.43.5