powerpc/fadump: move internal macros/definitions to a new header
authorHari Bathini <hbathini@linux.ibm.com>
Wed, 11 Sep 2019 14:46:21 +0000 (20:16 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 13 Sep 2019 14:04:41 +0000 (00:04 +1000)
Though asm/fadump.h is meant to be used by other components dealing
with FADump, it also has macros/definitions internal to FADump code.
Move them to a new header file used within FADump code. This also
makes way for refactoring platform specific FADump code.

Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/156821313134.5656.6597770626574392140.stgit@hbathini.in.ibm.com
arch/powerpc/include/asm/fadump-internal.h [new file with mode: 0644]
arch/powerpc/include/asm/fadump.h
arch/powerpc/kernel/fadump.c

diff --git a/arch/powerpc/include/asm/fadump-internal.h b/arch/powerpc/include/asm/fadump-internal.h
new file mode 100644 (file)
index 0000000..071f377
--- /dev/null
@@ -0,0 +1,86 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Firmware-Assisted Dump internal code.
+ *
+ * Copyright 2011, Mahesh Salgaonkar, IBM Corporation.
+ * Copyright 2019, Hari Bathini, IBM Corporation.
+ */
+
+#ifndef _ASM_POWERPC_FADUMP_INTERNAL_H
+#define _ASM_POWERPC_FADUMP_INTERNAL_H
+
+/*
+ * The RMA region will be saved for later dumping when kernel crashes.
+ * RMA is Real Mode Area, the first block of logical memory address owned
+ * by logical partition, containing the storage that may be accessed with
+ * translate off.
+ */
+#define RMA_START      0x0
+#define RMA_END                (ppc64_rma_size)
+
+/*
+ * On some Power systems where RMO is 128MB, it still requires minimum of
+ * 256MB for kernel to boot successfully. When kdump infrastructure is
+ * configured to save vmcore over network, we run into OOM issue while
+ * loading modules related to network setup. Hence we need additional 64M
+ * of memory to avoid OOM issue.
+ */
+#define MIN_BOOT_MEM   (((RMA_END < (0x1UL << 28)) ? (0x1UL << 28) : RMA_END) \
+                       + (0x1UL << 26))
+
+/* The upper limit percentage for user specified boot memory size (25%) */
+#define MAX_BOOT_MEM_RATIO                     4
+
+#define memblock_num_regions(memblock_type)    (memblock.memblock_type.cnt)
+
+/* Alignment per CMA requirement. */
+#define FADUMP_CMA_ALIGNMENT   (PAGE_SIZE <<                           \
+                                max_t(unsigned long, MAX_ORDER - 1,    \
+                                pageblock_order))
+
+/* FAD commands */
+#define FADUMP_REGISTER                        1
+#define FADUMP_UNREGISTER              2
+#define FADUMP_INVALIDATE              3
+
+#define FADUMP_CRASH_INFO_MAGIC                str_to_u64("FADMPINF")
+
+/* fadump crash info structure */
+struct fadump_crash_info_header {
+       u64             magic_number;
+       u64             elfcorehdr_addr;
+       u32             crashing_cpu;
+       struct pt_regs  regs;
+       struct cpumask  online_mask;
+};
+
+struct fad_crash_memory_ranges {
+       unsigned long long      base;
+       unsigned long long      size;
+};
+
+/* Firmware-assisted dump configuration details. */
+struct fw_dump {
+       unsigned long   reserve_dump_area_start;
+       unsigned long   reserve_dump_area_size;
+       /* cmd line option during boot */
+       unsigned long   reserve_bootvar;
+
+       unsigned long   cpu_state_data_size;
+       unsigned long   hpte_region_size;
+       unsigned long   boot_memory_size;
+
+       unsigned long   fadumphdr_addr;
+       unsigned long   cpu_notes_buf;
+       unsigned long   cpu_notes_buf_size;
+
+       int             ibm_configure_kernel_dump;
+
+       unsigned long   fadump_enabled:1;
+       unsigned long   fadump_supported:1;
+       unsigned long   dump_active:1;
+       unsigned long   dump_registered:1;
+       unsigned long   nocma:1;
+};
+
+#endif /* _ASM_POWERPC_FADUMP_INTERNAL_H */
index 17d9b6a..7517949 100644 (file)
 
 #ifdef CONFIG_FA_DUMP
 
