Hi all, After merging the mm tree, today's linux-next build (powerpc ppc44x_defconfig) failed like this: In file included from kernel/crash_core.c:23: kernel/kexec_internal.h:11:54: warning: 'struct kexec_segment' declared inside parameter list will not be visible outside of this definition or declaration 11 | int kimage_load_segment(struct kimage *image, struct kexec_segment *segment); | ^~~~~~~~~~~~~ kernel/crash_core.c:321:40: warning: 'struct crash_mem' declared inside parameter list will not be visible outside of this definition or declaration 321 | int crash_prepare_elf64_headers(struct crash_mem *mem, int need_kernel_map, | ^~~~~~~~~ kernel/crash_core.c: In function 'crash_prepare_elf64_headers': kernel/crash_core.c:334:23: error: invalid use of undefined type 'struct crash_mem' 334 | nr_phdr += mem->nr_ranges; | ^~ In file included from include/vdso/const.h:5, from include/linux/const.h:4, from include/linux/bits.h:5, from include/linux/ratelimit_types.h:5, from include/linux/printk.h:9, from include/asm-generic/bug.h:22, from arch/powerpc/include/asm/bug.h:116, from include/linux/bug.h:5, from arch/powerpc/include/asm/cmpxchg.h:8, from arch/powerpc/include/asm/atomic.h:11, from include/linux/atomic.h:7, from include/linux/mm_types_task.h:13, from include/linux/mm_types.h:5, from include/linux/buildid.h:5, from kernel/crash_core.c:7: kernel/crash_core.c:346:32: error: 'ELF_CORE_HEADER_ALIGN' undeclared (first use in this function) 346 | elf_sz = ALIGN(elf_sz, ELF_CORE_HEADER_ALIGN); | ^~~~~~~~~~~~~~~~~~~~~ include/uapi/linux/const.h:32:50: note: in definition of macro '__ALIGN_KERNEL_MASK' 32 | #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) | ^~~~ include/linux/align.h:8:33: note: in expansion of macro '__ALIGN_KERNEL' 8 | #define ALIGN(x, a) __ALIGN_KERNEL((x), (a)) | ^~~~~~~~~~~~~~ kernel/crash_core.c:346:18: note: in expansion of macro 'ALIGN' 346 | elf_sz = ALIGN(elf_sz, ELF_CORE_HEADER_ALIGN); | ^~~~~ kernel/crash_core.c:346:32: note: each undeclared identifier is reported only once for each function it appears in 346 | elf_sz = ALIGN(elf_sz, ELF_CORE_HEADER_ALIGN); | ^~~~~~~~~~~~~~~~~~~~~ include/uapi/linux/const.h:32:50: note: in definition of macro '__ALIGN_KERNEL_MASK' 32 | #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) | ^~~~ include/linux/align.h:8:33: note: in expansion of macro '__ALIGN_KERNEL' 8 | #define ALIGN(x, a) __ALIGN_KERNEL((x), (a)) | ^~~~~~~~~~~~~~ kernel/crash_core.c:346:18: note: in expansion of macro 'ALIGN' 346 | elf_sz = ALIGN(elf_sz, ELF_CORE_HEADER_ALIGN); | ^~~~~ kernel/crash_core.c:396:28: error: invalid use of undefined type 'struct crash_mem' 396 | for (i = 0; i < mem->nr_ranges; i++) { | ^~ kernel/crash_core.c:397:29: error: invalid use of undefined type 'struct crash_mem' 397 | mstart = mem->ranges[i].start; | ^~ kernel/crash_core.c:398:27: error: invalid use of undefined type 'struct crash_mem' 398 | mend = mem->ranges[i].end; | ^~ kernel/crash_core.c: At top level: kernel/crash_core.c:420:36: warning: 'struct crash_mem' declared inside parameter list will not be visible outside of this definition or declaration 420 | int crash_exclude_mem_range(struct crash_mem *mem, | ^~~~~~~~~ kernel/crash_core.c: In function 'crash_exclude_mem_range': kernel/crash_core.c:427:28: error: invalid use of undefined type 'struct crash_mem' 427 | for (i = 0; i < mem->nr_ranges; i++) { | ^~ kernel/crash_core.c:428:28: error: invalid use of undefined type 'struct crash_mem' 428 | start = mem->ranges[i].start; | ^~ kernel/crash_core.c:429:26: error: invalid use of undefined type 'struct crash_mem' 429 | end = mem->ranges[i].end; | ^~ kernel/crash_core.c:444:28: error: invalid use of undefined type 'struct crash_mem' 444 | mem->ranges[i].start = 0; | ^~ kernel/crash_core.c:445:28: error: invalid use of undefined type 'struct crash_mem' 445 | mem->ranges[i].end = 0; | ^~ kernel/crash_core.c:446:36: error: invalid use of undefined type 'struct crash_mem' 446 | if (i < mem->nr_ranges - 1) { | ^~ kernel/crash_core.c:448:52: error: invalid use of undefined type 'struct crash_mem' 448 | for (j = i; j < mem->nr_ranges - 1; j++) { | ^~ kernel/crash_core.c:449:44: error: invalid use of undefined type 'struct crash_mem' 449 | mem->ranges[j].start = | ^~ kernel/crash_core.c:450:52: error: invalid use of undefined type 'struct crash_mem' 450 | mem->ranges[j+1].start; | ^~ kernel/crash_core.c:451:44: error: invalid use of undefined type 'struct crash_mem' 451 | mem->ranges[j].end = | ^~ kernel/crash_core.c:452:60: error: invalid use of undefined type 'struct crash_mem' 452 | mem->ranges[j+1].end; | ^~ kernel/crash_core.c:461:36: error: invalid use of undefined type 'struct crash_mem' 461 | mem->nr_ranges--; | ^~ kernel/crash_core.c:464:28: error: invalid use of undefined type 'struct crash_mem' 464 | mem->nr_ranges--; | ^~ kernel/crash_core.c:470:28: error: invalid use of undefined type 'struct crash_mem' 470 | mem->ranges[i].end = p_start - 1; | ^~ kernel/crash_core.c:474:28: error: invalid use of undefined type 'struct crash_mem' 474 | mem->ranges[i].end = p_start - 1; | ^~ kernel/crash_core.c:476:28: error: invalid use of undefined type 'struct crash_mem' 476 | mem->ranges[i].start = p_end + 1; | ^~ kernel/crash_core.c:485:21: error: invalid use of undefined type 'struct crash_mem' 485 | if (i == mem->max_nr_ranges - 1) | ^~ kernel/crash_core.c:490:20: error: invalid use of undefined type 'struct crash_mem' 490 | if (j < mem->nr_ranges) { | ^~ kernel/crash_core.c:492:29: error: invalid use of undefined type 'struct crash_mem' 492 | for (i = mem->nr_ranges - 1; i >= j; i--) | ^~ kernel/crash_core.c:493:28: error: invalid use of undefined type 'struct crash_mem' 493 | mem->ranges[i + 1] = mem->ranges[i]; | ^~ kernel/crash_core.c:493:49: error: invalid use of undefined type 'struct crash_mem' 493 | mem->ranges[i + 1] = mem->ranges[i]; | ^~ kernel/crash_core.c:496:12: error: invalid use of undefined type 'struct crash_mem' 496 | mem->ranges[j].start = temp_range.start; | ^~ kernel/crash_core.c:497:12: error: invalid use of undefined type 'struct crash_mem' 497 | mem->ranges[j].end = temp_range.end; | ^~ kernel/crash_core.c:498:12: error: invalid use of undefined type 'struct crash_mem' 498 | mem->nr_ranges++; | ^~ I am not sure exactly which commit caused but I have revreted these for today: 6a41fd4665e6 ("x86/crash: optimize CPU changes") add3b7e011e9 ("crash: change crash_prepare_elf64_headers() to for_each_possible_cpu()") 4a7eed40a7bc ("crash: hotplug support for kexec_load()") 8ce41bc6b147 ("x86/crash: add x86 crash hotplug support") 2b765af0c14f ("crash: memory and CPU hotplug sysfs attributes") 36d2b573329b ("kexec: exclude elfcorehdr from the segment digest") ccfe0040500f ("crash: add generic infrastructure for crash hotplug support") 626775922a57 ("crash: move a few code bits to setup support of crash hotplug") -- Cheers, Stephen Rothwell