This bug is awaiting verification that the linux-azure/5.15.0-1038.45
kernel in -proposed solves the problem. Please test the kernel and
update this bug with the results. If the problem is solved, change the
tag 'verification-needed-jammy' to 'verification-done-jammy'. If the
problem still exists, change the tag 'verification-needed-jammy' to
'verification-failed-jammy'.

If verification is not done by 5 working days from today, this fix will
be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how
to enable and use -proposed. Thank you!


** Tags added: kernel-spammed-jammy-linux-azure

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1639924

Title:
  Kernel livepatch support for for s390x

Status in Ubuntu on IBM z Systems:
  Fix Released
Status in gcc-11 package in Ubuntu:
  Fix Released
Status in kpatch package in Ubuntu:
  Fix Released
Status in linux package in Ubuntu:
  Fix Released
Status in gcc-11 source package in Jammy:
  Fix Released
Status in kpatch source package in Jammy:
  Invalid
Status in linux source package in Jammy:
  Fix Released
Status in gcc-11 source package in Kinetic:
  Fix Released
Status in kpatch source package in Kinetic:
  Invalid
Status in linux source package in Kinetic:
  Fix Released

Bug description:
  [ Impact ]

   * kpatch upstream has gained support for more architectures which we
  would like to enable on LTS release. Since building livepatches using
  the kpatch tooling makes the most sense on LTS kernels.

   * This SRU is to enable s390x builds of kpatch on kinetic & jammy.

   * Separately linux kernel patches for s390x will also be backported
  to the GA kernel, whilst hwe-5.19 kernel already has all bugfixes to
  support livepatches.

  [ Test Plan ]

   * Attempt to run and load sample integration livepatches from the
  kpatch integration source code, against v5.15 & v5.19 kernels. These
  should succeed on:

   - amd64 jammy v5.15
   - amd64 & s390x jammy v5.19
   - amd64 & s390x kinetic v5.19

  [ Where problems could occur ]

   * The newly generated livepatches produced by this kpatch may have
  different content (more or less sections/sybmols/relocations/etc), but
  remain compatible with all prior kernels and tool-chains.

   * This is a fairly large upstream update to the tooling.

   * One command line option to kpatch-build is no longer supported
  '-e', instead long form command line option must be used '--oot-
  module'. And '--ott-module-src' becomes mandatory in such cases,
  previously '--sourcedire' was required.

  Additional command line options added '--oot-module-src, -R|--non-
  replace'.

  '--skip-gcc-check' is still supported but prints warnings, it is
  deprecated in favour of '--skip-compiler-check'.

  kpatch-cc utility is added, which is a toolchain wrapper.

  Thus adjustments might be needed to scripts used to invoke and create
  kpatch modules.

   * Majority of non-test/non-doc changes are to do with:
     - add support for s390x and 32bit powerpc
     - add support for newer kernels and compilers (support & bugfixes to 
various sections and symbols)
     - more strict checking and bugfixes w.r.t. livepatch generation
     - refactoring and better build support for cross-compiled modules, 
compilation for various linux distributions, and code cleanups.

  * Some of the fixes from these new upstream releases have already been
  cherry-picked in the kpatch, but others might soon be needed on x84,
  i.e. to support gcc-12 built kernels.

  $ git log  --no-merges  --oneline v0.8.0..v0.9.7 -- kmod/ kpatch-
  build/ > shortlog.txt

  d46fea98ef kpatch-build: strengthen conditions for changed sections
  9fac261ed0 kpatch-build: rela section could disappear after patched
  fe45029b4d kpatch-build: fix KBUILD_MODNAME for OOT modules
  8cc0fedefb kpatch-build: use err.h instead of error.h for musl support
  07433e98c0 kpatch-cc: fix stripping of source tree prefix
  33368a88cd create-diff-object: add support for .return_sites section (x86)
  e921c557f9 macros: tweak syscall patching macros
  a1171b112e create-diff-object: Create missing section symbol
  0308d52bcd kpatch/s390: Enable kpatch build support
  b0330ab18e kpatch/s390: Add additional bundled symbols.
  eb4a85f778 kpatch/s390: Add exclusion lists
  f0d00a9290 kpatch/s390: Add initial support for kpatch
  10002f5aa6 kpatch/s390: Add gcc prerequisite flags for kpatch
  c6d0b5450b lookup: fix symtab parsing
  52863dace0 create-diff-object: fix endianness in 
