From: Nabih Estefan <nabihestefan@google.com>
To: Jamin Lin <jamin_lin@aspeedtech.com>
Cc: "Cédric Le Goater" <clg@kaod.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Steven Lee" <steven_lee@aspeedtech.com>,
"Troy Lee" <leetroy@gmail.com>,
"Andrew Jeffery" <andrew@codeconstruct.com.au>,
"Joel Stanley" <joel@jms.id.au>,
"open list:All patches CC here" <qemu-devel@nongnu.org>,
"open list:ASPEED BMCs" <qemu-arm@nongnu.org>,
"Troy Lee" <troy_lee@aspeedtech.com>
Subject: Re: [PATCH v2 07/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios"
Date: Tue, 15 Apr 2025 09:07:40 -0700 [thread overview]
Message-ID: <CA+QoejWEn-B8E_QC-hAM87j_5TQXMYZRgDNUvq5qUTYUr9VQ-Q@mail.gmail.com> (raw)
In-Reply-To: <SI2PR06MB50413B875162D6ADD2F182ECFCB22@SI2PR06MB5041.apcprd06.prod.outlook.com>
Hi Jamin,
On Tue, Apr 15, 2025 at 2:35 AM Jamin Lin <jamin_lin@aspeedtech.com> wrote:
>
> Hi Nabih,
>
> > <qemu-arm@nongnu.org>; Troy Lee <troy_lee@aspeedtech.com>
> > Subject: Re: [PATCH v2 07/10] hw/arm/aspeed: Add support for loading
> > vbootrom image via "-bios"
> >
> > Hi Jamin and Cedric,
> >
> > On Sun, Apr 13, 2025 at 8:17 PM Jamin Lin <jamin_lin@aspeedtech.com>
> > wrote:
> > >
> > > Hi Cedric,
> > >
> > > > Subject: Re: [PATCH v2 07/10] hw/arm/aspeed: Add support for loading
> > > > vbootrom image via "-bios"
> > > >
> > > > On 4/10/25 04:38, Jamin Lin 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>
> > > > > ---
> > > > > hw/arm/aspeed.c | 32 ++++++++++++++++++++++++++++++++
> > > > > 1 file changed, 32 insertions(+)
> > > > >
> > > > > diff --git a/hw/arm/aspeed.c b/hw/arm/aspeed.c index
> > > > > b70a120e62..2811868c1a 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,32 @@ 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)
> > > >
> > > > please add an 'Error **' parameter and let the caller decide to exit.
> > > >
> > >
> > > Will add.
> > >
> > > > > +{
> > > > > + AspeedMachineState *bmc = ASPEED_MACHINE(machine);
> > > > > + const char *bios_name = machine->firmware;
> > > > > + g_autofree char *filename = NULL;
> > > > > + AspeedSoCState *soc = bmc->soc;
> > > > > + int ret;
> > > > > +
> > > > > + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
> > > >
> > > > What if the user didn't provide any -bios command line option ?
> > > >
> > >
> > >
> > > Will update to support both vbootrom and loader.
> >
> > For this case, could we have something like the npcm8xx_board.c where we
> > have a default bootrom and override it with -bios? That would also fix the qtest
> > issues with the ast2700 qtests which fail with this patchset.
> >
> Do you mean that if the user does not specify "-bios", we should still load a default vbootrom image into the vbootrom memory region?
> We can verify whether -bios was provided by checking if machine->firmware is NULL.
> It seems that if the user doesn't provide -bios, NPCM QEMU will look for a default vbootrom image in the current working directory — is that correct?
> https://github.com/qemu/qemu/blob/master/hw/arm/npcm8xx_boards.c#L37
Yeah. IIUC the default functionality should be to use a vbootrom to
boot with the AST27X0 so
if there is no bootrom declared we should default to the one you
created. for the NPCM one, if
we don't provide bios it will default to the one in pc-bios since it's
supposed to be the base true version.
I think it makes sense to do the same thing in ast2700. If we really
find use in supporting attaching the
loader binaries separately we could add a flag that skip the vbootrom,
but I don't see much use in that
since the information that would change is in the "image-bmc".
>
> ```
> const char *bios_name = machine->firmware ?: npcm8xx_default_bootrom;
> ```
> Could you let me know which qtest(s) failed, so I can run them and verify everything before sending out the v3 patch?
qemu:qtest+qtest-aarch64 / qtest-aarch64/ast2700-gpio-test
qemu:qtest+qtest-aarch64 / qtest-aarch64/ast2700-smc-test
They both fail with " qemu-system-aarch64: Could not find vbootrom
image '(null)' " so setting the default
bootrom should fix this.
>
> Thanks-Jamin
>
> > >
> > > > > + if (!filename) {
> > > > > + error_report("Could not find vbootrom image '%s'",
> > bios_name);
> > > > > + exit(1);
> > > > > + }
> > > > > +
> > > > > + ret = load_image_mr(filename, &soc->vbootrom);
> > > > > + if (ret < 0) {
> > > > > + error_report("Failed to load vbootrom image '%s'", filename);
> > > > > + exit(1);
> > > > > + }
> > > > > +}
> > > > > +
> > > > > void aspeed_board_init_flashes(AspeedSMCState *s, const char
> > > > *flashtype,
> > > > > unsigned int count, int
> > > > unit0)
> > > > > {
> > > > > @@ -483,6 +510,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);
> > > > > + }
> > > > > +
> > > >
> > > > Even without a vbootrom file, the machine could boot with '-device loader'
> > > > options. We should preserve this way of booting an ast2700-evb machine.
> > > >
> > >
> > > Will support both loader and vbootrom.
> > > Thanks for review and suggestion.
> > >
> > > Jamin
> > > >
> > > > Thanks,
> > > >
> > > > C.
> > > >
> > > >
> > > >
> > > >
> > > > > arm_load_kernel(ARM_CPU(first_cpu), machine,
> > > > &aspeed_board_binfo);
> > > > > }
> > > > >
> > >
> >
> > Also, tested against our custom machine + custom bmc image and the bootrom
> > itself works.
> > I think it might just need that default set.
> >
> > Tested-By: Nabih Estefan <nabihestefan@google.com>
Thanks,
Nabih
next prev parent reply other threads:[~2025-04-15 16:08 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-10 2:38 [PATCH v2 00/10] Support vbootrom for AST2700 Jamin Lin via
2025-04-10 2:38 ` [PATCH v2 01/10] hw/arm/aspeed: Introduced ASPEED_DEV_VBOOTROM in the device enumeration Jamin Lin via
2025-04-10 2:38 ` [PATCH v2 02/10] hw/arm/aspeed_ast27x0: Add "vbootrom_size" field to AspeedSoCClass Jamin Lin via
2025-04-10 2:38 ` [PATCH v2 03/10] hw/arm/aspeed_ast27x0: Rename variable sram_name to name in ast2700 realize Jamin Lin via
2025-04-11 15:48 ` Cédric Le Goater
2025-04-10 2:38 ` [PATCH v2 04/10] hw/arm/aspeed_ast27x0 Introduce vbootrom memory region Jamin Lin via
2025-04-11 15:50 ` Cédric Le Goater
2025-04-14 1:22 ` Jamin Lin
2025-04-10 2:38 ` [PATCH v2 05/10] hw/arm/aspeed: Enable vbootrom support by default on AST2700 EVB machines Jamin Lin via
2025-04-10 2:38 ` [PATCH v2 06/10] hw/arm/aspeed: Reuse rom_size variable for vbootrom setup Jamin Lin via
2025-04-11 15:50 ` Cédric Le Goater
2025-04-10 2:38 ` [PATCH v2 07/10] hw/arm/aspeed: Add support for loading vbootrom image via "-bios" Jamin Lin via
2025-04-11 16:07 ` Cédric Le Goater
2025-04-14 3:17 ` Jamin Lin
2025-04-14 21:14 ` Nabih Estefan
2025-04-15 9:34 ` Jamin Lin
2025-04-15 16:07 ` Nabih Estefan [this message]
2025-04-16 2:21 ` Jamin Lin
2025-04-10 2:38 ` [PATCH v2 08/10] pc-bios: Add AST27x0 vBootrom Jamin Lin via
2025-04-11 15:58 ` Cédric Le Goater
2025-04-14 6:50 ` Jamin Lin
2025-04-21 16:31 ` Cédric Le Goater
2025-04-10 2:38 ` [PATCH v2 09/10] tests/functional/aspeed: Update AST2700 functional test to use vbootrom Jamin Lin via
2025-04-11 15:54 ` Cédric Le Goater
2025-04-14 2:06 ` Jamin Lin
2025-04-10 2:38 ` [PATCH v2 10/10] docs/system/arm/aspeed: Support vbootrom for AST2700 Jamin Lin via
2025-04-11 15:48 ` [PATCH v2 00/10] " Cédric Le Goater
2025-04-14 1:20 ` Jamin Lin
2025-04-21 16:08 ` Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CA+QoejWEn-B8E_QC-hAM87j_5TQXMYZRgDNUvq5qUTYUr9VQ-Q@mail.gmail.com \
--to=nabihestefan@google.com \
--cc=andrew@codeconstruct.com.au \
--cc=clg@kaod.org \
--cc=jamin_lin@aspeedtech.com \
--cc=joel@jms.id.au \
--cc=leetroy@gmail.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=steven_lee@aspeedtech.com \
--cc=troy_lee@aspeedtech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).