[davidhildenbrand:rmap_batching 135/136] include/asm-generic/tlb.h:631:3: error: call to undeclared function '__tlb_remove_tlb_entry'; ISO C99 and later do not support implicit function declarations

kernel test robot
2024-01-28T16:52:35Z

tree: https://github.com/davidhildenbrand/linux rmap_batching
head: 865e6d6a176a1f50bcbb7dd1d6a57b803e398039
commit: 4779a2a486fbf2d3850b6256cd4c51f2d617c714 [135/136] mm/mmu_gather: add tlb_remove_tlb_entries()
config: powerpc-allyesconfig (https://download.01.org/0day-ci/archive/20240129/202401290041.ATnzeEJA-lkp@intel.com/config)
compiler: clang version 18.0.0git (https://github.com/llvm/llvm-project a31a60074717fc40887cfe132b77eec93bedd307)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240129/202401290041.ATnzeEJA-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401290041.ATnzeEJA-lkp@intel.com/

All errors (new ones prefixed by >>):

In file included from fs/proc/task_mmu.c:27:
In file included from arch/powerpc/include/asm/tlb.h:39:
>> include/asm-generic/tlb.h:631:3: error: call to undeclared function '__tlb_remove_tlb_entry'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
631 | __tlb_remove_tlb_entry(tlb, ptep, address);
| ^
arch/powerpc/include/asm/tlb.h:22:32: note: expanded from macro '__tlb_remove_tlb_entry'
22 | #define __tlb_remove_tlb_entry __tlb_remove_tlb_entry
| ^
include/asm-generic/tlb.h:631:3: note: did you mean 'tlb_remove_tlb_entries'?
arch/powerpc/include/asm/tlb.h:22:32: note: expanded from macro '__tlb_remove_tlb_entry'
22 | #define __tlb_remove_tlb_entry __tlb_remove_tlb_entry
| ^
include/asm-generic/tlb.h:626:20: note: 'tlb_remove_tlb_entries' declared here
626 | static inline void tlb_remove_tlb_entries(struct mmu_gather *tlb,
| ^
627 | pte_t *ptep, unsigned int nr, unsigned long address)
628 | {
629 | tlb_flush_pte_range(tlb, address, PAGE_SIZE * nr);
630 | for (;;) {
631 | __tlb_remove_tlb_entry(tlb, ptep, address);
| ~~~~~~~~~~~~~~~~~~~~~~
| tlb_remove_tlb_entries
In file included from fs/proc/task_mmu.c:27:
arch/powerpc/include/asm/tlb.h:41:20: error: static declaration of '__tlb_remove_tlb_entry' follows non-static declaration
41 | static inline void __tlb_remove_tlb_entry(struct mmu_gather *tlb, pte_t *ptep,
| ^
arch/powerpc/include/asm/tlb.h:22:32: note: expanded from macro '__tlb_remove_tlb_entry'
22 | #define __tlb_remove_tlb_entry __tlb_remove_tlb_entry
| ^
include/asm-generic/tlb.h:631:3: note: previous implicit declaration is here
631 | __tlb_remove_tlb_entry(tlb, ptep, address);
| ^
arch/powerpc/include/asm/tlb.h:22:32: note: expanded from macro '__tlb_remove_tlb_entry'
22 | #define __tlb_remove_tlb_entry __tlb_remove_tlb_entry
| ^
2 errors generated.

vim +/__tlb_remove_tlb_entry +631 include/asm-generic/tlb.h

605
606 /**
607 * tlb_remove_tlb_entry - remember a pte unmapping for later tlb invalidation.
608 *
609 * Record the fact that pte's were really unmapped by updating the range,
610 * so we can later optimise away the tlb invalidate. This helps when
611 * userspace is unmapping already-unmapped pages, which happens quite a lot.
612 */
613 #define tlb_remove_tlb_entry(tlb, ptep, address) \
614 do { \
615 tlb_flush_pte_range(tlb, address, PAGE_SIZE); \
616 __tlb_remove_tlb_entry(tlb, ptep, address); \
617 } while (0)
618
619 /**
620 * tlb_remove_tlb_entries - remember unmapping of multiple consecutive ptes for
621 * later tlb invalidation.
622 *
623 * Similar to tlb_remove_tlb_entry(), but remember unmapping of multiple
624 * consecutive ptes instead of only a single one.
625 */
626 static inline void tlb_remove_tlb_entries(struct mmu_gather *tlb,
627 pte_t *ptep, unsigned int nr, unsigned long address)
628 {
629 tlb_flush_pte_range(tlb, address, PAGE_SIZE * nr);
630 for (;;) {
> 631 __tlb_remove_tlb_entry(tlb, ptep, address);
632 if (--nr == 0)
633 break;
634 ptep++;
635 address += PAGE_SIZE;
636 }
637 }
638

--
0-DAY CI Kernel Test Service