Free microcode memory later.

With lockless DI, pmap_remove() requires operational thread lock,
which is initialized at SI_SUB_RUN_QUEUE for thread0.  Move it even
later where APs are started, the moment after which other boot memory
like trampoline stacks is already being freed.

Reported by:	gtetlow
Sponsored by:	The FreeBSD Foundation
MFC after:	30 days
This commit is contained in:
Konstantin Belousov 2019-05-17 17:11:01 +00:00
parent ec55b6c5f5
commit 8f7f38457f

View File

@ -260,7 +260,7 @@ ucode_release(void *arg __unused)
goto restart;
}
}
SYSINIT(ucode_release, SI_SUB_KMEM + 1, SI_ORDER_ANY, ucode_release, NULL);
SYSINIT(ucode_release, SI_SUB_SMP + 1, SI_ORDER_ANY, ucode_release, NULL);
void
ucode_load_ap(int cpu)