powerpc: Add AT_HWCAP2 to indicate V.CRYPTO category support
PATCH 1/1 powerpc: Add AT_HWCAP2 to indicate V.CRYPTO category support
The Vector Crypto category instructions are supported by current POWER8 chips, advertise them to userspace using a specific bit to properly differentiate with chips of the same architecture level that might not have them.
--
arch/powerpc/include/uapi/asm/cputable.h +1 -0
@@ -41,5 +41,6 @@#define PPC_FEATURE2_EBB 0x10000000#define PPC_FEATURE2_ISEL 0x08000000#define PPC_FEATURE2_TAR 0x04000000 +#define PPC_FEATURE2_VEC_CRYPTO 0x02000000#endif /* _UAPI__ASM_POWERPC_CPUTABLE_H */
arch/powerpc/kernel/cputable.c +2 -1
@@ -109,7 +109,8 @@ extern void __restore_cpu_e6500(void); PPC_FEATURE_PSERIES_PERFMON_COMPAT)#define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \ PPC_FEATURE2_HTM_COMP | PPC_FEATURE2_DSCR | \ - PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR) + PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \ + PPC_FEATURE2_VEC_CRYPTO)#define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ PPC_FEATURE_TRUE_LE | \ PPC_FEATURE_HAS_ALTIVEC_COMP)
The precedent we have used is that features that refer to ISA Categories include _HAS_ following the PPC_FEATURE[2]. So GLIBC specifies in hwcap.h:
/* Feature definitions in AT_HWCAP2. */
#define PPC_FEATURE2_ARCH_2_07 0x80000000 /* ISA 2.07 */
#define PPC_FEATURE2_HAS_HTM 0x40000000 /* Hardware Transactional
Memory */
#define PPC_FEATURE2_HAS_DSCR 0x20000000 /* Data Stream Control
Register */
#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */ #define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */ #define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */
This was carried from the original AT_HWCAP defines.
$ grep _HAS_ ./sysdeps/powerpc/bits/hwcap.h #define PPC_FEATURE_HAS_ALTIVEC 0x10000000 /* SIMD/Vector Unit. */ #define PPC_FEATURE_HAS_FPU 0x08000000 /* Floating Point Unit. */ #define PPC_FEATURE_HAS_MMU 0x04000000 /* Memory Management Unit. */ #define PPC_FEATURE_HAS_4xxMAC 0x02000000 /* 4xx Multiply Accumulator. */ #define PPC_FEATURE_HAS_SPE 0x00800000 /* Signal Processing ext. */ #define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 /* SPE Float. */ #define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */ #define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */ #define PPC_FEATURE_HAS_VSX 0x00000080 /* P7 Vector Extension. */
So could we agree on PPC_FEATURE2_HAS_VEC_CRYPTO or the shorter PPC_FEATURE2_HAS_VCRYPTO?
Steven J. Munroe
Linux on Power Toolchain Architect
IBM Corporation, Linux Technology Center
From: Benjamin Herrenschmidt <[email protected]>
To: [email protected]
Cc: Steve Munroe/Rochester/IBM@IBMUS, Hanns-Joachim Uhl
<[email protected]>, Diane Brent/Poughkeepsie/IBM@IBMUS, Jeffrey Scheel/Rochester/IBM@IBMUS, Adhemerval Zanella <[email protected]>
Date: 06/10/2014 12:05 AM
Subject: [PATCH] powerpc: Add AT_HWCAP2 to indicate V.CRYPTO category
support
The Vector Crypto category instructions are supported by current POWER8 chips, advertise them to userspace using a specific bit to properly differentiate with chips of the same architecture level that might not have them.
--
(quoted diff) +0 -0
b/arch/powerpc/include/uapi/asm/cputable.h
index 5b76579..de2c0e4 100644
arch/powerpc/include/uapi/asm/cputable.h +1 -0
@@ -41,5 +41,6 @@#define PPC_FEATURE2_EBB 0x10000000#define PPC_FEATURE2_ISEL 0x08000000#define PPC_FEATURE2_TAR 0x04000000 +#define PPC_FEATURE2_VEC_CRYPTO 0x02000000#endif /* _UAPI__ASM_POWERPC_CPUTABLE_H */
(quoted diff) +0 -0
b/arch/powerpc/kernel/cputable.c
index c1faade..11da04a 100644
arch/powerpc/kernel/cputable.c +0 -0
@@ -109,7 +109,8 @@ extern void __restore_cpu_e6500(void);
PPC_FEATURE_PSERIES_PERFMON_COMPAT)
#define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \
PPC_FEATURE2_HTM_COMP |PPC_FEATURE2_DSCR | \
- PPC_FEATURE2_ISEL |PPC_FEATURE2_TAR)
+ PPC_FEATURE2_ISEL |PPC_FEATURE2_TAR | \
+ PPC_FEATURE2_VEC_CRYPTO)
#define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T
|\
PPC_FEATURE_TRUE_LE | \
PPC_FEATURE_HAS_ALTIVEC_COMP)
Quoted 8 lines · Steve Munroe
The precedent we have used is that features that refer to ISA Categories include _HAS_ following the PPC_FEATURE[2]. So GLIBC specifies in
hwcap.h:/* Feature definitions in
AT_HWCAP2. */
#definePPC_FEATURE2_ARCH_2_070x80000000/* ISA 2.07 */
#definePPC_FEATURE2_HAS_HTM0x40000000/* Hardware Transactional
Memory */
#definePPC_FEATURE2_HAS_DSCR0x20000000/* Data Stream Control
Register */
Quoted 5 lines
#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */ #define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */ #define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */This was carried from the original
AT_HWCAPdefines.
Off, they don't have the "HAS" in the kernel definitions...
Quoted 11 lines
$ grep _HAS_ ./sysdeps/powerpc/bits/hwcap.h #define PPC_FEATURE_HAS_ALTIVEC 0x10000000 /* SIMD/Vector Unit. */ #define PPC_FEATURE_HAS_FPU 0x08000000 /* Floating Point Unit. */ #define PPC_FEATURE_HAS_MMU 0x04000000 /* Memory Management Unit. */ #define PPC_FEATURE_HAS_4xxMAC 0x02000000 /* 4xx Multiply Accumulator. */ #define PPC_FEATURE_HAS_SPE 0x00800000 /* Signal Processing ext. */ #define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 /* SPE Float. */ #define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 /* SPE Double. */ #define PPC_FEATURE_HAS_DFP 0x00000400 /* Decimal FP Unit */ #define PPC_FEATURE_HAS_VSX 0x00000080 /* P7 Vector Extension. */
Quoted 1 line
So could we agree on
PPC_FEATURE2_HAS_VEC_CRYPTOor the shorterPPC_FEATURE2_HAS_VCRYPTO?
Well, I made it consistent with the other HWCAP2 bits exposed by the kernel which seem to differ from the glibc versions :-(
In any case, I've merged it but I can do a follow up patch that adds the _HAS_ everywhere, hopefully nobody in userspace use the kernel definition and they use the glibc one instead.
In that case, go for VCRYPTO.
Cheers,
Ben.
Quoted 56 lines
Steven J. Munroe
Linux on Power Toolchain Architect
IBM Corporation, Linux Technology CenterInactive hide details for Benjamin Herrenschmidt ---06/10/2014 12:05:07 AM---The Vector Crypto category instructions are supporBenjamin Herrenschmidt ---06/10/2014 12:05:07 AM---The Vector Crypto category instructions are supported by current POWER8 chips, advertise them to use
From: Benjamin Herrenschmidt <[email protected]>
To: [email protected]
Cc: Steve Munroe/Rochester/IBM@IBMUS, Hanns-Joachim Uhl <[email protected]>, Diane Brent/Poughkeepsie/IBM@IBMUS, Jeffrey Scheel/Rochester/IBM@IBMUS, Adhemerval Zanella <[email protected]>
Date: 06/10/2014 12:05 AM
Subject: [PATCH] powerpc: AddAT_HWCAP2to indicate V.CRYPTO category support______________________________________________________________________
The Vector Crypto category instructions are supported by current POWER8 chips, advertise them to userspace using a specific bit to properly differentiate with chips of the same architecture level that might not have them.
Signed-off-by Benjamin Herrenschmidt <[email protected]>CC <[email protected]> [v3.10+]--
arch/powerpc/include/uapi/asm/cputable.h +1
-0@@ -41,5 +41,6 @@#define PPC_FEATURE2_EBB 0x10000000#define PPC_FEATURE2_ISEL 0x08000000#define PPC_FEATURE2_TAR 0x04000000 +#define PPC_FEATURE2_VEC_CRYPTO 0x02000000#endif /* _UAPI__ASM_POWERPC_CPUTABLE_H */ arch/powerpc/kernel/cputable.c +2
-1@@ -109,7 +109,8 @@ extern void __restore_cpu_e6500(void); PPC_FEATURE_PSERIES_PERFMON_COMPAT)#define COMMON_USER2_POWER8 (PPC_FEATURE2_ARCH_2_07 | \ PPC_FEATURE2_HTM_COMP | PPC_FEATURE2_DSCR | \ - PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR) + PPC_FEATURE2_ISEL | PPC_FEATURE2_TAR | \ + PPC_FEATURE2_VEC_CRYPTO)#define COMMON_USER_PA6T (COMMON_USER_PPC64 | PPC_FEATURE_PA6T |\ PPC_FEATURE_TRUE_LE | \ PPC_FEATURE_HAS_ALTIVEC_COMP)