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