Index | Thread | Search

From:
Mark Kettenis <mark.kettenis@xs4all.nl>
Subject:
Re: powerpc64: filling in a few more HWCAP flags
To:
George Koehler <kernigh@gmail.com>
Cc:
tech@openbsd.org, brad@comstyle.com
Date:
Tue, 21 Jul 2026 08:59:10 +0200

Download raw body.

Thread
> Date: Mon, 20 Jul 2026 21:41:49 -0400
> From: George Koehler <kernigh@gmail.com>
> 
> 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?

ok kettenis@

> 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:
> 
>