As more complicated capsule kernel format occurs like zboot, where the compressed kernel is stored as a payload. The straight forward decompression can not meet the demand. As the first step, on aarch64, reading in the kernel file in a probe method and decide how to unfold the content by the method itself. The new designed probe interface returns two factors: 1. the parsed kernel_buf should be returned so that it can be used by the image load method later. 2. the final fd passed to sys_kexec_file_load, since aarch64 kernel can only work with Image format, the outer payload should be stripped and a temporary file of Image should be created. * Things left to do on arches besides aarch64 * After substitution, although each probe mehod seems to have the same prototype, they have differenct purpose on the first argument. On aarch64, the argument is used to pass the kernel file name, while on the other arches, it is used to passs the decompressed kernel. This can be cured by scattering out the logic of reading the kernel file into each probe. (This should be done by coccinelle. But let us keep a small step for the time being) v1 -> v2: take in Jeremy's patches to implement zboot format support use coccinelle and sed to substitue the image probe method prototype. To: kexec@xxxxxxxxxxxxxxxxxxx Cc: horms@xxxxxxxxxxxx Cc: ardb@xxxxxxxxxx Cc: jeremy.linton@xxxxxxx Jeremy Linton (4): arm64: Fix some issues with zImage _probe() kexec/zboot: Add arch independent zboot support arm64: Add ZBOOT PE containing compressed image support arm64: Hook up the ZBOOT support as vmlinuz Pingfan Liu (2): kexec: Change the image probe's prototype arm64: Scatter the logic of reading of kernel file into each probe include/kexec-pe-zboot.h | 15 +++ kexec/Makefile | 1 + kexec/arch/arm/kexec-arm.h | 6 +- kexec/arch/arm/kexec-uImage-arm.c | 2 +- kexec/arch/arm64/Makefile | 3 +- kexec/arch/arm64/image-header.h | 1 + kexec/arch/arm64/kexec-arm64.c | 1 + kexec/arch/arm64/kexec-arm64.h | 19 ++- kexec/arch/arm64/kexec-elf-arm64.c | 8 +- kexec/arch/arm64/kexec-image-arm64.c | 7 +- kexec/arch/arm64/kexec-uImage-arm64.c | 17 ++- kexec/arch/arm64/kexec-vmlinuz-arm64.c | 101 ++++++++++++++++ kexec/arch/arm64/kexec-zImage-arm64.c | 32 ++--- kexec/arch/cris/kexec-cris.h | 3 +- kexec/arch/cris/kexec-elf-cris.c | 2 +- kexec/arch/hppa/kexec-elf-hppa.c | 2 +- kexec/arch/hppa/kexec-hppa.h | 3 +- kexec/arch/i386/kexec-beoboot-x86.c | 4 +- kexec/arch/i386/kexec-bzImage.c | 2 +- kexec/arch/i386/kexec-elf-x86.c | 2 +- kexec/arch/i386/kexec-mb2-x86.c | 5 +- kexec/arch/i386/kexec-multiboot-x86.c | 7 +- kexec/arch/i386/kexec-nbi.c | 2 +- kexec/arch/i386/kexec-x86.h | 19 ++- kexec/arch/ia64/kexec-elf-ia64.c | 2 +- kexec/arch/ia64/kexec-ia64.h | 3 +- kexec/arch/loongarch/kexec-elf-loongarch.c | 3 +- kexec/arch/loongarch/kexec-loongarch.h | 7 +- kexec/arch/loongarch/kexec-pei-loongarch.c | 3 +- kexec/arch/m68k/kexec-elf-m68k.c | 2 +- kexec/arch/m68k/kexec-m68k.h | 3 +- kexec/arch/mips/kexec-elf-mips.c | 2 +- kexec/arch/mips/kexec-mips.h | 3 +- kexec/arch/ppc/kexec-dol-ppc.c | 2 +- kexec/arch/ppc/kexec-elf-ppc.c | 2 +- kexec/arch/ppc/kexec-ppc.h | 9 +- kexec/arch/ppc/kexec-uImage-ppc.c | 2 +- kexec/arch/ppc64/kexec-elf-ppc64.c | 2 +- kexec/arch/ppc64/kexec-ppc64.h | 3 +- kexec/arch/sh/kexec-elf-sh.c | 2 +- kexec/arch/sh/kexec-sh.h | 12 +- kexec/arch/sh/kexec-uImage-sh.c | 2 +- kexec/arch/x86_64/kexec-bzImage64.c | 2 +- kexec/arch/x86_64/kexec-elf-x86_64.c | 2 +- kexec/arch/x86_64/kexec-x86_64.h | 10 +- kexec/kexec-pe-zboot.c | 134 +++++++++++++++++++++ kexec/kexec.c | 50 +++++--- kexec/kexec.h | 4 +- 48 files changed, 423 insertions(+), 107 deletions(-) create mode 100644 include/kexec-pe-zboot.h create mode 100644 kexec/arch/arm64/kexec-vmlinuz-arm64.c create mode 100644 kexec/kexec-pe-zboot.c -- 2.31.1 _______________________________________________ kexec mailing list kexec@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/kexec