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/0002-powerpc-opal-add-MPIPL-interface-definitions.patch b/openpower/linux/0002-powerpc-opal-add-MPIPL-interface-definitions.patch
new file mode 100644
index 0000000..0815c22
--- /dev/null
+++ b/openpower/linux/0002-powerpc-opal-add-MPIPL-interface-definitions.patch
@@ -0,0 +1,125 @@
+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
+
+MPIPL is Memory Preserving IPL supported from POWER9. This enables the
+kernel to reset the system with memory 'preserved'. Also, it supports
+copying memory from a source address to some destination address during
+MPIPL boot. Add MPIPL interface definitions here to leverage these f/w
+features in adding FADump support for PowerNV platform.
+
+This is the backport of upstream commit 6f5f193e84d3 ("powerpc/opal:
+add MPIPL interface definitions").
+
+Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
+Signed-off-by: Joel Stanley <joel@jms.id.au>
+---
+ arch/powerpc/include/asm/opal-api.h        | 44 +++++++++++++++++++++-
+ arch/powerpc/include/asm/opal.h            |  5 +++
+ arch/powerpc/platforms/powernv/opal-call.c |  3 ++
+ 3 files changed, 51 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/include/asm/opal-api.h b/arch/powerpc/include/asm/opal-api.h
+index 383242eb0dea..3c39e7f7ba4c 100644
+--- a/arch/powerpc/include/asm/opal-api.h
++++ b/arch/powerpc/include/asm/opal-api.h
+@@ -208,7 +208,10 @@
+ #define OPAL_HANDLE_HMI2			166
+ #define	OPAL_NX_COPROC_INIT			167
+ #define OPAL_XIVE_GET_VP_STATE			170
+-#define OPAL_LAST				170
++#define OPAL_MPIPL_UPDATE			173
++#define OPAL_MPIPL_REGISTER_TAG			174
++#define OPAL_MPIPL_QUERY_TAG			175
++#define OPAL_LAST				175
+ 
+ #define QUIESCE_HOLD			1 /* Spin all calls at entry */
+ #define QUIESCE_REJECT			2 /* Fail all calls with OPAL_BUSY */
+@@ -1059,6 +1062,7 @@ enum {
+ 	OPAL_REBOOT_NORMAL		= 0,
+ 	OPAL_REBOOT_PLATFORM_ERROR	= 1,
+ 	OPAL_REBOOT_FULL_IPL		= 2,
++	OPAL_REBOOT_MPIPL		= 3,
+ };
+ 
+ /* Argument to OPAL_PCI_TCE_KILL */
+@@ -1135,6 +1139,44 @@ enum {
+ #define OPAL_PCI_P2P_LOAD		0x2
+ #define OPAL_PCI_P2P_STORE		0x4
+ 
++/* MPIPL update operations */
++enum opal_mpipl_ops {
++	OPAL_MPIPL_ADD_RANGE			= 0,
++	OPAL_MPIPL_REMOVE_RANGE			= 1,
++	OPAL_MPIPL_REMOVE_ALL			= 2,
++	OPAL_MPIPL_FREE_PRESERVED_MEMORY	= 3,
++};
++
++/* Tag will point to various metadata area. Kernel will
++ * use tag to get metadata value.
++ */
++enum opal_mpipl_tags {
++	OPAL_MPIPL_TAG_CPU	= 0,
++	OPAL_MPIPL_TAG_OPAL	= 1,
++	OPAL_MPIPL_TAG_KERNEL	= 2,
++	OPAL_MPIPL_TAG_BOOT_MEM	= 3,
++};
++
++/* Preserved memory details */
++struct opal_mpipl_region {
++	__be64	src;
++	__be64	dest;
++	__be64	size;
++};
++
++/* Structure version */
++#define OPAL_MPIPL_VERSION		0x01
++
++struct opal_mpipl_fadump {
++	u8	version;
++	u8	reserved[7];
++	__be32	crashing_pir;	/* OPAL crashing CPU PIR */
++	__be32	cpu_data_version;
++	__be32	cpu_data_size;
++	__be32	region_cnt;
++	struct	opal_mpipl_region region[];
++} __packed;
++
+ #endif /* __ASSEMBLY__ */
+ 
+ #endif /* __OPAL_API_H */
+diff --git a/arch/powerpc/include/asm/opal.h b/arch/powerpc/include/asm/opal.h
+index d5a0807d21db..a0cf8fba4d12 100644
+--- a/arch/powerpc/include/asm/opal.h
++++ b/arch/powerpc/include/asm/opal.h
+@@ -39,6 +39,7 @@ int64_t opal_npu_spa_clear_cache(uint64_t phb_id, uint32_t bdfn,
+ 				uint64_t PE_handle);
+ int64_t opal_npu_tl_set(uint64_t phb_id, uint32_t bdfn, long cap,
+ 			uint64_t rate_phys, uint32_t size);
++
+ int64_t opal_console_write(int64_t term_number, __be64 *length,
+ 			   const uint8_t *buffer);
+ int64_t opal_console_read(int64_t term_number, __be64 *length,
+@@ -297,6 +298,10 @@ int opal_sensor_group_clear(u32 group_hndl, int token);
+ int opal_sensor_group_enable(u32 group_hndl, int token, bool enable);
+ int opal_nx_coproc_init(uint32_t chip_id, uint32_t ct);
+ 
++s64 opal_mpipl_update(enum opal_mpipl_ops op, u64 src, u64 dest, u64 size);
++s64 opal_mpipl_register_tag(enum opal_mpipl_tags tag, u64 addr);
++s64 opal_mpipl_query_tag(enum opal_mpipl_tags tag, u64 *addr);
++
+ s64 opal_signal_system_reset(s32 cpu);
+ s64 opal_quiesce(u64 shutdown_type, s32 cpu);
+ 
+diff --git a/arch/powerpc/platforms/powernv/opal-call.c b/arch/powerpc/platforms/powernv/opal-call.c
+index dccdc9df5213..a2aa5e433ac8 100644
+--- a/arch/powerpc/platforms/powernv/opal-call.c
++++ b/arch/powerpc/platforms/powernv/opal-call.c
+@@ -287,3 +287,6 @@ OPAL_CALL(opal_pci_set_pbcq_tunnel_bar,		OPAL_PCI_SET_PBCQ_TUNNEL_BAR);
+ OPAL_CALL(opal_sensor_read_u64,			OPAL_SENSOR_READ_U64);
+ OPAL_CALL(opal_sensor_group_enable,		OPAL_SENSOR_GROUP_ENABLE);
+ OPAL_CALL(opal_nx_coproc_init,			OPAL_NX_COPROC_INIT);
++OPAL_CALL(opal_mpipl_update,			OPAL_MPIPL_UPDATE);
++OPAL_CALL(opal_mpipl_register_tag,		OPAL_MPIPL_REGISTER_TAG);
++OPAL_CALL(opal_mpipl_query_tag,			OPAL_MPIPL_QUERY_TAG);