Update to kexec-tools-2.0.26
Signed-off-by: chenhaixiang <chenhaixiang3@huawei.com>
This commit is contained in:
parent
b256e16eb7
commit
435f41ae0b
@ -12,8 +12,8 @@ Signed-off-by: pengyeqing <pengyeqing@huawei.com>
|
||||
|
||||
diff --git a/makedumpfile-1.6.7/Makefile b/makedumpfile-1.6.7/Makefile
|
||||
index 612b9d0..180a64f 100644
|
||||
--- a/makedumpfile-1.7.0/Makefile
|
||||
+++ b/makedumpfile-1.7.0/Makefile
|
||||
--- a/makedumpfile-1.7.2/Makefile
|
||||
+++ b/makedumpfile-1.7.2/Makefile
|
||||
@@ -10,9 +10,10 @@ endif
|
||||
|
||||
CFLAGS_BASE := $(CFLAGS) -g -O2 -Wall -D_FILE_OFFSET_BITS=64 \
|
||||
|
||||
@ -1,65 +0,0 @@
|
||||
From 1614959f2f0d79b5f7fdc57d6aa42da1a0298153 Mon Sep 17 00:00:00 2001
|
||||
From: Pingfan Liu <piliu@redhat.com>
|
||||
Date: Fri, 10 Dec 2021 10:57:33 +0800
|
||||
Subject: [PATCH] arm64/crashdump: deduce paddr of _text based on kernel code
|
||||
size
|
||||
|
||||
kexec-tools commit 61b8c79b0fb7 ("arm64/crashdump-arm64: deduce the
|
||||
paddr of _text") tries to deduce the paddr of _text, but turns out
|
||||
partially.
|
||||
|
||||
That commit is based on "The Image must be placed text_offset bytes from
|
||||
a 2MB aligned base address anywhere in usable system RAM and called
|
||||
there" in linux/Documentation/arm64/booting.rst, plus text_offset field
|
||||
is zero.
|
||||
|
||||
But in practice, some boot loaders does not obey the convention, and
|
||||
still boots up the kernel successfully.
|
||||
|
||||
Revisiting kernel commit e2a073dde921 ("arm64: omit [_text, _stext) from
|
||||
permanent kernel mapping"), the kernel code size changes from (unsigned
|
||||
long)__init_begin - (unsigned long)_text to (unsigned long)__init_begin
|
||||
- (unsigned long)_stext
|
||||
|
||||
And it should be a better factor to decide which label starts the
|
||||
"Kernel code" in /proc/iomem.
|
||||
|
||||
Signed-off-by: Pingfan Liu <piliu@redhat.com>
|
||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||
---
|
||||
kexec/arch/arm64/crashdump-arm64.c | 14 +++++++++++---
|
||||
1 file changed, 11 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/kexec/arch/arm64/crashdump-arm64.c b/kexec/arch/arm64/crashdump-arm64.c
|
||||
index 03d6204..a02019a 100644
|
||||
--- a/kexec/arch/arm64/crashdump-arm64.c
|
||||
+++ b/kexec/arch/arm64/crashdump-arm64.c
|
||||
@@ -91,14 +91,22 @@ static int iomem_range_callback(void *UNUSED(data), int UNUSED(nr),
|
||||
return mem_regions_alloc_and_add(&system_memory_rgns,
|
||||
base, length, RANGE_RAM);
|
||||
else if (strncmp(str, KERNEL_CODE, strlen(KERNEL_CODE)) == 0) {
|
||||
+
|
||||
+ unsigned long long kva_text = get_kernel_sym("_text");
|
||||
+ unsigned long long kva_stext = get_kernel_sym("_stext");
|
||||
+ unsigned long long kva_text_end = get_kernel_sym("__init_begin");
|
||||
+
|
||||
/*
|
||||
* old: kernel_code.start = __pa_symbol(_text);
|
||||
* new: kernel_code.start = __pa_symbol(_stext);
|
||||
*
|
||||
- * By utilizing the fact that paddr(_text) should align on 2MB, plus
|
||||
- * _stext - _text <= 64K.
|
||||
+ * For compatibility, deduce by comparing the gap "__init_begin - _stext"
|
||||
+ * and the res size of "Kernel code" in /proc/iomem
|
||||
*/
|
||||
- elf_info.kern_paddr_start = base & ((0xffffffffffffffffUL) << 21);
|
||||
+ if (kva_text_end - kva_stext == length)
|
||||
+ elf_info.kern_paddr_start = base - (kva_stext - kva_text);
|
||||
+ else
|
||||
+ elf_info.kern_paddr_start = base;
|
||||
}
|
||||
else if (strncmp(str, KERNEL_DATA, strlen(KERNEL_DATA)) == 0)
|
||||
elf_info.kern_size = base + length - elf_info.kern_paddr_start;
|
||||
--
|
||||
1.8.3.1
|
||||
|
||||
@ -1,113 +0,0 @@
|
||||
From bde864387a104137ff3bd5f0871709846d5c7943 Mon Sep 17 00:00:00 2001
|
||||
From: Pingfan Liu <piliu@redhat.com>
|
||||
Date: Tue, 18 Jan 2022 15:48:10 +0800
|
||||
Subject: [PATCH] arm64/crashdump: unify routine to get page_offset
|
||||
|
||||
There are two funcs to get page_offset:
|
||||
get_kernel_page_offset()
|
||||
get_page_offset()
|
||||
|
||||
Since get_kernel_page_offset() does not observe the kernel formula, and
|
||||
remove it. Unify them in order to introduce 52-bits VA kernel more
|
||||
easily in the coming patch.
|
||||
|
||||
Signed-off-by: Pingfan Liu <piliu@redhat.com>
|
||||
Reviewed-by: Philipp Rudo <prudo@redhat.com>
|
||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||
Conflict:NA
|
||||
Reference:https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?id=bde864387a104137ff3bd5f0871709846d5c7943
|
||||
---
|
||||
kexec/arch/arm64/crashdump-arm64.c | 23 +----------------------
|
||||
kexec/arch/arm64/kexec-arm64.c | 8 ++++----
|
||||
kexec/arch/arm64/kexec-arm64.h | 1 +
|
||||
3 files changed, 6 insertions(+), 26 deletions(-)
|
||||
|
||||
diff --git a/kexec/arch/arm64/crashdump-arm64.c b/kexec/arch/arm64/crashdump-arm64.c
|
||||
index d0f2253..7beb1fb 100644
|
||||
--- a/kexec/arch/arm64/crashdump-arm64.c
|
||||
+++ b/kexec/arch/arm64/crashdump-arm64.c
|
||||
@@ -46,27 +46,6 @@ static struct crash_elf_info elf_info = {
|
||||
.machine = EM_AARCH64,
|
||||
};
|
||||
|
||||
-/*
|
||||
- * Note: The returned value is correct only if !CONFIG_RANDOMIZE_BASE.
|
||||
- */
|
||||
-static uint64_t get_kernel_page_offset(void)
|
||||
-{
|
||||
- int i;
|
||||
-
|
||||
- if (elf_info.kern_vaddr_start == UINT64_MAX)
|
||||
- return UINT64_MAX;
|
||||
-
|
||||
- /* Current max virtual memory range is 48-bits. */
|
||||
- for (i = 48; i > 0; i--)
|
||||
- if (!(elf_info.kern_vaddr_start & (1UL << i)))
|
||||
- break;
|
||||
-
|
||||
- if (i <= 0)
|
||||
- return UINT64_MAX;
|
||||
- else
|
||||
- return UINT64_MAX << i;
|
||||
-}
|
||||
-
|
||||
/*
|
||||
* iomem_range_callback() - callback called for each iomem region
|
||||
* @data: not used
|
||||
@@ -203,7 +182,7 @@ int load_crashdump_segments(struct kexec_info *info)
|
||||
if (err)
|
||||
return EFAILED;
|
||||
|
||||
- elf_info.page_offset = get_kernel_page_offset();
|
||||
+ get_page_offset(&elf_info.page_offset);
|
||||
dbgprintf("%s: page_offset: %016llx\n", __func__,
|
||||
elf_info.page_offset);
|
||||
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
|
||||
index 9dc1d8f..0f8a768 100644
|
||||
--- a/kexec/arch/arm64/kexec-arm64.c
|
||||
+++ b/kexec/arch/arm64/kexec-arm64.c
|
||||
@@ -928,7 +928,7 @@ static int get_va_bits(void)
|
||||
* get_page_offset - Helper for getting PAGE_OFFSET
|
||||
*/
|
||||
|
||||
-static int get_page_offset(void)
|
||||
+int get_page_offset(unsigned long *page_offset)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -936,8 +936,8 @@ static int get_page_offset(void)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
- page_offset = (0xffffffffffffffffUL) << (va_bits - 1);
|
||||
- dbgprintf("page_offset : %lx\n", page_offset);
|
||||
+ *page_offset = UINT64_MAX << (va_bits - 1);
|
||||
+ dbgprintf("page_offset : %lx\n", *page_offset);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -973,7 +973,7 @@ int get_phys_base_from_pt_load(long *phys_offset)
|
||||
unsigned long long phys_start;
|
||||
unsigned long long virt_start;
|
||||
|
||||
- ret = get_page_offset();
|
||||
+ ret = get_page_offset(&page_offset);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.h b/kexec/arch/arm64/kexec-arm64.h
|
||||
index bfd4172..5eb9fc0 100644
|
||||
--- a/kexec/arch/arm64/kexec-arm64.h
|
||||
+++ b/kexec/arch/arm64/kexec-arm64.h
|
||||
@@ -69,6 +69,7 @@ extern struct arm64_mem arm64_mem;
|
||||
|
||||
uint64_t get_phys_offset(void);
|
||||
uint64_t get_vp_offset(void);
|
||||
+int get_page_offset(unsigned long *offset);
|
||||
|
||||
static inline void reset_vp_offset(void)
|
||||
{
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,89 +0,0 @@
|
||||
From 95de9eccf413ece6a86ff6b5a8e47f9b16b64454 Mon Sep 17 00:00:00 2001
|
||||
From: Kairui Song <kasong@tencent.com>
|
||||
Date: Tue, 18 Jan 2022 15:48:12 +0800
|
||||
Subject: [PATCH] arm64: fix PAGE_OFFSET calc for flipped mm
|
||||
|
||||
Since kernel commit 14c127c957c1 ('arm64: mm: Flip kernel VA space'),
|
||||
the memory layout on arm64 have changed, and kexec-tools can no longer
|
||||
get the the right PAGE_OFFSET based on _text symbol.
|
||||
|
||||
Prior to that, the kimage (_text) lays above PAGE_END with this layout:
|
||||
0 -> VA_START : Usespace
|
||||
VA_START -> VA_START + 256M : BPF JIT, Modules
|
||||
VA_START + 256M -> PAGE_OFFSET - (~GB misc) : Vmalloc (KERNEL _text HERE)
|
||||
PAGE_OFFSET -> ... : * Linear map *
|
||||
|
||||
And here we have:
|
||||
VA_START = -1UL << VA_BITS
|
||||
PAGE_OFFSET = -1UL << (VA_BITS - 1)
|
||||
_text < -1UL << (VA_BITS - 1)
|
||||
|
||||
Kernel image lays somewhere between VA_START and PAGE_OFFSET, so we just
|
||||
calc VA_BITS by getting the highest unset bit of _text symbol address,
|
||||
and shift one less bit of VA_BITS to get page offset. This works as long
|
||||
as KASLR don't put kernel in a too high location (which is commented inline).
|
||||
|
||||
And after that commit, kernel layout have changed:
|
||||
0 -> PAGE_OFFSET : Userspace
|
||||
PAGE_OFFSET -> PAGE_END : * Linear map *
|
||||
PAGE_END -> PAGE_END + 128M : bpf jit region
|
||||
PAGE_END + 128M -> PAGE_END + 256MB : modules
|
||||
PAGE_END + 256M -> ... : vmalloc (KERNEL _text HERE)
|
||||
|
||||
Here we have:
|
||||
PAGE_OFFSET = -1UL << VA_BITS
|
||||
PAGE_END = -1UL << (VA_BITS - 1)
|
||||
_text > -1UL << (VA_BITS - 1)
|
||||
|
||||
Kernel image now lays above PAGE_END, so we have to shift one more bit to
|
||||
get the VA_BITS, and shift the exact VA_BITS for PAGE_OFFSET.
|
||||
|
||||
We can simply check if "_text > -1UL << (VA_BITS - 1)" is true to judge
|
||||
which layout is being used and shift the page offset occordingly.
|
||||
|
||||
Signed-off-by: Kairui Song <kasong@tencent.com>
|
||||
(rebased and stripped by Pingfan )
|
||||
Signed-off-by: Pingfan Liu <piliu@redhat.com>
|
||||
Reviewed-by: Philipp Rudo <prudo@redhat.com>
|
||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||
Conflict:NA
|
||||
Reference:https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?id=95de9eccf413ece6a86ff6b5a8e47f9b16b64454
|
||||
|
||||
---
|
||||
kexec/arch/arm64/kexec-arm64.c | 14 +++++++++++++-
|
||||
1 file changed, 13 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
|
||||
index e502be0..9dd072c 100644
|
||||
--- a/kexec/arch/arm64/kexec-arm64.c
|
||||
+++ b/kexec/arch/arm64/kexec-arm64.c
|
||||
@@ -942,13 +942,25 @@ out:
|
||||
|
||||
int get_page_offset(unsigned long *page_offset)
|
||||
{
|
||||
+ unsigned long long text_sym_addr, kernel_va_mid;
|
||||
int ret;
|
||||
|
||||
+ text_sym_addr = get_kernel_sym("_text");
|
||||
+ if (text_sym_addr == 0) {
|
||||
+ fprintf(stderr, "Can't get the symbol of _text to calculate page_offset.\n");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
ret = get_va_bits();
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
- if (va_bits < 52)
|
||||
+ /* Since kernel 5.4, kernel image is put above
|
||||
+ * UINT64_MAX << (va_bits - 1)
|
||||
+ */
|
||||
+ kernel_va_mid = UINT64_MAX << (va_bits - 1);
|
||||
+ /* older kernel */
|
||||
+ if (text_sym_addr < kernel_va_mid)
|
||||
*page_offset = UINT64_MAX << (va_bits - 1);
|
||||
else
|
||||
*page_offset = UINT64_MAX << va_bits;
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,124 +0,0 @@
|
||||
From 67ea2d99e1356352034dc9d9c7b5ec6dd6b722eb Mon Sep 17 00:00:00 2001
|
||||
From: Pingfan Liu <piliu@redhat.com>
|
||||
Date: Tue, 18 Jan 2022 15:48:09 +0800
|
||||
Subject: [PATCH] arm64: make phys_offset signed
|
||||
|
||||
After kernel commit 7bc1a0f9e176 ("arm64: mm: use single quantity to
|
||||
represent the PA to VA translation"), phys_offset can be negative if
|
||||
running 52-bits kernel on 48-bits hardware.
|
||||
|
||||
So changing phys_offset from unsigned to signed.
|
||||
|
||||
Signed-off-by: Pingfan Liu <piliu@redhat.com>
|
||||
Reviewed-by: Philipp Rudo <prudo@redhat.com>
|
||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||
Conflict:NA
|
||||
Reference:https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?id=67ea2d99e1356352034dc9d9c7b5ec6dd6b722eb
|
||||
|
||||
---
|
||||
kexec/arch/arm64/kexec-arm64.c | 12 ++++++------
|
||||
kexec/arch/arm64/kexec-arm64.h | 2 +-
|
||||
util_lib/elf_info.c | 2 +-
|
||||
util_lib/include/elf_info.h | 2 +-
|
||||
4 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
|
||||
index 44ca3db..9dc1d8f 100644
|
||||
--- a/kexec/arch/arm64/kexec-arm64.c
|
||||
+++ b/kexec/arch/arm64/kexec-arm64.c
|
||||
@@ -878,7 +878,7 @@ void add_segment(struct kexec_info *info, const void *buf, size_t bufsz,
|
||||
add_segment_phys_virt(info, buf, bufsz, base, memsz, 1);
|
||||
}
|
||||
|
||||
-static inline void set_phys_offset(uint64_t v, char *set_method)
|
||||
+static inline void set_phys_offset(int64_t v, char *set_method)
|
||||
{
|
||||
if (arm64_mem.phys_offset == arm64_mem_ngv
|
||||
|| v < arm64_mem.phys_offset) {
|
||||
@@ -947,7 +947,7 @@ static int get_page_offset(void)
|
||||
* from VMCOREINFO note inside 'kcore'.
|
||||
*/
|
||||
|
||||
-static int get_phys_offset_from_vmcoreinfo_pt_note(unsigned long *phys_offset)
|
||||
+static int get_phys_offset_from_vmcoreinfo_pt_note(long *phys_offset)
|
||||
{
|
||||
int fd, ret = 0;
|
||||
|
||||
@@ -967,7 +967,7 @@ static int get_phys_offset_from_vmcoreinfo_pt_note(unsigned long *phys_offset)
|
||||
* from PT_LOADs inside 'kcore'.
|
||||
*/
|
||||
|
||||
-int get_phys_base_from_pt_load(unsigned long *phys_offset)
|
||||
+int get_phys_base_from_pt_load(long *phys_offset)
|
||||
{
|
||||
int i, fd, ret;
|
||||
unsigned long long phys_start;
|
||||
@@ -1025,7 +1025,7 @@ static bool to_be_excluded(char *str, unsigned long long start, unsigned long lo
|
||||
int get_memory_ranges(struct memory_range **range, int *ranges,
|
||||
unsigned long kexec_flags)
|
||||
{
|
||||
- unsigned long phys_offset = UINT64_MAX;
|
||||
+ long phys_offset = -1;
|
||||
FILE *fp;
|
||||
const char *iomem = proc_iomem();
|
||||
char line[MAX_LINE], *str;
|
||||
@@ -1047,7 +1047,7 @@ int get_memory_ranges(struct memory_range **range, int *ranges,
|
||||
*/
|
||||
ret = get_phys_offset_from_vmcoreinfo_pt_note(&phys_offset);
|
||||
if (!ret) {
|
||||
- if (phys_offset != UINT64_MAX)
|
||||
+ if (phys_offset != -1)
|
||||
set_phys_offset(phys_offset,
|
||||
"vmcoreinfo pt_note");
|
||||
} else {
|
||||
@@ -1059,7 +1059,7 @@ int get_memory_ranges(struct memory_range **range, int *ranges,
|
||||
*/
|
||||
ret = get_phys_base_from_pt_load(&phys_offset);
|
||||
if (!ret)
|
||||
- if (phys_offset != UINT64_MAX)
|
||||
+ if (phys_offset != -1)
|
||||
set_phys_offset(phys_offset,
|
||||
"pt_load");
|
||||
}
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.h b/kexec/arch/arm64/kexec-arm64.h
|
||||
index ed447ac..bfd4172 100644
|
||||
--- a/kexec/arch/arm64/kexec-arm64.h
|
||||
+++ b/kexec/arch/arm64/kexec-arm64.h
|
||||
@@ -58,7 +58,7 @@ extern off_t initrd_size;
|
||||
*/
|
||||
|
||||
struct arm64_mem {
|
||||
- uint64_t phys_offset;
|
||||
+ int64_t phys_offset;
|
||||
uint64_t text_offset;
|
||||
uint64_t image_size;
|
||||
uint64_t vp_offset;
|
||||
diff --git a/util_lib/elf_info.c b/util_lib/elf_info.c
|
||||
index 51d8b92..5574c7f 100644
|
||||
--- a/util_lib/elf_info.c
|
||||
+++ b/util_lib/elf_info.c
|
||||
@@ -1236,7 +1236,7 @@ int read_elf(int fd)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-int read_phys_offset_elf_kcore(int fd, unsigned long *phys_off)
|
||||
+int read_phys_offset_elf_kcore(int fd, long *phys_off)
|
||||
{
|
||||
int ret;
|
||||
|
||||
diff --git a/util_lib/include/elf_info.h b/util_lib/include/elf_info.h
|
||||
index 4bc9279..f550d86 100644
|
||||
--- a/util_lib/include/elf_info.h
|
||||
+++ b/util_lib/include/elf_info.h
|
||||
@@ -28,7 +28,7 @@ int get_pt_load(int idx,
|
||||
unsigned long long *phys_end,
|
||||
unsigned long long *virt_start,
|
||||
unsigned long long *virt_end);
|
||||
-int read_phys_offset_elf_kcore(int fd, unsigned long *phys_off);
|
||||
+int read_phys_offset_elf_kcore(int fd, long *phys_off);
|
||||
int read_elf(int fd);
|
||||
void dump_dmesg(int fd, void (*handler)(char*, unsigned int));
|
||||
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,137 +0,0 @@
|
||||
From 454395e18ff12d2728ee458695160e9ab4899e33 Mon Sep 17 00:00:00 2001
|
||||
From: Pingfan Liu <piliu@redhat.com>
|
||||
Date: Tue, 18 Jan 2022 15:48:11 +0800
|
||||
Subject: [PATCH] arm64: read VA_BITS from kcore for 52-bits VA kernel
|
||||
|
||||
phys_to_virt() calculates virtual address. As a important factor,
|
||||
page_offset is excepted to be accurate.
|
||||
|
||||
Since arm64 kernel exposes va_bits through vmcore, using it.
|
||||
|
||||
Signed-off-by: Pingfan Liu <piliu@redhat.com>
|
||||
Reviewed-by: Philipp Rudo <prudo@redhat.com>
|
||||
Signed-off-by: Simon Horman <horms@verge.net.au>
|
||||
Conflict:NA
|
||||
Reference:https://git.kernel.org/pub/scm/utils/kernel/kexec/kexec-tools.git/commit/?id=454395e18ff12d2728ee458695160e9ab4899e33
|
||||
---
|
||||
kexec/arch/arm64/kexec-arm64.c | 34 ++++++++++++++++++++++++++++++----
|
||||
util_lib/elf_info.c | 5 +++++
|
||||
util_lib/include/elf_info.h | 1 +
|
||||
3 files changed, 36 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
|
||||
index 0f8a768..e502be0 100644
|
||||
--- a/kexec/arch/arm64/kexec-arm64.c
|
||||
+++ b/kexec/arch/arm64/kexec-arm64.c
|
||||
@@ -54,7 +54,7 @@
|
||||
static bool try_read_phys_offset_from_kcore = false;
|
||||
|
||||
/* Machine specific details. */
|
||||
-static int va_bits;
|
||||
+static int va_bits = -1;
|
||||
static unsigned long page_offset;
|
||||
|
||||
/* Global varables the core kexec routines expect. */
|
||||
@@ -895,7 +895,18 @@ static inline void set_phys_offset(int64_t v, char *set_method)
|
||||
|
||||
static int get_va_bits(void)
|
||||
{
|
||||
- unsigned long long stext_sym_addr = get_kernel_sym("_stext");
|
||||
+ unsigned long long stext_sym_addr;
|
||||
+
|
||||
+ /*
|
||||
+ * if already got from kcore
|
||||
+ */
|
||||
+ if (va_bits != -1)
|
||||
+ goto out;
|
||||
+
|
||||
+
|
||||
+ /* For kernel older than v4.19 */
|
||||
+ fprintf(stderr, "Warning, can't get the VA_BITS from kcore\n");
|
||||
+ stext_sym_addr = get_kernel_sym("_stext");
|
||||
|
||||
if (stext_sym_addr == 0) {
|
||||
fprintf(stderr, "Can't get the symbol of _stext.\n");
|
||||
@@ -919,6 +930,7 @@ static int get_va_bits(void)
|
||||
return -1;
|
||||
}
|
||||
|
||||
+out:
|
||||
dbgprintf("va_bits : %d\n", va_bits);
|
||||
|
||||
return 0;
|
||||
@@ -936,14 +948,27 @@ int get_page_offset(unsigned long *page_offset)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
- *page_offset = UINT64_MAX << (va_bits - 1);
|
||||
+ if (va_bits < 52)
|
||||
+ *page_offset = UINT64_MAX << (va_bits - 1);
|
||||
+ else
|
||||
+ *page_offset = UINT64_MAX << va_bits;
|
||||
+
|
||||
dbgprintf("page_offset : %lx\n", *page_offset);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static void arm64_scan_vmcoreinfo(char *pos)
|
||||
+{
|
||||
+ const char *str;
|
||||
+
|
||||
+ str = "NUMBER(VA_BITS)=";
|
||||
+ if (memcmp(str, pos, strlen(str)) == 0)
|
||||
+ va_bits = strtoul(pos + strlen(str), NULL, 10);
|
||||
+}
|
||||
+
|
||||
/**
|
||||
- * get_phys_offset_from_vmcoreinfo_pt_note - Helper for getting PHYS_OFFSET
|
||||
+ * get_phys_offset_from_vmcoreinfo_pt_note - Helper for getting PHYS_OFFSET (and va_bits)
|
||||
* from VMCOREINFO note inside 'kcore'.
|
||||
*/
|
||||
|
||||
@@ -956,6 +981,7 @@ static int get_phys_offset_from_vmcoreinfo_pt_note(long *phys_offset)
|
||||
return EFAILED;
|
||||
}
|
||||
|
||||
+ arch_scan_vmcoreinfo = arm64_scan_vmcoreinfo;
|
||||
ret = read_phys_offset_elf_kcore(fd, phys_offset);
|
||||
|
||||
close(fd);
|
||||
diff --git a/util_lib/elf_info.c b/util_lib/elf_info.c
|
||||
index 5574c7f..d252eff 100644
|
||||
--- a/util_lib/elf_info.c
|
||||
+++ b/util_lib/elf_info.c
|
||||
@@ -310,6 +310,8 @@ int get_pt_load(int idx,
|
||||
|
||||
#define NOT_FOUND_LONG_VALUE (-1)
|
||||
|
||||
+void (*arch_scan_vmcoreinfo)(char *pos);
|
||||
+
|
||||
void scan_vmcoreinfo(char *start, size_t size)
|
||||
{
|
||||
char *last = start + size - 1;
|
||||
@@ -551,6 +553,9 @@ void scan_vmcoreinfo(char *start, size_t size)
|
||||
}
|
||||
}
|
||||
|
||||
+ if (arch_scan_vmcoreinfo != NULL)
|
||||
+ (*arch_scan_vmcoreinfo)(pos);
|
||||
+
|
||||
if (last_line)
|
||||
break;
|
||||
}
|
||||
diff --git a/util_lib/include/elf_info.h b/util_lib/include/elf_info.h
|
||||
index f550d86..fdf4c3d 100644
|
||||
--- a/util_lib/include/elf_info.h
|
||||
+++ b/util_lib/include/elf_info.h
|
||||
@@ -31,5 +31,6 @@ int get_pt_load(int idx,
|
||||
int read_phys_offset_elf_kcore(int fd, long *phys_off);
|
||||
int read_elf(int fd);
|
||||
void dump_dmesg(int fd, void (*handler)(char*, unsigned int));
|
||||
+extern void (*arch_scan_vmcoreinfo)(char *pos);
|
||||
|
||||
#endif /* ELF_INFO_H */
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,308 +0,0 @@
|
||||
From 6633170a04b1fc55eb72adc0150ffcd1b85be8ce Mon Sep 17 00:00:00 2001
|
||||
From: Chen Zhou <chenzhou10@huawei.com>
|
||||
Date: Fri, 29 Mar 2019 21:01:29 +0800
|
||||
Subject: [PATCH] kexec-tools: support more than one crash kernel regions
|
||||
|
||||
reason: When crashkernel is reserved above 4G in memory, kernel should
|
||||
reserve some amount of low memory for swiotlb and some DMA buffers.
|
||||
So there may be two crash kernel regions, one is below 4G, the other
|
||||
is above 4G.
|
||||
|
||||
Currently, there is only one crash kernel region on arm64, and pass
|
||||
"linux,usable-memory-range = <BASE SIZE>" property to crash dump
|
||||
kernel. Now, we pass
|
||||
"linux,usable-memory-range = <BASE1 SIZE1 BASE2 SIZE2>" to crash
|
||||
dump kernel to support two crash kernel regions and load crash
|
||||
kernel high.
|
||||
|
||||
This patch paves the way for the use of arm64 reserving crashkernel
|
||||
above 4G. The details are as below:
|
||||
Link: https://lore.kernel.org/linux-arm-kernel/20190403030546.23718-1-chenzhou10@huawei.com/T/#t
|
||||
|
||||
Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
|
||||
---
|
||||
kexec/arch/arm64/crashdump-arm64.c | 44 +++++++++++++++++------------
|
||||
kexec/arch/arm64/crashdump-arm64.h | 3 +-
|
||||
kexec/arch/arm64/kexec-arm64.c | 57 +++++++++++++++++++++++++++++---------
|
||||
3 files changed, 72 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/kexec/arch/arm64/crashdump-arm64.c b/kexec/arch/arm64/crashdump-arm64.c
|
||||
index 38d1a0f..d8338eb 100644
|
||||
--- a/kexec/arch/arm64/crashdump-arm64.c
|
||||
+++ b/kexec/arch/arm64/crashdump-arm64.c
|
||||
@@ -27,11 +27,11 @@
|
||||
static struct memory_ranges system_memory_rgns;
|
||||
|
||||
/* memory range reserved for crashkernel */
|
||||
-struct memory_range crash_reserved_mem;
|
||||
+struct memory_range crash_reserved_mem[CRASH_MAX_RESERVED_RANGES];
|
||||
struct memory_ranges usablemem_rgns = {
|
||||
.size = 0,
|
||||
- .max_size = 1,
|
||||
- .ranges = &crash_reserved_mem,
|
||||
+ .max_size = CRASH_MAX_RESERVED_RANGES,
|
||||
+ .ranges = crash_reserved_mem,
|
||||
};
|
||||
|
||||
struct memory_range elfcorehdr_mem;
|
||||
@@ -84,7 +84,10 @@ static int iomem_range_callback(void *UNUSED(data), int UNUSED(nr),
|
||||
char *str, unsigned long long base,
|
||||
unsigned long long length)
|
||||
{
|
||||
- if (strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)) == 0)
|
||||
+ if (strncmp(str, CRASH_KERNEL_LOW, strlen(CRASH_KERNEL_LOW)) == 0)
|
||||
+ return mem_regions_alloc_and_add(&usablemem_rgns,
|
||||
+ base, length, RANGE_RAM);
|
||||
+ else if (strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)) == 0)
|
||||
return mem_regions_alloc_and_add(&usablemem_rgns,
|
||||
base, length, RANGE_RAM);
|
||||
else if (strncmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) == 0)
|
||||
@@ -103,7 +106,7 @@ int is_crashkernel_mem_reserved(void)
|
||||
if (!usablemem_rgns.size)
|
||||
kexec_iomem_for_each_line(NULL, iomem_range_callback, NULL);
|
||||
|
||||
- return crash_reserved_mem.start != crash_reserved_mem.end;
|
||||
+ return usablemem_rgns.size;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -117,6 +120,8 @@ int is_crashkernel_mem_reserved(void)
|
||||
*/
|
||||
static int crash_get_memory_ranges(void)
|
||||
{
|
||||
+ int i;
|
||||
+
|
||||
/*
|
||||
* First read all memory regions that can be considered as
|
||||
* system memory including the crash area.
|
||||
@@ -124,16 +129,19 @@ static int crash_get_memory_ranges(void)
|
||||
if (!usablemem_rgns.size)
|
||||
kexec_iomem_for_each_line(NULL, iomem_range_callback, NULL);
|
||||
|
||||
- /* allow only a single region for crash dump kernel */
|
||||
- if (usablemem_rgns.size != 1)
|
||||
+ /* allow one or two region for crash dump kernel */
|
||||
+ if (!usablemem_rgns.size)
|
||||
return -EINVAL;
|
||||
|
||||
- dbgprint_mem_range("Reserved memory range", &crash_reserved_mem, 1);
|
||||
+ dbgprint_mem_range("Reserved memory range",
|
||||
+ usablemem_rgns.ranges, usablemem_rgns.size);
|
||||
|
||||
- if (mem_regions_alloc_and_exclude(&system_memory_rgns,
|
||||
- &crash_reserved_mem)) {
|
||||
- fprintf(stderr, "Cannot allocate memory for ranges\n");
|
||||
- return -ENOMEM;
|
||||
+ for (i = 0; i < usablemem_rgns.size; i++) {
|
||||
+ if (mem_regions_alloc_and_exclude(&system_memory_rgns,
|
||||
+ &crash_reserved_mem[i])) {
|
||||
+ fprintf(stderr, "Cannot allocate memory for ranges\n");
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -194,7 +202,8 @@ int load_crashdump_segments(struct kexec_info *info)
|
||||
return EFAILED;
|
||||
|
||||
elfcorehdr = add_buffer_phys_virt(info, buf, bufsz, bufsz, 0,
|
||||
- crash_reserved_mem.start, crash_reserved_mem.end,
|
||||
+ crash_reserved_mem[usablemem_rgns.size - 1].start,
|
||||
+ crash_reserved_mem[usablemem_rgns.size - 1].end,
|
||||
-1, 0);
|
||||
|
||||
elfcorehdr_mem.start = elfcorehdr;
|
||||
@@ -212,21 +221,23 @@ int load_crashdump_segments(struct kexec_info *info)
|
||||
* virt_to_phys() in add_segment().
|
||||
* So let's fix up those values for later use so the memory base
|
||||
* (arm64_mm.phys_offset) will be correctly replaced with
|
||||
- * crash_reserved_mem.start.
|
||||
+ * crash_reserved_mem[usablemem_rgns.size - 1].start.
|
||||
*/
|
||||
void fixup_elf_addrs(struct mem_ehdr *ehdr)
|
||||
{
|
||||
struct mem_phdr *phdr;
|
||||
int i;
|
||||
|
||||
- ehdr->e_entry += - arm64_mem.phys_offset + crash_reserved_mem.start;
|
||||
+ ehdr->e_entry += -arm64_mem.phys_offset +
|
||||
+ crash_reserved_mem[usablemem_rgns.size - 1].start;
|
||||
|
||||
for (i = 0; i < ehdr->e_phnum; i++) {
|
||||
phdr = &ehdr->e_phdr[i];
|
||||
if (phdr->p_type != PT_LOAD)
|
||||
continue;
|
||||
phdr->p_paddr +=
|
||||
- (-arm64_mem.phys_offset + crash_reserved_mem.start);
|
||||
+ (-arm64_mem.phys_offset +
|
||||
+ crash_reserved_mem[usablemem_rgns.size - 1].start);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -235,11 +246,11 @@ int get_crash_kernel_load_range(uint64_t *start, uint64_t *end)
|
||||
if (!usablemem_rgns.size)
|
||||
kexec_iomem_for_each_line(NULL, iomem_range_callback, NULL);
|
||||
|
||||
- if (!crash_reserved_mem.end)
|
||||
+ if (!usablemem_rgns.size)
|
||||
return -1;
|
||||
|
||||
- *start = crash_reserved_mem.start;
|
||||
- *end = crash_reserved_mem.end;
|
||||
+ *start = crash_reserved_mem[usablemem_rgns.size - 1].start;
|
||||
+ *end = crash_reserved_mem[usablemem_rgns.size - 1].end;
|
||||
|
||||
return 0;
|
||||
}
|
||||
diff --git a/kexec/arch/arm64/crashdump-arm64.h b/kexec/arch/arm64/crashdump-arm64.h
|
||||
index 880b83a..12f4308 100644
|
||||
--- a/kexec/arch/arm64/crashdump-arm64.h
|
||||
+++ b/kexec/arch/arm64/crashdump-arm64.h
|
||||
@@ -16,8 +16,11 @@
|
||||
|
||||
#define CRASH_MAX_MEMORY_RANGES 32
|
||||
|
||||
+/* crash dump kernel support at most two regions, low_region and high region. */
|
||||
+#define CRASH_MAX_RESERVED_RANGES 2
|
||||
+
|
||||
extern struct memory_ranges usablemem_rgns;
|
||||
-extern struct memory_range crash_reserved_mem;
|
||||
+extern struct memory_range crash_reserved_mem[];
|
||||
extern struct memory_range elfcorehdr_mem;
|
||||
|
||||
extern int load_crashdump_segments(struct kexec_info *info);
|
||||
diff --git a/kexec/arch/arm64/iomem.h b/kexec/arch/arm64/iomem.h
|
||||
index d4864bb..45d7953 100644
|
||||
--- a/kexec/arch/arm64/iomem.h
|
||||
+++ b/kexec/arch/arm64/iomem.h
|
||||
@@ -4,6 +4,7 @@
|
||||
#define SYSTEM_RAM "System RAM\n"
|
||||
#define KERNEL_CODE "Kernel code\n"
|
||||
#define KERNEL_DATA "Kernel data\n"
|
||||
+#define CRASH_KERNEL_LOW "Crash kernel (low)\n"
|
||||
#define CRASH_KERNEL "Crash kernel\n"
|
||||
#define IOMEM_RESERVED "reserved\n"
|
||||
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
|
||||
index 45ebc54..6346f83 100644
|
||||
--- a/kexec/arch/arm64/kexec-arm64.c
|
||||
+++ b/kexec/arch/arm64/kexec-arm64.c
|
||||
@@ -418,6 +418,42 @@ static int fdt_setprop_range(void *fdt, int nodeoffset,
|
||||
return result;
|
||||
}
|
||||
|
||||
+/*
|
||||
+ * fdt_setprop_ranges - Used for linux,usable-memory-range
|
||||
+ */
|
||||
+static int fdt_setprop_ranges(void *fdt, int nodeoffset,
|
||||
+ const char *name, struct memory_ranges *ranges,
|
||||
+ uint32_t address_cells, uint32_t size_cells)
|
||||
+{
|
||||
+ void *buf, *prop;
|
||||
+ size_t buf_size;
|
||||
+ int i, result;
|
||||
+
|
||||
+ buf_size = (address_cells + size_cells) * sizeof(uint32_t) *
|
||||
+ ranges->size;
|
||||
+ prop = buf = xmalloc(buf_size);
|
||||
+
|
||||
+ /*
|
||||
+ * crash dump kernel support at most two regions, low_region and high region.
|
||||
+ * To make compatibility with existing user-space and older kdump, the low
|
||||
+ * region is always the last range of linux,usable-memory-range if exist.
|
||||
+ */
|
||||
+ for (i = ranges->size - 1; i >= 0; i--) {
|
||||
+ fill_property(prop, ranges->ranges[i].start, address_cells);
|
||||
+ prop += address_cells * sizeof(uint32_t);
|
||||
+
|
||||
+ fill_property(prop, ranges->ranges[i].end -
|
||||
+ ranges->ranges[i].start + 1, size_cells);
|
||||
+ prop += size_cells * sizeof(uint32_t);
|
||||
+ }
|
||||
+
|
||||
+ result = fdt_setprop(fdt, nodeoffset, name, buf, buf_size);
|
||||
+
|
||||
+ free(buf);
|
||||
+
|
||||
+ return result;
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* setup_2nd_dtb - Setup the 2nd stage kernel's dtb.
|
||||
*/
|
||||
@@ -431,7 +467,7 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash)
|
||||
int len, range_len;
|
||||
int nodeoffset;
|
||||
int new_size;
|
||||
- int result, kaslr_seed;
|
||||
+ int i, result, kaslr_seed;
|
||||
|
||||
result = fdt_check_header(dtb->buf);
|
||||
|
||||
@@ -462,18 +498,21 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash)
|
||||
goto on_error;
|
||||
}
|
||||
|
||||
- if (!cells_size_fitted(address_cells, size_cells,
|
||||
- &crash_reserved_mem)) {
|
||||
- fprintf(stderr, "kexec: usable memory range doesn't fit cells-size.\n");
|
||||
- result = -EINVAL;
|
||||
- goto on_error;
|
||||
+ for (i = 0; i < usablemem_rgns.size; i++) {
|
||||
+ if (!cells_size_fitted(address_cells, size_cells,
|
||||
+ &crash_reserved_mem[i])) {
|
||||
+ fprintf(stderr,
|
||||
+ "kexec: usable memory range doesn't fit cells-size.\n");
|
||||
+ result = -EINVAL;
|
||||
+ goto on_error;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* duplicate dt blob */
|
||||
range_len = sizeof(uint32_t) * (address_cells + size_cells);
|
||||
new_size = fdt_totalsize(dtb->buf)
|
||||
+ fdt_prop_len(PROP_ELFCOREHDR, range_len)
|
||||
- + fdt_prop_len(PROP_USABLE_MEM_RANGE, range_len);
|
||||
+ + fdt_prop_len(PROP_USABLE_MEM_RANGE, range_len * usablemem_rgns.size);
|
||||
|
||||
new_buf = xmalloc(new_size);
|
||||
result = fdt_open_into(dtb->buf, new_buf, new_size);
|
||||
@@ -569,8 +608,8 @@ static int setup_2nd_dtb(struct dtb *dtb, char *command_line, int on_crash)
|
||||
|
||||
/* add linux,usable-memory-range */
|
||||
nodeoffset = fdt_path_offset(new_buf, "/chosen");
|
||||
- result = fdt_setprop_range(new_buf, nodeoffset,
|
||||
- PROP_USABLE_MEM_RANGE, &crash_reserved_mem,
|
||||
+ result = fdt_setprop_ranges(new_buf, nodeoffset,
|
||||
+ PROP_USABLE_MEM_RANGE, &usablemem_rgns,
|
||||
address_cells, size_cells);
|
||||
if (result) {
|
||||
dbgprintf("%s: fdt_setprop failed: %s\n", __func__,
|
||||
@@ -603,13 +642,13 @@ unsigned long arm64_locate_kernel_segment(struct kexec_info *info)
|
||||
if (info->kexec_flags & KEXEC_ON_CRASH) {
|
||||
unsigned long hole_end;
|
||||
|
||||
- hole = (crash_reserved_mem.start < mem_min ?
|
||||
- mem_min : crash_reserved_mem.start);
|
||||
+ hole = (crash_reserved_mem[usablemem_rgns.size - 1].start < mem_min ?
|
||||
+ mem_min : crash_reserved_mem[usablemem_rgns.size - 1].start);
|
||||
hole = _ALIGN_UP(hole, MiB(2));
|
||||
hole_end = hole + arm64_mem.text_offset + arm64_mem.image_size;
|
||||
|
||||
if ((hole_end > mem_max) ||
|
||||
- (hole_end > crash_reserved_mem.end)) {
|
||||
+ (hole_end > crash_reserved_mem[usablemem_rgns.size - 1].end)) {
|
||||
dbgprintf("%s: Crash kernel out of range\n", __func__);
|
||||
hole = ULONG_MAX;
|
||||
}
|
||||
@@ -677,7 +716,7 @@ int arm64_load_other_segments(struct kexec_info *info,
|
||||
|
||||
hole_min = image_base + arm64_mem.image_size;
|
||||
if (info->kexec_flags & KEXEC_ON_CRASH)
|
||||
- hole_max = crash_reserved_mem.end;
|
||||
+ hole_max = crash_reserved_mem[usablemem_rgns.size - 1].end;
|
||||
else
|
||||
hole_max = ULONG_MAX;
|
||||
|
||||
--
|
||||
2.20.1
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,222 +0,0 @@
|
||||
From dd302cc20cf48e312e608ebf2946e8b5432881c7 Mon Sep 17 00:00:00 2001
|
||||
From: wu-leilei <wu18740459704@163.com>
|
||||
Date: Tue, 19 Apr 2022 11:51:24 +0800
|
||||
Subject: [PATCH] add 64 bit loongArch support
|
||||
|
||||
---
|
||||
makedumpfile-1.7.0/Makefile | 2 +-
|
||||
makedumpfile-1.7.0/arch/loongarch64.c | 108 ++++++++++++++++++++++++++
|
||||
makedumpfile-1.7.0/makedumpfile.h | 55 +++++++++++++
|
||||
3 files changed, 164 insertions(+), 1 deletion(-)
|
||||
create mode 100644 makedumpfile-1.7.0/arch/loongarch64.c
|
||||
|
||||
diff --git a/makedumpfile-1.7.0/Makefile b/makedumpfile-1.7.0/Makefile
|
||||
index 35bc04d..5940450 100644
|
||||
--- a/makedumpfile-1.7.0/Makefile
|
||||
+++ b/makedumpfile-1.7.0/Makefile
|
||||
@@ -48,7 +48,7 @@ endif
|
||||
SRC_BASE = makedumpfile.c makedumpfile.h diskdump_mod.h sadump_mod.h sadump_info.h
|
||||
SRC_PART = print_info.c dwarf_info.c elf_info.c erase_info.c sadump_info.c cache.c tools.c printk.c
|
||||
OBJ_PART=$(patsubst %.c,%.o,$(SRC_PART))
|
||||
-SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c arch/mips64.c
|
||||
+SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c arch/mips64.c arch/loongarch64.c
|
||||
OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH))
|
||||
|
||||
LIBS = -ldw -lbz2 -ldl -lelf -lz
|
||||
diff --git a/makedumpfile-1.7.0/arch/loongarch64.c b/makedumpfile-1.7.0/arch/loongarch64.c
|
||||
new file mode 100644
|
||||
index 0000000..338da6b
|
||||
--- /dev/null
|
||||
+++ b/makedumpfile-1.7.0/arch/loongarch64.c
|
||||
@@ -0,0 +1,108 @@
|
||||
+/*
|
||||
+ * loongarch64.c
|
||||
+ *
|
||||
+ * Copyright (C) 2021 Loongson Technology Co., Ltd.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ */
|
||||
+#ifdef __loongarch64
|
||||
+
|
||||
+#include "../print_info.h"
|
||||
+#include "../elf_info.h"
|
||||
+#include "../makedumpfile.h"
|
||||
+
|
||||
+int
|
||||
+get_phys_base_loongarch64(void)
|
||||
+{
|
||||
+ info->phys_base = 0ULL;
|
||||
+
|
||||
+ DEBUG_MSG("phys_base : %lx\n", info->phys_base);
|
||||
+
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+get_machdep_info_loongarch64(void)
|
||||
+{
|
||||
+ info->section_size_bits = _SECTION_SIZE_BITS;
|
||||
+
|
||||
+ /* Check if we can get MAX_PHYSMEM_BITS from vmcoreinfo */
|
||||
+ if (NUMBER(MAX_PHYSMEM_BITS) != NOT_FOUND_NUMBER)
|
||||
+ info->max_physmem_bits = NUMBER(MAX_PHYSMEM_BITS);
|
||||
+ else
|
||||
+ info->max_physmem_bits = _MAX_PHYSMEM_BITS;
|
||||
+
|
||||
+ DEBUG_MSG("max_physmem_bits : %ld\n", info->max_physmem_bits);
|
||||
+ DEBUG_MSG("section_size_bits: %ld\n", info->section_size_bits);
|
||||
+
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+get_versiondep_info_loongarch64(void)
|
||||
+{
|
||||
+ info->page_offset = 0x9000000000000000ULL;
|
||||
+
|
||||
+ DEBUG_MSG("page_offset : %lx\n", info->page_offset);
|
||||
+
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+unsigned long long
|
||||
+vaddr_to_paddr_loongarch64(unsigned long vaddr)
|
||||
+{
|
||||
+ unsigned long long paddr = NOT_PADDR;
|
||||
+ pgd_t *pgda, pgdv;
|
||||
+ pmd_t *pmda, pmdv;
|
||||
+ pte_t *ptea, ptev;
|
||||
+
|
||||
+ if(vaddr >=0x8000000000000000ULL && vaddr < 0xc000000000000000ULL)
|
||||
+ return vaddr & ((1ULL << MAX_PHYSMEM_BITS()) - 1);
|
||||
+
|
||||
+ if (SYMBOL(swapper_pg_dir) == NOT_FOUND_SYMBOL) {
|
||||
+ ERRMSG("Can't get the symbol of swapper_pg_dir.\n");
|
||||
+ return NOT_PADDR;
|
||||
+ }
|
||||
+
|
||||
+ pgda = pgd_offset(SYMBOL(swapper_pg_dir), vaddr);
|
||||
+ if (!readmem(VADDR, (unsigned long long)pgda, &pgdv, sizeof(pgdv))) {
|
||||
+ ERRMSG("Can't read pgd\n");
|
||||
+ return NOT_PADDR;
|
||||
+ }
|
||||
+
|
||||
+ pmda = pmd_offset(&pgdv, vaddr);
|
||||
+ if (!readmem(VADDR, (unsigned long long)pmda, &pmdv, sizeof(pmdv))) {
|
||||
+ ERRMSG("Can't read pmd\n");
|
||||
+ return NOT_PADDR;
|
||||
+ }
|
||||
+
|
||||
+ if (pmdv & _PAGE_HUGE) {
|
||||
+ paddr = (pmdv & PMD_MASK) + (vaddr & (PMD_SIZE - 1));
|
||||
+ return paddr;
|
||||
+ }
|
||||
+
|
||||
+ ptea = pte_offset(&pmdv, vaddr);
|
||||
+ if (!readmem(VADDR, (unsigned long long)ptea, &ptev, sizeof(ptev))) {
|
||||
+ ERRMSG("Can't read pte\n");
|
||||
+ return NOT_PADDR;
|
||||
+ }
|
||||
+
|
||||
+ if (!(ptev & _PAGE_PRESENT)) {
|
||||
+ ERRMSG("Can't get a valid pte.\n");
|
||||
+ return NOT_PADDR;
|
||||
+ } else {
|
||||
+ paddr = PAGEBASE(ptev) + (vaddr & (PAGESIZE() - 1));
|
||||
+ }
|
||||
+
|
||||
+ return paddr;
|
||||
+}
|
||||
+
|
||||
+#endif /* loongarch64 */
|
||||
diff --git a/makedumpfile-1.7.0/makedumpfile.h b/makedumpfile-1.7.0/makedumpfile.h
|
||||
index e59239d..fee3989 100644
|
||||
--- a/makedumpfile-1.7.0/makedumpfile.h
|
||||
+++ b/makedumpfile-1.7.0/makedumpfile.h
|
||||
@@ -996,6 +996,39 @@ typedef unsigned long pgd_t;
|
||||
|
||||
#endif /* mips64 */
|
||||
|
||||
+#ifdef __loongarch64
|
||||
+#define KVBASE (0x8000000000000000UL)
|
||||
+#define _SECTION_SIZE_BITS (28)
|
||||
+#define _MAX_PHYSMEM_BITS (48)
|
||||
+#define _PAGE_PRESENT (1 << 7)
|
||||
+#define _PAGE_HUGE (1 << 6)
|
||||
+
|
||||
+typedef unsigned long pte_t;
|
||||
+typedef unsigned long pmd_t;
|
||||
+typedef unsigned long pgd_t;
|
||||
+
|
||||
+#define PAGE_MASK (~(PAGESIZE() - 1))
|
||||
+#define PMD_MASK (~(PMD_SIZE - 1))
|
||||
+#define PMD_SHIFT ((PAGESHIFT() - 3) * 2 + 3)
|
||||
+#define PMD_SIZE (1UL << PMD_SHIFT)
|
||||
+#define PGDIR_SHIFT ((PAGESHIFT() - 3) * 3 + 3)
|
||||
+#define PTRS_PER_PTE (1 << (PAGESHIFT() - 3))
|
||||
+#define PTRS_PER_PMD PTRS_PER_PTE
|
||||
+#define PTRS_PER_PGD PTRS_PER_PTE
|
||||
+
|
||||
+#define pte_index(vaddr) (((vaddr) >> PAGESHIFT()) & (PTRS_PER_PTE - 1))
|
||||
+#define pmd_page_paddr(pmd) (pmd & (int32_t)PAGE_MASK)
|
||||
+#define pte_offset(dir, vaddr) ((pte_t*)pmd_page_paddr((*dir)) + pte_index(vaddr))
|
||||
+
|
||||
+#define pmd_index(vaddr) (((vaddr) >> PMD_SHIFT) & (PTRS_PER_PMD - 1))
|
||||
+#define pgd_page_paddr(pgd) (pgd & (int32_t)PAGE_MASK)
|
||||
+#define pmd_offset(pgd, vaddr) ((pmd_t *)pgd_page_paddr((*pgd)) + pmd_index(vaddr))
|
||||
+
|
||||
+#define pgd_index(vaddr) (((vaddr) >> PGDIR_SHIFT) & (PTRS_PER_PGD - 1))
|
||||
+#define pgd_offset(pgdir, vaddr) ((pgd_t *)(pgdir) + pgd_index(vaddr))
|
||||
+
|
||||
+#endif /* loongarch64 */
|
||||
+
|
||||
/*
|
||||
* The function of dependence on machine
|
||||
*/
|
||||
@@ -1167,6 +1200,22 @@ unsigned long long vaddr_to_paddr_mips64(unsigned long vaddr);
|
||||
#define arch_crashkernel_mem_size() stub_false()
|
||||
#endif /* mips64 */
|
||||
|
||||
+#ifdef __loongarch64 /* loongarch64 */
|
||||
+int get_phys_base_loongarch64(void);
|
||||
+int get_machdep_info_loongarch64(void);
|
||||
+int get_versiondep_info_loongarch64(void);
|
||||
+unsigned long long vaddr_to_paddr_loongarch64(unsigned long vaddr);
|
||||
+#define find_vmemmap() stub_false()
|
||||
+#define get_phys_base() get_phys_base_loongarch64()
|
||||
+#define get_machdep_info() get_machdep_info_loongarch64()
|
||||
+#define get_versiondep_info() get_versiondep_info_loongarch64()
|
||||
+#define get_kaslr_offset(X) stub_false()
|
||||
+#define vaddr_to_paddr(X) vaddr_to_paddr_loongarch64(X)
|
||||
+#define paddr_to_vaddr(X) paddr_to_vaddr_general(X)
|
||||
+#define is_phys_addr(X) stub_true_ul(X)
|
||||
+#define arch_crashkernel_mem_size() stub_false()
|
||||
+#endif /* loongarch64 */
|
||||
+
|
||||
typedef unsigned long long mdf_pfn_t;
|
||||
|
||||
#ifndef ARCH_PFN_OFFSET
|
||||
@@ -2301,6 +2350,12 @@ int get_xen_info_ia64(void);
|
||||
#define get_xen_info_arch(X) FALSE
|
||||
#endif /* mips64 */
|
||||
|
||||
+#ifdef __loongarch64 /* loongarch64 */
|
||||
+#define kvtop_xen(X) FALSE
|
||||
+#define get_xen_basic_info_arch(X) FALSE
|
||||
+#define get_xen_info_arch(X) FALSE
|
||||
+#endif /* loongarch64 */
|
||||
+
|
||||
struct cycle {
|
||||
mdf_pfn_t start_pfn;
|
||||
mdf_pfn_t end_pfn;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -17,10 +17,10 @@ index 45d7953..f283f50 100644
|
||||
--- a/kexec/arch/arm64/iomem.h
|
||||
+++ b/kexec/arch/arm64/iomem.h
|
||||
@@ -7,5 +7,6 @@
|
||||
#define CRASH_KERNEL_LOW "Crash kernel (low)\n"
|
||||
#define KERNEL_DATA "Kernel data\n"
|
||||
#define CRASH_KERNEL "Crash kernel\n"
|
||||
#define IOMEM_RESERVED "reserved\n"
|
||||
+#define QUICK_KEXEC "Quick kexec\n"
|
||||
+#define QUICK_KEXEC "Quick kexec\n"
|
||||
|
||||
#endif
|
||||
diff --git a/kexec/arch/arm64/kexec-arm64.c b/kexec/arch/arm64/kexec-arm64.c
|
||||
@ -92,12 +92,12 @@ index 219ec49..8a3bb69 100644
|
||||
else
|
||||
hole_max = ULONG_MAX;
|
||||
|
||||
@@ -944,7 +959,8 @@ static bool to_be_excluded(char *str)
|
||||
@@ -1050,7 +1050,8 @@ static bool to_be_excluded(char *str, unsigned long long start, unsigned long lo
|
||||
|
||||
if (!strncmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) ||
|
||||
!strncmp(str, KERNEL_CODE, strlen(KERNEL_CODE)) ||
|
||||
!strncmp(str, KERNEL_DATA, strlen(KERNEL_DATA)) ||
|
||||
- !strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)))
|
||||
+ !strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)) ||
|
||||
- !strncmp(str, KERNEL_DATA, strlen(KERNEL_DATA)))
|
||||
+ !strncmp(str, KERNEL_DATA, strlen(KERNEL_DATA)) ||
|
||||
+ !strncmp(str, QUICK_KEXEC, strlen(QUICK_KEXEC)))
|
||||
return false;
|
||||
else
|
||||
|
||||
Binary file not shown.
BIN
kexec-tools-2.0.26.tar.xz
Normal file
BIN
kexec-tools-2.0.26.tar.xz
Normal file
Binary file not shown.
@ -1,10 +1,10 @@
|
||||
%global eppic_ver e8844d3793471163ae4a56d8f95897be9e5bd554
|
||||
%global eppic_shortver %(c=%{eppic_ver}; echo ${c:0:7})
|
||||
%global mkdf_ver 1.7.0
|
||||
%global mkdf_ver 1.7.2
|
||||
|
||||
Name: kexec-tools
|
||||
Version: 2.0.23
|
||||
Release: 11
|
||||
Version: 2.0.26
|
||||
Release: 1
|
||||
License: GPLv2
|
||||
Summary: The kexec/kdump userspace component
|
||||
URL: https://www.kernel.org/
|
||||
@ -69,21 +69,15 @@ Requires: systemd-udev%{?_isa}
|
||||
|
||||
%undefine _hardened_build
|
||||
|
||||
Patch0001: arm64-support-more-than-one-crash-kernel-regions.patch
|
||||
Patch0002: add-secure-compile-options-for-makedumpfile.patch
|
||||
Patch0003: kexec-Add-quick-kexec-support.patch
|
||||
Patch0004: kexec-Quick-kexec-implementation-for-arm64.patch
|
||||
Patch0005: arm64-crashdump-deduce-paddr-of-_text-based-on-kerne.patch
|
||||
Patch0006: arm64-make-phys_offset-signed.patch
|
||||
Patch0007: arm64-crashdump-unify-routine-to-get-page_offset.patch
|
||||
Patch0008: arm64-read-VA_BITS-from-kcore-for-52-bits-VA-kernel.patch
|
||||
Patch0009: arm64-fix-PAGE_OFFSET-calc-for-flipped-mm.patch
|
||||
%ifarch loongarch64
|
||||
Patch0010: fix-add-64-bit-loongArch-support-1.patch
|
||||
Patch0011: fix-add-64-bit-loongArch-support-2.patch
|
||||
Patch0001: add-secure-compile-options-for-makedumpfile.patch
|
||||
Patch0002: kexec-Add-quick-kexec-support.patch
|
||||
Patch0003: kexec-Quick-kexec-implementation-for-arm64.patch
|
||||
|
||||
%ifarch sw_64
|
||||
Patch0004: sw_64.patch
|
||||
Patch0005: makedumpfile-1.7.2-sw.patch
|
||||
%endif
|
||||
Patch00012: sw_64.patch
|
||||
Patch00013: makedumpfile-1.7.0-sw.patch
|
||||
|
||||
%description
|
||||
kexec-tools provides /sbin/kexec binary that facilitates a new
|
||||
kernel to boot using the kernel's kexec feature either on a
|
||||
@ -105,30 +99,7 @@ mkdir -p -m755 kcp
|
||||
tar -z -x -v -f %{SOURCE9}
|
||||
tar -z -x -v -f %{SOURCE19}
|
||||
|
||||
%ifarch aarch64
|
||||
%patch0001 -p1
|
||||
%endif
|
||||
%patch0002 -p1
|
||||
%patch0003 -p1
|
||||
%ifarch aarch64
|
||||
%patch0004 -p1
|
||||
%endif
|
||||
%patch0005 -p1
|
||||
%patch0006 -p1
|
||||
%patch0007 -p1
|
||||
%patch0008 -p1
|
||||
%patch0009 -p1
|
||||
|
||||
%ifarch loongarch64
|
||||
%patch0010 -p1
|
||||
%patch0011 -p1
|
||||
%endif
|
||||
|
||||
%ifarch sw_64
|
||||
%patch00012 -p1
|
||||
%patch00013 -p1
|
||||
%endif
|
||||
|
||||
%autopatch -p1
|
||||
|
||||
%build
|
||||
autoreconf
|
||||
@ -185,8 +156,8 @@ install -m 644 %{SOURCE13} $RPM_BUILD_ROOT%{_udevrulesdir}/98-kexec.rules
|
||||
|
||||
%ifarch %{ix86} x86_64 aarch64 sw_64 loongarch64
|
||||
install -m 755 makedumpfile-%{mkdf_ver}/makedumpfile $RPM_BUILD_ROOT/usr/sbin/makedumpfile
|
||||
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.8.gz $RPM_BUILD_ROOT/%{_mandir}/man8/makedumpfile.8.gz
|
||||
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf.5.gz $RPM_BUILD_ROOT/%{_mandir}/man5/makedumpfile.conf.5.gz
|
||||
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.8 $RPM_BUILD_ROOT/%{_mandir}/man8/makedumpfile.8
|
||||
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf.5 $RPM_BUILD_ROOT/%{_mandir}/man5/makedumpfile.conf.5
|
||||
install -m 644 makedumpfile-%{mkdf_ver}/makedumpfile.conf $RPM_BUILD_ROOT/%{_sysconfdir}/makedumpfile.conf.sample
|
||||
install -m 755 makedumpfile-%{mkdf_ver}/eppic_makedumpfile.so $RPM_BUILD_ROOT/%{_libdir}/eppic_makedumpfile.so
|
||||
mkdir -p $RPM_BUILD_ROOT/usr/share/makedumpfile/eppic_scripts/
|
||||
@ -313,6 +284,9 @@ done
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Mon Jan 30 2023 chenhaixiang <chenhaixiang3@huawei.com> - 2.0.26-1
|
||||
- update to kexec-tools-2.0.26.1
|
||||
|
||||
* Fri Dec 30 2022 chenhaixiang <chenhaixiang3@huawei.com> - 2.0.23-11
|
||||
- fix shellcheck error in dracut module setup
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
diff -Naru ./makedumpfile-1.7.0/arch/sw_64.c ./makedumpfile-1.7.0-sw/arch/sw_64.c
|
||||
--- ./makedumpfile-1.7.0/arch/sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ ./makedumpfile-1.7.0-sw/arch/sw_64.c 2022-08-19 06:54:24.938438551 +0000
|
||||
diff -Naru ./makedumpfile-1.7.2/arch/sw_64.c ./makedumpfile-1.7.2-sw/arch/sw_64.c
|
||||
--- ./makedumpfile-1.7.2/arch/sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ ./makedumpfile-1.7.2-sw/arch/sw_64.c 2022-08-19 06:54:24.938438551 +0000
|
||||
@@ -0,0 +1,126 @@
|
||||
+/*
|
||||
+ * sw_64.c
|
||||
@ -128,9 +128,9 @@ diff -Naru ./makedumpfile-1.7.0/arch/sw_64.c ./makedumpfile-1.7.0-sw/arch/sw_64.
|
||||
+}
|
||||
+
|
||||
+#endif /* sw_64 */
|
||||
diff -Naru ./makedumpfile-1.7.0/makedumpfile.h ./makedumpfile-1.7.0-sw/makedumpfile.h
|
||||
--- ./makedumpfile-1.7.0/makedumpfile.h 2021-11-08 00:36:15.000000000 +0000
|
||||
+++ ./makedumpfile-1.7.0-sw/makedumpfile.h 2022-08-19 07:46:43.093698825 +0000
|
||||
diff -Naru ./makedumpfile-1.7.2/makedumpfile.h ./makedumpfile-1.7.2-sw/makedumpfile.h
|
||||
--- ./makedumpfile-1.7.2/makedumpfile.h 2021-11-08 00:36:15.000000000 +0000
|
||||
+++ ./makedumpfile-1.7.2-sw/makedumpfile.h 2022-08-19 07:46:43.093698825 +0000
|
||||
@@ -963,7 +963,7 @@
|
||||
|
||||
#endif /* sparc64 */
|
||||
@ -138,8 +138,8 @@ diff -Naru ./makedumpfile-1.7.0/makedumpfile.h ./makedumpfile-1.7.0-sw/makedumpf
|
||||
-#ifdef __mips64__ /* mips64 */
|
||||
+#ifdef __mips64__ /* mips64 */
|
||||
#define KVBASE PAGE_OFFSET
|
||||
#define _SECTION_SIZE_BITS (28)
|
||||
#define _MAX_PHYSMEM_BITS (48)
|
||||
|
||||
#ifndef _XKPHYS_START_ADDR
|
||||
@@ -996,6 +996,40 @@
|
||||
|
||||
#endif /* mips64 */
|
||||
@ -178,9 +178,9 @@ diff -Naru ./makedumpfile-1.7.0/makedumpfile.h ./makedumpfile-1.7.0-sw/makedumpf
|
||||
+#endif /* sw_64 */
|
||||
+
|
||||
+
|
||||
/*
|
||||
* The function of dependence on machine
|
||||
*/
|
||||
#ifdef __loongarch64__
|
||||
#define KVBASE (0x8000000000000000ULL)
|
||||
#define _PAGE_OFFSET (0x9000000000000000ULL)
|
||||
@@ -1167,6 +1201,23 @@
|
||||
#define arch_crashkernel_mem_size() stub_false()
|
||||
#endif /* mips64 */
|
||||
@ -202,9 +202,9 @@ diff -Naru ./makedumpfile-1.7.0/makedumpfile.h ./makedumpfile-1.7.0-sw/makedumpf
|
||||
+#endif /* sw_64 */
|
||||
+
|
||||
+
|
||||
typedef unsigned long long mdf_pfn_t;
|
||||
|
||||
#ifndef ARCH_PFN_OFFSET
|
||||
#ifdef __loongarch64__ /* loongarch64 */
|
||||
int get_phys_base_loongarch64(void);
|
||||
int get_machdep_info_loongarch64(void);
|
||||
@@ -2301,6 +2352,13 @@
|
||||
#define get_xen_info_arch(X) FALSE
|
||||
#endif /* mips64 */
|
||||
@ -216,18 +216,18 @@ diff -Naru ./makedumpfile-1.7.0/makedumpfile.h ./makedumpfile-1.7.0-sw/makedumpf
|
||||
+#endif /* sw_64 */
|
||||
+
|
||||
+
|
||||
struct cycle {
|
||||
mdf_pfn_t start_pfn;
|
||||
mdf_pfn_t end_pfn;
|
||||
diff -Naru ./makedumpfile-1.7.0/Makefile ./makedumpfile-1.7.0-sw/Makefile
|
||||
--- ./makedumpfile-1.7.0/Makefile 2021-11-08 00:36:15.000000000 +0000
|
||||
+++ ./makedumpfile-1.7.0-sw/Makefile 2022-08-19 06:55:54.538591123 +0000
|
||||
#ifdef __loongarch64__ /* loongarch64 */
|
||||
#define kvtop_xen(X) FALSE
|
||||
#define get_xen_basic_info_arch(X) FALSE
|
||||
diff -Naru ./makedumpfile-1.7.2/Makefile ./makedumpfile-1.7.2-sw/Makefile
|
||||
--- ./makedumpfile-1.7.2/Makefile 2021-11-08 00:36:15.000000000 +0000
|
||||
+++ ./makedumpfile-1.7.2-sw/Makefile 2022-08-19 06:55:54.538591123 +0000
|
||||
@@ -47,7 +47,7 @@
|
||||
SRC_BASE = makedumpfile.c makedumpfile.h diskdump_mod.h sadump_mod.h sadump_info.h
|
||||
SRC_PART = print_info.c dwarf_info.c elf_info.c erase_info.c sadump_info.c cache.c tools.c printk.c
|
||||
SRC_PART = print_info.c dwarf_info.c elf_info.c erase_info.c sadump_info.c cache.c tools.c printk.c detect_cycle.c
|
||||
OBJ_PART=$(patsubst %.c,%.o,$(SRC_PART))
|
||||
-SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c arch/mips64.c
|
||||
+SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c arch/mips64.c arch/sw_64.c
|
||||
-SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c arch/mips64.c arch/loongarch64.c
|
||||
+SRC_ARCH = arch/arm.c arch/arm64.c arch/x86.c arch/x86_64.c arch/ia64.c arch/ppc64.c arch/s390x.c arch/ppc.c arch/sparc64.c arch/mips64.c arch/loongarch64.c arch/sw_64.c
|
||||
OBJ_ARCH=$(patsubst %.c,%.o,$(SRC_ARCH))
|
||||
|
||||
LIBS = -ldw -lbz2 -ldl -lelf -lz
|
||||
BIN
makedumpfile-1.7.2.tar.gz
Normal file
BIN
makedumpfile-1.7.2.tar.gz
Normal file
Binary file not shown.
120
sw_64.patch
120
sw_64.patch
@ -1,6 +1,6 @@
|
||||
diff -Naru kexec-tools-2.0.23/config/config.guess kexec-tools-2.0.23-sw/config/config.guess
|
||||
--- kexec-tools-2.0.23/config/config.guess 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/config/config.guess 2022-08-11 02:23:24.056917760 +0000
|
||||
diff -Naru kexec-tools-2.0.26/config/config.guess kexec-tools-2.0.26-sw/config/config.guess
|
||||
--- kexec-tools-2.0.26/config/config.guess 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/config/config.guess 2022-08-11 02:23:24.056917760 +0000
|
||||
@@ -937,6 +937,15 @@
|
||||
if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
|
||||
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
|
||||
@ -17,9 +17,9 @@ diff -Naru kexec-tools-2.0.23/config/config.guess kexec-tools-2.0.23-sw/config/c
|
||||
arc:Linux:*:* | arceb:Linux:*:*)
|
||||
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
|
||||
exit ;;
|
||||
diff -Naru kexec-tools-2.0.23/config/config.sub kexec-tools-2.0.23-sw/config/config.sub
|
||||
--- kexec-tools-2.0.23/config/config.sub 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/config/config.sub 2022-08-11 02:23:50.316917760 +0000
|
||||
diff -Naru kexec-tools-2.0.26/config/config.sub kexec-tools-2.0.26-sw/config/config.sub
|
||||
--- kexec-tools-2.0.26/config/config.sub 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/config/config.sub 2022-08-11 02:23:50.316917760 +0000
|
||||
@@ -1158,6 +1158,7 @@
|
||||
case $cpu in
|
||||
1750a | 580 \
|
||||
@ -28,12 +28,12 @@ diff -Naru kexec-tools-2.0.23/config/config.sub kexec-tools-2.0.23-sw/config/con
|
||||
| aarch64 | aarch64_be \
|
||||
| abacus \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
|
||||
diff -Naru kexec-tools-2.0.23/configure kexec-tools-2.0.23-sw/configure
|
||||
--- kexec-tools-2.0.23/configure 2021-11-04 14:59:17.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/configure 2022-08-18 08:54:34.059090794 +0000
|
||||
diff -Naru kexec-tools-2.0.26/configure kexec-tools-2.0.26-sw/configure
|
||||
--- kexec-tools-2.0.26/configure 2021-11-04 14:59:17.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/configure 2022-08-18 08:54:34.059090794 +0000
|
||||
@@ -3062,6 +3062,9 @@
|
||||
hppa*)
|
||||
ARCH="hppa"
|
||||
loongarch*)
|
||||
ARCH="loongarch"
|
||||
;;
|
||||
+ sw_64*)
|
||||
+ ARCH="sw_64"
|
||||
@ -41,12 +41,12 @@ diff -Naru kexec-tools-2.0.23/configure kexec-tools-2.0.23-sw/configure
|
||||
* )
|
||||
as_fn_error $? "unsupported architecture $target_cpu" "$LINENO" 5
|
||||
;;
|
||||
diff -Naru kexec-tools-2.0.23/configure.ac kexec-tools-2.0.23-sw/configure.ac
|
||||
--- kexec-tools-2.0.23/configure.ac 2021-11-04 14:57:43.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/configure.ac 2022-08-18 08:54:51.039112966 +0000
|
||||
diff -Naru kexec-tools-2.0.26/configure.ac kexec-tools-2.0.26-sw/configure.ac
|
||||
--- kexec-tools-2.0.26/configure.ac 2021-11-04 14:57:43.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/configure.ac 2022-08-18 08:54:51.039112966 +0000
|
||||
@@ -58,6 +58,9 @@
|
||||
hppa*)
|
||||
ARCH="hppa"
|
||||
loongarch*)
|
||||
ARCH="loongarch"
|
||||
;;
|
||||
+ sw_64*)
|
||||
+ ARCH="sw_64"
|
||||
@ -54,9 +54,9 @@ diff -Naru kexec-tools-2.0.23/configure.ac kexec-tools-2.0.23-sw/configure.ac
|
||||
* )
|
||||
AC_MSG_ERROR([unsupported architecture $target_cpu])
|
||||
;;
|
||||
diff -Naru kexec-tools-2.0.23/include/boot/beoboot.h kexec-tools-2.0.23-sw/include/boot/beoboot.h
|
||||
--- kexec-tools-2.0.23/include/boot/beoboot.h 2010-07-29 09:22:16.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/include/boot/beoboot.h 2022-08-11 02:36:05.796917760 +0000
|
||||
diff -Naru kexec-tools-2.0.26/include/boot/beoboot.h kexec-tools-2.0.26-sw/include/boot/beoboot.h
|
||||
--- kexec-tools-2.0.26/include/boot/beoboot.h 2010-07-29 09:22:16.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/include/boot/beoboot.h 2022-08-11 02:36:05.796917760 +0000
|
||||
@@ -23,6 +23,8 @@
|
||||
#define BEOBOOT_ARCH_ALPHA 2
|
||||
#define BEOBOOT_ARCH_PPC 3
|
||||
@ -75,9 +75,9 @@ diff -Naru kexec-tools-2.0.23/include/boot/beoboot.h kexec-tools-2.0.23-sw/inclu
|
||||
#else
|
||||
#error Unsupported architecture.
|
||||
#endif
|
||||
diff -Naru kexec-tools-2.0.23/include/elf.h kexec-tools-2.0.23-sw/include/elf.h
|
||||
--- kexec-tools-2.0.23/include/elf.h 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/include/elf.h 2022-08-19 01:53:05.572119857 +0000
|
||||
diff -Naru kexec-tools-2.0.26/include/elf.h kexec-tools-2.0.26-sw/include/elf.h
|
||||
--- kexec-tools-2.0.26/include/elf.h 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/include/elf.h 2022-08-19 01:53:05.572119857 +0000
|
||||
@@ -266,6 +266,8 @@
|
||||
chances of collision with official or non-GNU unofficial values. */
|
||||
|
||||
@ -87,9 +87,9 @@ diff -Naru kexec-tools-2.0.23/include/elf.h kexec-tools-2.0.23-sw/include/elf.h
|
||||
|
||||
/* Legal values for e_version (version). */
|
||||
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/crashdump-sw_64.c kexec-tools-2.0.23-sw/kexec/arch/sw_64/crashdump-sw_64.c
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/crashdump-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/crashdump-sw_64.c 2022-08-19 01:50:42.851856092 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/crashdump-sw_64.c kexec-tools-2.0.26-sw/kexec/arch/sw_64/crashdump-sw_64.c
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/crashdump-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/crashdump-sw_64.c 2022-08-19 01:50:42.851856092 +0000
|
||||
@@ -0,0 +1,424 @@
|
||||
+/*
|
||||
+ * kexec: Linux boots Linux
|
||||
@ -515,9 +515,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/crashdump-sw_64.c kexec-tools-2.0
|
||||
+{
|
||||
+ return parse_iomem_single("Crash kernel\n", start, end);
|
||||
+}
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/crashdump-sw_64.h kexec-tools-2.0.23-sw/kexec/arch/sw_64/crashdump-sw_64.h
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/crashdump-sw_64.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/crashdump-sw_64.h 2022-08-18 09:22:23.142660576 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/crashdump-sw_64.h kexec-tools-2.0.26-sw/kexec/arch/sw_64/crashdump-sw_64.h
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/crashdump-sw_64.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/crashdump-sw_64.h 2022-08-18 09:22:23.142660576 +0000
|
||||
@@ -0,0 +1,23 @@
|
||||
+#ifndef CRASHDUMP_SW_64_H
|
||||
+#define CRASHDUMP_SW_64_H
|
||||
@ -542,9 +542,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/crashdump-sw_64.h kexec-tools-2.0
|
||||
+
|
||||
+extern struct arch_options_t arch_options;
|
||||
+#endif /* CRASHDUMP_SW_64_H */
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/include/arch/options.h kexec-tools-2.0.23-sw/kexec/arch/sw_64/include/arch/options.h
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/include/arch/options.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/include/arch/options.h 2022-08-19 01:48:57.131660708 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/include/arch/options.h kexec-tools-2.0.26-sw/kexec/arch/sw_64/include/arch/options.h
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/include/arch/options.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/include/arch/options.h 2022-08-19 01:48:57.131660708 +0000
|
||||
@@ -0,0 +1,30 @@
|
||||
+#ifndef KEXEC_ARCH_SW_64_OPTIONS_H
|
||||
+#define KEXEC_ARCH_SW_64_OPTIONS_H
|
||||
@ -576,9 +576,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/include/arch/options.h kexec-tool
|
||||
+#define KEXEC_ALL_OPT_STR KEXEC_ARCH_OPT_STR
|
||||
+
|
||||
+#endif /* KEXEC_ARCH_SW_64_OPTIONS_H */
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-elf-rel-sw_64.c kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-elf-rel-sw_64.c
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/kexec-elf-rel-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-elf-rel-sw_64.c 2022-08-19 01:51:21.131926839 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/kexec-elf-rel-sw_64.c kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-elf-rel-sw_64.c
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/kexec-elf-rel-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-elf-rel-sw_64.c 2022-08-19 01:51:21.131926839 +0000
|
||||
@@ -0,0 +1,46 @@
|
||||
+/*
|
||||
+ * kexec-elf-rel-mips.c - kexec Elf relocation routines
|
||||
@ -626,9 +626,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-elf-rel-sw_64.c kexec-tools
|
||||
+ }
|
||||
+ return;
|
||||
+}
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-elf-sw_64.c kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-elf-sw_64.c
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/kexec-elf-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-elf-sw_64.c 2022-08-18 09:19:10.592068959 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/kexec-elf-sw_64.c kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-elf-sw_64.c
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/kexec-elf-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-elf-sw_64.c 2022-08-18 09:19:10.592068959 +0000
|
||||
@@ -0,0 +1,189 @@
|
||||
+/*
|
||||
+ * kexec-elf-mips.c - kexec Elf loader for mips
|
||||
@ -819,9 +819,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-elf-sw_64.c kexec-tools-2.0
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-sw_64.c kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-sw_64.c
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/kexec-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-sw_64.c 2022-08-18 09:15:28.891539590 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/kexec-sw_64.c kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-sw_64.c
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/kexec-sw_64.c 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-sw_64.c 2022-08-18 09:15:28.891539590 +0000
|
||||
@@ -0,0 +1,175 @@
|
||||
+/*
|
||||
+ * kexec-sw_64.c - kexec for sw_64
|
||||
@ -998,9 +998,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-sw_64.c kexec-tools-2.0.23-
|
||||
+ buf_min, buf_max, buf_end, 1);
|
||||
+}
|
||||
+
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-sw_64.h kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-sw_64.h
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/kexec-sw_64.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/kexec-sw_64.h 2022-08-18 09:10:51.790877939 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/kexec-sw_64.h kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-sw_64.h
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/kexec-sw_64.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/kexec-sw_64.h 2022-08-18 09:10:51.790877939 +0000
|
||||
@@ -0,0 +1,30 @@
|
||||
+#ifndef KEXEC_SW_64_H
|
||||
+#define KEXEC_SW_64_H
|
||||
@ -1032,9 +1032,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/kexec-sw_64.h kexec-tools-2.0.23-
|
||||
+extern off_t initrd_base, initrd_size;
|
||||
+
|
||||
+#endif /* KEXEC_SW_64_H */
|
||||
diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/Makefile kexec-tools-2.0.23-sw/kexec/arch/sw_64/Makefile
|
||||
--- kexec-tools-2.0.23/kexec/arch/sw_64/Makefile 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/arch/sw_64/Makefile 2022-08-18 09:47:30.207054276 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/arch/sw_64/Makefile kexec-tools-2.0.26-sw/kexec/arch/sw_64/Makefile
|
||||
--- kexec-tools-2.0.26/kexec/arch/sw_64/Makefile 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/arch/sw_64/Makefile 2022-08-18 09:47:30.207054276 +0000
|
||||
@@ -0,0 +1,29 @@
|
||||
+#
|
||||
+# kexec sw_64 (linux booting linux)
|
||||
@ -1065,9 +1065,9 @@ diff -Naru kexec-tools-2.0.23/kexec/arch/sw_64/Makefile kexec-tools-2.0.23-sw/ke
|
||||
+ kexec/arch/sw_64/kexec-sw_64.h \
|
||||
+ kexec/arch/sw_64/crashdump-sw_64.h \
|
||||
+ kexec/arch/sw_64/include/arch/options.h
|
||||
diff -Naru kexec-tools-2.0.23/kexec/kexec-syscall.h kexec-tools-2.0.23-sw/kexec/kexec-syscall.h
|
||||
--- kexec-tools-2.0.23/kexec/kexec-syscall.h 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/kexec-syscall.h 2022-08-18 08:44:14.408402498 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/kexec-syscall.h kexec-tools-2.0.26-sw/kexec/kexec-syscall.h
|
||||
--- kexec-tools-2.0.26/kexec/kexec-syscall.h 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/kexec-syscall.h 2022-08-18 08:44:14.408402498 +0000
|
||||
@@ -51,6 +51,9 @@
|
||||
#ifdef __alpha__
|
||||
#define __NR_kexec_load 448
|
||||
@ -1078,20 +1078,20 @@ diff -Naru kexec-tools-2.0.23/kexec/kexec-syscall.h kexec-tools-2.0.23-sw/kexec/
|
||||
#ifndef __NR_kexec_load
|
||||
#error Unknown processor architecture. Needs a kexec_load syscall number.
|
||||
#endif
|
||||
diff -Naru kexec-tools-2.0.23/kexec/Makefile kexec-tools-2.0.23-sw/kexec/Makefile
|
||||
--- kexec-tools-2.0.23/kexec/Makefile 2021-10-20 09:58:49.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/kexec/Makefile 2022-08-18 08:43:24.548411617 +0000
|
||||
diff -Naru kexec-tools-2.0.26/kexec/Makefile kexec-tools-2.0.26-sw/kexec/Makefile
|
||||
--- kexec-tools-2.0.26/kexec/Makefile 2021-10-20 09:58:49.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/kexec/Makefile 2022-08-18 08:43:24.548411617 +0000
|
||||
@@ -92,6 +92,7 @@
|
||||
include $(srcdir)/kexec/arch/sh/Makefile
|
||||
include $(srcdir)/kexec/arch/x86_64/Makefile
|
||||
include $(srcdir)/kexec/arch/hppa/Makefile
|
||||
include $(srcdir)/kexec/arch/loongarch/Makefile
|
||||
+include $(srcdir)/kexec/arch/sw_64/Makefile
|
||||
|
||||
KEXEC_SRCS += $($(ARCH)_KEXEC_SRCS)
|
||||
|
||||
diff -Naru kexec-tools-2.0.23/purgatory/arch/sw_64/Makefile kexec-tools-2.0.23-sw/purgatory/arch/sw_64/Makefile
|
||||
--- kexec-tools-2.0.23/purgatory/arch/sw_64/Makefile 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/purgatory/arch/sw_64/Makefile 2022-08-11 02:32:23.036917760 +0000
|
||||
diff -Naru kexec-tools-2.0.26/purgatory/arch/sw_64/Makefile kexec-tools-2.0.26-sw/purgatory/arch/sw_64/Makefile
|
||||
--- kexec-tools-2.0.26/purgatory/arch/sw_64/Makefile 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/purgatory/arch/sw_64/Makefile 2022-08-11 02:32:23.036917760 +0000
|
||||
@@ -0,0 +1,8 @@
|
||||
+#
|
||||
+# Purgatory sw_64
|
||||
@ -1101,13 +1101,13 @@ diff -Naru kexec-tools-2.0.23/purgatory/arch/sw_64/Makefile kexec-tools-2.0.23-s
|
||||
+
|
||||
+dist += purgatory/arch/sw_64/Makefile $(sw_64_PURGATORY_SRCS)
|
||||
+
|
||||
diff -Naru kexec-tools-2.0.23/purgatory/Makefile kexec-tools-2.0.23-sw/purgatory/Makefile
|
||||
--- kexec-tools-2.0.23/purgatory/Makefile 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.23-sw/purgatory/Makefile 2022-08-18 08:45:08.208392658 +0000
|
||||
diff -Naru kexec-tools-2.0.26/purgatory/Makefile kexec-tools-2.0.26-sw/purgatory/Makefile
|
||||
--- kexec-tools-2.0.26/purgatory/Makefile 2020-12-21 08:07:22.000000000 +0000
|
||||
+++ kexec-tools-2.0.26-sw/purgatory/Makefile 2022-08-18 08:45:08.208392658 +0000
|
||||
@@ -28,6 +28,7 @@
|
||||
include $(srcdir)/purgatory/arch/s390/Makefile
|
||||
include $(srcdir)/purgatory/arch/sh/Makefile
|
||||
include $(srcdir)/purgatory/arch/x86_64/Makefile
|
||||
include $(srcdir)/purgatory/arch/loongarch/Makefile
|
||||
+include $(srcdir)/purgatory/arch/sw_64/Makefile
|
||||
|
||||
PURGATORY_SRCS+=$($(ARCH)_PURGATORY_SRCS)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user