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 @@ -1097,12 +1097,11 @@ gic_v3_init_secondary(device_t dev) { struct gic_v3_setup_periph_args pargs; - device_t child; struct gic_v3_softc *sc; gic_v3_initseq_t *init_func; struct intr_irqsrc *isrc; u_int cpu, irq; - int err, i; + int err; sc = device_get_softc(dev); cpu = PCPU_GET(cpuid); @@ -1138,11 +1137,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,15 +1562,12 @@ 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__)); - - //mtx_lock(&isrc_table_lock); - PIC_INIT_SECONDARY(intr_irq_root_dev); - //mtx_unlock(&isrc_table_lock); + //mtx_lock(&pic_list_lock); + SLIST_FOREACH(pic, &pic_list, pic_next) + PIC_INIT_SECONDARY(pic->pic_dev); + //mtx_unlock(&pic_list_lock); } #endif