Hi Christophe,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on powerpc/next]
[also build test ERROR on v4.20-rc4]
[cannot apply to next-20181129]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Christophe-Leroy/powerpc-book3s32-Remove-CONFIG_BOOKE-dependent-code/20181129-210058
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-defconfig (attached as .config)
compiler: powerpc64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=powerpc 

All errors (new ones prefixed by >>):

   In file included from arch/powerpc/include/asm/book3s/64/mmu-hash.h:24:0,
                    from arch/powerpc/include/asm/book3s/64/mmu.h:39,
                    from arch/powerpc/include/asm/mmu.h:328,
                    from arch/powerpc/include/asm/lppaca.h:36,
                    from arch/powerpc/include/asm/paca.h:21,
                    from arch/powerpc/include/asm/hw_irq.h:64,
                    from arch/powerpc/include/asm/irqflags.h:12,
                    from include/linux/irqflags.h:16,
                    from include/linux/spinlock.h:54,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:6,
                    from include/linux/mm.h:10,
                    from arch/powerpc//mm/hugetlbpage.c:11:
   arch/powerpc/include/asm/book3s/64/pgtable.h:219:21: error: "__pte_frag_nr" 
is not defined, evaluates to 0 [-Werror=undef]
    #define PTE_FRAG_NR __pte_frag_nr
                        ^
   arch/powerpc/include/asm/pgtable.h:123:5: note: in expansion of macro 
'PTE_FRAG_NR'
    #if PTE_FRAG_NR != 1
        ^~~~~~~~~~~
   In file included from arch/powerpc/include/asm/book3s/pgalloc.h:10:0,
                    from arch/powerpc/include/asm/pgalloc.h:24,
                    from arch/powerpc//mm/hugetlbpage.c:23:
   arch/powerpc//mm/hugetlbpage.c: In function '__hugepte_alloc':
>> arch/powerpc//mm/hugetlbpage.c:69:22: error: 'PTE_SHIFT' undeclared (first 
>> use in this function); did you mean 'PUD_SHIFT'?
      cachep = PGT_CACHE(PTE_SHIFT);
                         ^
   arch/powerpc/include/asm/book3s/64/pgalloc.h:40:40: note: in definition of 
macro 'PGT_CACHE'
    #define PGT_CACHE(shift) pgtable_cache[shift]
                                           ^~~~~
   arch/powerpc//mm/hugetlbpage.c:69:22: note: each undeclared identifier is 
reported only once for each function it appears in
      cachep = PGT_CACHE(PTE_SHIFT);
                         ^
   arch/powerpc/include/asm/book3s/64/pgalloc.h:40:40: note: in definition of 
macro 'PGT_CACHE'
    #define PGT_CACHE(shift) pgtable_cache[shift]
                                           ^~~~~
   arch/powerpc//mm/hugetlbpage.c: In function 'free_hugepd_range':
   arch/powerpc//mm/hugetlbpage.c:339:29: error: 'PTE_SHIFT' undeclared (first 
use in this function); did you mean 'PUD_SHIFT'?
         get_hugepd_cache_index(PTE_SHIFT));
                                ^~~~~~~~~
                                PUD_SHIFT
   arch/powerpc//mm/hugetlbpage.c: In function 'hugetlbpage_init':
   arch/powerpc//mm/hugetlbpage.c:710:22: error: 'PTE_SHIFT' undeclared (first 
use in this function); did you mean 'PUD_SHIFT'?
       pgtable_cache_add(PTE_SHIFT);
                         ^~~~~~~~~
                         PUD_SHIFT
   cc1: all warnings being treated as errors

vim +69 arch/powerpc//mm/hugetlbpage.c

  > 23  #include <asm/pgalloc.h>
    24  #include <asm/tlb.h>
    25  #include <asm/setup.h>
    26  #include <asm/hugetlb.h>
    27  #include <asm/pte-walk.h>
    28  
    29  
    30  #ifdef CONFIG_HUGETLB_PAGE
    31  
    32  #define PAGE_SHIFT_64K  16
    33  #define PAGE_SHIFT_512K 19
    34  #define PAGE_SHIFT_8M   23
    35  #define PAGE_SHIFT_16M  24
    36  #define PAGE_SHIFT_16G  34
    37  
    38  bool hugetlb_disabled = false;
    39  
    40  unsigned int HPAGE_SHIFT;
    41  EXPORT_SYMBOL(HPAGE_SHIFT);
    42  
    43  #define hugepd_none(hpd)        (hpd_val(hpd) == 0)
    44  
    45  #define PTE_T_ORDER     (__builtin_ffs(sizeof(pte_t)) - 
