Unverified Commit 43c8fb93 authored by K900's avatar K900 Committed by GitHub
Browse files

Merge pull request #255804 from sielicki/kernel-arm-alignment-compat

kernel/common-config: arm: configure alignment traps
parents e00c6064 b9495de1
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -1007,6 +1007,28 @@ let
      # Keeping it a built-in ensures it will be used if possible.
      FB_SIMPLE = yes;

      # https://docs.kernel.org/arch/arm/mem_alignment.html
      # tldr:
      #  when buggy userspace code emits illegal misaligned LDM, STM,
      #  LDRD and STRDs, the instructions trap, are caught, and then
      #  are emulated by the kernel.
      #
      #  This is the default on armv7l, anyway, but it is explicitly
      #  enabled here for the sake of providing context for the
      #  aarch64 compat option which follows.
      ALIGNMENT_TRAP = mkIf (stdenv.hostPlatform.system == "armv7l-linux") yes;

      # https://patchwork.kernel.org/project/linux-arm-kernel/patch/20220701135322.3025321-1-ardb@kernel.org/
      # tldr:
      #  when encountering alignment faults under aarch64, this option
      #  makes the kernel attempt to handle the fault by doing the
      #  same style of misaligned emulation that is performed under
      #  armv7l (see above option).
      #
      #  This minimizes the potential for aarch32 userspace to behave
      #  differently when run under aarch64 kernels compared to when
      #  it is run under an aarch32 kernel.
      COMPAT_ALIGNMENT_FIXUPS = mkIf (stdenv.hostPlatform.system == "aarch64-linux") (whenAtLeast "6.1" yes);
    } // optionalAttrs (versionAtLeast version "5.4" && (stdenv.hostPlatform.system == "x86_64-linux" || stdenv.hostPlatform.system == "aarch64-linux")) {
      # Required for various hardware features on Chrome OS devices
      CHROME_PLATFORMS = yes;