kpatch_no_sibling_calls_ppc64le()
  017015a725 create-diff-object: make kpatch_check_relocations() more precise
  f0e3da336c create-diff-object: fix string extraction
  86d5208b46 create-diff-object: error on symbol conversion failure
  325bccd89d create-diff-object: skip conversion for sections which never have 
symbols
  8508abd3b1 create-diff-object: allow converstion of empty symbols
  8d5a628bde create-diff-object: add extra check for symbol conversion edge case
  01427d50a1 create-diff-object: move addend math to a new function
  bec6488af6 create-diff-object: add rela_insn() error check
  6b1895a6b7 create-diff-object: convert rela_insn() to take normal 'sec'
  bf212f7750 create-diff-object: error on unsupported rela in symbol conversion
  3f8e1062cc create-diff-object: support R_X86_64_NONE in 
kpatch_replace_sections_syms()
  79f45d1b0a create-diff-object: fix kpatch_replace_sections_syms() for non-text
  61e46094b5 create-diff-object: convert function return types to 'bool'
  c24d135f40 create-diff-object: rename "sec" -> "relasec" for rela sections
  3b63456817 kpatch-elf: convert functions to static
  0c5a1e7753 kpatch-build: make xtrace output less verbose
  2784f5056b kpatch-build: add support for openEuler
  3392049665 kpatch-build: remove duplicated use_klp_arch
  e9c0b67862 macros: add syscall patching macros
  c2e73c2cbc create-diff-object: ensure debug sections don't use dynrelas
  305ff8a5d8 create-diff-object: include .LCx string literal symbols
  b700732f5d create-diff-object: add "_printk" to the __LINE__ detection
  79fd60b28d create-diff-object: check arg2 and arg3 on all arches for line 
detection
  f7b27f2fec kpatch-build: Increase name length limit to 55 chars
  e6b1664d0e create-diff-object.c: add s390 support for __LINE__ detection
  a6920b9381 create-diff-object: fix endian issues in insn_is_load_immediate()
  1152e58244 create-diff-object: support __LINE__ detection for btrfs macros
  fea0192104 kpatch-build: Allow setting kernel version if --sourcedir and 
--vmlinux are used
  af672577b3 create-diff-object: use toc_rela() in 
kpatch_line_macro_change_only()
  81296117f4 create-diff-object: unify kpatch_line_macro_change_only()
  4ba6f1fbc9 create-diff-object: include __dyndbg section when referenced by 
jump table
  8d81cc8517 kpatch-elf: symtab_shndx support
  4d8c8102de Fix sym->type condition in locals_match()
  4c0e4898d9 create-diff-object: detect architecture from input ELF file
  394a907a37 create-diff-object: move kpatch_find_func_profiling_calls 
definition
  0decc79d0b kpatch-build: introduce ability to ignore distro-specific checks
  fd0457b9f3 kpatch-build: add cross-compilation support
  c4286ee2cb create-diff-object: add support for .retpoline_sites section
  9ee9f7a3ec kpatch-build: Add missing allocation failure checks
  bdc43561e9 kpatch-build: combine find_special_section_data() variants
  34fcfd4d56 kpatch-build: source kernel .config instead of grepping
  89a871fff9 Fix oot-module builds
  aa85922ec6 Do not unset KBUILD_EXTRA_SYMBOLS
  4a7dab17c8 Allow OOT modules to be built with non-distro kernels
  6c4c8c0a2d create-diff-object: update for __already_done
  f5175a402b kpatch-build: save environment varibles to file
  6673c693d6 kmod/patch: clean only rebuildable objs
  607ee53e1e livepatch-patch-hook: add comments
  4f51ee7fa3 create-diff-object: support ppc64le relative jump labels
  cb23c601f6 kpatch-build: Handle error in create-klp-module
  ef0ce9715a create-diff-object: fix use after free in 
kpatch-check-relocations()
  70b8fe8f95 kpatch-build: Do not check KLP_REPLACE for kpatch.ko-based patches
  eaaced1912 add openEuler build support
  99542e864e create-diff-object: rename arguments in most correlate/compare 
