在 2021/3/24 16:29, Ard Biesheuvel 写道: > On Wed, 24 Mar 2021 at 08:27, chenjun (AM) <chenjun...@huawei.com> wrote: >> >> Hi >> >> I make a Image for arm64 (without CONFIG_RANDOMIZE_BASE). And a ko (13M) >> can not be inserted. >> > > How many large modules have you loaded already? The module region is > only 128 MB, so if your modules are huge, you may run out of space. > > Please check the kernel VA address and the load address of the module, > and check whether they are more than 128 MB apart. >
Thanks Ard I will check it. One more question, why is CONFIG_ARM64_MODULE_PLTS depended on CONFIG_RANDOMIZE_BASE? > >> WARNING: CPU: 2 PID: 1998 at arch/arm64/kernel/module-plts.c:39 >> module_emit_plt_entry+0x100/0x118 >> ... >> Call trace: >> module_emit_plt_entry+0x100/0x118 >> apply_relocate_add+0x34c/0x570 >> ... >> >> I think the problem is that: >> in apply_relocate_add: >> case R_AARCH64_CALL26: >> ovf = reloc_insn_imm(RELOC_OP_PREL, loc, val, 2, 26, >> AARCH64_INSN_IMM_26); >> >> if (IS_ENABLED(CONFIG_ARM64_MODULE_PLTS) && >> ovf == -ERANGE) { >> val = module_emit_plt_entry(me, sechdrs, >> loc, &rel[i], sym); realoc_insn_imm return -ERANGE (because the ko is >> too big?) >> >> in module_emit_plt_entry: >> WARN_ON(pltsec->plt_num_entries > pltsec->plt_max_entries) >> pltsec->plt_max_entries is 0 if CONFIG_RANDOMIZE_BASE is not be set. >> >> a257e02 arm64/kernel: don't ban ADRP to work around Cortex-A53 erratum >> #843419 >> static unsigned int count_plts(Elf64_Sym *syms, Elf64_Rela *rela, int >> num, >> - Elf64_Word dstidx) >> + Elf64_Word dstidx, Elf_Shdr *dstsec) >> { >> ... >> switch (ELF64_R_TYPE(rela[i].r_info)) { >> case R_AARCH64_JUMP26: >> case R_AARCH64_CALL26: >> + if (!IS_ENABLED(CONFIG_RANDOMIZE_BASE)) >> + break; >> + >> >> Why we need break if !IS_ENABLED(CONFIG_RANDOMIZE_BASE)? or any >> restrictions on ko? >> >> I comment out this part of the code. the ko could be inserted, and seems >> to work well. So is it a accepted way? or any solution for my case? >> >> -- >> Regards >> Chen Jun >> > -- Regards Chen Jun