git: b2dd4970c7b5 - main - dev/gpio: Mask all pl011 interrupts

From: Andrew Turner <andrew_at_FreeBSD.org>
Date: Thu, 24 Oct 2024 10:36:35 UTC
The branch main has been updated by andrew:

URL: https://cgit.FreeBSD.org/src/commit/?id=b2dd4970c7b5c20bef35a8924cc2a5f54ea4cb30

commit b2dd4970c7b5c20bef35a8924cc2a5f54ea4cb30
Author:     Andrew Turner <andrew@FreeBSD.org>
AuthorDate: 2024-10-23 16:57:31 +0000
Commit:     Andrew Turner <andrew@FreeBSD.org>
CommitDate: 2024-10-24 10:20:48 +0000

    dev/gpio: Mask all pl011 interrupts
    
    The firmware may have unmasked pl011 interrupts. If we don't have a
    device to handle one the kernel will print a spurious interrupt
    warning. Rather than print the warning mask all interrupts until we
    are ready to handle them.
    
    Sponsored by:   Arm Ltd
    Differential Revision:  https://reviews.freebsd.org/D46863
---
 sys/dev/gpio/pl061.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sys/dev/gpio/pl061.c b/sys/dev/gpio/pl061.c
index 76754fead635..cc39790322b6 100644
--- a/sys/dev/gpio/pl061.c
+++ b/sys/dev/gpio/pl061.c
@@ -460,6 +460,9 @@ pl061_attach(device_t dev)
 		goto free_mem;
 	}
 
+	/* Mask all interrupts. They will be unmasked as needed later */
+	bus_write_1(sc->sc_mem_res, PL061_INTMASK, 0);
+
 	ret = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_MISC | INTR_MPSAFE,
 	    pl061_intr, NULL, sc, &sc->sc_irq_hdlr);
 	if (ret) {