Re: [PATCH] bpf: arena: reschedule while freeing the arena pages

[email protected]
Newsgroups org.kernel.vger.bpf,org.kernel.vger.linux-kernel
Message-ID <812c7dce29c7faba7596961a4db56703bbb8ecf1ca5b05b30bfeda0f3ca15de0@mail.kernel.org>
> bpf: arena: reschedule while freeing the arena pages
>
> On non-preemptible kernels that is long enough to trip both the RCU
> stall detector and the softlockup watchdog. Observed on production arm64
> hosts at Meta:
>
>   rcu: INFO: rcu_sched self-detected stall on CPU
>   rcu:     37-....: (20999 ticks this GP) idle=3834/1/0x4000000000000000
>   Workqueue: events_unbound bpf_map_free_deferred
>   Call trace:
>    __apply_to_page_range+0x404/0x518
>    apply_to_existing_page_range+0x18/0x28
>    arena_map_free+0x54/0x98
>    bpf_map_free_deferred+0x70/0xf8
>    process_scheduled_works+0x17c/0x400
>    worker_thread+0x198/0x498
>   [...]
>   watchdog: BUG: soft lockup - CPU#37 stuck for 44s! [kworker/u288:15]
>   Kernel panic - not syncing: softlockup: hung tasks
>
> arena_map_free() sweeps the whole 4GiB arena address range in a single
> apply_to_existing_page_range() call and drops every populated page from
> the walk callback.
>
> Give up the CPU after releasing each page, using cond_resched().

This isn't a bug, but the opening sentence "On non-preemptible kernels
that is long enough ..." uses "that" without an antecedent.  The phrase
that explains what takes long enough (the 4GiB arena sweep) appears two
paragraphs later, after the stall trace.

Would moving the arena_map_free() description ahead of the stall trace
make the flow clearer?


---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md

CI run summary: https://github.com/kernel-patches/bpf/actions/runs/32755827346
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.