libgcrypt: Implement _gcry_get_hw_features()
Implement _gcry_get_hw_features() and enable hardware feature detection for x86_64. Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
8123561911
commit
0ff5faf8cd
@ -59,6 +59,10 @@ for x in sha256-ssse3-amd64.S sha256-avx-amd64.S sha256-avx2-bmi2-amd64.S sha256
|
|||||||
cp grub-core/lib/libgcrypt/cipher/"$x" grub-core/lib/libgcrypt-grub/cipher/"$x"
|
cp grub-core/lib/libgcrypt/cipher/"$x" grub-core/lib/libgcrypt-grub/cipher/"$x"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ -f grub-core/lib/libgcrypt-grub/src/hwfeatures.c ]; then
|
||||||
|
rm grub-core/lib/libgcrypt-grub/src/hwfeatures.c
|
||||||
|
fi
|
||||||
|
|
||||||
for x in grub-core/lib/libgcrypt-patches/*.patch; do
|
for x in grub-core/lib/libgcrypt-patches/*.patch; do
|
||||||
patch -i $x -p1
|
patch -i $x -p1
|
||||||
done
|
done
|
||||||
|
|||||||
@ -47,6 +47,7 @@ EXTRA_DIST += grub-core/lib/libgcrypt-patches/09-blake2b-hash-buffers.patch
|
|||||||
EXTRA_DIST += grub-core/lib/libgcrypt-patches/10-kdf-use-GPG-errs.patch
|
EXTRA_DIST += grub-core/lib/libgcrypt-patches/10-kdf-use-GPG-errs.patch
|
||||||
EXTRA_DIST += grub-core/lib/libgcrypt-patches/11-kdf-remove-unsupported-kdfs.patch
|
EXTRA_DIST += grub-core/lib/libgcrypt-patches/11-kdf-remove-unsupported-kdfs.patch
|
||||||
EXTRA_DIST += grub-core/lib/libgcrypt-patches/12-kdf-use-grub_divmod64.patch
|
EXTRA_DIST += grub-core/lib/libgcrypt-patches/12-kdf-use-grub_divmod64.patch
|
||||||
|
EXTRA_DIST += grub-core/lib/libgcrypt-patches/13_add_hwfeatures.patch
|
||||||
|
|
||||||
EXTRA_DIST += grub-core/lib/libtasn1-patches/0001-libtasn1-disable-code-not-needed-in-grub.patch
|
EXTRA_DIST += grub-core/lib/libtasn1-patches/0001-libtasn1-disable-code-not-needed-in-grub.patch
|
||||||
EXTRA_DIST += grub-core/lib/libtasn1-patches/0002-libtasn1-replace-strcat-with-strcpy-in-_asn1_str_cat.patch
|
EXTRA_DIST += grub-core/lib/libtasn1-patches/0002-libtasn1-replace-strcat-with-strcpy-in-_asn1_str_cat.patch
|
||||||
|
|||||||
87
grub-core/lib/libgcrypt-patches/13_add_hwfeatures.patch
Normal file
87
grub-core/lib/libgcrypt-patches/13_add_hwfeatures.patch
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
From 4403c452240417aaac7d3120c80b1325b7218768 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Gary Lin <glin@suse.com>
|
||||||
|
Date: Fri, 18 Jul 2025 15:21:51 +0800
|
||||||
|
Subject: [PATCH 1/4] libgcrypt: Implement _gcry_get_hw_features()
|
||||||
|
|
||||||
|
Implement _gcry_get_hw_features() and enable hardware feature detection
|
||||||
|
for x86_64.
|
||||||
|
|
||||||
|
Signed-off-by: Gary Lin <glin@suse.com>
|
||||||
|
---
|
||||||
|
grub-core/Makefile.gcry.def | 8 ++++
|
||||||
|
grub-core/lib/libgcrypt-grub/src/hwfeatures.c | 47 +++++++++++++++++++
|
||||||
|
2 files changed, 55 insertions(+)
|
||||||
|
create mode 100644 grub-core/lib/libgcrypt-grub/src/hwfeatures.c
|
||||||
|
|
||||||
|
diff --git a/grub-core/Makefile.gcry.def b/grub-core/Makefile.gcry.def
|
||||||
|
index a0593fa09..c8caf17dc 100644
|
||||||
|
--- a/grub-core/Makefile.gcry.def
|
||||||
|
+++ b/grub-core/Makefile.gcry.def
|
||||||
|
@@ -226,3 +226,11 @@ module = {
|
||||||
|
cppflags = '$(CPPFLAGS_GCRY)';
|
||||||
|
};
|
||||||
|
|
||||||
|
+module = {
|
||||||
|
+ name = gcry_hwfeatures;
|
||||||
|
+ common = lib/libgcrypt-grub/src/hwfeatures.c;
|
||||||
|
+ x86_64_efi = lib/libgcrypt-grub/src/hwf-x86.c;
|
||||||
|
+
|
||||||
|
+ cflags = '$(CFLAGS_GCRY)';
|
||||||
|
+ cppflags = '$(CPPFLAGS_GCRY) $(CPPFLAGS_GCRY_ASM)';
|
||||||
|
+};
|
||||||
|
diff --git a/grub-core/lib/libgcrypt-grub/src/hwfeatures.c b/grub-core/lib/libgcrypt-grub/src/hwfeatures.c
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000..4d744f8ec
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/grub-core/lib/libgcrypt-grub/src/hwfeatures.c
|
||||||
|
@@ -0,0 +1,47 @@
|
||||||
|
+/*
|
||||||
|
+ * GRUB -- GRand Unified Bootloader
|
||||||
|
+ * Copyright (C) 2025 Free Software Foundation, Inc.
|
||||||
|
+ *
|
||||||
|
+ * GRUB is free software: you can redistribute it and/or modify
|
||||||
|
+ * it under the terms of the GNU General Public License as published by
|
||||||
|
+ * the Free Software Foundation, either version 3 of the License, or
|
||||||
|
+ * (at your option) any later version.
|
||||||
|
+ *
|
||||||
|
+ * GRUB is distributed in the hope that it will be useful,
|
||||||
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
+ * GNU General Public License for more details.
|
||||||
|
+ *
|
||||||
|
+ * You should have received a copy of the GNU General Public License
|
||||||
|
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <grub/dl.h>
|
||||||
|
+GRUB_MOD_LICENSE ("GPLv3+");
|
||||||
|
+
|
||||||
|
+#include <grub/crypto.h>
|
||||||
|
+#include <grub/hwfeatures-gcry.h>
|
||||||
|
+#include "hwf-common.h"
|
||||||
|
+
|
||||||
|
+unsigned int
|
||||||
|
+_gcry_get_hw_features (void)
|
||||||
|
+{
|
||||||
|
+ static bool detected = false;
|
||||||
|
+ static unsigned int hw_features = 0;
|
||||||
|
+
|
||||||
|
+ if (grub_gcry_hwf_enabled () == false)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (detected == true)
|
||||||
|
+ return hw_features;
|
||||||
|
+
|
||||||
|
+#if defined (__x86_64__) && defined (GRUB_MACHINE_EFI)
|
||||||
|
+ hw_features = _gcry_hwf_detect_x86 ();
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ grub_dprintf ("hwfeatures", "Detected features: 0x%x\n", hw_features);
|
||||||
|
+
|
||||||
|
+ detected = true;
|
||||||
|
+
|
||||||
|
+ return hw_features;
|
||||||
|
+}
|
||||||
|
--
|
||||||
|
2.51.0
|
||||||
|
|
||||||
@ -626,11 +626,14 @@ _gcry_ct_memequal (const void *b1, const void *b2, grub_size_t len);
|
|||||||
unsigned int
|
unsigned int
|
||||||
_gcry_ct_not_memequal (const void *b1, const void *b2, grub_size_t len);
|
_gcry_ct_not_memequal (const void *b1, const void *b2, grub_size_t len);
|
||||||
|
|
||||||
|
#if defined (GRUB_UTIL)
|
||||||
static inline unsigned int _gcry_get_hw_features(void)
|
static inline unsigned int _gcry_get_hw_features (void)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
extern unsigned int _gcry_get_hw_features (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
void *_gcry_malloc(grub_size_t n);
|
void *_gcry_malloc(grub_size_t n);
|
||||||
void *_gcry_malloc_secure(grub_size_t n);
|
void *_gcry_malloc_secure(grub_size_t n);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user