* Finding x86_setup among FIT configurations
@ 2022-05-27 16:37 Mike Crowe
0 siblings, 0 replies; only message in thread
From: Mike Crowe @ 2022-05-27 16:37 UTC (permalink / raw)
To: U-Boot Mailing List
I'm trying to boot a FIT image on x86 and fit_image_load is having trouble
finding the setup binary.
My FIT image looks similar to the one in doc/uImage.FIT/kernel.its:
/ {
images {
kernel-1 {
description = "Linux kernel";
data = <...>
type = "kernel";
arch = "x86";
os = "linux";
compression = "none";
load = <0x1314c40>;
entry = <0x1314c40>;
hash-1 {
value = <...>
algo = "sha256";
};
};
setup-1 {
description = "Linux setup.bin";
data = <...>
type = "x86_setup";
arch = "x86";
os = "linux";
compression = "none";
load = <0x90000>;
entry = <0x90000>;
hash-1 {
value = <...>
algo = "sha256";
};
};
};
configurations {
conf-0 {
description = "Configuration for board 0";
kernel = "kernel-1";
setup = "setup-1";
};
conf-1 {
description = "Configuration for board 1";
kernel = "kernel-1";
setup = "setup-1";
};
};
};
I'm trying to run it with:
bootm ${loadaddr}#conf-0
I get:
## Loading kernel from FIT Image at 10000000 ...
Using 'conf-0' configuration
Trying 'kernel-1' kernel subimage
Description: Linux kernel
Created: 2022-05-27 14:03:08 UTC
Type: Kernel Image
Compression: uncompressed
Data Start: 0x100000f4
Data Size: 13990516 Bytes = 13.3 MiB
Architecture: Intel x86
OS: Linux
Load Address: 0x01314c40
Entry Point: 0x01314c40
Hash algo: sha256
Hash value: 1f4167a38aed74edb02bedf021fc8dbc4a9d0c0a84e886006de22c8b11714645
Verifying Hash Integrity ... sha256+ OK
## Loading setup from FIT Image at 10000000 ...
Could not find configuration node
Loading Kernel Image
## Kernel loading failed (missing x86 kernel setup) ...
subcommand not supported
"could not find configuration node" is emitted because fit_uname_config is
NULL inside image-fit.c:fit-image-load when loading the setup binary. I
don't have CONFIG_FIT_BEST_MATCH enabled, but enabling it didn't seem to
change the observed behaviour.
It appears that the parsing of the configuration name after the load
address is done separately inside bootm.c:boot_get_kernel (for the kernel)
and image-fit.c:boot_get_fdt_fit (for the device tree) and the command
arguments aren't even passed to image-fit.c:boot_get_setup_fit, so it just
passes NULL as fit_uname_config.
If I add:
if (!fit_uname_config)
fit_uname_config = "conf-0";
to image-fit.c:fit_image_load then the setup binary is found and my device
can boot the kernel successfully.
I can't see how this can ever work, so I think I must be missing something.
Can anyone enlighten me as to what that might be?
Thanks.
Mike.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-27 18:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-27 16:37 Finding x86_setup among FIT configurations Mike Crowe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.