diff mbox series

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

Message ID 20180117191612.17108-13-xypron.glpk@gmx.de
State Superseded, archived
Delegated to: Alexander Graf
Headers show
Series efi_loader: enable EFI driver provided block device | expand

Commit Message

Heinrich Schuchardt Jan. 17, 2018, 7:16 p.m. UTC
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@gmx.de>
---
v2
	no change
---
 include/efi_api.h         | 10 ++++++++--
 lib/efi_loader/efi_disk.c |  8 ++++----
 2 files changed, 12 insertions(+), 6 deletions(-)

Comments

Alexander Graf Jan. 18, 2018, 3:51 p.m. UTC | #1
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@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 */
>
diff mbox series

Patch

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;
+	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 */