-/*
- * The RMA region will be saved for later dumping when kernel crashes.
- * RMA is Real Mode Area, the first block of logical memory address owned
- * by logical partition, containing the storage that may be accessed with
- * translate off.
- */
-#define RMA_START      0x0
-#define RMA_END                (ppc64_rma_size)
-
-/*
- * On some Power systems where RMO is 128MB, it still requires minimum of
- * 256MB for kernel to boot successfully. When kdump infrastructure is
- * configured to save vmcore over network, we run into OOM issue while
- * loading modules related to network setup. Hence we need aditional 64M
- * of memory to avoid OOM issue.
- */
-#define MIN_BOOT_MEM   (((RMA_END < (0x1UL << 28)) ? (0x1UL << 28) : RMA_END) \
-                       + (0x1UL << 26))
-
-/* The upper limit percentage for user specified boot memory size (25%) */
-#define MAX_BOOT_MEM_RATIO                     4
-
-#define memblock_num_regions(memblock_type)    (memblock.memblock_type.cnt)
-
-/* Alignement per CMA requirement. */
-#define FADUMP_CMA_ALIGNMENT   (PAGE_SIZE <<                           \
-                       max_t(unsigned long, MAX_ORDER - 1, pageblock_order))
-
 /* Firmware provided dump sections */
 #define FADUMP_CPU_STATE_DATA  0x0001
 #define FADUMP_HPTE_REGION     0x0002
 /* Dump request flag */
 #define FADUMP_REQUEST_FLAG    0x00000001
 
-/* FAD commands */
-#define FADUMP_REGISTER                1
-#define FADUMP_UNREGISTER      2
-#define FADUMP_INVALIDATE      3
-
 /* Dump status flag */
 #define FADUMP_ERROR_FLAG      0x2000
 
@@ -112,29 +79,6 @@ struct fadump_mem_struct {
        struct fadump_section           rmr_region;
 };
 
-/* Firmware-assisted dump configuration details. */
-struct fw_dump {
-       unsigned long   cpu_state_data_size;
-       unsigned long   hpte_region_size;
-       unsigned long   boot_memory_size;
-       unsigned long   reserve_dump_area_start;
-       unsigned long   reserve_dump_area_size;
-       /* cmd line option during boot */
-       unsigned long   reserve_bootvar;
-
-       unsigned long   fadumphdr_addr;
-       unsigned long   cpu_notes_buf;
-       unsigned long   cpu_notes_buf_size;
-
-       int             ibm_configure_kernel_dump;
-
-       unsigned long   fadump_enabled:1;
-       unsigned long   fadump_supported:1;
-       unsigned long   dump_active:1;
-       unsigned long   dump_registered:1;
-       unsigned long   nocma:1;
-};
-
 /*
  * Copy the ascii values for first 8 characters from a string into u64
  * variable at their respective indexes.
@@ -153,7 +97,6 @@ static inline u64 str_to_u64(const char *str)
 #define STR_TO_HEX(x)  str_to_u64(x)
 #define REG_ID(x)      str_to_u64(x)
 
-#define FADUMP_CRASH_INFO_MAGIC                STR_TO_HEX("FADMPINF")
 #define REGSAVE_AREA_MAGIC             STR_TO_HEX("REGSAVE")
 
 /* The firmware-assisted dump format.
@@ -178,20 +121,6 @@ struct fadump_reg_entry {
        __be64          reg_value;
 };
 
-/* fadump crash info structure */
-struct fadump_crash_info_header {
-       u64             magic_number;
-       u64             elfcorehdr_addr;
-       u32             crashing_cpu;
-       struct pt_regs  regs;
-       struct cpumask  online_mask;
-};
-
-struct fad_crash_memory_ranges {
-       unsigned long long      base;
-       unsigned long long      size;
-};
-
 extern int is_fadump_memory_area(u64 addr, ulong size);
 extern int early_init_dt_scan_fw_dump(unsigned long node,
                const char *uname, int depth, void *data);
index 4eab972..7c55044 100644 (file)
@@ -30,6 +30,7 @@
 #include <asm/prom.h>
 #include <asm/rtas.h>
 #include <asm/fadump.h>
+#include <asm/fadump-internal.h>
 #include <asm/setup.h>
 
 static struct fw_dump fw_dump;