|
@@ -215,6 +215,10 @@ megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd)
|
|
|
|
|
|
cmd->scmd = NULL;
|
|
|
cmd->frame_count = 0;
|
|
|
+ if ((instance->pdev->device != PCI_DEVICE_ID_LSI_FUSION) &&
|
|
|
+ (instance->pdev->device != PCI_DEVICE_ID_LSI_INVADER) &&
|
|
|
+ (reset_devices))
|
|
|
+ cmd->frame->hdr.cmd = MFI_CMD_INVALID;
|
|
|
list_add_tail(&cmd->list, &instance->cmd_pool);
|
|
|
|
|
|
spin_unlock_irqrestore(&instance->cmd_pool_lock, flags);
|
|
@@ -2165,7 +2169,16 @@ megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd,
|
|
|
cmd->scmd->SCp.ptr = NULL;
|
|
|
|
|
|
switch (hdr->cmd) {
|
|
|
-
|
|
|
+ case MFI_CMD_INVALID:
|
|
|
+ /* Some older 1068 controller FW may keep a pended
|
|
|
+ MR_DCMD_CTRL_EVENT_GET_INFO left over from the main kernel
|
|
|
+ when booting the kdump kernel. Ignore this command to
|
|
|
+ prevent a kernel panic on shutdown of the kdump kernel. */
|
|
|
+ printk(KERN_WARNING "megaraid_sas: MFI_CMD_INVALID command "
|
|
|
+ "completed.\n");
|
|
|
+ printk(KERN_WARNING "megaraid_sas: If you have a controller "
|
|
|
+ "other than PERC5, please upgrade your firmware.\n");
|
|
|
+ break;
|
|
|
case MFI_CMD_PD_SCSI_IO:
|
|
|
case MFI_CMD_LD_SCSI_IO:
|
|
|
|
|
@@ -2934,6 +2947,10 @@ static int megasas_create_frame_pool(struct megasas_instance *instance)
|
|
|
memset(cmd->frame, 0, total_sz);
|
|
|
cmd->frame->io.context = cmd->index;
|
|
|
cmd->frame->io.pad_0 = 0;
|
|
|
+ if ((instance->pdev->device != PCI_DEVICE_ID_LSI_FUSION) &&
|
|
|
+ (instance->pdev->device != PCI_DEVICE_ID_LSI_INVADER) &&
|
|
|
+ (reset_devices))
|
|
|
+ cmd->frame->hdr.cmd = MFI_CMD_INVALID;
|
|
|
}
|
|
|
|
|
|
return 0;
|