linux-kselftest.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sandipan Das <sandipan@linux.ibm.com>
To: shuah@kernel.org, linux-kselftest@vger.kernel.org
Cc: linux-arch@vger.kernel.org, fweimer@redhat.com,
	dave.hansen@intel.com, x86@kernel.org, linuxram@us.ibm.com,
	mhocko@kernel.org, linux-mm@kvack.org, mingo@redhat.com,
	aneesh.kumar@linux.ibm.com, bauerman@linux.ibm.com,
	msuchanek@suse.de, mpe@ellerman.id.au,
	linuxppc-dev@lists.ozlabs.org
Subject: [PATCH v16 15/23] selftests/vm/pkeys: Fix assertion in test_pkey_alloc_exhaust()
Date: Fri, 17 Jan 2020 18:19:54 +0530	[thread overview]
Message-ID: <8f8e01c2885b6b463c4add91b21a82ac25b62603.1579265066.git.sandipan@linux.ibm.com> (raw)
In-Reply-To: <cover.1579265066.git.sandipan@linux.ibm.com>
In-Reply-To: <cover.1579265066.git.sandipan@linux.ibm.com>

From: Ram Pai <linuxram@us.ibm.com>

Some pkeys which are valid on the hardware are reserved
and not available for application use. These keys cannot
be allocated.

test_pkey_alloc_exhaust() tries to account for these and
has an assertion which validates if all available pkeys
have been exahaustively allocated. However, the expression
that is currently used is only valid for x86. On powerpc,
a pkey is additionally reserved as compared to x86. Hence,
the assertion is made to use an arch-specific helper to
get the correct count of reserved pkeys.

cc: Dave Hansen <dave.hansen@intel.com>
cc: Florian Weimer <fweimer@redhat.com>
Signed-off-by: Ram Pai <linuxram@us.ibm.com>
Signed-off-by: Sandipan Das <sandipan@linux.ibm.com>
---
 tools/testing/selftests/vm/protection_keys.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/vm/protection_keys.c b/tools/testing/selftests/vm/protection_keys.c
index 90bb3a8cd78b..a91d11c6a0ec 100644
--- a/tools/testing/selftests/vm/protection_keys.c
+++ b/tools/testing/selftests/vm/protection_keys.c
@@ -1152,6 +1152,7 @@ void test_pkey_alloc_exhaust(int *ptr, u16 pkey)
 	dprintf3("%s()::%d\n", __func__, __LINE__);
 
 	/*
+	 * On x86:
 	 * There are 16 pkeys supported in hardware.  Three are
 	 * allocated by the time we get here:
 	 *   1. The default key (0)
@@ -1159,8 +1160,16 @@ void test_pkey_alloc_exhaust(int *ptr, u16 pkey)
 	 *   3. One allocated by the test code and passed in via
 	 *      'pkey' to this function.
 	 * Ensure that we can allocate at least another 13 (16-3).
+	 *
+	 * On powerpc:
+	 * There are either 5, 28, 29 or 32 pkeys supported in
+	 * hardware depending on the page size (4K or 64K) and
+	 * platform (powernv or powervm). Four are allocated by
+	 * the time we get here. These include pkey-0, pkey-1,
+	 * exec-only pkey and the one allocated by the test code.
+	 * Ensure that we can allocate the remaining.
 	 */
