[U-Boot] [PATCH v2 12/18] efi_loader: correct EFI_BLOCK_IO_PROTOCOL definitions

Alexander Graf agraf at suse.de
Thu Jan 18 15:51:51 UTC 2018



On 17.01.18 20:16, Heinrich Schuchardt wrote:
> Add the revision constants.
> Depending on the revision additional fields are needed in the
> media descriptor.
> Use efi_uintn_t for number of bytes to read or write.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
> v2
> 	no change
> ---
>  include/efi_api.h         | 10 ++++++++--
>  lib/efi_loader/efi_disk.c |  8 ++++----
>  2 files changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/include/efi_api.h b/include/efi_api.h
> index 502fffed20..0bc244444d 100644
> --- a/include/efi_api.h
> +++ b/include/efi_api.h
> @@ -424,18 +424,24 @@ struct efi_block_io_media
>  	u32 io_align;
>  	u8 pad2[4];
>  	u64 last_block;

Please add comments on each field which revision it's available in. Or
alternatively revision cut lines, like /* Below is available as of
revision 2 */.


Alex

> +	u64 lowest_aligned_lba;
> +	u32 logical_blocks_per_physical_block;
> +	u32 optimal_transfer_length_granualarity;
>  };
>  
> +#define EFI_BLOCK_IO_PROTOCOL_REVISION2	0x00020001
> +#define EFI_BLOCK_IO_PROTOCOL_REVISION3	0x0002001f
> +
>  struct efi_block_io {
>  	u64 revision;
>  	struct efi_block_io_media *media;
>  	efi_status_t (EFIAPI *reset)(struct efi_block_io *this,
>  			char extended_verification);
>  	efi_status_t (EFIAPI *read_blocks)(struct efi_block_io *this,
> -			u32 media_id, u64 lba, unsigned long buffer_size,
> +			u32 media_id, u64 lba, efi_uintn_t buffer_size,
>  			void *buffer);
>  	efi_status_t (EFIAPI *write_blocks)(struct efi_block_io *this,
> -			u32 media_id, u64 lba, unsigned long buffer_size,
> +			u32 media_id, u64 lba, efi_uintn_t buffer_size,
>  			void *buffer);
>  	efi_status_t (EFIAPI *flush_blocks)(struct efi_block_io *this);
>  };
> diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c
> index 92c3f45ca5..8f84e7788e 100644
> --- a/lib/efi_loader/efi_disk.c
> +++ b/lib/efi_loader/efi_disk.c
> @@ -91,7 +91,7 @@ static efi_status_t efi_disk_rw_blocks(struct efi_block_io *this,
>  }
>  
>  static efi_status_t EFIAPI efi_disk_read_blocks(struct efi_block_io *this,
> -			u32 media_id, u64 lba, unsigned long buffer_size,
> +			u32 media_id, u64 lba, efi_uintn_t buffer_size,
>  			void *buffer)
>  {
>  	void *real_buffer = buffer;
> @@ -112,7 +112,7 @@ static efi_status_t EFIAPI efi_disk_read_blocks(struct efi_block_io *this,
>  	real_buffer = efi_bounce_buffer;
>  #endif
>  
> -	EFI_ENTRY("%p, %x, %"PRIx64", %lx, %p", this, media_id, lba,
> +	EFI_ENTRY("%p, %x, %" PRIx64 ", %zx, %p", this, media_id, lba,
>  		  buffer_size, buffer);
>  
>  	r = efi_disk_rw_blocks(this, media_id, lba, buffer_size, real_buffer,
> @@ -126,7 +126,7 @@ static efi_status_t EFIAPI efi_disk_read_blocks(struct efi_block_io *this,
>  }
>  
>  static efi_status_t EFIAPI efi_disk_write_blocks(struct efi_block_io *this,
> -			u32 media_id, u64 lba, unsigned long buffer_size,
> +			u32 media_id, u64 lba, efi_uintn_t buffer_size,
>  			void *buffer)
>  {
>  	void *real_buffer = buffer;
> @@ -147,7 +147,7 @@ static efi_status_t EFIAPI efi_disk_write_blocks(struct efi_block_io *this,
>  	real_buffer = efi_bounce_buffer;
>  #endif
>  
> -	EFI_ENTRY("%p, %x, %"PRIx64", %lx, %p", this, media_id, lba,
> +	EFI_ENTRY("%p, %x, %" PRIx64 ", %zx, %p", this, media_id, lba,
>  		  buffer_size, buffer);
>  
>  	/* Populate bounce buffer if necessary */
> 


More information about the U-Boot mailing list