tree:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git 
next-test
head:   81291383ffde08b23bce75e7d6b2575ce9d3475c
commit: 01116e6e98b08ab0641fa516ddafb1b1b2088e64 [31/71] powerpc/fsl_booke: 
Take exec flag into account when setting TLBCAMs
config: powerpc-ge_imp3a_defconfig (attached as .config)
compiler: powerpc-linux-gcc (GCC) 11.2.0
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
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id=01116e6e98b08ab0641fa516ddafb1b1b2088e64
        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 01116e6e98b08ab0641fa516ddafb1b1b2088e64
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross 
O=build_dir ARCH=powerpc SHELL=/bin/bash

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

Note: the powerpc/next-test HEAD 81291383ffde08b23bce75e7d6b2575ce9d3475c 
builds fine.
      It only hurts bisectability.

All errors (new ones prefixed by >>):

   arch/powerpc/mm/nohash/fsl_book3e.c:63:15: error: no previous prototype for 
'tlbcam_sz' [-Werror=missing-prototypes]
      63 | unsigned long tlbcam_sz(int idx)
         |               ^~~~~~~~~
   arch/powerpc/mm/nohash/fsl_book3e.c: In function 'settlbcam':
>> arch/powerpc/mm/nohash/fsl_book3e.c:126:40: error: '_PAGE_BAP_SX' undeclared 
>> (first use in this function)
     126 |         TLBCAM[index].MAS3 |= (flags & _PAGE_BAP_SX) ? MAS3_SX : 0;
         |                                        ^~~~~~~~~~~~
   arch/powerpc/mm/nohash/fsl_book3e.c:126:40: note: each undeclared identifier 
is reported only once for each function it appears in
   cc1: all warnings being treated as errors


vim +/_PAGE_BAP_SX +126 arch/powerpc/mm/nohash/fsl_book3e.c

    62  
  > 63  unsigned long tlbcam_sz(int idx)
    64  {
    65          return tlbcam_addrs[idx].limit - tlbcam_addrs[idx].start + 1;
    66  }
    67  
    68  #ifdef CONFIG_FSL_BOOKE
    69  /*
    70   * Return PA for this VA if it is mapped by a CAM, or 0
    71   */
    72  phys_addr_t v_block_mapped(unsigned long va)
    73  {
    74          int b;
    75          for (b = 0; b < tlbcam_index; ++b)
    76                  if (va >= tlbcam_addrs[b].start && va < 
tlbcam_addrs[b].limit)
    77                          return tlbcam_addrs[b].phys + (va - 
tlbcam_addrs[b].start);
    78          return 0;
    79  }
    80  
    81  /*
    82   * Return VA for a given PA or 0 if not mapped
    83   */
    84  unsigned long p_block_mapped(phys_addr_t pa)
    85  {
    86          int b;
    87          for (b = 0; b < tlbcam_index; ++b)
    88                  if (pa >= tlbcam_addrs[b].phys
    89                          && pa < 
(tlbcam_addrs[b].limit-tlbcam_addrs[b].start)
    90                                +tlbcam_addrs[b].phys)
    91                          return 
tlbcam_addrs[b].start+(pa-tlbcam_addrs[b].phys);
    92          return 0;
    93  }
    94  #endif
    95  
    96  /*
    97   * Set up a variable-size TLB entry (tlbcam). The parameters are not 
checked;
    98   * in particular size must be a power of 4 between 4k and the max 
supported by
    99   * an implementation; max may further be limited by what can be 
represented in
   100   * an unsigned long (for example, 32-bit implementations cannot support 
a 4GB
   101   * size).
   102   */
   103  static void settlbcam(int index, unsigned long virt, phys_addr_t phys,
   104                  unsigned long size, unsigned long flags, unsigned int 
pid)
   105  {
   106          unsigned int tsize;
   107  
   108          tsize = __ilog2(size) - 10;
   109  
   110  #if defined(CONFIG_SMP) || defined(CONFIG_PPC_E500MC)
   111          if ((flags & _PAGE_NO_CACHE) == 0)
   112                  flags |= _PAGE_COHERENT;
   113  #endif
   114  
   115          TLBCAM[index].MAS0 = MAS0_TLBSEL(1) | MAS0_ESEL(index) | 
MAS0_NV(index+1);
   116          TLBCAM[index].MAS1 = MAS1_VALID | MAS1_IPROT | 
MAS1_TSIZE(tsize) | MAS1_TID(pid);
   117          TLBCAM[index].MAS2 = virt & PAGE_MASK;
   118  
   119          TLBCAM[index].MAS2 |= (flags & _PAGE_WRITETHRU) ? MAS2_W : 0;
   120          TLBCAM[index].MAS2 |= (flags & _PAGE_NO_CACHE) ? MAS2_I : 0;
   121          TLBCAM[index].MAS2 |= (flags & _PAGE_COHERENT) ? MAS2_M : 0;
   122          TLBCAM[index].MAS2 |= (flags & _PAGE_GUARDED) ? MAS2_G : 0;
   123          TLBCAM[index].MAS2 |= (flags & _PAGE_ENDIAN) ? MAS2_E : 0;
   124  
   125          TLBCAM[index].MAS3 = (phys & MAS3_RPN) | MAS3_SR;
 > 126          TLBCAM[index].MAS3 |= (flags & _PAGE_BAP_SX) ? MAS3_SX : 0;
   127          TLBCAM[index].MAS3 |= (flags & _PAGE_RW) ? MAS3_SW : 0;
   128          if (mmu_has_feature(MMU_FTR_BIG_PHYS))
   129                  TLBCAM[index].MAS7 = (u64)phys >> 32;
   130  
   131          /* Below is unlikely -- only for large user pages or similar */
   132          if (pte_user(__pte(flags))) {
   133                  TLBCAM[index].MAS3 |= MAS3_UR;
   134                  TLBCAM[index].MAS3 |= (flags & _PAGE_EXEC) ? MAS3_UX : 
0;
   135                  TLBCAM[index].MAS3 |= (flags & _PAGE_RW) ? MAS3_UW : 0;
   136          }
   137  
   138          tlbcam_addrs[index].start = virt;
   139          tlbcam_addrs[index].limit = virt + size - 1;
   140          tlbcam_addrs[index].phys = phys;
   141  }
   142  

---
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