kernel: Move to Linux v5.3.6-openpower1

This adds a backported patch to fix a driver crash:

 scsi: lpfc: Fix oops when fewer hdwqs than cpus

PowerPC related changes:

 libnvdimm/altmap: Track namespace boundaries in altmap
 powerpc/mm: Fixup tlbie vs mtpidr/mtlpidr ordering issue on POWER9
 powerpc/mm: Fix an Oops in kasan_mmu_init()
 powerpc/mm: Add a helper to select PAGE_KERNEL_RO or PAGE_READONLY
 powerpc/book3s64/radix: Rename CPU_FTR_P9_TLBIE_BUG feature flag
 powerpc/book3s64/mm: Don't do tlbie fixup for some hardware revisions
 powerpc/kasan: Fix shadow area set up for modules.
 powerpc/kasan: Fix parallel loading of modules.
 powerpc/powernv/ioda: Fix race in TCE level allocation
 powerpc/powernv: Restrict OPAL symbol map to only be readable by root
 powerpc/mce: Schedule work from irq_work
 powerpc/mce: Fix MCE handling for huge pages
 powerpc/xive: Implement get_irqchip_state method for XIVE to fix shutdown race

Signed-off-by: Joel Stanley <joel@jms.id.au>
diff --git a/openpower/configs/barreleye_defconfig b/openpower/configs/barreleye_defconfig
index a0bfd64..05b64ea 100644
--- a/openpower/configs/barreleye_defconfig
+++ b/openpower/configs/barreleye_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firenze_defconfig b/openpower/configs/firenze_defconfig
index 2df8f08..8ef7aa2 100644
--- a/openpower/configs/firenze_defconfig
+++ b/openpower/configs/firenze_defconfig
@@ -14,7 +14,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/firestone_defconfig b/openpower/configs/firestone_defconfig
index fcda456..c9ae480 100644
--- a/openpower/configs/firestone_defconfig
+++ b/openpower/configs/firestone_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/garrison_defconfig b/openpower/configs/garrison_defconfig
index b070220..fa2d205 100644
--- a/openpower/configs/garrison_defconfig
+++ b/openpower/configs/garrison_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/habanero_defconfig b/openpower/configs/habanero_defconfig
index 651d753..6687ceb 100644
--- a/openpower/configs/habanero_defconfig
+++ b/openpower/configs/habanero_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/mihawk_defconfig b/openpower/configs/mihawk_defconfig
index 41242c6..f0817fb 100644
--- a/openpower/configs/mihawk_defconfig
+++ b/openpower/configs/mihawk_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/nicole_defconfig b/openpower/configs/nicole_defconfig
index 9312451..66a051c 100644
--- a/openpower/configs/nicole_defconfig
+++ b/openpower/configs/nicole_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/opal_defconfig b/openpower/configs/opal_defconfig
index 83c5362..b299af6 100644
--- a/openpower/configs/opal_defconfig
+++ b/openpower/configs/opal_defconfig
@@ -12,7 +12,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/p8dtu_defconfig b/openpower/configs/p8dtu_defconfig
index 13bbb7d..012f3ec 100644
--- a/openpower/configs/p8dtu_defconfig
+++ b/openpower/configs/p8dtu_defconfig
@@ -17,7 +17,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/p9dsu_defconfig b/openpower/configs/p9dsu_defconfig
index 5a3c5fe..05a85f6 100644
--- a/openpower/configs/p9dsu_defconfig
+++ b/openpower/configs/p9dsu_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/palmetto_defconfig b/openpower/configs/palmetto_defconfig
index f7ec045..a1ffba6 100644
--- a/openpower/configs/palmetto_defconfig
+++ b/openpower/configs/palmetto_defconfig
@@ -14,7 +14,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/pseries_defconfig b/openpower/configs/pseries_defconfig
index 4db3c79..3ea1b80 100644
--- a/openpower/configs/pseries_defconfig
+++ b/openpower/configs/pseries_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/pseries_skiroot_defconfig"
diff --git a/openpower/configs/romulus_defconfig b/openpower/configs/romulus_defconfig
index 4f4d5af..4d893b8 100644
--- a/openpower/configs/romulus_defconfig
+++ b/openpower/configs/romulus_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/vesnin_defconfig b/openpower/configs/vesnin_defconfig
index c29221a..6189599 100644
--- a/openpower/configs/vesnin_defconfig
+++ b/openpower/configs/vesnin_defconfig
@@ -15,7 +15,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/witherspoon_defconfig b/openpower/configs/witherspoon_defconfig
index b25aef1..416a612 100644
--- a/openpower/configs/witherspoon_defconfig
+++ b/openpower/configs/witherspoon_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/zaius_defconfig b/openpower/configs/zaius_defconfig
index 1e85a53..3e73d73 100644
--- a/openpower/configs/zaius_defconfig
+++ b/openpower/configs/zaius_defconfig
@@ -16,7 +16,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/configs/zz_defconfig b/openpower/configs/zz_defconfig
index bb04c1c..a99071d 100644
--- a/openpower/configs/zz_defconfig
+++ b/openpower/configs/zz_defconfig
@@ -14,7 +14,7 @@
 BR2_ROOTFS_POST_BUILD_SCRIPT="../openpower/scripts/fixup-target-var ../openpower/scripts/firmware-whitelist"
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_VERSION=y
-BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.5"
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.3.6"
 BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_OP_BUILD_PATH)/linux"
 BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y
 BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_OP_BUILD_PATH)/configs/linux/skiroot_defconfig"
