Skip to content

aarch64: IRQ exit blocks on PROCESS_MANAGER under an unmasked try_manager() holder #820

Description

@ryanbreen

aarch64: IRQ exit blocks on PROCESS_MANAGER under an unmasked try_manager() holder

Lock: PROCESS_MANAGER (kernel/src/process/mod.rs:146)

Arch: aarch64

Chain:
kernel/src/arch_impl/aarch64/boot.S:699 bl check_need_resched_and_switch_arm64 ->
kernel/src/arch_impl/aarch64/context_switch.rs:5187 (first statement) ->
kernel/src/arch_impl/aarch64/context_switch.rs:5191 crate::task::process_task::drain_deferred_fault_sigsegv_exits() ->
kernel/src/task/process_task.rs:989 ProcessScheduler::handle_thread_exit(tid, -11) ->
kernel/src/task/process_task.rs:764 ->
kernel/src/process/mod.rs:772 blocking crate::process::manager()

Thread-side holders:
The 9 unmasked aarch64 try_manager() holders:
kernel/src/syscall/handlers.rs:3875 sys_fcntl
kernel/src/syscall/signal.rs:1839, :1859, :1902 sys_pause_with_frame_aarch64
kernel/src/syscall/signal.rs:2064 sys_sigreturn_with_frame_aarch64
kernel/src/syscall/signal.rs:2152, :2203, :2247 sys_sigsuspend_with_frame_aarch64
kernel/src/arch_impl/aarch64/syscall_entry.rs:218 check_and_deliver_signals_aarch64

Note: This is distinct from #812 because it sits above the PREEMPT_ACTIVE early return (kernel/src/arch_impl/aarch64/context_switch.rs:5201-5220) and above each from_el0 test, so neither the preempt state nor the interrupted EL gates it. A fix that gates aarch64 do_softirq on the whole preempt_count leaves this chain untouched, because this is not a softirq.

Not measured here. This is a code-path reachability argument with no reproduction.

Related: #812, IRQ-CONTEXT-LOCK-CENSUS-2026-09-05.md section 5.F2

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions