All,
Not sure if I should reply to this or not (so please point me in the correct direction if needed).
The problem identified here existed before this patch series. The problem manifests because the
CRASH_DUMP can be enabled without enabling KEXEC. Or perhaps stated differently, CRASH_DUMP does not
select KEXEC, and so they are independent of one another, even though CRASH_DUMP clearly needs KEXEC.
CONFIG_CRASH_CORE=y
CONFIG_KEXEC_CORE=y
# CONFIG_KEXEC is not set
CONFIG_CRASH_DUMP=y
In this patch series, I only sought to preserve existing behavior, which is why this problem shows
here as well. This particular problem can be fixed by having CRASH_DUMP select KEXEC. Here is
original CRASH_DUMP definition (notice no dependencies listed):
config CRASH_DUMP
bool "Build kdump crash kernel (EXPERIMENTAL)"
help
...
Here are three possible courses of action:
- do nothing; preserve existing behavior as intended by the series (even though problems like this
can occur)
- fix it with CRASH_DUMP selecting KEXEC to eliminate the problem
- do not fix it but document the reason why this problem occurs in the commit message
Let me know if there is a preference.
Thank you!
eric
On 7/3/23 01:31, kernel test robot wrote:
Hi Eric,
FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
head: f30ee81787a5abee6c7c72b0fcc30d428319c449
commit: c717f7a0e6b98a52da146e1c09e4c5d92934ca41 [62/89] arm/kexec: refactor for kernel/Kconfig.kexec
config: arm-randconfig-r046-20230703 (https://download.01.org/0day-ci/archive/20230703/202307031404.Mjmo2JK6-lkp@xxxxxxxxx/config)
compiler: arm-linux-gnueabi-gcc (GCC) 12.3.0
reproduce: (https://download.01.org/0day-ci/archive/20230703/202307031404.Mjmo2JK6-lkp@xxxxxxxxx/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307031404.Mjmo2JK6-lkp@xxxxxxxxx/
All errors (new ones prefixed by >>):
In file included from drivers/misc/pvpanic/pvpanic-mmio.c:12:
include/linux/kexec.h:41:2: error: #error KEXEC_SOURCE_MEMORY_LIMIT not defined
41 | #error KEXEC_SOURCE_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:45:2: error: #error KEXEC_DESTINATION_MEMORY_LIMIT not defined
45 | #error KEXEC_DESTINATION_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:49:2: error: #error KEXEC_CONTROL_MEMORY_LIMIT not defined
49 | #error KEXEC_CONTROL_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:57:2: error: #error KEXEC_CONTROL_PAGE_SIZE not defined
57 | #error KEXEC_CONTROL_PAGE_SIZE not defined
| ^~~~~
include/linux/kexec.h:61:2: error: #error KEXEC_ARCH not defined
61 | #error KEXEC_ARCH not defined
| ^~~~~
--
In file included from kernel/panic.c:25:
include/linux/kexec.h:41:2: error: #error KEXEC_SOURCE_MEMORY_LIMIT not defined
41 | #error KEXEC_SOURCE_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:45:2: error: #error KEXEC_DESTINATION_MEMORY_LIMIT not defined
45 | #error KEXEC_DESTINATION_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:49:2: error: #error KEXEC_CONTROL_MEMORY_LIMIT not defined
49 | #error KEXEC_CONTROL_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:57:2: error: #error KEXEC_CONTROL_PAGE_SIZE not defined
57 | #error KEXEC_CONTROL_PAGE_SIZE not defined
| ^~~~~
include/linux/kexec.h:61:2: error: #error KEXEC_ARCH not defined
61 | #error KEXEC_ARCH not defined
| ^~~~~
kernel/panic.c: In function '__warn':
kernel/panic.c:666:17: warning: function '__warn' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
666 | vprintk(args->fmt, args->args);
| ^~~~~~~
--
In file included from kernel/kexec_core.c:15:
include/linux/kexec.h:41:2: error: #error KEXEC_SOURCE_MEMORY_LIMIT not defined
41 | #error KEXEC_SOURCE_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:45:2: error: #error KEXEC_DESTINATION_MEMORY_LIMIT not defined
45 | #error KEXEC_DESTINATION_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:49:2: error: #error KEXEC_CONTROL_MEMORY_LIMIT not defined
49 | #error KEXEC_CONTROL_MEMORY_LIMIT not defined
| ^~~~~
include/linux/kexec.h:57:2: error: #error KEXEC_CONTROL_PAGE_SIZE not defined
57 | #error KEXEC_CONTROL_PAGE_SIZE not defined
| ^~~~~
include/linux/kexec.h:61:2: error: #error KEXEC_ARCH not defined
61 | #error KEXEC_ARCH not defined
| ^~~~~
kernel/kexec_core.c: In function 'sanity_check_segment_list':
kernel/kexec_core.c:179:29: error: 'KEXEC_DESTINATION_MEMORY_LIMIT' undeclared (first use in this function); did you mean 'KEXEC_CRASH_CONTROL_MEMORY_LIMIT'?
179 | if (mend >= KEXEC_DESTINATION_MEMORY_LIMIT)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| KEXEC_CRASH_CONTROL_MEMORY_LIMIT
kernel/kexec_core.c:179:29: note: each undeclared identifier is reported only once for each function it appears in
kernel/kexec_core.c: In function 'kimage_alloc_normal_control_pages':
kernel/kexec_core.c:388:31: error: 'KEXEC_CONTROL_MEMORY_LIMIT' undeclared (first use in this function); did you mean 'KEXEC_CONTROL_MEMORY_GFP'?
388 | if ((epfn >= (KEXEC_CONTROL_MEMORY_LIMIT >> PAGE_SHIFT)) ||
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
| KEXEC_CONTROL_MEMORY_GFP
kernel/kexec_core.c: In function 'kimage_alloc_crash_control_pages':
include/linux/kexec.h:65:42: error: 'KEXEC_CONTROL_MEMORY_LIMIT' undeclared (first use in this function); did you mean 'KEXEC_CONTROL_MEMORY_GFP'?
65 | #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT KEXEC_CONTROL_MEMORY_LIMIT
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/kexec_core.c:454:32: note: in expansion of macro 'KEXEC_CRASH_CONTROL_MEMORY_LIMIT'
454 | if (hole_end > KEXEC_CRASH_CONTROL_MEMORY_LIMIT)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/kexec_core.c: In function 'kimage_alloc_page':
kernel/kexec_core.c:721:34: error: 'KEXEC_SOURCE_MEMORY_LIMIT' undeclared (first use in this function); did you mean 'KEXEC_CRASH_CONTROL_MEMORY_LIMIT'?
721 | (KEXEC_SOURCE_MEMORY_LIMIT >> PAGE_SHIFT)) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| KEXEC_CRASH_CONTROL_MEMORY_LIMIT
kernel/kexec_core.c: In function '__crash_kexec':
kernel/kexec_core.c:1061:25: error: implicit declaration of function 'crash_setup_regs' [-Werror=implicit-function-declaration]
1061 | crash_setup_regs(&fixed_regs, regs);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +41 include/linux/kexec.h
dc009d92435f99 Eric W. Biederman 2005-06-25 39
dc009d92435f99 Eric W. Biederman 2005-06-25 40 #ifndef KEXEC_SOURCE_MEMORY_LIMIT
dc009d92435f99 Eric W. Biederman 2005-06-25 @41 #error KEXEC_SOURCE_MEMORY_LIMIT not defined
dc009d92435f99 Eric W. Biederman 2005-06-25 42 #endif
dc009d92435f99 Eric W. Biederman 2005-06-25 43
dc009d92435f99 Eric W. Biederman 2005-06-25 44 #ifndef KEXEC_DESTINATION_MEMORY_LIMIT
dc009d92435f99 Eric W. Biederman 2005-06-25 @45 #error KEXEC_DESTINATION_MEMORY_LIMIT not defined
dc009d92435f99 Eric W. Biederman 2005-06-25 46 #endif
dc009d92435f99 Eric W. Biederman 2005-06-25 47
dc009d92435f99 Eric W. Biederman 2005-06-25 48 #ifndef KEXEC_CONTROL_MEMORY_LIMIT
dc009d92435f99 Eric W. Biederman 2005-06-25 @49 #error KEXEC_CONTROL_MEMORY_LIMIT not defined
dc009d92435f99 Eric W. Biederman 2005-06-25 50 #endif
dc009d92435f99 Eric W. Biederman 2005-06-25 51
7e01b5acd88b3f Martin Schwidefsky 2015-04-16 52 #ifndef KEXEC_CONTROL_MEMORY_GFP
dc5cccacf4272d Russell King 2016-08-02 53 #define KEXEC_CONTROL_MEMORY_GFP (GFP_KERNEL | __GFP_NORETRY)
7e01b5acd88b3f Martin Schwidefsky 2015-04-16 54 #endif
7e01b5acd88b3f Martin Schwidefsky 2015-04-16 55
163f6876f5c3ff Huang Ying 2008-08-15 56 #ifndef KEXEC_CONTROL_PAGE_SIZE
163f6876f5c3ff Huang Ying 2008-08-15 @57 #error KEXEC_CONTROL_PAGE_SIZE not defined
dc009d92435f99 Eric W. Biederman 2005-06-25 58 #endif
dc009d92435f99 Eric W. Biederman 2005-06-25 59
dc009d92435f99 Eric W. Biederman 2005-06-25 60 #ifndef KEXEC_ARCH
dc009d92435f99 Eric W. Biederman 2005-06-25 @61 #error KEXEC_ARCH not defined
dc009d92435f99 Eric W. Biederman 2005-06-25 62 #endif
dc009d92435f99 Eric W. Biederman 2005-06-25 63
3d214faea6e4f9 Michael Holzheu 2011-10-30 64 #ifndef KEXEC_CRASH_CONTROL_MEMORY_LIMIT
3d214faea6e4f9 Michael Holzheu 2011-10-30 @65 #define KEXEC_CRASH_CONTROL_MEMORY_LIMIT KEXEC_CONTROL_MEMORY_LIMIT
3d214faea6e4f9 Michael Holzheu 2011-10-30 66 #endif
3d214faea6e4f9 Michael Holzheu 2011-10-30 67
:::::: The code at line 41 was first introduced by commit
:::::: dc009d92435f99498cbc579ce76bf28e837e2c14 [PATCH] kexec: add kexec syscalls
:::::: TO: Eric W. Biederman <ebiederm@xxxxxxxxxxxx>
:::::: CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxx>