diff mbox series

[1/6] kernel-devsrc: update for 6.12+

Message ID f8e6cadce51f7f074370a38850c54fe060007b69.1732162137.git.bruce.ashfield@gmail.com
State New
Headers show
Series [1/6] kernel-devsrc: update for 6.12+ | expand

Commit Message

Bruce Ashfield Nov. 21, 2024, 4:13 a.m. UTC
From: Bruce Ashfield <bruce.ashfield@gmail.com>

arm64 needs some new files to regenerate the build environment
in 6.12+.

This is due to upstream commits:

  commit e632bca07c8eef1de9dc50f4e4066c56e9d68b07
  Author: Arnd Bergmann <arnd@arndb.de>
  Date:   Thu Jul 4 14:33:34 2024 +0200

      arm64: generate 64-bit syscall.tbl

      Change the asm/unistd.h header for arm64 to no longer include
      asm-generic/unistd.h itself, but instead generate both the asm/unistd.h
      contents and the list of entry points using the syscall.tbl scripts that
      we use on most other architectures.

      Once his is done for the remaining architectures, the generic unistd.h
      header can be removed and the generated tbl file put in its place.

      The Makefile changes are more complex than they should be, I need
      a little help to improve those. Ideally this should be done in an
      architecture-independent way as well.

      Acked-by: Catalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: Arnd Bergmann <arnd@arndb.de>

and:

  commit 712676ea2bb3882a852bcf49862c4247317fc9b2
  Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
  Date:   Tue Sep 3 12:09:17 2024 +0000

      arm64: vDSO: Wire up getrandom() vDSO implementation

      Hook up the generic vDSO implementation to the aarch64 vDSO data page.
      The _vdso_rng_data required data is placed within the _vdso_data vvar
      page, by using a offset larger than the vdso_data.

      The vDSO function requires a ChaCha20 implementation that does not write
      to the stack, and that can do an entire ChaCha20 permutation.  The one
      provided uses NEON on the permute operation, with a fallback to the
      syscall for chips that do not support AdvSIMD.

      This also passes the vdso_test_chacha test along with
      vdso_test_getrandom. The vdso_test_getrandom bench-single result on
      Neoverse-N1 shows:

         vdso: 25000000 times in 0.783884250 seconds
         libc: 25000000 times in 8.780275399 seconds
       syscall: 25000000 times in 8.786581518 seconds

      A small fixup to arch/arm64/include/asm/mman.h was required to avoid
      pulling kernel code into the vDSO, similar to what's already done in
      arch/arm64/include/asm/rwonce.h.

      Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
      Reviewed-by: Ard Biesheuvel <ardb@kernel.org>
      Acked-by: Will Deacon <will@kernel.org>
      Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>

Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
 meta/recipes-kernel/linux/kernel-devsrc.bb | 8 ++++++++
 1 file changed, 8 insertions(+)
diff mbox series

Patch

diff --git a/meta/recipes-kernel/linux/kernel-devsrc.bb b/meta/recipes-kernel/linux/kernel-devsrc.bb
index 1500aff2e2..ed7a1a973c 100644
--- a/meta/recipes-kernel/linux/kernel-devsrc.bb
+++ b/meta/recipes-kernel/linux/kernel-devsrc.bb
@@ -184,6 +184,10 @@  do_install() {
             cp -a --parents arch/arm64/kernel/vdso/note.S $kerneldir/build/
             cp -a --parents arch/arm64/kernel/vdso/gen_vdso_offsets.sh $kerneldir/build/
 
+            # 6.12+
+            cp -a --parents arch/arm64/kernel/vdso/vgetrandom.c $kerneldir/build/ 2>/dev/null || :
+            cp -a --parents arch/arm64/kernel/vdso/vgetrandom-chacha.S $kerneldir/build/ 2>/dev/null || :
+
             cp -a --parents arch/arm64/kernel/module.lds $kerneldir/build/ 2>/dev/null || :
 
             # 5.13+ needs these tools
@@ -194,6 +198,10 @@  do_install() {
             cp -a --parents arch/arm64/tools/gen-sysreg.awk $kerneldir/build/   2>/dev/null || :
             cp -a --parents arch/arm64/tools/sysreg $kerneldir/build/   2>/dev/null || :
 
+            # 6.12+
+            cp -a --parents arch/arm64/tools/syscall_64.tbl $kerneldir/build/   2>/dev/null || :
+            cp -a --parents arch/arm64/tools/syscall_32.tbl $kerneldir/build/   2>/dev/null || :
+
             if [ -e $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk ]; then
                  sed -i -e "s,#!.*awk.*,#!${USRBINPATH}/env awk," $kerneldir/build/arch/arm64/tools/gen-cpucaps.awk
             fi