Index | Thread | Search

From:
George Koehler <kernigh@gmail.com>
Subject:
Re: powerpc64: filling in a few more HWCAP flags
To:
tech@openbsd.org
Cc:
Brad Smith <brad@comstyle.com>
Date:
Mon, 20 Jul 2026 21:41:49 -0400

Download raw body.

Thread
I'm looking for an ok on this diff, which sets elf_aux_info(3) flags
for Power ISA 2.06, 2.07, isel, and crypto.  The diff is the same as
I sent last week (12 Jul).

libgcrypt in ports sees the flags and enables crypto acceleration.
SHA256 is slightly faster, and AES128 CBC encryption is over twice as
fast, in accelerated libgcrypt (versus unaccelerated LibreSSL).  nss
and nettle didn't accelerate and will need a patch to start calling
elf_aux_info.  LibreSSL will need some asm.

ok?

Index: arch/powerpc/include/elf.h
===================================================================
RCS file: /cvs/src/sys/arch/powerpc/include/elf.h,v
diff -u -p -r1.3 elf.h
--- arch/powerpc/include/elf.h	19 Feb 2025 18:25:03 -0000	1.3
+++ arch/powerpc/include/elf.h	13 Jul 2026 00:32:09 -0000
@@ -54,6 +54,7 @@ extern unsigned long hwcap2;
 #define	PPC_FEATURE2_ISEL	0x08000000
 #define	PPC_FEATURE2_TAR	0x04000000
 #define	PPC_FEATURE2_HAS_VEC_CRYPTO	0x02000000
+#define	PPC_FEATURE2_VEC_CRYPTO	0x02000000
 #define	PPC_FEATURE2_HTM_NOSC	0x01000000
 #define	PPC_FEATURE2_ARCH_3_00	0x00800000
 #define	PPC_FEATURE2_HAS_IEEE128	0x00400000
Index: arch/powerpc64/include/elf.h
===================================================================
RCS file: /cvs/src/sys/arch/powerpc64/include/elf.h,v
diff -u -p -r1.3 elf.h
--- arch/powerpc64/include/elf.h	19 Feb 2025 18:25:03 -0000	1.3
+++ arch/powerpc64/include/elf.h	13 Jul 2026 00:32:09 -0000
@@ -54,6 +54,7 @@ extern unsigned long hwcap2;
 #define	PPC_FEATURE2_ISEL	0x08000000
 #define	PPC_FEATURE2_TAR	0x04000000
 #define	PPC_FEATURE2_HAS_VEC_CRYPTO	0x02000000
+#define	PPC_FEATURE2_VEC_CRYPTO	0x02000000
 #define	PPC_FEATURE2_HTM_NOSC	0x01000000
 #define	PPC_FEATURE2_ARCH_3_00	0x00800000
 #define	PPC_FEATURE2_HAS_IEEE128	0x00400000
Index: arch/powerpc64/powerpc64/cpu.c
===================================================================
RCS file: /cvs/src/sys/arch/powerpc64/powerpc64/cpu.c,v
diff -u -p -r1.30 cpu.c
--- arch/powerpc64/powerpc64/cpu.c	28 Nov 2024 18:54:36 -0000	1.30
+++ arch/powerpc64/powerpc64/cpu.c	13 Jul 2026 00:32:09 -0000
@@ -224,9 +224,11 @@ cpu_init_features(void)
 {
 	uint32_t pvr = mfpvr();
 
-	hwcap = PPC_FEATURE_32 | PPC_FEATURE_64 | PPC_FEATURE_HAS_FPU |
-	    PPC_FEATURE_HAS_MMU | PPC_FEATURE_HAS_ALTIVEC |
-	    PPC_FEATURE_HAS_VSX;
+	hwcap = PPC_FEATURE_32 | PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC |
+	    PPC_FEATURE_HAS_FPU | PPC_FEATURE_HAS_MMU |
+	    PPC_FEATURE_ARCH_2_06 | PPC_FEATURE_HAS_VSX;
+	hwcap2 = PPC_FEATURE2_ARCH_2_07 | PPC_FEATURE2_ISEL |
+	    PPC_FEATURE2_VEC_CRYPTO;
 
 	switch (CPU_VERSION(pvr)) {
 	case CPU_IBMPOWER9: