diff --git a/sys/arm64/arm64/gicv3_its.c b/sys/arm64/arm64/gicv3_its.c --- a/sys/arm64/arm64/gicv3_its.c +++ b/sys/arm64/arm64/gicv3_its.c @@ -1956,11 +1956,19 @@ /* Register this device as a interrupt controller */ xref = OF_xref_from_node(ofw_bus_get_node(dev)); sc->sc_pic = intr_pic_register(dev, xref); - intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, + err = intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, gicv3_its_intr, sc, sc->sc_irq_base, sc->sc_irq_length); + if (err != 0) { + device_printf(dev, "Failed to add PIC handler: %d\n", err); + return (err); + } /* Register this device to handle MSI interrupts */ - intr_msi_register(dev, xref); + err = intr_msi_register(dev, xref); + if (err != 0) { + device_printf(dev, "Failed to register for MSIs: %d\n", err); + return (err); + } return (0); } @@ -2017,11 +2025,19 @@ di = device_get_ivars(dev); sc->sc_pic = intr_pic_register(dev, di->msi_xref); - intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, + err = intr_pic_add_handler(device_get_parent(dev), sc->sc_pic, gicv3_its_intr, sc, sc->sc_irq_base, sc->sc_irq_length); + if (err != 0) { + device_printf(dev, "Failed to add PIC handler: %d\n", err); + return (err); + } /* Register this device to handle MSI interrupts */ - intr_msi_register(dev, di->msi_xref); + err = intr_msi_register(dev, di->msi_xref); + if (err != 0) { + device_printf(dev, "Failed to register for MSIs: %d\n", err); + return (err); + } return (0); }