This commit is contained in:
joborun linux 2023-06-16 22:27:37 +03:00
parent 9a84198e9b
commit 8117c70bf6
3 changed files with 223 additions and 8 deletions

View File

@ -0,0 +1,205 @@
From 43384e88c1a38631da905b7086bc76225602808a Mon Sep 17 00:00:00 2001
From: Daniel Kiper <daniel.kiper@oracle.com>
Date: Thu, 15 Jun 2023 16:45:00 +0200
Subject: [PATCH 1/1] efi: Add missing __grub_efi_api attributes
The commit bb4aa6e06 (efi: Drop all uses of efi_call_XX() wrappers) did
not add some __grub_efi_api attributes to the EFI calls. Lack of them
led to hangs on x86_64-efi target. So, let's add missing __grub_efi_api
attributes.
Fixes: bb4aa6e06 (efi: Drop all uses of efi_call_XX() wrappers)
Reported-by: Christian Hesse <list@eworm.de>
Reported-by: Robin Candau <antiz@archlinux.org>
Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com>
---
include/grub/efi/cc.h | 30 +++++++++++-----------
include/grub/efi/console_control.h | 16 ++++++------
include/grub/efi/graphics_output.h | 32 ++++++++++++------------
include/grub/efi/uga_draw.h | 40 +++++++++++++++---------------
4 files changed, 59 insertions(+), 59 deletions(-)
diff --git a/include/grub/efi/cc.h b/include/grub/efi/cc.h
index 896030689..978e0cdfe 100644
--- a/include/grub/efi/cc.h
+++ b/include/grub/efi/cc.h
@@ -124,27 +124,27 @@ typedef struct grub_efi_cc_boot_service_capability grub_efi_cc_boot_service_capa
struct grub_efi_cc_protocol
{
grub_efi_status_t
- (*get_capability) (struct grub_efi_cc_protocol *this,
- grub_efi_cc_boot_service_capability_t *ProtocolCapability);
+ (__grub_efi_api *get_capability) (struct grub_efi_cc_protocol *this,
+ grub_efi_cc_boot_service_capability_t *ProtocolCapability);
grub_efi_status_t
- (*get_event_log) (struct grub_efi_cc_protocol *this,
- grub_efi_cc_event_log_format_t EventLogFormat,
- grub_efi_physical_address_t *EventLogLocation,
- grub_efi_physical_address_t *EventLogLastEntry,
- grub_efi_boolean_t *EventLogTruncated);
+ (__grub_efi_api *get_event_log) (struct grub_efi_cc_protocol *this,
+ grub_efi_cc_event_log_format_t EventLogFormat,
+ grub_efi_physical_address_t *EventLogLocation,
+ grub_efi_physical_address_t *EventLogLastEntry,
+ grub_efi_boolean_t *EventLogTruncated);
grub_efi_status_t
- (*hash_log_extend_event) (struct grub_efi_cc_protocol *this,
- grub_efi_uint64_t Flags,
- grub_efi_physical_address_t DataToHash,
- grub_efi_uint64_t DataToHashLen,
- grub_efi_cc_event_t *EfiCcEvent);
+ (__grub_efi_api *hash_log_extend_event) (struct grub_efi_cc_protocol *this,
+ grub_efi_uint64_t Flags,
+ grub_efi_physical_address_t DataToHash,
+ grub_efi_uint64_t DataToHashLen,
+ grub_efi_cc_event_t *EfiCcEvent);
grub_efi_status_t
- (*map_pcr_to_mr_index) (struct grub_efi_cc_protocol *this,
- grub_efi_uint32_t PcrIndex,
- grub_efi_cc_mr_index_t *MrIndex);
+ (__grub_efi_api *map_pcr_to_mr_index) (struct grub_efi_cc_protocol *this,
+ grub_efi_uint32_t PcrIndex,
+ grub_efi_cc_mr_index_t *MrIndex);
};
typedef struct grub_efi_cc_protocol grub_efi_cc_protocol_t;
diff --git a/include/grub/efi/console_control.h b/include/grub/efi/console_control.h
index bb5fd038e..008ac5896 100644
--- a/include/grub/efi/console_control.h
+++ b/include/grub/efi/console_control.h
@@ -41,18 +41,18 @@ typedef enum grub_efi_screen_mode grub_efi_screen_mode_t;
struct grub_efi_console_control_protocol
{
grub_efi_status_t
- (*get_mode) (struct grub_efi_console_control_protocol *this,
- grub_efi_screen_mode_t *mode,
- grub_efi_boolean_t *uga_exists,
- grub_efi_boolean_t *std_in_locked);
+ (__grub_efi_api *get_mode) (struct grub_efi_console_control_protocol *this,
+ grub_efi_screen_mode_t *mode,
+ grub_efi_boolean_t *uga_exists,
+ grub_efi_boolean_t *std_in_locked);
grub_efi_status_t
- (*set_mode) (struct grub_efi_console_control_protocol *this,
- grub_efi_screen_mode_t mode);
+ (__grub_efi_api *set_mode) (struct grub_efi_console_control_protocol *this,
+ grub_efi_screen_mode_t mode);
grub_efi_status_t
- (*lock_std_in) (struct grub_efi_console_control_protocol *this,
- grub_efi_char16_t *password);
+ (__grub_efi_api *lock_std_in) (struct grub_efi_console_control_protocol *this,
+ grub_efi_char16_t *password);
};
typedef struct grub_efi_console_control_protocol grub_efi_console_control_protocol_t;
diff --git a/include/grub/efi/graphics_output.h b/include/grub/efi/graphics_output.h
index e4388127c..044e786b8 100644
--- a/include/grub/efi/graphics_output.h
+++ b/include/grub/efi/graphics_output.h
@@ -83,26 +83,26 @@ struct grub_efi_gop_mode
struct grub_efi_gop;
typedef grub_efi_status_t
-(*grub_efi_gop_query_mode_t) (struct grub_efi_gop *this,
- grub_efi_uint32_t mode_number,
- grub_efi_uintn_t *size_of_info,
- struct grub_efi_gop_mode_info **info);
+(__grub_efi_api *grub_efi_gop_query_mode_t) (struct grub_efi_gop *this,
+ grub_efi_uint32_t mode_number,
+ grub_efi_uintn_t *size_of_info,
+ struct grub_efi_gop_mode_info **info);
typedef grub_efi_status_t
-(*grub_efi_gop_set_mode_t) (struct grub_efi_gop *this,
- grub_efi_uint32_t mode_number);
+(__grub_efi_api *grub_efi_gop_set_mode_t) (struct grub_efi_gop *this,
+ grub_efi_uint32_t mode_number);
typedef grub_efi_status_t
-(*grub_efi_gop_blt_t) (struct grub_efi_gop *this,
- void *buffer,
- grub_efi_uintn_t operation,
- grub_efi_uintn_t sx,
- grub_efi_uintn_t sy,
- grub_efi_uintn_t dx,
- grub_efi_uintn_t dy,
- grub_efi_uintn_t width,
- grub_efi_uintn_t height,
- grub_efi_uintn_t delta);
+(__grub_efi_api *grub_efi_gop_blt_t) (struct grub_efi_gop *this,
+ void *buffer,
+ grub_efi_uintn_t operation,
+ grub_efi_uintn_t sx,
+ grub_efi_uintn_t sy,
+ grub_efi_uintn_t dx,
+ grub_efi_uintn_t dy,
+ grub_efi_uintn_t width,
+ grub_efi_uintn_t height,
+ grub_efi_uintn_t delta);
struct grub_efi_gop
{
diff --git a/include/grub/efi/uga_draw.h b/include/grub/efi/uga_draw.h
index a31f2672e..1ea157a7e 100644
--- a/include/grub/efi/uga_draw.h
+++ b/include/grub/efi/uga_draw.h
@@ -46,30 +46,30 @@ struct grub_efi_uga_pixel
struct grub_efi_uga_draw_protocol
{
grub_efi_status_t
- (*get_mode) (struct grub_efi_uga_draw_protocol *this,
- grub_uint32_t *width,
- grub_uint32_t *height,
- grub_uint32_t *depth,
- grub_uint32_t *refresh_rate);
+ (__grub_efi_api *get_mode) (struct grub_efi_uga_draw_protocol *this,
+ grub_uint32_t *width,
+ grub_uint32_t *height,
+ grub_uint32_t *depth,
+ grub_uint32_t *refresh_rate);
grub_efi_status_t
- (*set_mode) (struct grub_efi_uga_draw_protocol *this,
- grub_uint32_t width,
- grub_uint32_t height,
- grub_uint32_t depth,
- grub_uint32_t refresh_rate);
+ (__grub_efi_api *set_mode) (struct grub_efi_uga_draw_protocol *this,
+ grub_uint32_t width,
+ grub_uint32_t height,
+ grub_uint32_t depth,
+ grub_uint32_t refresh_rate);
grub_efi_status_t
- (*blt) (struct grub_efi_uga_draw_protocol *this,
- struct grub_efi_uga_pixel *blt_buffer,
- enum grub_efi_uga_blt_operation blt_operation,
- grub_efi_uintn_t src_x,
- grub_efi_uintn_t src_y,
- grub_efi_uintn_t dest_x,
- grub_efi_uintn_t dest_y,
- grub_efi_uintn_t width,
- grub_efi_uintn_t height,
- grub_efi_uintn_t delta);
+ (__grub_efi_api *blt) (struct grub_efi_uga_draw_protocol *this,
+ struct grub_efi_uga_pixel *blt_buffer,
+ enum grub_efi_uga_blt_operation blt_operation,
+ grub_efi_uintn_t src_x,
+ grub_efi_uintn_t src_y,
+ grub_efi_uintn_t dest_x,
+ grub_efi_uintn_t dest_y,
+ grub_efi_uintn_t width,
+ grub_efi_uintn_t height,
+ grub_efi_uintn_t delta);
};
typedef struct grub_efi_uga_draw_protocol grub_efi_uga_draw_protocol_t;
--
2.41.0

View File

@ -20,11 +20,11 @@ _GRUB_EMU_BUILD="0"
pkgname='grub'
pkgdesc='GNU GRand Unified Bootloader (2)'
epoch=2
_commit='e67a551a48192a04ab705fca832d82f850162b64'
_pkgver=2.06.r499.ge67a551a4
_commit='857af0e17b3f8df8a2e1b355e159c48ddb801419'
_pkgver=2.06.r566.g857af0e17
_unifont_ver='15.0.06'
pkgver=${_pkgver/-/}
pkgrel=02
pkgrel=01
url='https://www.gnu.org/software/grub/'
backup=('etc/default/grub'
'etc/grub.d/40_custom')
@ -59,6 +59,7 @@ source=("git+https://git.savannah.gnu.org/git/grub.git#commit=${_commit}"
'0001-00_header-add-GRUB_COLOR_-variables.patch'
'0002-10_linux-detect-archlinux-initramfs.patch'
'0003-support-dropins-for-default-configuration.patch'
'0004-efi-Add-missing-__grub_efi_api-attributes.patch'
'grub.default'
'grub.default.run'
'grub.default.66'
@ -121,6 +122,9 @@ prepare() {
echo "Patch to support dropins for default configuration..."
patch -Np1 -i "${srcdir}/0003-support-dropins-for-default-configuration.patch"
echo "Patch to efi: Add missing __grub_efi_api attributes..."
patch -Np1 -i "${srcdir}/0004-efi-Add-missing-__grub_efi_api-attributes.patch"
echo "Fix DejaVuSans.ttf location so that grub-mkfont can create *.pf2 files for starfield theme..."
sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "configure.ac"
@ -176,7 +180,7 @@ _build_grub-common_and_bios() {
if [ ! -z "${SOURCE_DATE_EPOCH}" ]; then
echo "Make info pages reproducible..."
touch -d "@${SOURCE_DATE_EPOCH}" $(find -name '*.texi')
fi
fi
echo "Run make for bios build..."
make
@ -331,9 +335,10 @@ sha256sums=(SKIP
5dee6628c48eef79812bb9e86ee772068d85e7fcebbd2b2b8d1e19d24eda9dab # 0001-00_header-add-GRUB_COLOR_-variables.patch
8488aec30a93e8fe66c23ef8c23aefda39c38389530e9e73ba3fbcc8315d244d # 0002-10_linux-detect-archlinux-initramfs.patch
b5d9fcd62ffb3c3950fdeb7089ec2dc2294ac52e9861980ad90a437dedbd3d47 # 0003-support-dropins-for-default-configuration.patch
dc892edc59817bdb474e960c645a8bdde60e6cb31e9a399359e883d0a3335738 # 0004-efi-Add-missing-__grub_efi_api-attributes.patch
83f99850b6c751d0a7bd3e6b9f1808a0c05962cdd1cd8f57cbbd63f1a3379c96 # grub.default
83f99850b6c751d0a7bd3e6b9f1808a0c05962cdd1cd8f57cbbd63f1a3379c96 # grub.default.run
adad61d98de32e241a1cf55a166699de449533fa16e15e97a326515f80639ef7 # grub.default.66
98b23d41e223bdc0a6e20bdcb3aa77e642f29b64081b1fd2f575314172fc89df) # sbat.csv
## fe6534572f9c4714ec7397b5f91306baec07e16e81e5d53b9a2f5f353a02376e grub-2:2.06.r499.ge67a551a4-02-x86_64.pkg.tar.lz
## 4351ae4dab77618b655f18bad2992067abef8ac83b9ea5d804a114ca85e79b11 grub-2:2.06.r566.g857af0e17-01-x86_64.pkg.tar.lz

View File

@ -18,11 +18,11 @@ _GRUB_EMU_BUILD="0"
pkgname='grub'
pkgdesc='GNU GRand Unified Bootloader (2)'
epoch=2
_commit='e67a551a48192a04ab705fca832d82f850162b64'
_pkgver=2.06.r499.ge67a551a4
_commit='857af0e17b3f8df8a2e1b355e159c48ddb801419'
_pkgver=2.06.r566.g857af0e17
_unifont_ver='15.0.06'
pkgver=${_pkgver/-/}
pkgrel=2
pkgrel=1
url='https://www.gnu.org/software/grub/'
arch=('x86_64')
license=('GPL3')
@ -63,6 +63,7 @@ source=("git+https://git.savannah.gnu.org/git/grub.git#commit=${_commit}"
'0001-00_header-add-GRUB_COLOR_-variables.patch'
'0002-10_linux-detect-archlinux-initramfs.patch'
'0003-support-dropins-for-default-configuration.patch'
'0004-efi-Add-missing-__grub_efi_api-attributes.patch'
'grub.default'
'sbat.csv')
@ -73,6 +74,7 @@ sha256sums=('SKIP'
'5dee6628c48eef79812bb9e86ee772068d85e7fcebbd2b2b8d1e19d24eda9dab'
'8488aec30a93e8fe66c23ef8c23aefda39c38389530e9e73ba3fbcc8315d244d'
'b5d9fcd62ffb3c3950fdeb7089ec2dc2294ac52e9861980ad90a437dedbd3d47'
'dc892edc59817bdb474e960c645a8bdde60e6cb31e9a399359e883d0a3335738'
'7df3f5cb5df7d2dfb17f4c9b5c5dedc9519ddce6f8d2c6cd43d1be17cecb65cb'
'98b23d41e223bdc0a6e20bdcb3aa77e642f29b64081b1fd2f575314172fc89df')
@ -132,6 +134,9 @@ prepare() {
echo "Patch to support dropins for default configuration..."
patch -Np1 -i "${srcdir}/0003-support-dropins-for-default-configuration.patch"
echo "Patch to efi: Add missing __grub_efi_api attributes..."
patch -Np1 -i "${srcdir}/0004-efi-Add-missing-__grub_efi_api-attributes.patch"
echo "Fix DejaVuSans.ttf location so that grub-mkfont can create *.pf2 files for starfield theme..."
sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "configure.ac"