6.2-rc7 fails building on Talos II: memory.c:(.text+0x2e14): undefined reference to `hash__tlb_flush'

Christophe Leroy christophe.leroy at csgroup.eu
Thu Feb 16 17:29:52 AEDT 2023



Le 16/02/2023 à 00:55, Erhard F. a écrit :
> Just noticed a build failure on 6.2-rc7 for my Talos 2 (.config attached):
> 
>   # make
>    CALL    scripts/checksyscalls.sh
>    UPD     include/generated/utsversion.h
>    CC      init/version-timestamp.o
>    LD      .tmp_vmlinux.kallsyms1
> ld: ld: DWARF error: could not find abbrev number 6
> mm/memory.o: in function `unmap_page_range':
> memory.c:(.text+0x2e14): undefined reference to `hash__tlb_flush'
> ld: memory.c:(.text+0x2f8c): undefined reference to `hash__tlb_flush'
> ld: ld: DWARF error: could not find abbrev number 3117
> mm/mmu_gather.o: in function `tlb_remove_table':
> mmu_gather.c:(.text+0x584): undefined reference to `hash__tlb_flush'
> ld: mmu_gather.c:(.text+0x6c4): undefined reference to `hash__tlb_flush'
> ld: mm/mmu_gather.o: in function `tlb_flush_mmu':
> mmu_gather.c:(.text+0x80c): undefined reference to `hash__tlb_flush'
> ld: mm/mmu_gather.o:mmu_gather.c:(.text+0xbe0): more undefined references to `hash__tlb_flush' follow
> make[1]: *** [scripts/Makefile.vmlinux:35: vmlinux] Fehler 1
> make: *** [Makefile:1264: vmlinux] Error 2
> 
> As 6.2-rc6 was good on this machine I did a quick bisect which revealed this commit:
> 
>   # git bisect bad
> 1665c027afb225882a5a0b014c45e84290b826c2 is the first bad commit
> commit 1665c027afb225882a5a0b014c45e84290b826c2
> Author: Michael Ellerman <mpe at ellerman.id.au>
> Date:   Tue Jan 31 22:14:07 2023 +1100
> 
>      powerpc/64s: Reconnect tlb_flush() to hash__tlb_flush()
>      
>      Commit baf1ed24b27d ("powerpc/mm: Remove empty hash__ functions")
>      removed some empty hash MMU flushing routines, but got a bit overeager
>      and also removed the call to hash__tlb_flush() from tlb_flush().
>      
>      In regular use this doesn't lead to any noticable breakage, which is a
>      little concerning. Presumably there are flushes happening via other
>      paths such as arch_leave_lazy_mmu_mode(), and/or a bit of luck.
>      
>      Fix it by reinstating the call to hash__tlb_flush().
>      
>      Fixes: baf1ed24b27d ("powerpc/mm: Remove empty hash__ functions")
>      Signed-off-by: Michael Ellerman <mpe at ellerman.id.au>
>      Link: https://lore.kernel.org/r/20230131111407.806770-1-mpe@ellerman.id.au
> 
>   arch/powerpc/include/asm/book3s/64/tlbflush.h | 2 ++
>   1 file changed, 2 insertions(+)
> 

Can you try with :

diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush.h 
b/arch/powerpc/include/asm/book3s/64/tlbflush.h
index d5cd16270c5d..2bbc0fcce04a 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush.h
@@ -97,8 +97,8 @@ static inline void tlb_flush(struct mmu_gather *tlb)
  {
  	if (radix_enabled())
  		radix__tlb_flush(tlb);
-
-	return hash__tlb_flush(tlb);
+	else
+		hash__tlb_flush(tlb);
  }

  #ifdef CONFIG_SMP



More information about the Linuxppc-dev mailing list