Skip to content

Commit 443cbaf

Browse files
Baoquan Heakpm00
Baoquan He
authored andcommitted
crash: split vmcoreinfo exporting code out from crash_core.c
Now move the relevant codes into separate files: kernel/crash_reserve.c, include/linux/crash_reserve.h. And add config item CRASH_RESERVE to control its enabling. And also update the old ifdeffery of CONFIG_CRASH_CORE, including of <linux/crash_core.h> and config item dependency on CRASH_CORE accordingly. And also do renaming as follows: - arch/xxx/kernel/{crash_core.c => vmcore_info.c} because they are only related to vmcoreinfo exporting on x86, arm64, riscv. And also Remove config item CRASH_CORE, and rely on CONFIG_KEXEC_CORE to decide if build in crash_core.c. [[email protected]: remove duplicated include in vmcore_info.c] Link: https://lkml.kernel.org/r/[email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Baoquan He <[email protected]> Signed-off-by: Yang Li <[email protected]> Acked-by: Hari Bathini <[email protected]> Cc: Al Viro <[email protected]> Cc: Eric W. Biederman <[email protected]> Cc: Pingfan Liu <[email protected]> Cc: Klara Modin <[email protected]> Cc: Michael Kelley <[email protected]> Cc: Nathan Chancellor <[email protected]> Cc: Stephen Rothwell <[email protected]> Cc: Yang Li <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 85fcde4 commit 443cbaf

File tree

24 files changed

+342
-309
lines changed

24 files changed

+342
-309
lines changed

arch/arm64/kernel/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ obj-$(CONFIG_KEXEC_FILE) += machine_kexec_file.o kexec_image.o
6666
obj-$(CONFIG_ARM64_RELOC_TEST) += arm64-reloc-test.o
6767
arm64-reloc-test-y := reloc_test_core.o reloc_test_syms.o
6868
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
69-
obj-$(CONFIG_CRASH_CORE) += crash_core.o
69+
obj-$(CONFIG_VMCORE_INFO) += vmcore_info.o
7070
obj-$(CONFIG_ARM_SDE_INTERFACE) += sdei.o
7171
obj-$(CONFIG_ARM64_PTR_AUTH) += pointer_auth.o
7272
obj-$(CONFIG_ARM64_MTE) += mte.o

arch/arm64/kernel/crash_core.c renamed to arch/arm64/kernel/vmcore_info.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Copyright (C) Huawei Futurewei Technologies.
55
*/
66

7-
#include <linux/crash_core.h>
7+
#include <linux/vmcore_info.h>
88
#include <asm/cpufeature.h>
99
#include <asm/memory.h>
1010
#include <asm/pgtable-hwdef.h>

arch/powerpc/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ config ARCH_SELECTS_CRASH_DUMP
690690
config FA_DUMP
691691
bool "Firmware-assisted dump"
692692
depends on PPC64 && (PPC_RTAS || PPC_POWERNV)
693-
select CRASH_CORE
693+
select VMCORE_INFO
694694
select CRASH_RESERVE
695695
select CRASH_DUMP
696696
help

arch/powerpc/kernel/setup-common.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ int ppc_do_canonicalize_irqs;
109109
EXPORT_SYMBOL(ppc_do_canonicalize_irqs);
110110
#endif
111111

112-
#ifdef CONFIG_CRASH_CORE
112+
#ifdef CONFIG_VMCORE_INFO
113113
/* This keeps a track of which one is the crashing cpu. */
114114
int crashing_cpu = -1;
115115
#endif

arch/powerpc/platforms/powernv/opal-core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <linux/kobject.h>
1717
#include <linux/sysfs.h>
1818
#include <linux/slab.h>
19-
#include <linux/crash_core.h>
19+
#include <linux/vmcore_info.h>
2020
#include <linux/of.h>
2121

2222
#include <asm/page.h>

arch/riscv/kernel/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ obj-$(CONFIG_KGDB) += kgdb.o
9292
obj-$(CONFIG_KEXEC_CORE) += kexec_relocate.o crash_save_regs.o machine_kexec.o
9393
obj-$(CONFIG_KEXEC_FILE) += elf_kexec.o machine_kexec_file.o
9494
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
95-
obj-$(CONFIG_CRASH_CORE) += crash_core.o
95+
obj-$(CONFIG_VMCORE_INFO) += vmcore_info.o
9696

9797
obj-$(CONFIG_JUMP_LABEL) += jump_label.o
9898

