From 0d4d23a16155f256c203062981dde5d92920ec30 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Mon, 20 Jan 2025 16:29:54 +0100 Subject: [PATCH] fixup "hw: implement helping of pager threads" (fix bomb) --- repos/base-hw/src/core/kernel/thread.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/repos/base-hw/src/core/kernel/thread.cc b/repos/base-hw/src/core/kernel/thread.cc index 062ffd05c8..f749276bed 100644 --- a/repos/base-hw/src/core/kernel/thread.cc +++ b/repos/base-hw/src/core/kernel/thread.cc @@ -914,10 +914,14 @@ void Thread::_signal_to_pager() return; } - bool const help = Cpu_context::_helping_possible(_fault_context->pager); + /* first signal to pager to wake it up */ + _fault_context->sc.submit(1); + + /* only help pager thread if runnable and scheduler allows it */ + bool const help = Cpu_context::_helping_possible(_fault_context->pager) + && (_fault_context->pager._state == ACTIVE); if (help) Cpu_context::_help(_fault_context->pager); else _become_inactive(AWAITS_RESTART); - _fault_context->sc.submit(1); }