Hi tech@, While booting OpenBSD on HPE ProLiant DL20 Gen9, iLO/IPMI remote access is stopped dozens of seconds, and client app give up the connection.
This patch reduces it to few seconds and make the connection online. >From FreeBSD https://svnweb.freebsd.org/base?view=revision&revision=248226 Index: sys/dev/pci/if_bge.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_bge.c,v retrieving revision 1.385 diff -u -p -r1.385 if_bge.c --- sys/dev/pci/if_bge.c 13 Feb 2017 00:56:32 -0000 1.385 +++ sys/dev/pci/if_bge.c 24 Jul 2017 04:09:15 -0000 @@ -2879,11 +2879,11 @@ bge_attach(struct device *parent, struct /* Try to reset the chip. */ DPRINTFN(5, ("bge_reset\n")); - bge_sig_pre_reset(sc, BGE_RESET_START); + bge_sig_pre_reset(sc, BGE_RESET_SHUTDOWN); bge_reset(sc); - bge_sig_legacy(sc, BGE_RESET_START); - bge_sig_post_reset(sc, BGE_RESET_START); + bge_sig_legacy(sc, BGE_RESET_SHUTDOWN); + bge_sig_post_reset(sc, BGE_RESET_SHUTDOWN); bge_chipinit(sc); @@ -3233,6 +3233,19 @@ bge_reset(struct bge_softc *sc) } else write_op = bge_writereg_ind; + if (BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM5700 && + BGE_ASICREV(sc->bge_chipid) != BGE_ASICREV_BCM5701) { + CSR_WRITE_4(sc, BGE_NVRAM_SWARB, BGE_NVRAMSWARB_SET1); + for (i = 0; i < 8000; i++) { + if (CSR_READ_4(sc, BGE_NVRAM_SWARB) & + BGE_NVRAMSWARB_GNT1) + break; + DELAY(20); + } + if (i == 8000) + printf("%s: nvram lock timed out\n", + sc->bge_dev.dv_xname); + } /* Take APE lock when performing reset. */ bge_ape_lock(sc, BGE_APE_LOCK_GRC);