efi_loader: correct EFI_BLOCK_IO_PROTOCOL definitions
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> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
64e4db0f11
commit
4f94865b30
@ -424,18 +424,26 @@ struct efi_block_io_media
|
||||
u32 io_align;
|
||||
u8 pad2[4];
|
||||
u64 last_block;
|
||||
/* Added in revision 2 of the protocol */
|
||||
u64 lowest_aligned_lba;
|
||||
u32 logical_blocks_per_physical_block;
|
||||
/* Added in revision 3 of the protocol */
|
||||
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);
|
||||
};
|
||||
|
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user