PERFORCE change 120794 for review
Rui Paulo
rpaulo at FreeBSD.org
Sat Jun 2 20:07:33 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=120794
Change 120794 by rpaulo at rpaulo_epsilon on 2007/06/02 20:06:56
Fix a couple of problems with locking:
* don't use spin mutexes.
* remove "_mtx" from the mutex description
* in asmc_intr(), only lock during the inb instruction.
* move sc_mtx to the beginning of the softc struct.
Comments by: Attilio Rao
Affected files ...
.. //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmc.c#9 edit
.. //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmcvar.h#5 edit
Differences ...
==== //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmc.c#9 (text+ko) ====
@@ -23,7 +23,7 @@
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
- * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmc.c#8 $
+ * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmc.c#9 $
*
*/
@@ -240,7 +240,7 @@
model = asmc_match(dev);
- mtx_init(&sc->sc_mtx, "asmc_mtx", NULL, MTX_SPIN);
+ mtx_init(&sc->sc_mtx, "asmc", NULL, MTX_DEF);
asmc_init(dev);
@@ -517,7 +517,7 @@
int i, error = 1;
struct asmc_softc *sc = device_get_softc(dev);
- mtx_lock_spin(&sc->sc_mtx);
+ mtx_lock(&sc->sc_mtx);
outb(ASMC_CMDPORT, ASMC_CMDREAD);
if (asmc_wait(dev, 0x0c))
@@ -539,7 +539,7 @@
error = 0;
out:
- mtx_unlock_spin(&sc->sc_mtx);
+ mtx_unlock(&sc->sc_mtx);
return error;
}
@@ -550,7 +550,7 @@
int i, error = -1;
struct asmc_softc *sc = device_get_softc(dev);
- mtx_lock_spin(&sc->sc_mtx);
+ mtx_lock(&sc->sc_mtx);
outb(ASMC_CMDPORT, ASMC_CMDWRITE);
if (asmc_wait(dev, 0x0c))
@@ -572,7 +572,7 @@
error = 0;
out:
- mtx_unlock_spin(&sc->sc_mtx);
+ mtx_unlock(&sc->sc_mtx);
return error;
@@ -758,9 +758,9 @@
device_t dev = (device_t) arg;
struct asmc_softc *sc = device_get_softc(dev);
- mtx_lock_spin(&sc->sc_mtx);
-
+ mtx_lock(&sc->sc_mtx);
type = inb(ASMC_INTPORT);
+ mtx_unlock(&sc->sc_mtx);
switch (type) {
case ASMC_SMS_INTFF:
@@ -776,8 +776,6 @@
device_printf(dev, "%s unknown interrupt\n", __func__);
}
- mtx_unlock_spin(&sc->sc_mtx);
-
return 0;
}
==== //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmcvar.h#5 (text+ko) ====
@@ -23,7 +23,7 @@
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
- * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmcvar.h#4 $
+ * $P4: //depot/projects/soc2007/rpaulo-macbook/dev/asmc/asmcvar.h#5 $
*
*/
@@ -31,6 +31,7 @@
struct asmc_softc {
device_t sc_dev;
+ struct mtx sc_mtx;
int sc_nfan;
@@ -49,8 +50,6 @@
int sc_rid;
struct resource *sc_res;
void *sc_cookie;
-
- struct mtx sc_mtx;
};
struct asmc_model {
More information about the p4-projects
mailing list