On 02.02.18 13:56, Heinrich Schuchardt wrote:
> Add stubs for UpdateCapsule, QueryCapsuleCapabilities, and
> QueryVariableInfo.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
> ---
>  include/efi_api.h            | 28 +++++++++++++++++++++++++---
>  lib/efi_loader/efi_runtime.c | 29 +++++++++++++++++++++++++++++
>  2 files changed, 54 insertions(+), 3 deletions(-)
> 
> diff --git a/include/efi_api.h b/include/efi_api.h
> index 81e2fd204e..ec4ce8bd3a 100644
> --- a/include/efi_api.h
> +++ b/include/efi_api.h
> @@ -181,6 +181,17 @@ enum efi_reset_type {
>  #define EFI_RUNTIME_SERVICES_SIGNATURE       0x5652453544e5552ULL
>  #define EFI_RUNTIME_SERVICES_REVISION        0x00010000
>  
> +#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET   0x00010000
> +#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE  0x00020000
> +#define CAPSULE_FLAGS_INITIATE_RESET         0x00040000
> +
> +struct efi_capsule_header {
> +     efi_guid_t *capsule_guid;
> +     u32 header_size;
> +     u32 flags;
> +     u32 capsule_image_size;
> +};
> +
>  struct efi_runtime_services {
>       struct efi_table_hdr hdr;
>       efi_status_t (EFIAPI *get_time)(struct efi_time *time,
> @@ -210,9 +221,20 @@ struct efi_runtime_services {
>       void (EFIAPI *reset_system)(enum efi_reset_type reset_type,
>                                   efi_status_t reset_status,
>                                   unsigned long data_size, void *reset_data);
> -     void *update_capsule;
> -     void *query_capsule_caps;
> -     void *query_variable_info;
> +     efi_status_t (EFIAPI *update_capsule)(
> +                     struct efi_capsule_header **capsule_header_array,
> +                     efi_uintn_t capsule_count,
> +                     u64 scatter_gather_list);
> +     efi_status_t (EFIAPI *query_capsule_caps)(
> +                     struct efi_capsule_header **capsule_header_array,
> +                     efi_uintn_t capsule_count,
> +                     u64 maximum_capsule_size,
> +                     u32 reset_type);
> +     efi_status_t (EFIAPI *query_variable_info)(
> +                     u32 attributes,
> +                     u64 maximum_variable_storage_size,
> +                     u64 remaining_variable_storage_size,
> +                     u64 maximum_variable_size);
>  };
>  
>  /* EFI Configuration Table and GUID definitions */
> diff --git a/lib/efi_loader/efi_runtime.c b/lib/efi_loader/efi_runtime.c
> index 471ac29d60..d7c2c1e430 100644
> --- a/lib/efi_loader/efi_runtime.c
> +++ b/lib/efi_loader/efi_runtime.c
> @@ -382,6 +382,32 @@ static efi_status_t __efi_runtime EFIAPI 
> efi_invalid_parameter(void)
>       return EFI_INVALID_PARAMETER;
>  }
>  
> +efi_status_t EFIAPI efi_update_capsule(

These need to be __efi_runtime, no?

Alex

> +                     struct efi_capsule_header **capsule_header_array,
> +                     efi_uintn_t capsule_count,
> +                     u64 scatter_gather_list)
> +{
> +     return EFI_UNSUPPORTED;
> +}
> +
> +efi_status_t EFIAPI efi_query_capsule_caps(
> +                     struct efi_capsule_header **capsule_header_array,
> +                     efi_uintn_t capsule_count,
> +                     u64 maximum_capsule_size,
> +                     u32 reset_type)
> +{
> +     return EFI_UNSUPPORTED;
> +}
> +
> +efi_status_t EFIAPI efi_query_variable_info(
> +                     u32 attributes,
> +                     u64 maximum_variable_storage_size,
> +                     u64 remaining_variable_storage_size,
> +                     u64 maximum_variable_size)
> +{
> +     return EFI_UNSUPPORTED;
> +}
> +
>  struct efi_runtime_services __efi_runtime_data efi_runtime_services = {
>       .hdr = {
>               .signature = EFI_RUNTIME_SERVICES_SIGNATURE,
> @@ -399,4 +425,7 @@ struct efi_runtime_services __efi_runtime_data 
> efi_runtime_services = {
>       .set_variable = efi_set_variable,
>       .get_next_high_mono_count = (void *)&efi_device_error,
>       .reset_system = &efi_reset_system_boottime,
> +     .update_capsule = efi_update_capsule,
> +     .query_capsule_caps = efi_query_capsule_caps,
> +     .query_variable_info = efi_query_variable_info,
>  };
> 
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to