Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/mpr/mpr_config.c
Show First 20 Lines • Show All 136 Lines • ▼ Show 20 Lines | mpr_config_get_ioc_pg8(struct mpr_softc *sc, Mpi2ConfigReply_t *mpi_reply, | ||||
request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | ||||
bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | ||||
request->Function = MPI2_FUNCTION_CONFIG; | request->Function = MPI2_FUNCTION_CONFIG; | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_IOC; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_IOC; | ||||
request->Header.PageNumber = 8; | request->Header.PageNumber = 8; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->Header.PageLength = mpi_reply->Header.PageLength; | request->Header.PageLength = mpi_reply->Header.PageLength; | ||||
cm->cm_length = le16toh(mpi_reply->Header.PageLength) * 4; | cm->cm_length = mpi_reply->Header.PageLength * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc((cm->cm_length), M_MPR, M_ZERO | M_NOWAIT); | page = malloc((cm->cm_length), M_MPR, M_ZERO | M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | mpr_config_get_iounit_pg8(struct mpr_softc *sc, Mpi2ConfigReply_t *mpi_reply, | ||||
request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | ||||
bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | ||||
request->Function = MPI2_FUNCTION_CONFIG; | request->Function = MPI2_FUNCTION_CONFIG; | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_IO_UNIT; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_IO_UNIT; | ||||
request->Header.PageNumber = 8; | request->Header.PageNumber = 8; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->Header.PageLength = mpi_reply->Header.PageLength; | request->Header.PageLength = mpi_reply->Header.PageLength; | ||||
cm->cm_length = le16toh(mpi_reply->Header.PageLength) * 4; | cm->cm_length = mpi_reply->Header.PageLength * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc((cm->cm_length), M_MPR, M_ZERO | M_NOWAIT); | page = malloc((cm->cm_length), M_MPR, M_ZERO | M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | mpr_config_get_man_pg11(struct mpr_softc *sc, Mpi2ConfigReply_t *mpi_reply, | ||||
request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | ||||
bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | ||||
request->Function = MPI2_FUNCTION_CONFIG; | request->Function = MPI2_FUNCTION_CONFIG; | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_MANUFACTURING; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_MANUFACTURING; | ||||
request->Header.PageNumber = 11; | request->Header.PageNumber = 11; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->Header.PageLength = mpi_reply->Header.PageLength; | request->Header.PageLength = mpi_reply->Header.PageLength; | ||||
cm->cm_length = le16toh(mpi_reply->Header.PageLength) * 4; | cm->cm_length = mpi_reply->Header.PageLength * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc((cm->cm_length), M_MPR, M_ZERO | M_NOWAIT); | page = malloc((cm->cm_length), M_MPR, M_ZERO | M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
▲ Show 20 Lines • Show All 179 Lines • ▼ Show 20 Lines | mpr_config_get_dpm_pg0(struct mpr_softc *sc, Mpi2ConfigReply_t *mpi_reply, | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_NVRAM; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_NVRAM; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_EXTENDED; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_EXTENDED; | ||||
request->ExtPageType = MPI2_CONFIG_EXTPAGETYPE_DRIVER_MAPPING; | request->ExtPageType = MPI2_CONFIG_EXTPAGETYPE_DRIVER_MAPPING; | ||||
request->Header.PageNumber = 0; | request->Header.PageNumber = 0; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->PageAddress = sc->max_dpm_entries << | request->PageAddress = sc->max_dpm_entries << | ||||
MPI2_DPM_PGAD_ENTRY_COUNT_SHIFT; | MPI2_DPM_PGAD_ENTRY_COUNT_SHIFT; | ||||
request->ExtPageLength = mpi_reply->ExtPageLength; | request->ExtPageLength = mpi_reply->ExtPageLength; | ||||
cm->cm_length = le16toh(request->ExtPageLength) * 4; | cm->cm_length = le16toh(request->ExtPageLength) * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc(cm->cm_length, M_MPR, M_ZERO|M_NOWAIT); | page = malloc(cm->cm_length, M_MPR, M_ZERO|M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
▲ Show 20 Lines • Show All 663 Lines • ▼ Show 20 Lines | mpr_config_get_bios_pg3(struct mpr_softc *sc, Mpi2ConfigReply_t *mpi_reply, | ||||
request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | request = (MPI2_CONFIG_REQUEST *)cm->cm_req; | ||||
bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | ||||
request->Function = MPI2_FUNCTION_CONFIG; | request->Function = MPI2_FUNCTION_CONFIG; | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_BIOS; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_BIOS; | ||||
request->Header.PageNumber = 3; | request->Header.PageNumber = 3; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->Header.PageLength = mpi_reply->Header.PageLength; | request->Header.PageLength = mpi_reply->Header.PageLength; | ||||
cm->cm_length = le16toh(mpi_reply->Header.PageLength) * 4; | cm->cm_length = mpi_reply->Header.PageLength * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | mpr_config_get_raid_volume_pg0(struct mpr_softc *sc, Mpi2ConfigReply_t | ||||
bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | ||||
request->Function = MPI2_FUNCTION_CONFIG; | request->Function = MPI2_FUNCTION_CONFIG; | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_RAID_VOLUME; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_RAID_VOLUME; | ||||
request->Header.PageNumber = 0; | request->Header.PageNumber = 0; | ||||
request->Header.PageLength = mpi_reply->Header.PageLength; | request->Header.PageLength = mpi_reply->Header.PageLength; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->PageAddress = page_address; | request->PageAddress = page_address; | ||||
cm->cm_length = le16toh(mpi_reply->Header.PageLength) * 4; | cm->cm_length = mpi_reply->Header.PageLength * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | mpr_config_get_raid_volume_pg1(struct mpr_softc *sc, Mpi2ConfigReply_t | ||||
bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | ||||
request->Function = MPI2_FUNCTION_CONFIG; | request->Function = MPI2_FUNCTION_CONFIG; | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_RAID_VOLUME; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_RAID_VOLUME; | ||||
request->Header.PageNumber = 1; | request->Header.PageNumber = 1; | ||||
request->Header.PageLength = mpi_reply->Header.PageLength; | request->Header.PageLength = mpi_reply->Header.PageLength; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->PageAddress = htole32(form | handle); | request->PageAddress = htole32(form | handle); | ||||
cm->cm_length = le16toh(mpi_reply->Header.PageLength) * 4; | cm->cm_length = mpi_reply->Header.PageLength * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
▲ Show 20 Lines • Show All 141 Lines • ▼ Show 20 Lines | mpr_config_get_raid_pd_pg0(struct mpr_softc *sc, Mpi2ConfigReply_t *mpi_reply, | ||||
bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | bzero(request, sizeof(MPI2_CONFIG_REQUEST)); | ||||
request->Function = MPI2_FUNCTION_CONFIG; | request->Function = MPI2_FUNCTION_CONFIG; | ||||
request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | request->Action = MPI2_CONFIG_ACTION_PAGE_READ_CURRENT; | ||||
request->Header.PageType = MPI2_CONFIG_PAGETYPE_RAID_PHYSDISK; | request->Header.PageType = MPI2_CONFIG_PAGETYPE_RAID_PHYSDISK; | ||||
request->Header.PageNumber = 0; | request->Header.PageNumber = 0; | ||||
request->Header.PageLength = mpi_reply->Header.PageLength; | request->Header.PageLength = mpi_reply->Header.PageLength; | ||||
request->Header.PageVersion = mpi_reply->Header.PageVersion; | request->Header.PageVersion = mpi_reply->Header.PageVersion; | ||||
request->PageAddress = page_address; | request->PageAddress = page_address; | ||||
cm->cm_length = le16toh(mpi_reply->Header.PageLength) * 4; | cm->cm_length = mpi_reply->Header.PageLength * 4; | ||||
cm->cm_sge = &request->PageBufferSGE; | cm->cm_sge = &request->PageBufferSGE; | ||||
cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | cm->cm_sglsize = sizeof(MPI2_SGE_IO_UNION); | ||||
cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | cm->cm_flags = MPR_CM_FLAGS_SGE_SIMPLE | MPR_CM_FLAGS_DATAIN; | ||||
cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | cm->cm_desc.Default.RequestFlags = MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE; | ||||
page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | page = malloc(cm->cm_length, M_MPR, M_ZERO | M_NOWAIT); | ||||
if (!page) { | if (!page) { | ||||
printf("%s: page alloc failed\n", __func__); | printf("%s: page alloc failed\n", __func__); | ||||
error = ENOMEM; | error = ENOMEM; | ||||
Show All 37 Lines |