LoongArch: kdump: Add single kernel image implementation
authorYouling Tang <tangyouling@loongson.cn>
Sat, 25 Feb 2023 07:52:56 +0000 (15:52 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Sat, 25 Feb 2023 14:12:17 +0000 (22:12 +0800)
This feature depends on the kernel being relocatable.

Enable using single kernel image for kdump, and then no longer need to
build two kernels (production kernel and capture kernel share a single
kernel image).

Also enable CONFIG_CRASH_DUMP in loongson3_defconfig.

Signed-off-by: Youling Tang <tangyouling@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/Kconfig
arch/loongarch/Makefile
arch/loongarch/configs/loongson3_defconfig
arch/loongarch/include/asm/addrspace.h
arch/loongarch/kernel/head.S

index 2fc18a3..c6a02d2 100644 (file)
@@ -473,6 +473,7 @@ config KEXEC
 
 config CRASH_DUMP
        bool "Build kdump crash kernel"
+       select RELOCATABLE
        help
          Generate crash dump after being started by kexec. This should
          be normally only set in special crash dump kernels which are
@@ -482,17 +483,6 @@ config CRASH_DUMP
 
          For more details see Documentation/admin-guide/kdump/kdump.rst
 
-config PHYSICAL_START
-       hex "Physical address where the kernel is loaded"
-       default "0x90000000a0000000"
-       depends on CRASH_DUMP
-       help
-         This gives the XKPRANGE address where the kernel is loaded.
-         If you plan to use kernel for capturing the crash dump change
-         this value to start of the reserved region (the "X" value as
-         specified in the "crashkernel=YM@XM" command line boot parameter
-         passed to the panic-ed kernel).
-
 config RELOCATABLE
        bool "Relocatable kernel"
        help
index 7685929..f71edf5 100644 (file)
@@ -79,11 +79,7 @@ endif
 cflags-y += -ffreestanding
 cflags-y += $(call cc-option, -mno-check-zero-division)
 
-ifndef CONFIG_PHYSICAL_START
 load-y         = 0x9000000000200000
-else
-load-y         = $(CONFIG_PHYSICAL_START)
-endif
 bootvars-y     = VMLINUX_LOAD_ADDRESS=$(load-y)
 
 drivers-$(CONFIG_PCI)          += arch/loongarch/pci/
index eb84cae..e18213f 100644 (file)
@@ -48,6 +48,7 @@ CONFIG_HOTPLUG_CPU=y
 CONFIG_NR_CPUS=64
 CONFIG_NUMA=y
 CONFIG_KEXEC=y
+CONFIG_CRASH_DUMP=y
 CONFIG_SUSPEND=y
 CONFIG_HIBERNATION=y
 CONFIG_ACPI=y
index d342935..8fb699b 100644 (file)
@@ -125,4 +125,6 @@ extern unsigned long vm_map_base;
 #define ISA_IOSIZE     SZ_16K
 #define IO_SPACE_LIMIT (PCI_IOSIZE - 1)
 
+#define PHYS_LINK_KADDR        PHYSADDR(VMLINUX_LOAD_ADDRESS)
+
 #endif /* _ASM_ADDRSPACE_H */
index 1d35bec..aa64b17 100644 (file)
@@ -24,7 +24,7 @@ _head:
        .org    0x8
        .dword  kernel_entry            /* Kernel entry point */
        .dword  _end - _text            /* Kernel image effective size */
-       .quad   0                       /* Kernel image load offset from start of RAM */
+       .quad   PHYS_LINK_KADDR         /* Kernel image load offset from start of RAM */
        .org    0x38                    /* 0x20 ~ 0x37 reserved */
        .long   LINUX_PE_MAGIC
        .long   pe_header - _head       /* Offset to the PE header */