diff --git a/sys/arm64/arm64/gic_v3.c b/sys/arm64/arm64/gic_v3.c --- a/sys/arm64/arm64/gic_v3.c +++ b/sys/arm64/arm64/gic_v3.c @@ -1138,11 +1138,6 @@ gic_v3_enable_intr_periph(&pargs); } } - - for (i = 0; i < sc->gic_nchildren; i++) { - child = sc->gic_children[i]; - PIC_INIT_SECONDARY(child); - } } static void diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c --- a/sys/kern/subr_intr.c +++ b/sys/kern/subr_intr.c @@ -1562,14 +1562,14 @@ void intr_pic_init_secondary(void) { + struct intr_pic *pic; - /* - * QQQ: Only root PIC is aware of other CPUs ??? - */ - KASSERT(intr_irq_root_dev != NULL, ("%s: no root attached", __func__)); + if (intr_irq_root_dev == NULL) + panic("%s: no root attached", __func__); //mtx_lock(&isrc_table_lock); - PIC_INIT_SECONDARY(intr_irq_root_dev); + SLIST_FOREACH(pic, &pic_list, pic_next) + PIC_INIT_SECONDARY(pic); //mtx_unlock(&isrc_table_lock); } #endif