On Fri, Mar 11, 2016 at 02:47:08PM +0100, Stefan Sperling wrote:
> Ignoring it in ichiic, an indicating that we didn't handle it,
> allows OpenBSD to boot:
>
> Index: ichiic.c
> ===================================================================
> RCS file: /cvs/src/sys/dev/pci/ichiic.c,v
> retrieving revision 1.37
> diff -u -p -r1.37 ichiic.c
> --- ichiic.c 7 Dec 2015 02:56:36 -0000 1.37
> +++ ichiic.c 11 Mar 2016 13:40:33 -0000
> @@ -373,6 +373,9 @@ ichiic_intr(void *arg)
> ICH_SMB_HD1);
> }
>
> + /* Ignore SMBALERT. This is potentially a shared interrupt. */
> + if (st & ICH_SMB_HS_SMBAL)
> + return (0);
> done:
> if ((sc->sc_i2c_xfer.flags & I2C_F_POLL) == 0)
> wakeup(sc);
>
Here's another suggestion which doesn't impact the code path for
other interrupts. Fixes the problem just as well.
Index: ichiic.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/ichiic.c,v
retrieving revision 1.37
diff -u -p -r1.37 ichiic.c
--- ichiic.c 7 Dec 2015 02:56:36 -0000 1.37
+++ ichiic.c 11 Mar 2016 13:55:46 -0000
@@ -371,6 +371,9 @@ ichiic_intr(void *arg)
if (len > 1)
b[1] = bus_space_read_1(sc->sc_iot, sc->sc_ioh,
ICH_SMB_HD1);
+ } else if (st & ICH_SMB_HS_SMBAL) {
+ /* Ignore SMBALERT#. This is potentially a shared interrupt. */
+ return (0);
}
done: