+ Ard On Tue, Oct 24, 2023 at 05:24:09PM +1100, Stephen Rothwell wrote: > After merging the arm64 tree, today's linux-next build (arm64 defconfig) > produced this warning: > > WARNING: modpost: vmlinux: section mismatch in reference: __pi_$x+0x38 (section: .text) -> __pi_map_range (section: .init.text) > > I don't know what caused this. For some reason, building linux-next doesn't inline all the functions in the map_range.c file and we end up with some of them in different sections. I didn't get this when building the arm64 for-next/core separately. My fix (I'll push it to the arm64 branch): diff --git a/arch/arm64/kernel/pi/map_kernel.c b/arch/arm64/kernel/pi/map_kernel.c index be7caf07bfa7..e07f3ece5430 100644 --- a/arch/arm64/kernel/pi/map_kernel.c +++ b/arch/arm64/kernel/pi/map_kernel.c @@ -20,17 +20,17 @@ extern const u8 __eh_frame_start[], __eh_frame_end[]; extern void idmap_cpu_replace_ttbr1(void *pgdir); -static void map_segment(pgd_t *pg_dir, u64 *pgd, u64 va_offset, - void *start, void *end, pgprot_t prot, - bool may_use_cont, int root_level) +static void __init map_segment(pgd_t *pg_dir, u64 *pgd, u64 va_offset, + void *start, void *end, pgprot_t prot, + bool may_use_cont, int root_level) { map_range(pgd, ((u64)start + va_offset) & ~PAGE_OFFSET, ((u64)end + va_offset) & ~PAGE_OFFSET, (u64)start, prot, root_level, (pte_t *)pg_dir, may_use_cont, 0); } -static void unmap_segment(pgd_t *pg_dir, u64 va_offset, void *start, - void *end, int root_level) +static void __init unmap_segment(pgd_t *pg_dir, u64 va_offset, void *start, + void *end, int root_level) { map_segment(pg_dir, NULL, va_offset, start, end, __pgprot(0), false, root_level); @@ -205,7 +205,7 @@ static void __init remap_idmap_for_lpa2(void) memset(init_pg_dir, 0, (u64)init_pg_end - (u64)init_pg_dir); } -static void map_fdt(u64 fdt) +static void __init map_fdt(u64 fdt) { static u8 ptes[INIT_IDMAP_FDT_SIZE] __initdata __aligned(PAGE_SIZE); u64 efdt = fdt + MAX_FDT_SIZE; -- Catalin