diff --git a/sys/arm64/arm64/gic_v3.c b/sys/arm64/arm64/gic_v3.c index 0b25650b3fbf73..f29803df8dcc36 100644 --- a/sys/arm64/arm64/gic_v3.c +++ b/sys/arm64/arm64/gic_v3.c @@ -1096,12 +1096,11 @@ static void 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); @@ -1137,11 +1136,6 @@ gic_v3_init_secondary(device_t dev) 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 index 1f5096a5db9fb0..42a3d67285206f 100644 --- a/sys/kern/subr_intr.c +++ b/sys/kern/subr_intr.c @@ -1541,15 +1541,12 @@ dosoftints(void) 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); + STAILQ_FOREACH(pic, &pic_list, pic_next) + PIC_INIT_SECONDARY(pic->pic_dev); + //mtx_unlock(&pic_list_lock); } #endif