838b3e28488f7: RISC-V: Load purgatory in kexec_file On 5/30/22 21:54, Stephen Rothwell wrote: > Hi all, > > Note: please do not add any v5.20 material to your linux-next included > branches until after v5.19-rc1 has been related. > > Changes since 20220527: > When CONFIG_MODULES is not set/enabled: (oh, also CONFIG_MMU is not set) ../arch/riscv/kernel/elf_kexec.c:346:5: error: redefinition of 'arch_kexec_apply_relocations_add' 346 | int arch_kexec_apply_relocations_add(struct purgatory_info *pi, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ../arch/riscv/kernel/elf_kexec.c:17: ../include/linux/kexec.h:236:1: note: previous definition of 'arch_kexec_apply_relocations_add' with type 'int(struct purgatory_info *, Elf64_Shdr *, const Elf64_Shdr *, const Elf64_Shdr *)' {aka 'int(struct purgatory_info *, struct elf64_shdr *, const struct elf64_shdr *, const struct elf64_shdr *)'} 236 | arch_kexec_apply_relocations_add(struct purgatory_info *pi, Elf_Shdr *section, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../arch/riscv/kernel/elf_kexec.c: In function 'arch_kexec_apply_relocations_add': ../arch/riscv/kernel/elf_kexec.c:353:9: error: unknown type name 'Elf_Rela'; did you mean 'Elf64_Rela'? 353 | Elf_Rela *relas; | ^~~~~~~~ | Elf64_Rela In file included from ../arch/riscv/include/asm/elf.h:11, from ../include/linux/elf.h:6, from ../include/linux/module.h:19, from ../arch/riscv/kernel/elf_kexec.c:15: ../arch/riscv/kernel/elf_kexec.c:371:44: error: request for member 'r_info' in something not a structure or union 371 | sym += ELF64_R_SYM(relas[i].r_info); | ^ ../include/uapi/linux/elf.h:163:43: note: in definition of macro 'ELF64_R_SYM' 163 | #define ELF64_R_SYM(i) ((i) >> 32) | ^ ../arch/riscv/kernel/elf_kexec.c:380:32: error: request for member 'r_offset' in something not a structure or union 380 | loc += relas[i].r_offset; | ^ ../arch/riscv/kernel/elf_kexec.c:393:32: error: request for member 'r_addend' in something not a structure or union 393 | val += relas[i].r_addend; | ^ ../arch/riscv/kernel/elf_kexec.c:395:51: error: request for member 'r_offset' in something not a structure or union 395 | addr = section->sh_addr + relas[i].r_offset; | ^ In file included from ../arch/riscv/include/asm/elf.h:11, from ../include/linux/elf.h:6, from ../include/linux/module.h:19, from ../arch/riscv/kernel/elf_kexec.c:15: ../arch/riscv/kernel/elf_kexec.c:397:47: error: request for member 'r_info' in something not a structure or union 397 | r_type = ELF64_R_TYPE(relas[i].r_info); | ^ ../include/uapi/linux/elf.h:164:43: note: in definition of macro 'ELF64_R_TYPE' 164 | #define ELF64_R_TYPE(i) ((i) & 0xffffffff) | ^ Full randconfig file is attached. -- ~Randy