scsi: mpt3sas: Convert uses of pr_<level> with MPT3SAS_FMT to ioc_<level>

Use a more common logging style.

Done using the perl script below and some typing

$ git grep --name-only -w MPT3SAS_FMT -- "*.c" | \
  xargs perl -i -e 'local $/; while (<>) { s/\bpr_(info|err|notice|warn)\s*\(\s*MPT3SAS_FMT\s*("[^"]+"(?:\s*\\?\s*"[^"]+"\s*){0,5}\s*),\s*ioc->name\s*/ioc_\1(ioc, \2/g; print;}'

Miscellanea for these conversions:

o Coalesce formats
o Realign arguments
o Remove unnecessary parentheses
o Use casts to u64 instead of unsigned long long where appropriate
o Convert broken pr_info uses to pr_cont
o Fix broken format string concatenation with line continuations and
  excess whitespace

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Suganath Prabu <suganath-prabu.subramani@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Joe Perches 2018-09-17 08:01:09 -07:00 committed by Martin K. Petersen
parent 645a20c682
commit 919d8a3f3f
7 changed files with 1532 additions and 1981 deletions

File diff suppressed because it is too large Load Diff

View File

@ -175,20 +175,18 @@ _config_display_some_debug(struct MPT3SAS_ADAPTER *ioc, u16 smid,
if (!desc) if (!desc)
return; return;
pr_info(MPT3SAS_FMT ioc_info(ioc, "%s: %s(%d), action(%d), form(0x%08x), smid(%d)\n",
"%s: %s(%d), action(%d), form(0x%08x), smid(%d)\n", calling_function_name, desc,
ioc->name, calling_function_name, desc, mpi_request->Header.PageNumber, mpi_request->Action,
mpi_request->Header.PageNumber, mpi_request->Action, le32_to_cpu(mpi_request->PageAddress), smid);
le32_to_cpu(mpi_request->PageAddress), smid);
if (!mpi_reply) if (!mpi_reply)
return; return;
if (mpi_reply->IOCStatus || mpi_reply->IOCLogInfo) if (mpi_reply->IOCStatus || mpi_reply->IOCLogInfo)
pr_info(MPT3SAS_FMT ioc_info(ioc, "\tiocstatus(0x%04x), loginfo(0x%08x)\n",
"\tiocstatus(0x%04x), loginfo(0x%08x)\n", le16_to_cpu(mpi_reply->IOCStatus),
ioc->name, le16_to_cpu(mpi_reply->IOCStatus), le32_to_cpu(mpi_reply->IOCLogInfo));
le32_to_cpu(mpi_reply->IOCLogInfo));
} }
/** /**
@ -210,9 +208,8 @@ _config_alloc_config_dma_memory(struct MPT3SAS_ADAPTER *ioc,
mem->page = dma_alloc_coherent(&ioc->pdev->dev, mem->sz, mem->page = dma_alloc_coherent(&ioc->pdev->dev, mem->sz,
&mem->page_dma, GFP_KERNEL); &mem->page_dma, GFP_KERNEL);
if (!mem->page) { if (!mem->page) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "%s: dma_alloc_coherent failed asking for (%d) bytes!!\n",
"%s: dma_alloc_coherent failed asking for (%d) bytes!!\n", __func__, mem->sz);
ioc->name, __func__, mem->sz);
r = -ENOMEM; r = -ENOMEM;
} }
} else { /* use tmp buffer if less than 512 bytes */ } else { /* use tmp buffer if less than 512 bytes */
@ -313,8 +310,7 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
mutex_lock(&ioc->config_cmds.mutex); mutex_lock(&ioc->config_cmds.mutex);
if (ioc->config_cmds.status != MPT3_CMD_NOT_USED) { if (ioc->config_cmds.status != MPT3_CMD_NOT_USED) {
pr_err(MPT3SAS_FMT "%s: config_cmd in use\n", ioc_err(ioc, "%s: config_cmd in use\n", __func__);
ioc->name, __func__);
mutex_unlock(&ioc->config_cmds.mutex); mutex_unlock(&ioc->config_cmds.mutex);
return -EAGAIN; return -EAGAIN;
} }
@ -362,34 +358,30 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
r = -EFAULT; r = -EFAULT;
goto free_mem; goto free_mem;
} }
pr_info(MPT3SAS_FMT "%s: attempting retry (%d)\n", ioc_info(ioc, "%s: attempting retry (%d)\n",
ioc->name, __func__, retry_count); __func__, retry_count);
} }
wait_state_count = 0; wait_state_count = 0;
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) { while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) {
if (wait_state_count++ == MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT) { if (wait_state_count++ == MPT3_CONFIG_PAGE_DEFAULT_TIMEOUT) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "%s: failed due to ioc not operational\n",
"%s: failed due to ioc not operational\n", __func__);
ioc->name, __func__);
ioc->config_cmds.status = MPT3_CMD_NOT_USED; ioc->config_cmds.status = MPT3_CMD_NOT_USED;
r = -EFAULT; r = -EFAULT;
goto free_mem; goto free_mem;
} }
ssleep(1); ssleep(1);
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
pr_info(MPT3SAS_FMT ioc_info(ioc, "%s: waiting for operational state(count=%d)\n",
"%s: waiting for operational state(count=%d)\n", __func__, wait_state_count);
ioc->name, __func__, wait_state_count);
} }
if (wait_state_count) if (wait_state_count)
pr_info(MPT3SAS_FMT "%s: ioc is operational\n", ioc_info(ioc, "%s: ioc is operational\n", __func__);
ioc->name, __func__);
smid = mpt3sas_base_get_smid(ioc, ioc->config_cb_idx); smid = mpt3sas_base_get_smid(ioc, ioc->config_cb_idx);
if (!smid) { if (!smid) {
pr_err(MPT3SAS_FMT "%s: failed obtaining a smid\n", ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
ioc->name, __func__);
ioc->config_cmds.status = MPT3_CMD_NOT_USED; ioc->config_cmds.status = MPT3_CMD_NOT_USED;
r = -EAGAIN; r = -EAGAIN;
goto free_mem; goto free_mem;
@ -453,8 +445,8 @@ _config_request(struct MPT3SAS_ADAPTER *ioc, Mpi2ConfigRequest_t
} }
if (retry_count) if (retry_count)
pr_info(MPT3SAS_FMT "%s: retry (%d) completed!!\n", \ ioc_info(ioc, "%s: retry (%d) completed!!\n",
ioc->name, __func__, retry_count); __func__, retry_count);
if ((ioc_status == MPI2_IOCSTATUS_SUCCESS) && if ((ioc_status == MPI2_IOCSTATUS_SUCCESS) &&
config_page && mpi_request->Action == config_page && mpi_request->Action ==

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -153,18 +153,16 @@ _transport_set_identify(struct MPT3SAS_ADAPTER *ioc, u16 handle,
if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0, if ((mpt3sas_config_get_sas_device_pg0(ioc, &mpi_reply, &sas_device_pg0,
MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle))) { MPI2_SAS_DEVICE_PGAD_FORM_HANDLE, handle))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
return -ENXIO; return -ENXIO;
} }
ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & ioc_status = le16_to_cpu(mpi_reply.IOCStatus) &
MPI2_IOCSTATUS_MASK; MPI2_IOCSTATUS_MASK;
if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { if (ioc_status != MPI2_IOCSTATUS_SUCCESS) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "handle(0x%04x), ioc_status(0x%04x) failure at %s:%d/%s()!\n",
"handle(0x%04x), ioc_status(0x%04x)\nfailure at %s:%d/%s()!\n", handle, ioc_status, __FILE__, __LINE__, __func__);
ioc->name, handle, ioc_status,
__FILE__, __LINE__, __func__);
return -EIO; return -EIO;
} }
@ -318,8 +316,7 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
mutex_lock(&ioc->transport_cmds.mutex); mutex_lock(&ioc->transport_cmds.mutex);
if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc_err(ioc, "%s: transport_cmds in use\n", __func__);
ioc->name, __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto out; goto out;
} }
@ -329,26 +326,22 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) { while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) {
if (wait_state_count++ == 10) { if (wait_state_count++ == 10) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "%s: failed due to ioc not operational\n",
"%s: failed due to ioc not operational\n", __func__);
ioc->name, __func__);
rc = -EFAULT; rc = -EFAULT;
goto out; goto out;
} }
ssleep(1); ssleep(1);
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
pr_info(MPT3SAS_FMT ioc_info(ioc, "%s: waiting for operational state(count=%d)\n",
"%s: waiting for operational state(count=%d)\n", __func__, wait_state_count);
ioc->name, __func__, wait_state_count);
} }
if (wait_state_count) if (wait_state_count)
pr_info(MPT3SAS_FMT "%s: ioc is operational\n", ioc_info(ioc, "%s: ioc is operational\n", __func__);
ioc->name, __func__);
smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
if (!smid) { if (!smid) {
pr_err(MPT3SAS_FMT "%s: failed obtaining a smid\n", ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
ioc->name, __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto out; goto out;
} }
@ -388,16 +381,15 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma, ioc->build_sg(ioc, psge, data_out_dma, data_out_sz, data_in_dma,
data_in_sz); data_in_sz);
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"report_manufacture - send to sas_addr(0x%016llx)\n", ioc_info(ioc, "report_manufacture - send to sas_addr(0x%016llx)\n",
ioc->name, (unsigned long long)sas_address)); (u64)sas_address));
init_completion(&ioc->transport_cmds.done); init_completion(&ioc->transport_cmds.done);
mpt3sas_base_put_smid_default(ioc, smid); mpt3sas_base_put_smid_default(ioc, smid);
wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ);
if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) {
pr_err(MPT3SAS_FMT "%s: timeout\n", ioc_err(ioc, "%s: timeout\n", __func__);
ioc->name, __func__);
_debug_dump_mf(mpi_request, _debug_dump_mf(mpi_request,
sizeof(Mpi2SmpPassthroughRequest_t)/4); sizeof(Mpi2SmpPassthroughRequest_t)/4);
if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) if (!(ioc->transport_cmds.status & MPT3_CMD_RESET))
@ -405,17 +397,16 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
goto issue_host_reset; goto issue_host_reset;
} }
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc, ioc_info(ioc, "report_manufacture - complete\n"));
"report_manufacture - complete\n", ioc->name));
if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) {
u8 *tmp; u8 *tmp;
mpi_reply = ioc->transport_cmds.reply; mpi_reply = ioc->transport_cmds.reply;
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"report_manufacture - reply data transfer size(%d)\n", ioc_info(ioc, "report_manufacture - reply data transfer size(%d)\n",
ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); le16_to_cpu(mpi_reply->ResponseDataLength)));
if (le16_to_cpu(mpi_reply->ResponseDataLength) != if (le16_to_cpu(mpi_reply->ResponseDataLength) !=
sizeof(struct rep_manu_reply)) sizeof(struct rep_manu_reply))
@ -439,8 +430,8 @@ _transport_expander_report_manufacture(struct MPT3SAS_ADAPTER *ioc,
manufacture_reply->component_revision_id; manufacture_reply->component_revision_id;
} }
} else } else
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"report_manufacture - no reply\n", ioc->name)); ioc_info(ioc, "report_manufacture - no reply\n"));
issue_host_reset: issue_host_reset:
if (issue_reset) if (issue_reset)
@ -643,8 +634,8 @@ mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle,
mpt3sas_port = kzalloc(sizeof(struct _sas_port), mpt3sas_port = kzalloc(sizeof(struct _sas_port),
GFP_KERNEL); GFP_KERNEL);
if (!mpt3sas_port) { if (!mpt3sas_port) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
return NULL; return NULL;
} }
@ -655,22 +646,21 @@ mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle,
spin_unlock_irqrestore(&ioc->sas_node_lock, flags); spin_unlock_irqrestore(&ioc->sas_node_lock, flags);
if (!sas_node) { if (!sas_node) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "%s: Could not find parent sas_address(0x%016llx)!\n",
"%s: Could not find parent sas_address(0x%016llx)!\n", __func__, (u64)sas_address);
ioc->name, __func__, (unsigned long long)sas_address);
goto out_fail; goto out_fail;
} }
if ((_transport_set_identify(ioc, handle, if ((_transport_set_identify(ioc, handle,
&mpt3sas_port->remote_identify))) { &mpt3sas_port->remote_identify))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
goto out_fail; goto out_fail;
} }
if (mpt3sas_port->remote_identify.device_type == SAS_PHY_UNUSED) { if (mpt3sas_port->remote_identify.device_type == SAS_PHY_UNUSED) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
goto out_fail; goto out_fail;
} }
@ -687,20 +677,20 @@ mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle,
} }
if (!mpt3sas_port->num_phys) { if (!mpt3sas_port->num_phys) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
goto out_fail; goto out_fail;
} }
if (!sas_node->parent_dev) { if (!sas_node->parent_dev) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
goto out_fail; goto out_fail;
} }
port = sas_port_alloc_num(sas_node->parent_dev); port = sas_port_alloc_num(sas_node->parent_dev);
if ((sas_port_add(port))) { if ((sas_port_add(port))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
goto out_fail; goto out_fail;
} }
@ -738,8 +728,8 @@ mpt3sas_transport_port_add(struct MPT3SAS_ADAPTER *ioc, u16 handle,
} }
if ((sas_rphy_add(rphy))) { if ((sas_rphy_add(rphy))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
} }
if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) { if (mpt3sas_port->remote_identify.device_type == SAS_END_DEVICE) {
@ -861,14 +851,14 @@ mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
INIT_LIST_HEAD(&mpt3sas_phy->port_siblings); INIT_LIST_HEAD(&mpt3sas_phy->port_siblings);
phy = sas_phy_alloc(parent_dev, phy_index); phy = sas_phy_alloc(parent_dev, phy_index);
if (!phy) { if (!phy) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
return -1; return -1;
} }
if ((_transport_set_identify(ioc, mpt3sas_phy->handle, if ((_transport_set_identify(ioc, mpt3sas_phy->handle,
&mpt3sas_phy->identify))) { &mpt3sas_phy->identify))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
sas_phy_free(phy); sas_phy_free(phy);
return -1; return -1;
} }
@ -890,8 +880,8 @@ mpt3sas_transport_add_host_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
phy_pg0.ProgrammedLinkRate >> 4); phy_pg0.ProgrammedLinkRate >> 4);
if ((sas_phy_add(phy))) { if ((sas_phy_add(phy))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
sas_phy_free(phy); sas_phy_free(phy);
return -1; return -1;
} }
@ -929,14 +919,14 @@ mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
INIT_LIST_HEAD(&mpt3sas_phy->port_siblings); INIT_LIST_HEAD(&mpt3sas_phy->port_siblings);
phy = sas_phy_alloc(parent_dev, phy_index); phy = sas_phy_alloc(parent_dev, phy_index);
if (!phy) { if (!phy) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
return -1; return -1;
} }
if ((_transport_set_identify(ioc, mpt3sas_phy->handle, if ((_transport_set_identify(ioc, mpt3sas_phy->handle,
&mpt3sas_phy->identify))) { &mpt3sas_phy->identify))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
sas_phy_free(phy); sas_phy_free(phy);
return -1; return -1;
} }
@ -960,8 +950,8 @@ mpt3sas_transport_add_expander_phy(struct MPT3SAS_ADAPTER *ioc, struct _sas_phy
expander_pg1.ProgrammedLinkRate >> 4); expander_pg1.ProgrammedLinkRate >> 4);
if ((sas_phy_add(phy))) { if ((sas_phy_add(phy))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
sas_phy_free(phy); sas_phy_free(phy);
return -1; return -1;
} }
@ -1106,8 +1096,7 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
mutex_lock(&ioc->transport_cmds.mutex); mutex_lock(&ioc->transport_cmds.mutex);
if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc_err(ioc, "%s: transport_cmds in use\n", __func__);
ioc->name, __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto out; goto out;
} }
@ -1117,26 +1106,22 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) { while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) {
if (wait_state_count++ == 10) { if (wait_state_count++ == 10) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "%s: failed due to ioc not operational\n",
"%s: failed due to ioc not operational\n", __func__);
ioc->name, __func__);
rc = -EFAULT; rc = -EFAULT;
goto out; goto out;
} }
ssleep(1); ssleep(1);
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
pr_info(MPT3SAS_FMT ioc_info(ioc, "%s: waiting for operational state(count=%d)\n",
"%s: waiting for operational state(count=%d)\n", __func__, wait_state_count);
ioc->name, __func__, wait_state_count);
} }
if (wait_state_count) if (wait_state_count)
pr_info(MPT3SAS_FMT "%s: ioc is operational\n", ioc_info(ioc, "%s: ioc is operational\n", __func__);
ioc->name, __func__);
smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
if (!smid) { if (!smid) {
pr_err(MPT3SAS_FMT "%s: failed obtaining a smid\n", ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
ioc->name, __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto out; goto out;
} }
@ -1179,17 +1164,16 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
data_out_dma + sizeof(struct phy_error_log_request), data_out_dma + sizeof(struct phy_error_log_request),
sizeof(struct phy_error_log_reply)); sizeof(struct phy_error_log_reply));
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_error_log - send to sas_addr(0x%016llx), phy(%d)\n", ioc_info(ioc, "phy_error_log - send to sas_addr(0x%016llx), phy(%d)\n",
ioc->name, (unsigned long long)phy->identify.sas_address, (u64)phy->identify.sas_address,
phy->number)); phy->number));
init_completion(&ioc->transport_cmds.done); init_completion(&ioc->transport_cmds.done);
mpt3sas_base_put_smid_default(ioc, smid); mpt3sas_base_put_smid_default(ioc, smid);
wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ);
if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) {
pr_err(MPT3SAS_FMT "%s: timeout\n", ioc_err(ioc, "%s: timeout\n", __func__);
ioc->name, __func__);
_debug_dump_mf(mpi_request, _debug_dump_mf(mpi_request,
sizeof(Mpi2SmpPassthroughRequest_t)/4); sizeof(Mpi2SmpPassthroughRequest_t)/4);
if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) if (!(ioc->transport_cmds.status & MPT3_CMD_RESET))
@ -1197,16 +1181,15 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
goto issue_host_reset; goto issue_host_reset;
} }
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc, ioc_info(ioc, "phy_error_log - complete\n"));
"phy_error_log - complete\n", ioc->name));
if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) {
mpi_reply = ioc->transport_cmds.reply; mpi_reply = ioc->transport_cmds.reply;
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_error_log - reply data transfer size(%d)\n", ioc_info(ioc, "phy_error_log - reply data transfer size(%d)\n",
ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); le16_to_cpu(mpi_reply->ResponseDataLength)));
if (le16_to_cpu(mpi_reply->ResponseDataLength) != if (le16_to_cpu(mpi_reply->ResponseDataLength) !=
sizeof(struct phy_error_log_reply)) sizeof(struct phy_error_log_reply))
@ -1215,9 +1198,9 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
phy_error_log_reply = data_out + phy_error_log_reply = data_out +
sizeof(struct phy_error_log_request); sizeof(struct phy_error_log_request);
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_error_log - function_result(%d)\n", ioc_info(ioc, "phy_error_log - function_result(%d)\n",
ioc->name, phy_error_log_reply->function_result)); phy_error_log_reply->function_result));
phy->invalid_dword_count = phy->invalid_dword_count =
be32_to_cpu(phy_error_log_reply->invalid_dword); be32_to_cpu(phy_error_log_reply->invalid_dword);
@ -1229,8 +1212,8 @@ _transport_get_expander_phy_error_log(struct MPT3SAS_ADAPTER *ioc,
be32_to_cpu(phy_error_log_reply->phy_reset_problem); be32_to_cpu(phy_error_log_reply->phy_reset_problem);
rc = 0; rc = 0;
} else } else
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_error_log - no reply\n", ioc->name)); ioc_info(ioc, "phy_error_log - no reply\n"));
issue_host_reset: issue_host_reset:
if (issue_reset) if (issue_reset)
@ -1273,17 +1256,16 @@ _transport_get_linkerrors(struct sas_phy *phy)
/* get hba phy error logs */ /* get hba phy error logs */
if ((mpt3sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1, if ((mpt3sas_config_get_phy_pg1(ioc, &mpi_reply, &phy_pg1,
phy->number))) { phy->number))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
return -ENXIO; return -ENXIO;
} }
if (mpi_reply.IOCStatus || mpi_reply.IOCLogInfo) if (mpi_reply.IOCStatus || mpi_reply.IOCLogInfo)
pr_info(MPT3SAS_FMT ioc_info(ioc, "phy(%d), ioc_status (0x%04x), loginfo(0x%08x)\n",
"phy(%d), ioc_status (0x%04x), loginfo(0x%08x)\n", phy->number,
ioc->name, phy->number, le16_to_cpu(mpi_reply.IOCStatus),
le16_to_cpu(mpi_reply.IOCStatus), le32_to_cpu(mpi_reply.IOCLogInfo));
le32_to_cpu(mpi_reply.IOCLogInfo));
phy->invalid_dword_count = le32_to_cpu(phy_pg1.InvalidDwordCount); phy->invalid_dword_count = le32_to_cpu(phy_pg1.InvalidDwordCount);
phy->running_disparity_error_count = phy->running_disparity_error_count =
@ -1419,8 +1401,7 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
mutex_lock(&ioc->transport_cmds.mutex); mutex_lock(&ioc->transport_cmds.mutex);
if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc_err(ioc, "%s: transport_cmds in use\n", __func__);
ioc->name, __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto out; goto out;
} }
@ -1430,26 +1411,22 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) { while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) {
if (wait_state_count++ == 10) { if (wait_state_count++ == 10) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "%s: failed due to ioc not operational\n",
"%s: failed due to ioc not operational\n", __func__);
ioc->name, __func__);
rc = -EFAULT; rc = -EFAULT;
goto out; goto out;
} }
ssleep(1); ssleep(1);
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
pr_info(MPT3SAS_FMT ioc_info(ioc, "%s: waiting for operational state(count=%d)\n",
"%s: waiting for operational state(count=%d)\n", __func__, wait_state_count);
ioc->name, __func__, wait_state_count);
} }
if (wait_state_count) if (wait_state_count)
pr_info(MPT3SAS_FMT "%s: ioc is operational\n", ioc_info(ioc, "%s: ioc is operational\n", __func__);
ioc->name, __func__);
smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
if (!smid) { if (!smid) {
pr_err(MPT3SAS_FMT "%s: failed obtaining a smid\n", ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
ioc->name, __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto out; goto out;
} }
@ -1497,17 +1474,16 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
data_out_dma + sizeof(struct phy_control_request), data_out_dma + sizeof(struct phy_control_request),
sizeof(struct phy_control_reply)); sizeof(struct phy_control_reply));
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_control - send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n", ioc_info(ioc, "phy_control - send to sas_addr(0x%016llx), phy(%d), opcode(%d)\n",
ioc->name, (unsigned long long)phy->identify.sas_address, (u64)phy->identify.sas_address,
phy->number, phy_operation)); phy->number, phy_operation));
init_completion(&ioc->transport_cmds.done); init_completion(&ioc->transport_cmds.done);
mpt3sas_base_put_smid_default(ioc, smid); mpt3sas_base_put_smid_default(ioc, smid);
wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ); wait_for_completion_timeout(&ioc->transport_cmds.done, 10*HZ);
if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) { if (!(ioc->transport_cmds.status & MPT3_CMD_COMPLETE)) {
pr_err(MPT3SAS_FMT "%s: timeout\n", ioc_err(ioc, "%s: timeout\n", __func__);
ioc->name, __func__);
_debug_dump_mf(mpi_request, _debug_dump_mf(mpi_request,
sizeof(Mpi2SmpPassthroughRequest_t)/4); sizeof(Mpi2SmpPassthroughRequest_t)/4);
if (!(ioc->transport_cmds.status & MPT3_CMD_RESET)) if (!(ioc->transport_cmds.status & MPT3_CMD_RESET))
@ -1515,16 +1491,15 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
goto issue_host_reset; goto issue_host_reset;
} }
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc, ioc_info(ioc, "phy_control - complete\n"));
"phy_control - complete\n", ioc->name));
if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) { if (ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID) {
mpi_reply = ioc->transport_cmds.reply; mpi_reply = ioc->transport_cmds.reply;
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_control - reply data transfer size(%d)\n", ioc_info(ioc, "phy_control - reply data transfer size(%d)\n",
ioc->name, le16_to_cpu(mpi_reply->ResponseDataLength))); le16_to_cpu(mpi_reply->ResponseDataLength)));
if (le16_to_cpu(mpi_reply->ResponseDataLength) != if (le16_to_cpu(mpi_reply->ResponseDataLength) !=
sizeof(struct phy_control_reply)) sizeof(struct phy_control_reply))
@ -1533,14 +1508,14 @@ _transport_expander_phy_control(struct MPT3SAS_ADAPTER *ioc,
phy_control_reply = data_out + phy_control_reply = data_out +
sizeof(struct phy_control_request); sizeof(struct phy_control_request);
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_control - function_result(%d)\n", ioc_info(ioc, "phy_control - function_result(%d)\n",
ioc->name, phy_control_reply->function_result)); phy_control_reply->function_result));
rc = 0; rc = 0;
} else } else
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"phy_control - no reply\n", ioc->name)); ioc_info(ioc, "phy_control - no reply\n"));
issue_host_reset: issue_host_reset:
if (issue_reset) if (issue_reset)
@ -1591,16 +1566,15 @@ _transport_phy_reset(struct sas_phy *phy, int hard_reset)
mpi_request.PhyNum = phy->number; mpi_request.PhyNum = phy->number;
if ((mpt3sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) { if ((mpt3sas_base_sas_iounit_control(ioc, &mpi_reply, &mpi_request))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
return -ENXIO; return -ENXIO;
} }
if (mpi_reply.IOCStatus || mpi_reply.IOCLogInfo) if (mpi_reply.IOCStatus || mpi_reply.IOCLogInfo)
pr_info(MPT3SAS_FMT ioc_info(ioc, "phy(%d), ioc_status(0x%04x), loginfo(0x%08x)\n",
"phy(%d), ioc_status(0x%04x), loginfo(0x%08x)\n", phy->number, le16_to_cpu(mpi_reply.IOCStatus),
ioc->name, phy->number, le16_to_cpu(mpi_reply.IOCStatus), le32_to_cpu(mpi_reply.IOCLogInfo));
le32_to_cpu(mpi_reply.IOCLogInfo));
return 0; return 0;
} }
@ -1647,23 +1621,23 @@ _transport_phy_enable(struct sas_phy *phy, int enable)
sizeof(Mpi2SasIOUnit0PhyData_t)); sizeof(Mpi2SasIOUnit0PhyData_t));
sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL); sas_iounit_pg0 = kzalloc(sz, GFP_KERNEL);
if (!sas_iounit_pg0) { if (!sas_iounit_pg0) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -ENOMEM; rc = -ENOMEM;
goto out; goto out;
} }
if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply, if ((mpt3sas_config_get_sas_iounit_pg0(ioc, &mpi_reply,
sas_iounit_pg0, sz))) { sas_iounit_pg0, sz))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -ENXIO; rc = -ENXIO;
goto out; goto out;
} }
ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & ioc_status = le16_to_cpu(mpi_reply.IOCStatus) &
MPI2_IOCSTATUS_MASK; MPI2_IOCSTATUS_MASK;
if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { if (ioc_status != MPI2_IOCSTATUS_SUCCESS) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
@ -1672,10 +1646,8 @@ _transport_phy_enable(struct sas_phy *phy, int enable)
for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) { for (i = 0, discovery_active = 0; i < ioc->sas_hba.num_phys ; i++) {
if (sas_iounit_pg0->PhyData[i].PortFlags & if (sas_iounit_pg0->PhyData[i].PortFlags &
MPI2_SASIOUNIT0_PORTFLAGS_DISCOVERY_IN_PROGRESS) { MPI2_SASIOUNIT0_PORTFLAGS_DISCOVERY_IN_PROGRESS) {
pr_err(MPT3SAS_FMT "discovery is active on " \ ioc_err(ioc, "discovery is active on port = %d, phy = %d: unable to enable/disable phys, try again later!\n",
"port = %d, phy = %d: unable to enable/disable " sas_iounit_pg0->PhyData[i].Port, i);
"phys, try again later!\n", ioc->name,
sas_iounit_pg0->PhyData[i].Port, i);
discovery_active = 1; discovery_active = 1;
} }
} }
@ -1690,23 +1662,23 @@ _transport_phy_enable(struct sas_phy *phy, int enable)
sizeof(Mpi2SasIOUnit1PhyData_t)); sizeof(Mpi2SasIOUnit1PhyData_t));
sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL); sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL);
if (!sas_iounit_pg1) { if (!sas_iounit_pg1) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -ENOMEM; rc = -ENOMEM;
goto out; goto out;
} }
if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply,
sas_iounit_pg1, sz))) { sas_iounit_pg1, sz))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -ENXIO; rc = -ENXIO;
goto out; goto out;
} }
ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & ioc_status = le16_to_cpu(mpi_reply.IOCStatus) &
MPI2_IOCSTATUS_MASK; MPI2_IOCSTATUS_MASK;
if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { if (ioc_status != MPI2_IOCSTATUS_SUCCESS) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
@ -1798,23 +1770,23 @@ _transport_phy_speed(struct sas_phy *phy, struct sas_phy_linkrates *rates)
sizeof(Mpi2SasIOUnit1PhyData_t)); sizeof(Mpi2SasIOUnit1PhyData_t));
sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL); sas_iounit_pg1 = kzalloc(sz, GFP_KERNEL);
if (!sas_iounit_pg1) { if (!sas_iounit_pg1) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -ENOMEM; rc = -ENOMEM;
goto out; goto out;
} }
if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply, if ((mpt3sas_config_get_sas_iounit_pg1(ioc, &mpi_reply,
sas_iounit_pg1, sz))) { sas_iounit_pg1, sz))) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -ENXIO; rc = -ENXIO;
goto out; goto out;
} }
ioc_status = le16_to_cpu(mpi_reply.IOCStatus) & ioc_status = le16_to_cpu(mpi_reply.IOCStatus) &
MPI2_IOCSTATUS_MASK; MPI2_IOCSTATUS_MASK;
if (ioc_status != MPI2_IOCSTATUS_SUCCESS) { if (ioc_status != MPI2_IOCSTATUS_SUCCESS) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -EIO; rc = -EIO;
goto out; goto out;
} }
@ -1833,8 +1805,8 @@ _transport_phy_speed(struct sas_phy *phy, struct sas_phy_linkrates *rates)
if (mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1, if (mpt3sas_config_set_sas_iounit_pg1(ioc, &mpi_reply, sas_iounit_pg1,
sz)) { sz)) {
pr_err(MPT3SAS_FMT "failure at %s:%d/%s()!\n", ioc_err(ioc, "failure at %s:%d/%s()!\n",
ioc->name, __FILE__, __LINE__, __func__); __FILE__, __LINE__, __func__);
rc = -ENXIO; rc = -ENXIO;
goto out; goto out;
} }
@ -1933,8 +1905,8 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
goto job_done; goto job_done;
if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) { if (ioc->transport_cmds.status != MPT3_CMD_NOT_USED) {
pr_err(MPT3SAS_FMT "%s: transport_cmds in use\n", ioc->name, ioc_err(ioc, "%s: transport_cmds in use\n",
__func__); __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto out; goto out;
} }
@ -1959,26 +1931,22 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) { while (ioc_state != MPI2_IOC_STATE_OPERATIONAL) {
if (wait_state_count++ == 10) { if (wait_state_count++ == 10) {
pr_err(MPT3SAS_FMT ioc_err(ioc, "%s: failed due to ioc not operational\n",
"%s: failed due to ioc not operational\n", __func__);
ioc->name, __func__);
rc = -EFAULT; rc = -EFAULT;
goto unmap_in; goto unmap_in;
} }
ssleep(1); ssleep(1);
ioc_state = mpt3sas_base_get_iocstate(ioc, 1); ioc_state = mpt3sas_base_get_iocstate(ioc, 1);
pr_info(MPT3SAS_FMT ioc_info(ioc, "%s: waiting for operational state(count=%d)\n",
"%s: waiting for operational state(count=%d)\n", __func__, wait_state_count);
ioc->name, __func__, wait_state_count);
} }
if (wait_state_count) if (wait_state_count)
pr_info(MPT3SAS_FMT "%s: ioc is operational\n", ioc_info(ioc, "%s: ioc is operational\n", __func__);
ioc->name, __func__);
smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx); smid = mpt3sas_base_get_smid(ioc, ioc->transport_cb_idx);
if (!smid) { if (!smid) {
pr_err(MPT3SAS_FMT "%s: failed obtaining a smid\n", ioc_err(ioc, "%s: failed obtaining a smid\n", __func__);
ioc->name, __func__);
rc = -EAGAIN; rc = -EAGAIN;
goto unmap_in; goto unmap_in;
} }
@ -1999,8 +1967,8 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
ioc->build_sg(ioc, psge, dma_addr_out, dma_len_out - 4, dma_addr_in, ioc->build_sg(ioc, psge, dma_addr_out, dma_len_out - 4, dma_addr_in,
dma_len_in - 4); dma_len_in - 4);
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"%s - sending smp request\n", ioc->name, __func__)); ioc_info(ioc, "%s: sending smp request\n", __func__));
init_completion(&ioc->transport_cmds.done); init_completion(&ioc->transport_cmds.done);
mpt3sas_base_put_smid_default(ioc, smid); mpt3sas_base_put_smid_default(ioc, smid);
@ -2018,12 +1986,11 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
} }
} }
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc, ioc_info(ioc, "%s - complete\n", __func__));
"%s - complete\n", ioc->name, __func__));
if (!(ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID)) { if (!(ioc->transport_cmds.status & MPT3_CMD_REPLY_VALID)) {
dtransportprintk(ioc, pr_info(MPT3SAS_FMT dtransportprintk(ioc,
"%s - no reply\n", ioc->name, __func__)); ioc_info(ioc, "%s: no reply\n", __func__));
rc = -ENXIO; rc = -ENXIO;
goto unmap_in; goto unmap_in;
} }
@ -2031,9 +1998,9 @@ _transport_smp_handler(struct bsg_job *job, struct Scsi_Host *shost,
mpi_reply = ioc->transport_cmds.reply; mpi_reply = ioc->transport_cmds.reply;
dtransportprintk(ioc, dtransportprintk(ioc,
pr_info(MPT3SAS_FMT "%s - reply data transfer size(%d)\n", ioc_info(ioc, "%s: reply data transfer size(%d)\n",
ioc->name, __func__, __func__,
le16_to_cpu(mpi_reply->ResponseDataLength))); le16_to_cpu(mpi_reply->ResponseDataLength)));
memcpy(job->reply, mpi_reply, sizeof(*mpi_reply)); memcpy(job->reply, mpi_reply, sizeof(*mpi_reply));
job->reply_len = sizeof(*mpi_reply); job->reply_len = sizeof(*mpi_reply);

View File

@ -72,8 +72,7 @@ _mpt3sas_raise_sigio(struct MPT3SAS_ADAPTER *ioc,
u16 sz, event_data_sz; u16 sz, event_data_sz;
unsigned long flags; unsigned long flags;
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: enter\n", __func__));
ioc->name, __func__));
sz = offsetof(Mpi2EventNotificationReply_t, EventData) + sz = offsetof(Mpi2EventNotificationReply_t, EventData) +
sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T) + 4; sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T) + 4;
@ -85,23 +84,23 @@ _mpt3sas_raise_sigio(struct MPT3SAS_ADAPTER *ioc,
mpi_reply->EventDataLength = cpu_to_le16(event_data_sz); mpi_reply->EventDataLength = cpu_to_le16(event_data_sz);
memcpy(&mpi_reply->EventData, event_data, memcpy(&mpi_reply->EventData, event_data,
sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T)); sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T));
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: add to driver event log\n", ioc_info(ioc, "%s: add to driver event log\n",
ioc->name, __func__)); __func__));
mpt3sas_ctl_add_to_event_log(ioc, mpi_reply); mpt3sas_ctl_add_to_event_log(ioc, mpi_reply);
kfree(mpi_reply); kfree(mpi_reply);
out: out:
/* clearing the diag_trigger_active flag */ /* clearing the diag_trigger_active flag */
spin_lock_irqsave(&ioc->diag_trigger_lock, flags); spin_lock_irqsave(&ioc->diag_trigger_lock, flags);
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: clearing diag_trigger_active flag\n", ioc_info(ioc, "%s: clearing diag_trigger_active flag\n",
ioc->name, __func__)); __func__));
ioc->diag_trigger_active = 0; ioc->diag_trigger_active = 0;
spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags);
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: exit\n", ioc->name, dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: exit\n",
__func__)); __func__));
} }
/** /**
@ -115,22 +114,22 @@ mpt3sas_process_trigger_data(struct MPT3SAS_ADAPTER *ioc,
{ {
u8 issue_reset = 0; u8 issue_reset = 0;
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: enter\n", dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: enter\n", __func__));
ioc->name, __func__));
/* release the diag buffer trace */ /* release the diag buffer trace */
if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] & if ((ioc->diag_buffer_status[MPI2_DIAG_BUF_TYPE_TRACE] &
MPT3_DIAG_BUFFER_IS_RELEASED) == 0) { MPT3_DIAG_BUFFER_IS_RELEASED) == 0) {
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: release trace diag buffer\n", ioc->name, __func__)); ioc_info(ioc, "%s: release trace diag buffer\n",
__func__));
mpt3sas_send_diag_release(ioc, MPI2_DIAG_BUF_TYPE_TRACE, mpt3sas_send_diag_release(ioc, MPI2_DIAG_BUF_TYPE_TRACE,
&issue_reset); &issue_reset);
} }
_mpt3sas_raise_sigio(ioc, event_data); _mpt3sas_raise_sigio(ioc, event_data);
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: exit\n", ioc->name, dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: exit\n",
__func__)); __func__));
} }
/** /**
@ -168,9 +167,9 @@ mpt3sas_trigger_master(struct MPT3SAS_ADAPTER *ioc, u32 trigger_bitmask)
by_pass_checks: by_pass_checks:
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: enter - trigger_bitmask = 0x%08x\n", ioc_info(ioc, "%s: enter - trigger_bitmask = 0x%08x\n",
ioc->name, __func__, trigger_bitmask)); __func__, trigger_bitmask));
/* don't send trigger if an trigger is currently active */ /* don't send trigger if an trigger is currently active */
if (ioc->diag_trigger_active) { if (ioc->diag_trigger_active) {
@ -182,9 +181,9 @@ mpt3sas_trigger_master(struct MPT3SAS_ADAPTER *ioc, u32 trigger_bitmask)
if (ioc->diag_trigger_master.MasterData & trigger_bitmask) { if (ioc->diag_trigger_master.MasterData & trigger_bitmask) {
found_match = 1; found_match = 1;
ioc->diag_trigger_active = 1; ioc->diag_trigger_active = 1;
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: setting diag_trigger_active flag\n", ioc_info(ioc, "%s: setting diag_trigger_active flag\n",
ioc->name, __func__)); __func__));
} }
spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags);
@ -202,8 +201,8 @@ mpt3sas_trigger_master(struct MPT3SAS_ADAPTER *ioc, u32 trigger_bitmask)
mpt3sas_send_trigger_data_event(ioc, &event_data); mpt3sas_send_trigger_data_event(ioc, &event_data);
out: out:
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: exit\n", ioc->name, dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: exit\n",
__func__)); __func__));
} }
/** /**
@ -239,9 +238,9 @@ mpt3sas_trigger_event(struct MPT3SAS_ADAPTER *ioc, u16 event,
return; return;
} }
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: enter - event = 0x%04x, log_entry_qualifier = 0x%04x\n", ioc_info(ioc, "%s: enter - event = 0x%04x, log_entry_qualifier = 0x%04x\n",
ioc->name, __func__, event, log_entry_qualifier)); __func__, event, log_entry_qualifier));
/* don't send trigger if an trigger is currently active */ /* don't send trigger if an trigger is currently active */
if (ioc->diag_trigger_active) { if (ioc->diag_trigger_active) {
@ -263,26 +262,26 @@ mpt3sas_trigger_event(struct MPT3SAS_ADAPTER *ioc, u16 event,
} }
found_match = 1; found_match = 1;
ioc->diag_trigger_active = 1; ioc->diag_trigger_active = 1;
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: setting diag_trigger_active flag\n", ioc_info(ioc, "%s: setting diag_trigger_active flag\n",
ioc->name, __func__)); __func__));
} }
spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags); spin_unlock_irqrestore(&ioc->diag_trigger_lock, flags);
if (!found_match) if (!found_match)
goto out; goto out;
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: setting diag_trigger_active flag\n", ioc_info(ioc, "%s: setting diag_trigger_active flag\n",
ioc->name, __func__)); __func__));
memset(&event_data, 0, sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T)); memset(&event_data, 0, sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T));
event_data.trigger_type = MPT3SAS_TRIGGER_EVENT; event_data.trigger_type = MPT3SAS_TRIGGER_EVENT;
event_data.u.event.EventValue = event; event_data.u.event.EventValue = event;
event_data.u.event.LogEntryQualifier = log_entry_qualifier; event_data.u.event.LogEntryQualifier = log_entry_qualifier;
mpt3sas_send_trigger_data_event(ioc, &event_data); mpt3sas_send_trigger_data_event(ioc, &event_data);
out: out:
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: exit\n", ioc->name, dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: exit\n",
__func__)); __func__));
} }
/** /**
@ -319,9 +318,9 @@ mpt3sas_trigger_scsi(struct MPT3SAS_ADAPTER *ioc, u8 sense_key, u8 asc,
return; return;
} }
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: enter - sense_key = 0x%02x, asc = 0x%02x, ascq = 0x%02x\n", ioc_info(ioc, "%s: enter - sense_key = 0x%02x, asc = 0x%02x, ascq = 0x%02x\n",
ioc->name, __func__, sense_key, asc, ascq)); __func__, sense_key, asc, ascq));
/* don't send trigger if an trigger is currently active */ /* don't send trigger if an trigger is currently active */
if (ioc->diag_trigger_active) { if (ioc->diag_trigger_active) {
@ -347,9 +346,9 @@ mpt3sas_trigger_scsi(struct MPT3SAS_ADAPTER *ioc, u8 sense_key, u8 asc,
if (!found_match) if (!found_match)
goto out; goto out;
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: setting diag_trigger_active flag\n", ioc_info(ioc, "%s: setting diag_trigger_active flag\n",
ioc->name, __func__)); __func__));
memset(&event_data, 0, sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T)); memset(&event_data, 0, sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T));
event_data.trigger_type = MPT3SAS_TRIGGER_SCSI; event_data.trigger_type = MPT3SAS_TRIGGER_SCSI;
event_data.u.scsi.SenseKey = sense_key; event_data.u.scsi.SenseKey = sense_key;
@ -357,8 +356,8 @@ mpt3sas_trigger_scsi(struct MPT3SAS_ADAPTER *ioc, u8 sense_key, u8 asc,
event_data.u.scsi.ASCQ = ascq; event_data.u.scsi.ASCQ = ascq;
mpt3sas_send_trigger_data_event(ioc, &event_data); mpt3sas_send_trigger_data_event(ioc, &event_data);
out: out:
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: exit\n", ioc->name, dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: exit\n",
__func__)); __func__));
} }
/** /**
@ -393,9 +392,9 @@ mpt3sas_trigger_mpi(struct MPT3SAS_ADAPTER *ioc, u16 ioc_status, u32 loginfo)
return; return;
} }
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: enter - ioc_status = 0x%04x, loginfo = 0x%08x\n", ioc_info(ioc, "%s: enter - ioc_status = 0x%04x, loginfo = 0x%08x\n",
ioc->name, __func__, ioc_status, loginfo)); __func__, ioc_status, loginfo));
/* don't send trigger if an trigger is currently active */ /* don't send trigger if an trigger is currently active */
if (ioc->diag_trigger_active) { if (ioc->diag_trigger_active) {
@ -420,15 +419,15 @@ mpt3sas_trigger_mpi(struct MPT3SAS_ADAPTER *ioc, u16 ioc_status, u32 loginfo)
if (!found_match) if (!found_match)
goto out; goto out;
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT dTriggerDiagPrintk(ioc,
"%s: setting diag_trigger_active flag\n", ioc_info(ioc, "%s: setting diag_trigger_active flag\n",
ioc->name, __func__)); __func__));
memset(&event_data, 0, sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T)); memset(&event_data, 0, sizeof(struct SL_WH_TRIGGERS_EVENT_DATA_T));
event_data.trigger_type = MPT3SAS_TRIGGER_MPI; event_data.trigger_type = MPT3SAS_TRIGGER_MPI;
event_data.u.mpi.IOCStatus = ioc_status; event_data.u.mpi.IOCStatus = ioc_status;
event_data.u.mpi.IocLogInfo = loginfo; event_data.u.mpi.IocLogInfo = loginfo;
mpt3sas_send_trigger_data_event(ioc, &event_data); mpt3sas_send_trigger_data_event(ioc, &event_data);
out: out:
dTriggerDiagPrintk(ioc, pr_info(MPT3SAS_FMT "%s: exit\n", ioc->name, dTriggerDiagPrintk(ioc, ioc_info(ioc, "%s: exit\n",
__func__)); __func__));
} }

