>On Tue, Mar 12, 2024 at 10:04:54AM +0000, Liuye wrote: >> >On Tue, Mar 12, 2024 at 08:37:11AM +0000, Liuye wrote: >> >> I know that you said schedule_work is not NMI save, which is the >> >> first issue. Perhaps it can be fixed using irq_work_queue. But even >> >> if irq_work_queue is used to implement it, there will still be a >> >> deadlock problem because slave cpu1 still has not released the >> >> running queue lock of master CPU0. >> > >> >This doesn't sound right to me. Why do you think CPU1 won't release >> >the run queue lock? >> >> In this example, CPU1 is waiting for CPU0 to release dbg_slave_lock. > >That shouldn't be a problem. CPU0 will have released that lock by the time the irq work is dispatched. Release dbg_slave_lock in CPU0. Before that, shcedule_work needs to be handled, and we are back to the previous issue.