
On Sat, Nov 4, 2023 at 9:42 PM Simon Glass sjg@chromium.org wrote:
PHONY += $(BOOT_TARGETS)
@@ -215,6 +215,7 @@ virtconfig: define archhelp echo '* Image.gz - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)' echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' +$(if $(CONFIG_EFI_ZBOOT),,echo ' image.fit - Flat Image Tree (arch/$(ARCH)/boot/image.fit)')
Why should this be hidden when CONFIG_EFI_ZBOOT=y?
echo ' install - Install uncompressed kernel' echo ' zinstall - Install compressed kernel' echo ' Install using (your) ~/bin/installkernel or' diff --git a/arch/arm64/boot/.gitignore b/arch/arm64/boot/.gitignore index af5dc61f8b43..f84a7073dbcd 100644 --- a/arch/arm64/boot/.gitignore +++ b/arch/arm64/boot/.gitignore @@ -2,3 +2,5 @@ Image Image.gz vmlinuz* +image.itk +image.fit diff --git a/arch/arm64/boot/Makefile b/arch/arm64/boot/Makefile index 1761f5972443..2681f54cd2c8 100644 --- a/arch/arm64/boot/Makefile +++ b/arch/arm64/boot/Makefile @@ -16,7 +16,8 @@
OBJCOPYFLAGS_Image :=-O binary -R .note -R .note.gnu.build-id -R .comment -S
-targets := Image Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo Image.zst +targets := Image Image.bz2 Image.gz Image.lz4 Image.lzma Image.lzo \
Image.zst image.fit
$(obj)/Image: vmlinux FORCE $(call if_changed,objcopy) @@ -39,6 +40,10 @@ $(obj)/Image.lzo: $(obj)/Image FORCE $(obj)/Image.zst: $(obj)/Image FORCE $(call if_changed,zstd)
+# Provide the kernel for the FIT +$(obj)/image.itk: $(obj)/Image FORCE
$(call if_changed,copy)
EFI_ZBOOT_PAYLOAD := Image EFI_ZBOOT_BFD_TARGET := elf64-littleaarch64 EFI_ZBOOT_MACH_TYPE := ARM64 @@ -48,3 +53,5 @@ EFI_ZBOOT_OBJCOPY_FLAGS = --add-symbol zboot_code_size=0x$(shell \ $(NM) vmlinux|grep _kernel_codesize|cut -d' ' -f1)
include $(srctree)/drivers/firmware/efi/libstub/Makefile.zboot
+clean-files := image.itk diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 03e79e319293..1427dba4f0f9 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -494,7 +494,23 @@ quiet_cmd_uimage = UIMAGE $@ -C $(UIMAGE_COMPRESSION) $(UIMAGE_OPTS-y) \ -T $(UIMAGE_TYPE) \ -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \
-n $(UIMAGE_NAME) -d $< $@
-n "$(UIMAGE_NAME)" -d $< $@
Please do not do this. Just drop 2/3.
+# Flat Image Tree (FIT) +# This allows for packaging of a kernel and all devicetrees files, using +# compression. +# ---------------------------------------------------------------------------
+MAKE_FIT := $(srctree)/scripts/make_fit.py
+quiet_cmd_fit = FIT $@
cmd_fit = $(MAKE_FIT) -f $@ --arch $(UIMAGE_ARCH) --os linux \
--name "$(UIMAGE_NAME)" \
--compress $(UIMAGE_COMPRESSION) -k $< \
$(dir $<)/dts
+$(obj)/%.fit: $(obj)/%.itk $(MAKE_FIT) FORCE
$(call if_changed,fit,gzip)
No. This is worse than v1.
Please do not create a silly copy.
As I said in v1, this if_changed does not catch the DTS updates. So, there is no point in using it.
I recommend just use 'cmd'.
$(obj)/image.fit: $(obj)/Image FORCE $(call cmd,fit)
- Returns:
tuple:
str: Model name
bytes: Compatible stringlist
- """
- with fsw.add_node(f'fdt-{seq}'):
# Get the compatible / model information
with open(fname, 'rb') as inf:
data = inf.read()
fdt = libfdt.FdtRo(data)
model = fdt.getprop(0, 'model').as_str()
compat = fdt.getprop(0, 'compatible')
fsw.property_string('description', model)
fsw.property_string('type', 'flat_dt')
fsw.property_string('arch', 'arm64')
Why hard-code 'arm64' ?