Fix a lock up where we enter swapper() with interrupts disabled.
In smp_rendezvous_cpus we expect to wait for all cpus to enter smp_rendezvous_action. If we call this holding a proc lock swapper may attempt to also lock it, however as interrupts are disabled the cpu never handles the ipi. Because smp_rendezvous_action waits for all signaled cpus before contining it may get caught waiting for the cpu running swapper as the proc mutex will be unlocked after smp_rendezvous_cpus finishes. The fix is to enable interrupts in the configure stage as we should be doing. MFC after: 1 week
This commit is contained in:
parent
f22cb06aeb
commit
e81032ad24
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=283337
@ -94,6 +94,7 @@ static void
|
||||
configure_final(void *dummy)
|
||||
{
|
||||
|
||||
enable_interrupts(PSR_I | PSR_F);
|
||||
cninit_finish();
|
||||
cold = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user