diff --git a/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch b/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch
index 5acedcf..b8ae1e1 100644
--- a/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch
+++ b/openpower/linux/0001-xhci-Reset-controller-on-xhci-shutdown.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Brian King <brking@linux.vnet.ibm.com>
 Date: Wed, 25 Oct 2017 10:42:59 +1100
-Subject: [PATCH 1/6] xhci: Reset controller on xhci shutdown
+Subject: [PATCH 1/7] xhci: Reset controller on xhci shutdown
 
 Fixes kexec boot. Without a hard reset, some USB chips will fail to
 initialize in a kexec booted kernel.
diff --git a/openpower/linux/0002-powerpc-opal-add-MPIPL-interface-definitions.patch b/openpower/linux/0002-powerpc-opal-add-MPIPL-interface-definitions.patch
index 0815c22..4b40909 100644
--- a/openpower/linux/0002-powerpc-opal-add-MPIPL-interface-definitions.patch
+++ b/openpower/linux/0002-powerpc-opal-add-MPIPL-interface-definitions.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Hari Bathini <hbathini@linux.ibm.com>
 Date: Wed, 9 Oct 2019 10:45:19 +0530
-Subject: [PATCH 2/6] powerpc/opal: add MPIPL interface definitions
+Subject: [PATCH 2/7] powerpc/opal: add MPIPL interface definitions
 
 MPIPL is Memory Preserving IPL supported from POWER9. This enables the
 kernel to reset the system with memory 'preserved'. Also, it supports
diff --git a/openpower/linux/0003-powerpc-fadump-improve-how-crashed-kernel-s-memory-i.patch b/openpower/linux/0003-powerpc-fadump-improve-how-crashed-kernel-s-memory-i.patch
index 2633b24..752730e 100644
--- a/openpower/linux/0003-powerpc-fadump-improve-how-crashed-kernel-s-memory-i.patch
+++ b/openpower/linux/0003-powerpc-fadump-improve-how-crashed-kernel-s-memory-i.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Hari Bathini <hbathini@linux.ibm.com>
 Date: Wed, 9 Oct 2019 10:45:26 +0530
-Subject: [PATCH 3/6] powerpc/fadump: improve how crashed kernel's memory is
+Subject: [PATCH 3/7] powerpc/fadump: improve how crashed kernel's memory is
  reserved
 
 The size parameter to fadump_reserve_crash_area() function is not needed
diff --git a/openpower/linux/0004-powerpc-fadump-add-support-to-preserve-crash-data-on.patch b/openpower/linux/0004-powerpc-fadump-add-support-to-preserve-crash-data-on.patch
index 539843d..5ec6134 100644
--- a/openpower/linux/0004-powerpc-fadump-add-support-to-preserve-crash-data-on.patch
+++ b/openpower/linux/0004-powerpc-fadump-add-support-to-preserve-crash-data-on.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Hari Bathini <hbathini@linux.ibm.com>
 Date: Wed, 9 Oct 2019 10:45:34 +0530
-Subject: [PATCH 4/6] powerpc/fadump: add support to preserve crash data on
+Subject: [PATCH 4/7] powerpc/fadump: add support to preserve crash data on
  FADUMP disabled kernel
 
 Add a new kernel config option, CONFIG_PRESERVE_FA_DUMP that ensures
diff --git a/openpower/linux/0005-powerpc-configs-add-FADump-support-in-petitboot-kern.patch b/openpower/linux/0005-powerpc-configs-add-FADump-support-in-petitboot-kern.patch
index 45e4965..5223dd3 100644
--- a/openpower/linux/0005-powerpc-configs-add-FADump-support-in-petitboot-kern.patch
+++ b/openpower/linux/0005-powerpc-configs-add-FADump-support-in-petitboot-kern.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Hari Bathini <hbathini@linux.ibm.com>
 Date: Wed, 9 Oct 2019 10:45:41 +0530
