[PATCHv2 0/6] arm64: zboot support

Pingfan Liu piliu at redhat.com
Tue May 16 00:31:18 PDT 2023


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 at lists.infradead.org
Cc: horms at verge.net.au
Cc: ardb at kernel.org
Cc: jeremy.linton at arm.com


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




More information about the kexec mailing list