All of lore.kernel.org
 help / color / mirror / Atom feed
* 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.