arch/riscv/kernel/crash_core.c renamed to arch/riscv/kernel/vmcore_info.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// SPDX-License-Identifier: GPL-2.0-only
22

3-
#include <linux/crash_core.h>
3+
#include <linux/vmcore_info.h>
44
#include <linux/pagemap.h>
55

66
void arch_crash_save_vmcoreinfo(void)

arch/x86/kernel/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ obj-$(CONFIG_FTRACE_SYSCALLS) += ftrace.o
9898
obj-$(CONFIG_X86_TSC) += trace_clock.o
9999
obj-$(CONFIG_TRACING) += trace.o
100100
obj-$(CONFIG_RETHOOK) += rethook.o
101-
obj-$(CONFIG_CRASH_CORE) += crash_core_$(BITS).o
101+
obj-$(CONFIG_VMCORE_INFO) += vmcore_info_$(BITS).o
102102
obj-$(CONFIG_KEXEC_CORE) += machine_kexec_$(BITS).o
103103
obj-$(CONFIG_KEXEC_CORE) += relocate_kernel_$(BITS).o crash.o
104104
obj-$(CONFIG_KEXEC_FILE) += kexec-bzimage64.o

arch/x86/kernel/crash_core_32.c renamed to arch/x86/kernel/vmcore_info_32.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// SPDX-License-Identifier: GPL-2.0-only
22

3-
#include <linux/crash_core.h>
3+
#include <linux/vmcore_info.h>
44
#include <linux/pgtable.h>
55

66
#include <asm/setup.h>

arch/x86/kernel/crash_core_64.c renamed to arch/x86/kernel/vmcore_info_64.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// SPDX-License-Identifier: GPL-2.0-only
22

3-
#include <linux/crash_core.h>
3+
#include <linux/vmcore_info.h>
44
#include <linux/pgtable.h>
55

66
#include <asm/setup.h>

drivers/firmware/qemu_fw_cfg.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
#include <uapi/linux/qemu_fw_cfg.h>
3838
#include <linux/delay.h>
3939
#include <linux/crash_dump.h>
40-
#include <linux/crash_core.h>
40+
#include <linux/vmcore_info.h>
4141

4242
MODULE_AUTHOR("Gabriel L. Somlo <[email protected]>");
4343
MODULE_DESCRIPTION("QEMU fw_cfg sysfs support");
@@ -67,7 +67,7 @@ static void fw_cfg_sel_endianness(u16 key)
6767
iowrite16(key, fw_cfg_reg_ctrl);
6868
}
6969

