qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/10] Support vbootrom for AST2700
@ 2025-04-16  3:43 Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 01/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize Jamin Lin via
                   ` (9 more replies)
  0 siblings, 10 replies; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

v1:
  Add initial support for AST27x0
  The purpose of vbootrom here is to simulate the work of BootMCU SPL (riscv)
  in AST2700, because QEMU doesn't support heterogenous architecture yet.

  ast27x0_bootrom.bin is a simplified, free (Apache 2.0) boot ROM for
  ASPEED AST27x0 BMC SOC. It currently implements the bare minimum to
  load, parse, initialize and run boot images stored in SPI flash, but may grow
  more features over time as needed. The source code is available at:
  https://github.com/google/vbootrom

v2:
  Add "Introduced ASPEED_DEV_VBOOTROM in the device enumeration" patch to fix
  build failed.

v3:
  1. Supports both vbootrom and device loader boot methods, with vbootrom used as
  the default.
  2. Fix review and QTEST test failed issues. 

Jamin Lin (10):
  hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700
    realize
  hw/arm/aspeed_ast27x0 Introduce vbootrom memory region
  hw/arm/aspeed: Add vbootrom support on AST2700 EVB machines
  hw/arm/aspeed: Reuse rom_size variable for vbootrom setup
  hw/arm/aspeed: Add support for loading vbootrom image via "-bios"
  pc-bios: Add AST27x0 vBootrom
  tests/functional/aspeed: Move I2C test into shared helper for AST2700
    reuse
  tests/functional/aspeed: Update test ASPEED SDK v09.06
  tests/functional/aspeed: Add to test vbootrom for AST2700
  docs/system/arm/aspeed: Support vbootrom for AST2700

 MAINTAINERS                             |   1 +
 docs/system/arm/aspeed.rst              |  29 +++++++++++-
 include/hw/arm/aspeed.h                 |   2 +
 include/hw/arm/aspeed_soc.h             |   3 ++
 hw/arm/aspeed.c                         |  41 +++++++++++++++-
 hw/arm/aspeed_ast27x0.c                 |  20 ++++++--
 pc-bios/README                          |   6 +++
 pc-bios/ast27x0_bootrom.bin             | Bin 0 -> 15464 bytes
 pc-bios/meson.build                     |   1 +
 tests/functional/test_aarch64_aspeed.py |  59 +++++++++++++++---------
 10 files changed, 135 insertions(+), 27 deletions(-)
 create mode 100644 pc-bios/ast27x0_bootrom.bin

-- 
2.43.0



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH v3 01/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16 20:24   ` Nabih Estefan
  2025-04-16  3:43 ` [PATCH v3 02/10] hw/arm/aspeed_ast27x0 Introduce vbootrom memory region Jamin Lin via
                   ` (8 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan, Cédric Le Goater

The variable "sram_name" was only used for naming the SRAM memory region.
Rename it to "name" for consistency with similar code and avoid unnecessary
new local variable declarations.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
---
 hw/arm/aspeed_ast27x0.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c
index dce7255a2c..b05ed75ff4 100644
--- a/hw/arm/aspeed_ast27x0.c
+++ b/hw/arm/aspeed_ast27x0.c
@@ -577,7 +577,7 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
     AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s);
     AspeedINTCClass *ic = ASPEED_INTC_GET_CLASS(&a->intc[0]);
     AspeedINTCClass *icio = ASPEED_INTC_GET_CLASS(&a->intc[1]);
-    g_autofree char *sram_name = NULL;
+    g_autofree char *name = NULL;
     qemu_irq irq;
 
     /* Default boot region (SPI memory or ROMs) */
@@ -649,9 +649,9 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
     }
 
     /* SRAM */
