On 1/28/26 18:11, Roman Bogorodskiy wrote:
Bhyve on arm64 does not have the bhyveload(8) tool. That means that it cannot be used as a default if the loader is not configured for the domain.
To prevent users from getting unusable configurations, handle loader configuration on arm64 like that:
- if loader is specified in the domain XML, just use it - if not specified, try to check whether the default uboot loader is available on the system. In case it is, set is as the loader, otherwise fail with the error.
Additionally, the loader could be configured in bhyve.conf. By default, it uses the loader installed by the sysutils/u-boot-bhyve-arm64 port or a corresponding package.
Signed-off-by: Roman Bogorodskiy <bogorodskiy@gmail.com> --- src/bhyve/bhyve.conf | 5 ++++ src/bhyve/bhyve_conf.c | 8 +++++++ src/bhyve/bhyve_domain.c | 23 +++++++++++++++++++ src/bhyve/bhyve_utils.h | 2 ++ .../aarch64/bhyvexml2argv-base.args | 1 + .../aarch64/bhyvexml2argv-base.ldargs | 8 +------ .../aarch64/bhyvexml2argv-console.args | 1 + .../aarch64/bhyvexml2argv-console.ldargs | 8 +------ tests/bhyvexml2argvmock.c | 20 +++++++++++++++- tests/bhyvexml2argvtest.c | 2 ++ .../aarch64/bhyvexml2xmlout-base.xml | 1 + .../aarch64/bhyvexml2xmlout-console.xml | 1 + tests/bhyvexml2xmltest.c | 4 ++++ 13 files changed, 69 insertions(+), 15 deletions(-)
You'll need to squash the following in: diff --git i/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-base.xml w/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-base.xml index d6c9caa225..b2d88789c8 100644 --- i/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-base.xml +++ w/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-base.xml @@ -6,7 +6,7 @@ <vcpu placement='static'>1</vcpu> <os> <type arch='aarch64'>hvm</type> - <loader readonly='yes' type='pflash'>/usr/local/share/u-boot/u-boot-bhyve-arm64/u-boot.bin</loader> + <loader readonly='yes' type='pflash'>fakeubootpath/u-boot.bin</loader> <boot dev='hd'/> </os> <clock offset='localtime'/> diff --git i/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-console.xml w/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-console.xml index d694ecfb8d..741570a5b5 100644 --- i/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-console.xml +++ w/tests/bhyvexml2xmloutdata/aarch64/bhyvexml2xmlout-console.xml @@ -6,7 +6,7 @@ <vcpu placement='static'>1</vcpu> <os> <type arch='aarch64'>hvm</type> - <loader readonly='yes' type='pflash'>/usr/local/share/u-boot/u-boot-bhyve-arm64/u-boot.bin</loader> + <loader readonly='yes' type='pflash'>fakeubootpath/u-boot.bin</loader> <boot dev='hd'/> </os> <clock offset='localtime'/> diff --git i/tests/bhyvexml2xmltest.c w/tests/bhyvexml2xmltest.c index 50bf82bd52..1e32f163d9 100644 --- i/tests/bhyvexml2xmltest.c +++ w/tests/bhyvexml2xmltest.c @@ -56,6 +56,7 @@ testCompareXMLToXMLHelper(const void *data) static int mymain(void) { + g_autofree char *fakeubootpath = g_strdup("fakeubootpath/u-boot.bin"); int ret = 0; if ((driver.caps = virBhyveCapsBuild()) == NULL) @@ -67,6 +68,8 @@ mymain(void) if (!(driver.config = virBhyveDriverConfigNew())) return EXIT_FAILURE; + driver.config->ubootPath = fakeubootpath; + # define DO_TEST_FULL(name, flags) \ do { \ const struct testInfo info = {name, (flags)}; \ Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal