Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-8]: src Pull up the following, requested by msaitoh in ticket #1764:
details: https://anonhg.NetBSD.org/src/rev/d8d7cb603dd1
branches: netbsd-8
changeset: 370092:d8d7cb603dd1
user: martin <martin%NetBSD.org@localhost>
date: Fri Sep 16 18:30:15 2022 +0000
description:
Pull up the following, requested by msaitoh in ticket #1764:
sys/dev/ic/mfireg.h 1.22
sys/dev/pci/mfii.c 1.16-1.22,1.27 via patch
share/man/man4/mfii.4 1.3 via patch
- Fix wrong access in mfii_start().
- Add SAS3216,SAS3224,SAS3316 and SAS3324 support.
- Add CVPM02 BBU support.
- Use bus_space_write_8() if available.
- Don't panic on detach if no any sensor device.
- Add comment. Sort entries. KNF.
diffstat:
share/man/man4/mfii.4 | 12 ++++-
sys/dev/ic/mfireg.h | 3 +-
sys/dev/pci/mfii.c | 101 +++++++++++++++++++++++++++++++++----------------
3 files changed, 79 insertions(+), 37 deletions(-)
diffs (truncated from 312 to 300 lines):
diff -r dca072a737e5 -r d8d7cb603dd1 share/man/man4/mfii.4
--- a/share/man/man4/mfii.4 Mon Sep 12 17:10:34 2022 +0000
+++ b/share/man/man4/mfii.4 Fri Sep 16 18:30:15 2022 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: mfii.4,v 1.2.4.2 2018/12/07 17:11:37 martin Exp $
+.\" $NetBSD: mfii.4,v 1.2.4.3 2022/09/16 18:30:15 martin Exp $
.\" $OpenBSD: mfii.4,v 1.7 2018/03/27 07:01:42 jsg Exp $
.\"
.\" Copyright (c) 2012 David Gwynne <dlg%openbsd.org@localhost>
@@ -15,7 +15,7 @@
.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
-.Dd March 27, 2018
+.Dd July 16, 2022
.Dt MFII 4
.Os
.Sh NAME
@@ -37,6 +37,14 @@
.It
SAS3108
.It
+SAS3216
+.It
+SAS3224
+.It
+SAS3316
+.It
+SAS3324
+.It
SAS3404
.It
SAS3408
diff -r dca072a737e5 -r d8d7cb603dd1 sys/dev/ic/mfireg.h
--- a/sys/dev/ic/mfireg.h Mon Sep 12 17:10:34 2022 +0000
+++ b/sys/dev/ic/mfireg.h Fri Sep 16 18:30:15 2022 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: mfireg.h,v 1.8.30.2 2022/05/17 10:33:46 bouyer Exp $ */
+/* $NetBSD: mfireg.h,v 1.8.30.3 2022/09/16 18:30:15 martin Exp $ */
/* $OpenBSD: mfireg.h,v 1.24 2006/06/19 19:05:45 marco Exp $ */
/*
* Copyright (c) 2006 Marco Peereboom <marco%peereboom.us@localhost>
@@ -1268,6 +1268,7 @@
#define MFI_BBU_TYPE_IBBU 1
#define MFI_BBU_TYPE_BBU 2
#define MFI_BBU_TYPE_IBBU09 5
+#define MFI_BBU_TYPE_CVPM02 6
uint8_t reserved;
uint16_t voltage; /* mV */
int16_t current; /* mA */
diff -r dca072a737e5 -r d8d7cb603dd1 sys/dev/pci/mfii.c
--- a/sys/dev/pci/mfii.c Mon Sep 12 17:10:34 2022 +0000
+++ b/sys/dev/pci/mfii.c Fri Sep 16 18:30:15 2022 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: mfii.c,v 1.3.2.5 2022/05/17 10:33:46 bouyer Exp $ */
+/* $NetBSD: mfii.c,v 1.3.2.6 2022/09/16 18:30:15 martin Exp $ */
/* $OpenBSD: mfii.c,v 1.58 2018/08/14 05:22:21 jmatthew Exp $ */
/*
@@ -18,7 +18,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mfii.c,v 1.3.2.5 2022/05/17 10:33:46 bouyer Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfii.c,v 1.3.2.6 2022/09/16 18:30:15 martin Exp $");
#include "bio.h"
@@ -586,23 +586,40 @@
};
static const struct mfii_device mfii_devices[] = {
+ /* Fusion */
{ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_2208,
&mfii_iop_thunderbolt },
+ /* Fury */
{ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3008,
&mfii_iop_25 },
+ /* Invader */
{ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3108,
&mfii_iop_25 },
+ /* Intruder */
+ { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3316,
+ &mfii_iop_25 },
+ { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3324,
+ &mfii_iop_25 },
+ /* Cutlass */
+ { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_32XX_1,
+ &mfii_iop_25 },
+ { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_32XX_2,
+ &mfii_iop_25 },
+ /* Crusader */
{ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3404,
&mfii_iop_35 },
- { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3504,
- &mfii_iop_35 },
- { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3408,
- &mfii_iop_35 },
- { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3508,
- &mfii_iop_35 },
{ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3416,
&mfii_iop_35 },
+ /* Ventura */
+ { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3504,
+ &mfii_iop_35 },
{ PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3516,
+ &mfii_iop_35 },
+ /* Tomcat */
+ { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3408,
+ &mfii_iop_35 },
+ /* Harpoon */
+ { PCI_VENDOR_SYMBIOS, PCI_PRODUCT_SYMBIOS_MEGARAID_3508,
&mfii_iop_35 }
};
@@ -990,8 +1007,8 @@
if (sc->sc_child != NULL)
return 0;
- sc->sc_child = config_found_sm_loc(self, ifattr, locators, &sc->sc_chan,
- scsiprint, NULL);
+ sc->sc_child = config_found_sm_loc(self, ifattr, locators,
+ &sc->sc_chan, scsiprint, NULL);
return 0;
}
@@ -1045,7 +1062,8 @@
mfii_scrub_ccb(ccb);
if (mfii_do_mgmt(sc, ccb, MR_DCMD_CTRL_CACHE_FLUSH, &mbox,
NULL, 0, MFII_DATA_NONE, true)) {
- aprint_error_dev(dev, "shutdown: cache flush failed\n");
+ aprint_error_dev(dev,
+ "shutdown: cache flush failed\n");
rv = false;
goto fail;
}
@@ -1187,7 +1205,8 @@
mdm = mfii_dmamem_alloc(sc, sizeof(struct mfi_evt_detail));
if (mdm == NULL) {
mfii_put_ccb(sc, ccb);
- aprint_error_dev(sc->sc_dev, "unable to allocate event data\n");
+ aprint_error_dev(sc->sc_dev,
+ "unable to allocate event data\n");
return (ENOMEM);
}
@@ -1332,8 +1351,8 @@
if (mfii_mgmt(sc, MR_DCMD_LD_GET_LIST, NULL, &sc->sc_ld_list,
sizeof(sc->sc_ld_list), MFII_DATA_IN, false) != 0) {
mutex_exit(&sc->sc_lock);
- DNPRINTF(MFII_D_MISC, "%s: getting list of logical disks failed\n",
- DEVNAME(sc));
+ DNPRINTF(MFII_D_MISC,
+ "%s: getting list of logical disks failed\n", DEVNAME(sc));
return;
}
mutex_exit(&sc->sc_lock);
@@ -1572,7 +1591,8 @@
sc->sc_info.mci_host.mih_port_count);
for (i = 0; i < 8; i++)
- DPRINTF("%.0" PRIx64 " ", sc->sc_info.mci_host.mih_port_addr[i]);
+ DPRINTF("%.0" PRIx64 " ",
+ sc->sc_info.mci_host.mih_port_addr[i]);
DPRINTF("\n");
DPRINTF("%s: type %.x port_count %d port_addr ",
@@ -1581,7 +1601,8 @@
sc->sc_info.mci_device.mid_port_count);
for (i = 0; i < 8; i++)
- DPRINTF("%.0" PRIx64 " ", sc->sc_info.mci_device.mid_port_addr[i]);
+ DPRINTF("%.0" PRIx64 " ",
+ sc->sc_info.mci_device.mid_port_addr[i]);
DPRINTF("\n");
return (0);
@@ -1842,23 +1863,24 @@
static void
mfii_start(struct mfii_softc *sc, struct mfii_ccb *ccb)
{
- u_long *r = (u_long *)&ccb->ccb_req;
+ uint32_t *r = (uint32_t *)&ccb->ccb_req;
+#if defined(__LP64__)
+ uint64_t buf;
+#endif
bus_dmamap_sync(sc->sc_dmat, MFII_DMA_MAP(sc->sc_requests),
ccb->ccb_request_offset, MFII_REQUEST_SIZE,
BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
-#if defined(__LP64__) && 0
- bus_space_write_8(sc->sc_iot, sc->sc_ioh, MFI_IQPL, *r);
+#if defined(__LP64__)
+ buf = ((uint64_t)r[1] << 32) | r[0];
+ bus_space_write_8(sc->sc_iot, sc->sc_ioh, MFI_IQPL, buf);
#else
mutex_enter(&sc->sc_post_mtx);
bus_space_write_4(sc->sc_iot, sc->sc_ioh, MFI_IQPL, r[0]);
+ bus_space_write_4(sc->sc_iot, sc->sc_ioh, MFI_IQPH, r[1]);
bus_space_barrier(sc->sc_iot, sc->sc_ioh,
MFI_IQPL, 8, BUS_SPACE_BARRIER_WRITE);
-
- bus_space_write_4(sc->sc_iot, sc->sc_ioh, MFI_IQPH, r[1]);
- bus_space_barrier(sc->sc_iot, sc->sc_ioh,
- MFI_IQPH, 8, BUS_SPACE_BARRIER_WRITE);
mutex_exit(&sc->sc_post_mtx);
#endif
}
@@ -2018,7 +2040,8 @@
for (;;) {
rdp = &postq[sc->sc_reply_postq_index];
- DNPRINTF(MFII_D_INTR, "%s: mfii_postq index %d flags 0x%x data 0x%x\n",
+ DNPRINTF(MFII_D_INTR,
+ "%s: mfii_postq index %d flags 0x%x data 0x%x\n",
DEVNAME(sc), sc->sc_reply_postq_index, rdp->reply_flags,
rdp->data == 0xffffffff);
if ((rdp->reply_flags & MPII_REPLY_DESCR_TYPE_MASK) ==
@@ -2972,7 +2995,8 @@
if (sc->sc_ld_details[i].mld_cfg.mlc_parm.mpa_span_depth > 1)
bv->bv_level *= 10;
- bv->bv_nodisk = sc->sc_ld_details[i].mld_cfg.mlc_parm.mpa_no_drv_per_span *
+ bv->bv_nodisk =
+ sc->sc_ld_details[i].mld_cfg.mlc_parm.mpa_no_drv_per_span *
sc->sc_ld_details[i].mld_cfg.mlc_parm.mpa_span_depth;
bv->bv_size = sc->sc_ld_details[i].mld_size * 512; /* bytes per block */
@@ -3170,8 +3194,9 @@
break;
default:
- DNPRINTF(MFII_D_IOCTL, "%s: mfii_ioctl_alarm biocalarm invalid "
- "opcode %x\n", DEVNAME(sc), ba->ba_opcode);
+ DNPRINTF(MFII_D_IOCTL,
+ "%s: mfii_ioctl_alarm biocalarm invalid opcode %x\n",
+ DEVNAME(sc), ba->ba_opcode);
return (EINVAL);
}
@@ -3231,8 +3256,9 @@
case BIOC_SBALARM:
default:
- DNPRINTF(MFII_D_IOCTL, "%s: mfii_ioctl_blink biocblink invalid "
- "opcode %x\n", DEVNAME(sc), bb->bb_status);
+ DNPRINTF(MFII_D_IOCTL,
+ "%s: mfii_ioctl_blink biocblink invalid opcode %x\n",
+ DEVNAME(sc), bb->bb_status);
goto done;
}
@@ -3505,7 +3531,8 @@
if (bp->bp_autonext < 0)
return (EINVAL);
else
- prop.next_exec = time + bp->bp_autonext;
+ prop.next_exec =
+ time + bp->bp_autonext;
}
prop.op_mode = MFI_PR_OPMODE_AUTO;
break;
@@ -3576,8 +3603,9 @@
break;
default:
- DNPRINTF(MFII_D_IOCTL, "%s: mfii_ioctl_patrol biocpatrol invalid "
- "opcode %x\n", DEVNAME(sc), bp->bp_opcode);
+ DNPRINTF(MFII_D_IOCTL,
+ "%s: mfii_ioctl_patrol biocpatrol invalid opcode %x\n",
+ DEVNAME(sc), bp->bp_opcode);
return (EINVAL);
}
@@ -3636,7 +3664,8 @@
/* offset into hotspare structure */
i = volid - cfg->mfc_no_ld;
- DNPRINTF(MFII_D_IOCTL, "%s: mfii_vol_hs i %d volid %d no_ld %d no_hs %d "
+ DNPRINTF(MFII_D_IOCTL,
+ "%s: mfii_vol_hs i %d volid %d no_ld %d no_hs %d "
"hs %p cfg %p id %02x\n", DEVNAME(sc), i, volid, cfg->mfc_no_ld,
cfg->mfc_no_hs, hs, cfg, hs[i].mhs_pd.mfp_id);
@@ -3711,6 +3740,7 @@
switch (bbu.battery_type) {
case MFI_BBU_TYPE_IBBU:
case MFI_BBU_TYPE_IBBU09:
+ case MFI_BBU_TYPE_CVPM02:
mask = MFI_BBU_STATE_BAD_IBBU;
soh_bad = 0;
break;
@@ -3742,7 +3772,8 @@
edata->state = ENVSYS_SVALID;
return;
case 3:
- edata->value_cur = le16toh(bbu.temperature) * 1000000 + 273150000;
+ edata->value_cur =
+ le16toh(bbu.temperature) * 1000000 + 273150000;
Home |
Main Index |
Thread Index |
Old Index