-    sram_name = g_strdup_printf("aspeed.sram.%d", CPU(&a->cpu[0])->cpu_index);
-    if (!memory_region_init_ram(&s->sram, OBJECT(s), sram_name, sc->sram_size,
-                                 errp)) {
+    name = g_strdup_printf("aspeed.sram.%d", CPU(&a->cpu[0])->cpu_index);
+    if (!memory_region_init_ram(&s->sram, OBJECT(s), name, sc->sram_size,
+                                errp)) {
         return;
     }
     memory_region_add_subregion(s->memory,
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 02/10] hw/arm/aspeed_ast27x0 Introduce vbootrom memory region
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 01/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16 20:24   ` Nabih Estefan
  2025-04-16  3:43 ` [PATCH v3 03/10] hw/arm/aspeed: Add vbootrom support on AST2700 EVB machines Jamin Lin via
                   ` (7 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

Introduce a new vbootrom memory region. The region is mapped at address
"0x00000000" and has a size of 128KB, identical to the SRAM region size.
This memory region is intended for loading a vbootrom image file as part of the
boot process.

The vbootrom registered in the SoC's address space using the ASPEED_DEV_VBOOTROM
index.

Introduced a "vbootrom_size" attribute in "AspeedSoCClass" to define virtual
boot ROM size.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 include/hw/arm/aspeed_soc.h |  3 +++
 hw/arm/aspeed_ast27x0.c     | 12 ++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
index f069d17d16..9af8cfbc3e 100644
--- a/include/hw/arm/aspeed_soc.h
+++ b/include/hw/arm/aspeed_soc.h
@@ -59,6 +59,7 @@ struct AspeedSoCState {
     MemoryRegion sram;
     MemoryRegion spi_boot_container;
     MemoryRegion spi_boot;
+    MemoryRegion vbootrom;
     AddressSpace dram_as;
     AspeedRtcState rtc;
     AspeedTimerCtrlState timerctrl;
@@ -152,6 +153,7 @@ struct AspeedSoCClass {
     const char * const *valid_cpu_types;
     uint32_t silicon_rev;
     uint64_t sram_size;
+    uint64_t vbootrom_size;
     uint64_t secsram_size;
     int spis_num;
     int ehcis_num;
@@ -169,6 +171,7 @@ struct AspeedSoCClass {
 const char *aspeed_soc_cpu_type(AspeedSoCClass *sc);
 
 enum {
+    ASPEED_DEV_VBOOTROM,
     ASPEED_DEV_SPI_BOOT,
     ASPEED_DEV_IOMEM,
     ASPEED_DEV_UART0,
diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c
index b05ed75ff4..7eece8e286 100644
--- a/hw/arm/aspeed_ast27x0.c
+++ b/hw/arm/aspeed_ast27x0.c
@@ -24,6 +24,7 @@
 #include "qemu/log.h"
 
 static const hwaddr aspeed_soc_ast2700_memmap[] = {
+    [ASPEED_DEV_VBOOTROM]  =  0x00000000,
     [ASPEED_DEV_SRAM]      =  0x10000000,
     [ASPEED_DEV_HACE]      =  0x12070000,
     [ASPEED_DEV_EMMC]      =  0x12090000,
@@ -657,6 +658,15 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
     memory_region_add_subregion(s->memory,
                                 sc->memmap[ASPEED_DEV_SRAM], &s->sram);
 
+    /* VBOOTROM */
+    name = g_strdup_printf("aspeed.vbootrom.%d", CPU(&a->cpu[0])->cpu_index);
+    if (!memory_region_init_ram(&s->vbootrom, OBJECT(s), name,
+                                sc->vbootrom_size, errp)) {
+        return;
+    }
+    memory_region_add_subregion(s->memory,
+                                sc->memmap[ASPEED_DEV_VBOOTROM], &s->vbootrom);
+
     /* SCU */
     if (!sysbus_realize(SYS_BUS_DEVICE(&s->scu), errp)) {
         return;
@@ -898,6 +908,7 @@ static void aspeed_soc_ast2700a0_class_init(ObjectClass *oc, void *data)
 
     sc->valid_cpu_types = valid_cpu_types;
     sc->silicon_rev  = AST2700_A0_SILICON_REV;
+    sc->vbootrom_size = 0x20000;
     sc->sram_size    = 0x20000;
     sc->spis_num     = 3;
     sc->wdts_num     = 8;
@@ -925,6 +936,7 @@ static void aspeed_soc_ast2700a1_class_init(ObjectClass *oc, void *data)
 
     sc->valid_cpu_types = valid_cpu_types;
     sc->silicon_rev  = AST2700_A1_SILICON_REV;
+    sc->vbootrom_size = 0x20000;
     sc->sram_size    = 0x20000;
     sc->spis_num     = 3;
     sc->wdts_num     = 8;
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 03/10] hw/arm/aspeed: Add vbootrom support on AST2700 EVB machines
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 01/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 02/10] hw/arm/aspeed_ast27x0 Introduce vbootrom memory region Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16 20:24   ` Nabih Estefan
  2025-04-16  3:43 ` [PATCH v3 04/10] hw/arm/aspeed: Reuse rom_size variable for vbootrom setup Jamin Lin via
                   ` (6 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

Introduce a new "vbootrom" field in the AspeedMachineClass to indicate whether
a machine supports the virtual boot ROM region.

Set this field to true by default for the AST2700-A0 and AST2700-A1 EVB
machines.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 include/hw/arm/aspeed.h | 1 +
 hw/arm/aspeed.c         | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
index 9cae45a1c9..973277bea6 100644
--- a/include/hw/arm/aspeed.h
+++ b/include/hw/arm/aspeed.h
@@ -40,6 +40,7 @@ struct AspeedMachineClass {
     void (*i2c_init)(AspeedMachineState *bmc);
     uint32_t uart_default;
     bool sdhci_wp_inverted;
+    bool vbootrom;
 };
 
 
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index 82f42582fa..e852bbc4cb 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -1689,6 +1689,7 @@ static void aspeed_machine_ast2700a0_evb_class_init(ObjectClass *oc, void *data)
     amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON | ASPEED_MAC2_ON;
     amc->uart_default = ASPEED_DEV_UART12;
     amc->i2c_init  = ast2700_evb_i2c_init;
+    amc->vbootrom = true;
     mc->auto_create_sdcard = true;
     mc->default_ram_size = 1 * GiB;
     aspeed_machine_class_init_cpus_defaults(mc);
@@ -1709,6 +1710,7 @@ static void aspeed_machine_ast2700a1_evb_class_init(ObjectClass *oc, void *data)
     amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON | ASPEED_MAC2_ON;
     amc->uart_default = ASPEED_DEV_UART12;
     amc->i2c_init  = ast2700_evb_i2c_init;
+    amc->vbootrom = true;
     mc->auto_create_sdcard = true;
     mc->default_ram_size = 1 * GiB;
     aspeed_machine_class_init_cpus_defaults(mc);
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 04/10] hw/arm/aspeed: Reuse rom_size variable for vbootrom setup
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
                   ` (2 preceding siblings ...)
  2025-04-16  3:43 ` [PATCH v3 03/10] hw/arm/aspeed: Add vbootrom support on AST2700 EVB machines Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16 20:24   ` Nabih Estefan
  2025-04-16  3:43 ` [PATCH v3 05/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios" Jamin Lin via
                   ` (5 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan, Cédric Le Goater

Move the declaration of `rom_size` to an outer scope in aspeed_machine_init()
so it can be reused for setting up the vbootrom region as well.

This avoids introducing a redundant local variable and ensures consistent
ROM sizing logic when both SPI boot and vbootrom are used.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
---
 hw/arm/aspeed.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index e852bbc4cb..b70a120e62 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -381,6 +381,7 @@ static void aspeed_machine_init(MachineState *machine)
     AspeedSoCClass *sc;
     int i;
     DriveInfo *emmc0 = NULL;
+    uint64_t rom_size;
     bool boot_emmc;
 
     bmc->soc = ASPEED_SOC(object_new(amc->soc_name));
@@ -475,7 +476,7 @@ static void aspeed_machine_init(MachineState *machine)
         BlockBackend *fmc0 = dev ? m25p80_get_blk(dev) : NULL;
 
         if (fmc0 && !boot_emmc) {
-            uint64_t rom_size = memory_region_size(&bmc->soc->spi_boot);
+            rom_size = memory_region_size(&bmc->soc->spi_boot);
             aspeed_install_boot_rom(bmc, fmc0, rom_size);
         } else if (emmc0) {
             aspeed_install_boot_rom(bmc, blk_by_legacy_dinfo(emmc0), 64 * KiB);
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 05/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios"
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
                   ` (3 preceding siblings ...)
  2025-04-16  3:43 ` [PATCH v3 04/10] hw/arm/aspeed: Reuse rom_size variable for vbootrom setup Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16 20:24   ` Nabih Estefan
  2025-04-16  3:43 ` [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom Jamin Lin via
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

Introduce "aspeed_load_vbootrom()" to support loading a virtual boot ROM image
into the vbootrom memory region, using the "-bios" command-line option.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 include/hw/arm/aspeed.h |  1 +
 hw/arm/aspeed.c         | 36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+)

diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
index 973277bea6..2b8332a7d7 100644
--- a/include/hw/arm/aspeed.h
+++ b/include/hw/arm/aspeed.h
@@ -41,6 +41,7 @@ struct AspeedMachineClass {
     uint32_t uart_default;
     bool sdhci_wp_inverted;
     bool vbootrom;
+    const char *vbootrom_name;
 };
 
 
diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
index b70a120e62..7f11371f02 100644
--- a/hw/arm/aspeed.c
+++ b/hw/arm/aspeed.c
@@ -27,6 +27,7 @@
 #include "system/reset.h"
 #include "hw/loader.h"
 #include "qemu/error-report.h"
+#include "qemu/datadir.h"
 #include "qemu/units.h"
 #include "hw/qdev-clock.h"
 #include "system/system.h"
@@ -305,6 +306,34 @@ static void aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk,
                    rom_size, &error_abort);
 }
 
+/*
+ * This function locates the vbootrom image file specified via the command line
+ * using the -bios option. It loads the specified image into the vbootrom
+ * memory region and handles errors if the file cannot be found or loaded.
+ */
+static void aspeed_load_vbootrom(MachineState *machine, uint64_t rom_size,
+                                 Error **errp)
+{
+    AspeedMachineState *bmc = ASPEED_MACHINE(machine);
+    AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);
+    const char *bios_name = machine->firmware ?: amc->vbootrom_name;
+    g_autofree char *filename = NULL;
+    AspeedSoCState *soc = bmc->soc;
+    int ret;
+
+    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
+    if (!filename) {
+        error_setg(errp, "Could not find vbootrom image '%s'", bios_name);
+        return;
+    }
+
+    ret = load_image_mr(filename, &soc->vbootrom);
+    if (ret < 0) {
+        error_setg(errp, "Failed to load vbootrom image '%s'", bios_name);
+        return;
+    }
+}
+
 void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype,
                                       unsigned int count, int unit0)
 {
@@ -483,6 +512,11 @@ static void aspeed_machine_init(MachineState *machine)
         }
     }
 
+    if (amc->vbootrom) {
+        rom_size = memory_region_size(&bmc->soc->vbootrom);
+        aspeed_load_vbootrom(machine, rom_size, &error_abort);
+    }
+
     arm_load_kernel(ARM_CPU(first_cpu), machine, &aspeed_board_binfo);
 }
 
@@ -1691,6 +1725,7 @@ static void aspeed_machine_ast2700a0_evb_class_init(ObjectClass *oc, void *data)
     amc->uart_default = ASPEED_DEV_UART12;
     amc->i2c_init  = ast2700_evb_i2c_init;
     amc->vbootrom = true;
+    amc->vbootrom_name = "ast27x0_bootrom.bin";
     mc->auto_create_sdcard = true;
     mc->default_ram_size = 1 * GiB;
     aspeed_machine_class_init_cpus_defaults(mc);
@@ -1712,6 +1747,7 @@ static void aspeed_machine_ast2700a1_evb_class_init(ObjectClass *oc, void *data)
     amc->uart_default = ASPEED_DEV_UART12;
     amc->i2c_init  = ast2700_evb_i2c_init;
     amc->vbootrom = true;
+    amc->vbootrom_name = "ast27x0_bootrom.bin";
     mc->auto_create_sdcard = true;
     mc->default_ram_size = 1 * GiB;
     aspeed_machine_class_init_cpus_defaults(mc);
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
                   ` (4 preceding siblings ...)
  2025-04-16  3:43 ` [PATCH v3 05/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios" Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16 20:23   ` Nabih Estefan
  2025-04-16  3:43 ` [PATCH v3 07/10] tests/functional/aspeed: Move I2C test into shared helper for AST2700 reuse Jamin Lin via
                   ` (3 subsequent siblings)
  9 siblings, 1 reply; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

The boot ROM is a minimal implementation designed to load an AST27x0 boot image.
Its source code is available at:
https://github.com/google/vbootrom

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 MAINTAINERS                 |   1 +
 pc-bios/README              |   6 ++++++
 pc-bios/ast27x0_bootrom.bin | Bin 0 -> 15464 bytes
 pc-bios/meson.build         |   1 +
 4 files changed, 8 insertions(+)
 create mode 100644 pc-bios/ast27x0_bootrom.bin

diff --git a/MAINTAINERS b/MAINTAINERS
index d54b5578f8..70ab0d0afa 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1163,6 +1163,7 @@ F: docs/system/arm/fby35.rst
 F: tests/*/*aspeed*
 F: tests/*/*ast2700*
 F: hw/arm/fby35.c
+F: pc-bios/ast27x0_bootrom.bin
 
 NRF51
 M: Joel Stanley <joel@jms.id.au>
diff --git a/pc-bios/README b/pc-bios/README
index f0f13e15f2..d009c37895 100644
--- a/pc-bios/README
+++ b/pc-bios/README
@@ -89,6 +89,12 @@
   more features over time as needed. The source code is available at:
   https://github.com/google/vbootrom
 
+- ast27x0_bootrom.bin is a simplified, free (Apache 2.0) boot ROM for
+  ASPEED AST27x0 BMC SOC. It currently implements the bare minimum to
+  load, parse, initialize and run boot images stored in SPI flash, but may grow
+  more features over time as needed. The source code is available at:
+  https://github.com/google/vbootrom
+
 - hppa-firmware.img (32-bit) and hppa-firmware64.img (64-bit) are firmware
   files for the HP-PARISC (hppa) architecture.
   They are built form the SeaBIOS-hppa sources, which is a fork of SeaBIOS
diff --git a/pc-bios/ast27x0_bootrom.bin b/pc-bios/ast27x0_bootrom.bin
new file mode 100644
index 0000000000000000000000000000000000000000..e50f56eed9deeea65cbc1dd37897d59b1ff64ddd
GIT binary patch
literal 15464
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

literal 0
HcmV?d00001

diff --git a/pc-bios/meson.build b/pc-bios/meson.build
index 34d6616c32..83998f6071 100644
--- a/pc-bios/meson.build
+++ b/pc-bios/meson.build
@@ -84,6 +84,7 @@ blobs = [
   'npcm8xx_bootrom.bin',
   'vof.bin',
   'vof-nvram.bin',
+  'ast27x0_bootrom.bin',
 ]
 
 dtc = find_program('dtc', required: false)
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 07/10] tests/functional/aspeed: Move I2C test into shared helper for AST2700 reuse
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
                   ` (5 preceding siblings ...)
  2025-04-16  3:43 ` [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 08/10] tests/functional/aspeed: Update test ASPEED SDK v09.06 Jamin Lin via
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

Move the I2C test case into a common helper function (do_ast2700_i2c_test) so it
can be reused across multiple AST2700-based test cases. This reduces duplication
and improves maintainability.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 tests/functional/test_aarch64_aspeed.py | 28 +++++++++++++------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/tests/functional/test_aarch64_aspeed.py b/tests/functional/test_aarch64_aspeed.py
index c25c966278..441f7f3919 100755
--- a/tests/functional/test_aarch64_aspeed.py
+++ b/tests/functional/test_aarch64_aspeed.py
@@ -18,6 +18,8 @@ class AST2x00MachineSDK(QemuSystemTest):
     def do_test_aarch64_aspeed_sdk_start(self, image):
         self.require_netdev('user')
         self.vm.set_console()
+        self.vm.add_args('-device',
+                         'tmp105,bus=aspeed.i2c.bus.1,address=0x4d,id=tmp-test')
         self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw',
                          '-net', 'nic', '-net', 'user', '-snapshot')
 
@@ -35,6 +37,17 @@ def do_test_aarch64_aspeed_sdk_start(self, image):
             'https://github.com/AspeedTech-BMC/openbmc/releases/download/v09.05/ast2700-default-obmc.tar.gz',
             'c1f4496aec06743c812a6e9a1a18d032f34d62f3ddb6956e924fef62aa2046a5')
 
+    def do_ast2700_i2c_test(self):
+        exec_command_and_wait_for_pattern(self,
+            'echo lm75 0x4d > /sys/class/i2c-dev/i2c-1/device/new_device ',
+            'i2c i2c-1: new_device: Instantiated device lm75 at 0x4d');
+        exec_command_and_wait_for_pattern(self,
+            'cat /sys/bus/i2c/devices/1-004d/hwmon/hwmon*/temp1_input', '0')
+        self.vm.cmd('qom-set', path='/machine/peripheral/tmp-test',
+                    property='temperature', value=18000)
+        exec_command_and_wait_for_pattern(self,
+            'cat /sys/bus/i2c/devices/1-004d/hwmon/hwmon*/temp1_input', '18000')
+
     def start_ast2700_test(self, name):
         num_cpu = 4
         uboot_size = os.path.getsize(self.scratch_file(name,
@@ -73,8 +86,6 @@ def start_ast2700_test(self, name):
                              f'loader,addr=0x430000000,cpu-num={i}')
 
         self.vm.add_args('-smp', str(num_cpu))
-        self.vm.add_args('-device',
-                         'tmp105,bus=aspeed.i2c.bus.1,address=0x4d,id=tmp-test')
         self.do_test_aarch64_aspeed_sdk_start(
             self.scratch_file(name, 'image-bmc'))
 
@@ -83,28 +94,19 @@ def start_ast2700_test(self, name):
         exec_command_and_wait_for_pattern(self, 'root', 'Password:')
         exec_command_and_wait_for_pattern(self, '0penBmc', f'root@{name}:~#')
 
-        exec_command_and_wait_for_pattern(self,
-            'echo lm75 0x4d > /sys/class/i2c-dev/i2c-1/device/new_device ',
-            'i2c i2c-1: new_device: Instantiated device lm75 at 0x4d');
-        exec_command_and_wait_for_pattern(self,
-            'cat /sys/bus/i2c/devices/1-004d/hwmon/hwmon*/temp1_input', '0')
-        self.vm.cmd('qom-set', path='/machine/peripheral/tmp-test',
-                    property='temperature', value=18000)
-        exec_command_and_wait_for_pattern(self,
-            'cat /sys/bus/i2c/devices/1-004d/hwmon/hwmon*/temp1_input', '18000')
-
     def test_aarch64_ast2700_evb_sdk_v09_05(self):
         self.set_machine('ast2700-evb')
 
         self.archive_extract(self.ASSET_SDK_V905_AST2700)
         self.start_ast2700_test('ast2700-a0-default')
+        self.do_ast2700_i2c_test()
 
     def test_aarch64_ast2700a1_evb_sdk_v09_05(self):
         self.set_machine('ast2700a1-evb')
 
         self.archive_extract(self.ASSET_SDK_V905_AST2700A1)
         self.start_ast2700_test('ast2700-default')
-
+        self.do_ast2700_i2c_test()
 
 if __name__ == '__main__':
     QemuSystemTest.main()
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 08/10] tests/functional/aspeed: Update test ASPEED SDK v09.06
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
                   ` (6 preceding siblings ...)
  2025-04-16  3:43 ` [PATCH v3 07/10] tests/functional/aspeed: Move I2C test into shared helper for AST2700 reuse Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 09/10] tests/functional/aspeed: Add to test vbootrom for AST2700 Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 10/10] docs/system/arm/aspeed: Support " Jamin Lin via
  9 siblings, 0 replies; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 tests/functional/test_aarch64_aspeed.py | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/tests/functional/test_aarch64_aspeed.py b/tests/functional/test_aarch64_aspeed.py