-Subject: [PATCH 5/6] powerpc/configs: add FADump support in petitboot kernel
+Subject: [PATCH 5/7] powerpc/configs: add FADump support in petitboot kernel
 
 FADump is supported on PowerNV platform. To fulfill this support, the
 petitboot kernel must be FADump aware. Enable config PRESERVE_FA_DUMP
diff --git a/openpower/linux/0006-scsi-lpfc-Fix-oops-when-fewer-hdwqs-than-cpus.patch b/openpower/linux/0006-scsi-lpfc-Fix-oops-when-fewer-hdwqs-than-cpus.patch
new file mode 100644
index 0000000..bfda19d
--- /dev/null
+++ b/openpower/linux/0006-scsi-lpfc-Fix-oops-when-fewer-hdwqs-than-cpus.patch
@@ -0,0 +1,239 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: James Smart <jsmart2021@gmail.com>
+Date: Wed, 14 Aug 2019 16:56:43 -0700
+Subject: [PATCH 6/7] scsi: lpfc: Fix oops when fewer hdwqs than cpus
+
+When tearing down the adapter for a reset, online/offline, or driver
+unload, the queue free routine would hit a GPF oops.  This only occurs on
+conditions where the number of hardware queues created is fewer than the
+number of cpus in the system. In this condition cpus share a hardware
+queue. And of course, it's the 2nd cpu that shares a hardware that
+attempted to free it a second time and hit the oops.
+
+Fix by reworking the cpu to hardware queue mapping such that:
+Assignment of hardware queues to cpus occur in two passes:
+first pass: is first time assignment of a hardware queue to a cpu.
+  This will set the LPFC_CPU_FIRST_IRQ flag for the cpu.
+second pass: for cpus that did not get a hardware queue they will
+  be assigned one from a primary cpu (one set in first pass).
+
+Deletion of hardware queues is driven by cpu itteration, and queues
+will only be deleted if the LPFC_CPU_FIRST_IRQ flag is set.
+
+Also contains a few small cleanup fixes and a little better logging.
+
+Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com>
+Signed-off-by: James Smart <jsmart2021@gmail.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+(cherry picked from commit 3ad348d94452d6ab3aa0316105fb9f34f8ed3140)
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ drivers/scsi/lpfc/lpfc_init.c | 144 +++++++++++++++++++++-------------
+ 1 file changed, 89 insertions(+), 55 deletions(-)
+
+diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
+index 1ac98becb5ba..a5b515fdda2e 100644
+--- a/drivers/scsi/lpfc/lpfc_init.c
++++ b/drivers/scsi/lpfc/lpfc_init.c
+@@ -8864,7 +8864,7 @@ lpfc_sli4_queue_create(struct lpfc_hba *phba)
+ 		}
+ 		qdesc->qe_valid = 1;
+ 		qdesc->hdwq = cpup->hdwq;
+-		qdesc->chann = cpu; /* First CPU this EQ is affinitised to */
++		qdesc->chann = cpu; /* First CPU this EQ is affinitized to */
+ 		qdesc->last_cpu = qdesc->chann;
+ 
+ 		/* Save the allocated EQ in the Hardware Queue */
+@@ -10711,7 +10711,7 @@ lpfc_find_hyper(struct lpfc_hba *phba, int cpu,
+ static void
+ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
+ {
+-	int i, cpu, idx, new_cpu, start_cpu, first_cpu;
++	int i, cpu, idx, next_idx, new_cpu, start_cpu, first_cpu;
+ 	int max_phys_id, min_phys_id;
+ 	int max_core_id, min_core_id;
+ 	struct lpfc_vector_map_info *cpup;
+@@ -10753,8 +10753,8 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
+ #endif
+ 
+ 		lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
+-				"3328 CPU physid %d coreid %d\n",
+-				cpup->phys_id, cpup->core_id);
++				"3328 CPU %d physid %d coreid %d flag x%x\n",
++				cpu, cpup->phys_id, cpup->core_id, cpup->flag);
+ 
+ 		if (cpup->phys_id > max_phys_id)
+ 			max_phys_id = cpup->phys_id;
+@@ -10812,17 +10812,17 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
+ 			cpup->eq = idx;
+ 			cpup->irq = pci_irq_vector(phba->pcidev, idx);
+ 
+-			lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
+-					"3336 Set Affinity: CPU %d "
+-					"irq %d eq %d\n",
+-					cpu, cpup->irq, cpup->eq);
+-
+ 			/* If this is the first CPU thats assigned to this
+ 			 * vector, set LPFC_CPU_FIRST_IRQ.
+ 			 */
+ 			if (!i)
+ 				cpup->flag |= LPFC_CPU_FIRST_IRQ;
+ 			i++;
++
++			lpfc_printf_log(phba, KERN_INFO, LOG_INIT,
++					"3336 Set Affinity: CPU %d "
++					"irq %d eq %d flag x%x\n",
++					cpu, cpup->irq, cpup->eq, cpup->flag);
+ 		}
+ 	}
+ 
+@@ -10936,69 +10936,103 @@ lpfc_cpu_affinity_check(struct lpfc_hba *phba, int vectors)
+ 		}
+ 	}
+ 
++	/* Assign hdwq indices that are unique across all cpus in the map
++	 * that are also FIRST_CPUs.
++	 */
++	idx = 0;
++	for_each_present_cpu(cpu) {
++		cpup = &phba->sli4_hba.cpu_map[cpu];
++
++		/* Only FIRST IRQs get a hdwq index assignment. */
++		if (!(cpup->flag & LPFC_CPU_FIRST_IRQ))
++			continue;
++
++		/* 1 to 1, the first LPFC_CPU_FIRST_IRQ cpus to a unique hdwq */
++		cpup->hdwq = idx;
++		idx++;
++		lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
++				"3333 Set Affinity: CPU %d (phys %d core %d): "
++				"hdwq %d eq %d irq %d flg x%x\n",
++				cpu, cpup->phys_id, cpup->core_id,
++				cpup->hdwq, cpup->eq, cpup->irq, cpup->flag);
++	}
+ 	/* Finally we need to associate a hdwq with each cpu_map entry
+ 	 * This will be 1 to 1 - hdwq to cpu, unless there are less
+ 	 * hardware queues then CPUs. For that case we will just round-robin
+ 	 * the available hardware queues as they get assigned to CPUs.
++	 * The next_idx is the idx from the FIRST_CPU loop above to account
++	 * for irq_chann < hdwq.  The idx is used for round-robin assignments
++	 * and needs to start at 0.
+ 	 */
+-	idx = 0;
++	next_idx = idx;
+ 	start_cpu = 0;
++	idx = 0;
+ 	for_each_present_cpu(cpu) {
+ 		cpup = &phba->sli4_hba.cpu_map[cpu];
+-		if (idx >=  phba->cfg_hdw_queue) {
+-			/* We need to reuse a Hardware Queue for another CPU,
+-			 * so be smart about it and pick one that has its
+-			 * IRQ/EQ mapped to the same phys_id (CPU package).
+-			 * and core_id.
+-			 */
+-			new_cpu = start_cpu;
+-			for (i = 0; i < phba->sli4_hba.num_present_cpu; i++) {
+-				new_cpup = &phba->sli4_hba.cpu_map[new_cpu];
+-				if ((new_cpup->hdwq != LPFC_VECTOR_MAP_EMPTY) &&
+-				    (new_cpup->phys_id == cpup->phys_id) &&
+-				    (new_cpup->core_id == cpup->core_id))
+-					goto found_hdwq;
+-				new_cpu = cpumask_next(
+-					new_cpu, cpu_present_mask);
+-				if (new_cpu == nr_cpumask_bits)
+-					new_cpu = first_cpu;
+-			}
+ 
+-			/* If we can't match both phys_id and core_id,
+-			 * settle for just a phys_id match.
+-			 */
+-			new_cpu = start_cpu;
+-			for (i = 0; i < phba->sli4_hba.num_present_cpu; i++) {
+-				new_cpup = &phba->sli4_hba.cpu_map[new_cpu];
+-				if ((new_cpup->hdwq != LPFC_VECTOR_MAP_EMPTY) &&
+-				    (new_cpup->phys_id == cpup->phys_id))
+-					goto found_hdwq;
+-				new_cpu = cpumask_next(
+-					new_cpu, cpu_present_mask);
+-				if (new_cpu == nr_cpumask_bits)
+-					new_cpu = first_cpu;
++		/* FIRST cpus are already mapped. */
++		if (cpup->flag & LPFC_CPU_FIRST_IRQ)
++			continue;
++
++		/* If the cfg_irq_chann < cfg_hdw_queue, set the hdwq
++		 * of the unassigned cpus to the next idx so that all
++		 * hdw queues are fully utilized.
++		 */
++		if (next_idx < phba->cfg_hdw_queue) {
++			cpup->hdwq = next_idx;
++			next_idx++;
++			continue;
++		}
++
++		/* Not a First CPU and all hdw_queues are used.  Reuse a
++		 * Hardware Queue for another CPU, so be smart about it
++		 * and pick one that has its IRQ/EQ mapped to the same phys_id
++		 * (CPU package) and core_id.
++		 */
++		new_cpu = start_cpu;
++		for (i = 0; i < phba->sli4_hba.num_present_cpu; i++) {
++			new_cpup = &phba->sli4_hba.cpu_map[new_cpu];
++			if (new_cpup->hdwq != LPFC_VECTOR_MAP_EMPTY &&
++			    new_cpup->phys_id == cpup->phys_id &&
++			    new_cpup->core_id == cpup->core_id) {
++				goto found_hdwq;
+ 			}
++			new_cpu = cpumask_next(new_cpu, cpu_present_mask);
++			if (new_cpu == nr_cpumask_bits)
++				new_cpu = first_cpu;
++		}
+ 
+-			/* Otherwise just round robin on cfg_hdw_queue */
+-			cpup->hdwq = idx % phba->cfg_hdw_queue;
+-			goto logit;
+-found_hdwq:
+-			/* We found an available entry, copy the IRQ info */
+-			start_cpu = cpumask_next(new_cpu, cpu_present_mask);
+-			if (start_cpu == nr_cpumask_bits)
+-				start_cpu = first_cpu;
+-			cpup->hdwq = new_cpup->hdwq;
+-		} else {
+-			/* 1 to 1, CPU to hdwq */
+-			cpup->hdwq = idx;
++		/* If we can't match both phys_id and core_id,
++		 * settle for just a phys_id match.
++		 */
++		new_cpu = start_cpu;
++		for (i = 0; i < phba->sli4_hba.num_present_cpu; i++) {
++			new_cpup = &phba->sli4_hba.cpu_map[new_cpu];
++			if (new_cpup->hdwq != LPFC_VECTOR_MAP_EMPTY &&
++			    new_cpup->phys_id == cpup->phys_id)
++				goto found_hdwq;
++
++			new_cpu = cpumask_next(new_cpu, cpu_present_mask);
++			if (new_cpu == nr_cpumask_bits)
++				new_cpu = first_cpu;
+ 		}
+-logit:
++
++		/* Otherwise just round robin on cfg_hdw_queue */
++		cpup->hdwq = idx % phba->cfg_hdw_queue;
++		idx++;
++		goto logit;
++ found_hdwq:
++		/* We found an available entry, copy the IRQ info */
++		start_cpu = cpumask_next(new_cpu, cpu_present_mask);
++		if (start_cpu == nr_cpumask_bits)
++			start_cpu = first_cpu;
++		cpup->hdwq = new_cpup->hdwq;
++ logit:
+ 		lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
+ 				"3335 Set Affinity: CPU %d (phys %d core %d): "
+ 				"hdwq %d eq %d irq %d flg x%x\n",
+ 				cpu, cpup->phys_id, cpup->core_id,
+ 				cpup->hdwq, cpup->eq, cpup->irq, cpup->flag);
+-		idx++;
+ 	}
+ 
+ 	/* The cpu_map array will be used later during initialization
diff --git a/openpower/linux/0006-Release-OpenPower-kernel.patch b/openpower/linux/0007-Release-OpenPower-kernel.patch
similarity index 82%
rename from openpower/linux/0006-Release-OpenPower-kernel.patch
rename to openpower/linux/0007-Release-OpenPower-kernel.patch
index 834f35e..b6e2437 100644
--- a/openpower/linux/0006-Release-OpenPower-kernel.patch
+++ b/openpower/linux/0007-Release-OpenPower-kernel.patch
@@ -1,7 +1,7 @@
 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
 From: Joel Stanley <joel@jms.id.au>
 Date: Tue, 16 Jul 2019 11:40:02 +0930
-Subject: [PATCH 6/6] Release OpenPower kernel
+Subject: [PATCH 7/7] Release OpenPower kernel
 
 Signed-off-by: Joel Stanley <joel@jms.id.au>
 ---
@@ -9,13 +9,13 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/Makefile b/Makefile
-index bf03c110ed9b..d470bb349bc2 100644
+index d7469f0926a6..42db3c0998f2 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -2,7 +2,7 @@
  VERSION = 5
  PATCHLEVEL = 3
- SUBLEVEL = 5
+ SUBLEVEL = 6
 -EXTRAVERSION =
 +EXTRAVERSION = -openpower1
  NAME = Bobtail Squid