Immediately after clearing a pending callout that didn't make it due
to the lock we hold, disable interrupts, and announce to the firmware that we are shutting down. Especially do this before disabling blocks. This makes some types of machines with asf enabled no longer hang upon boot, when we start configuring the interface. PR: i386/96382, kern/100410, kern/122252, kern/116328 Reported by: erwin Hardware provided by: TDC A/S Reviewed by: stas Tested by: stas
This commit is contained in:
parent
b675ebba10
commit
44b636910b
@ -4270,6 +4270,16 @@ bge_stop(struct bge_softc *sc)
|
||||
|
||||
callout_stop(&sc->bge_stat_ch);
|
||||
|
||||
/* Disable host interrupts. */
|
||||
BGE_SETBIT(sc, BGE_PCI_MISC_CTL, BGE_PCIMISCCTL_MASK_PCI_INTR);
|
||||
bge_writembx(sc, BGE_MBX_IRQ0_LO, 1);
|
||||
|
||||
/*
|
||||
* Tell firmware we're shutting down.
|
||||
*/
|
||||
bge_stop_fw(sc);
|
||||
bge_sig_pre_reset(sc, BGE_RESET_STOP);
|
||||
|
||||
/*
|
||||
* Disable all of the receiver blocks.
|
||||
*/
|
||||
@ -4309,16 +4319,6 @@ bge_stop(struct bge_softc *sc)
|
||||
BGE_CLRBIT(sc, BGE_MARB_MODE, BGE_MARBMODE_ENABLE);
|
||||
}
|
||||
|
||||
/* Disable host interrupts. */
|
||||
BGE_SETBIT(sc, BGE_PCI_MISC_CTL, BGE_PCIMISCCTL_MASK_PCI_INTR);
|
||||
bge_writembx(sc, BGE_MBX_IRQ0_LO, 1);
|
||||
|
||||
/*
|
||||
* Tell firmware we're shutting down.
|
||||
*/
|
||||
|
||||
bge_stop_fw(sc);
|
||||
bge_sig_pre_reset(sc, BGE_RESET_STOP);
|
||||
bge_reset(sc);
|
||||
bge_sig_legacy(sc, BGE_RESET_STOP);
|
||||
bge_sig_post_reset(sc, BGE_RESET_STOP);
|
||||
|
Loading…
Reference in New Issue
Block a user