index 441f7f3919..337d701917 100755
--- a/tests/functional/test_aarch64_aspeed.py
+++ b/tests/functional/test_aarch64_aspeed.py
@@ -29,13 +29,13 @@ def do_test_aarch64_aspeed_sdk_start(self, image):
         wait_for_console_pattern(self, '## Loading kernel from FIT Image')
         wait_for_console_pattern(self, 'Starting kernel ...')
 
-    ASSET_SDK_V905_AST2700 = Asset(
-            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v09.05/ast2700-a0-default-obmc.tar.gz',
-            'cfbbd1cce72f2a3b73b9080c41eecdadebb7077fba4f7806d72ac99f3e84b74a')
+    ASSET_SDK_V906_AST2700 = Asset(
+            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v09.06/ast2700-a0-default-obmc.tar.gz',
+            '7247b6f19dbfb700686f8d9f723ac23f3eb229226c0589cb9b06b80d1b61f3cb')
 
-    ASSET_SDK_V905_AST2700A1 = Asset(
-            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v09.05/ast2700-default-obmc.tar.gz',
-            'c1f4496aec06743c812a6e9a1a18d032f34d62f3ddb6956e924fef62aa2046a5')
+    ASSET_SDK_V906_AST2700A1 = Asset(
+            'https://github.com/AspeedTech-BMC/openbmc/releases/download/v09.06/ast2700-default-obmc.tar.gz',
+            'f1d53e0be8a404ecce3e105f72bc50fa4e090ad13160ffa91b10a6e0233a9dc6')
 
     def do_ast2700_i2c_test(self):
         exec_command_and_wait_for_pattern(self,
@@ -94,17 +94,17 @@ def start_ast2700_test(self, name):
         exec_command_and_wait_for_pattern(self, 'root', 'Password:')
         exec_command_and_wait_for_pattern(self, '0penBmc', f'root@{name}:~#')
 
-    def test_aarch64_ast2700_evb_sdk_v09_05(self):
+    def test_aarch64_ast2700_evb_sdk_v09_06(self):
         self.set_machine('ast2700-evb')
 
-        self.archive_extract(self.ASSET_SDK_V905_AST2700)
+        self.archive_extract(self.ASSET_SDK_V906_AST2700)
         self.start_ast2700_test('ast2700-a0-default')
         self.do_ast2700_i2c_test()
 
-    def test_aarch64_ast2700a1_evb_sdk_v09_05(self):
+    def test_aarch64_ast2700a1_evb_sdk_v09_06(self):
         self.set_machine('ast2700a1-evb')
 
-        self.archive_extract(self.ASSET_SDK_V905_AST2700A1)
+        self.archive_extract(self.ASSET_SDK_V906_AST2700A1)
         self.start_ast2700_test('ast2700-default')
         self.do_ast2700_i2c_test()
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 09/10] tests/functional/aspeed: Add to test vbootrom for AST2700
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
                   ` (7 preceding siblings ...)
  2025-04-16  3:43 ` [PATCH v3 08/10] tests/functional/aspeed: Update test ASPEED SDK v09.06 Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16  3:43 ` [PATCH v3 10/10] docs/system/arm/aspeed: Support " Jamin Lin via
  9 siblings, 0 replies; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

Add the AST2700 functional test to boot using the vbootrom image
instead of manually loading boot components with -device loader.
The boot ROM binary is now passed via the
-bios option, using the image located in pc-bios/ast27x0_bootrom.bin.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 tests/functional/test_aarch64_aspeed.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/tests/functional/test_aarch64_aspeed.py b/tests/functional/test_aarch64_aspeed.py
index 337d701917..85789c1b1d 100755
--- a/tests/functional/test_aarch64_aspeed.py
+++ b/tests/functional/test_aarch64_aspeed.py
@@ -94,6 +94,14 @@ def start_ast2700_test(self, name):
         exec_command_and_wait_for_pattern(self, 'root', 'Password:')
         exec_command_and_wait_for_pattern(self, '0penBmc', f'root@{name}:~#')
 
+    def start_ast2700_test_vbootrom(self, name):
+        self.vm.add_args('-bios', 'ast27x0_bootrom.bin')
+        self.do_test_aarch64_aspeed_sdk_start(
+                self.scratch_file(name, 'image-bmc'))
+        wait_for_console_pattern(self, f'{name} login:')
+        exec_command_and_wait_for_pattern(self, 'root', 'Password:')
+        exec_command_and_wait_for_pattern(self, '0penBmc', f'root@{name}:~#')
+
     def test_aarch64_ast2700_evb_sdk_v09_06(self):
         self.set_machine('ast2700-evb')
 
@@ -108,5 +116,12 @@ def test_aarch64_ast2700a1_evb_sdk_v09_06(self):
         self.start_ast2700_test('ast2700-default')
         self.do_ast2700_i2c_test()
 
+    def test_aarch64_ast2700a1_evb_sdk_vboottom_v09_06(self):
+        self.set_machine('ast2700a1-evb')
+
+        self.archive_extract(self.ASSET_SDK_V906_AST2700A1)
+        self.start_ast2700_test_vbootrom('ast2700-default')
+        self.do_ast2700_i2c_test()
+
 if __name__ == '__main__':
     QemuSystemTest.main()
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PATCH v3 10/10] docs/system/arm/aspeed: Support vbootrom for AST2700
  2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
                   ` (8 preceding siblings ...)
  2025-04-16  3:43 ` [PATCH v3 09/10] tests/functional/aspeed: Add to test vbootrom for AST2700 Jamin Lin via
@ 2025-04-16  3:43 ` Jamin Lin via
  2025-04-16 20:23   ` Nabih Estefan
  9 siblings, 1 reply; 20+ messages in thread
From: Jamin Lin via @ 2025-04-16  3:43 UTC (permalink / raw)
  To: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs
  Cc: jamin_lin, troy_lee, nabihestefan

Using the vbootrom image support and the boot ROM binary is
now passed via the -bios option, using the image located in
pc-bios/ast27x0_bootrom.bin.

Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
---
 docs/system/arm/aspeed.rst | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
index 97fd6a0e7f..c87a2cf796 100644
--- a/docs/system/arm/aspeed.rst
+++ b/docs/system/arm/aspeed.rst
@@ -250,7 +250,14 @@ under Linux), use :
 Booting the ast2700-evb machine
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-Boot the AST2700 machine from the flash image, use an MTD drive :
+Boot the AST2700 machine from the flash image.
+
+There are two supported methods for booting the AST2700 machine with a flash image:
+
+Manual boot using ``-device loader``:
+
+It causes all 4 CPU cores to start execution from address ``0x430000000``, which
+corresponds to the BL31 image load address.
 
 .. code-block:: bash
 
@@ -270,6 +277,26 @@ Boot the AST2700 machine from the flash image, use an MTD drive :
        -drive file=${IMGDIR}/image-bmc,format=raw,if=mtd \
        -nographic
 
+Boot using a virtual boot ROM (``-bios``):
+
+If users do not specify the ``-bios option``, QEMU will attempt to load the
+default vbootrom image ``ast27x0_bootrom.bin`` from either the current working
+directory or the ``pc-bios`` directory within the QEMU source tree.
+
+.. code-block:: bash
+
+  $ qemu-system-aarch64 -M ast2700-evb \
+      -drive file=image-bmc,format=raw,if=mtd \
+      -nographic
+
+The ``-bios`` option allows users to specify a custom path for the vbootrom
+image to be loaded during boot. This will load the vbootrom image from the
+specified path in the ${HOME} directory.
+
+.. code-block:: bash
+
+  -bios ${HOME}/ast27x0_bootrom.bin
+
 Aspeed minibmc family boards (``ast1030-evb``)
 ==================================================================
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom
  2025-04-16  3:43 ` [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom Jamin Lin via
@ 2025-04-16 20:23   ` Nabih Estefan
  2025-04-17  2:29     ` Jamin Lin
  0 siblings, 1 reply; 20+ messages in thread
From: Nabih Estefan @ 2025-04-16 20:23 UTC (permalink / raw)
  To: Jamin Lin
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, troy_lee

This patch probably needs to go before patch 5 so the automatic
enabling of the vbootrom works. Besides that it looks good.

On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> The boot ROM is a minimal implementation designed to load an AST27x0 boot image.
> Its source code is available at:
> https://github.com/google/vbootrom
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Nabih Estefan <nabihestefan@google.com>
Tested-by: Nabih Estefan <nabihestefan@google.com>


> ---
>  MAINTAINERS                 |   1 +
>  pc-bios/README              |   6 ++++++
>  pc-bios/ast27x0_bootrom.bin | Bin 0 -> 15464 bytes
>  pc-bios/meson.build         |   1 +
>  4 files changed, 8 insertions(+)
>  create mode 100644 pc-bios/ast27x0_bootrom.bin
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index d54b5578f8..70ab0d0afa 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -1163,6 +1163,7 @@ F: docs/system/arm/fby35.rst
>  F: tests/*/*aspeed*
>  F: tests/*/*ast2700*
>  F: hw/arm/fby35.c
> +F: pc-bios/ast27x0_bootrom.bin
>
>  NRF51
>  M: Joel Stanley <joel@jms.id.au>
> diff --git a/pc-bios/README b/pc-bios/README
> index f0f13e15f2..d009c37895 100644
> --- a/pc-bios/README
> +++ b/pc-bios/README
> @@ -89,6 +89,12 @@
>    more features over time as needed. The source code is available at:
>    https://github.com/google/vbootrom
>
> +- ast27x0_bootrom.bin is a simplified, free (Apache 2.0) boot ROM for
> +  ASPEED AST27x0 BMC SOC. It currently implements the bare minimum to
> +  load, parse, initialize and run boot images stored in SPI flash, but may grow
> +  more features over time as needed. The source code is available at:
> +  https://github.com/google/vbootrom
> +
>  - hppa-firmware.img (32-bit) and hppa-firmware64.img (64-bit) are firmware
>    files for the HP-PARISC (hppa) architecture.
>    They are built form the SeaBIOS-hppa sources, which is a fork of SeaBIOS
> diff --git a/pc-bios/ast27x0_bootrom.bin b/pc-bios/ast27x0_bootrom.bin
> new file mode 100644
> index 0000000000000000000000000000000000000000..e50f56eed9deeea65cbc1dd37897d59b1ff64ddd
> GIT binary patch
> literal 15464
> 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
>
> literal 0
> HcmV?d00001
>
> diff --git a/pc-bios/meson.build b/pc-bios/meson.build
> index 34d6616c32..83998f6071 100644
> --- a/pc-bios/meson.build
> +++ b/pc-bios/meson.build
> @@ -84,6 +84,7 @@ blobs = [
>    'npcm8xx_bootrom.bin',
>    'vof.bin',
>    'vof-nvram.bin',
> +  'ast27x0_bootrom.bin',
>  ]
>
>  dtc = find_program('dtc', required: false)
> --
> 2.43.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 10/10] docs/system/arm/aspeed: Support vbootrom for AST2700
  2025-04-16  3:43 ` [PATCH v3 10/10] docs/system/arm/aspeed: Support " Jamin Lin via
@ 2025-04-16 20:23   ` Nabih Estefan
  0 siblings, 0 replies; 20+ messages in thread