-	pkey_assert(i >= NR_PKEYS-3);
+	pkey_assert(i >= (NR_PKEYS - get_arch_reserved_keys() - 1));
 
 	for (i = 0; i < nr_allocated_pkeys; i++) {
 		err = sys_pkey_free(allocated_pkeys[i]);
-- 
2.17.1


  parent reply	other threads:[~2020-01-17 12:50 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-17 12:49 [PATCH v16 00/23] selftests, powerpc, x86: Memory Protection Keys Sandipan Das
2020-01-17 12:49 ` [PATCH v16 01/23] selftests/x86/pkeys: Move selftests to arch-neutral directory Sandipan Das
2020-01-17 12:49 ` [PATCH v16 02/23] selftests/vm: Rename all references to pkru to a generic name Sandipan Das
2020-01-17 12:49 ` [PATCH v16 03/23] selftests/vm: Move generic definitions to header file Sandipan Das
2020-01-17 12:49 ` [PATCH v16 04/23] selftests/vm: Move some definitions to arch-specific header Sandipan Das
2020-01-17 12:49 ` [PATCH v16 05/23] selftests/vm: Make gcc check arguments of sigsafe_printf() Sandipan Das
2020-01-17 12:49 ` [PATCH v16 06/23] selftests/vm: Typecast references to pkey register Sandipan Das
2020-01-17 12:49 ` [PATCH v16 07/23] selftests: vm: pkeys: Add helpers for pkey bits Sandipan Das
2020-01-17 12:49 ` [PATCH v16 08/23] selftests/vm: Fix pkey_disable_clear() Sandipan Das
2020-01-17 12:49 ` [PATCH v16 09/23] selftests/vm/pkeys: Fix assertion in pkey_disable_set/clear() Sandipan Das
2020-01-17 12:49 ` [PATCH v16 10/23] selftests/vm/pkeys: Fix alloc_random_pkey() to make it really random Sandipan Das
2020-01-17 12:49 ` [PATCH v16 11/23] selftests: vm: pkeys: Use the correct huge page size Sandipan Das
2020-01-17 12:49 ` [PATCH v16 12/23] selftests/vm/pkeys: Introduce generic pkey abstractions Sandipan Das
2020-01-17 12:49 ` [PATCH v16 13/23] selftests/vm/pkeys: Introduce powerpc support Sandipan Das
2020-01-17 12:49 ` [PATCH v16 14/23] selftests/vm/pkeys: Fix number of reserved powerpc pkeys Sandipan Das
2020-01-17 12:49 ` Sandipan Das [this message]
2020-01-17 12:49 ` [PATCH v16 16/23] selftests/vm/pkeys: Improve checks to determine pkey support Sandipan Das
2020-01-17 12:49 ` [PATCH v16 17/23] selftests/vm/pkeys: Associate key on a mapped page and detect access violation Sandipan Das
2020-01-17 12:49 ` [PATCH v16 18/23] selftests/vm/pkeys: Associate key on a mapped page and detect write violation Sandipan Das
2020-01-17 12:49 ` [PATCH v16 19/23] selftests/vm/pkeys: Detect write violation on a mapped access-denied-key page Sandipan Das
2020-01-17 12:49 ` [PATCH v16 20/23] selftests/vm/pkeys: Introduce a sub-page allocator Sandipan Das
2020-01-17 12:50 ` [PATCH v16 21/23] selftests/vm/pkeys: Test correct behaviour of pkey-0 Sandipan Das
2020-01-17 12:50 ` [PATCH v16 22/23] selftests/vm/pkeys: Override access right definitions on powerpc Sandipan Das
2020-01-17 12:50 ` [PATCH v16 23/23] selftests: vm: pkeys: Use the correct page size " Sandipan Das
2020-01-17 18:02 ` [PATCH v16 00/23] selftests, powerpc, x86: Memory Protection Keys Dave Hansen
2020-01-18  9:24   ` Sandipan Das

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8f8e01c2885b6b463c4add91b21a82ac25b62603.1579265066.git.sandipan@linux.ibm.com \
    --to=sandipan@linux.ibm.com \
    --cc=aneesh.kumar@linux.ibm.com \
    --cc=bauerman@linux.ibm.com \
    --cc=dave.hansen@intel.com \
    --cc=fweimer@redhat.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=linuxram@us.ibm.com \
    --cc=mhocko@kernel.org \
    --cc=mingo@redhat.com \
    --cc=mpe@ellerman.id.au \
    --cc=msuchanek@suse.de \
    --cc=shuah@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).