Skip to contentSkip to conversation

mainline build failure due to b67fbebd4cf9 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas")

DISCUSSION Sudip Mukherjee (Codethink) 2 participants 4 messages Jul 22, 2022

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

Hi All,

The latest mainline kernel branch fails to build for alpha allmodconfig with the error:

In file included from ./arch/alpha/include/asm/tlb.h:5,

                 from mm/oom_kill.c:48:
./include/asm-generic/tlb.h:401:1: error: redefinition of 'tlb_update_vma_flags'
  401 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma)
      | ^~~~~~~~~~~~~~~~~~~~
./include/asm-generic/tlb.h:372:1: note: previous definition of 'tlb_update_vma_flags' with type 'void(struct mmu_gather *, struct vm_area_struct *)'
  372 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
      | ^~~~~~~~~~~~~~~~~~~~
In file included from ./arch/alpha/include/asm/tlb.h:5,
                 from arch/alpha/mm/init.c:32:
./include/asm-generic/tlb.h:401:1: error: redefinition of 'tlb_update_vma_flags'
  401 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma)
      | ^~~~~~~~~~~~~~~~~~~~
./include/asm-generic/tlb.h:372:1: note: previous definition of 'tlb_update_vma_flags' with type 'void(struct mmu_gather *, struct vm_area_struct *)'
  372 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
      | ^~~~~~~~~~~~~~~~~~~~

In file included from ./arch/alpha/include/asm/tlb.h:5,
from kernel/sched/core.c:77:
./include/asm-generic/tlb.h:401:1: error: redefinition of 'tlb_update_vma_flags'
401 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma)

      | ^~~~~~~~~~~~~~~~~~~~
./include/asm-generic/tlb.h:372:1: note: previous definition of 'tlb_update_vma_flags' with type 'void(struct mmu_gather *, struct vm_area_struct *)'
  372 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
      | ^~~~~~~~~~~~~~~~~~~~
In file included from ./arch/alpha/include/asm/tlb.h:5,
                 from fs/proc/task_mmu.c:25:
./include/asm-generic/tlb.h:401:1: error: redefinition of 'tlb_update_vma_flags'
  401 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma)
      | ^~~~~~~~~~~~~~~~~~~~
./include/asm-generic/tlb.h:372:1: note: previous definition of 'tlb_update_vma_flags' with type 'void(struct mmu_gather *, struct vm_area_struct *)'
  372 | tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
      | ^~~~~~~~~~~~~~~~~~~~

git bisect pointed to b67fbebd4cf9 ("mmu_gather: Force tlb-flush VM_PFNMAP vmas"). And, reverting that commit has fixed the build failure.

I will be happy to test any patch or provide any extra log if needed.

--
Regards
Sudip

#1 lore raw
Quoted 3 lines · Sudip Mukherjee (Codethink)

The latest mainline kernel branch fails to build for alpha allmodconfig with the error:

Gaah. It's the odd MMU_GATHER_NO_RANGE architectures - alpha, m68k, microblaze, nios2 and openrisc.

We should probably get rid of that oddity, and force everybody to have the ranged tlb flush functions, but for now the trivial patch is to just remove the left-over dummy tlb_update_vma_flags() from that case, I think.

Trivial patch attached. I don't have any cross-compiler for those architectures on my machine, but I suspect I'll just commit it as-is even without testing, since it can't be worse than what the situation is right now with that "redefinition of 'tlb_update_vma_flags'"

But if you can verify, that would be lovely.

Linus

 include/asm-generic/tlb.h | 3 ---
 1 file changed, 3 deletions(-)
include/asm-generic/tlb.h +0 -3
index cb2167c89eee..492dce43236e 100644
@@ -368,9 +368,6 @@ static inline void tlb_flush(struct mmu_gather *tlb)
 		flush_tlb_mm(tlb->mm);
 }
 
-static inline void
-tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
-
 #else /* CONFIG_MMU_GATHER_NO_RANGE */
 
 #ifndef tlb_flush
#2 lore raw
Quoted 15 lines · Linus Torvalds
Quoted 3 lines · Sudip Mukherjee (Codethink)

The latest mainline kernel branch fails to build for alpha allmodconfig with the error:

Gaah. It's the odd MMU_GATHER_NO_RANGE architectures - alpha, m68k, microblaze, nios2 and openrisc.

We should probably get rid of that oddity, and force everybody to have the ranged tlb flush functions, but for now the trivial patch is to just remove the left-over dummy tlb_update_vma_flags() from that case, I think.

Quoted 4 lines

Trivial patch attached. I don't have any cross-compiler for those architectures on my machine, but I suspect I'll just commit it as-is even without testing, since it can't be worse than what the situation is right now with that "redefinition of 'tlb_update_vma_flags'"

That fixes the alpha build failure.
If you commit it today then my nightly builds can test other combinations of all other arch also.

Signature · 2 lines
Regards
Sudip
#3 lore raw
Quoted 4 lines · Sudip Mukherjee

That fixes the alpha build failure.
If you commit it today then my nightly builds can test other combinations of all other arch also.

Thanks.

It's commit 7fb5e5083190 ("mmu_gather: fix the
CONFIG_MMU_GATHER_NO_RANGE case") in my tree now.

I decided to not amend the commit, so it doesn't have your tested-by, only your reported-by, but I put the link your report (this thread), so it's kind of there.

Linus