70-
#ifdef CONFIG_CRASH_CORE
70+
#ifdef CONFIG_VMCORE_INFO
7171
static inline bool fw_cfg_dma_enabled(void)
7272
{
7373
return (fw_cfg_rev & FW_CFG_VERSION_DMA) && fw_cfg_reg_dma;
@@ -156,7 +156,7 @@ static ssize_t fw_cfg_read_blob(u16 key,
156156
return count;
157157
}
158158

159-
#ifdef CONFIG_CRASH_CORE
159+
#ifdef CONFIG_VMCORE_INFO
160160
/* write chunk of given fw_cfg blob (caller responsible for sanity-check) */
161161
static ssize_t fw_cfg_write_blob(u16 key,
162162
void *buf, loff_t pos, size_t count)
@@ -195,7 +195,7 @@ static ssize_t fw_cfg_write_blob(u16 key,
195195

196196
return ret;
197197
}
198-
#endif /* CONFIG_CRASH_CORE */
198+
#endif /* CONFIG_VMCORE_INFO */
199199

200200
/* clean up fw_cfg device i/o */
201201
static void fw_cfg_io_cleanup(void)
@@ -319,7 +319,7 @@ struct fw_cfg_sysfs_entry {
319319
struct list_head list;
320320
};
321321

322-
#ifdef CONFIG_CRASH_CORE
322+
#ifdef CONFIG_VMCORE_INFO
323323
static ssize_t fw_cfg_write_vmcoreinfo(const struct fw_cfg_file *f)
324324
{
325325
static struct fw_cfg_vmcoreinfo *data;
@@ -343,7 +343,7 @@ static ssize_t fw_cfg_write_vmcoreinfo(const struct fw_cfg_file *f)
343343
kfree(data);
344344
return ret;
345345
}
346-
#endif /* CONFIG_CRASH_CORE */
346+
#endif /* CONFIG_VMCORE_INFO */
347347

348348
/* get fw_cfg_sysfs_entry from kobject member */
349349
static inline struct fw_cfg_sysfs_entry *to_entry(struct kobject *kobj)
@@ -583,7 +583,7 @@ static int fw_cfg_register_file(const struct fw_cfg_file *f)
583583
int err;
584584
struct fw_cfg_sysfs_entry *entry;
585585

586-
#ifdef CONFIG_CRASH_CORE
586+
#ifdef CONFIG_VMCORE_INFO
587587
if (fw_cfg_dma_enabled() &&
588588
strcmp(f->name, FW_CFG_VMCOREINFO_FILENAME) == 0 &&
589589
!is_kdump_kernel()) {

fs/proc/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ config PROC_FS
3232
config PROC_KCORE
3333
bool "/proc/kcore support" if !ARM
3434
depends on PROC_FS && MMU
35-
select CRASH_CORE
35+
select VMCORE_INFO
3636
help
3737
Provides a virtual ELF core file of the live kernel. This can
3838
be read with gdb and other ELF tools. No modifications can be

fs/proc/kcore.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* Safe accesses to vmalloc/direct-mapped discontiguous areas, Kanoj Sarcar <[email protected]>
1111
*/
1212

13-
#include <linux/crash_core.h>
13+
#include <linux/vmcore_info.h>
1414
#include <linux/mm.h>
1515
#include <linux/proc_fs.h>
1616
#include <linux/kcore.h>

include/linux/buildid.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ int build_id_parse(struct vm_area_struct *vma, unsigned char *build_id,
1111
__u32 *size);
1212
int build_id_parse_buf(const void *buf, unsigned char *build_id, u32 buf_size);
1313

14-
#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) || IS_ENABLED(CONFIG_CRASH_CORE)
14+
#if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) || IS_ENABLED(CONFIG_VMCORE_INFO)
1515
extern unsigned char vmlinux_build_id[BUILD_ID_SIZE_MAX];
1616
void init_vmlinux_build_id(void);
1717
#else

include/linux/crash_core.h

Lines changed: 0 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -6,79 +6,6 @@
66
#include <linux/elfcore.h>
77
#include <linux/elf.h>
88

9-
#define CRASH_CORE_NOTE_NAME "CORE"
10-
#define CRASH_CORE_NOTE_HEAD_BYTES ALIGN(sizeof(struct elf_note), 4)
11-
#define CRASH_CORE_NOTE_NAME_BYTES ALIGN(sizeof(CRASH_CORE_NOTE_NAME), 4)
12-
#define CRASH_CORE_NOTE_DESC_BYTES ALIGN(sizeof(struct elf_prstatus), 4)
13-
14-
/*
15-
* The per-cpu notes area is a list of notes terminated by a "NULL"
16-
* note header. For kdump, the code in vmcore.c runs in the context
17-
* of the second kernel to combine them into one note.
18-
*/
19-
#define CRASH_CORE_NOTE_BYTES ((CRASH_CORE_NOTE_HEAD_BYTES * 2) + \
20-
CRASH_CORE_NOTE_NAME_BYTES + \
21-
CRASH_CORE_NOTE_DESC_BYTES)
22-
23-
#define VMCOREINFO_BYTES PAGE_SIZE
24-
#define VMCOREINFO_NOTE_NAME "VMCOREINFO"
25-
#define VMCOREINFO_NOTE_NAME_BYTES ALIGN(sizeof(VMCOREINFO_NOTE_NAME), 4)
26-
#define VMCOREINFO_NOTE_SIZE ((CRASH_CORE_NOTE_HEAD_BYTES * 2) + \
27-
VMCOREINFO_NOTE_NAME_BYTES + \
28-
VMCOREINFO_BYTES)
29-
30-
typedef u32 note_buf_t[CRASH_CORE_NOTE_BYTES/4];
31-
/* Per cpu memory for storing cpu states in case of system crash. */
32-
extern note_buf_t __percpu *crash_notes;
33-
34-
void crash_update_vmcoreinfo_safecopy(void *ptr);
35-
void crash_save_vmcoreinfo(void);
36-
void arch_crash_save_vmcoreinfo(void);
37-
__printf(1, 2)
38-
void vmcoreinfo_append_str(const char *fmt, ...);
39-
phys_addr_t paddr_vmcoreinfo_note(void);
40-
41-
#define VMCOREINFO_OSRELEASE(value) \
42-
vmcoreinfo_append_str("OSRELEASE=%s\n", value)
43-
#define VMCOREINFO_BUILD_ID() \
44-
({ \
45-
static_assert(sizeof(vmlinux_build_id) == 20); \
46-
vmcoreinfo_append_str("BUILD-ID=%20phN\n", vmlinux_build_id); \
47-
})
48-
49-
#define VMCOREINFO_PAGESIZE(value) \
50-
vmcoreinfo_append_str("PAGESIZE=%ld\n", value)
51-
#define VMCOREINFO_SYMBOL(name) \
52-
vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)&name)
53-
#define VMCOREINFO_SYMBOL_ARRAY(name) \
54-
vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)name)
55-
#define VMCOREINFO_SIZE(name) \
56-
vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
57-
(unsigned long)sizeof(name))
58-
#define VMCOREINFO_STRUCT_SIZE(name) \
59-
vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
60-
(unsigned long)sizeof(struct name))
61-
#define VMCOREINFO_OFFSET(name, field) \
62-
vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \
63-
(unsigned long)offsetof(struct name, field))
64-
#define VMCOREINFO_TYPE_OFFSET(name, field) \
65-
vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \
66-
(unsigned long)offsetof(name, field))
67-
#define VMCOREINFO_LENGTH(name, value) \
68-
vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value)
69-
#define VMCOREINFO_NUMBER(name) \
70-
vmcoreinfo_append_str("NUMBER(%s)=%ld\n", #name, (long)name)
71-
#define VMCOREINFO_CONFIG(name) \
72-
vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
73-
74-
extern unsigned char *vmcoreinfo_data;
75-
extern size_t vmcoreinfo_size;
76-
extern u32 *vmcoreinfo_note;
77-
78-
Elf_Word *append_elf_note(Elf_Word *buf, char *name, unsigned int type,
79-
void *data, size_t data_len);
80-
void final_note(Elf_Word *buf);
81-
829
/* Alignment required for elf header segment */
8310
#define ELF_CORE_HEADER_ALIGN 4096
8411

include/linux/kexec.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#if !defined(__ASSEMBLY__)
1717

1818
#include <linux/crash_core.h>
19+
#include <linux/vmcore_info.h>
1920
#include <linux/crash_reserve.h>
2021
#include <asm/io.h>
2122
#include <linux/range.h>

include/linux/vmcore_info.h

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/* SPDX-License-Identifier: GPL-2.0 */
2+
#ifndef LINUX_VMCORE_INFO_H
3+
#define LINUX_VMCORE_INFO_H
4+
5+
#include <linux/linkage.h>
6+
#include <linux/elfcore.h>
7+
#include <linux/elf.h>
8+
9+
#define CRASH_CORE_NOTE_NAME "CORE"
10+
#define CRASH_CORE_NOTE_HEAD_BYTES ALIGN(sizeof(struct elf_note), 4)
11+
#define CRASH_CORE_NOTE_NAME_BYTES ALIGN(sizeof(CRASH_CORE_NOTE_NAME), 4)
12+
#define CRASH_CORE_NOTE_DESC_BYTES ALIGN(sizeof(struct elf_prstatus), 4)
13+
14+
/*
15+
* The per-cpu notes area is a list of notes terminated by a "NULL"
16+
* note header. For kdump, the code in vmcore.c runs in the context
17+
* of the second kernel to combine them into one note.
18+
*/
19+
#define CRASH_CORE_NOTE_BYTES ((CRASH_CORE_NOTE_HEAD_BYTES * 2) + \
20+
CRASH_CORE_NOTE_NAME_BYTES + \
21+
CRASH_CORE_NOTE_DESC_BYTES)
22+
23+
#define VMCOREINFO_BYTES PAGE_SIZE
24+
#define VMCOREINFO_NOTE_NAME "VMCOREINFO"
25+
#define VMCOREINFO_NOTE_NAME_BYTES ALIGN(sizeof(VMCOREINFO_NOTE_NAME), 4)
26+
#define VMCOREINFO_NOTE_SIZE ((CRASH_CORE_NOTE_HEAD_BYTES * 2) + \
27+
VMCOREINFO_NOTE_NAME_BYTES + \
28+
VMCOREINFO_BYTES)
29+
30+
typedef u32 note_buf_t[CRASH_CORE_NOTE_BYTES/4];
31+
/* Per cpu memory for storing cpu states in case of system crash. */
32+
extern note_buf_t __percpu *crash_notes;
33+
34+
void crash_update_vmcoreinfo_safecopy(void *ptr);
35+
void crash_save_vmcoreinfo(void);
36+
void arch_crash_save_vmcoreinfo(void);
37+
__printf(1, 2)
38+
void vmcoreinfo_append_str(const char *fmt, ...);
39+
phys_addr_t paddr_vmcoreinfo_note(void);
40+
41+
#define VMCOREINFO_OSRELEASE(value) \
42+
vmcoreinfo_append_str("OSRELEASE=%s\n", value)
43+
#define VMCOREINFO_BUILD_ID() \
44+
({ \
45+
static_assert(sizeof(vmlinux_build_id) == 20); \
46+
vmcoreinfo_append_str("BUILD-ID=%20phN\n", vmlinux_build_id); \
47+
})
48+
49+
#define VMCOREINFO_PAGESIZE(value) \
50+
vmcoreinfo_append_str("PAGESIZE=%ld\n", value)
51+
#define VMCOREINFO_SYMBOL(name) \
52+
vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)&name)
53+
#define VMCOREINFO_SYMBOL_ARRAY(name) \
54+
vmcoreinfo_append_str("SYMBOL(%s)=%lx\n", #name, (unsigned long)name)
55+
#define VMCOREINFO_SIZE(name) \
56+
vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
57+
(unsigned long)sizeof(name))
58+
#define VMCOREINFO_STRUCT_SIZE(name) \
59+
vmcoreinfo_append_str("SIZE(%s)=%lu\n", #name, \
60+
(unsigned long)sizeof(struct name))
61+
#define VMCOREINFO_OFFSET(name, field) \
62+
vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \
63+
(unsigned long)offsetof(struct name, field))
64+
#define VMCOREINFO_TYPE_OFFSET(name, field) \
65+
vmcoreinfo_append_str("OFFSET(%s.%s)=%lu\n", #name, #field, \
66+
(unsigned long)offsetof(name, field))
67+
#define VMCOREINFO_LENGTH(name, value) \
68+
vmcoreinfo_append_str("LENGTH(%s)=%lu\n", #name, (unsigned long)value)
69+
#define VMCOREINFO_NUMBER(name) \
70+
vmcoreinfo_append_str("NUMBER(%s)=%ld\n", #name, (long)name)
71+
#define VMCOREINFO_CONFIG(name) \
72+
vmcoreinfo_append_str("CONFIG_%s=y\n", #name)
73+
74+
extern unsigned char *vmcoreinfo_data;
75+
extern size_t vmcoreinfo_size;
76+
extern u32 *vmcoreinfo_note;
77+
78+
Elf_Word *append_elf_note(Elf_Word *buf, char *name, unsigned int type,
79+
void *data, size_t data_len);
80+
void final_note(Elf_Word *buf);
81+
#endif /* LINUX_VMCORE_INFO_H */

kernel/Kconfig.kexec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ menu "Kexec and crash features"
55
config CRASH_RESERVE
66
bool
77

8-
config CRASH_CORE
8+
config VMCORE_INFO
99
bool
1010

1111
config KEXEC_CORE
12-
select CRASH_CORE
12+
select VMCORE_INFO
1313
select CRASH_RESERVE
1414
bool
1515

kernel/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ obj-$(CONFIG_MODULE_SIG_FORMAT) += module_signature.o
6868
obj-$(CONFIG_KALLSYMS) += kallsyms.o
6969
obj-$(CONFIG_KALLSYMS_SELFTEST) += kallsyms_selftest.o
7070
obj-$(CONFIG_BSD_PROCESS_ACCT) += acct.o
71-
obj-$(CONFIG_CRASH_CORE) += crash_core.o
71+
obj-$(CONFIG_VMCORE_INFO) += vmcore_info.o
7272
obj-$(CONFIG_CRASH_RESERVE) += crash_reserve.o
73-
obj-$(CONFIG_KEXEC_CORE) += kexec_core.o
73+
obj-$(CONFIG_KEXEC_CORE) += kexec_core.o crash_core.o
7474
obj-$(CONFIG_KEXEC) += kexec.o
7575
obj-$(CONFIG_KEXEC_FILE) += kexec_file.o
7676
obj-$(CONFIG_KEXEC_ELF) += kexec_elf.o

0 commit comments

Comments
 (0)