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:

Reply via email to