summaryrefslogtreecommitdiff
path: root/include/pxe_utils.h
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@foss.st.com>2022-10-28 11:01:19 +0200
committerTom Rini <trini@konsulko.com>2022-12-12 14:03:12 -0500
commita5dacef7380e4414e7fe5831298e31122d24b18d (patch)
tree011b8219f19b60d2e60fe2ebeb5da8b63f5f1d08 /include/pxe_utils.h
parentf723c2778cf883c5714aa942b4500846dc09f8f3 (diff)
cmd: pxe: support INITRD and FDT selection with FIT
Since the commit d5ba6188dfbf ("cmd: pxe_utils: Check fdtcontroladdr in label_boot") the FDT or the FDTDIR label is required in extlinux.conf and the fallback done by bootm command when only the device tree present in this command parameters is no more performed when FIT is used for kernel. When the label FDT or FDTDIR are absent or if the device tree file is absent, the PXE command in U-Boot uses the default U-Boot device tree selected by fdtcontroladdr = gd->fdt_blob, it is the "Scenario 3". With this scenario the bootm FIP fallback is no more possible with the extlinux.conf when only "kernel" label is present and is a FIP: kernel <path>#<conf>[#<extra-conf[#...]] As the U-Boot FDT is always provided in the third bootm argument, the device tree found in FIP is not used as fallback, it was done previously in boot_get_fdt(). This patch adds a new field kernel_label to save the full kernel label. The FDT bootm parameters use the kernel address (to avoid to load a second time the same FIP) and the config when this full label is reused for "fdt" or "initrd" label. This FIP support in extlinux.conf is restored when the "FDT" label can be found and select the same FIP (identical file and configuration): kernel <path>#<conf>[#<extra-conf[#...]] fdt <path>#<conf>[#<extra-conf[#...]] The patch add also this possibility for initrd. initrd <path>#<conf>[#<extra-conf[#...]] Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com> Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Diffstat (limited to 'include/pxe_utils.h')
-rw-r--r--include/pxe_utils.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/pxe_utils.h b/include/pxe_utils.h
index 4a73b2aace..1e5e8424f5 100644
--- a/include/pxe_utils.h
+++ b/include/pxe_utils.h
@@ -28,6 +28,7 @@
* Create these with the 'label_create' function given below.
*
* name - the name of the menu as given on the 'menu label' line.
+ * kernel_label - the kernel label, including FIT config if present.
* kernel - the path to the kernel file to use for this label.
* append - kernel command line to use when booting this label
* initrd - path to the initrd to use for this label.
@@ -40,6 +41,7 @@ struct pxe_label {
char num[4];
char *name;
char *menu;
+ char *kernel_label;
char *kernel;
char *config;
char *append;