megaraid_sas: add support for secure JBOD
This patch adds support for Secure Encrypting Drives (SED) in JBOD mode: 1) If the firmware supports SED JBOD, all non read/write commands to JBODs will be sent via firmware path, and read/write commands to JBODs will be sent via fastpath. 2) If the firmware does not support SED JBOD, driver will fall back to the old design, i.e. send all JBOD I/O via fastpath. Signed-off-by: Sumit Saxena <sumit.saxena@avagotech.com> Signed-off-by: Chaitra Basappa <chaitra.basappa@avagotech.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
Tento commit je obsažen v:

odevzdal
Christoph Hellwig

rodič
200aed582d
revize
7497cde883
@@ -969,7 +969,20 @@ struct megasas_ctrl_info {
|
||||
|
||||
struct {
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
u32 reserved:25;
|
||||
u32 reserved:12;
|
||||
u32 discardCacheDuringLDDelete:1;
|
||||
u32 supportSecurityonJBOD:1;
|
||||
u32 supportCacheBypassModes:1;
|
||||
u32 supportDisableSESMonitoring:1;
|
||||
u32 supportForceFlash:1;
|
||||
u32 supportNVDRAM:1;
|
||||
u32 supportDrvActivityLEDSetting:1;
|
||||
u32 supportAllowedOpsforDrvRemoval:1;
|
||||
u32 supportHOQRebuild:1;
|
||||
u32 supportForceTo512e:1;
|
||||
u32 supportNVCacheErase:1;
|
||||
u32 supportDebugQueue:1;
|
||||
u32 supportSwZone:1;
|
||||
u32 supportCrashDump:1;
|
||||
u32 supportMaxExtLDs:1;
|
||||
u32 supportT10RebuildAssist:1;
|
||||
@@ -981,9 +994,22 @@ struct megasas_ctrl_info {
|
||||
u32 supportThermalPollInterval:1;
|
||||
u32 supportDisableImmediateIO:1;
|
||||
u32 supportT10RebuildAssist:1;
|
||||
u32 supportMaxExtLDs:1;
|
||||
u32 supportCrashDump:1;
|
||||
u32 reserved:25;
|
||||
u32 supportMaxExtLDs:1;
|
||||
u32 supportCrashDump:1;
|
||||
u32 supportSwZone:1;
|
||||
u32 supportDebugQueue:1;
|
||||
u32 supportNVCacheErase:1;
|
||||
u32 supportForceTo512e:1;
|
||||
u32 supportHOQRebuild:1;
|
||||
u32 supportAllowedOpsforDrvRemoval:1;
|
||||
u32 supportDrvActivityLEDSetting:1;
|
||||
u32 supportNVDRAM:1;
|
||||
u32 supportForceFlash:1;
|
||||
u32 supportDisableSESMonitoring:1;
|
||||
u32 supportCacheBypassModes:1;
|
||||
u32 supportSecurityonJBOD:1;
|
||||
u32 discardCacheDuringLDDelete:1;
|
||||
u32 reserved:12;
|
||||
#endif
|
||||
} adapterOperations3;
|
||||
|
||||
@@ -1022,6 +1048,13 @@ enum MR_MFI_MPT_PTHR_FLAGS {
|
||||
MFI_MPT_ATTACHED = 2,
|
||||
};
|
||||
|
||||
enum MR_SCSI_CMD_TYPE {
|
||||
READ_WRITE_LDIO = 0,
|
||||
NON_READ_WRITE_LDIO = 1,
|
||||
READ_WRITE_SYSPDIO = 2,
|
||||
NON_READ_WRITE_SYSPDIO = 3,
|
||||
};
|
||||
|
||||
/* Frame Type */
|
||||
#define IO_FRAME 0
|
||||
#define PTHRU_FRAME 1
|
||||
@@ -1194,19 +1227,23 @@ union megasas_sgl_frame {
|
||||
typedef union _MFI_CAPABILITIES {
|
||||
struct {
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
u32 reserved:27;
|
||||
u32 reserved:25;
|
||||
u32 security_protocol_cmds_fw:1;
|
||||
u32 support_core_affinity:1;
|
||||
u32 support_ndrive_r1_lb:1;
|
||||
u32 support_max_255lds:1;
|
||||
u32 reserved1:1;
|
||||
u32 support_fastpath_wb:1;
|
||||
u32 support_additional_msix:1;
|
||||
u32 support_fp_remote_lun:1;
|
||||
#else
|
||||
u32 support_fp_remote_lun:1;
|
||||
u32 support_additional_msix:1;
|
||||
u32 reserved1:1;
|
||||
u32 support_fastpath_wb:1;
|
||||
u32 support_max_255lds:1;
|
||||
u32 support_ndrive_r1_lb:1;
|
||||
u32 reserved:27;
|
||||
u32 support_core_affinity:1;
|
||||
u32 security_protocol_cmds_fw:1;
|
||||
u32 reserved:25;
|
||||
#endif
|
||||
} mfi_capabilities;
|
||||
u32 reg;
|
||||
@@ -1638,13 +1675,14 @@ struct megasas_instance {
|
||||
u32 crash_dump_fw_support;
|
||||
u32 crash_dump_drv_support;
|
||||
u32 crash_dump_app_support;
|
||||
u32 secure_jbod_support;
|
||||
spinlock_t crashdump_lock;
|
||||
|
||||
struct megasas_register_set __iomem *reg_set;
|
||||
u32 *reply_post_host_index_addr[MR_MAX_MSIX_REG_ARRAY];
|
||||
struct megasas_pd_list pd_list[MEGASAS_MAX_PD];
|
||||
struct megasas_pd_list local_pd_list[MEGASAS_MAX_PD];
|
||||
u8 ld_ids[MEGASAS_MAX_LD_IDS];
|
||||
u8 ld_ids[MEGASAS_MAX_LD_IDS];
|
||||
s8 init_id;
|
||||
|
||||
u16 max_num_sge;
|
||||
@@ -1946,5 +1984,6 @@ void __megasas_return_cmd(struct megasas_instance *instance,
|
||||
|
||||
void megasas_return_mfi_mpt_pthr(struct megasas_instance *instance,
|
||||
struct megasas_cmd *cmd_mfi, struct megasas_cmd_fusion *cmd_fusion);
|
||||
int megasas_cmd_type(struct scsi_cmnd *cmd);
|
||||
|
||||
#endif /*LSI_MEGARAID_SAS_H */
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele