tree:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git 
next-test
head:   5811244192fc4e18c001c69300044c2acf30bd91
commit: 032b7f08932c9b212952d6d585e45b2941b3e8be [129/159] powerpc/64s/radix: 
serialize_against_pte_lookup IPIs trim mm_cpumask
config: powerpc-randconfig-r026-20210209 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 
c9439ca36342fb6013187d0a69aef92736951476)
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install powerpc cross compiling tool for clang build
        # apt-get install binutils-powerpc-linux-gnu
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id=032b7f08932c9b212952d6d585e45b2941b3e8be
        git remote add powerpc 
https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git
        git fetch --no-tags powerpc next-test
        git checkout 032b7f08932c9b212952d6d585e45b2941b3e8be
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <l...@intel.com>

All warnings (new ones prefixed by >>):

>> arch/powerpc/mm/book3s64/radix_tlb.c:646:6: warning: no previous prototype 
>> for function 'exit_lazy_flush_tlb' [-Wmissing-prototypes]
   void exit_lazy_flush_tlb(struct mm_struct *mm, bool always_flush)
        ^
   arch/powerpc/mm/book3s64/radix_tlb.c:646:1: note: declare 'static' if the 
function is not intended to be used outside of this translation unit
   void exit_lazy_flush_tlb(struct mm_struct *mm, bool always_flush)
   ^
   static 
   1 warning generated.


vim +/exit_lazy_flush_tlb +646 arch/powerpc/mm/book3s64/radix_tlb.c

   641  
   642  /*
   643   * If always_flush is true, then flush even if this CPU can't be removed
   644   * from mm_cpumask.
   645   */
 > 646  void exit_lazy_flush_tlb(struct mm_struct *mm, bool always_flush)
   647  {
   648          unsigned long pid = mm->context.id;
   649          int cpu = smp_processor_id();
   650  
   651          /*
   652           * A kthread could have done a mmget_not_zero() after the 
flushing CPU
   653           * checked mm_cpumask, and be in the process of kthread_use_mm 
when
   654           * interrupted here. In that case, current->mm will be set to 
mm,
   655           * because kthread_use_mm() setting ->mm and switching to the 
mm is
   656           * done with interrupts off.
   657           */
   658          if (current->mm == mm)
   659                  goto out;
   660  
   661          if (current->active_mm == mm) {
   662                  WARN_ON_ONCE(current->mm != NULL);
   663                  /* Is a kernel thread and is using mm as the lazy tlb */
   664                  mmgrab(&init_mm);
   665                  current->active_mm = &init_mm;
   666                  switch_mm_irqs_off(mm, &init_mm, current);
   667                  mmdrop(mm);
   668          }
   669  
   670          /*
   671           * This IPI may be initiated from any source including those not
   672           * running the mm, so there may be a racing IPI that comes after
   673           * this one which finds the cpumask already clear. Check and 
avoid
   674           * underflowing the active_cpus count in that case. The race 
should
   675           * not otherwise be a problem, but the TLB must be flushed 
because
   676           * that's what the caller expects.
   677           */
   678          if (cpumask_test_cpu(cpu, mm_cpumask(mm))) {
   679                  atomic_dec(&mm->context.active_cpus);
   680                  cpumask_clear_cpu(cpu, mm_cpumask(mm));
   681                  always_flush = true;
   682          }
   683  
   684  out:
   685          if (always_flush)
   686                  _tlbiel_pid(pid, RIC_FLUSH_ALL);
   687  }
   688  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to