Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/mps/mps.c
Show All 12 Lines | |||||
static int mps_reregister_events(struct mps_softc *sc); | static int mps_reregister_events(struct mps_softc *sc); | ||||
static void mps_enqueue_request(struct mps_softc *sc, struct mps_command *cm); | static void mps_enqueue_request(struct mps_softc *sc, struct mps_command *cm); | ||||
static int mps_get_iocfacts(struct mps_softc *sc, MPI2_IOC_FACTS_REPLY *facts); | static int mps_get_iocfacts(struct mps_softc *sc, MPI2_IOC_FACTS_REPLY *facts); | ||||
static int mps_wait_db_ack(struct mps_softc *sc, int timeout, int sleep_flag); | static int mps_wait_db_ack(struct mps_softc *sc, int timeout, int sleep_flag); | ||||
static int mps_debug_sysctl(SYSCTL_HANDLER_ARGS); | static int mps_debug_sysctl(SYSCTL_HANDLER_ARGS); | ||||
static int mps_dump_reqs(SYSCTL_HANDLER_ARGS); | static int mps_dump_reqs(SYSCTL_HANDLER_ARGS); | ||||
static void mps_parse_debug(struct mps_softc *sc, char *list); | static void mps_parse_debug(struct mps_softc *sc, char *list); | ||||
SYSCTL_NODE(_hw, OID_AUTO, mps, CTLFLAG_RD, 0, "MPS Driver Parameters"); | SYSCTL_NODE(_hw, OID_AUTO, mps, CTLFLAG_RD | CTLFLAG_MPSAFE, 0, | ||||
"MPS Driver Parameters"); | |||||
MALLOC_DEFINE(M_MPT2, "mps", "mpt2 driver memory"); | MALLOC_DEFINE(M_MPT2, "mps", "mpt2 driver memory"); | ||||
MALLOC_DECLARE(M_MPSUSER); | MALLOC_DECLARE(M_MPSUSER); | ||||
/* | /* | ||||
* Do a "Diagnostic Reset" aka a hard reset. This should get the chip out of | * Do a "Diagnostic Reset" aka a hard reset. This should get the chip out of | ||||
* any state and back to its initialization state machine. | * any state and back to its initialization state machine. | ||||
*/ | */ | ||||
Show All 24 Lines | |||||
sysctl_ctx = device_get_sysctl_ctx(sc->mps_dev); | sysctl_ctx = device_get_sysctl_ctx(sc->mps_dev); | ||||
if (sysctl_ctx != NULL) | if (sysctl_ctx != NULL) | ||||
sysctl_tree = device_get_sysctl_tree(sc->mps_dev); | sysctl_tree = device_get_sysctl_tree(sc->mps_dev); | ||||
if (sysctl_tree == NULL) { | if (sysctl_tree == NULL) { | ||||
sysctl_ctx_init(&sc->sysctl_ctx); | sysctl_ctx_init(&sc->sysctl_ctx); | ||||
sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, | sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctx, | ||||
SYSCTL_STATIC_CHILDREN(_hw_mps), OID_AUTO, tmpstr2, | SYSCTL_STATIC_CHILDREN(_hw_mps), OID_AUTO, tmpstr2, | ||||
CTLFLAG_RD, 0, tmpstr); | CTLFLAG_RD | CTLFLAG_MPSAFE, 0, tmpstr); | ||||
if (sc->sysctl_tree == NULL) | if (sc->sysctl_tree == NULL) | ||||
return; | return; | ||||
sysctl_ctx = &sc->sysctl_ctx; | sysctl_ctx = &sc->sysctl_ctx; | ||||
sysctl_tree = sc->sysctl_tree; | sysctl_tree = sc->sysctl_tree; | ||||
} | } | ||||
SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | ||||
OID_AUTO, "debug_level", CTLTYPE_STRING | CTLFLAG_RW |CTLFLAG_MPSAFE, | OID_AUTO, "debug_level", CTLTYPE_STRING | CTLFLAG_RW |CTLFLAG_MPSAFE, | ||||
Show All 24 Lines | |||||
&sc->chain_alloc_fail, "chain allocation failures"); | &sc->chain_alloc_fail, "chain allocation failures"); | ||||
SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | ||||
OID_AUTO, "spinup_wait_time", CTLFLAG_RD, | OID_AUTO, "spinup_wait_time", CTLFLAG_RD, | ||||
&sc->spinup_wait_time, DEFAULT_SPINUP_WAIT, "seconds to wait for " | &sc->spinup_wait_time, DEFAULT_SPINUP_WAIT, "seconds to wait for " | ||||
"spinup after SATA ID error"); | "spinup after SATA ID error"); | ||||
SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | ||||
OID_AUTO, "mapping_table_dump", CTLTYPE_STRING | CTLFLAG_RD, sc, 0, | OID_AUTO, "mapping_table_dump", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0, | |||||
mps_mapping_dump, "A", "Mapping Table Dump"); | mps_mapping_dump, "A", "Mapping Table Dump"); | ||||
SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | ||||
OID_AUTO, "encl_table_dump", CTLTYPE_STRING | CTLFLAG_RD, sc, 0, | OID_AUTO, "encl_table_dump", | ||||
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT, sc, 0, | |||||
mps_mapping_encl_dump, "A", "Enclosure Table Dump"); | mps_mapping_encl_dump, "A", "Enclosure Table Dump"); | ||||
SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | SYSCTL_ADD_PROC(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | ||||
OID_AUTO, "dump_reqs", CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_SKIP, sc, 0, | OID_AUTO, "dump_reqs", | ||||
mps_dump_reqs, "I", "Dump Active Requests"); | CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_SKIP | CTLFLAG_NEEDGIANT, | ||||
sc, 0, mps_dump_reqs, "I", "Dump Active Requests"); | |||||
SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | SYSCTL_ADD_INT(sysctl_ctx, SYSCTL_CHILDREN(sysctl_tree), | ||||
OID_AUTO, "use_phy_num", CTLFLAG_RD, &sc->use_phynum, 0, | OID_AUTO, "use_phy_num", CTLFLAG_RD, &sc->use_phynum, 0, | ||||
"Use the phy number for enumeration"); | "Use the phy number for enumeration"); | ||||
} | } | ||||
static struct mps_debug_string { | static struct mps_debug_string { | ||||
char *name; | char *name; | ||||
Show All 12 Lines |