Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKernel Build Daemon <kbuild@suse.de>2018-05-26 07:04:22 +0200
committerKernel Build Daemon <kbuild@suse.de>2018-05-26 07:04:22 +0200
commit7806eaccbb50a91d3a0733f8156ab982ec42e3b4 (patch)
tree891f1c3f67cc476c138e35aeb086a7786b1bfcba
parent1daa82fe7a2ef3513c3148e2161c82dfea5d65ba (diff)
parente7cee223fbd0d24581a8cc099ca63373444b9669 (diff)
Merge branch 'SLE15' into SLE12-SP4
-rw-r--r--patches.drivers/lpfc-Fix-16gb-hbas-failing-cq-create.patch88
-rw-r--r--patches.drivers/lpfc-Fix-port-initialization-failure.patch75
-rw-r--r--series.conf2
3 files changed, 165 insertions, 0 deletions
diff --git a/patches.drivers/lpfc-Fix-16gb-hbas-failing-cq-create.patch b/patches.drivers/lpfc-Fix-16gb-hbas-failing-cq-create.patch
new file mode 100644
index 0000000000..d10196a02d
--- /dev/null
+++ b/patches.drivers/lpfc-Fix-16gb-hbas-failing-cq-create.patch
@@ -0,0 +1,88 @@
+From: James Smart <jsmart2021@gmail.com>
+Date: Thu, 24 May 2018 21:09:00 -0700
+Subject: [PATCH] lpfc: Fix 16gb hbas failing cq create
+References: bsc#1093290
+Patch-Mainline: submitted linux-scsi 2018/05/25
+
+The lancer G5 chip family fails the CQ create with 16k page size.
+The hardware incorrectly reports it supports large page sizes
+when it is actually limited to 4k pages.
+
+A prior patch resolved this for the A0 chip revision only.
+This patch excludes all revisions of the G5 asic from using
+large page sizes. As knowing the actual chip revision is
+unnecessary, the now unused definitions are removed
+
+Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
+Signed-off-by: James Smart <james.smart@broadcom.com>
+Acked-by: Hannes Reinecke <hare@suse.com>
+---
+ drivers/scsi/lpfc/lpfc_hw4.h | 11 -----------
+ drivers/scsi/lpfc/lpfc_init.c | 9 +--------
+ drivers/scsi/lpfc/lpfc_sli4.h | 1 -
+ 3 files changed, 1 insertion(+), 20 deletions(-)
+
+diff --git a/drivers/scsi/lpfc/lpfc_hw4.h b/drivers/scsi/lpfc/lpfc_hw4.h
+index 9df1c8da6f52..4c5b02a55289 100644
+--- a/drivers/scsi/lpfc/lpfc_hw4.h
++++ b/drivers/scsi/lpfc/lpfc_hw4.h
+@@ -104,17 +104,6 @@ struct lpfc_sli_intf {
+ #define LPFC_SLI_INTF_IF_TYPE_VIRT 1
+ };
+
+-struct lpfc_sli_asic_rev {
+- u32 word0;
+-#define LPFC_SLI_ASIC_VER_A 0x0
+-#define LPFC_SLI_ASIC_VER_B 0x1
+-#define LPFC_SLI_ASIC_VER_C 0x2
+-#define LPFC_SLI_ASIC_VER_D 0x3
+-#define lpfc_sli_asic_ver_SHIFT 4
+-#define lpfc_sli_asic_ver_MASK 0x0000000F
+-#define lpfc_sli_asic_ver_WORD word0
+-};
+-
+ #define LPFC_SLI4_MBX_EMBED true
+ #define LPFC_SLI4_MBX_NEMBED false
+
+diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
+index 87b45d36b5ca..856ad25c71dc 100644
+--- a/drivers/scsi/lpfc/lpfc_init.c
++++ b/drivers/scsi/lpfc/lpfc_init.c
+@@ -9509,11 +9509,6 @@ lpfc_sli4_pci_mem_setup(struct lpfc_hba *phba)
+ return error;
+ }
+
+- if (pci_read_config_dword(pdev, LPFC_SLI_ASIC_VER,
+- &phba->sli4_hba.sli_asic_ver.word0)) {
+- return error;
+- }
+-
+ /* There is no SLI3 failback for SLI4 devices. */
+ if (bf_get(lpfc_sli_intf_valid, &phba->sli4_hba.sli_intf) !=
+ LPFC_SLI_INTF_VALID) {
+@@ -10675,9 +10670,7 @@ lpfc_get_sli4_parameters(struct lpfc_hba *phba, LPFC_MBOXQ_t *mboxq)
+ if ((bf_get(lpfc_sli_intf_if_type, &phba->sli4_hba.sli_intf) ==
+ LPFC_SLI_INTF_IF_TYPE_2) &&
+ (bf_get(lpfc_sli_intf_sli_family, &phba->sli4_hba.sli_intf) ==
+- LPFC_SLI_INTF_FAMILY_LNCR_A0) &&
+- (bf_get(lpfc_sli_asic_ver, &phba->sli4_hba.sli_asic_ver) ==
+- LPFC_SLI_ASIC_VER_A))
++ LPFC_SLI_INTF_FAMILY_LNCR_A0))
+ exp_wqcq_pages = false;
+
+ if ((bf_get(cfg_cqpsize, mbx_sli4_parameters) & LPFC_CQ_16K_PAGE_SZ) &&
+diff --git a/drivers/scsi/lpfc/lpfc_sli4.h b/drivers/scsi/lpfc/lpfc_sli4.h
+index 179e870a00b4..cf64aca82bd0 100644
+--- a/drivers/scsi/lpfc/lpfc_sli4.h
++++ b/drivers/scsi/lpfc/lpfc_sli4.h
+@@ -592,7 +592,6 @@ struct lpfc_sli4_hba {
+ uint32_t ue_to_sr;
+ uint32_t ue_to_rp;
+ struct lpfc_register sli_intf;
+- struct lpfc_register sli_asic_ver;
+ struct lpfc_pc_sli4_params pc_sli4_params;
+ struct lpfc_bbscn_params bbscn_params;
+ struct lpfc_hba_eq_hdl *hba_eq_hdl; /* HBA per-WQ handle */
+--
+2.12.3
+
diff --git a/patches.drivers/lpfc-Fix-port-initialization-failure.patch b/patches.drivers/lpfc-Fix-port-initialization-failure.patch
new file mode 100644
index 0000000000..a86282984d
--- /dev/null
+++ b/patches.drivers/lpfc-Fix-port-initialization-failure.patch
@@ -0,0 +1,75 @@
+From: James Smart <jsmart2021@gmail.com>
+Date: Thu, 24 May 2018 21:09:01 -0700
+Subject: [PATCH] lpfc: Fix port initialization failure
+References: bsc#1093290
+Patch-Mainline: submitted linux-scsi 2018/05/25
+
+The driver exits port setup after failing the
+lpfc_sli4_get_parameters command (messages 0356, 2541, & 1412).
+
+The older CNA adapters do not support the MBX command. In the past
+the code was allowed to fail and continue on with initialization.
+However a nvme change moved a closing bracket and now makes all
+failures terminal.
+
+Revise the logic so that terminal failure only occurs if the command
+failed on the newer adapters. Additionally, if parameters are set
+that require information from the command and the command failed,
+the parameters are erroneous and port set up should fail even on
+the older adapters.
+
+Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
+Signed-off-by: James Smart <james.smart@broadcom.com>
+Acked-by: Hannes Reinecke <hare@suse.com>
+---
+ drivers/scsi/lpfc/lpfc_init.c | 21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
+index 856ad25c71dc..d8eebb539e11 100644
+--- a/drivers/scsi/lpfc/lpfc_init.c
++++ b/drivers/scsi/lpfc/lpfc_init.c
+@@ -5845,6 +5845,8 @@ lpfc_sli4_driver_resource_setup(struct lpfc_hba *phba)
+ int fof_vectors = 0;
+ int extra;
+ uint64_t wwn;
++ u32 if_type;
++ u32 if_fam;
+
+ phba->sli4_hba.num_online_cpu = num_online_cpus();
+ phba->sli4_hba.num_present_cpu = lpfc_present_cpu;
+@@ -6167,15 +6169,28 @@ lpfc_sli4_driver_resource_setup(struct lpfc_hba *phba)
+ */
+ rc = lpfc_get_sli4_parameters(phba, mboxq);
+ if (rc) {
++ if_type = bf_get(lpfc_sli_intf_if_type,
++ &phba->sli4_hba.sli_intf);
++ if_fam = bf_get(lpfc_sli_intf_sli_family,
++ &phba->sli4_hba.sli_intf);
+ if (phba->sli4_hba.extents_in_use &&
+ phba->sli4_hba.rpi_hdrs_in_use) {
+ lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
+ "2999 Unsupported SLI4 Parameters "
+ "Extents and RPI headers enabled.\n");
++ if (if_type == LPFC_SLI_INTF_IF_TYPE_0 &&
++ if_fam == LPFC_SLI_INTF_FAMILY_BE2) {
++ mempool_free(mboxq, phba->mbox_mem_pool);
++ rc = -EIO;
++ goto out_free_bsmbx;
++ }
++ }
++ if (!(if_type == LPFC_SLI_INTF_IF_TYPE_0 &&
++ if_fam == LPFC_SLI_INTF_FAMILY_BE2)) {
++ mempool_free(mboxq, phba->mbox_mem_pool);
++ rc = -EIO;
++ goto out_free_bsmbx;
+ }
+- mempool_free(mboxq, phba->mbox_mem_pool);
+- rc = -EIO;
+- goto out_free_bsmbx;
+ }
+
+ mempool_free(mboxq, phba->mbox_mem_pool);
+--
+2.12.3
+
diff --git a/series.conf b/series.conf
index bf702fe5b0..968f3d6597 100644
--- a/series.conf
+++ b/series.conf
@@ -11841,6 +11841,8 @@
patches.suse/fw_cfg-write-vmcoreinfo-details.patch
patches.drivers/qla2xxx-Enable-T10-DIF-with-FC-NVMe-enabled.patch
patches.fixes/ext4-Fix-hole-length-detection-in-ext4_ind_map_block.patch
+ patches.drivers/lpfc-Fix-16gb-hbas-failing-cq-create.patch
+ patches.drivers/lpfc-Fix-port-initialization-failure.patch
########################################################
# end of sorted patches