Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / drivers / scsi / mpt2sas / mpt2sas_base.c
index 3346357..efa0255 100644 (file)
@@ -522,7 +522,8 @@ _base_display_event_data(struct MPT2SAS_ADAPTER *ioc,
                desc = "Device Status Change";
                break;
        case MPI2_EVENT_IR_OPERATION_STATUS:
-               desc = "IR Operation Status";
+               if (!ioc->hide_ir_msg)
+                       desc = "IR Operation Status";
                break;
        case MPI2_EVENT_SAS_DISCOVERY:
        {
@@ -553,16 +554,20 @@ _base_display_event_data(struct MPT2SAS_ADAPTER *ioc,
                desc = "SAS Enclosure Device Status Change";
                break;
        case MPI2_EVENT_IR_VOLUME:
-               desc = "IR Volume";
+               if (!ioc->hide_ir_msg)
+                       desc = "IR Volume";
                break;
        case MPI2_EVENT_IR_PHYSICAL_DISK:
-               desc = "IR Physical Disk";
+               if (!ioc->hide_ir_msg)
+                       desc = "IR Physical Disk";
                break;
        case MPI2_EVENT_IR_CONFIGURATION_CHANGE_LIST:
-               desc = "IR Configuration Change List";
+               if (!ioc->hide_ir_msg)
+                       desc = "IR Configuration Change List";
                break;
        case MPI2_EVENT_LOG_ENTRY_ADDED:
-               desc = "Log Entry Added";
+               if (!ioc->hide_ir_msg)
+                       desc = "Log Entry Added";
                break;
        }
 
@@ -616,7 +621,10 @@ _base_sas_log_info(struct MPT2SAS_ADAPTER *ioc , u32 log_info)
                originator_str = "PL";
                break;
        case 2:
-               originator_str = "IR";
+               if (!ioc->hide_ir_msg)
+                       originator_str = "IR";
+               else
+                       originator_str = "WarpDrive";
                break;
        }
 
@@ -1508,6 +1516,7 @@ mpt2sas_base_free_smid(struct MPT2SAS_ADAPTER *ioc, u16 smid)
                }
                ioc->scsi_lookup[i].cb_idx = 0xFF;
                ioc->scsi_lookup[i].scmd = NULL;
+               ioc->scsi_lookup[i].direct_io = 0;
                list_add_tail(&ioc->scsi_lookup[i].tracker_list,
                    &ioc->free_list);
                spin_unlock_irqrestore(&ioc->scsi_lookup_lock, flags);
@@ -1844,10 +1853,12 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc)
        printk("), ");
        printk("Capabilities=(");
 
-       if (ioc->facts.IOCCapabilities &
-           MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID) {
-               printk("Raid");
-               i++;
+       if (!ioc->hide_ir_msg) {
+               if (ioc->facts.IOCCapabilities &
+                   MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID) {
+                       printk("Raid");
+                       i++;
+               }
        }
 
        if (ioc->facts.IOCCapabilities & MPI2_IOCFACTS_CAPABILITY_TLR) {
@@ -3680,6 +3691,7 @@ _base_make_ioc_operational(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
        u32 reply_address;
        u16 smid;
        struct _tr_list *delayed_tr, *delayed_tr_next;
+       u8 hide_flag;
 
        dinitprintk(ioc, printk(MPT2SAS_INFO_FMT "%s\n", ioc->name,
            __func__));
@@ -3706,6 +3718,7 @@ _base_make_ioc_operational(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
                ioc->scsi_lookup[i].cb_idx = 0xFF;
                ioc->scsi_lookup[i].smid = smid;
                ioc->scsi_lookup[i].scmd = NULL;
+               ioc->scsi_lookup[i].direct_io = 0;
                list_add_tail(&ioc->scsi_lookup[i].tracker_list,
                    &ioc->free_list);
        }
@@ -3766,6 +3779,15 @@ _base_make_ioc_operational(struct MPT2SAS_ADAPTER *ioc, int sleep_flag)
        if (sleep_flag == CAN_SLEEP)
                _base_static_config_pages(ioc);
 
+       if (ioc->wait_for_port_enable_to_complete && ioc->is_warpdrive) {
+               if (ioc->manu_pg10.OEMIdentifier  == 0x80) {
+                       hide_flag = (u8) (ioc->manu_pg10.OEMSpecificFlags0 &
+                           MFG_PAGE10_HIDE_SSDS_MASK);
+                       if (hide_flag != MFG_PAGE10_HIDE_SSDS_MASK)
+                               ioc->mfg_pg10_hide_flag = hide_flag;
+               }
+       }
+
        if (ioc->wait_for_port_enable_to_complete) {
                if (diag_buffer_enable != 0)
                        mpt2sas_enable_diag_buffer(ioc, diag_buffer_enable);