@@ -11,11 +11,11 @@ struct romfile_loader_entry_s {
u32 command;
union {
/*
* COMMAND_ALLOCATE - allocate a table from @alloc.file
* subject to @alloc.align alignment (must be power of 2)
- * and @alloc.zone (can be HIGH or FSEG) requirements.
+ * and @alloc.zone (see ROMFILE_LOADER_ALLOC_ZONE_*) requirements.
* The most significant bit (bit 7) of @alloc.zone is used as a content
* hint for UEFI guest firmware, see ROMFILE_LOADER_ALLOC_CONTENT_*.
*
* Must appear exactly once for each file, and before
* this file is referenced by any other command.
@@ -80,12 +80,13 @@ enum {
ROMFILE_LOADER_COMMAND_ADD_CHECKSUM = 0x3,
ROMFILE_LOADER_COMMAND_WRITE_POINTER = 0x4,
};
enum {
- ROMFILE_LOADER_ALLOC_ZONE_HIGH = 0x1,
- ROMFILE_LOADER_ALLOC_ZONE_FSEG = 0x2,
+ ROMFILE_LOADER_ALLOC_ZONE_HIGH = 0x1,
+ ROMFILE_LOADER_ALLOC_ZONE_FSEG = 0x2,
+ ROMFILE_LOADER_ALLOC_ZONE_64BIT = 0x3,
};
enum {
ROMFILE_LOADER_ALLOC_CONTENT_MIXED = 0x00,
ROMFILE_LOADER_ALLOC_CONTENT_NOACPI = 0x80,
@@ -68,10 +68,11 @@ static void romfile_loader_allocate(struct romfile_loader_entry_s *entry,
zone_req = entry->alloc.zone;
zone_req &= ~(unsigned)ROMFILE_LOADER_ALLOC_CONTENT_NOACPI;
switch (zone_req) {
case ROMFILE_LOADER_ALLOC_ZONE_HIGH:
+ case ROMFILE_LOADER_ALLOC_ZONE_64BIT:
zone = &ZoneHigh;
break;
case ROMFILE_LOADER_ALLOC_ZONE_FSEG:
zone = &ZoneFSeg;
break;
ROMFILE_LOADER_ALLOC_ZONE_64BIT permits the guest firmware to allocate the blob being downloaded anywhere in the 64-bit address space. In SeaBIOS, we can simply alias this zone request to ROMFILE_LOADER_ALLOC_ZONE_HIGH (i.e., allocate the blob in 32-bit address space.) Cc: "Kevin O'Connor" <kevin@koconnor.net> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Ben Warren <ben@skyportsystems.com> Cc: Dongjiu Geng <gengdongjiu@huawei.com> Cc: Igor Mammedov <imammedo@redhat.com> Cc: Shannon Zhao <zhaoshenglong@huawei.com> Cc: Stefan Berger <stefanb@linux.vnet.ibm.com> Cc: Xiao Guangrong <guangrong.xiao@linux.intel.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> --- src/fw/romfile_loader.h | 7 ++++--- src/fw/romfile_loader.c | 1 + 2 files changed, 5 insertions(+), 3 deletions(-)