From 59b7a9397fcf4487b9ef733b0855879dadcbf169 Mon Sep 17 00:00:00 2001 From: jellllly420 Date: Wed, 28 Aug 2024 22:12:23 +0800 Subject: [PATCH] Fix deadlock while acquiring lock on local runqueue --- kernel/src/sched/priority_scheduler.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/src/sched/priority_scheduler.rs b/kernel/src/sched/priority_scheduler.rs index f91a27f46..b2aaecdad 100644 --- a/kernel/src/sched/priority_scheduler.rs +++ b/kernel/src/sched/priority_scheduler.rs @@ -3,7 +3,6 @@ use ostd::{ cpu::{num_cpus, CpuSet, PinCurrentCpu}, task::{ - disable_preempt, scheduler::{inject_scheduler, EnqueueFlags, LocalRunQueue, Scheduler, UpdateFlags}, AtomicCpuId, Priority, Task, }, @@ -46,8 +45,8 @@ impl PreemptScheduler { return cpu_id; } - let preempt_guard = disable_preempt(); - let mut selected = preempt_guard.current_cpu(); + let irq_guard = disable_local(); + let mut selected = irq_guard.current_cpu(); let mut minimum_load = usize::MAX; for candidate in runnable.cpu_affinity().iter() {