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);
++	}
++}