functions
  22e16619e0 create-diff-object: base->orig renames
  e2b50d7b66 create-diff-object: make locals_match() and maybe_discarded_sym() 
return bool
  720768767d Switch to per-file lookup table pointers.
  db442d1405 Make lookup_symbol() accept struct symbol as an argument
  56471ffc7c kpatch-build: Support CONFIG_PRINTK_INDEX, part 2
  6cf50a6fca create-diff-object: Support CONFIG_PRINTK_INDEX, part 1
  ea0470baa7 create-diff-object: change kpatch_line_macro_change_only() return 
type to bool
  a02668a0f7 kmod: remove redundant -mcmodel=large on ppc64le
  624e5e3b82 kmod: pass CFLAGS_MODULE to module build
  5622e3cc3d Make sure section symbols exist
  a26b2af2a3 kpatch-build: set EXTRAVERSION and not localversion for RH kernels
  ba3defa060 create-diff-object: Check that the section has a secsym
  17dcebf077 kpatch-build: enable klp with replace option by default
  d9f49e850a kpatch-build: drop klp.arch support in RHEL-8.4
  81f9ca4833 create-diff-object: Fix out-of-range relocation check
  fa5a95cafd create-diff-object: Fix out-of-range relocation error message
  7be75549ba kpatch-build: add support for static calls
  6d466fa76f kpatch-build: drop klp.arch support in RHEL-8.4
  f9d2ec1d77 kpatch-build: fix kernel_is_rhel() for rhel-8 z-stream kernels
  1b5a17f934 create-build-diff: support for .cold functions with no id suffix
  fc4a56f6b2 kpatch-build: check existance of Makefile.modfinal
  4cc2f06279 kpatch-build: workaround pahole and CONFIG_DEBUG_INFO_BTF_MODULES
  6c83b642a4 create-diff-object: make digit tail optional in 
kpatch_mengled_strcmp
  b6e1d071ff create-diff-object: consider '.L' symbols not static local
  fddc6242c6 create-diff-object: support both gcc and clang style of static 
variables
  38c2d7315d create-diff-object: clang __UNIQUE_ID symbol support
  488f30c31b create-diff-object: .L.str* symbols support
  41de9e763a kpatch-build: clang support
  f951c1a92e kpatch-build: apply 'cp -f ... || die' pattern
  e25450f5a8 kpatch-build: workaround pahole and CONFIG_DEBUG_INFO_BTF
  387914b683 kpatch-gcc: powerpc - skip vdso files
  04021bbfd5 kmod/patch: add kpatch.lds as a dependency for $(KPATCH_NAME).o
  b8d4611edb kmod: convert __section to __kpatch_section
  aea2cb96d6 create-diff-object: fix __dyndbg section inclusion
  ef420050e3 kpatch-elf: pass new ELF output file mode to 
kpatch_write_output_elf()
  25f12681fa create-diff-object: cleanup maybe-uninitialized compiler complaints
  08056febfd kpatch-build: Check Final module symbols for loadability
  e9600c5513 kpatch-build: Check exported symbol version changes
  b4c2753684 kpatch-build: Create module symbol version file once
  b311112702 deal with the deadlock may occur in stop_machine context.
  6531a7e075 kpatch-build: avoid modpost .output.o.cmd complaints
  ea647e50ae kpatch-build/Makefile: Fail build on unsupported architectures
  17ec03ef95 Keep build.log on --skip-cleanup
  ed849a9b3e create-diff-object: Ignore changes to .altinstr_aux
  abd2ff81c7 create-diff-object: change rela_equal() to return bool
  514acc32e9 create-diff-object: improve jump label warnings
  b381a0cc0b lookup: Add __UNIQUE_ID_ to maybe_discarded_sym list
  67aa131137 gcc-plugin: GCC 10 - update local/non local insn names
  92c42039bf gcc-plugin: abort building klp module on error
  fde1a75b7f gcc-plugin: Fix build failure with GCC 10
  b958ed601c create-diff-object: Add ppc64le mcount support
  9bb75659e2 kpatch-build: Detect R_X86_64_64 dynrelas with large addends
  15067fcd64 kmod/core: apply dynrela addend for R_X86_64_64
  c1caee1468 create-diff-object: Ignore kpatch_ignored functions/sections 
