s390 updates for the 6.4 merge window

- Add support for stackleak feature. Also allow specifying
  architecture-specific stackleak poison function to enable faster
  implementation. On s390, the mvc-based implementation helps decrease
  typical overhead from a factor of 3 to just 25%

- Convert all assembler files to use SYM* style macros, deprecating the
  ENTRY() macro and other annotations. Select ARCH_USE_SYM_ANNOTATIONS

- Improve KASLR to also randomize module and special amode31 code
  base load addresses

- Rework decompressor memory tracking to support memory holes and improve
  error handling

- Add support for protected virtualization AP binding

- Add support for set_direct_map() calls

- Implement set_memory_rox() and noexec module_alloc()

- Remove obsolete overriding of mem*() functions for KASAN

- Rework kexec/kdump to avoid using nodat_stack to call purgatory

- Convert the rest of the s390 code to use flexible-array member instead
  of a zero-length array

- Clean up uaccess inline asm

- Enable ARCH_HAS_MEMBARRIER_SYNC_CORE

- Convert to using CONFIG_FUNCTION_ALIGNMENT and enable
  DEBUG_FORCE_FUNCTION_ALIGN_64B

- Resolve last_break in userspace fault reports

- Simplify one-level sysctl registration

- Clean up branch prediction handling

- Rework CPU counter facility to retrieve available counter sets just
  once

- Other various small fixes and improvements all over the code
s390/stackleak: provide fast __stackleak_poison() implementation

Provide an s390 specific __stackleak_poison() implementation which is
faster than the generic variant.

For the original implementation with an enforced 4kb stackframe for the
getpid() system call the system call overhead increases by a factor of 3 if
the stackleak feature is enabled. Using the s390 mvc based variant this is
reduced to an increase of 25% instead.

This is within the expected area, since the mvc based implementation is
more or less a memset64() variant which comes with similar results. See
commit 0b77d6701cf8 ("s390: implement memset16, memset32 & memset64").

Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Link: https://lore.kernel.org/r/20230405130841.1350565-3-hca@linux.ibm.com
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
1 file changed