From 3582b9e372c2556adc0fcc42466ead8b2bda7850 Mon Sep 17 00:00:00 2001 From: Jessica Clarke Date: Mon, 3 Jan 2022 17:09:42 +0000 Subject: [PATCH] arm64: Check for intrng-reported errors in gicv3_its Currently, any errors when adding a PIC child handler are ignored, instead just continuing on to registering that PIC as an MSI, and ignoring any errors that occur for that too. Reviewed by: andrew MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D33342 --- sys/arm64/arm64/gicv3_its.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/sys/arm64/arm64/gicv3_its.c b/sys/arm64/arm64/gicv3_its.c index 516cfbd9e35..2388aeb55f8 100644 --- a/sys/arm64/arm64/gicv3_its.c +++ b/sys/arm64/arm64/gicv3_its.c @@ -1956,11 +1956,19 @@ gicv3_its_fdt_attach(device_t dev) /* 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 @@ gicv3_its_acpi_attach(device_t dev) 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); } -- 2.45.0