View File

@ -127,20 +127,17 @@ mpt3sas_init_warpdrive_properties(struct MPT3SAS_ADAPTER *ioc,
return; return;
if (ioc->mfg_pg10_hide_flag == MFG_PAGE10_EXPOSE_ALL_DISKS) { if (ioc->mfg_pg10_hide_flag == MFG_PAGE10_EXPOSE_ALL_DISKS) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled globally as drives are exposed\n");
"globally as drives are exposed\n", ioc->name);
return; return;
} }
if (mpt3sas_get_num_volumes(ioc) > 1) { if (mpt3sas_get_num_volumes(ioc) > 1) {
_warpdrive_disable_ddio(ioc); _warpdrive_disable_ddio(ioc);
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled globally as number of drives > 1\n");
"globally as number of drives > 1\n", ioc->name);
return; return;
} }
if ((mpt3sas_config_get_number_pds(ioc, raid_device->handle, if ((mpt3sas_config_get_number_pds(ioc, raid_device->handle,
&num_pds)) || !num_pds) { &num_pds)) || !num_pds) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled Failure in computing number of drives\n");
"Failure in computing number of drives\n", ioc->name);
return; return;
} }
@ -148,15 +145,13 @@ mpt3sas_init_warpdrive_properties(struct MPT3SAS_ADAPTER *ioc,
sizeof(Mpi2RaidVol0PhysDisk_t)); sizeof(Mpi2RaidVol0PhysDisk_t));
vol_pg0 = kzalloc(sz, GFP_KERNEL); vol_pg0 = kzalloc(sz, GFP_KERNEL);
if (!vol_pg0) { if (!vol_pg0) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled Memory allocation failure for RVPG0\n");
"Memory allocation failure for RVPG0\n", ioc->name);
return; return;
} }
if ((mpt3sas_config_get_raid_volume_pg0(ioc, &mpi_reply, vol_pg0, if ((mpt3sas_config_get_raid_volume_pg0(ioc, &mpi_reply, vol_pg0,
MPI2_RAID_VOLUME_PGAD_FORM_HANDLE, raid_device->handle, sz))) { MPI2_RAID_VOLUME_PGAD_FORM_HANDLE, raid_device->handle, sz))) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled Failure in retrieving RVPG0\n");
"Failure in retrieving RVPG0\n", ioc->name);
kfree(vol_pg0); kfree(vol_pg0);
return; return;
} }
@ -166,10 +161,8 @@ mpt3sas_init_warpdrive_properties(struct MPT3SAS_ADAPTER *ioc,
* assumed for WARPDRIVE, disable direct I/O * assumed for WARPDRIVE, disable direct I/O
*/ */
if (num_pds > MPT_MAX_WARPDRIVE_PDS) { if (num_pds > MPT_MAX_WARPDRIVE_PDS) {
pr_warn(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_warn(ioc, "WarpDrive : Direct IO is disabled for the drive with handle(0x%04x): num_mem=%d, max_mem_allowed=%d\n",
"for the drive with handle(0x%04x): num_mem=%d, " raid_device->handle, num_pds, MPT_MAX_WARPDRIVE_PDS);
"max_mem_allowed=%d\n", ioc->name, raid_device->handle,
num_pds, MPT_MAX_WARPDRIVE_PDS);
kfree(vol_pg0); kfree(vol_pg0);
return; return;
} }
@ -179,22 +172,18 @@ mpt3sas_init_warpdrive_properties(struct MPT3SAS_ADAPTER *ioc,
vol_pg0->PhysDisk[count].PhysDiskNum) || vol_pg0->PhysDisk[count].PhysDiskNum) ||
le16_to_cpu(pd_pg0.DevHandle) == le16_to_cpu(pd_pg0.DevHandle) ==
MPT3SAS_INVALID_DEVICE_HANDLE) { MPT3SAS_INVALID_DEVICE_HANDLE) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is " ioc_info(ioc, "WarpDrive : Direct IO is disabled for the drive with handle(0x%04x) member handle retrieval failed for member number=%d\n",
"disabled for the drive with handle(0x%04x) member" raid_device->handle,
"handle retrieval failed for member number=%d\n", vol_pg0->PhysDisk[count].PhysDiskNum);
ioc->name, raid_device->handle,
vol_pg0->PhysDisk[count].PhysDiskNum);
goto out_error; goto out_error;
} }
/* Disable direct I/O if member drive lba exceeds 4 bytes */ /* Disable direct I/O if member drive lba exceeds 4 bytes */
dev_max_lba = le64_to_cpu(pd_pg0.DeviceMaxLBA); dev_max_lba = le64_to_cpu(pd_pg0.DeviceMaxLBA);
if (dev_max_lba >> 32) { if (dev_max_lba >> 32) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is " ioc_info(ioc, "WarpDrive : Direct IO is disabled for the drive with handle(0x%04x) member handle (0x%04x) unsupported max lba 0x%016llx\n",
"disabled for the drive with handle(0x%04x) member" raid_device->handle,
" handle (0x%04x) unsupported max lba 0x%016llx\n", le16_to_cpu(pd_pg0.DevHandle),
ioc->name, raid_device->handle, (u64)dev_max_lba);
le16_to_cpu(pd_pg0.DevHandle),
(unsigned long long)dev_max_lba);
goto out_error; goto out_error;
} }
@ -206,41 +195,36 @@ mpt3sas_init_warpdrive_properties(struct MPT3SAS_ADAPTER *ioc,
* not RAID0 * not RAID0
*/ */
if (raid_device->volume_type != MPI2_RAID_VOL_TYPE_RAID0) { if (raid_device->volume_type != MPI2_RAID_VOL_TYPE_RAID0) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled for the drive with handle(0x%04x): type=%d, s_sz=%uK, blk_size=%u\n",
"for the drive with handle(0x%04x): type=%d, " raid_device->handle, raid_device->volume_type,
"s_sz=%uK, blk_size=%u\n", ioc->name, (le32_to_cpu(vol_pg0->StripeSize) *
raid_device->handle, raid_device->volume_type, le16_to_cpu(vol_pg0->BlockSize)) / 1024,
(le32_to_cpu(vol_pg0->StripeSize) * le16_to_cpu(vol_pg0->BlockSize));
le16_to_cpu(vol_pg0->BlockSize)) / 1024,
le16_to_cpu(vol_pg0->BlockSize));
goto out_error; goto out_error;
} }
stripe_sz = le32_to_cpu(vol_pg0->StripeSize); stripe_sz = le32_to_cpu(vol_pg0->StripeSize);
stripe_exp = find_first_bit(&stripe_sz, 32); stripe_exp = find_first_bit(&stripe_sz, 32);
if (stripe_exp == 32) { if (stripe_exp == 32) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled for the drive with handle(0x%04x) invalid stripe sz %uK\n",
"for the drive with handle(0x%04x) invalid stripe sz %uK\n", raid_device->handle,
ioc->name, raid_device->handle, (le32_to_cpu(vol_pg0->StripeSize) *
(le32_to_cpu(vol_pg0->StripeSize) * le16_to_cpu(vol_pg0->BlockSize)) / 1024);
le16_to_cpu(vol_pg0->BlockSize)) / 1024);
goto out_error; goto out_error;
} }
raid_device->stripe_exponent = stripe_exp; raid_device->stripe_exponent = stripe_exp;
block_sz = le16_to_cpu(vol_pg0->BlockSize); block_sz = le16_to_cpu(vol_pg0->BlockSize);
block_exp = find_first_bit(&block_sz, 16); block_exp = find_first_bit(&block_sz, 16);
if (block_exp == 16) { if (block_exp == 16) {
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is disabled " ioc_info(ioc, "WarpDrive : Direct IO is disabled for the drive with handle(0x%04x) invalid block sz %u\n",
"for the drive with handle(0x%04x) invalid block sz %u\n", raid_device->handle, le16_to_cpu(vol_pg0->BlockSize));
ioc->name, raid_device->handle,
le16_to_cpu(vol_pg0->BlockSize));
goto out_error; goto out_error;
} }
raid_device->block_exponent = block_exp; raid_device->block_exponent = block_exp;
raid_device->direct_io_enabled = 1; raid_device->direct_io_enabled = 1;
pr_info(MPT3SAS_FMT "WarpDrive : Direct IO is Enabled for the drive" ioc_info(ioc, "WarpDrive : Direct IO is Enabled for the drive with handle(0x%04x)\n",
" with handle(0x%04x)\n", ioc->name, raid_device->handle); raid_device->handle);
/* /*
* WARPDRIVE: Though the following fields are not used for direct IO, * WARPDRIVE: Though the following fields are not used for direct IO,
* stored for future purpose: * stored for future purpose: