summaryrefslogtreecommitdiff
path: root/include/linux/timerqueue.h
diff options
context:
space:
mode:
authorAlexei Starovoitov <ast@kernel.org>2026-10-02 13:01:00 +0000
committerAlexei Starovoitov <ast@kernel.org>2026-10-02 13:01:00 +0000
commita1739a8ca372d042c34577754435241690bbda33 (patch)
tree3d35625acd88758419b570549dd1a27c968f231d /include/linux/timerqueue.h
parentb5a4aa31abd6fe90009b63e35dc18c67d041ec0c (diff)
parentfc38f07781ca3e40f4f39532d83b5cb3d75a3ab5 (diff)
downloadlinux-next-a1739a8ca372d042c34577754435241690bbda33.tar.gz
linux-next-a1739a8ca372d042c34577754435241690bbda33.zip
Merge branch 'make-sleepable-arena-paths-use-sleepable-alloc_pages'
Emil Tsalapatis says: ==================== Make sleepable arena paths use sleepable alloc_pages The arena_alloc_pages() call takes a sleepable argument based on whether its caller is a sleepable BPF function. This flag, along with the context the kfunc is called in, decides whether the call will try to fulfill the allocation using the regular or the _nolock variant of the alloc_pages API, by means of bpf_map_alloc_pages(). However, the arena_alloc_pages() call currently only makes allocations inside an IRQ-disabled critical section. This forces all allocations to use the _nolock() API, which may eagerly fail where the regular variant would eventually succeed. There have been reports of this happening for sched-ext schedulers. Restructure arena_alloc_pages() to use the _nolock() page allocation API only when necessary. This requires moving allocations outside of the spinlock critical section for sleepable calls, which in turn requires slightly different logic in the allocation path. Replace the page list allocation with logic that reuses pcp_llist to chain allocated pages together, allowing us to merge the code paths for both sleepable and nonsleepable arena allocations. Also fix kfunc specialization to not unnecessarily force the nonsleepable version of bpf_arena_alloc_pages() for call sites that do not need it. This requires making specialization per-call site instead of overwriting the descriptor during fixups. Signed-off-by: Emil Tsalapatis <emil@etsalapatis.com> v1 -> v2 (https://lore.kernel.org/bpf/20260824082530.47553-1-emil@etsalapatis.com/) - Keep the sleepable and non-sleepable allocation paths within arena_alloc_pages (Alexei) - Incorporate bot feedback on selftests (bot-ci) v2 -> v3 (https://lore.kernel.org/bpf/20260923191125.5311-1-emil@etsalapatis.com/) - Remove the intermediate page array allocation in bpf_arena_alloc_pages() and use the pcp_llist pointer instead (Alexei) - Fix function specialization to only specialize to the nonsleepable version when necessary v3 -> v4 (https://lore.kernel.org/bpf/20260925203939.4105-1-emil@etsalapatis.com/) - Remove in-flight pages tracking (Alexei) - Remove stale split sleepable/nonsleepable error handling (Alexei) v4 -> v5 (https://lore.kernel.org/bpf/20260925233538.5708-1-emil@etsalapatis.com/) - Remove unnecessary imm-based sorting for kfunc desc table (Alexei) - Skip all nonspecialized kfunc descs during the linear scan done by function specialization v5 -> v6 (https://lore.kernel.org/bpf/20260928202643.9114-1-emil@etsalapatis.com/) - Use verifier_bug() for diagnostics (bot) ==================== Link: https://patch.msgid.link/20261002105218.6171-1-emil@etsalapatis.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'include/linux/timerqueue.h')
0 files changed, 0 insertions, 0 deletions