Module Name:    src
Committed By:   rin
Date:           Thu Mar 22 14:07:42 UTC 2018

Modified Files:
        src/sys/dev/ic: ninjascsi32.c

Log Message:
Redo previous; reset async events only if scsibus has already been attached.


To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/dev/ic/ninjascsi32.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/ic/ninjascsi32.c
diff -u src/sys/dev/ic/ninjascsi32.c:1.25 src/sys/dev/ic/ninjascsi32.c:1.26
--- src/sys/dev/ic/ninjascsi32.c:1.25	Thu Mar 22 12:20:55 2018
+++ src/sys/dev/ic/ninjascsi32.c	Thu Mar 22 14:07:42 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: ninjascsi32.c,v 1.25 2018/03/22 12:20:55 rin Exp $	*/
+/*	$NetBSD: ninjascsi32.c,v 1.26 2018/03/22 14:07:42 rin Exp $	*/
 
 /*-
  * Copyright (c) 2004, 2006, 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ninjascsi32.c,v 1.25 2018/03/22 12:20:55 rin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ninjascsi32.c,v 1.26 2018/03/22 14:07:42 rin Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -645,6 +645,9 @@ njsc32_attach(struct njsc32_softc *sc)
 
 	sc->sc_sync_max = 1;	/* XXX look up EEPROM configuration? */
 
+	/* initialize hardware and target structure */
+	njsc32_init(sc, cold);
+
 	/* setup adapter */
 	sc->sc_adapter.adapt_dev = sc->sc_dev;
 	sc->sc_adapter.adapt_nchannels = 1;
@@ -664,9 +667,6 @@ njsc32_attach(struct njsc32_softc *sc)
 	sc->sc_channel.chan_id = NJSC32_INITIATOR_ID;
 
 	sc->sc_scsi = config_found(sc->sc_dev, &sc->sc_channel, scsiprint);
-
-	/* initialize hardware and target structure */
-	njsc32_init(sc, cold);
 }
 
 int
@@ -1369,13 +1369,15 @@ njsc32_reset_bus(struct njsc32_softc *sc
 	/* initialize target structure */
 	njsc32_init_targets(sc);
 
-	/* XXXSMP scsipi */
-	KERNEL_LOCK(1, curlwp);
-	s = splbio();
-	scsipi_async_event(&sc->sc_channel, ASYNC_EVENT_RESET, NULL);
-	splx(s);
-	/* XXXSMP scsipi */
-	KERNEL_UNLOCK_ONE(curlwp);
+	if (sc->sc_scsi != NULL) {
+		/* XXXSMP scsipi */
+		KERNEL_LOCK(1, curlwp);
+		s = splbio();
+		scsipi_async_event(&sc->sc_channel, ASYNC_EVENT_RESET, NULL);
+		splx(s);
+		/* XXXSMP scsipi */
+		KERNEL_UNLOCK_ONE(curlwp);
+	}
 
 	/* release SCSI bus reset */
 	njsc32_write_1(sc, NJSC32_REG_SCSI_BUS_CONTROL, 0);

Reply via email to