• Christophe Leroy's avatar
    powerpc/8xx: Provide ptep_get() with 16k pages · c0e1c8c2
    Christophe Leroy authored
    READ_ONCE() now enforces atomic read, which leads to:
    
      CC      mm/gup.o
    In file included from ./include/linux/kernel.h:11:0,
                     from mm/gup.c:2:
    In function 'gup_hugepte.constprop',
        inlined from 'gup_huge_pd.isra.79' at mm/gup.c:2465:8:
    ./include/linux/compiler.h:392:38: error: call to '__compiletime_assert_222' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE().
      _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
                                          ^
    ./include/linux/compiler.h:373:4: note: in definition of macro '__compiletime_assert'
        prefix ## suffix();    \
        ^
    ./include/linux/compiler.h:392:2: note: in expansion of macro '_compiletime_assert'
      _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      ^
    ./include/linux/compiler.h:405:2: note: in expansion of macro 'compiletime_assert'
      compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
      ^
    ./include/linux/compiler.h:291:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      compiletime_assert_rwonce_type(x);    \
      ^
    mm/gup.c:2428:8: note: in expansion of macro 'READ_ONCE'
      pte = READ_ONCE(*ptep);
            ^
    In function 'gup_get_pte',
        inlined from 'gup_pte_range' at mm/gup.c:2228:9,
        inlined from 'gup_pmd_range' at mm/gup.c:2613:15,
        inlined from 'gup_pud_range' at mm/gup.c:2641:15,
        inlined from 'gup_p4d_range' at mm/gup.c:2666:15,
        inlined from 'gup_pgd_range' at mm/gup.c:2694:15,
        inlined from 'internal_get_user_pages_fast' at mm/gup.c:2795:3:
    ./include/linux/compiler.h:392:38: error: call to '__compiletime_assert_219' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE().
      _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
                                          ^
    ./include/linux/compiler.h:373:4: note: in definition of macro '__compiletime_assert'
        prefix ## suffix();    \
        ^
    ./include/linux/compiler.h:392:2: note: in expansion of macro '_compiletime_assert'
      _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      ^
    ./include/linux/compiler.h:405:2: note: in expansion of macro 'compiletime_assert'
      compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
      ^
    ./include/linux/compiler.h:291:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      compiletime_assert_rwonce_type(x);    \
      ^
    mm/gup.c:2199:9: note: in expansion of macro 'READ_ONCE'
      return READ_ONCE(*ptep);
             ^
    make[2]: *** [mm/gup.o] Error 1
    
    Define ptep_get() on 8xx when using 16k pages.
    
    Fixes: 9e343b46 ("READ_ONCE: Enforce atomicity for {READ,WRITE}_ONCE() memory accesses")
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
    Acked-by: default avatarWill Deacon <will@kernel.org>
    Acked-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/341688399c1b102756046d19ea6ce39db1ae4742.1592225558.git.christophe.leroy@csgroup.eu
    c0e1c8c2
pgtable.h 10.7 KB