Re: mfii(4) testing request
K R <[email protected]>
| Newsgroups | gmane.os.openbsd.tech |
|---|---|
| Message-ID | <CAMmyGZLTK3FwPytyuOL-_iGUePxt2AkFi_hHo4HZj3X3Rsp98g@mail.gmail.com> |
Hi Jonathan, I've tested your diff on a Dell PE R660 with this mfii: mfii0 at pci11 dev 0 function 0 "Symbios Logic MegaRAID SAS39XX" rev 0x00: msi mfii0: "PERC H755 Front", firmware 52.30.0-6753, 8192MB cache scsibus3 at mfii0: 240 targets scsibus4 at mfii0: 256 targets After the patch, I'm still getting the same results as before: test# sysctl hw.sensors.mfii0.drive0 sysctl: hw.sensors.mfii0.drive0: No such file or directory test# bioctl mfii0 bioctl: BIOCINQ: Invalid argument Is there a new diff I should try? Please let me know if you need a dmesg or pcidump output from this machine. Thanks, --Kor On Wed, Aug 19, 2026 at 2:51 AM Jonathan Matthew <[email protected]> wrote: > > I'm looking into some problems with newer mfii(4) devices, specifically > SAS39xx (aka Dell PERC H750/755), but I don't have any available to > test with myself. > > Could anyone with one of these report whether drive sensors attach > (sysctl hw.sensors.mfii0.drive0 and so on) and whether 'bioctl sdX' > works for logical drives? This should produce output like this: > > Volume Status Size Device > mfii0 0 Online 299439751168 sd0 RAID1 WB > 0 Online 300000000000 1:0.0 noencl <SEAGATE ST300MM0006 LS0A> > 1 Online 300000000000 1:1.0 noencl <SEAGATE ST300MM0006 LS0A> > > > The newer models support up to 240 logical volumes rather than 64, > which might be confusing the driver a bit. This diff might help a > bit: > > > Index: mfii.c > =================================================================== > RCS file: /cvs/src/sys/dev/pci/mfii.c,v > diff -u -p -r1.93 mfii.c > --- mfii.c 27 Jul 2026 04:12:50 -0000 1.93 > +++ mfii.c 19 Aug 2026 05:32:06 -0000 > @@ -72,6 +72,8 @@ > > #define MFII_CHAIN_FRAME_MIN 1024 > > +#define MFII_MAX_LD 240 > + > struct mfii_request_descr { > u_int8_t flags; > u_int8_t msix_index; > @@ -154,7 +156,7 @@ struct mfii_ld_map { > uint32_t mlm_reserved1[5]; > uint32_t mlm_num_lds; > uint32_t mlm_reserved2; > - uint8_t mlm_tgtid_to_ld[2 * MFI_MAX_LD]; > + uint8_t mlm_tgtid_to_ld[2 * MFII_MAX_LD]; > uint8_t mlm_pd_timeout; > uint8_t mlm_reserved3[7]; > struct mfii_array_map mlm_am[MFII_MAX_ARRAY]; > @@ -307,8 +309,8 @@ struct mfii_softc { > */ > struct { > char ld_dev[16]; /* device name sd? */ > - } sc_ld[MFI_MAX_LD]; > - int sc_target_lds[MFI_MAX_LD]; > + } sc_ld[MFII_MAX_LD]; > + int sc_target_lds[MFII_MAX_LD]; > > /* scsi ioctl from sd device */ > int (*sc_ioctl)(struct device *, u_long, caddr_t); > @@ -954,7 +956,7 @@ mfii_detach(struct device *self, int fla > if (sc->sc_sensors) { > sensordev_deinstall(&sc->sc_sensordev); > free(sc->sc_sensors, M_DEVBUF, > - MFI_MAX_LD * sizeof(struct ksensor)); > + MFII_MAX_LD * sizeof(struct ksensor)); > } > > if (sc->sc_bbu) { > @@ -1348,7 +1350,7 @@ void > mfii_aen_ld_update(struct mfii_softc *sc) > { > int i, state, target, old, nld; > - int newlds[MFI_MAX_LD]; > + int newlds[MFII_MAX_LD]; > > if (mfii_mgmt(sc, MR_DCMD_LD_GET_LIST, NULL, &sc->sc_ld_list, > sizeof(sc->sc_ld_list), SCSI_DATA_IN) != 0) { > @@ -1367,7 +1369,7 @@ mfii_aen_ld_update(struct mfii_softc *sc > newlds[target] = i; > } > > - for (i = 0; i < MFI_MAX_LD; i++) { > + for (i = 0; i < MFII_MAX_LD; i++) { > old = sc->sc_target_lds[i]; > nld = newlds[i]; > > @@ -3960,7 +3962,7 @@ mfii_create_sensors(struct mfii_softc *s > } > } > > - sc->sc_sensors = mallocarray(MFI_MAX_LD, sizeof(struct ksensor), > + sc->sc_sensors = mallocarray(MFII_MAX_LD, sizeof(struct ksensor), > M_DEVBUF, M_NOWAIT | M_ZERO); > if (sc->sc_sensors == NULL) > return (1); > @@ -3980,7 +3982,7 @@ mfii_create_sensors(struct mfii_softc *s > > bad: > free(sc->sc_sensors, M_DEVBUF, > - MFI_MAX_LD * sizeof(struct ksensor)); > + MFII_MAX_LD * sizeof(struct ksensor)); > > return (1); > } >