Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Nov 2009 14:30:09 +0000 (UTC)
From:      "Bjoern A. Zeeb" <bz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r199381 - stable/8/sys/dev/bge
Message-ID:  <200911171430.nAHEU9PK012436@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bz
Date: Tue Nov 17 14:30:09 2009
New Revision: 199381
URL: http://svn.freebsd.org/changeset/base/199381

Log:
  MFC r198049:
  
    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

Modified:
  stable/8/sys/dev/bge/if_bge.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/dev/bge/if_bge.c
==============================================================================
--- stable/8/sys/dev/bge/if_bge.c	Tue Nov 17 14:23:09 2009	(r199380)
+++ stable/8/sys/dev/bge/if_bge.c	Tue Nov 17 14:30:09 2009	(r199381)
@@ -4218,6 +4218,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.
 	 */
@@ -4257,16 +4267,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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911171430.nAHEU9PK012436>