From: Benjamin Gray <bgray@linux•ibm.com>
To: linuxppc-dev@lists•ozlabs.org
Cc: npiggin@gmail•com, Benjamin Gray <bgray@linux•ibm.com>
Subject: [PATCH v2 06/12] powerpc/dexcr: Support custom default DEXCR value
Date: Thu, 30 Mar 2023 16:50:34 +1100 [thread overview]
Message-ID: <20230330055040.434133-7-bgray@linux.ibm.com> (raw)
In-Reply-To: <20230330055040.434133-1-bgray@linux.ibm.com>
Make the DEXCR value configurable at config time. Intentionally don't
limit possible values to support future aspects without needing kernel
updates.
The default config value enables hashst/hashchk in problem state.
This should be safe, as generally software needs to request these
instructions be included in the first place.
Signed-off-by: Benjamin Gray <bgray@linux•ibm.com>
---
New in v1
Preface with: I'm note sure on the best place to put the config.
I also don't think there's any need to zero out unknown/unsupported
bits. Reserved implies they are ignored by the hardware (from my
understanding of the ISA). Current P10s boot with all bits set; lsdexcr
(later patch) reports
uDEXCR: ff000000 (SBHE, IBRTPD, SRAPD, NPHIE, PHIE, unknown)
when you try to read it back. Leaving them be also makes it easier to
support newer aspects without a kernel update.
If arbitrary value support isn't important, it's probably a nicer
interface to make each aspect an entry in a menu.
Future work may include dynamic DEXCR controls via prctl() and sysfs.
The dynamic controls would be able to override this default DEXCR on a
per-process basis. A stronger "PPC_ENFORCE_USER_ROP_PROCTETION" config
may be required at such a time to prevent dynamically disabling the
hash checks.
---
arch/powerpc/Kconfig | 14 ++++++++++++++
arch/powerpc/kernel/cpu_setup_power.c | 3 ++-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 47017975fc2b..809ae576e19f 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -1035,6 +1035,20 @@ config PPC_MEM_KEYS
If unsure, say y.
+config PPC_DEXCR_DEFAULT
+ hex "Default DEXCR value"
+ default 0x0000000004000000
+ depends on PPC_BOOK3S_64
+ help
+ Power10 introduces the Dynamic Execution Control Register (DEXCR)
+ to provide fine grained control over various speculation and
+ security capabilities. This is used as the default DEXCR value.
+
+ It is a 64 bit value that splits into 32 bits for supervisor mode
+ and 32 bits for problem state. The default config value enables
+ the hashst/hashck instructions in userspace. See the ISA for
+ specifics of what each bit controls.
+
config PPC_SECURE_BOOT
prompt "Enable secure boot support"
bool
diff --git a/arch/powerpc/kernel/cpu_setup_power.c b/arch/powerpc/kernel/cpu_setup_power.c
index c00721801a1b..814c825a0661 100644
--- a/arch/powerpc/kernel/cpu_setup_power.c
+++ b/arch/powerpc/kernel/cpu_setup_power.c
@@ -10,6 +10,7 @@
#include <asm/reg.h>
#include <asm/synch.h>
#include <linux/bitops.h>
+#include <linux/kconfig.h>
#include <asm/cputable.h>
#include <asm/cpu_setup.h>
@@ -128,7 +129,7 @@ static void init_PMU_ISA31(void)
static void init_DEXCR(void)
{
- mtspr(SPRN_DEXCR, 0);
+ mtspr(SPRN_DEXCR, CONFIG_PPC_DEXCR_DEFAULT);
mtspr(SPRN_HASHKEYR, 0);
}
--
2.39.2
next prev parent reply other threads:[~2023-03-30 5:55 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-30 5:50 [PATCH v2 00/12] Add static DEXCR support Benjamin Gray
2023-03-30 5:50 ` [PATCH v2 01/12] powerpc/book3s: Add missing <linux/sched.h> include Benjamin Gray
2023-05-08 3:36 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 02/12] powerpc/ptrace: Add missing <linux/regset.h> include Benjamin Gray
2023-05-08 3:39 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 03/12] powerpc/dexcr: Add initial Dynamic Execution Control Register (DEXCR) support Benjamin Gray
2023-05-08 3:44 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 04/12] powerpc/dexcr: Handle hashchk exception Benjamin Gray
2023-05-08 4:00 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 05/12] powerpc/dexcr: Support userspace ROP protection Benjamin Gray
2023-05-08 4:10 ` Russell Currey
2023-03-30 5:50 ` Benjamin Gray [this message]
2023-05-08 4:24 ` [PATCH v2 06/12] powerpc/dexcr: Support custom default DEXCR value Russell Currey
2023-03-30 5:50 ` [PATCH v2 07/12] powerpc/ptrace: Expose DEXCR and HDEXCR registers to ptrace Benjamin Gray
2023-05-08 4:30 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 08/12] powerpc/ptrace: Expose HASHKEYR register " Benjamin Gray
2023-05-08 4:32 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 09/12] Documentation: Document PowerPC kernel DEXCR interface Benjamin Gray
2023-05-08 4:40 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 10/12] selftests/powerpc: Add more utility macros Benjamin Gray
2023-05-08 4:43 ` Russell Currey
2023-03-30 5:50 ` [PATCH v2 11/12] selftests/powerpc/dexcr: Add hashst/hashchk test Benjamin Gray
2023-03-30 5:50 ` [PATCH v2 12/12] selftests/powerpc/dexcr: Add DEXCR status utility lsdexcr Benjamin Gray
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=20230330055040.434133-7-bgray@linux.ibm.com \
--to=bgray@linux$(echo .)ibm.com \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=npiggin@gmail$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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