diff mbox series

[-next,v2,2/3] RISC-V: uapi: add HWCAP for Bitmanip/Scalar Crypto

Message ID YoS7lgTmcRT0q9y+@Sun (mailing list archive)
State New
Headers show
Series RISC-V: Add Bitmanip/Scalar Crypto HWCAP | expand

Commit Message

Hongren Zheng May 18, 2022, 9:25 a.m. UTC
userspace currently lacks a way to detect whether the
platform has Bitmanip/Scalar Crypto capability,
this commit provides a way such that the userspace
can detect it.

RISC-V currently still has no mature mechanism,
but no matter how things in the spec changes,
(no matter how "M" mode things change), the kernel
still needs to offer some API to the userspace.

More discussion can be found at
https://github.com/openssl/openssl/pull/18197
Userspace currently has to use env var to detect them.

This commit along does not assume any specific mechanism
below kernel.

Tested-by: Jiatai He <jiatai2021@iscas.ac.cn>
Signed-off-by: Hongren (Zenithal) Zheng <i@zenithal.me>
---
 arch/riscv/include/uapi/asm/hwcap.h | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

Comments

Conor Dooley May 18, 2022, 9:39 a.m. UTC | #1
On 18/05/2022 10:25, Hongren (Zenithal) Zheng wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> userspace currently lacks a way to detect whether the
> platform has Bitmanip/Scalar Crypto capability,
> this commit provides a way such that the userspace
> can detect it.
> 
> RISC-V currently still has no mature mechanism,
> but no matter how things in the spec changes,
> (no matter how "M" mode things change), the kernel
> still needs to offer some API to the userspace.
> 
> More discussion can be found at
> https://github.com/openssl/openssl/pull/18197
> Userspace currently has to use env var to detect them.
> 
> This commit along does not assume any specific mechanism
> below kernel.

s/along/alone?

But I think you could rewrite this sentence to make it
clearer, I had to read it more than once to see if that was
actually a typo or not.
Possibly swap "This commit" for "This interface" or similar,
both here and in the first paragraph.
Maybe something like:

"This interface does not make any assumptions about the
underlying hardware"

Thanks,
Conor.

> 
> Tested-by: Jiatai He <jiatai2021@iscas.ac.cn>
> Signed-off-by: Hongren (Zenithal) Zheng <i@zenithal.me>
> ---
>   arch/riscv/include/uapi/asm/hwcap.h | 22 ++++++++++++++++++++++
>   1 file changed, 22 insertions(+)
> 
> diff --git a/arch/riscv/include/uapi/asm/hwcap.h b/arch/riscv/include/uapi/asm/hwcap.h
> index 46dc3f5ee99f..bfed3e5c338c 100644
> --- a/arch/riscv/include/uapi/asm/hwcap.h
> +++ b/arch/riscv/include/uapi/asm/hwcap.h
> @@ -22,4 +22,26 @@
>   #define COMPAT_HWCAP_ISA_D     (1 << ('D' - 'A'))
>   #define COMPAT_HWCAP_ISA_C     (1 << ('C' - 'A'))
> 
> +/*
> + * HWCAP2 flags - for elf_hwcap2 (in kernel) and AT_HWCAP2
> + *
> + * As only 32 bits of elf_hwcap (in kernel) could be used
> + * and RISC-V has reserved 26 bits of it, other caps like
> + * bitmanip and crypto can not be placed in AT_HWCAP
> + */
> +#define COMPAT_HWCAP2_ISA_ZBA   (1 <<  0)
> +#define COMPAT_HWCAP2_ISA_ZBB   (1 <<  1)
> +#define COMPAT_HWCAP2_ISA_ZBC   (1 <<  2)
> +#define COMPAT_HWCAP2_ISA_ZBS   (1 <<  3)
> +#define COMPAT_HWCAP2_ISA_ZBKB  (1 <<  4)
> +#define COMPAT_HWCAP2_ISA_ZBKC  (1 <<  5)
> +#define COMPAT_HWCAP2_ISA_ZBKX  (1 <<  6)
> +#define COMPAT_HWCAP2_ISA_ZKND  (1 <<  7)
> +#define COMPAT_HWCAP2_ISA_ZKNE  (1 <<  8)
> +#define COMPAT_HWCAP2_ISA_ZKNH  (1 <<  9)
> +#define COMPAT_HWCAP2_ISA_ZKSED (1 << 10)
> +#define COMPAT_HWCAP2_ISA_ZKSH  (1 << 11)
> +#define COMPAT_HWCAP2_ISA_ZKR   (1 << 12)
> +#define COMPAT_HWCAP2_ISA_ZKT   (1 << 13)
> +
>   #endif /* _UAPI_ASM_RISCV_HWCAP_H */
> --
> 2.35.1
> 
> 
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
Hongren Zheng May 18, 2022, 11 a.m. UTC | #2
On Wed, May 18, 2022 at 09:39:53AM +0000, Conor.Dooley@microchip.com wrote:
> On 18/05/2022 10:25, Hongren (Zenithal) Zheng wrote:
> > EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> > 
> > userspace currently lacks a way to detect whether the
> > platform has Bitmanip/Scalar Crypto capability,
> > this commit provides a way such that the userspace
> > can detect it.
> > 
> > RISC-V currently still has no mature mechanism,
> > but no matter how things in the spec changes,
> > (no matter how "M" mode things change), the kernel
> > still needs to offer some API to the userspace.
> > 
> > More discussion can be found at
> > https://github.com/openssl/openssl/pull/18197
> > Userspace currently has to use env var to detect them.
> > 
> > This commit along does not assume any specific mechanism
> > below kernel.
> 
> s/along/alone?

