[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