Module Name:    src
Committed By:   christos
Date:           Sat Sep 23 13:01:16 UTC 2023

Modified Files:
        src/sys/dev/pci: mfii.c

Log Message:
When attaching and detaching disks, use the proper index, skipping the
first 4, which are used for the controller itself (Edgar Fuss)


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/dev/pci/mfii.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/pci/mfii.c
diff -u src/sys/dev/pci/mfii.c:1.29 src/sys/dev/pci/mfii.c:1.30
--- src/sys/dev/pci/mfii.c:1.29	Fri Sep 22 10:14:00 2023
+++ src/sys/dev/pci/mfii.c	Sat Sep 23 09:01:16 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: mfii.c,v 1.29 2023/09/22 14:14:00 christos Exp $ */
+/* $NetBSD: mfii.c,v 1.30 2023/09/23 13:01:16 christos Exp $ */
 /* $OpenBSD: mfii.c,v 1.58 2018/08/14 05:22:21 jmatthew Exp $ */
 
 /*
@@ -19,7 +19,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mfii.c,v 1.29 2023/09/22 14:14:00 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfii.c,v 1.30 2023/09/23 13:01:16 christos Exp $");
 
 #include "bio.h"
 
@@ -529,6 +529,8 @@ static const char *mfi_bbu_indicators[] 
 };
 #endif
 
+#define MFI_BBU_SENSORS 4
+
 static void	mfii_init_ld_sensor(struct mfii_softc *, envsys_data_t *, int);
 static void	mfii_refresh_ld_sensor(struct mfii_softc *, envsys_data_t *);
 static void	mfii_attach_sensor(struct mfii_softc *, envsys_data_t *);
@@ -1427,7 +1429,7 @@ static void
 mfii_aen_ld_update(struct mfii_softc *sc)
 {
 	union mfi_mbox mbox;
-	int i, target, old, nld;
+	int i, j, target, old, nld;
 	int newlds[MFII_MAX_LD_EXT];
 
 	memset(&mbox, 0, sizeof(mbox));
@@ -1464,8 +1466,9 @@ mfii_aen_ld_update(struct mfii_softc *sc
 
 			// XXX scsi_probe_target(sc->sc_scsibus, i);
 
-			mfii_init_ld_sensor(sc, &sc->sc_sensors[i], i);
-			mfii_attach_sensor(sc, &sc->sc_sensors[i]);
+			j = i + MFI_BBU_SENSORS;
+			mfii_init_ld_sensor(sc, &sc->sc_sensors[j], i);
+			mfii_attach_sensor(sc, &sc->sc_sensors[j]);
 		} else if (nld == -1 && old != -1) {
 			printf("%s: logical drive %d removed (target %d)\n",
 			    DEVNAME(sc), i, old);
@@ -1473,7 +1476,7 @@ mfii_aen_ld_update(struct mfii_softc *sc
 
 			scsipi_target_detach(&sc->sc_chan, i, 0, DETACH_FORCE);
 			sysmon_envsys_sensor_detach(sc->sc_sme,
-			    &sc->sc_sensors[i]);
+			    &sc->sc_sensors[i + MFI_BBU_SENSORS]);
 		}
 	}
 
@@ -3834,8 +3837,6 @@ freeme:
 
 #endif /* NBIO > 0 */
 
-#define MFI_BBU_SENSORS 4
-
 static void
 mfii_bbu(struct mfii_softc *sc, envsys_data_t *edata)
 {
@@ -3935,7 +3936,7 @@ mfii_attach_sensor(struct mfii_softc *sc
 static int
 mfii_create_sensors(struct mfii_softc *sc)
 {
-	int i, rv;
+	int i, j, rv;
 	const int nsensors = MFI_BBU_SENSORS + MFII_MAX_LD_EXT;
 
 	sc->sc_sme = sysmon_envsys_create();
@@ -3973,8 +3974,9 @@ mfii_create_sensors(struct mfii_softc *s
 	}
 
 	for (i = 0; i < sc->sc_ld_list.mll_no_ld; i++) {
-		mfii_init_ld_sensor(sc, &sc->sc_sensors[i + MFI_BBU_SENSORS], i);
-		mfii_attach_sensor(sc, &sc->sc_sensors[i + MFI_BBU_SENSORS]);
+		j = i + MFI_BBU_SENSORS;
+		mfii_init_ld_sensor(sc, &sc->sc_sensors[j], i);
+		mfii_attach_sensor(sc, &sc->sc_sensors[j]);
 	}
 
 	sc->sc_sme->sme_name = DEVNAME(sc);

Reply via email to