Thanks for catching this typo!

> 
> But I think you could rewrite this sentence to make it
> clearer, I had to read it more than once to see if that was
> actually a typo or not.
> Possibly swap "This commit" for "This interface" or similar,
> both here and in the first paragraph.
> Maybe something like:
> 
> "This interface does not make any assumptions about the
> underlying hardware"

Will use this kind of description in the next version.

> 
> Thanks,
> Conor.
diff mbox series

Patch

diff --git a/arch/riscv/include/uapi/asm/hwcap.h b/arch/riscv/include/uapi/asm/hwcap.h
index 46dc3f5ee99f..bfed3e5c338c 100644
--- a/arch/riscv/include/uapi/asm/hwcap.h
+++ b/arch/riscv/include/uapi/asm/hwcap.h
@@ -22,4 +22,26 @@ 
 #define COMPAT_HWCAP_ISA_D	(1 << ('D' - 'A'))
 #define COMPAT_HWCAP_ISA_C	(1 << ('C' - 'A'))
 
+/*
+ * HWCAP2 flags - for elf_hwcap2 (in kernel) and AT_HWCAP2
+ *
+ * As only 32 bits of elf_hwcap (in kernel) could be used
+ * and RISC-V has reserved 26 bits of it, other caps like
+ * bitmanip and crypto can not be placed in AT_HWCAP
+ */
+#define COMPAT_HWCAP2_ISA_ZBA   (1 <<  0)
+#define COMPAT_HWCAP2_ISA_ZBB   (1 <<  1)
+#define COMPAT_HWCAP2_ISA_ZBC   (1 <<  2)
+#define COMPAT_HWCAP2_ISA_ZBS   (1 <<  3)
+#define COMPAT_HWCAP2_ISA_ZBKB  (1 <<  4)
+#define COMPAT_HWCAP2_ISA_ZBKC  (1 <<  5)
+#define COMPAT_HWCAP2_ISA_ZBKX  (1 <<  6)
+#define COMPAT_HWCAP2_ISA_ZKND  (1 <<  7)
+#define COMPAT_HWCAP2_ISA_ZKNE  (1 <<  8)
+#define COMPAT_HWCAP2_ISA_ZKNH  (1 <<  9)
+#define COMPAT_HWCAP2_ISA_ZKSED (1 << 10)
+#define COMPAT_HWCAP2_ISA_ZKSH  (1 << 11)
+#define COMPAT_HWCAP2_ISA_ZKR   (1 << 12)
+#define COMPAT_HWCAP2_ISA_ZKT   (1 << 13)
+
 #endif /* _UAPI_ASM_RISCV_HWCAP_H */