On Thu, Jun 15, 2023 at 04:45:00PM +0200, Daniel Kiper wrote:
> 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 <l...@eworm.de>
> Reported-by: Robin Candau <an...@archlinux.org>
> Signed-off-by: Daniel Kiper <daniel.ki...@oracle.com>

These all look like correct additions to me.

Reviewed-by: Peter Jones <pjo...@redhat.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.11.0
> 
> 
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel

-- 
        Peter


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to