diff options
Diffstat (limited to 'sys/dev/mrsas/mrsas.c')
-rw-r--r-- | sys/dev/mrsas/mrsas.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/mrsas/mrsas.c b/sys/dev/mrsas/mrsas.c index 6f63c6e..a11c5e9 100644 --- a/sys/dev/mrsas/mrsas.c +++ b/sys/dev/mrsas/mrsas.c @@ -811,6 +811,7 @@ mrsas_attach(device_t dev) { struct mrsas_softc *sc = device_get_softc(dev); uint32_t cmd, bar, error; + struct cdev *linux_dev; /* Look up our softc and initialize its fields. */ sc->mrsas_dev = dev; @@ -870,7 +871,8 @@ mrsas_attach(device_t dev) GID_OPERATOR, (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP), "mrsas%u", device_get_unit(dev)); if (device_get_unit(dev) == 0) - make_dev_alias(sc->mrsas_cdev, "megaraid_sas_ioctl_node"); + make_dev_alias_p(MAKEDEV_CHECKNAME, &linux_dev, sc->mrsas_cdev, + "megaraid_sas_ioctl_node"); if (sc->mrsas_cdev) sc->mrsas_cdev->si_drv1 = sc; @@ -2715,6 +2717,7 @@ mrsas_reset_ctrl(struct mrsas_softc *sc) "resetting adapter from %s.\n", __func__); /* Now return commands back to the CAM layer */ + mtx_unlock(&sc->sim_lock); for (i = 0; i < sc->max_fw_cmds; i++) { mpt_cmd = sc->mpt_cmd_list[i]; if (mpt_cmd->ccb_ptr) { @@ -2724,6 +2727,7 @@ mrsas_reset_ctrl(struct mrsas_softc *sc) mrsas_atomic_dec(&sc->fw_outstanding); } } + mtx_lock(&sc->sim_lock); status_reg = mrsas_read_reg(sc, offsetof(mrsas_reg_set, outbound_scratch_pad)); |