From: Nabih Estefan @ 2025-04-16 20:23 UTC (permalink / raw)
  To: Jamin Lin
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, troy_lee

On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> Using the vbootrom image support and the boot ROM binary is
> now passed via the -bios option, using the image located in
> pc-bios/ast27x0_bootrom.bin.
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Nabih Estefan <nabihestefan@google.com>

> ---
>  docs/system/arm/aspeed.rst | 29 ++++++++++++++++++++++++++++-
>  1 file changed, 28 insertions(+), 1 deletion(-)
>
> diff --git a/docs/system/arm/aspeed.rst b/docs/system/arm/aspeed.rst
> index 97fd6a0e7f..c87a2cf796 100644
> --- a/docs/system/arm/aspeed.rst
> +++ b/docs/system/arm/aspeed.rst
> @@ -250,7 +250,14 @@ under Linux), use :
>  Booting the ast2700-evb machine
>  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> -Boot the AST2700 machine from the flash image, use an MTD drive :
> +Boot the AST2700 machine from the flash image.
> +
> +There are two supported methods for booting the AST2700 machine with a flash image:
> +
> +Manual boot using ``-device loader``:
> +
> +It causes all 4 CPU cores to start execution from address ``0x430000000``, which
> +corresponds to the BL31 image load address.
>
>  .. code-block:: bash
>
> @@ -270,6 +277,26 @@ Boot the AST2700 machine from the flash image, use an MTD drive :
>         -drive file=${IMGDIR}/image-bmc,format=raw,if=mtd \
>         -nographic
>
> +Boot using a virtual boot ROM (``-bios``):
> +
> +If users do not specify the ``-bios option``, QEMU will attempt to load the
> +default vbootrom image ``ast27x0_bootrom.bin`` from either the current working
> +directory or the ``pc-bios`` directory within the QEMU source tree.
> +
> +.. code-block:: bash
> +
> +  $ qemu-system-aarch64 -M ast2700-evb \
> +      -drive file=image-bmc,format=raw,if=mtd \
> +      -nographic
> +
> +The ``-bios`` option allows users to specify a custom path for the vbootrom
> +image to be loaded during boot. This will load the vbootrom image from the
> +specified path in the ${HOME} directory.
> +
> +.. code-block:: bash
> +
> +  -bios ${HOME}/ast27x0_bootrom.bin
> +
>  Aspeed minibmc family boards (``ast1030-evb``)
>  ==================================================================
>
> --
> 2.43.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 05/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios"
  2025-04-16  3:43 ` [PATCH v3 05/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios" Jamin Lin via
@ 2025-04-16 20:24   ` Nabih Estefan
  2025-04-17  2:32     ` Jamin Lin
  0 siblings, 1 reply; 20+ messages in thread
From: Nabih Estefan @ 2025-04-16 20:24 UTC (permalink / raw)
  To: Jamin Lin
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, troy_lee

This has to happen after we have the bootrom in QEMU or it will fail
on the default cases. Besides that it looks good.

On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> Introduce "aspeed_load_vbootrom()" to support loading a virtual boot ROM image
> into the vbootrom memory region, using the "-bios" command-line option.
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Nabih Estefan <nabihestefan@google.com>
Tested-by: Nabih Estefan <nabihestefan@google.com>

> ---
>  include/hw/arm/aspeed.h |  1 +
>  hw/arm/aspeed.c         | 36 ++++++++++++++++++++++++++++++++++++
>  2 files changed, 37 insertions(+)
>
> diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
> index 973277bea6..2b8332a7d7 100644
> --- a/include/hw/arm/aspeed.h
> +++ b/include/hw/arm/aspeed.h
> @@ -41,6 +41,7 @@ struct AspeedMachineClass {
>      uint32_t uart_default;
>      bool sdhci_wp_inverted;
>      bool vbootrom;
> +    const char *vbootrom_name;
>  };
>
>
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index b70a120e62..7f11371f02 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -27,6 +27,7 @@
>  #include "system/reset.h"
>  #include "hw/loader.h"
>  #include "qemu/error-report.h"
> +#include "qemu/datadir.h"
>  #include "qemu/units.h"
>  #include "hw/qdev-clock.h"
>  #include "system/system.h"
> @@ -305,6 +306,34 @@ static void aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk,
>                     rom_size, &error_abort);
>  }
>
> +/*
> + * This function locates the vbootrom image file specified via the command line
> + * using the -bios option. It loads the specified image into the vbootrom
> + * memory region and handles errors if the file cannot be found or loaded.
> + */
> +static void aspeed_load_vbootrom(MachineState *machine, uint64_t rom_size,
> +                                 Error **errp)
> +{
> +    AspeedMachineState *bmc = ASPEED_MACHINE(machine);
> +    AspeedMachineClass *amc = ASPEED_MACHINE_GET_CLASS(machine);
> +    const char *bios_name = machine->firmware ?: amc->vbootrom_name;
> +    g_autofree char *filename = NULL;
> +    AspeedSoCState *soc = bmc->soc;
> +    int ret;
> +
> +    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
> +    if (!filename) {
> +        error_setg(errp, "Could not find vbootrom image '%s'", bios_name);
> +        return;
> +    }
> +
> +    ret = load_image_mr(filename, &soc->vbootrom);
> +    if (ret < 0) {
> +        error_setg(errp, "Failed to load vbootrom image '%s'", bios_name);
> +        return;
> +    }
> +}
> +
>  void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype,
>                                        unsigned int count, int unit0)
>  {
> @@ -483,6 +512,11 @@ static void aspeed_machine_init(MachineState *machine)
>          }
>      }
>
> +    if (amc->vbootrom) {
> +        rom_size = memory_region_size(&bmc->soc->vbootrom);
> +        aspeed_load_vbootrom(machine, rom_size, &error_abort);
> +    }
> +
>      arm_load_kernel(ARM_CPU(first_cpu), machine, &aspeed_board_binfo);
>  }
>
> @@ -1691,6 +1725,7 @@ static void aspeed_machine_ast2700a0_evb_class_init(ObjectClass *oc, void *data)
>      amc->uart_default = ASPEED_DEV_UART12;
>      amc->i2c_init  = ast2700_evb_i2c_init;
>      amc->vbootrom = true;
> +    amc->vbootrom_name = "ast27x0_bootrom.bin";
>      mc->auto_create_sdcard = true;
>      mc->default_ram_size = 1 * GiB;
>      aspeed_machine_class_init_cpus_defaults(mc);
> @@ -1712,6 +1747,7 @@ static void aspeed_machine_ast2700a1_evb_class_init(ObjectClass *oc, void *data)
>      amc->uart_default = ASPEED_DEV_UART12;
>      amc->i2c_init  = ast2700_evb_i2c_init;
>      amc->vbootrom = true;
> +    amc->vbootrom_name = "ast27x0_bootrom.bin";
>      mc->auto_create_sdcard = true;
>      mc->default_ram_size = 1 * GiB;
>      aspeed_machine_class_init_cpus_defaults(mc);
> --
> 2.43.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 04/10] hw/arm/aspeed: Reuse rom_size variable for vbootrom setup
  2025-04-16  3:43 ` [PATCH v3 04/10] hw/arm/aspeed: Reuse rom_size variable for vbootrom setup Jamin Lin via
