Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: vm: pkeys: use the correct page size on powerpc

Both 4K and 64K pages are supported on powerpc. Parts of the selftest
code perform alignment computations based on the PAGE_SIZE macro which is
currently hardcoded to 64K for powerpc. This causes some test failures on
kernels configured with 4K page size.

In some cases, we need to enforce function alignment on page size. Since
this can only be done at build time, 64K is used as the alignment factor
as that also ensures 4K alignment.

Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Dave Hansen <dave.hansen@intel.com>
Cc: "Desnes A. Nunes do Rosario" <desnesn@linux.vnet.ibm.com>
Cc: Florian Weimer <fweimer@redhat.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Ram Pai <linuxram@us.ibm.com>
Cc: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Michal Suchanek <msuchanek@suse.de>
Cc: Shuah Khan <shuah@kernel.org>
Link: http://lkml.kernel.org/r/5dcdfbf3353acdc90f315172e800b49f5ca21299.1585646528.git.sandipan@linux.ibm.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Sandipan Das and committed by
Linus Torvalds
473c3cc8 e9506394

+6 -1
+1 -1
tools/testing/selftests/vm/pkey-powerpc.h
··· 32 32 pkey-31 and exec-only key */ 33 33 #define PKEY_BITS_PER_PKEY 2 34 34 #define HPAGE_SIZE (1UL << 24) 35 - #define PAGE_SIZE (1UL << 16) 35 + #define PAGE_SIZE sysconf(_SC_PAGESIZE) 36 36 37 37 static inline u32 pkey_bit_position(int pkey) 38 38 {
+5
tools/testing/selftests/vm/protection_keys.c
··· 146 146 * will then fault, which makes sure that the fault code handles 147 147 * execute-only memory properly. 148 148 */ 149 + #ifdef __powerpc64__ 150 + /* This way, both 4K and 64K alignment are maintained */ 151 + __attribute__((__aligned__(65536))) 152 + #else 149 153 __attribute__((__aligned__(PAGE_SIZE))) 154 + #endif 150 155 void lots_o_noops_around_write(int *write_to_me) 151 156 { 152 157 dprintf3("running %s()\n", __func__);