[openssl/openssl] d64d53: vpaes: LoongArch: Use getauxval(AT_HWCAP) for LSX ...

Xi Ruoyao noreply at github.com
Fri Jul 28 02:42:13 UTC 2023


  Branch: refs/heads/openssl-3.1
  Home:   https://github.com/openssl/openssl
  Commit: d64d53a65498c5bd1ba268e733fb6e10ec4f7144
      https://github.com/openssl/openssl/commit/d64d53a65498c5bd1ba268e733fb6e10ec4f7144
  Author: Xi Ruoyao <xry111 at xry111.site>
  Date:   2023-07-28 (Fri, 28 Jul 2023)

  Changed paths:
    M crypto/loongarch_arch.h
    M crypto/loongarchcap.c
    M include/crypto/aes_platform.h

  Log Message:
  -----------
  vpaes: LoongArch: Use getauxval(AT_HWCAP) for LSX detection

Running LSX instructions requires both the hardware support and the
kernel support.  The `cpucfg` instruction only tests the hardware
support, causing a SIGILL if the hardware supports LSX but the kernel
does not.

Use `getauxval(AT_HWCAP)` as the ["Software Development and Build
Convention for LoongArch Architectures"][1] manual suggests.

The LOONGARCH_HWCAP_LSX and LOONGARCH_HWCAP_LASX bits are copied from
the manual too.  In Glibc 2.38 they'll be provided by <sys/auxv.h> as
well, but they are unavailable in earlier Glibc versions so we cannot
rely on it.

The getauxval syscall and Glibc wrapper are available since day one
(Linux-5.19 and Glibc-2.36) for LoongArch.

Fixes #21508.

[1]:https://github.com/loongson/la-softdev-convention/blob/master/la-softdev-convention.adoc#kernel-constraints

Reviewed-by: Tomas Mraz <tomas at openssl.org>
Reviewed-by: Tom Cosgrove <tom.cosgrove at arm.com>
Reviewed-by: Paul Dale <pauli at openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21509)

(cherry picked from commit c612289b77c37f7295d5af0d0e6b6c04e6ba727c)




More information about the openssl-commits mailing list