kernel: Move to Linux v5.3.5-openpower1
This adds Firmware Assissted dump passthrough mode to the OpenPower
kernel. These patches were backported from 5.4, and the
CONFIG_PRESERVE_FA_DUMP was added.
PowerPC related changes:
powerpc: dump kernel log before carrying out fadump or kdump
powerpc/eeh: Clean up EEH PEs after recovery finishes
powerpc/64s/exception: machine check use correct cfar for late handler
powerpc/eeh: Clear stale EEH_DEV_NO_HANDLER flag
powerpc/perf: fix imc allocation failure handling
powerpc/64s/radix: Fix memory hotplug section page table creation
powerpc/futex: Fix warning: 'oldval' may be used uninitialized in this function
powerpc/ptdump: fix walk_pagetables() address mismatch
powerpc/rtas: use device model APIs and serialization during LPM
powerpc/xmon: Check for HV mode when dumping XIVE info from OPAL
powerpc/powernv/ioda2: Allocate TCE table levels on demand for default DMA window
powerpc/imc: Dont create debugfs files for cpu-less nodes
powerpc/Makefile: Always pass --synthetic to nm if supported
powerpc/xive: Fix bogus error code returned by OPAL
Signed-off-by: Joel Stanley <joel@jms.id.au>
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
new file mode 100644
index 0000000..2633b24
--- /dev/null
+++ b/openpower/linux/0003-powerpc-fadump-improve-how-crashed-kernel-s-memory-i.patch
@@ -0,0 +1,105 @@
+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
+ reserved
+
+The size parameter to fadump_reserve_crash_area() function is not needed
+as all the memory above boot memory size must be preserved anyway. Update
+the function by dropping this redundant parameter.
+
+This is the backport of upstream commit b2a815a554a3 ("powerpc/fadump:
+improve how crashed kernel's memory is reserved").
+
+Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/kernel/fadump.c | 53 ++++++++++++++++++++----------------
+ 1 file changed, 30 insertions(+), 23 deletions(-)
+
+diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
+index 4eab97292cc2..4dacce3fac72 100644
+--- a/arch/powerpc/kernel/fadump.c
++++ b/arch/powerpc/kernel/fadump.c
+@@ -33,6 +33,9 @@
+ #include <asm/setup.h>
+
+ static struct fw_dump fw_dump;
++
++static void __init fadump_reserve_crash_area(u64 base);
++
+ static struct fadump_mem_struct fdm;
+ static const struct fadump_mem_struct *fdm_active;
+ #ifdef CONFIG_CMA
+@@ -426,26 +429,6 @@ static unsigned long get_fadump_area_size(void)
+ return size;
+ }
+
+-static void __init fadump_reserve_crash_area(unsigned long base,
+- unsigned long size)
+-{
+- struct memblock_region *reg;
+- unsigned long mstart, mend, msize;
+-
+- for_each_memblock(memory, reg) {
+- mstart = max_t(unsigned long, base, reg->base);
+- mend = reg->base + reg->size;
+- mend = min(base + size, mend);
+-
+- if (mstart < mend) {
+- msize = mend - mstart;
+- memblock_reserve(mstart, msize);
+- pr_info("Reserved %ldMB of memory at %#016lx for saving crash dump\n",
+- (msize >> 20), mstart);
+- }
+- }
+-}
+-
+ int __init fadump_reserve_mem(void)
+ {
+ unsigned long base, size, memory_boundary;
+@@ -510,13 +493,13 @@ int __init fadump_reserve_mem(void)
+ #endif
+ /*
+ * If last boot has crashed then reserve all the memory
+- * above boot_memory_size so that we don't touch it until
++ * above boot memory size so that we don't touch it until
+ * dump is written to disk by userspace tool. This memory
+- * will be released for general use once the dump is saved.
++ * can be released for general use by invalidating fadump.
+ */
+ base = fw_dump.boot_memory_size;
+ size = memory_boundary - base;
+- fadump_reserve_crash_area(base, size);
++ fadump_reserve_crash_area(base);
+
+ fw_dump.fadumphdr_addr =
+ be64_to_cpu(fdm_active->rmr_region.destination_address) +
+@@ -1701,3 +1684,27 @@ int __init setup_fadump(void)
+ return 1;
+ }
+ subsys_initcall(setup_fadump);
++
++/* Preserve everything above the base address */
++static void __init fadump_reserve_crash_area(u64 base)
++{
++ struct memblock_region *reg;
++ u64 mstart, msize;
++
++ for_each_memblock(memory, reg) {
++ mstart = reg->base;
++ msize = reg->size;
++
++ if ((mstart + msize) < base)
++ continue;
++
++ if (mstart < base) {
++ msize -= (base - mstart);
++ mstart = base;
++ }
++
++ pr_info("Reserving %lluMB of memory at %#016llx for preserving crash data",
++ (msize >> 20), mstart);
++ memblock_reserve(mstart, msize);
++ }
++}