1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-04 12:52:15 +00:00

Enable interrupts on the BSP once all PICs are initialized.

This moves the enabling of interrupts slightly earlier (the old location
was still before devices were enumerated and probed) and does it in the
interrupt code (rather than in the device configuration code).  This
also avoids tripping over an assertion on the first TLB shootdown with
earlier AP startup.

Reviewed by:	kib
Sponsored by:	Netflix
Differential Revision:	https://reviews.freebsd.org/D5710
This commit is contained in:
John Baldwin 2016-03-24 00:24:07 +00:00
parent 52a4455b80
commit 7a2c1d8c60
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=297218
3 changed files with 15 additions and 14 deletions

View File

@ -100,13 +100,6 @@ configure(dummy)
void *dummy;
{
/*
* Enable interrupts on the processor. The interrupts are still
* disabled in the interrupt controllers until interrupt handlers
* are registered.
*/
enable_intr();
/* initialize new bus architecture */
root_bus_configure();

View File

@ -101,13 +101,6 @@ configure(dummy)
void *dummy;
{
/*
* Enable interrupts on the processor. The interrupts are still
* disabled in the interrupt controllers until interrupt handlers
* are registered.
*/
enable_intr();
/* initialize new bus architecture */
root_bus_configure();

View File

@ -393,6 +393,21 @@ intr_init(void *dummy __unused)
}
SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL);
static void
intr_init_final(void *dummy __unused)
{
/*
* Enable interrupts on the BSP after all of the interrupt
* controllers are initialized. Device interrupts are still
* disabled in the interrupt controllers until interrupt
* handlers are registered. Interrupts are enabled on each AP
* after their first context switch.
*/
enable_intr();
}
SYSINIT(intr_init_final, SI_SUB_INTR, SI_ORDER_ANY, intr_init_final, NULL);
#ifndef DEV_ATPIC
/* Initialize the two 8259A's to a known-good shutdown state. */
void