missing ftrace hook
  1991ff0018 create-diff-object: add support for .klp.arch removal
  3982b329bc kpatch-build: drop support for old non-.klp.arch kernels
  e80562a8cb kpatch-build: add kpatch.ko deprecation warning
  d97de8d554 kpatch-build: readability cleanups
  4e0db559c1 lookup: fix Module.symvers reading for newer kernels
  89e8574027 create-diff-object: show all jump labels before reporting failure
  0a3e6c5f42 create-diff-object: refactor dynrela conversion
  d2089a4d72 create-diff-object: rename lookup 'result' -> 'symbol'
  ae9f1c17b1 lookup: add duplicate symbol checks
  3064cf3c60 lookup: add 'objname' to lookup table and lookup results
  7e1f2b0e07 lookup: convert lookup functions to return bool
  6cc03f9599 lookup: rename 'pos' to 'sympos'
  cd121422d9 lookup: rename 'value' -> 'addr'
  5fad6599a4 lookup: remove unused testing code
  e4d37dad5d lookup: Skip .dynsym table in symtab_read()
  7e48138185 lookup: Simplify first loop in symtab_read()
  74c9c99931 create-diff-object: reduce indentation in 
kpatch_create_patches_sections()
  b548ba153f kpatch-build: Look for local static variables in child functions
  42128ff78c kpatch-build: Include .part. symbols as child function
  b502e5b1cc kpatch-build: Allow function to have multiple child functions
  af1fe267c5 create-diff-object: Avoid unnecessary parent symbol inclusion
  fbfc8f9bec create-diff-object: Handle ppc64le toc with only constants
  687e2caabc create-diff-object: Don't strip callback section symbols
  37e950a653 create-kpatch-module: Fix -Wconversion warnings
  ea9e708df0 create-klp-module: Fix -Wconversion warnings
  f67c2ebce0 kpatch-elf: Fix -Wconversion warnings
  5f68db22e5 create-diff-object: Fix -Wconversion warnings
  a0c608de70 kpatch-build/Makefile: Skip build insn/plugin with -Wconversion
  4e4a8d99da kpatch-build: add -Wconversion/-Wno-sign-conversion CFLAGS
  f5f5479614 create-diff-object: fix relocations used for ZERO_PAGE(0)
  61c55d9e52 kpatch-build: replace all '-' to '_' in KOBJFILE_NAME
  68530e4c2b kpatch-build: Make local static twining stricter
  19baa5b7c7 create-diff-object: process debug sections last
  852bad5e8d create-diff-object: Use new helpers for static local correlation
  e49e3a59c2 create-diff-object: Rename elements getting correlated
  49a9adaf74 create-diff-object: Correlate objects related to a section at once
  770f529225 kpatch-elf: Ensure stale references are not used
  3a1a73f08c Make symvers reading code more flexible.
  a02842fb69 kpatch-elf: Free sections in elf teardown
  935f199875 create-diff-object: simplify mangled function correlation
  e9755413ed kpatch-build: use whole word filename matching in find_parent_obj()
  878bac379f create-diff-object: Simplify relocation processing
  bd4fae25f9 create-diff-object: Add const to unmodified rela_insn arguments
  50476c94cc create-diff-object: Check ELF headers earlier
  2499eb2bdc Revert "create-diff-object: Check for *_fixup sections changes"
  aabdf9c9c9 Fix parent matches for kernels newer than 5.3
  ed5091b16f kpatch-build: Check if /etc/os-release exists
  e4525ce311 kpatch-build: sanity check patched filenames
  36120b9b08 kmod/patch: check for RHEL8 when setting HAVE_SIMPLE_ENABLE
  e187de3fe4 kpatch-build: update core file error message

   * This will be a potentially disruptive SRU, however it is required
  to introduce building livepatches for the LTS v5.15 GA kernel on
  s390x, and to continue support building kpatches on an LTS release for
  the hwe based kernels. Kinetic update is required to not regress
  support for kpatch building upon upgrades (even though that's not
  provided by canonical).

  [ Other Info ]

   * Anything else you think is useful to include
   * Anticipate questions from users, SRU, +1 maintenance, security teams and 
the Technical Board
   * and address these questions in advance

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/1639924/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to