From 43384e88c1a38631da905b7086bc76225602808a Mon Sep 17 00:00:00 2001 From: Daniel Kiper 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 Reported-by: Robin Candau Signed-off-by: Daniel Kiper --- 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