Am 27. Januar 2026 05:15:40 UTC schrieb Ani Sinha <[email protected]>:
>Confidential guest smust reload their bios rom upon reset. This is because
>bios memory is encrypted and upon reset, the contents of the old bios memory
>is lost and cannot be re-used. To this end, export a new x86 function
>x86_bios_rom_reload() to reload the bios again. This function will be used in
>the subsequent patches.
>
>Signed-off-by: Ani Sinha <[email protected]>
>---
> hw/i386/x86-common.c | 21 +++++++++++++++++++++
> include/hw/i386/x86.h | 1 +
> 2 files changed, 22 insertions(+)
>
>diff --git a/hw/i386/x86-common.c b/hw/i386/x86-common.c
>index 4469b4e152..c0a540495e 100644
>--- a/hw/i386/x86-common.c
>+++ b/hw/i386/x86-common.c
>@@ -1089,6 +1089,27 @@ static void load_bios_from_file(X86MachineState *x86ms,
>const char *bios_name,
> exit(1);
> }
>
>+void x86_bios_rom_reload(X86MachineState *x86ms)
>+{
>+ int bios_size;
>+ const char *bios_name;
>+ char *filename;
>+
>+ if (!x86ms->bios.addr) {
Could we use memory_region_size() here instead to rely only on public API?
AFAIU .addr is a private field.
>+ /* if -bios is not used */
>+ return;
>+ }
>+
>+ bios_name = MACHINE(x86ms)->firmware ?: "bios.bin";
>+ filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
>+
>+ bios_size = get_bios_size(x86ms, bios_name, filename);
>+
>+ void *ptr = memory_region_get_ram_ptr(&x86ms->bios);
>+ load_image_size(filename, ptr, bios_size);
>+ x86_firmware_configure(0x100000000ULL - bios_size, ptr, bios_size);
>+}
>+
> void x86_bios_rom_init(X86MachineState *x86ms, const char *default_firmware,
> MemoryRegion *rom_memory, bool isapc_ram_fw)
> {
>diff --git a/include/hw/i386/x86.h b/include/hw/i386/x86.h
>index bfdf97640d..5bb052cd67 100644
>--- a/include/hw/i386/x86.h
>+++ b/include/hw/i386/x86.h
>@@ -122,6 +122,7 @@ void x86_cpu_unplug_request_cb(HotplugHandler *hotplug_dev,
> DeviceState *dev, Error **errp);
> void x86_cpu_unplug_cb(HotplugHandler *hotplug_dev,
> DeviceState *dev, Error **errp);
>+void x86_bios_rom_reload(X86MachineState *x86ms);
Yes, this looks much cleaner!
To preserve the logic grouping I'd keep the blank line here from my comment in
the previous patch. Additionally, I'd move the declaration after
x86_bios_rom_init() to also communicate the order in which the functions are
intended to be used.
With the above considered and the declaration moved the code seems
comprehensible to me, so:
Reviewed-by: Bernhard Beschow <[email protected]>
> void x86_isa_bios_init(MemoryRegion *isa_bios, MemoryRegion *isa_memory,
> MemoryRegion *bios, bool read_only);
> void x86_bios_rom_init(X86MachineState *x86ms, const char *default_firmware,