@ 2025-04-16 20:24   ` Nabih Estefan
  0 siblings, 0 replies; 20+ messages in thread
From: Nabih Estefan @ 2025-04-16 20:24 UTC (permalink / raw)
  To: Jamin Lin
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, troy_lee, Cédric Le Goater

On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> Move the declaration of `rom_size` to an outer scope in aspeed_machine_init()
> so it can be reused for setting up the vbootrom region as well.
>
> This avoids introducing a redundant local variable and ensures consistent
> ROM sizing logic when both SPI boot and vbootrom are used.
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> Reviewed-by: Cédric Le Goater <clg@redhat.com>
Tested-by: Nabih Estefan <nabihestefan@google.com>

> ---
>  hw/arm/aspeed.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index e852bbc4cb..b70a120e62 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -381,6 +381,7 @@ static void aspeed_machine_init(MachineState *machine)
>      AspeedSoCClass *sc;
>      int i;
>      DriveInfo *emmc0 = NULL;
> +    uint64_t rom_size;
>      bool boot_emmc;
>
>      bmc->soc = ASPEED_SOC(object_new(amc->soc_name));
> @@ -475,7 +476,7 @@ static void aspeed_machine_init(MachineState *machine)
>          BlockBackend *fmc0 = dev ? m25p80_get_blk(dev) : NULL;
>
>          if (fmc0 && !boot_emmc) {
> -            uint64_t rom_size = memory_region_size(&bmc->soc->spi_boot);
> +            rom_size = memory_region_size(&bmc->soc->spi_boot);
>              aspeed_install_boot_rom(bmc, fmc0, rom_size);
>          } else if (emmc0) {
>              aspeed_install_boot_rom(bmc, blk_by_legacy_dinfo(emmc0), 64 * KiB);
> --
> 2.43.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 01/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize
  2025-04-16  3:43 ` [PATCH v3 01/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize Jamin Lin via
@ 2025-04-16 20:24   ` Nabih Estefan
  0 siblings, 0 replies; 20+ messages in thread
From: Nabih Estefan @ 2025-04-16 20:24 UTC (permalink / raw)
  To: Jamin Lin
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, troy_lee, Cédric Le Goater

On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> The variable "sram_name" was only used for naming the SRAM memory region.
> Rename it to "name" for consistency with similar code and avoid unnecessary
> new local variable declarations.
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> Reviewed-by: Cédric Le Goater <clg@redhat.com>
Tested-by: Nabih Estefan <nabihestefan@google.com>

> ---
>  hw/arm/aspeed_ast27x0.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c
> index dce7255a2c..b05ed75ff4 100644
> --- a/hw/arm/aspeed_ast27x0.c
> +++ b/hw/arm/aspeed_ast27x0.c
> @@ -577,7 +577,7 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
>      AspeedSoCClass *sc = ASPEED_SOC_GET_CLASS(s);
>      AspeedINTCClass *ic = ASPEED_INTC_GET_CLASS(&a->intc[0]);
>      AspeedINTCClass *icio = ASPEED_INTC_GET_CLASS(&a->intc[1]);
> -    g_autofree char *sram_name = NULL;
> +    g_autofree char *name = NULL;
>      qemu_irq irq;
>
>      /* Default boot region (SPI memory or ROMs) */
> @@ -649,9 +649,9 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
>      }
>
>      /* SRAM */
> -    sram_name = g_strdup_printf("aspeed.sram.%d", CPU(&a->cpu[0])->cpu_index);
> -    if (!memory_region_init_ram(&s->sram, OBJECT(s), sram_name, sc->sram_size,
> -                                 errp)) {
> +    name = g_strdup_printf("aspeed.sram.%d", CPU(&a->cpu[0])->cpu_index);
> +    if (!memory_region_init_ram(&s->sram, OBJECT(s), name, sc->sram_size,
> +                                errp)) {
>          return;
>      }
>      memory_region_add_subregion(s->memory,
> --
> 2.43.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 03/10] hw/arm/aspeed: Add vbootrom support on AST2700 EVB machines
  2025-04-16  3:43 ` [PATCH v3 03/10] hw/arm/aspeed: Add vbootrom support on AST2700 EVB machines Jamin Lin via
@ 2025-04-16 20:24   ` Nabih Estefan
  0 siblings, 0 replies; 20+ messages in thread
From: Nabih Estefan @ 2025-04-16 20:24 UTC (permalink / raw)
  To: Jamin Lin
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, troy_lee

On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> Introduce a new "vbootrom" field in the AspeedMachineClass to indicate whether
> a machine supports the virtual boot ROM region.
>
> Set this field to true by default for the AST2700-A0 and AST2700-A1 EVB
> machines.
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Nabih Estefan <nabihestefan@google.com>
Tested-by: Nabih Estefan <nabihestefan@google.com>

> ---
>  include/hw/arm/aspeed.h | 1 +
>  hw/arm/aspeed.c         | 2 ++
>  2 files changed, 3 insertions(+)
>
> diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h
> index 9cae45a1c9..973277bea6 100644
> --- a/include/hw/arm/aspeed.h
> +++ b/include/hw/arm/aspeed.h
> @@ -40,6 +40,7 @@ struct AspeedMachineClass {
>      void (*i2c_init)(AspeedMachineState *bmc);
>      uint32_t uart_default;
>      bool sdhci_wp_inverted;
> +    bool vbootrom;
>  };
>
>
> diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c
> index 82f42582fa..e852bbc4cb 100644
> --- a/hw/arm/aspeed.c
> +++ b/hw/arm/aspeed.c
> @@ -1689,6 +1689,7 @@ static void aspeed_machine_ast2700a0_evb_class_init(ObjectClass *oc, void *data)
>      amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON | ASPEED_MAC2_ON;
>      amc->uart_default = ASPEED_DEV_UART12;
>      amc->i2c_init  = ast2700_evb_i2c_init;
> +    amc->vbootrom = true;
>      mc->auto_create_sdcard = true;
>      mc->default_ram_size = 1 * GiB;
>      aspeed_machine_class_init_cpus_defaults(mc);
> @@ -1709,6 +1710,7 @@ static void aspeed_machine_ast2700a1_evb_class_init(ObjectClass *oc, void *data)
>      amc->macs_mask = ASPEED_MAC0_ON | ASPEED_MAC1_ON | ASPEED_MAC2_ON;
>      amc->uart_default = ASPEED_DEV_UART12;
>      amc->i2c_init  = ast2700_evb_i2c_init;
> +    amc->vbootrom = true;
>      mc->auto_create_sdcard = true;
>      mc->default_ram_size = 1 * GiB;
>      aspeed_machine_class_init_cpus_defaults(mc);
> --
> 2.43.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [PATCH v3 02/10] hw/arm/aspeed_ast27x0 Introduce vbootrom memory region
  2025-04-16  3:43 ` [PATCH v3 02/10] hw/arm/aspeed_ast27x0 Introduce vbootrom memory region Jamin Lin via
@ 2025-04-16 20:24   ` Nabih Estefan
  0 siblings, 0 replies; 20+ messages in thread
From: Nabih Estefan @ 2025-04-16 20:24 UTC (permalink / raw)
  To: Jamin Lin
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, troy_lee

On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> Introduce a new vbootrom memory region. The region is mapped at address
> "0x00000000" and has a size of 128KB, identical to the SRAM region size.
> This memory region is intended for loading a vbootrom image file as part of the
> boot process.
>
> The vbootrom registered in the SoC's address space using the ASPEED_DEV_VBOOTROM
> index.
>
> Introduced a "vbootrom_size" attribute in "AspeedSoCClass" to define virtual
> boot ROM size.
>
> Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
Reviewed-by: Nabih Estefan <nabihestefan@google.com>
Tested-by: Nabih Estefan <nabihestefan@google.com>

> ---
>  include/hw/arm/aspeed_soc.h |  3 +++
>  hw/arm/aspeed_ast27x0.c     | 12 ++++++++++++
>  2 files changed, 15 insertions(+)
>
> diff --git a/include/hw/arm/aspeed_soc.h b/include/hw/arm/aspeed_soc.h
> index f069d17d16..9af8cfbc3e 100644
> --- a/include/hw/arm/aspeed_soc.h
> +++ b/include/hw/arm/aspeed_soc.h
> @@ -59,6 +59,7 @@ struct AspeedSoCState {
>      MemoryRegion sram;
>      MemoryRegion spi_boot_container;
>      MemoryRegion spi_boot;
> +    MemoryRegion vbootrom;
>      AddressSpace dram_as;
>      AspeedRtcState rtc;
>      AspeedTimerCtrlState timerctrl;
> @@ -152,6 +153,7 @@ struct AspeedSoCClass {
>      const char * const *valid_cpu_types;
>      uint32_t silicon_rev;
>      uint64_t sram_size;
> +    uint64_t vbootrom_size;
>      uint64_t secsram_size;
>      int spis_num;
>      int ehcis_num;
> @@ -169,6 +171,7 @@ struct AspeedSoCClass {
>  const char *aspeed_soc_cpu_type(AspeedSoCClass *sc);
>
>  enum {
> +    ASPEED_DEV_VBOOTROM,
>      ASPEED_DEV_SPI_BOOT,
>      ASPEED_DEV_IOMEM,
>      ASPEED_DEV_UART0,
> diff --git a/hw/arm/aspeed_ast27x0.c b/hw/arm/aspeed_ast27x0.c
> index b05ed75ff4..7eece8e286 100644
> --- a/hw/arm/aspeed_ast27x0.c
> +++ b/hw/arm/aspeed_ast27x0.c
> @@ -24,6 +24,7 @@
>  #include "qemu/log.h"
>
>  static const hwaddr aspeed_soc_ast2700_memmap[] = {
> +    [ASPEED_DEV_VBOOTROM]  =  0x00000000,
>      [ASPEED_DEV_SRAM]      =  0x10000000,
>      [ASPEED_DEV_HACE]      =  0x12070000,
>      [ASPEED_DEV_EMMC]      =  0x12090000,
> @@ -657,6 +658,15 @@ static void aspeed_soc_ast2700_realize(DeviceState *dev, Error **errp)
>      memory_region_add_subregion(s->memory,
>                                  sc->memmap[ASPEED_DEV_SRAM], &s->sram);
>
> +    /* VBOOTROM */
> +    name = g_strdup_printf("aspeed.vbootrom.%d", CPU(&a->cpu[0])->cpu_index);
> +    if (!memory_region_init_ram(&s->vbootrom, OBJECT(s), name,
> +                                sc->vbootrom_size, errp)) {
> +        return;
> +    }
> +    memory_region_add_subregion(s->memory,
> +                                sc->memmap[ASPEED_DEV_VBOOTROM], &s->vbootrom);
> +
>      /* SCU */
>      if (!sysbus_realize(SYS_BUS_DEVICE(&s->scu), errp)) {
>          return;
> @@ -898,6 +908,7 @@ static void aspeed_soc_ast2700a0_class_init(ObjectClass *oc, void *data)
>
>      sc->valid_cpu_types = valid_cpu_types;
>      sc->silicon_rev  = AST2700_A0_SILICON_REV;
> +    sc->vbootrom_size = 0x20000;
>      sc->sram_size    = 0x20000;
>      sc->spis_num     = 3;
>      sc->wdts_num     = 8;
> @@ -925,6 +936,7 @@ static void aspeed_soc_ast2700a1_class_init(ObjectClass *oc, void *data)
>
>      sc->valid_cpu_types = valid_cpu_types;
>      sc->silicon_rev  = AST2700_A1_SILICON_REV;
> +    sc->vbootrom_size = 0x20000;
>      sc->sram_size    = 0x20000;
>      sc->spis_num     = 3;
>      sc->wdts_num     = 8;
> --
> 2.43.0
>


^ permalink raw reply	[flat|nested] 20+ messages in thread

* RE: [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom
  2025-04-16 20:23   ` Nabih Estefan
@ 2025-04-17  2:29     ` Jamin Lin
  0 siblings, 0 replies; 20+ messages in thread
From: Jamin Lin @ 2025-04-17  2:29 UTC (permalink / raw)
  To: Nabih Estefan
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, Troy Lee

Hi Nabih,

> Subject: Re: [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom
> 
> This patch probably needs to go before patch 5 so the automatic enabling of
> the vbootrom works. Besides that it looks good.
> 


Thanks for suggestion and review.
Will update the patch order.
Jamin

> On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com>
> wrote:
> >
> > The boot ROM is a minimal implementation designed to load an AST27x0
> boot image.
> > Its source code is available at:
> > https://github.com/google/vbootrom
> >
> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> Reviewed-by: Nabih Estefan <nabihestefan@google.com>
> Tested-by: Nabih Estefan <nabihestefan@google.com>
> 
> 
> > ---
> >  MAINTAINERS                 |   1 +
> >  pc-bios/README              |   6 ++++++
> >  pc-bios/ast27x0_bootrom.bin | Bin 0 -> 15464 bytes
> >  pc-bios/meson.build         |   1 +
> >  4 files changed, 8 insertions(+)
> >  create mode 100644 pc-bios/ast27x0_bootrom.bin
> >
> > diff --git a/MAINTAINERS b/MAINTAINERS index d54b5578f8..70ab0d0afa
> > 100644
> > --- a/MAINTAINERS
> > +++ b/MAINTAINERS
> > @@ -1163,6 +1163,7 @@ F: docs/system/arm/fby35.rst
> >  F: tests/*/*aspeed*
> >  F: tests/*/*ast2700*
> >  F: hw/arm/fby35.c
> > +F: pc-bios/ast27x0_bootrom.bin
> >
> >  NRF51
> >  M: Joel Stanley <joel@jms.id.au>
> > diff --git a/pc-bios/README b/pc-bios/README index
> > f0f13e15f2..d009c37895 100644
> > --- a/pc-bios/README
> > +++ b/pc-bios/README
> > @@ -89,6 +89,12 @@
> >    more features over time as needed. The source code is available at:
> >    https://github.com/google/vbootrom
> >
> > +- ast27x0_bootrom.bin is a simplified, free (Apache 2.0) boot ROM for
> > +  ASPEED AST27x0 BMC SOC. It currently implements the bare minimum
> to
> > +  load, parse, initialize and run boot images stored in SPI flash,
> > +but may grow
> > +  more features over time as needed. The source code is available at:
> > +  https://github.com/google/vbootrom
> > +
> >  - hppa-firmware.img (32-bit) and hppa-firmware64.img (64-bit) are
> firmware
> >    files for the HP-PARISC (hppa) architecture.
> >    They are built form the SeaBIOS-hppa sources, which is a fork of
> > SeaBIOS diff --git a/pc-bios/ast27x0_bootrom.bin
> > b/pc-bios/ast27x0_bootrom.bin new file mode 100644 index
> >
> 0000000000000000000000000000000000000000..e50f56eed9deeea65cbc1dd
> 37897
> > d59b1ff64ddd
> > GIT binary patch
> > literal 15464
> >
> zcmdUWeRNdix$m?0o`jG@3gios)$AnDOGgk80*TUQXA&tE+d@pO%a4@_Bs3
> T#gb9@b
> >
> zJ(*DNEw}0FVwwp-1QMt{$4ou<dTMA%k3B@{u^+hZK}2iqhm!=YJ+Y@MAc=}|f
> 4_I{
> > zJs%Nm*ZuDfPWImK`#jJ4d_T|o?$IZbI|bhie5c}@iLc<pYZkty1kbL()xxzDS3j;x
> >
> zaSh_S1lJ*47vUPkbs?_A{r~CHZW=GdVzB}N|3{_lg(8pjy-H06bdTIwCDz0Sk>hoM
> >
> zc^@#n6~+s%;Om#d7vIM7QBCgjN#9wYCC^p(i#u->3Hx-p(-N8J{jBjqFYsI(0nV#x
> > z9hsi2pCFXSkG0ai23OkiP0qEV#CYM#t|$9-@OQ<K(1qKz{!4f3{g(`hykltIe@~O}
> >
> zkS@n_M9u`Zc|$P3neahxX!L@FMvUCZu#xYL8hMeDDS*@DI953$k9nQBoXD3o
> 2~+k9
> >
> zw^xF$um8%fryo6uHHVD47cXFqH^B2~g*DhdU0ORtYQgECWDMPP5##Nqv_6F
> ~EyMb>
> >
> ziLpw2&7eg7f;oHboQPV_ygqa@)_D!%wmd)S7yq};`VSm?+m&gl44tK1ZTi~K<qby
> v
> >
> zM6;*=y+B%j>~k{VQ9R0<GI!NP6wlETJ@g*NG{{nP@%oTjBfK<JjIpSZ6Io$M*wm
> $T
> >
> zeY!O`jAtMCQZRi>L)QX^I_lW6EJWBJLodUIc>Tusas{)uG&CJB^#6d*3bpIGWA#^J
> >
> zkQ;jY&NApNCsMDkeXay{PY2vA=uXY;TN=7Q7VDuNqsFWVb$NM1738Rf9JfHPzl
> !UX
> >
> z>lS+?3>$hC?)lPCbcIZGi^D^-Ec6O=HEiU0X?Mb}ft`m}SQGESCWcO)^Spf`%Q*K*
> > zht`|G;d20dj00{6zN_fJUmAiRL|%q}o>R6F`h{(qrsbh?7?0-Yp;6#Om&ycj^fSwW
> >
> zlLz0)iG<T7d>L~=k%5tKS%Y;Vt&b^RfKJX6E<f^T(9M&a)B4YgJL9w$uL%7Nw23nc
> > zALRIK(6)ZKBJ>kyJi5#JQK2DYm$K@AlxO619^Z4|pbL8)VEs3jg|HTA1Yyg92z~hr
> > zkbe&5f~U(uKfv5&%w5)J{jl#stk$)w<=8dq>J)Z82w0_$#W#n(<>+b%z7n^?>hcin
> >
> z8NJ!ofjn9sidM+PCD6F@gV?|@?5glHR))R>TK^q1TpiI)Bd~*Oql5HCO_q%=wLYX
> z
> >
> z3;LXJ^cjV23Zc&hn$$*bwkD{ft)T7F{U?V%*B@w)_dbaATm-)5fjw}I>l?PL2QGEm
> > ztIOCX*eD9UhIQ$Tg06~}1LdIrc;lM0a>55`n-U}EG-=Q->ws_DOXZFT^?#chqyDdj
> >
> z{&ORL0X}uV3ga(Q2Nl)?>EFw7O-i|b4C`OS+86cQ&hVa|gCnqAoX->GA=H%cFm
> RPV
> >
> zgEuK3I)&%DxyB2cWV~5awrWD=$jp+p5?YU(GZI_0+!PsPUUFf~vh)cp+ZrsEYj4!E
> >
> z1=nDW4w#V{!I?#(XBK*7u*f4fYM2|I9<0$aWDvQohBWLv^l$xc{>jCf9iLq_ft)^&
> >
> zgLT`z(h6PH_G!TyQz~BM9CYtxe7|XEkt@4SsdyH>@I{Wf&k5QCaoWtIQNswSyj`L
> p
> >
> z@1!F~=*ZQ<nme@MS>`+XTr@p6GrCI#W9{I#GoydBYij?i4`=rOsZJ*Rx>YXFE%O
> R&
> >
> zp!i^Zxw7locwQ+COKWAm)cVt{^1>l$^&3(fNS6?NvxfMEk87<*J<dGt;rnXdgZUB
> %
> >
> zMy|w`6+Vl(G^yQ-dD865!F8Y3+BXgQ@C0lA1^I>akR)gPFWfI?uFSO8se--~uS2p<
> >
> zgB~m9O6&ahW3@gpt|KoKurXohVm$-jQ9N_~E4UU$wN?$eHj0=T-enCw?U7|
> 2Y2z!j
> >
> zl@cm?^BdnAMsCtjlVcmS@(Pi+tPE?XHWf7~Jy`P{@G%X15RdprwN$(U;Ax1_%jx
> o5
> >
> znMXp=`*xK1q0g|cWs$E(v3{{BGe)3)=C=hOfDhzb87k_03v+Ft&-my4hWBEnivEH
> W
> >
> zz6M{$TnT85f<`-N-1csQ#@R`8lj)n;*7u6uuYNw*<S+9#%`1x<X%Whp=8@+-v#g!j
> >
> zG1Q>lR+mQ))}%q+4v{r=qBY;o`U@D!^1zVU8O^uKf)lZ2tHCdI>Or1-@Y$82QTUz
> c
> >
> z!Lwr+i^6{!n~KW*ihEaI^#=5nBu{|^2Y+IW|F|zLSW^mGQKR5A^=D+fc<?gt*9Y?-
> >
> z_6^C5;-=Cv=Aa_#)G#7-bLFkqp}WifV0HD~_dpr-JrDS?bXn2?8Ge8@ll8nAzTxVb
> >
> zzJPTi>=RIPW)uMLA>1?G;rj#33&kr}O&n8o&6+S*rX#o7@oeJyfdk82T++0@482=
> v
> >
> zVN-D#W75FY2Oi%Aj2rv#Kf9;Ok_pCWyXa$n=+kW4P-a1&e%<JV-%{=xBo5VET*
> $H}
> >
> zl4IR}UrE^p(4}9H&m#D|E><~h69lb2-~o1Q73n=lJ_NAiNwCx%WH^gnv%DQRGJ
> VfM
> >
> z^7+kJtd#JiiT)%~jQRDTWs02UIQ9KrlDr1wor`a~c$%5FNMi$N_{Fovr9*k^#2AaB
> >
> z)}%qkx%l=<nu2cx{CUt<^S~F(72zwQDg06RBW0w%*$a~|_6x7U7hW~=hy|OlU#
> <tA
> > z;J5TVe1YrHCmumROdjezRylRmp|fvEj|{-R{#fidVLOPY`kC|yb4mx`X!Bl?^7AU+
> >
> zKJ_SRokVZy(&IS$aCfcCxVLS4Qsv%1InSdC|78Dp@XLJvL(m@vE!d}%aeZYMX?ql
> H
> >
> z^6AoW;a>&*Ymo6UV2MMyUV$F{(9==q=qcrAC1s>RTI7**v?kj(E;;(z19@PV=aB
> Et
> > z8chvl^YE<`&lqUdJ_vc+VG9c};+Hg~bL!glX+yNr^iR;BZJ(om)2EL?e_V^U^f>F$
> >
> zhKx1(I(c>N#e2?GV!g>Y$#Fp+R&~*d3(O(@b0U*{-}M3X-2=Mloy4P!8gec8mF@r
> J
> > zxt_TTYjaKF#C;yQ4l%l{P_#Ht0zHrycb`EV*B-<pU)UirhI;BUthY7PGxqP_|3h!h
> > z_qCsHLtUkx_7sZITn}AY=pV2j=|L~h+7G!czl6}M_7ql2>#dkKwcyNb)Qzg*U`^Er
> >
> zKiEb*^Z>QiK4A~u6GRUeeW370#Bg&|f-}v1!P&_+w)Egk>Q_LAd=CM}jc=|w6|
> @R7
> >
> z5dXYd*h6`+Ur56@*rD=4&<LKTjRoVR<H{=Fo3j2JcyQNa?xy|<A@^{G)Vi>)UXDT
> s
> >
> zN1=m%p?uIk`W+?zKjRs(>Qy?JV(S3)PU&Dip4%bYXgYdD=q`$J`n?4m_u`(q?X}FY
> >
> zUxNQW)Ktro5OQ)4^|8mac4lC_9dcQwgkFb!zn3)kE6h=6*FwLn&xqw_@?q|?c2
> >bB
> >
> zsN?^EarnUXr%*F0p!;v)YAu#fa1#8_(HB@j3GH;?eRw83>C58Y57~r%<JyEarcGRZ
> >
> zF>fh90?!*k5AtFkrd|K)ir(28WPBCzoF@A9s57;G=;2<#oCNRerv-k@KEuCOLSMl+
> >
> zZTe@77X!YSu?v~jVZ09Tk3yCr)a<#|+)m`-PS=iZ9J~&FyF86R4)UaHGWaL(_h;<w
> >
> z_aOeC2QBPn2N(~PkVC`#r)J0u&EHp(iG3~Y97GJ%T_de~p>NIXtKrxX?=Ab@uS=
> ~L
> > zeHqt}8kydcZhi_n^9t{14fE8nk?t+Vx=~|F<QdVkp5Xe}`(XWY6ZPbjOkFc<O!ad9
> >
> zG0a(4Vgt`)%Zz8*J~<Qn;X&qH(%?M#|32~Gj|~{$pK-JSJl9M5^~H;=olWnd_Ct@K
> >
> zLeJy@T;WP-&469o=Sb_X&=>q%j5Y1>bwBPuwOD3wzhLXj?%Rh8W$-BWW`63<
> >Bp(t
> >
> z5$LYYW4&DodyE7mgq}mi|5LC>w9p!)oc}L$x=1G*XC7Cf^B2dbV&Lfw*tJq0U;bZ
> M
> >
> zdkpK17}FwA;~MOLvb=jp1Np#$O$yN)M|nk_AWiH62Z9>TS3EKUd1o*Ue)crrqo6
> qk
> >
> z9}QlKEsugmvaH$Ae+O{T53K6|PRIMP<y`X}$jIwy=%>9%mQ;d%uO@Fb&*;62eP
> 0%I
> >
> z#&eovJy2KV|1{T>@fE|suK;i8UG7R=6EUE2o{RfeNA|aYZ_;-_W5k#VnLiOZ0b0x<
> > z7UGJ!FGMf&7sLx?9;O~)t7O_5XtS@eY5y#~hgya>3ZE)DjlS?X_G-D3+i9PJ>5;Et
> > zj^{MYwK<4Sdyj;ArS@e%kJsZ7>`}3=246XmIoLy^ewX_1`&wD>gV-|e0jL+|*JJwl
> >
> z3VZ!T&*1bq-g|*ZS%Sz5U%`DLYIYOWMGp238y?V3kK|$;I#Tg=(up+-a?v+={hRd-
> > zIhOTJ<;u--Zf`_>WZh>@M!%!-)q^;5tUpuKX^Ga^Yt0)Iv-e<fe!==l_2kL89(itX
> >
> z0Xn~wgL91wJR{_}OpcfP`rlC=_;(ccxljRH!9OdpZo3YDMeYgwC^-944)^-@J~;WT
> >
> zun^~ieTZG?e<u4d$sT%H<zU1+uaoUb8(u`5kdIQ>Zw};wUYFP6j47zgpt7UA)`#rq
> > zFP6~bfba8}odKL}oI`%{<E-yhj1iYT;pFwyT1n@oV^?B5v{^KLd_~`l5;_Fj9LdkB
> >
> zlbq&$)WT}XS;Mm?x2A?M@52~#Yd!YG`>`+WtC7%mG0qx5-|O2Wp>N~)6&<w
> ^IoXi>
> >
> zHSEXN?|X3e6TYQ5gUP`eOt9uhSQ~rqfi}o0I5Q*9ALX-^=u0Y9UxIb92F_5{{1|%T
> > zS}j}~{FGq47uP={PZmR$&_lr<*y|#Ca_W(1bL(Lj_7@|L|Lwt=+>6uSb-<t(zpBnI
> >
> zpr1=VZ$1p(*$03R_)K1ewGQze=|k=k^#9CnkY~d5SQG8I_v0SESi@MPj8}Fg;?eK
> $
> >
> zLLON2XtQ(`H+KK-){!#M8G<aY0p6}*>G2vSSf>&5=$i+gLEgOZ5puXP2x@*2;Fm*
> B
> >
> z@IfU*6J!cv|Le;1RmLx#pNGw!&~rLz=fF$}<p7U0>X(QQ+Hx3s<L|z&dc=Vo^sQm
> o
> > zljB_+`xu)tmf9TKFjff5y}IqQKTU~MH^;qW7+#(eVejqb+4#-inf&`<iwj19cOsyL
> >
> zUc#RH-3?kOcDD>h@3sat$??|1SD14H$9nH_d@O!;#IxxuyPk>XN0pONk4A9L=j
> H_V
> >
> zjy(G{(Sr=vS%a_WTJy8;w-KC$Fqi%svRc?HU&eV#0nUy%PQTDHf;HoqLykQj)3sLg
> >
> z0Px)$?}#xQ^SO~5p=0vT^TQ9vDsvQiQ71oKg3O-<EuOtIC-Q96&O^B=xdA!Bq2-
> +G
> >
> zIs2Cj(3PrZ%HFB_m=hnw3MTJsY<^N{T>Kas|MZbG29+(}yIv-C(cheRH$20?WOyR
> 9
> >
> z=eUs;xolh)p-m?s@4HWEq5pu+shcj;?k}gwahwyL%||bg$kq9g$Dlvva={s}WU$A
> W
> >
> z9r*#qSZjF}JA`|SHfym4q5tM#WwYyGvuh*w(k`&sINk@@K4I%I{=VXRo^kvl?iaQ
> %
> >
> z<VSw$@bxnEoMXr!_E`m8@a5m&`UHG9Vat>K@g5uf-7Vln^>*L^XBY$Q$1R-G
> GM14W
> > z&YpB?q#fJ#9={Dbwe4`S|24>|`gPEv-?+3I99qGTq?H~?bLb<#f4rZeHXz1e7tQ<q
> > z_gG`|m9Np~l)u^Mt||WZ(j=O%K7sdhj?Z!b!n`<yyy!>%@Hl+G4jn`n1qWrZgt(7`
> >
> z9cqy)2bXgmeJ}SCMX3MuNuJXs=gT7Cuy?Ta@~=sG0`*++ProuEm#>qF%kZTU+!
> uo`
> >
> zd4NAf9^gKLzOqyc&BnOvE2X%PB2R;t<J+0TzGMyd!Jf2@o3}4tN1yojxK9j0rvE@
> p
> >
> z&=#v9Lm2t7H`97M3jY15#kwO8_e_4Dg#HVB`)`!c8*%;<y`9~YIPsojhswXx4%nw
> U
> > zI^la#dE7VuGivYb_Bec>#Mq+_F2cT1*aki`fcF-I73f=N1BEyJGk6Eaekd0)loNqJ
> >
> zGq=Uzh9Qg62l^5b3;t`rEB(b4<Pg+1=&Oc#$sNC1--Gp4J!KAHuapNIH@;Yh-#~0K
> > z_D$w(k1Xi}Z^?N(*&kf{Jq12bqUShX9GuOb-l;7$?1Q>fYKx<D<)d0;82$<$Mr}oJ
> >
> zz6kwZhAe@+wa+7GQx-cfChE1IzWPCreS_fK13hY7?~G6CnDSB2n#jJQ)t?C|8yLF
> x
> >
> z9-N<==&Q-|dGwvoGipIDa(qr?QL>(${egya_o6rJ$~w@aYuI~MJc%9@`UhXOPh
> M5e
> >
> zi9Q!SuG6>ZUOOHnvIYJGU-JebFZ89}xrJc^CkNVfQTch|9k?IwIgX*O7GnMFr%F2o
> >
> z??qVm$+rc1sI711Pwzem8%9p)>=_Fp{|b2+`zH2ge7=BOg7=kSuHCNZjqO1#d<X
> Cz
> >
> z<n$M@?>MRFk43Q;9^yM1tmDVN^_ZT2+FmC=@+oJX9JNlacY~h4hI<)B8!<?_7
> WRh!
> >
> z2ln7QCHLI(%C5xwEjz|E;AoNNcgbH4@&jvyTSM*lSvY%jY<hLvdp-vD8*$v^*iQ0
> ?
> >
> z%?W>?-?4Y0KhPH#H?BW0mUu?$`nsyGc6^<+<168lDYaVppW5FjIhTA4uZdc9A}
> Nnz
> > zKa#XZu=_1T^;`Tc!XH78u}S~I`;6Ajh?U#p{$uZn;x$yg^Z#W$Uq&xzp##{vBIax6
> >
> z;Cn5;@6wO(PAfW!cY=8TALDx?_@)2Y9Xp@pc^uwlp%?Q`g`ae^TV3zNcG%}XhZ
> Fv?
> > zUie7|{N&ISS?9yvzfkn%G3=)`xwg6JOz-S+L(3|}eLefRrF^f<Jzid<9R4!WZsA?7
> >
> zMEr<z^jY3Bu-n}-C#&5kX#P*cSn$-!&hjZTV>iA&^ewHB`{1u{E^F8Gn=2tR`66xa
> > zIL;KNV88gA-r0u?Swq=+f4#EoNzfa?yEAvqpTK{qw_jnr9q)ng!lSl*Ce9?@iPheY
> >
> zUVwdD0D4ULUUF^Iy|zs>FYB{y6N&6{Y~hD3mLXSSZ6}Tsc1W&Q<EVM;Rk;6(eM
> tr@
> >
> zkY~)kFYn}81kN~?d>eW~Em%T+mQL?dd6adqP;#3CGdpHiNM7?(fV~5CV+c8r<KI
> Rc
> > zk5E?C^A<$D0XgZ<+;35y-{b1~CvtlYbL411Lcf6TcVHd%<z`=SHqTjPdI!!h?HEkd
> >
> zjYJGGr?PgTe)ga?tk7X|w@xu$c((82|8K0zG50w^@56hGci3Ya9<SYtYTnDx@kEJC
> > zlsNk3T6piN@&xPCct8tPLC!(sMA~#Ibe~+Gl>e8o1}63uqtK6i_F|ti2zmoyUB!Na
> > zdOZrg+Ix<I$d4ybo3W3ueJ3}<HUFFAKit>a`b^{(yS`{%#KpRbY*{iNdvlfRK!^NA
> >
> z;UA;{yW`zNZY0;Ch4JO~9>P7#NaPfEZJrSnf<N@qYVSfie+3UufEIgSo0pWD<M=A
> y
> >
> z_v;b25Bmgo$wlo%&G&|(H^$L@keM}hhU)A2TMM2`6-2%USU=u5tOuOhM*-#
> ^G1iAO
> > z4o&h-<D6<;K-bpfVZX_q%EUZvO&i!fTB3F(^EZl`tM(r_Z|Q?v(Ess^=znY-*uN)8
> >
> z?prQZ1PAGJd6L)3n!>tu40<@K=bUEk`!0B5KM*)&c5<!>^6;JQJK*UYeEUD+`bosH
> >
> z-J=?jQN$ws?H|C0Nj?x~DK%LAt|8HDk`L}_el{NKx%8#rAYN+E*sdq|!ux|-@Hms
> U
> >
> zarxWm@V5i}>BwP)M&20v)Iupx{>I;;P>$Jv!`^fmdA|TZWq(Tk6S14H??uC->I3qS
> > zm-_r7_=l~Iqu&~cLYG101>~Vg=Z^_{B<qwq`zCd!&em;za(Q0?o;1ifTp@$?r;0ie
> >
> zBV+#)u*=X-41qVkAK#C@=p4?~x#oF1qmNj}o+qJqJ4QyIaQ7rSVoCP-`aTmvU!u-a
> >
> z*z-;9@rE(RJ<qMkGt5uXg5KFYqnI3bPCsFvBf{4Uz;jgP3OmLbE9FiO5sWAHuDKD`
> >
> ze)hJ_kSX{<tQ2-oz1QU0zH<AP<}ED`Z27EgZmDmOyXOV&HRlCxGPiDP+1j|R?d#
> ^2
> >
> zmNs)^%l0h|nTg3wTfSDmc~gVAxpB)^+nUVz^BT<cUvFy+EHE2)Y;D}o*4SV!Gh4Q
> q
> > zWuMLzv(Ch)PJQfa^54nhYK{o*jSb-bwNdLp(jLj&ZSFSBMfiuYPpiN8IDZvP%7|(1
> > zUPNGi_;<HLt6OA4g1|kCNO=*#Y(z!gdBD(B{?#Ro?dF5x3s*9B4{0hautz}NgI|{r
> > z$#Zy-O(prS0;yYIDv}CDVL8-sF?Zt+COC)xcuyS4g$rjg6@-leP5@#5wPyjbyKc8V
> > zqHy_#$h<-lg`ghnTTbA=-E}rfX67A@+X9<fw%oMjhQ&85&dii~0a-;iF>Tjab!)A;
> >
> z>Hhk!Hk$Qq=HeamHt#U!2R7|&yonDxY<GcoEK)E5`C`k5@RZY;o3@zS>bHQ5O
> =Dr4
> >
> zR$Jp%MQig8kO8_w3I5v9=sN87^(`%Jw%az<2QX#Q$<6wPhHZ_3K#}9o$zu-5Ol
> hcZ
> >
> zt53n?Kng}9WOXRTu~hgF@+Q-b3DYuLHf{_wI$B6tbJLcuCZO6{9La9D;RaJ0TDCL
> -
> >
> zQt^LpA_S=oDAu77Xx;=BKqxMlDfMj|Wn+UQZnCHg%#HP%H?ObX&}?Fr?F*?C6
> WphA
> > z9jBJ84znIYf|g4lQ*PO|t!3Lyrth|;OU(JT+qMT7?5j3yyZ?duZH)^nKb>H9f!S2Q
> >
> zxeY?zkSUp;-+upA$_oZQ8rAg_c+=t~H!fXPx_m`hdHwng4UHRR^QJA^cP!Z21co*
> @
> >
> z$|9tn`aokq;GBW4-@m?PbD*wHHniNowZ3iBdH|$+raMpC&KmLT_@s7Sb|H?2
> L}uaZ
> >
> zIU9?e;e6%7%4yc&j3ZO3yVApH-Jbo%S2F+jhZkOa{@gUq;dlB{jW2$uiC-nhVkS10
> > z3TK~oc;=BA)m_uWpIFsBZT~er*$1*7$~-vr;fzC50-*4_-~aaI-@KGUhx~-`-GL3#
> >
> zTwM9#7!K-WFUGhIKjiUAd{1BudwY95^RVZL;p@`F+803G<<95c;>Sez5w}PbIBN|
> D
> >
> zXGl9d>qvpGD?gl9)t$RPXI0P412et^^i;-j0gm^ha`CsZ*aF<UAM#d>@eCYFy8QBb
> >
> zC&p%B>`nqwe~P!NF8wxgW~+_3LBOpBoJ*5q{9(BtWAllN562$GSR2Mn4&cMF
> CovYB
> >
> z1a}5wVT`R+P_~}VW9$sZs6+X}wCRWSBih2X;A5Kj7W%SonI?bu<3jSNW<*SY%|f
> xR
> >
> z{#`7#j5w7GefHevY#a=k_^t#@EnsSKuVhsCUsQzY7UU7<HS!=}RuTpuj<sRzF^svk
> > z<k((}{T^e<Iy{82H!!xCh{-y<#Ze)KiTgC*E&@*R>WsaFv0OA!$vS)kWAibV4H$k*
> >
> z{(&Eu7#rYyTn8IcWS9$>#{onC;m5?c3}fdo#`^?bHT6@u5JOz|9>AOd%t{Rp)vkVZ
> > z_#=U;97EXj@LN}j{vj6o4nPz1>f-cF3_k{#)qeyZq*vwAyUQ_TWfo!10OlV2aA-B|
> > z6&>Ywx5VWk40<OC{tcK}9+5`?GX(eqoqJN~tOSgO!%St{xP5L-f$;<8PQawb=(;!z
> >
> zZHwQY$v(jBaMxOVIQ>YPugeoQR(0$9HBwAY64dPp;G6?a6LI3YSUXv@%0JEncK
> UFt
> >
> z-N!MOfw4GW%6AidF&^jO2M`uu;(Vzb=wlA7>h=)!1vkg2b#4RvUchINCw%CeevI
> u-
> > z8YA5{jBUl(RsvCP33;o!_0Ol!rG6d({NsS1PrIkW`>3D$Ch3Rkz66{{a5&)lI_bQD
> >
> zu|pV(%agM1e(m;2bWGrw>F`V7ti?U_?B)SLGI>;Hk#03$vPWaF6NI@6fBs2y=`TB
> g
> >
> zvky4qE{^|j_K_@KS7vysuRCM^l&YTe18Kg8JO>SOm0Bj0{eiz48;{#u{Ddsk-TJL@
> >
> z(@@{%0ow%FY8Te66Q2WVCl|9wFe(Yp{~>Mn-wAI4z8diR03VlS>)~lfuJJwWsp`r
> O
> > zXLV=ppIX(EabQZ-L+J<88nEQ=QpHiZVlQY^<A5P9kMc+Qg01ID`$oYI0JZ_J$|ltJ
> >
> z)nKa@3T24`b}wM#IXXp8`?WQR(2}`;pAP4J4DfBZPuQ}m%Tt@s74vKv;Kl(r<if2z
> > zoOxubuPY-w#n+v_Kdq|Aa|bYflN`6?XDjf6*g*b0{FDK{5Acrw{(!rV-G_8Tw+O>8
> >
> zV~KbSBKbP^fTdsl9=L+T=)Ep(LUt85tn$hHDfw~OSqq#yC*!P1$Uh%*Wq^AynRX
> &K
> > z+|up&N}LtyssXT3z~cYwvUQq(^|6`q^{B2OMOWnI5b#dCJ~_Xt{ss<iryjyR4Y+6j
> > z1{`(y2KfNoR@^6StMcqE-8u!lx-PlK{7l3J4i-~$eJU^2fLjZ=`G8{&qt*y&ho>L;
> >
> zgs*E__!?h#_WrD@p3DPNs~*ZYIOXB=Luu^OKGX%0*8`x_hQow2xL0&O>|X~Av
> Ygtc
> > zi3#v?z|FvqRY^zTs(AmrT^le&-xvqX9Kftifl=}>=-j*>?;R=k0yMg1!1<+%bG4jR
> >
> z^^mFzzn#PveSb6Xhk*Yb7hm}!Vk>NP>or(4u6~=xLx7)y1ED?_ev;o*_2~B|g_w%
> >
> > zGr-vkoL~x$)3-C<C9Of<lx)-rzz@0bO3zh{V<(Ic7^{JnEDrTo20TAr_MLF?Ch^8L
> >
> wcXDiP2F`ilq{cqv=K@Y1W^9E4HywwIZ7%IZ+@e0##%18N``L#a|8bxH3u>Wpiv
> R!s
> >
> > literal 0
> > HcmV?d00001
> >
> > diff --git a/pc-bios/meson.build b/pc-bios/meson.build index
> > 34d6616c32..83998f6071 100644
> > --- a/pc-bios/meson.build
> > +++ b/pc-bios/meson.build
> > @@ -84,6 +84,7 @@ blobs = [
> >    'npcm8xx_bootrom.bin',
> >    'vof.bin',
> >    'vof-nvram.bin',
> > +  'ast27x0_bootrom.bin',
> >  ]
> >
> >  dtc = find_program('dtc', required: false)
> > --
> > 2.43.0
> >

^ permalink raw reply	[flat|nested] 20+ messages in thread

* RE: [PATCH v3 05/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios"
  2025-04-16 20:24   ` Nabih Estefan
@ 2025-04-17  2:32     ` Jamin Lin
  0 siblings, 0 replies; 20+ messages in thread
From: Jamin Lin @ 2025-04-17  2:32 UTC (permalink / raw)
  To: Nabih Estefan
  Cc: Cédric Le Goater, Peter Maydell, Steven Lee, Troy Lee,
	Andrew Jeffery, Joel Stanley, open list:All patches CC here,
	open list:ASPEED BMCs, Troy Lee

Hi Nabih,

> Subject: Re: [PATCH v3 05/10] hw/arm/aspeed: Add support for loading
> vbootrom image via "-bios"
> 
> This has to happen after we have the bootrom in QEMU or it will fail on the
> default cases. Besides that it looks good.
>
Thanks for review and suggestion.
Will update the patch order.
Jamin
 
> On Tue, Apr 15, 2025 at 8:43 PM Jamin Lin <jamin_lin@aspeedtech.com>
> wrote:
> >
> > Introduce "aspeed_load_vbootrom()" to support loading a virtual boot
> > ROM image into the vbootrom memory region, using the "-bios"
> command-line option.
> >
> > Signed-off-by: Jamin Lin <jamin_lin@aspeedtech.com>
> Reviewed-by: Nabih Estefan <nabihestefan@google.com>
> Tested-by: Nabih Estefan <nabihestefan@google.com>
> 
> > ---
> >  include/hw/arm/aspeed.h |  1 +
> >  hw/arm/aspeed.c         | 36
> ++++++++++++++++++++++++++++++++++++
> >  2 files changed, 37 insertions(+)
> >
> > diff --git a/include/hw/arm/aspeed.h b/include/hw/arm/aspeed.h index
> > 973277bea6..2b8332a7d7 100644
> > --- a/include/hw/arm/aspeed.h
> > +++ b/include/hw/arm/aspeed.h
> > @@ -41,6 +41,7 @@ struct AspeedMachineClass {
> >      uint32_t uart_default;
> >      bool sdhci_wp_inverted;
> >      bool vbootrom;
> > +    const char *vbootrom_name;
> >  };
> >
> >
> > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index
> > b70a120e62..7f11371f02 100644
> > --- a/hw/arm/aspeed.c
> > +++ b/hw/arm/aspeed.c
> > @@ -27,6 +27,7 @@
> >  #include "system/reset.h"
> >  #include "hw/loader.h"
> >  #include "qemu/error-report.h"
> > +#include "qemu/datadir.h"
> >  #include "qemu/units.h"
> >  #include "hw/qdev-clock.h"
> >  #include "system/system.h"
> > @@ -305,6 +306,34 @@ static void
> aspeed_install_boot_rom(AspeedMachineState *bmc, BlockBackend *blk,
> >                     rom_size, &error_abort);  }
> >
> > +/*
> > + * This function locates the vbootrom image file specified via the
> > +command line
> > + * using the -bios option. It loads the specified image into the
> > +vbootrom
> > + * memory region and handles errors if the file cannot be found or loaded.
> > + */
> > +static void aspeed_load_vbootrom(MachineState *machine, uint64_t
> rom_size,
> > +                                 Error **errp) {
> > +    AspeedMachineState *bmc = ASPEED_MACHINE(machine);
> > +    AspeedMachineClass *amc =
> ASPEED_MACHINE_GET_CLASS(machine);
> > +    const char *bios_name = machine->firmware ?:
> amc->vbootrom_name;
> > +    g_autofree char *filename = NULL;
> > +    AspeedSoCState *soc = bmc->soc;
> > +    int ret;
> > +
> > +    filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
> > +    if (!filename) {
> > +        error_setg(errp, "Could not find vbootrom image '%s'",
> bios_name);
> > +        return;
> > +    }
> > +
> > +    ret = load_image_mr(filename, &soc->vbootrom);
> > +    if (ret < 0) {
> > +        error_setg(errp, "Failed to load vbootrom image '%s'",
> bios_name);
> > +        return;
> > +    }
> > +}
> > +
> >  void aspeed_board_init_flashes(AspeedSMCState *s, const char *flashtype,
> >                                        unsigned int count, int
> unit0)
> > { @@ -483,6 +512,11 @@ static void aspeed_machine_init(MachineState
> > *machine)
> >          }
> >      }
> >
> > +    if (amc->vbootrom) {
> > +        rom_size = memory_region_size(&bmc->soc->vbootrom);
> > +        aspeed_load_vbootrom(machine, rom_size, &error_abort);
> > +    }
> > +
> >      arm_load_kernel(ARM_CPU(first_cpu), machine,
> > &aspeed_board_binfo);  }
> >
> > @@ -1691,6 +1725,7 @@ static void
> aspeed_machine_ast2700a0_evb_class_init(ObjectClass *oc, void *data)
> >      amc->uart_default = ASPEED_DEV_UART12;
> >      amc->i2c_init  = ast2700_evb_i2c_init;
> >      amc->vbootrom = true;
> > +    amc->vbootrom_name = "ast27x0_bootrom.bin";
> >      mc->auto_create_sdcard = true;
> >      mc->default_ram_size = 1 * GiB;
> >      aspeed_machine_class_init_cpus_defaults(mc);
> > @@ -1712,6 +1747,7 @@ static void
> aspeed_machine_ast2700a1_evb_class_init(ObjectClass *oc, void *data)
> >      amc->uart_default = ASPEED_DEV_UART12;
> >      amc->i2c_init  = ast2700_evb_i2c_init;
> >      amc->vbootrom = true;
> > +    amc->vbootrom_name = "ast27x0_bootrom.bin";
> >      mc->auto_create_sdcard = true;
> >      mc->default_ram_size = 1 * GiB;
> >      aspeed_machine_class_init_cpus_defaults(mc);
> > --
> > 2.43.0
> >

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2025-04-17  2:33 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-16  3:43 [PATCH v3 00/10] Support vbootrom for AST2700 Jamin Lin via
2025-04-16  3:43 ` [PATCH v3 01/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize Jamin Lin via
2025-04-16 20:24   ` Nabih Estefan
2025-04-16  3:43 ` [PATCH v3 02/10] hw/arm/aspeed_ast27x0 Introduce vbootrom memory region Jamin Lin via
2025-04-16 20:24   ` Nabih Estefan
2025-04-16  3:43 ` [PATCH v3 03/10] hw/arm/aspeed: Add vbootrom support on AST2700 EVB machines Jamin Lin via
2025-04-16 20:24   ` Nabih Estefan
2025-04-16  3:43 ` [PATCH v3 04/10] hw/arm/aspeed: Reuse rom_size variable for vbootrom setup Jamin Lin via
2025-04-16 20:24   ` Nabih Estefan
2025-04-16  3:43 ` [PATCH v3 05/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios" Jamin Lin via
2025-04-16 20:24   ` Nabih Estefan
2025-04-17  2:32     ` Jamin Lin
2025-04-16  3:43 ` [PATCH v3 06/10] pc-bios: Add AST27x0 vBootrom Jamin Lin via
2025-04-16 20:23   ` Nabih Estefan
2025-04-17  2:29     ` Jamin Lin
2025-04-16  3:43 ` [PATCH v3 07/10] tests/functional/aspeed: Move I2C test into shared helper for AST2700 reuse Jamin Lin via
2025-04-16  3:43 ` [PATCH v3 08/10] tests/functional/aspeed: Update test ASPEED SDK v09.06 Jamin Lin via
2025-04-16  3:43 ` [PATCH v3 09/10] tests/functional/aspeed: Add to test vbootrom for AST2700 Jamin Lin via
2025-04-16  3:43 ` [PATCH v3 10/10] docs/system/arm/aspeed: Support " Jamin Lin via
2025-04-16 20:23   ` Nabih Estefan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).