__builtin_ffs(sizeof(void *)))
    46  
    47  pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr, 
unsigned long sz)
    48  {
    49          /*
    50           * Only called for hugetlbfs pages, hence can ignore THP and the
    51           * irq disabled walk.
    52           */
    53          return __find_linux_pte(mm->pgd, addr, NULL, NULL);
    54  }
    55  
    56  static int __hugepte_alloc(struct mm_struct *mm, hugepd_t *hpdp,
    57                             unsigned long address, unsigned int pdshift,
    58                             unsigned int pshift, spinlock_t *ptl)
    59  {
    60          struct kmem_cache *cachep;
    61          pte_t *new;
    62          int i;
    63          int num_hugepd;
    64  
    65          if (pshift >= pdshift) {
    66                  cachep = PGT_CACHE(PTE_T_ORDER);
    67                  num_hugepd = 1 << (pshift - pdshift);
    68          } else if (IS_ENABLED(CONFIG_PPC_8xx)) {
  > 69                  cachep = PGT_CACHE(PTE_SHIFT);
    70                  num_hugepd = 1;
    71          } else {
    72                  cachep = PGT_CACHE(pdshift - pshift);
    73                  num_hugepd = 1;
    74          }
    75  
    76          new = kmem_cache_alloc(cachep, pgtable_gfp_flags(mm, 
GFP_KERNEL));
    77  
    78          BUG_ON(pshift > HUGEPD_SHIFT_MASK);
    79          BUG_ON((unsigned long)new & HUGEPD_SHIFT_MASK);
    80  
    81          if (! new)
    82                  return -ENOMEM;
    83  
    84          /*
    85           * Make sure other cpus find the hugepd set only after a
    86           * properly initialized page table is visible to them.
    87           * For more details look for comment in __pte_alloc().
    88           */
    89          smp_wmb();
    90  
    91          spin_lock(ptl);
    92          /*
    93           * We have multiple higher-level entries that point to the same
    94           * actual pte location.  Fill in each as we go and backtrack on 
error.
    95           * We need all of these so the DTLB pgtable walk code can find 
the
    96           * right higher-level entry without knowing if it's a hugepage 
or not.
    97           */
    98          for (i = 0; i < num_hugepd; i++, hpdp++) {
    99                  if (unlikely(!hugepd_none(*hpdp)))
   100                          break;
   101                  else {
   102  #ifdef CONFIG_PPC_BOOK3S_64
   103                          *hpdp = __hugepd(__pa(new) | HUGEPD_VAL_BITS |
   104                                           (shift_to_mmu_psize(pshift) << 
2));
   105  #elif defined(CONFIG_PPC_8xx)
   106                          *hpdp = __hugepd(__pa(new) | _PMD_USER |
   107                                           (pshift == PAGE_SHIFT_8M ? 
_PMD_PAGE_8M :
   108                                            _PMD_PAGE_512K) | 
_PMD_PRESENT);
   109  #else
   110                          /* We use the old format for PPC_FSL_BOOK3E */
   111                          *hpdp = __hugepd(((unsigned long)new & 
~PD_HUGE) | pshift);
   112  #endif
   113                  }
   114          }
   115          /* If we bailed from the for loop early, an error occurred, 
clean up */
   116          if (i < num_hugepd) {
   117                  for (i = i - 1 ; i >= 0; i--, hpdp--)
   118                          *hpdp = __hugepd(0);
   119                  kmem_cache_free(cachep, new);
   120          } else {
   121                  kmemleak_ignore(new);
   122          }
   123          spin_unlock(ptl);
   124          return 0;
   125  }
   126  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to