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)