Noticed on my X1 Carbon gen10 that ichiic(4) complains about a timeout
while doing a bus scan as part of attach. Traced it down to the fact we
force polling if the global cold==1 even if the device reports
supporting interrupts. This fixes the issue and lets the bus scan
complete without error.

The line I'm changing goes back 18 years(!) and the commit message
provided by grange@ doesn't make sense to me either, but maybe I'm
missing something?

  "Don't allow slave devices to do polling during autoconf." [1]

[1] 
https://github.com/openbsd/src/commit/7ecfa26ef3eb9115fe3e4a564e7030fb789c9c3b.patch

OK?
-dv

diff refs/heads/master refs/heads/ichiic
commit - 6ee24a5220c5c9d3705bbaad88f90be03e452378
commit + 3893b74eb3f8993847442ae64d1bf5c509887cb1
blob - 8fb1221cc3520ddd6feef498e59e062488bb8c0c
blob + c212f99a96793a02a2ccb6b87e34f598f8b3b6ba
--- sys/dev/pci/ichiic.c
+++ sys/dev/pci/ichiic.c
@@ -258,7 +258,7 @@ ichiic_i2c_exec(void *cookie, i2c_op_t op, i2c_addr_t
        if (st & ICH_SMB_HS_BUSY)
                return (1);

-       if (cold || sc->sc_poll)
+       if (sc->sc_poll)
                flags |= I2C_F_POLL;

        if (!I2C_OP_STOP_P(op) || cmdlen > 1 || len > 2)

Reply via email to