SCSI fixes for 4.11-rc3
Subsystems (4)
James Bottomley
maintainerNine small fixes: the biggest is probably finally sorting out Kconfig issues with lpfc nvme. There are some performance fixes for megaraid and hpsa and a static checker fix.
The patch is available here:
git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi.git scsi-fixes
The short changelog is:
Don Brace (3):
scsi: hpsa: do not timeout reset operations
scsi: hpsa: limit outstanding rescans
scsi: hpsa: update check for logical volume status
James Smart (1):
scsi: lpfc: Finalize Kconfig options for nvme
Shivasharan S (4):
scsi: megaraid_sas: Driver version upgrade
scsi: megaraid_sas: raid6 also require cpuSel check same as raid5
scsi: megaraid_sas: add correct return type check for ldio hint logic for raid1
scsi: megaraid_sas: enable intx only if msix request fails
Tomas Winkler (1):
scsi: ufs: don't check unsigned type for a negative value
And the diffstat:
drivers/scsi/Kconfig | 14 -------- drivers/scsi/hpsa.c | 53 +++++++++++++++++------------ drivers/scsi/hpsa.h | 1 + drivers/scsi/hpsa_cmd.h | 2 ++ drivers/scsi/lpfc/lpfc_attr.c | 4 +-- drivers/scsi/lpfc/lpfc_init.c | 7 ++++ drivers/scsi/lpfc/lpfc_nvme.c | 8 ++--- drivers/scsi/lpfc/lpfc_nvmet.c | 8 ++--- drivers/scsi/megaraid/megaraid_sas.h | 4 +-- drivers/scsi/megaraid/megaraid_sas_base.c | 17 ++++++--- drivers/scsi/megaraid/megaraid_sas_fusion.c | 4 +-- drivers/scsi/ufs/ufshcd.c | 2 +- 12 files changed, 69 insertions(+), 55 deletions(-)
James
---
drivers/scsi/Kconfig +0 -14
@@ -1253,20 +1253,6 @@ config SCSI_LPFC_DEBUG_FS This makes debugging information from the lpfc driver available via the debugfs filesystem. -config LPFC_NVME_INITIATOR - bool "Emulex LightPulse Fibre Channel NVME Initiator Support" - depends on SCSI_LPFC && NVME_FC - ---help--- - This enables NVME Initiator support in the Emulex lpfc driver. - -config LPFC_NVME_TARGET - bool "Emulex LightPulse Fibre Channel NVME Initiator Support" - depends on SCSI_LPFC && NVME_TARGET_FC - ---help--- - This enables NVME Target support in the Emulex lpfc driver. - Target enablement must still be enabled on a per adapter - basis by module parameters. - config SCSI_SIM710 tristate "Simple 53c710 SCSI support (Compaq, NCR machines)" depends on (EISA || MCA) && SCSI
drivers/scsi/hpsa.c +32 -21
142 lines not on this page · raw message
drivers/scsi/hpsa.h +1 -0
@@ -201,6 +201,7 @@ struct ctlr_info {dma_addr_t errinfo_pool_dhandle;unsigned long *cmd_pool_bits;int scan_finished; + u8 scan_waiting : 1;spinlock_t scan_lock;wait_queue_head_t scan_wait_queue;
drivers/scsi/hpsa_cmd.h +2 -0
@@ -156,6 +156,7 @@#define CFGTBL_BusType_Fibre2G 0x00000200l/* VPD Inquiry types */ +#define HPSA_INQUIRY_FAILED 0x02#define HPSA_VPD_SUPPORTED_PAGES 0x00#define HPSA_VPD_LV_DEVICE_ID 0x83#define HPSA_VPD_LV_DEVICE_GEOMETRY 0xC1
@@ -166,6 +167,7 @@/* Logical volume states */ #define HPSA_VPD_LV_STATUS_UNSUPPORTED 0xff#define HPSA_LV_OK 0x0 +#define HPSA_LV_FAILED 0x01#define HPSA_LV_NOT_AVAILABLE 0x0b#define HPSA_LV_UNDERGOING_ERASE 0x0F#define HPSA_LV_UNDERGOING_RPI 0x12
drivers/scsi/lpfc/lpfc_attr.c +2 -2
@@ -3315,9 +3315,9 @@ LPFC_ATTR_R(nvmet_mrq_post, LPFC_DEF_MRQ_POST,* lpfc_enable_fc4_type: Defines what FC4 types are supported. * Supported Values: 1 - register just FCP * 3 - register both FCP and NVME -* Supported values are [1,3]. Default value is 3 +* Supported values are [1,3]. Default value is 1 */ -LPFC_ATTR_R (enable_fc4_type,LPFC_ENABLE_BOTH , +LPFC_ATTR_R (enable_fc4_type,LPFC_ENABLE_FCP ,LPFC_ENABLE_FCP ,LPFC_ENABLE_BOTH ,"Define fc4 type to register with fabric." );
drivers/scsi/lpfc/lpfc_init.c +7 -0
@@ -5891,10 +5891,17 @@ lpfc_sli4_driver_resource_setup(struct lpfc_hba *phba)/* Check to see if it matches any module parameter */ for (i =0 ; i < lpfc_enable_nvmet_cnt; i++) {if (wwn == lpfc_enable_nvmet[i]) { +#if (IS_ENABLED (CONFIG_NVME_TARGET_FC ))lpfc_printf_log (phba,KERN_ERR ,LOG_INIT ,"6017 NVME Target %016llx\n" , wwn); phba->nvmet_support =1 ;/* a match */ +#else +lpfc_printf_log (phba,KERN_ERR ,LOG_INIT , +"6021 Can't enable NVME Target." +" NVME_TARGET_FC infrastructure" +" is not in kernel\n" ); +#endif } } }
drivers/scsi/lpfc/lpfc_nvme.c +4 -4
@@ -2149,7 +2149,7 @@ lpfc_nvme_create_localport(struct lpfc_vport *vport)/* localport is allocated from the stack, but the registration * call allocates heap memory as well as the private area. */ -#ifdef CONFIG_LPFC_NVME_INITIATOR +#if (IS_ENABLED (CONFIG_NVME_FC )) ret =nvme_fc_register_localport (&nfcp_info, &lpfc_nvme_template, &vport->phba->pcidev->dev, &localport);#else
@@ -2190,7 +2190,7 @@ lpfc_nvme_create_localport(struct lpfc_vport *vport)void lpfc_nvme_destroy_localport (struct lpfc_vport *vport) { -#ifdef CONFIG_LPFC_NVME_INITIATOR +#if (IS_ENABLED (CONFIG_NVME_FC ))struct nvme_fc_local_port *localport;struct lpfc_nvme_lport *lport;struct lpfc_nvme_rport *rport =NULL , *rport_next =NULL ;
@@ -2274,7 +2274,7 @@ lpfc_nvme_update_localport(struct lpfc_vport *vport)int lpfc_nvme_register_port (struct lpfc_vport *vport,struct lpfc_nodelist *ndlp) { -#ifdef CONFIG_LPFC_NVME_INITIATOR +#if (IS_ENABLED (CONFIG_NVME_FC ))int ret =0 ;struct nvme_fc_local_port *localport;struct lpfc_nvme_lport *lport;
@@ -2403,7 +2403,7 @@ lpfc_nvme_register_port(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp)void lpfc_nvme_unregister_port (struct lpfc_vport *vport,struct lpfc_nodelist *ndlp) { -#ifdef CONFIG_LPFC_NVME_INITIATOR +#if (IS_ENABLED (CONFIG_NVME_FC ))int ret;struct nvme_fc_local_port *localport;struct lpfc_nvme_lport *lport;
drivers/scsi/lpfc/lpfc_nvmet.c +4 -4
@@ -671,7 +671,7 @@ lpfc_nvmet_create_targetport(struct lpfc_hba *phba) lpfc_tgttemplate.target_features =NVMET_FCTGTFEAT_READDATA_RSP |NVMET_FCTGTFEAT_NEEDS_CMD_CPUSCHED ; -#ifdef CONFIG_LPFC_NVME_TARGET +#if (IS_ENABLED (CONFIG_NVME_TARGET_FC )) error =nvmet_fc_register_targetport (&pinfo, &lpfc_tgttemplate, &phba->pcidev->dev, &phba->targetport);
@@ -756,7 +756,7 @@ lpfc_sli4_nvmet_xri_aborted(struct lpfc_hba *phba,void lpfc_nvmet_destroy_targetport (struct lpfc_hba *phba) { -#ifdef CONFIG_LPFC_NVME_TARGET +#if (IS_ENABLED (CONFIG_NVME_TARGET_FC ))struct lpfc_nvmet_tgtport *tgtp;if (phba->nvmet_support ==0 )
@@ -788,7 +788,7 @@ static void lpfc_nvmet_unsol_ls_buffer(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, struct hbq_dmabuf *nvmebuf) { -#ifdef CONFIG_LPFC_NVME_TARGET +#if (IS_ENABLED(CONFIG_NVME_TARGET_FC)) struct lpfc_nvmet_tgtport *tgtp;struct fc_frame_header *fc_hdr;struct lpfc_nvmet_rcv_ctx *ctxp;
@@ -891,7 +891,7 @@ lpfc_nvmet_unsol_fcp_buffer(struct lpfc_hba *phba,struct rqb_dmabuf *nvmebuf, uint64_t isr_timestamp) { -#ifdef CONFIG_LPFC_NVME_TARGET +#if (IS_ENABLED(CONFIG_NVME_TARGET_FC)) struct lpfc_nvmet_rcv_ctx *ctxp;struct lpfc_nvmet_tgtport *tgtp;struct fc_frame_header *fc_hdr;
drivers/scsi/megaraid/megaraid_sas.h +2 -2
@@ -35,8 +35,8 @@/* * MegaRAID SAS Driver meta data */ -#define MEGASAS_VERSION "07.701.16.00-rc1" -#define MEGASAS_RELDATE "February 2, 2017" +#define MEGASAS_VERSION "07.701.17.00-rc1" +#define MEGASAS_RELDATE "March 2, 2017"/* * Device IDs
drivers/scsi/megaraid/megaraid_sas_base.c +12 -5
@@ -1963,6 +1963,9 @@ static int megasas_slave_alloc(struct scsi_device *sdev)if (!mr_device_priv_data)return -ENOMEM ; sdev->hostdata = mr_device_priv_data; + +atomic_set (&mr_device_priv_data->r1_ldio_hint, + instance->r1_ldio_hint_default);return 0 ; }
@@ -5034,10 +5037,12 @@ megasas_setup_irqs_msix(struct megasas_instance *instance, u8 is_probe) &instance->irq_context[j]);/* Retry irq register for IO_APIC*/ instance->msix_vectors =0 ; -if (is_probe) +if (is_probe) { +pci_free_irq_vectors (instance->pdev);return megasas_setup_irqs_ioapic (instance); -else + }else {return -1 ; + } } }return 0 ;
@@ -5277,9 +5282,11 @@ static int megasas_init_fw(struct megasas_instance *instance) MPI2_REPLY_POST_HOST_INDEX_OFFSET); } - i =pci_alloc_irq_vectors (instance->pdev,1 ,1 ,PCI_IRQ_LEGACY ); -if (i <0 ) - goto fail_setup_irqs; +if (!instance->msix_vectors) { + i =pci_alloc_irq_vectors (instance->pdev,1 ,1 ,PCI_IRQ_LEGACY ); +if (i <0 ) + goto fail_setup_irqs; + }dev_info (&instance->pdev->dev,"firmware supports msix\t: (%d)" , fw_msix_count);
drivers/scsi/megaraid/megaraid_sas_fusion.c +2 -2
@@ -2159,7 +2159,7 @@ megasas_set_raidflag_cpu_affinity(union RAID_CONTEXT_UNION *praid_context, cpu_sel =MR_RAID_CTX_CPUSEL_1 ;if (is_stream_detected (rctx_g35) && - (raid->level ==5 ) && + ((raid->level ==5 ) || (raid->level ==6 )) && (raid->writeMode ==MR_RL_WRITE_THROUGH_MODE ) && (cpu_sel ==MR_RAID_CTX_CPUSEL_FCFS )) cpu_sel =MR_RAID_CTX_CPUSEL_0 ;
@@ -2338,7 +2338,7 @@ megasas_build_ldio_fusion(struct megasas_instance *instance, fp_possible = false;atomic_dec (&instance->fw_outstanding); }else if ((scsi_buff_len >MR_LARGE_IO_MIN_SIZE ) || -atomic_dec_if_positive (&mrdev_priv->r1_ldio_hint)) { + (atomic_dec_if_positive (&mrdev_priv->r1_ldio_hint) >0 )) { fp_possible = false;atomic_dec (&instance->fw_outstanding);if (scsi_buff_len >MR_LARGE_IO_MIN_SIZE )
drivers/scsi/ufs/ufshcd.c +1 -1
@@ -7642,7 +7642,7 @@ static inline ssize_t ufshcd_pm_lvl_store(struct device *dev,if (kstrtoul (buf,0 , &value))return -EINVAL ; -if ((value <UFS_PM_LVL_0 ) || (value >=UFS_PM_LVL_MAX )) +if (value >=UFS_PM_LVL_MAX )return -EINVAL ;spin_lock_irqsave (hba->host->host_lock, flags);
Quoted 2 lines · James Bottomley
Nine small fixes: the biggest is probably finally sorting out
Kconfigissues with lpfc nvme.
I'm sorry to disappoint you but there's another fix from Arnd from today
here: https://lkml.org/lkml/2017/3/21/308
Byte,
Johannes
Signature · 6 lines
Johannes Thumshirn Storage [email protected] +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850