Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60a0c68d authored by Michael Holzheu's avatar Michael Holzheu Committed by Martin Schwidefsky
Browse files

[S390] kdump backend code



This patch provides the architecture specific part of the s390 kdump
support.

Signed-off-by: default avatarMichael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 7f0bf656
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -569,6 +569,16 @@ config KEXEC
	  current kernel, and to start another kernel.  It is like a reboot
	  but is independent of hardware/microcode support.

config CRASH_DUMP
	bool "kernel crash dumps"
	depends on 64BIT
	help
	  Generate crash dump after being started by kexec.
	  Crash dump kernels are loaded in the main kernel with kexec-tools
	  into a specially reserved region and then later executed after
	  a crash by kdump/kexec.
	  For more details see Documentation/kdump/kdump.txt

config ZFCPDUMP
	def_bool n
	prompt "zfcpdump support"
+1 −0
Original line number Diff line number Diff line
@@ -168,5 +168,6 @@ enum diag308_rc {

extern int diag308(unsigned long subcode, void *addr);
extern void diag308_reset(void);
extern void store_status(void);

#endif /* _ASM_S390_IPL_H */
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@
/* Not more than 2GB */
#define KEXEC_CONTROL_MEMORY_LIMIT (1UL<<31)

/* Maximum address we can use for the crash control pages */
#define KEXEC_CRASH_CONTROL_MEMORY_LIMIT (-1UL)

/* Allocate one page for the pdp and the second for the code */
#define KEXEC_CONTROL_PAGE_SIZE 4096

+1 −1
Original line number Diff line number Diff line
@@ -17,5 +17,5 @@ struct reset_call {

extern void register_reset_call(struct reset_call *reset);
extern void unregister_reset_call(struct reset_call *reset);
extern void s390_reset_system(void);
extern void s390_reset_system(void (*func)(void *), void *data);
#endif /* _ASM_S390_RESET_H */
+13 −0
Original line number Diff line number Diff line
@@ -26,15 +26,21 @@
#define IPL_DEVICE        (*(unsigned long *)  (0x10404))
#define INITRD_START      (*(unsigned long *)  (0x1040C))
#define INITRD_SIZE       (*(unsigned long *)  (0x10414))
#define OLDMEM_BASE	  (*(unsigned long *)  (0x1041C))
#define OLDMEM_SIZE	  (*(unsigned long *)  (0x10424))
#else /* __s390x__ */
#define IPL_DEVICE        (*(unsigned long *)  (0x10400))
#define INITRD_START      (*(unsigned long *)  (0x10408))
#define INITRD_SIZE       (*(unsigned long *)  (0x10410))
#define OLDMEM_BASE	  (*(unsigned long *)  (0x10418))
#define OLDMEM_SIZE	  (*(unsigned long *)  (0x10420))
#endif /* __s390x__ */
#define COMMAND_LINE      ((char *)            (0x10480))

#define CHUNK_READ_WRITE 0
#define CHUNK_READ_ONLY  1
#define CHUNK_OLDMEM	 4
#define CHUNK_CRASHK	 5

struct mem_chunk {
	unsigned long addr;
@@ -48,6 +54,8 @@ extern int memory_end_set;
extern unsigned long memory_end;

void detect_memory_layout(struct mem_chunk chunk[]);
void create_mem_hole(struct mem_chunk memory_chunk[], unsigned long addr,
		     unsigned long size, int type);

#define PRIMARY_SPACE_MODE	0
#define ACCESS_REGISTER_MODE	1
@@ -106,6 +114,7 @@ extern unsigned int user_mode;
#endif /* __s390x__ */

#define ZFCPDUMP_HSA_SIZE	(32UL<<20)
#define ZFCPDUMP_HSA_SIZE_MAX	(64UL<<20)

/*
 * Console mode. Override with conmode=
@@ -134,10 +143,14 @@ extern char kernel_nss_name[];
#define IPL_DEVICE        0x10404
#define INITRD_START      0x1040C
#define INITRD_SIZE       0x10414
#define OLDMEM_BASE	  0x1041C
#define OLDMEM_SIZE	  0x10424
#else /* __s390x__ */
#define IPL_DEVICE        0x10400
#define INITRD_START      0x10408
#define INITRD_SIZE       0x10410
#define OLDMEM_BASE	  0x10418
#define OLDMEM_SIZE	  0x10420
#endif /* __s390x__ */
#define COMMAND_LINE      0x10480

Loading