From: Joey Gouly <joey.gouly@arm.com> To: linux-arm-kernel@lists.infradead.org Cc: akpm@linux-foundation.org, aneesh.kumar@linux.ibm.com, broonie@kernel.org, catalin.marinas@arm.com, dave.hansen@linux.intel.com, joey.gouly@arm.com, maz@kernel.org, oliver.upton@linux.dev, shuah@kernel.org, will@kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, James Morse <james.morse@arm.com>, Suzuki K Poulose <suzuki.poulose@arm.com>, Zenghui Yu <yuzenghui@huawei.com> Subject: [PATCH v2 23/24] kselftest/arm64: Add test case for POR_EL0 signal frame records Date: Fri, 27 Oct 2023 19:08:49 +0100 [thread overview] Message-ID: <20231027180850.1068089-24-joey.gouly@arm.com> (raw) In-Reply-To: <20231027180850.1068089-1-joey.gouly@arm.com> Ensure that we get signal context for POR_EL0 if and only if POE is present on the system. Copied from the TPIDR2 test. Signed-off-by: Joey Gouly <joey.gouly@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Mark Brown <broonie@kernel.org> Cc: Shuah Khan <shuah@kernel.org> --- .../testing/selftests/arm64/signal/.gitignore | 1 + .../arm64/signal/testcases/poe_siginfo.c | 86 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c diff --git a/tools/testing/selftests/arm64/signal/.gitignore b/tools/testing/selftests/arm64/signal/.gitignore index 839e3a252629..6bcb27bd506b 100644 --- a/tools/testing/selftests/arm64/signal/.gitignore +++ b/tools/testing/selftests/arm64/signal/.gitignore @@ -5,6 +5,7 @@ sme_* ssve_* sve_* tpidr2_* +poe_siginfo za_* zt_* !*.[ch] diff --git a/tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c b/tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c new file mode 100644 index 000000000000..d890029304c4 --- /dev/null +++ b/tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2023 Arm Limited + * + * Verify that the POR_EL0 register context in signal frames is set up as + * expected. + */ + +#include <signal.h> +#include <ucontext.h> +#include <sys/auxv.h> +#include <sys/prctl.h> +#include <unistd.h> +#include <asm/sigcontext.h> + +#include "test_signals_utils.h" +#include "testcases.h" + +static union { + ucontext_t uc; + char buf[1024 * 128]; +} context; + +#define SYS_POR_EL0 "S3_3_C10_C2_4" + +static uint64_t get_por_el0(void) +{ + uint64_t val; + + asm volatile ( + "mrs %0, " SYS_POR_EL0 "\n" + : "=r"(val) + : + : "cc"); + + return val; +} + +int poe_present(struct tdescr *td, siginfo_t *si, ucontext_t *uc) +{ + struct _aarch64_ctx *head = GET_BUF_RESV_HEAD(context); + struct poe_context *poe_ctx; + size_t offset; + bool in_sigframe; + bool have_poe; + __u64 orig_poe; + + have_poe = getauxval(AT_HWCAP2) & HWCAP2_POE; + if (have_poe) + orig_poe = get_por_el0(); + + if (!get_current_context(td, &context.uc, sizeof(context))) + return 1; + + poe_ctx = (struct poe_context *) + get_header(head, POE_MAGIC, td->live_sz, &offset); + + in_sigframe = poe_ctx != NULL; + + fprintf(stderr, "POR_EL0 sigframe %s on system %s POE\n", + in_sigframe ? "present" : "absent", + have_poe ? "with" : "without"); + + td->pass = (in_sigframe == have_poe); + + /* + * Check that the value we read back was the one present at + * the time that the signal was triggered. + */ + if (have_poe && poe_ctx) { + if (poe_ctx->por_el0 != orig_poe) { + fprintf(stderr, "POR_EL0 in frame is %llx, was %llx\n", + poe_ctx->por_el0, orig_poe); + td->pass = false; + } + } + + return 0; +} + +struct tdescr tde = { + .name = "POR_EL0", + .descr = "Validate that POR_EL0 is present as expected", + .timeout = 3, + .run = poe_present, +}; -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Joey Gouly <joey.gouly@arm.com> To: linux-arm-kernel@lists.infradead.org Cc: akpm@linux-foundation.org, aneesh.kumar@linux.ibm.com, broonie@kernel.org, catalin.marinas@arm.com, dave.hansen@linux.intel.com, joey.gouly@arm.com, maz@kernel.org, oliver.upton@linux.dev, shuah@kernel.org, will@kernel.org, kvmarm@lists.linux.dev, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, James Morse <james.morse@arm.com>, Suzuki K Poulose <suzuki.poulose@arm.com>, Zenghui Yu <yuzenghui@huawei.com> Subject: [PATCH v2 23/24] kselftest/arm64: Add test case for POR_EL0 signal frame records Date: Fri, 27 Oct 2023 19:08:49 +0100 [thread overview] Message-ID: <20231027180850.1068089-24-joey.gouly@arm.com> (raw) In-Reply-To: <20231027180850.1068089-1-joey.gouly@arm.com> Ensure that we get signal context for POR_EL0 if and only if POE is present on the system. Copied from the TPIDR2 test. Signed-off-by: Joey Gouly <joey.gouly@arm.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Mark Brown <broonie@kernel.org> Cc: Shuah Khan <shuah@kernel.org> --- .../testing/selftests/arm64/signal/.gitignore | 1 + .../arm64/signal/testcases/poe_siginfo.c | 86 +++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c diff --git a/tools/testing/selftests/arm64/signal/.gitignore b/tools/testing/selftests/arm64/signal/.gitignore index 839e3a252629..6bcb27bd506b 100644 --- a/tools/testing/selftests/arm64/signal/.gitignore +++ b/tools/testing/selftests/arm64/signal/.gitignore @@ -5,6 +5,7 @@ sme_* ssve_* sve_* tpidr2_* +poe_siginfo za_* zt_* !*.[ch] diff --git a/tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c b/tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c new file mode 100644 index 000000000000..d890029304c4 --- /dev/null +++ b/tools/testing/selftests/arm64/signal/testcases/poe_siginfo.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2023 Arm Limited + * + * Verify that the POR_EL0 register context in signal frames is set up as + * expected. + */ + +#include <signal.h> +#include <ucontext.h> +#include <sys/auxv.h> +#include <sys/prctl.h> +#include <unistd.h> +#include <asm/sigcontext.h> + +#include "test_signals_utils.h" +#include "testcases.h" + +static union { + ucontext_t uc; + char buf[1024 * 128]; +} context; + +#define SYS_POR_EL0 "S3_3_C10_C2_4" + +static uint64_t get_por_el0(void) +{ + uint64_t val; + + asm volatile ( + "mrs %0, " SYS_POR_EL0 "\n" + : "=r"(val) + : + : "cc"); + + return val; +} + +int poe_present(struct tdescr *td, siginfo_t *si, ucontext_t *uc) +{ + struct _aarch64_ctx *head = GET_BUF_RESV_HEAD(context); + struct poe_context *poe_ctx; + size_t offset; + bool in_sigframe; + bool have_poe; + __u64 orig_poe; + + have_poe = getauxval(AT_HWCAP2) & HWCAP2_POE; + if (have_poe) + orig_poe = get_por_el0(); + + if (!get_current_context(td, &context.uc, sizeof(context))) + return 1; + + poe_ctx = (struct poe_context *) + get_header(head, POE_MAGIC, td->live_sz, &offset); + + in_sigframe = poe_ctx != NULL; + + fprintf(stderr, "POR_EL0 sigframe %s on system %s POE\n", + in_sigframe ? "present" : "absent", + have_poe ? "with" : "without"); + + td->pass = (in_sigframe == have_poe); + + /* + * Check that the value we read back was the one present at + * the time that the signal was triggered. + */ + if (have_poe && poe_ctx) { + if (poe_ctx->por_el0 != orig_poe) { + fprintf(stderr, "POR_EL0 in frame is %llx, was %llx\n", + poe_ctx->por_el0, orig_poe); + td->pass = false; + } + } + + return 0; +} + +struct tdescr tde = { + .name = "POR_EL0", + .descr = "Validate that POR_EL0 is present as expected", + .timeout = 3, + .run = poe_present, +}; -- 2.25.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-10-27 18:10 UTC|newest] Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-10-27 18:08 [PATCH v2 00/20] Permission Overlay Extension Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 01/24] arm64/sysreg: add system register POR_EL{0,1} Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 02/24] arm64/sysreg: update CPACR_EL1 register Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 03/24] arm64: cpufeature: add Permission Overlay Extension cpucap Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 04/24] arm64: disable trapping of POR_EL0 to EL2 Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 05/24] arm64: context switch POR_EL0 register Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 06/24] KVM: arm64: Save/restore POE registers Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 07/24] arm64: enable the Permission Overlay Extension for EL0 Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 08/24] arm64: add POIndex defines Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 09/24] arm64: define VM_PKEY_BIT* for arm64 Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 10/24] arm64: mask out POIndex when modifying a PTE Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 11/24] arm64: enable ARCH_HAS_PKEYS on arm64 Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 12/24] arm64: handle PKEY/POE faults Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 13/24] arm64: stop using generic mm_hooks.h Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 14/24] arm64: implement PKEYS support Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 15/24] arm64: add POE signal support Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-30 19:10 ` Mark Brown 2023-10-30 19:10 ` Mark Brown 2023-10-27 18:08 ` [PATCH v2 16/24] arm64: enable PKEY support for CPUs with S1POE Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 17/24] arm64: enable POE and PIE to coexist Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 18/24] kselftest/arm64: move get_header() Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 19/24] selftests: mm: move fpregs printing Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 20/24] selftests: mm: make protection_keys test work on arm64 Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-27 18:08 ` [PATCH v2 21/24] kselftest/arm64: add HWCAP test for FEAT_S1POE Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-30 19:18 ` Mark Brown 2023-10-30 19:18 ` Mark Brown 2023-10-27 18:08 ` [PATCH v2 22/24] kselftest/arm64: parse POE_MAGIC in a signal frame Joey Gouly 2023-10-27 18:08 ` Joey Gouly 2023-10-30 19:19 ` Mark Brown 2023-10-30 19:19 ` Mark Brown 2023-10-27 18:08 ` Joey Gouly [this message] 2023-10-27 18:08 ` [PATCH v2 23/24] kselftest/arm64: Add test case for POR_EL0 signal frame records Joey Gouly 2023-10-27 18:08 ` [PATCH v2 24/24] KVM: selftests: get-reg-list: add Permission Overlay registers Joey Gouly 2023-10-27 18:08 ` Joey Gouly
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=20231027180850.1068089-24-joey.gouly@arm.com \ --to=joey.gouly@arm.com \ --cc=akpm@linux-foundation.org \ --cc=aneesh.kumar@linux.ibm.com \ --cc=broonie@kernel.org \ --cc=catalin.marinas@arm.com \ --cc=dave.hansen@linux.intel.com \ --cc=james.morse@arm.com \ --cc=kvmarm@lists.linux.dev \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kselftest@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=maz@kernel.org \ --cc=oliver.upton@linux.dev \ --cc=shuah@kernel.org \ --cc=suzuki.poulose@arm.com \ --cc=will@kernel.org \ --cc=yuzenghui@huawei.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.