Skip to content

Commit

Permalink
i386: factor out x86_firmware_configure()
Browse files Browse the repository at this point in the history
move sev firmware setup to separate function so it can be used from
other code paths.  No functional change.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Tested-by: Xiaoyao Li <xiaoyao.li@intel.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Message-Id: <20220425135051.551037-3-kraxel@redhat.com>
  • Loading branch information
kraxel authored and taylorsimpson committed May 9, 2022
1 parent e4dbe19 commit 49ead67
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 14 deletions.
36 changes: 22 additions & 14 deletions hw/i386/pc_sysfw.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ static void pc_system_flash_map(PCMachineState *pcms,
MemoryRegion *flash_mem;
void *flash_ptr;
int flash_size;
int ret;

assert(PC_MACHINE_GET_CLASS(pcms)->pci_enabled);

Expand Down Expand Up @@ -195,19 +194,7 @@ static void pc_system_flash_map(PCMachineState *pcms,
if (sev_enabled()) {
flash_ptr = memory_region_get_ram_ptr(flash_mem);
flash_size = memory_region_size(flash_mem);
/*
* OVMF places a GUIDed structures in the flash, so
* search for them
*/
pc_system_parse_ovmf_flash(flash_ptr, flash_size);

ret = sev_es_save_reset_vector(flash_ptr, flash_size);
if (ret) {
error_report("failed to locate and/or save reset vector");
exit(1);
}

sev_encrypt_flash(flash_ptr, flash_size, &error_fatal);
x86_firmware_configure(flash_ptr, flash_size);
}
}
}
Expand Down Expand Up @@ -259,3 +246,24 @@ void pc_system_firmware_init(PCMachineState *pcms,

pc_system_flash_cleanup_unused(pcms);
}

void x86_firmware_configure(void *ptr, int size)
{
int ret;

/*
* OVMF places a GUIDed structures in the flash, so
* search for them
*/
pc_system_parse_ovmf_flash(ptr, size);

if (sev_enabled()) {
ret = sev_es_save_reset_vector(ptr, size);
if (ret) {
error_report("failed to locate and/or save reset vector");
exit(1);
}

sev_encrypt_flash(ptr, size, &error_fatal);
}
}
3 changes: 3 additions & 0 deletions include/hw/i386/x86.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,4 +140,7 @@ void gsi_handler(void *opaque, int n, int level);
void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name);
DeviceState *ioapic_init_secondary(GSIState *gsi_state);

/* pc_sysfw.c */
void x86_firmware_configure(void *ptr, int size);

#endif

0 comments on commit 49ead67

Please sign in to comment.