From 242acb0cd31a93862cd87c6b891b39d5cf2cc90e Mon Sep 17 00:00:00 2001 From: Bruce Leidl Date: Wed, 21 Aug 2019 00:42:06 -0400 Subject: [PATCH] upgrade kernel to 5.2.9 --- .../recipes-citadel/images/citadel-image.inc | 2 +- ...ernel_5.0.6.bb => citadel-kernel_5.2.9.bb} | 6 +- .../citadel-kernel/files/0117-WireGuard.patch | 1746 +++++++---------- .../citadel-kernel/files/defconfig | 557 ++++-- 4 files changed, 1187 insertions(+), 1124 deletions(-) rename meta-citadel/recipes-kernel/citadel-kernel/{citadel-kernel_5.0.6.bb => citadel-kernel_5.2.9.bb} (89%) diff --git a/meta-citadel/recipes-citadel/images/citadel-image.inc b/meta-citadel/recipes-citadel/images/citadel-image.inc index 9199f2a..004d2dc 100644 --- a/meta-citadel/recipes-citadel/images/citadel-image.inc +++ b/meta-citadel/recipes-citadel/images/citadel-image.inc @@ -5,4 +5,4 @@ CITADEL_IMAGE_VERSION_rootfs = "1" CITADEL_IMAGE_VERSION_extra = "1" CITADEL_IMAGE_VERSION_kernel = "1" -CITADEL_KERNEL_VERSION = "5.0.6" +CITADEL_KERNEL_VERSION = "5.2.9" diff --git a/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.0.6.bb b/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.2.9.bb similarity index 89% rename from meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.0.6.bb rename to meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.2.9.bb index 445925b..4fbaf08 100644 --- a/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.0.6.bb +++ b/meta-citadel/recipes-kernel/citadel-kernel/citadel-kernel_5.2.9.bb @@ -5,12 +5,12 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" inherit kernel -SRC_URI = "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.6.tar.xz\ +SRC_URI = "https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.2.9.tar.xz\ file://0117-WireGuard.patch \ file://defconfig \ " -SRC_URI[md5sum] = "301cf9a7706c750ca76b322eb98bfe15" -SRC_URI[sha256sum] = "9e4a9a8d8a07b7fc696d734f6e822cf43c45cecfe3ab4c089b349bfc701ff413" +SRC_URI[md5sum] = "d7162b4421327c756b1d548204fd8fb1" +SRC_URI[sha256sum] = "b6f02a4b306ca5cd314d72615bfc2650166969613135da202630e6c4e1b5d4e6" LINUX_VERSION ?= "${PV}" S = "${WORKDIR}/linux-${LINUX_VERSION}" diff --git a/meta-citadel/recipes-kernel/citadel-kernel/files/0117-WireGuard.patch b/meta-citadel/recipes-kernel/citadel-kernel/files/0117-WireGuard.patch index 6b12880..59b5add 100644 --- a/meta-citadel/recipes-kernel/citadel-kernel/files/0117-WireGuard.patch +++ b/meta-citadel/recipes-kernel/citadel-kernel/files/0117-WireGuard.patch @@ -1,5 +1,5 @@ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/allowedips.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/allowedips.c 2019-08-20 20:26:42.392341425 +0000 @@ -0,0 +1,377 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -378,8 +378,8 @@ +} + +#include "selftest/allowedips.c" ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/dst_cache/dst_cache.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/dst_cache/dst_cache.c 2018-06-02 16:21:38.100389985 +0000 @@ -0,0 +1,175 @@ +/* + * net/core/dst_cache.c - dst entry cache @@ -556,8 +556,8 @@ + + free_percpu(dst_cache->cache); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/memneq/memneq.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/memneq/memneq.c 2018-06-02 16:21:38.100389985 +0000 @@ -0,0 +1,170 @@ +/* + * Constant-time equality testing of memory regions. @@ -729,8 +729,8 @@ +} + +#endif /* __HAVE_ARCH_CRYPTO_MEMNEQ */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/siphash/siphash.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/siphash/siphash.c 2019-08-20 20:26:42.394341425 +0000 @@ -0,0 +1,539 @@ +/* Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. + * @@ -1271,9 +1271,9 @@ + HPOSTAMBLE +} +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/udp_tunnel/udp_tunnel.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,385 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/udp_tunnel/udp_tunnel.c 2019-08-20 20:26:42.394341425 +0000 +@@ -0,0 +1,387 @@ +#include +#include +#include @@ -1293,7 +1293,7 @@ + +/* This is global so, uh, only one real call site... This is the kind of horrific hack you'd expect to see in compat code. */ +static udp_tunnel_encap_rcv_t encap_rcv = NULL; -+static void our_sk_data_ready(struct sock *sk ++static void __compat_sk_data_ready(struct sock *sk +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) + ,int unused_vulnerable_length_param +#endif @@ -1360,7 +1360,9 @@ + inet_sk(sock->sk)->mc_loop = 0; + encap_rcv = cfg->encap_rcv; + rcu_assign_sk_user_data(sock->sk, cfg->sk_user_data); -+ sock->sk->sk_data_ready = our_sk_data_ready; ++ /* We force the cast in this awful way, due to various Android kernels ++ * backporting things stupidly. */ ++ *(void **)&sock->sk->sk_data_ready = (void *)__compat_sk_data_ready; +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) @@ -1405,12 +1407,12 @@ + +#endif + -+static void fake_destructor(struct sk_buff *skb) ++static void __compat_fake_destructor(struct sk_buff *skb) +{ +} + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) -+static void our_iptunnel_xmit(struct rtable *rt, struct sk_buff *skb, ++static void __compat_iptunnel_xmit(struct rtable *rt, struct sk_buff *skb, + __be32 src, __be32 dst, __u8 proto, + __u8 tos, __u8 ttl, __be16 df, bool xnet) +{ @@ -1448,7 +1450,7 @@ + tstats->tx_bytes -= 8; + u64_stats_update_end(&tstats->syncp); +} -+#define iptunnel_xmit our_iptunnel_xmit ++#define iptunnel_xmit __compat_iptunnel_xmit +#endif + +void udp_tunnel_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *skb, @@ -1477,7 +1479,7 @@ + if (!skb->sk) + skb->sk = sk; + if (!skb->destructor) -+ skb->destructor = fake_destructor; ++ skb->destructor = __compat_fake_destructor; +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 12, 0) + ret = +#endif @@ -1653,14 +1655,14 @@ + if (!skb->sk) + skb->sk = sk; + if (!skb->destructor) -+ skb->destructor = fake_destructor; ++ skb->destructor = __compat_fake_destructor; + + ip6tunnel_xmit(skb, dev); + return 0; +} +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/cookie.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/cookie.c 2019-08-20 20:26:42.394341425 +0000 @@ -0,0 +1,236 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -1684,7 +1686,7 @@ + struct wg_device *wg) +{ + init_rwsem(&checker->secret_lock); -+ checker->secret_birthdate = ktime_get_boot_fast_ns(); ++ checker->secret_birthdate = ktime_get_coarse_boottime_ns(); + get_random_bytes(checker->secret, NOISE_HASH_LEN); + checker->device = wg; +} @@ -1760,7 +1762,7 @@ + if (wg_birthdate_has_expired(checker->secret_birthdate, + COOKIE_SECRET_MAX_AGE)) { + down_write(&checker->secret_lock); -+ checker->secret_birthdate = ktime_get_boot_fast_ns(); ++ checker->secret_birthdate = ktime_get_coarse_boottime_ns(); + get_random_bytes(checker->secret, NOISE_HASH_LEN); + up_write(&checker->secret_lock); + } @@ -1886,7 +1888,7 @@ + if (ret) { + down_write(&peer->latest_cookie.lock); + memcpy(peer->latest_cookie.cookie, cookie, COOKIE_LEN); -+ peer->latest_cookie.birthdate = ktime_get_boot_fast_ns(); ++ peer->latest_cookie.birthdate = ktime_get_coarse_boottime_ns(); + peer->latest_cookie.is_valid = true; + peer->latest_cookie.have_sent_mac1 = false; + up_write(&peer->latest_cookie.lock); @@ -1898,9 +1900,9 @@ +out: + wg_peer_put(peer); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/blake2s/blake2s-x86_64-glue.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,73 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/blake2s/blake2s-x86_64-glue.c 2019-08-20 20:26:42.395341425 +0000 +@@ -0,0 +1,72 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -1911,22 +1913,21 @@ +#include +#include + -+asmlinkage void blake2s_compress_avx(struct blake2s_state *state, -+ const u8 *block, const size_t nblocks, -+ const u32 inc); ++asmlinkage void blake2s_compress_ssse3(struct blake2s_state *state, ++ const u8 *block, const size_t nblocks, ++ const u32 inc); +asmlinkage void blake2s_compress_avx512(struct blake2s_state *state, + const u8 *block, const size_t nblocks, + const u32 inc); + -+static bool blake2s_use_avx __ro_after_init; ++static bool blake2s_use_ssse3 __ro_after_init; +static bool blake2s_use_avx512 __ro_after_init; -+static bool *const blake2s_nobs[] __initconst = { &blake2s_use_avx512 }; ++static bool *const blake2s_nobs[] __initconst = { &blake2s_use_ssse3, ++ &blake2s_use_avx512 }; + +static void __init blake2s_fpu_init(void) +{ -+ blake2s_use_avx = -+ boot_cpu_has(X86_FEATURE_AVX) && -+ cpu_has_xfeatures(XFEATURE_MASK_SSE | XFEATURE_MASK_YMM, NULL); ++ blake2s_use_ssse3 = boot_cpu_has(X86_FEATURE_SSSE3); +#ifndef COMPAT_CANNOT_USE_AVX512 + blake2s_use_avx512 = + boot_cpu_has(X86_FEATURE_AVX) && @@ -1950,7 +1951,7 @@ + + simd_get(&simd_context); + -+ if (!IS_ENABLED(CONFIG_AS_AVX) || !blake2s_use_avx || ++ if (!IS_ENABLED(CONFIG_AS_SSSE3) || !blake2s_use_ssse3 || + !simd_use(&simd_context)) + goto out; + used_arch = true; @@ -1962,7 +1963,7 @@ + if (IS_ENABLED(CONFIG_AS_AVX512) && blake2s_use_avx512) + blake2s_compress_avx512(state, block, blocks, inc); + else -+ blake2s_compress_avx(state, block, blocks, inc); ++ blake2s_compress_ssse3(state, block, blocks, inc); + + nblocks -= blocks; + if (!nblocks) @@ -1974,8 +1975,8 @@ + simd_put(&simd_context); + return used_arch; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/blake2s/blake2s.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/blake2s/blake2s.c 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,276 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -2253,8 +2254,8 @@ +MODULE_DESCRIPTION("BLAKE2s hash function"); +MODULE_AUTHOR("Jason A. Donenfeld "); +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-arm-glue.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-arm-glue.c 2019-08-20 20:26:42.396341425 +0000 @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -2279,7 +2280,7 @@ +static void __init chacha20_fpu_init(void) +{ +#if defined(CONFIG_ZINC_ARCH_ARM64) -+ chacha20_use_neon = elf_hwcap & HWCAP_ASIMD; ++ chacha20_use_neon = cpu_have_named_feature(ASIMD); +#elif defined(CONFIG_ZINC_ARCH_ARM) + switch (read_cpuid_part()) { + case ARM_CPU_PART_CORTEX_A7: @@ -2354,8 +2355,8 @@ + } + return false; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-mips-glue.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-mips-glue.c 2019-08-20 20:26:42.396341425 +0000 @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -2384,8 +2385,8 @@ +{ + return false; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-x86_64-glue.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-x86_64-glue.c 2019-08-20 20:26:42.397341426 +0000 @@ -0,0 +1,105 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -2492,8 +2493,8 @@ + } + return false; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20.c 2019-08-20 20:26:42.398341426 +0000 @@ -0,0 +1,193 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -2688,8 +2689,8 @@ +MODULE_DESCRIPTION("ChaCha20 stream cipher"); +MODULE_AUTHOR("Jason A. Donenfeld "); +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20poly1305.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20poly1305.c 2019-08-20 20:26:42.398341426 +0000 @@ -0,0 +1,364 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -3055,8 +3056,8 @@ +MODULE_DESCRIPTION("ChaCha20Poly1305 AEAD construction"); +MODULE_AUTHOR("Jason A. Donenfeld "); +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/curve25519/curve25519-arm-glue.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/curve25519/curve25519-arm-glue.c 2019-08-20 20:26:42.398341426 +0000 @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -3101,8 +3102,8 @@ +{ + return false; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/curve25519/curve25519-fiat32.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/curve25519/curve25519-fiat32.c 2019-08-20 20:26:42.399341426 +0000 @@ -0,0 +1,860 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -3964,8 +3965,8 @@ + memzero_explicit(&x3l, sizeof(x3l)); + memzero_explicit(&e, sizeof(e)); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/curve25519/curve25519-hacl64.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/curve25519/curve25519-hacl64.c 2019-08-20 20:26:42.399341426 +0000 @@ -0,0 +1,784 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -4751,9 +4752,9 @@ + } + memzero_explicit(buf0, sizeof(buf0)); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/curve25519/curve25519-x86_64-glue.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,48 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/curve25519/curve25519-x86_64-glue.c 2019-08-20 20:26:42.399341426 +0000 +@@ -0,0 +1,50 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -4771,8 +4772,10 @@ + +static void __init curve25519_fpu_init(void) +{ -+ curve25519_use_bmi2 = boot_cpu_has(X86_FEATURE_BMI2); -+ curve25519_use_adx = boot_cpu_has(X86_FEATURE_BMI2) && ++ curve25519_use_bmi2 = IS_ENABLED(CONFIG_AS_BMI2) && ++ boot_cpu_has(X86_FEATURE_BMI2); ++ curve25519_use_adx = IS_ENABLED(CONFIG_AS_ADX) && ++ boot_cpu_has(X86_FEATURE_BMI2) && + boot_cpu_has(X86_FEATURE_ADX); +} + @@ -4780,10 +4783,10 @@ + const u8 secret[CURVE25519_KEY_SIZE], + const u8 basepoint[CURVE25519_KEY_SIZE]) +{ -+ if (curve25519_use_adx) { ++ if (IS_ENABLED(CONFIG_AS_ADX) && curve25519_use_adx) { + curve25519_adx(mypublic, secret, basepoint); + return true; -+ } else if (curve25519_use_bmi2) { ++ } else if (IS_ENABLED(CONFIG_AS_BMI2) && curve25519_use_bmi2) { + curve25519_bmi2(mypublic, secret, basepoint); + return true; + } @@ -4793,18 +4796,18 @@ +static inline bool curve25519_base_arch(u8 pub[CURVE25519_KEY_SIZE], + const u8 secret[CURVE25519_KEY_SIZE]) +{ -+ if (curve25519_use_adx) { ++ if (IS_ENABLED(CONFIG_AS_ADX) && curve25519_use_adx) { + curve25519_adx_base(pub, secret); + return true; -+ } else if (curve25519_use_bmi2) { ++ } else if (IS_ENABLED(CONFIG_AS_BMI2) && curve25519_use_bmi2) { + curve25519_bmi2_base(pub, secret); + return true; + } + return false; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/curve25519/curve25519-x86_64.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,2326 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/curve25519/curve25519-x86_64.c 2019-08-20 20:26:42.400341426 +0000 +@@ -0,0 +1,2366 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* + * Copyright (c) 2017 Armando Faz . All Rights Reserved. @@ -5389,6 +5392,7 @@ + 0x980697f95e2937e3UL, 0x02fbba1cd0126e8cUL +}; + ++#ifdef CONFIG_AS_ADX +/* c is two 512-bit products: c0[0:7]=a0[0:3]*b0[0:3] and c1[8:15]=a1[4:7]*b1[4:7] + * a is two 256-bit integers: a0[0:3] and a1[4:7] + * b is two 256-bit integers: b0[0:3] and b1[4:7] @@ -5543,7 +5547,9 @@ + : "memory", "cc", "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", + "%r10", "%r11", "%r13", "%r14", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static void mul2_256x256_integer_bmi2(u64 *const c, const u64 *const a, + const u64 *const b) +{ @@ -5692,7 +5698,9 @@ + : "memory", "cc", "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", + "%r10", "%r11", "%r13", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_ADX +static void sqr2_256x256_integer_adx(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -5817,7 +5825,9 @@ + : "memory", "cc", "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", + "%r10", "%r11", "%r13", "%r14", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static void sqr2_256x256_integer_bmi2(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -5943,7 +5953,9 @@ + : "memory", "cc", "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", + "%r11", "%r13", "%r14", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_ADX +static void red_eltfp25519_2w_adx(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -6008,7 +6020,9 @@ + : "memory", "cc", "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", + "%r10", "%r11"); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static void red_eltfp25519_2w_bmi2(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -6071,7 +6085,9 @@ + : "memory", "cc", "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", + "%r11"); +} ++#endif + ++#ifdef CONFIG_AS_ADX +static void mul_256x256_integer_adx(u64 *const c, const u64 *const a, + const u64 *const b) +{ @@ -6161,7 +6177,9 @@ + : "memory", "cc", "%rax", "%rdx", "%r8", "%r9", "%r10", "%r11", + "%r13", "%r14", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static void mul_256x256_integer_bmi2(u64 *const c, const u64 *const a, + const u64 *const b) +{ @@ -6240,7 +6258,9 @@ + : "memory", "cc", "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", + "%r10", "%r11", "%r13", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_ADX +static void sqr_256x256_integer_adx(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -6306,7 +6326,9 @@ + : "memory", "cc", "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", + "%r10", "%r11", "%r13", "%r14", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static void sqr_256x256_integer_bmi2(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -6373,7 +6395,9 @@ + : "memory", "cc", "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", + "%r11", "%r13", "%r14", "%r15"); +} ++#endif + ++#ifdef CONFIG_AS_ADX +static void red_eltfp25519_1w_adx(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -6410,7 +6434,9 @@ + : "memory", "cc", "%rax", "%rbx", "%rcx", "%rdx", "%r8", "%r9", + "%r10", "%r11"); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static void red_eltfp25519_1w_bmi2(u64 *const c, const u64 *const a) +{ + asm volatile( @@ -6446,7 +6472,9 @@ + : "memory", "cc", "%rax", "%rcx", "%rdx", "%r8", "%r9", "%r10", + "%r11"); +} ++#endif + ++#ifdef CONFIG_AS_ADX +static __always_inline void +add_eltfp25519_1w_adx(u64 *const c, const u64 *const a, const u64 *const b) +{ @@ -6478,7 +6506,9 @@ + : "r"(c), "r"(a), "r"(b) + : "memory", "cc", "%rax", "%rcx", "%r8", "%r9", "%r10", "%r11"); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static __always_inline void +add_eltfp25519_1w_bmi2(u64 *const c, const u64 *const a, const u64 *const b) +{ @@ -6509,6 +6539,7 @@ + : "r"(c), "r"(a), "r"(b) + : "memory", "cc", "%rax", "%rcx", "%r8", "%r9", "%r10", "%r11"); +} ++#endif + +static __always_inline void +sub_eltfp25519_1w(u64 *const c, const u64 *const a, const u64 *const b) @@ -6576,6 +6607,7 @@ + "%r11"); +} + ++#ifdef CONFIG_AS_ADX +static void inv_eltfp25519_1w_adx(u64 *const c, const u64 *const a) +{ + struct { @@ -6622,7 +6654,9 @@ + + memzero_explicit(&m, sizeof(m)); +} ++#endif + ++#ifdef CONFIG_AS_BMI2 +static void inv_eltfp25519_1w_bmi2(u64 *const c, const u64 *const a) +{ + struct { @@ -6669,6 +6703,7 @@ + + memzero_explicit(&m, sizeof(m)); +} ++#endif + +/* Given c, a 256-bit number, fred_eltfp25519_1w updates c + * with a number such that 0 <= C < 2**255-19. @@ -6746,6 +6781,7 @@ + const u8 private_key[CURVE25519_KEY_SIZE], + const u8 session_key[CURVE25519_KEY_SIZE]) +{ ++#ifdef CONFIG_AS_ADX + struct { + u64 buffer[4 * NUM_WORDS_ELTFP25519]; + u64 coordinates[4 * NUM_WORDS_ELTFP25519]; @@ -6841,11 +6877,13 @@ + fred_eltfp25519_1w((u64 *)shared); + + memzero_explicit(&m, sizeof(m)); ++#endif +} + +static void curve25519_adx_base(u8 session_key[CURVE25519_KEY_SIZE], + const u8 private_key[CURVE25519_KEY_SIZE]) +{ ++#ifdef CONFIG_AS_ADX + struct { + u64 buffer[4 * NUM_WORDS_ELTFP25519]; + u64 coordinates[4 * NUM_WORDS_ELTFP25519]; @@ -6935,12 +6973,14 @@ + fred_eltfp25519_1w((u64 *)session_key); + + memzero_explicit(&m, sizeof(m)); ++#endif +} + +static void curve25519_bmi2(u8 shared[CURVE25519_KEY_SIZE], + const u8 private_key[CURVE25519_KEY_SIZE], + const u8 session_key[CURVE25519_KEY_SIZE]) +{ ++#ifdef CONFIG_AS_BMI2 + struct { + u64 buffer[4 * NUM_WORDS_ELTFP25519]; + u64 coordinates[4 * NUM_WORDS_ELTFP25519]; @@ -7036,11 +7076,13 @@ + fred_eltfp25519_1w((u64 *)shared); + + memzero_explicit(&m, sizeof(m)); ++#endif +} + +static void curve25519_bmi2_base(u8 session_key[CURVE25519_KEY_SIZE], + const u8 private_key[CURVE25519_KEY_SIZE]) +{ ++#ifdef CONFIG_AS_BMI2 + struct { + u64 buffer[4 * NUM_WORDS_ELTFP25519]; + u64 coordinates[4 * NUM_WORDS_ELTFP25519]; @@ -7130,9 +7172,10 @@ + fred_eltfp25519_1w((u64 *)session_key); + + memzero_explicit(&m, sizeof(m)); ++#endif +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/curve25519/curve25519.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/curve25519/curve25519.c 2019-08-20 20:26:42.400341426 +0000 @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -7247,8 +7290,8 @@ +MODULE_DESCRIPTION("Curve25519 scalar multiplication"); +MODULE_AUTHOR("Jason A. Donenfeld "); +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-arm-glue.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-arm-glue.c 2019-08-20 20:26:42.400341426 +0000 @@ -0,0 +1,140 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -7272,7 +7315,7 @@ +static void __init poly1305_fpu_init(void) +{ +#if defined(CONFIG_ZINC_ARCH_ARM64) -+ poly1305_use_neon = elf_hwcap & HWCAP_ASIMD; ++ poly1305_use_neon = cpu_have_named_feature(ASIMD); +#elif defined(CONFIG_ZINC_ARCH_ARM) + poly1305_use_neon = elf_hwcap & HWCAP_NEON; +#endif @@ -7390,8 +7433,8 @@ + poly1305_emit_neon(ctx, mac, nonce); + return true; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-donna32.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-donna32.c 2019-08-20 20:26:42.400341426 +0000 @@ -0,0 +1,205 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -7598,8 +7641,8 @@ + put_unaligned_le32(h2, &mac[8]); + put_unaligned_le32(h3, &mac[12]); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-donna64.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-donna64.c 2019-08-20 20:26:42.401341426 +0000 @@ -0,0 +1,182 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -7783,8 +7826,8 @@ + put_unaligned_le64(h0, &mac[0]); + put_unaligned_le64(h1, &mac[8]); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-mips-glue.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-mips-glue.c 2019-08-20 20:26:42.401341426 +0000 @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -7823,8 +7866,8 @@ + poly1305_emit_mips(ctx, mac, nonce); + return true; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-x86_64-glue.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-x86_64-glue.c 2019-08-20 20:26:42.401341426 +0000 @@ -0,0 +1,156 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -7982,8 +8025,8 @@ + poly1305_emit_avx(ctx, mac, nonce); + return true; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305.c 2019-08-20 20:26:42.402341426 +0000 @@ -0,0 +1,168 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -8153,8 +8196,8 @@ +MODULE_DESCRIPTION("Poly1305 one-time authenticator"); +MODULE_AUTHOR("Jason A. Donenfeld "); +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/selftest/blake2s.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/selftest/blake2s.c 2019-08-20 20:26:42.403341426 +0000 @@ -0,0 +1,2090 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -10246,8 +10289,8 @@ + } + return success; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/selftest/chacha20.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/selftest/chacha20.c 2019-08-20 20:26:42.403341426 +0000 @@ -0,0 +1,2698 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -12947,8 +12990,8 @@ + vfree(massive_input); + return success; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/selftest/chacha20poly1305.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/selftest/chacha20poly1305.c 2019-08-20 20:26:42.406341426 +0000 @@ -0,0 +1,9034 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -21984,8 +22027,8 @@ + kfree(computed_output); + return success; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/selftest/curve25519.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/selftest/curve25519.c 2019-08-20 20:26:42.406341426 +0000 @@ -0,0 +1,1315 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -23302,8 +23345,8 @@ + + return success; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/selftest/poly1305.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/selftest/poly1305.c 2019-08-20 20:26:42.407341426 +0000 @@ -0,0 +1,1107 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* @@ -24412,9 +24455,9 @@ + + return success; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/device.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,472 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/device.c 2019-08-20 20:26:42.407341426 +0000 +@@ -0,0 +1,470 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -24529,9 +24572,7 @@ + wg_timers_stop(peer); + wg_noise_handshake_clear(&peer->handshake); + wg_noise_keypairs_clear(&peer->keypairs); -+ atomic64_set(&peer->last_sent_handshake, -+ ktime_get_boot_fast_ns() - -+ (u64)(REKEY_TIMEOUT + 1) * NSEC_PER_SEC); ++ wg_noise_reset_last_sent_handshake(&peer->last_sent_handshake); + } + mutex_unlock(&wg->device_update_lock); + skb_queue_purge(&wg->incoming_handshakes); @@ -24887,8 +24928,8 @@ +#endif + rcu_barrier(); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/main.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/main.c 2019-08-20 20:26:42.407341426 +0000 @@ -0,0 +1,69 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -24959,9 +25000,9 @@ +MODULE_VERSION(WIREGUARD_VERSION); +MODULE_ALIAS_RTNL_LINK(KBUILD_MODNAME); +MODULE_ALIAS_GENL_FAMILY(WG_GENL_NAME); ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/netlink.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,632 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/netlink.c 2019-08-20 20:26:42.408341426 +0000 +@@ -0,0 +1,667 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -24977,14 +25018,15 @@ +#include +#include +#include ++#include + +static struct genl_family genl_family; + +static const struct nla_policy device_policy[WGDEVICE_A_MAX + 1] = { + [WGDEVICE_A_IFINDEX] = { .type = NLA_U32 }, + [WGDEVICE_A_IFNAME] = { .type = NLA_NUL_STRING, .len = IFNAMSIZ - 1 }, -+ [WGDEVICE_A_PRIVATE_KEY] = { .len = NOISE_PUBLIC_KEY_LEN }, -+ [WGDEVICE_A_PUBLIC_KEY] = { .len = NOISE_PUBLIC_KEY_LEN }, ++ [WGDEVICE_A_PRIVATE_KEY] = { .type = NLA_EXACT_LEN, .len = NOISE_PUBLIC_KEY_LEN }, ++ [WGDEVICE_A_PUBLIC_KEY] = { .type = NLA_EXACT_LEN, .len = NOISE_PUBLIC_KEY_LEN }, + [WGDEVICE_A_FLAGS] = { .type = NLA_U32 }, + [WGDEVICE_A_LISTEN_PORT] = { .type = NLA_U16 }, + [WGDEVICE_A_FWMARK] = { .type = NLA_U32 }, @@ -24992,12 +25034,12 @@ +}; + +static const struct nla_policy peer_policy[WGPEER_A_MAX + 1] = { -+ [WGPEER_A_PUBLIC_KEY] = { .len = NOISE_PUBLIC_KEY_LEN }, -+ [WGPEER_A_PRESHARED_KEY] = { .len = NOISE_SYMMETRIC_KEY_LEN }, ++ [WGPEER_A_PUBLIC_KEY] = { .type = NLA_EXACT_LEN, .len = NOISE_PUBLIC_KEY_LEN }, ++ [WGPEER_A_PRESHARED_KEY] = { .type = NLA_EXACT_LEN, .len = NOISE_SYMMETRIC_KEY_LEN }, + [WGPEER_A_FLAGS] = { .type = NLA_U32 }, -+ [WGPEER_A_ENDPOINT] = { .len = sizeof(struct sockaddr) }, ++ [WGPEER_A_ENDPOINT] = { .type = NLA_MIN_LEN, .len = sizeof(struct sockaddr) }, + [WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL] = { .type = NLA_U16 }, -+ [WGPEER_A_LAST_HANDSHAKE_TIME] = { .len = sizeof(struct __kernel_timespec) }, ++ [WGPEER_A_LAST_HANDSHAKE_TIME] = { .type = NLA_EXACT_LEN, .len = sizeof(struct __kernel_timespec) }, + [WGPEER_A_RX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_TX_BYTES] = { .type = NLA_U64 }, + [WGPEER_A_ALLOWEDIPS] = { .type = NLA_NESTED }, @@ -25006,7 +25048,7 @@ + +static const struct nla_policy allowedip_policy[WGALLOWEDIP_A_MAX + 1] = { + [WGALLOWEDIP_A_FAMILY] = { .type = NLA_U16 }, -+ [WGALLOWEDIP_A_IPADDR] = { .len = sizeof(struct in_addr) }, ++ [WGALLOWEDIP_A_IPADDR] = { .type = NLA_MIN_LEN, .len = sizeof(struct in_addr) }, + [WGALLOWEDIP_A_CIDR_MASK] = { .type = NLA_U8 } +}; + @@ -25054,12 +25096,21 @@ + return 0; +} + ++struct dump_ctx { ++ struct wg_device *wg; ++ struct wg_peer *next_peer; ++ struct allowedips_node *next_allowedip; ++ u64 allowedips_seq; ++}; ++ ++#define DUMP_CTX(cb) ((struct dump_ctx *)(cb)->args) ++ +static int -+get_peer(struct wg_peer *peer, struct allowedips_node **next_allowedips_node, -+ u64 *allowedips_seq, struct sk_buff *skb) ++get_peer(struct wg_peer *peer, struct sk_buff *skb, struct dump_ctx *ctx) +{ ++ + struct nlattr *allowedips_nest, *peer_nest = nla_nest_start(skb, 0); -+ struct allowedips_node *allowedips_node = *next_allowedips_node; ++ struct allowedips_node *allowedips_node = ctx->next_allowedip; + bool fail; + + if (!peer_nest) @@ -25115,9 +25166,9 @@ + } + if (!allowedips_node) + goto no_allowedips; -+ if (!*allowedips_seq) -+ *allowedips_seq = peer->device->peer_allowedips.seq; -+ else if (*allowedips_seq != peer->device->peer_allowedips.seq) ++ if (!ctx->allowedips_seq) ++ ctx->allowedips_seq = peer->device->peer_allowedips.seq; ++ else if (ctx->allowedips_seq != peer->device->peer_allowedips.seq) + goto no_allowedips; + + allowedips_nest = nla_nest_start(skb, WGPEER_A_ALLOWEDIPS); @@ -25133,15 +25184,15 @@ + if (get_allowedips(skb, ip, cidr, family)) { + nla_nest_end(skb, allowedips_nest); + nla_nest_end(skb, peer_nest); -+ *next_allowedips_node = allowedips_node; ++ ctx->next_allowedip = allowedips_node; + return -EMSGSIZE; + } + } + nla_nest_end(skb, allowedips_nest); +no_allowedips: + nla_nest_end(skb, peer_nest); -+ *next_allowedips_node = NULL; -+ *allowedips_seq = 0; ++ ctx->next_allowedip = NULL; ++ ctx->allowedips_seq = 0; + return 0; +err: + nla_nest_cancel(skb, peer_nest); @@ -25161,26 +25212,24 @@ + wg = lookup_interface(attrs, cb->skb); + if (IS_ERR(wg)) + return PTR_ERR(wg); -+ cb->args[0] = (long)wg; ++ DUMP_CTX(cb)->wg = wg; + return 0; +} + +static int wg_get_device_dump(struct sk_buff *skb, struct netlink_callback *cb) +{ -+ struct wg_peer *peer, *next_peer_cursor, *last_peer_cursor; ++ struct wg_peer *peer, *next_peer_cursor; ++ struct dump_ctx *ctx = DUMP_CTX(cb); ++ struct wg_device *wg = ctx->wg; + struct nlattr *peers_nest; -+ struct wg_device *wg; + int ret = -EMSGSIZE; + bool done = true; + void *hdr; + -+ wg = (struct wg_device *)cb->args[0]; -+ next_peer_cursor = (struct wg_peer *)cb->args[1]; -+ last_peer_cursor = (struct wg_peer *)cb->args[1]; -+ + rtnl_lock(); + mutex_lock(&wg->device_update_lock); + cb->seq = wg->device_update_gen; ++ next_peer_cursor = ctx->next_peer; + + hdr = genlmsg_put(skb, NETLINK_CB(cb->skb).portid, cb->nlh->nlmsg_seq, + &genl_family, NLM_F_MULTI, WG_CMD_GET_DEVICE); @@ -25188,7 +25237,7 @@ + goto out; + genl_dump_check_consistent(cb, hdr); + -+ if (!last_peer_cursor) { ++ if (!ctx->next_peer) { + if (nla_put_u16(skb, WGDEVICE_A_LISTEN_PORT, + wg->incoming_port) || + nla_put_u32(skb, WGDEVICE_A_FWMARK, wg->fwmark) || @@ -25221,15 +25270,14 @@ + * coherent dump anyway, so they'll try again. + */ + if (list_empty(&wg->peer_list) || -+ (last_peer_cursor && list_empty(&last_peer_cursor->peer_list))) { ++ (ctx->next_peer && list_empty(&ctx->next_peer->peer_list))) { + nla_nest_cancel(skb, peers_nest); + goto out; + } + lockdep_assert_held(&wg->device_update_lock); -+ peer = list_prepare_entry(last_peer_cursor, &wg->peer_list, peer_list); ++ peer = list_prepare_entry(ctx->next_peer, &wg->peer_list, peer_list); + list_for_each_entry_continue(peer, &wg->peer_list, peer_list) { -+ if (get_peer(peer, (struct allowedips_node **)&cb->args[2], -+ (u64 *)&cb->args[4] /* and args[5] */, skb)) { ++ if (get_peer(peer, skb, ctx)) { + done = false; + break; + } @@ -25240,7 +25288,7 @@ +out: + if (!ret && !done && next_peer_cursor) + wg_peer_get(next_peer_cursor); -+ wg_peer_put(last_peer_cursor); ++ wg_peer_put(ctx->next_peer); + mutex_unlock(&wg->device_update_lock); + rtnl_unlock(); + @@ -25250,10 +25298,10 @@ + } + genlmsg_end(skb, hdr); + if (done) { -+ cb->args[1] = 0; ++ ctx->next_peer = NULL; + return 0; + } -+ cb->args[1] = (long)next_peer_cursor; ++ ctx->next_peer = next_peer_cursor; + return skb->len; + + /* At this point, we can't really deal ourselves with safely zeroing out @@ -25264,12 +25312,11 @@ + +static int wg_get_device_done(struct netlink_callback *cb) +{ -+ struct wg_device *wg = (struct wg_device *)cb->args[0]; -+ struct wg_peer *peer = (struct wg_peer *)cb->args[1]; ++ struct dump_ctx *ctx = DUMP_CTX(cb); + -+ if (wg) -+ dev_put(wg->dev); -+ wg_peer_put(peer); ++ if (ctx->wg) ++ dev_put(ctx->wg->dev); ++ wg_peer_put(ctx->next_peer); + return 0; +} + @@ -25332,8 +25379,12 @@ + if (attrs[WGPEER_A_PRESHARED_KEY] && + nla_len(attrs[WGPEER_A_PRESHARED_KEY]) == NOISE_SYMMETRIC_KEY_LEN) + preshared_key = nla_data(attrs[WGPEER_A_PRESHARED_KEY]); ++ + if (attrs[WGPEER_A_FLAGS]) + flags = nla_get_u32(attrs[WGPEER_A_FLAGS]); ++ ret = -EOPNOTSUPP; ++ if (flags & ~__WGPEER_F_ALL) ++ goto out; + + ret = -EPFNOSUPPORT; + if (attrs[WGPEER_A_PROTOCOL_VERSION]) { @@ -25367,10 +25418,16 @@ + } + up_read(&wg->static_identity.lock); + -+ ret = -ENOMEM; + peer = wg_peer_create(wg, public_key, preshared_key); -+ if (!peer) ++ if (IS_ERR(peer)) { ++ /* Similar to the above, if the key is invalid, we skip ++ * it without fanfare, so that services don't need to ++ * worry about doing key validation themselves. ++ */ ++ ret = PTR_ERR(peer) == -EKEYREJECTED ? 0 : PTR_ERR(peer); ++ peer = NULL; + goto out; ++ } + /* Take additional reference, as though we've just been + * looked up. + */ @@ -25451,6 +25508,7 @@ +static int wg_set_device(struct sk_buff *skb, struct genl_info *info) +{ + struct wg_device *wg = lookup_interface(info->attrs, skb); ++ u32 flags = 0; + int ret; + + if (IS_ERR(wg)) { @@ -25461,6 +25519,12 @@ + rtnl_lock(); + mutex_lock(&wg->device_update_lock); + ++ if (info->attrs[WGDEVICE_A_FLAGS]) ++ flags = nla_get_u32(info->attrs[WGDEVICE_A_FLAGS]); ++ ret = -EOPNOTSUPP; ++ if (flags & ~__WGDEVICE_F_ALL) ++ goto out; ++ + ret = -EPERM; + if ((info->attrs[WGDEVICE_A_LISTEN_PORT] || + info->attrs[WGDEVICE_A_FWMARK]) && @@ -25484,9 +25548,7 @@ + goto out; + } + -+ if (info->attrs[WGDEVICE_A_FLAGS] && -+ nla_get_u32(info->attrs[WGDEVICE_A_FLAGS]) & -+ WGDEVICE_F_REPLACE_PEERS) ++ if (flags & WGDEVICE_F_REPLACE_PEERS) + wg_peer_remove_all(wg); + + if (info->attrs[WGDEVICE_A_PRIVATE_KEY] && @@ -25496,6 +25558,10 @@ + u8 public_key[NOISE_PUBLIC_KEY_LEN]; + struct wg_peer *peer, *temp; + ++ if (!crypto_memneq(wg->static_identity.static_private, ++ private_key, NOISE_PUBLIC_KEY_LEN)) ++ goto skip_set_private_key; ++ + /* We remove before setting, to prevent race, which means doing + * two 25519-genpub ops. + */ @@ -25513,12 +25579,15 @@ + private_key); + list_for_each_entry_safe(peer, temp, &wg->peer_list, + peer_list) { -+ if (!wg_noise_precompute_static_static(peer)) ++ if (wg_noise_precompute_static_static(peer)) ++ wg_noise_expire_current_peer_keypairs(peer); ++ else + wg_peer_remove(peer); + } + wg_cookie_checker_precompute_device_keys(&wg->cookie_checker); + up_write(&wg->static_identity.lock); + } ++skip_set_private_key: + + if (info->attrs[WGDEVICE_A_PEERS]) { + struct nlattr *attr, *peer[WGPEER_A_MAX + 1]; @@ -25560,12 +25629,16 @@ +#endif + .dumpit = wg_get_device_dump, + .done = wg_get_device_done, ++#ifdef COMPAT_CANNOT_INDIVIDUAL_NETLINK_OPS_POLICY + .policy = device_policy, ++#endif + .flags = GENL_UNS_ADMIN_PERM + }, { + .cmd = WG_CMD_SET_DEVICE, + .doit = wg_set_device, ++#ifdef COMPAT_CANNOT_INDIVIDUAL_NETLINK_OPS_POLICY + .policy = device_policy, ++#endif + .flags = GENL_UNS_ADMIN_PERM + } +}; @@ -25582,6 +25655,9 @@ + .version = WG_GENL_VERSION, + .maxattr = WGDEVICE_A_MAX, + .module = THIS_MODULE, ++#ifndef COMPAT_CANNOT_INDIVIDUAL_NETLINK_OPS_POLICY ++ .policy = device_policy, ++#endif + .netnsok = true +}; + @@ -25594,9 +25670,9 @@ +{ + genl_unregister_family(&genl_family); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/noise.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,807 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/noise.c 2019-08-20 20:26:42.408341426 +0000 +@@ -0,0 +1,826 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -25782,6 +25858,25 @@ + spin_unlock_bh(&keypairs->keypair_update_lock); +} + ++void wg_noise_expire_current_peer_keypairs(struct wg_peer *peer) ++{ ++ struct noise_keypair *keypair; ++ ++ wg_noise_handshake_clear(&peer->handshake); ++ wg_noise_reset_last_sent_handshake(&peer->last_sent_handshake); ++ ++ spin_lock_bh(&peer->keypairs.keypair_update_lock); ++ keypair = rcu_dereference_protected(peer->keypairs.next_keypair, ++ lockdep_is_held(&peer->keypairs.keypair_update_lock)); ++ if (keypair) ++ keypair->sending.is_valid = false; ++ keypair = rcu_dereference_protected(peer->keypairs.current_keypair, ++ lockdep_is_held(&peer->keypairs.keypair_update_lock)); ++ if (keypair) ++ keypair->sending.is_valid = false; ++ spin_unlock_bh(&peer->keypairs.keypair_update_lock); ++} ++ +static void add_new_keypair(struct noise_keypairs *keypairs, + struct noise_keypair *new_keypair) +{ @@ -25951,7 +26046,7 @@ + atomic64_set(&key->counter.counter, 0); + memset(key->counter.receive.backtrack, 0, + sizeof(key->counter.receive.backtrack)); -+ key->birthdate = ktime_get_boot_fast_ns(); ++ key->birthdate = ktime_get_coarse_boottime_ns(); + key->is_valid = true; +} + @@ -26184,9 +26279,9 @@ + down_read(&handshake->lock); + replay_attack = memcmp(t, handshake->latest_timestamp, + NOISE_TIMESTAMP_LEN) <= 0; -+ flood_attack = handshake->last_initiation_consumption + ++ flood_attack = (s64)handshake->last_initiation_consumption + + NSEC_PER_SEC / INITIATIONS_PER_SECOND > -+ ktime_get_boot_fast_ns(); ++ (s64)ktime_get_coarse_boottime_ns(); + up_read(&handshake->lock); + if (replay_attack || flood_attack) + goto out; @@ -26198,7 +26293,7 @@ + memcpy(handshake->hash, hash, NOISE_HASH_LEN); + memcpy(handshake->chaining_key, chaining_key, NOISE_HASH_LEN); + handshake->remote_index = src->sender_index; -+ handshake->last_initiation_consumption = ktime_get_boot_fast_ns(); ++ handshake->last_initiation_consumption = ktime_get_coarse_boottime_ns(); + handshake->state = HANDSHAKE_CONSUMED_INITIATION; + up_write(&handshake->lock); + ret_peer = peer; @@ -26404,9 +26499,9 @@ + up_write(&handshake->lock); + return ret; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/peer.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,239 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/peer.c 2019-08-20 20:26:42.408341426 +0000 +@@ -0,0 +1,240 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -26431,20 +26526,23 @@ + const u8 preshared_key[NOISE_SYMMETRIC_KEY_LEN]) +{ + struct wg_peer *peer; ++ int ret = -ENOMEM; + + lockdep_assert_held(&wg->device_update_lock); + + if (wg->num_peers >= MAX_PEERS_PER_DEVICE) -+ return NULL; ++ return ERR_PTR(ret); + + peer = kzalloc(sizeof(*peer), GFP_KERNEL); + if (unlikely(!peer)) -+ return NULL; ++ return ERR_PTR(ret); + peer->device = wg; + + if (!wg_noise_handshake_init(&peer->handshake, &wg->static_identity, -+ public_key, preshared_key, peer)) ++ public_key, preshared_key, peer)) { ++ ret = -EKEYREJECTED; + goto err_1; ++ } + if (dst_cache_init(&peer->endpoint_cache, GFP_KERNEL)) + goto err_1; + if (wg_packet_queue_init(&peer->tx_queue, wg_packet_tx_worker, false, @@ -26465,9 +26563,7 @@ + rwlock_init(&peer->endpoint_lock); + kref_init(&peer->refcount); + skb_queue_head_init(&peer->staged_packet_queue); -+ atomic64_set(&peer->last_sent_handshake, -+ ktime_get_boot_fast_ns() - -+ (u64)(REKEY_TIMEOUT + 1) * NSEC_PER_SEC); ++ wg_noise_reset_last_sent_handshake(&peer->last_sent_handshake); + set_bit(NAPI_STATE_NO_BUSY_POLL, &peer->napi.state); + netif_napi_add(wg->dev, &peer->napi, wg_packet_rx_poll, + NAPI_POLL_WEIGHT); @@ -26485,7 +26581,7 @@ + dst_cache_destroy(&peer->endpoint_cache); +err_1: + kfree(peer); -+ return NULL; ++ return ERR_PTR(ret); +} + +struct wg_peer *wg_peer_get_maybe_zero(struct wg_peer *peer) @@ -26586,8 +26682,8 @@ + +void wg_peer_remove_all(struct wg_device *wg) +{ -+ struct list_head dead_peers = LIST_HEAD_INIT(dead_peers); + struct wg_peer *peer, *temp; ++ LIST_HEAD(dead_peers); + + lockdep_assert_held(&wg->device_update_lock); + @@ -26646,8 +26742,8 @@ + return; + kref_put(&peer->refcount, kref_release); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/peerlookup.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/peerlookup.c 2019-08-20 20:26:42.408341426 +0000 @@ -0,0 +1,221 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -26870,8 +26966,8 @@ + rcu_read_unlock_bh(); + return entry; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/queueing.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/queueing.c 2019-08-20 20:26:42.408341426 +0000 @@ -0,0 +1,53 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -26926,8 +27022,8 @@ + WARN_ON(!__ptr_ring_empty(&queue->ring)); + ptr_ring_cleanup(&queue->ring, NULL); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/ratelimiter.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/ratelimiter.c 2019-08-20 20:26:42.409341426 +0000 @@ -0,0 +1,235 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -26997,7 +27093,7 @@ +/* Calling this function with a NULL work uninits all entries. */ +static void wg_ratelimiter_gc_entries(struct work_struct *work) +{ -+ const u64 now = ktime_get_boot_fast_ns(); ++ const u64 now = ktime_get_coarse_boottime_ns(); + struct ratelimiter_entry *entry; + struct hlist_node *temp; + unsigned int i; @@ -27061,7 +27157,7 @@ + * as part of the rate. + */ + spin_lock(&entry->lock); -+ now = ktime_get_boot_fast_ns(); ++ now = ktime_get_coarse_boottime_ns(); + tokens = min_t(u64, TOKEN_MAX, + entry->tokens + now - + entry->last_time_ns); @@ -27086,7 +27182,7 @@ + entry->ip = ip; + INIT_HLIST_NODE(&entry->hash); + spin_lock_init(&entry->lock); -+ entry->last_time_ns = ktime_get_boot_fast_ns(); ++ entry->last_time_ns = ktime_get_coarse_boottime_ns(); + entry->tokens = TOKEN_MAX - PACKET_COST; + spin_lock(&table_lock); + hlist_add_head_rcu(&entry->hash, bucket); @@ -27164,9 +27260,9 @@ +} + +#include "selftest/ratelimiter.c" ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/receive.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,606 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/receive.c 2019-08-20 20:26:42.409341426 +0000 +@@ -0,0 +1,605 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -27289,7 +27385,7 @@ + under_load = skb_queue_len(&wg->incoming_handshakes) >= + MAX_QUEUED_INCOMING_HANDSHAKES / 8; + if (under_load) -+ last_under_load = ktime_get_boot_fast_ns(); ++ last_under_load = ktime_get_coarse_boottime_ns(); + else if (last_under_load) + under_load = !wg_birthdate_has_expired(last_under_load, 1); + mac_state = wg_cookie_validate_packet(&wg->cookie_checker, skb, @@ -27690,8 +27786,7 @@ + &PACKET_CB(skb)->keypair->receiving, + &simd_context)) ? + PACKET_STATE_CRYPTED : PACKET_STATE_DEAD; -+ wg_queue_enqueue_per_peer_napi(&PACKET_PEER(skb)->rx_queue, skb, -+ state); ++ wg_queue_enqueue_per_peer_napi(skb, state); + simd_relax(&simd_context); + } + @@ -27720,7 +27815,7 @@ + wg->packet_crypt_wq, + &wg->decrypt_queue.last_cpu); + if (unlikely(ret == -EPIPE)) -+ wg_queue_enqueue_per_peer(&peer->rx_queue, skb, PACKET_STATE_DEAD); ++ wg_queue_enqueue_per_peer_napi(skb, PACKET_STATE_DEAD); + if (likely(!ret || ret == -EPIPE)) { + rcu_read_unlock_bh(); + return; @@ -27773,8 +27868,8 @@ +err: + dev_kfree_skb(skb); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/selftest/allowedips.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/selftest/allowedips.c 2019-08-20 20:26:42.409341426 +0000 @@ -0,0 +1,682 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -28458,8 +28553,8 @@ +#undef init_peer + +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/selftest/counter.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/selftest/counter.c 2019-08-20 20:26:42.409341426 +0000 @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -28565,8 +28660,8 @@ + return success; +} +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/selftest/ratelimiter.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/selftest/ratelimiter.c 2019-08-20 20:26:42.410341426 +0000 @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -28794,8 +28889,8 @@ + return success; +} +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/send.c 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/send.c 2019-08-20 20:26:42.410341426 +0000 @@ -0,0 +1,431 @@ +// SPDX-License-Identifier: GPL-2.0 +/* @@ -28826,7 +28921,7 @@ + REKEY_TIMEOUT)) + return; /* This function is rate limited. */ + -+ atomic64_set(&peer->last_sent_handshake, ktime_get_boot_fast_ns()); ++ atomic64_set(&peer->last_sent_handshake, ktime_get_coarse_boottime_ns()); + net_dbg_ratelimited("%s: Sending handshake initiation to peer %llu (%pISpfsc)\n", + peer->device->dev->name, peer->internal_id, + &peer->endpoint.addr); @@ -28836,7 +28931,7 @@ + wg_timers_any_authenticated_packet_traversal(peer); + wg_timers_any_authenticated_packet_sent(peer); + atomic64_set(&peer->last_sent_handshake, -+ ktime_get_boot_fast_ns()); ++ ktime_get_coarse_boottime_ns()); + wg_socket_send_buffer_to_peer(peer, &packet, sizeof(packet), + HANDSHAKE_DSCP); + wg_timers_handshake_initiated(peer); @@ -28886,7 +28981,7 @@ +{ + struct message_handshake_response packet; + -+ atomic64_set(&peer->last_sent_handshake, ktime_get_boot_fast_ns()); ++ atomic64_set(&peer->last_sent_handshake, ktime_get_coarse_boottime_ns()); + net_dbg_ratelimited("%s: Sending handshake response to peer %llu (%pISpfsc)\n", + peer->device->dev->name, peer->internal_id, + &peer->endpoint.addr); @@ -28899,7 +28994,7 @@ + wg_timers_any_authenticated_packet_traversal(peer); + wg_timers_any_authenticated_packet_sent(peer); + atomic64_set(&peer->last_sent_handshake, -+ ktime_get_boot_fast_ns()); ++ ktime_get_coarse_boottime_ns()); + wg_socket_send_buffer_to_peer(peer, &packet, + sizeof(packet), + HANDSHAKE_DSCP); @@ -29228,9 +29323,9 @@ + */ + wg_packet_send_queued_handshake_initiation(peer, false); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/socket.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,433 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/socket.c 2019-08-20 20:26:42.410341426 +0000 +@@ -0,0 +1,436 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -29319,6 +29414,8 @@ + if (cache) + dst_cache_set_ip4(cache, &rt->dst, fl.saddr); + } ++ ++ skb->ignore_df = 1; + udp_tunnel_xmit_skb(rt, sock, skb, fl.saddr, fl.daddr, ds, + ip4_dst_hoplimit(&rt->dst), 0, fl.fl4_sport, + fl.fl4_dport, false, false); @@ -29390,6 +29487,7 @@ + dst_cache_set_ip6(cache, dst, &fl.saddr); + } + ++ skb->ignore_df = 1; + udp_tunnel6_xmit_skb(dst, sock, skb, skb->dev, &fl.saddr, &fl.daddr, ds, + ip6_dst_hoplimit(dst), 0, fl.fl6_sport, + fl.fl6_dport, false); @@ -29664,9 +29762,9 @@ + sock_free(old4); + sock_free(old6); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/timers.c 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,241 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/timers.c 2019-08-20 20:26:42.412341426 +0000 +@@ -0,0 +1,243 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -29686,7 +29784,8 @@ + * not sent one for `KEEPALIVE_TIMEOUT` ms. + * + * - Timer for initiating new handshake if we have sent a packet but after have -+ * not received one (even empty) for `(KEEPALIVE_TIMEOUT + REKEY_TIMEOUT)` ms. ++ * not received one (even empty) for `(KEEPALIVE_TIMEOUT + REKEY_TIMEOUT) + ++ * jitter` ms. + * + * - Timer for zeroing out all ephemeral keys after `(REJECT_AFTER_TIME * 3)` ms + * if no new keys have been received. @@ -29814,7 +29913,8 @@ +{ + if (!timer_pending(&peer->timer_new_handshake)) + mod_peer_timer(peer, &peer->timer_new_handshake, -+ jiffies + (KEEPALIVE_TIMEOUT + REKEY_TIMEOUT) * HZ); ++ jiffies + (KEEPALIVE_TIMEOUT + REKEY_TIMEOUT) * HZ + ++ prandom_u32_max(REKEY_TIMEOUT_JITTER_MAX_JIFFIES)); +} + +/* Should be called after an authenticated data packet is received. */ @@ -29908,8 +30008,8 @@ + del_timer_sync(&peer->timer_persistent_keepalive); + flush_work(&peer->clear_peer_work); +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/allowedips.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/allowedips.h 2019-08-20 20:26:42.392341425 +0000 @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -29970,8 +30070,8 @@ +#endif + +#endif /* _WG_ALLOWEDIPS_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/checksum/checksum_partial_compat.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/checksum/checksum_partial_compat.h 2019-08-20 20:26:42.392341425 +0000 @@ -0,0 +1,208 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -30181,8 +30281,8 @@ + } + return err; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/compat-asm.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/compat-asm.h 2019-08-20 20:26:42.392341425 +0000 @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -30227,9 +30327,9 @@ +#endif + +#endif /* _WG_COMPATASM_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/compat.h 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,881 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/compat.h 2019-08-20 20:26:42.393341425 +0000 +@@ -0,0 +1,915 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -30246,6 +30346,8 @@ +#ifdef RHEL_MAJOR +#if RHEL_MAJOR == 7 +#define ISRHEL7 ++#elif RHEL_MAJOR == 8 ++#define ISRHEL8 +#endif +#endif +#ifdef UTS_UBUNTU_RELEASE_ABI @@ -30358,7 +30460,7 @@ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) +#include +#include -+static inline u32 __wgcompat_get_random_u32(void) ++static inline u32 __compat_get_random_u32(void) +{ + static siphash_key_t key; + static u32 counter = 0; @@ -30373,7 +30475,7 @@ +#endif + return siphash_2u32(counter++, get_random_int(), &key); +} -+#define get_random_u32 __wgcompat_get_random_u32 ++#define get_random_u32 __compat_get_random_u32 +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0) && !defined(ISRHEL7) @@ -30413,7 +30515,7 @@ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) && !defined(ISRHEL7) +#include "checksum/checksum_partial_compat.h" -+static inline void *our_pskb_put(struct sk_buff *skb, struct sk_buff *tail, int len) ++static inline void *__compat_pskb_put(struct sk_buff *skb, struct sk_buff *tail, int len) +{ + if (tail != skb) { + skb->data_len += len; @@ -30421,7 +30523,7 @@ + } + return skb_put(tail, len); +} -+#define pskb_put our_pskb_put ++#define pskb_put __compat_pskb_put +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) && !defined(ISRHEL7) @@ -30448,10 +30550,11 @@ + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) || defined(ISUBUNTU1404)) && !defined(ISRHEL7) +#include -+static inline u32 prandom_u32_max(u32 ep_ro) ++static inline u32 __compat_prandom_u32_max(u32 ep_ro) +{ -+ return (u32)(((u64) prandom_u32() * ep_ro) >> 32); ++ return (u32)(((u64)prandom_u32() * ep_ro) >> 32); +} ++#define prandom_u32_max __compat_prandom_u32_max +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 75) && !defined(ISRHEL7) @@ -30504,8 +30607,8 @@ +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) && !defined(ISRHEL7) -+static const struct in6_addr our_in6addr_any = IN6ADDR_ANY_INIT; -+#define in6addr_any our_in6addr_any ++static const struct in6_addr __compat_in6addr_any = IN6ADDR_ANY_INIT; ++#define in6addr_any __compat_in6addr_any +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) && !defined(ISOPENSUSE15) @@ -30619,30 +30722,43 @@ +#define system_power_efficient_wq system_unbound_wq +#endif + -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) && !defined(ISRHEL7) -+#include -+static inline u64 ktime_get_boot_ns(void) -+{ -+ return ktime_to_ns(ktime_get_boottime()); -+} -+#endif -+ -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 3, 0) ++#include +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) +#include ++#ifndef ktime_get_real_ts64 ++#define timespec64 timespec ++#define ktime_get_real_ts64 ktime_get_real_ts ++#endif +#else +#include +#endif -+static inline u64 __wgcompat_ktime_get_boot_fast_ns(void) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0) ++static inline u64 __compat_jiffies64_to_nsecs(u64 j) +{ -+ return ktime_get_boot_ns(); ++#if !(NSEC_PER_SEC % HZ) ++ return (NSEC_PER_SEC / HZ) * j; ++#else ++ return div_u64(j * HZ_TO_USEC_NUM, HZ_TO_USEC_DEN) * 1000; ++#endif ++} ++#define jiffies64_to_nsecs __compat_jiffies64_to_nsecs ++#endif ++static inline u64 ktime_get_coarse_boottime_ns(void) ++{ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) ++ return ktime_to_ns(ktime_get_boottime()); ++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 12) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 53) ++ return ktime_to_ns(ktime_mono_to_any(ns_to_ktime(jiffies64_to_nsecs(get_jiffies_64())), TK_OFFS_BOOT)); ++#else ++ return ktime_to_ns(ktime_get_coarse_boottime()); ++#endif +} -+#define ktime_get_boot_fast_ns __wgcompat_ktime_get_boot_fast_ns +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) +#include -+static inline __be32 our_confirm_addr_indev(struct in_device *in_dev, __be32 dst, __be32 local, int scope) ++static inline __be32 __compat_confirm_addr_indev(struct in_device *in_dev, __be32 dst, __be32 local, int scope) +{ + int same = 0; + __be32 addr = 0; @@ -30669,17 +30785,17 @@ + } endfor_ifa(in_dev); + return same ? addr : 0; +} -+static inline __be32 our_inet_confirm_addr(struct net *net, struct in_device *in_dev, __be32 dst, __be32 local, int scope) ++static inline __be32 __compat_inet_confirm_addr(struct net *net, struct in_device *in_dev, __be32 dst, __be32 local, int scope) +{ + __be32 addr = 0; + struct net_device *dev; + if (in_dev) -+ return our_confirm_addr_indev(in_dev, dst, local, scope); ++ return __compat_confirm_addr_indev(in_dev, dst, local, scope); + rcu_read_lock(); + for_each_netdev_rcu(net, dev) { + in_dev = __in_dev_get_rcu(dev); + if (in_dev) { -+ addr = our_confirm_addr_indev(in_dev, dst, local, scope); ++ addr = __compat_confirm_addr_indev(in_dev, dst, local, scope); + if (addr) + break; + } @@ -30687,14 +30803,14 @@ + rcu_read_unlock(); + return addr; +} -+#define inet_confirm_addr our_inet_confirm_addr ++#define inet_confirm_addr __compat_inet_confirm_addr +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0) +#include +#include +#include -+static inline void *kvmalloc_ours(size_t size, gfp_t flags) ++static inline void *__compat_kvmalloc(size_t size, gfp_t flags) +{ + gfp_t kmalloc_flags = flags; + void *ret; @@ -30708,25 +30824,25 @@ + return ret; + return __vmalloc(size, flags, PAGE_KERNEL); +} -+static inline void *kvzalloc_ours(size_t size, gfp_t flags) ++static inline void *__compat_kvzalloc(size_t size, gfp_t flags) +{ -+ return kvmalloc_ours(size, flags | __GFP_ZERO); ++ return __compat_kvmalloc(size, flags | __GFP_ZERO); +} -+#define kvmalloc kvmalloc_ours -+#define kvzalloc kvzalloc_ours ++#define kvmalloc __compat_kvmalloc ++#define kvzalloc __compat_kvzalloc +#endif + +#if ((LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0) && LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 41)) && !defined(ISUBUNTU1404) +#include +#include -+static inline void kvfree_ours(const void *addr) ++static inline void __compat_kvfree(const void *addr) +{ + if (is_vmalloc_addr(addr)) + vfree(addr); + else + kfree(addr); +} -+#define kvfree kvfree_ours ++#define kvfree __compat_kvfree +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 9) @@ -30780,16 +30896,16 @@ +#endif + +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 2) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 16) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 65) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 4, 101) && LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 84) -+#define ___COMPAT_NETLINK_DUMP_BLOCK { \ ++#define __COMPAT_NETLINK_DUMP_BLOCK { \ + int ret; \ + skb->end -= nlmsg_total_size(sizeof(int)); \ + ret = wg_get_device_dump_real(skb, cb); \ + skb->end += nlmsg_total_size(sizeof(int)); \ + return ret; \ +} -+#define ___COMPAT_NETLINK_DUMP_OVERRIDE ++#define __COMPAT_NETLINK_DUMP_OVERRIDE +#else -+#define ___COMPAT_NETLINK_DUMP_BLOCK return wg_get_device_dump_real(skb, cb); ++#define __COMPAT_NETLINK_DUMP_BLOCK return wg_get_device_dump_real(skb, cb); +#endif +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 8) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) || (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 25) && LINUX_VERSION_CODE >= KERNEL_VERSION(4, 10, 0)) || LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 87) +#define wg_get_device_dump(a, b) wg_get_device_dump_real(a, b); \ @@ -30800,14 +30916,14 @@ + if (ret) \ + return ret; \ + } \ -+ ___COMPAT_NETLINK_DUMP_BLOCK \ ++ __COMPAT_NETLINK_DUMP_BLOCK \ +} \ +static int wg_get_device_dump_real(a, b) +#define COMPAT_CANNOT_USE_NETLINK_START -+#elif defined(___COMPAT_NETLINK_DUMP_OVERRIDE) ++#elif defined(__COMPAT_NETLINK_DUMP_OVERRIDE) +#define wg_get_device_dump(a, b) wg_get_device_dump_real(a, b); \ +static int wg_get_device_dump(a, b) { \ -+ ___COMPAT_NETLINK_DUMP_BLOCK \ ++ __COMPAT_NETLINK_DUMP_BLOCK \ +} \ +static int wg_get_device_dump_real(a, b) +#endif @@ -30831,7 +30947,7 @@ +#include +static inline int cpu_has_xfeatures(u64 xfeatures_needed, const char **feature_name) +{ -+ return xgetbv(XCR_XFEATURE_ENABLED_MASK) & xfeatures_needed; ++ return boot_cpu_has(X86_FEATURE_XSAVE) && xgetbv(XCR_XFEATURE_ENABLED_MASK) & xfeatures_needed; +} +#endif +#ifndef XFEATURE_MASK_YMM @@ -30864,8 +30980,8 @@ +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) -+struct _____dummy_container { char dev; }; -+#define netdev_notifier_info net_device *)data); __attribute((unused)) char _____dummy = ((struct _____dummy_container ++struct __compat_dummy_container { char dev; }; ++#define netdev_notifier_info net_device *)data); __attribute((unused)) char __compat_dummy_variable = ((struct __compat_dummy_container +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) @@ -30877,11 +30993,6 @@ +#define COMPAT_CANNOT_USE_AVX512 +#endif + -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) -+#define timespec64 timespec -+#define ktime_get_real_ts64 ktime_get_real_ts -+#endif -+ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 15, 0) +#include +#define genl_dump_check_consistent(a, b) genl_dump_check_consistent(a, b, &genl_family) @@ -30912,7 +31023,7 @@ +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0) +#include +#ifndef atomic_read_acquire -+#define atomic_read_acquire(v) ({ int ___p1 = atomic_read(v); smp_rmb(); ___p1; }) ++#define atomic_read_acquire(v) ({ int __compat_p1 = atomic_read(v); smp_rmb(); __compat_p1; }) +#endif +#ifndef atomic_set_release +#define atomic_set_release(v, i) ({ smp_wmb(); atomic_set(v, i); }) @@ -30976,7 +31087,7 @@ +#define read_cpuid_part() read_cpuid_part_number() +#endif + -+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 17, 0) && !defined(ISRHEL7) +#define hlist_add_behind(a, b) hlist_add_after(b, a) +#endif + @@ -31010,6 +31121,9 @@ +#define skb_probe_transport_header(a) skb_probe_transport_header(a, 0) +#endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0) && !defined(ISRHEL7) ++#define ignore_df local_df ++#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 1, 0) +/* Note that all intentional uses of the non-_bh variety need to explicitly @@ -31043,13 +31157,33 @@ +#define COMPAT_CANNOT_DEPRECIATE_BH_RCU +#endif + -+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 10) ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 10) && !defined(ISRHEL8) +static inline void skb_mark_not_on_list(struct sk_buff *skb) +{ + skb->next = NULL; +} +#endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0) ++#define NLA_EXACT_LEN NLA_UNSPEC ++#endif ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) ++#define NLA_MIN_LEN NLA_UNSPEC ++#define COMPAT_CANNOT_INDIVIDUAL_NETLINK_OPS_POLICY ++#endif ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0) && defined(__aarch64__) ++#define cpu_have_named_feature(name) (elf_hwcap & (HWCAP_ ## name)) ++#endif ++ ++#ifdef CONFIG_VE ++#include ++#ifdef NETIF_F_VIRTUAL ++#undef NETIF_F_LLTX ++#define NETIF_F_LLTX (__NETIF_F(LLTX) | __NETIF_F(VIRTUAL)) ++#endif ++#endif ++ +/* https://github.com/ClangBuiltLinux/linux/issues/7 */ +#if defined( __clang__) && (!defined(CONFIG_CLANG_VERSION) || CONFIG_CLANG_VERSION < 80000) +#include @@ -31111,8 +31245,8 @@ +#endif + +#endif /* _WG_COMPAT_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/dst_cache/include/net/dst_cache.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/dst_cache/include/net/dst_cache.h 2019-08-20 20:26:42.393341425 +0000 @@ -0,0 +1,97 @@ +#ifndef _WG_NET_DST_CACHE_H +#define _WG_NET_DST_CACHE_H @@ -31211,12 +31345,12 @@ +void dst_cache_destroy(struct dst_cache *dst_cache); + +#endif /* _WG_NET_DST_CACHE_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/fpu-x86/include/asm/fpu/api.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/fpu-x86/include/asm/fpu/api.h 2019-08-20 20:26:42.393341425 +0000 @@ -0,0 +1 @@ +#include ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/intel-family-x86/include/asm/intel-family.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/intel-family-x86/include/asm/intel-family.h 2019-08-20 20:26:42.393341425 +0000 @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef _ASM_X86_INTEL_FAMILY_H @@ -31291,16 +31425,16 @@ +#define INTEL_FAM6_XEON_PHI_KNM 0x85 /* Knights Mill */ + +#endif /* _ASM_X86_INTEL_FAMILY_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/memneq/include.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/memneq/include.h 2018-06-02 16:21:38.100389985 +0000 @@ -0,0 +1,5 @@ +extern noinline unsigned long __crypto_memneq(const void *a, const void *b, size_t size); +static inline int crypto_memneq(const void *a, const void *b, size_t size) +{ + return __crypto_memneq(a, b, size) != 0UL ? 1 : 0; +} ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/neon-arm/include/asm/neon.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/neon-arm/include/asm/neon.h 2019-08-20 20:26:42.393341425 +0000 @@ -0,0 +1,7 @@ +#ifndef _ARCH_ARM_ASM_NEON +#define _ARCH_ARM_ASM_NEON @@ -31309,8 +31443,8 @@ +#define kernel_neon_end() \ + BUILD_BUG_ON_MSG(1, "This kernel does not support ARM NEON") +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/ptr_ring/include/linux/ptr_ring.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/ptr_ring/include/linux/ptr_ring.h 2018-06-02 16:21:38.101389944 +0000 @@ -0,0 +1,640 @@ +/* + * Definitions for the 'struct ptr_ring' datastructure. @@ -31952,8 +32086,8 @@ +} + +#endif /* _LINUX_PTR_RING_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/simd-asm/include/asm/simd.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/simd-asm/include/asm/simd.h 2019-08-20 20:26:42.393341425 +0000 @@ -0,0 +1,21 @@ +#ifndef _COMPAT_ASM_SIMD_H +#define _COMPAT_ASM_SIMD_H @@ -31976,8 +32110,8 @@ +} + +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/simd/include/linux/simd.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/simd/include/linux/simd.h 2019-08-20 20:26:42.394341425 +0000 @@ -0,0 +1,70 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -32049,8 +32183,8 @@ +} + +#endif /* _WG_SIMD_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/siphash/include/linux/siphash.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/siphash/include/linux/siphash.h 2019-08-20 20:26:42.394341425 +0000 @@ -0,0 +1,140 @@ +/* Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. + * @@ -32192,8 +32326,8 @@ +} + +#endif /* _WG_LINUX_SIPHASH_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/udp_tunnel/include/net/udp_tunnel.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/udp_tunnel/include/net/udp_tunnel.h 2018-06-02 16:21:38.101389944 +0000 @@ -0,0 +1,94 @@ +#ifndef _WG_NET_UDP_TUNNEL_H +#define _WG_NET_UDP_TUNNEL_H @@ -32289,8 +32423,8 @@ +void udp_tunnel_sock_release(struct socket *sock); + +#endif /* _WG_NET_UDP_TUNNEL_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/udp_tunnel/udp_tunnel_partial_compat.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/udp_tunnel/udp_tunnel_partial_compat.h 2019-08-20 20:26:42.394341425 +0000 @@ -0,0 +1,226 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -32313,7 +32447,7 @@ +#include +#include +#endif -+static inline void fake_destructor(struct sk_buff *skb) ++static inline void __compat_fake_destructor(struct sk_buff *skb) +{ +} +typedef int (*udp_tunnel_encap_rcv_t)(struct sock *sk, struct sk_buff *skb); @@ -32324,7 +32458,7 @@ +}; +/* This is global so, uh, only one real call site... This is the kind of horrific hack you'd expect to see in compat code. */ +static udp_tunnel_encap_rcv_t encap_rcv = NULL; -+static void our_sk_data_ready(struct sock *sk) ++static void __compat_sk_data_ready(struct sock *sk) +{ + struct sk_buff *skb; + while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { @@ -32340,7 +32474,7 @@ + inet_sk(sk)->mc_loop = 0; + encap_rcv = cfg->encap_rcv; + rcu_assign_sk_user_data(sk, cfg->sk_user_data); -+ sk->sk_data_ready = our_sk_data_ready; ++ sk->sk_data_ready = __compat_sk_data_ready; +} +static inline void udp_tunnel_sock_release(struct socket *sock) +{ @@ -32416,13 +32550,13 @@ +#include +#include +#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 18, 0) -+static inline void fake_destructor(struct sk_buff *skb) ++static inline void __compat_fake_destructor(struct sk_buff *skb) +{ +} +#endif -+#define udp_tunnel_xmit_skb(a, b, c, d, e, f, g, h, i, j, k, l) do { struct net_device *dev__ = (c)->dev; int ret__; if (!(c)->destructor) (c)->destructor = fake_destructor; if (!(c)->sk) (c)->sk = (b); ret__ = udp_tunnel_xmit_skb(a, c, d, e, f, g, h, i, j, k, l); if (ret__) iptunnel_xmit_stats(ret__ - 8, &dev__->stats, dev__->tstats); } while (0) ++#define udp_tunnel_xmit_skb(a, b, c, d, e, f, g, h, i, j, k, l) do { struct net_device *dev__ = (c)->dev; int ret__; if (!(c)->destructor) (c)->destructor = __compat_fake_destructor; if (!(c)->sk) (c)->sk = (b); ret__ = udp_tunnel_xmit_skb(a, c, d, e, f, g, h, i, j, k, l); if (ret__) iptunnel_xmit_stats(ret__ - 8, &dev__->stats, dev__->tstats); } while (0) +#if IS_ENABLED(CONFIG_IPV6) -+#define udp_tunnel6_xmit_skb(a, b, c, d, e, f, g, h, i, j, k, l) do { if (!(c)->destructor) (c)->destructor = fake_destructor; if (!(c)->sk) (c)->sk = (b); udp_tunnel6_xmit_skb(a, c, d, e, f, g, h, j, k, l); } while(0) ++#define udp_tunnel6_xmit_skb(a, b, c, d, e, f, g, h, i, j, k, l) do { if (!(c)->destructor) (c)->destructor = __compat_fake_destructor; if (!(c)->sk) (c)->sk = (b); udp_tunnel6_xmit_skb(a, c, d, e, f, g, h, j, k, l); } while(0) +#endif +#else + @@ -32450,7 +32584,7 @@ +#include +#include +#include -+struct udp_port_cfg_new { ++struct __compat_udp_port_cfg { + u8 family; + union { + struct in_addr local_ip; @@ -32468,7 +32602,7 @@ + __be16 peer_udp_port; + unsigned int use_udp_checksums:1, use_udp6_tx_checksums:1, use_udp6_rx_checksums:1, ipv6_v6only:1; +}; -+static inline int __maybe_unused udp_sock_create_new(struct net *net, struct udp_port_cfg_new *cfg, struct socket **sockp) ++static inline int __maybe_unused __compat_udp_sock_create(struct net *net, struct __compat_udp_port_cfg *cfg, struct socket **sockp) +{ + struct udp_port_cfg old_cfg = { + .family = cfg->family, @@ -32515,11 +32649,11 @@ +#endif + return -EPFNOSUPPORT; +} -+#define udp_port_cfg udp_port_cfg_new -+#define udp_sock_create(a, b, c) udp_sock_create_new(a, b, c) ++#define udp_port_cfg __compat_udp_port_cfg ++#define udp_sock_create(a, b, c) __compat_udp_sock_create(a, b, c) +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/cookie.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/cookie.h 2019-08-20 20:26:42.394341425 +0000 @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -32580,8 +32714,8 @@ + struct wg_device *wg); + +#endif /* _WG_COOKIE_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/include/zinc/blake2s.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/include/zinc/blake2s.h 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,56 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -32639,8 +32773,8 @@ + const size_t inlen, const size_t keylen); + +#endif /* _ZINC_BLAKE2S_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/include/zinc/chacha20.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/include/zinc/chacha20.h 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,70 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -32712,8 +32846,8 @@ + const u8 key[HCHACHA20_KEY_SIZE], simd_context_t *simd_context); + +#endif /* _ZINC_CHACHA20_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/include/zinc/chacha20poly1305.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/include/zinc/chacha20poly1305.h 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,50 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -32765,8 +32899,8 @@ + const u8 key[CHACHA20POLY1305_KEY_SIZE]); + +#endif /* _ZINC_CHACHA20POLY1305_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/include/zinc/curve25519.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/include/zinc/curve25519.h 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -32796,8 +32930,8 @@ +} + +#endif /* _ZINC_CURVE25519_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/include/zinc/poly1305.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/include/zinc/poly1305.h 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -32830,8 +32964,8 @@ + simd_context_t *simd_context); + +#endif /* _ZINC_POLY1305_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc.h 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -32848,8 +32982,8 @@ +int curve25519_mod_init(void); + +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/selftest/run.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/selftest/run.h 2019-08-20 20:26:42.407341426 +0000 @@ -0,0 +1,48 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -32899,8 +33033,8 @@ +} + +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/device.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/device.h 2019-08-20 20:26:42.407341426 +0000 @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -32967,8 +33101,8 @@ +void wg_device_uninit(void); + +#endif /* _WG_DEVICE_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/messages.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/messages.h 2019-08-20 20:26:42.407341426 +0000 @@ -0,0 +1,128 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33098,8 +33232,8 @@ +enum { HANDSHAKE_DSCP = 0x88 /* AF41, plus 00 ECN */ }; + +#endif /* _WG_MESSAGES_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/netlink.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/netlink.h 2019-08-20 20:26:42.408341426 +0000 @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33113,9 +33247,9 @@ +void wg_genetlink_uninit(void); + +#endif /* _WG_NETLINK_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/noise.h 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,131 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/noise.h 2019-08-20 20:26:42.408341426 +0000 +@@ -0,0 +1,137 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -33131,7 +33265,6 @@ +#include +#include +#include -+#include +#include + +union noise_counter { @@ -33219,11 +33352,18 @@ + const u8 peer_preshared_key[NOISE_SYMMETRIC_KEY_LEN], + struct wg_peer *peer); +void wg_noise_handshake_clear(struct noise_handshake *handshake); ++static inline void wg_noise_reset_last_sent_handshake(atomic64_t *handshake_ns) ++{ ++ atomic64_set(handshake_ns, ktime_get_coarse_boottime_ns() - ++ (u64)(REKEY_TIMEOUT + 1) * NSEC_PER_SEC); ++} ++ +void wg_noise_keypair_put(struct noise_keypair *keypair, bool unreference_now); +struct noise_keypair *wg_noise_keypair_get(struct noise_keypair *keypair); +void wg_noise_keypairs_clear(struct noise_keypairs *keypairs); +bool wg_noise_received_with_keypair(struct noise_keypairs *keypairs, + struct noise_keypair *received_keypair); ++void wg_noise_expire_current_peer_keypairs(struct wg_peer *peer); + +void wg_noise_set_static_identity_private_key( + struct noise_static_identity *static_identity, @@ -33247,8 +33387,8 @@ + struct noise_keypairs *keypairs); + +#endif /* _WG_NOISE_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/peer.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/peer.h 2019-08-20 20:26:42.408341426 +0000 @@ -0,0 +1,83 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33333,8 +33473,8 @@ +void wg_peer_remove_all(struct wg_device *wg); + +#endif /* _WG_PEER_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/peerlookup.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/peerlookup.h 2019-08-20 20:26:42.408341426 +0000 @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33400,9 +33540,9 @@ + const __le32 index, struct wg_peer **peer); + +#endif /* _WG_PEERLOOKUP_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/queueing.h 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,198 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/queueing.h 2019-08-20 20:26:42.409341426 +0000 +@@ -0,0 +1,197 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -33582,8 +33722,7 @@ + wg_peer_put(peer); +} + -+static inline void wg_queue_enqueue_per_peer_napi(struct crypt_queue *queue, -+ struct sk_buff *skb, ++static inline void wg_queue_enqueue_per_peer_napi(struct sk_buff *skb, + enum packet_state state) +{ + /* We take a reference, because as soon as we call atomic_set, the @@ -33601,8 +33740,8 @@ +#endif + +#endif /* _WG_QUEUEING_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/ratelimiter.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/ratelimiter.h 2019-08-20 20:26:42.409341426 +0000 @@ -0,0 +1,19 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33623,8 +33762,8 @@ +#endif + +#endif /* _WG_RATELIMITER_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/socket.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/socket.h 2019-08-20 20:26:42.410341426 +0000 @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33670,8 +33809,8 @@ +#endif + +#endif /* _WG_SOCKET_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/timers.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/timers.h 2019-08-20 20:26:42.412341426 +0000 @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -33700,13 +33839,13 @@ + u64 expiration_seconds) +{ + return (s64)(birthday_nanoseconds + expiration_seconds * NSEC_PER_SEC) -+ <= (s64)ktime_get_boot_fast_ns(); ++ <= (s64)ktime_get_coarse_boottime_ns(); +} + +#endif /* _WG_TIMERS_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/uapi/wireguard.h 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,190 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/uapi/wireguard.h 2019-08-20 20:26:42.416341426 +0000 +@@ -0,0 +1,192 @@ +/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */ +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -33734,23 +33873,23 @@ + * + * WGDEVICE_A_IFINDEX: NLA_U32 + * WGDEVICE_A_IFNAME: NLA_NUL_STRING, maxlen IFNAMESIZ - 1 -+ * WGDEVICE_A_PRIVATE_KEY: len WG_KEY_LEN -+ * WGDEVICE_A_PUBLIC_KEY: len WG_KEY_LEN ++ * WGDEVICE_A_PRIVATE_KEY: NLA_EXACT_LEN, len WG_KEY_LEN ++ * WGDEVICE_A_PUBLIC_KEY: NLA_EXACT_LEN, len WG_KEY_LEN + * WGDEVICE_A_LISTEN_PORT: NLA_U16 + * WGDEVICE_A_FWMARK: NLA_U32 + * WGDEVICE_A_PEERS: NLA_NESTED + * 0: NLA_NESTED -+ * WGPEER_A_PUBLIC_KEY: len WG_KEY_LEN -+ * WGPEER_A_PRESHARED_KEY: len WG_KEY_LEN -+ * WGPEER_A_ENDPOINT: struct sockaddr_in or struct sockaddr_in6 ++ * WGPEER_A_PUBLIC_KEY: NLA_EXACT_LEN, len WG_KEY_LEN ++ * WGPEER_A_PRESHARED_KEY: NLA_EXACT_LEN, len WG_KEY_LEN ++ * WGPEER_A_ENDPOINT: NLA_MIN_LEN(struct sockaddr), struct sockaddr_in or struct sockaddr_in6 + * WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL: NLA_U16 -+ * WGPEER_A_LAST_HANDSHAKE_TIME: struct __kernel_timespec ++ * WGPEER_A_LAST_HANDSHAKE_TIME: NLA_EXACT_LEN, struct __kernel_timespec + * WGPEER_A_RX_BYTES: NLA_U64 + * WGPEER_A_TX_BYTES: NLA_U64 + * WGPEER_A_ALLOWEDIPS: NLA_NESTED + * 0: NLA_NESTED + * WGALLOWEDIP_A_FAMILY: NLA_U16 -+ * WGALLOWEDIP_A_IPADDR: struct in_addr or struct in6_addr ++ * WGALLOWEDIP_A_IPADDR: NLA_MIN_LEN(struct in_addr), struct in_addr or struct in6_addr + * WGALLOWEDIP_A_CIDR_MASK: NLA_U8 + * 0: NLA_NESTED + * ... @@ -33851,7 +33990,8 @@ +#define WG_CMD_MAX (__WG_CMD_MAX - 1) + +enum wgdevice_flag { -+ WGDEVICE_F_REPLACE_PEERS = 1U << 0 ++ WGDEVICE_F_REPLACE_PEERS = 1U << 0, ++ __WGDEVICE_F_ALL = WGDEVICE_F_REPLACE_PEERS +}; +enum wgdevice_attribute { + WGDEVICE_A_UNSPEC, @@ -33869,7 +34009,8 @@ + +enum wgpeer_flag { + WGPEER_F_REMOVE_ME = 1U << 0, -+ WGPEER_F_REPLACE_ALLOWEDIPS = 1U << 1 ++ WGPEER_F_REPLACE_ALLOWEDIPS = 1U << 1, ++ __WGPEER_F_ALL = WGPEER_F_REMOVE_ME | WGPEER_F_REPLACE_ALLOWEDIPS +}; +enum wgpeer_attribute { + WGPEER_A_UNSPEC, @@ -33897,17 +34038,17 @@ +#define WGALLOWEDIP_A_MAX (__WGALLOWEDIP_A_LAST - 1) + +#endif /* _WG_UAPI_WIREGUARD_H */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/version.h 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/version.h 2019-08-20 20:26:42.416341426 +0000 @@ -0,0 +1 @@ -+#define WIREGUARD_VERSION "0.0.20190406" ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/blake2s/blake2s-x86_64.S 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,685 @@ ++#define WIREGUARD_VERSION "0.0.20190702" +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/blake2s/blake2s-x86_64.S 2019-08-20 20:26:42.395341425 +0000 +@@ -0,0 +1,258 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* + * Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. -+ * Copyright (C) 2017 Samuel Neves . All Rights Reserved. ++ * Copyright (C) 2017-2019 Samuel Neves . All Rights Reserved. + */ + +#include @@ -33922,592 +34063,165 @@ +.section .rodata.cst16.ROR328, "aM", @progbits, 16 +.align 16 +ROR328: .octa 0x0C0F0E0D080B0A090407060500030201 -+#ifdef CONFIG_AS_AVX512 -+.section .rodata.cst64.BLAKE2S_SIGMA, "aM", @progbits, 640 ++.section .rodata.cst64.BLAKE2S_SIGMA, "aM", @progbits, 160 +.align 64 +SIGMA: -+.long 0, 2, 4, 6, 1, 3, 5, 7, 8, 10, 12, 14, 9, 11, 13, 15 -+.long 11, 2, 12, 14, 9, 8, 15, 3, 4, 0, 13, 6, 10, 1, 7, 5 -+.long 10, 12, 11, 6, 5, 9, 13, 3, 4, 15, 14, 2, 0, 7, 8, 1 -+.long 10, 9, 7, 0, 11, 14, 1, 12, 6, 2, 15, 3, 13, 8, 5, 4 -+.long 4, 9, 8, 13, 14, 0, 10, 11, 7, 3, 12, 1, 5, 6, 15, 2 -+.long 2, 10, 4, 14, 13, 3, 9, 11, 6, 5, 7, 12, 15, 1, 8, 0 -+.long 4, 11, 14, 8, 13, 10, 12, 5, 2, 1, 15, 3, 9, 7, 0, 6 -+.long 6, 12, 0, 13, 15, 2, 1, 10, 4, 5, 11, 14, 8, 3, 9, 7 -+.long 14, 5, 4, 12, 9, 7, 3, 10, 2, 0, 6, 15, 11, 1, 13, 8 -+.long 11, 7, 13, 10, 12, 14, 0, 15, 4, 5, 6, 9, 2, 1, 8, 3 ++.byte 0, 2, 4, 6, 1, 3, 5, 7, 14, 8, 10, 12, 15, 9, 11, 13 ++.byte 14, 4, 9, 13, 10, 8, 15, 6, 5, 1, 0, 11, 3, 12, 2, 7 ++.byte 11, 12, 5, 15, 8, 0, 2, 13, 9, 10, 3, 7, 4, 14, 6, 1 ++.byte 7, 3, 13, 11, 9, 1, 12, 14, 15, 2, 5, 4, 8, 6, 10, 0 ++.byte 9, 5, 2, 10, 0, 7, 4, 15, 3, 14, 11, 6, 13, 1, 12, 8 ++.byte 2, 6, 0, 8, 12, 10, 11, 3, 1, 4, 7, 15, 9, 13, 5, 14 ++.byte 12, 1, 14, 4, 5, 15, 13, 10, 8, 0, 6, 9, 11, 7, 3, 2 ++.byte 13, 7, 12, 3, 11, 14, 1, 9, 2, 5, 15, 8, 10, 0, 4, 6 ++.byte 6, 14, 11, 0, 15, 9, 3, 8, 10, 12, 13, 1, 5, 2, 7, 4 ++.byte 10, 8, 7, 1, 2, 4, 6, 5, 13, 15, 9, 3, 0, 11, 14, 12 ++#ifdef CONFIG_AS_AVX512 ++.section .rodata.cst64.BLAKE2S_SIGMA2, "aM", @progbits, 640 ++.align 64 ++SIGMA2: ++.long 0, 2, 4, 6, 1, 3, 5, 7, 14, 8, 10, 12, 15, 9, 11, 13 ++.long 8, 2, 13, 15, 10, 9, 12, 3, 6, 4, 0, 14, 5, 11, 1, 7 ++.long 11, 13, 8, 6, 5, 10, 14, 3, 2, 4, 12, 15, 1, 0, 7, 9 ++.long 11, 10, 7, 0, 8, 15, 1, 13, 3, 6, 2, 12, 4, 14, 9, 5 ++.long 4, 10, 9, 14, 15, 0, 11, 8, 1, 7, 3, 13, 2, 5, 6, 12 ++.long 2, 11, 4, 15, 14, 3, 10, 8, 13, 6, 5, 7, 0, 12, 1, 9 ++.long 4, 8, 15, 9, 14, 11, 13, 5, 3, 2, 1, 12, 6, 10, 7, 0 ++.long 6, 13, 0, 14, 12, 2, 1, 11, 15, 4, 5, 8, 7, 9, 3, 10 ++.long 15, 5, 4, 13, 10, 7, 3, 11, 12, 2, 0, 6, 9, 8, 1, 14 ++.long 8, 7, 14, 11, 13, 15, 0, 12, 10, 4, 5, 6, 3, 2, 1, 9 +#endif /* CONFIG_AS_AVX512 */ + +.text -+#ifdef CONFIG_AS_AVX -+ENTRY(blake2s_compress_avx) -+ movl %ecx, %ecx -+ testq %rdx, %rdx ++#ifdef CONFIG_AS_SSSE3 ++ENTRY(blake2s_compress_ssse3) ++ testq %rdx,%rdx + je .Lendofloop -+ .align 32 ++ movdqu (%rdi),%xmm0 ++ movdqu 0x10(%rdi),%xmm1 ++ movdqa ROT16(%rip),%xmm12 ++ movdqa ROR328(%rip),%xmm13 ++ movdqu 0x20(%rdi),%xmm14 ++ movq %rcx,%xmm15 ++ leaq SIGMA+0xa0(%rip),%r8 ++ jmp .Lbeginofloop ++ .align 32 +.Lbeginofloop: -+ addq %rcx, 32(%rdi) -+ vmovdqu IV+16(%rip), %xmm1 -+ vmovdqu (%rsi), %xmm4 -+ vpxor 32(%rdi), %xmm1, %xmm1 -+ vmovdqu 16(%rsi), %xmm3 -+ vshufps $136, %xmm3, %xmm4, %xmm6 -+ vmovdqa ROT16(%rip), %xmm7 -+ vpaddd (%rdi), %xmm6, %xmm6 -+ vpaddd 16(%rdi), %xmm6, %xmm6 -+ vpxor %xmm6, %xmm1, %xmm1 -+ vmovdqu IV(%rip), %xmm8 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vmovdqu 48(%rsi), %xmm5 -+ vpaddd %xmm1, %xmm8, %xmm8 -+ vpxor 16(%rdi), %xmm8, %xmm9 -+ vmovdqu 32(%rsi), %xmm2 -+ vpblendw $12, %xmm3, %xmm5, %xmm13 -+ vshufps $221, %xmm5, %xmm2, %xmm12 -+ vpunpckhqdq %xmm2, %xmm4, %xmm14 -+ vpslld $20, %xmm9, %xmm0 -+ vpsrld $12, %xmm9, %xmm9 -+ vpxor %xmm0, %xmm9, %xmm0 -+ vshufps $221, %xmm3, %xmm4, %xmm9 -+ vpaddd %xmm9, %xmm6, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vmovdqa ROR328(%rip), %xmm6 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm8, %xmm8 -+ vpxor %xmm8, %xmm0, %xmm0 -+ vpshufd $147, %xmm1, %xmm1 -+ vpshufd $78, %xmm8, %xmm8 -+ vpslld $25, %xmm0, %xmm10 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm10, %xmm0, %xmm0 -+ vshufps $136, %xmm5, %xmm2, %xmm10 -+ vpshufd $57, %xmm0, %xmm0 -+ vpaddd %xmm10, %xmm9, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpaddd %xmm12, %xmm9, %xmm9 -+ vpblendw $12, %xmm2, %xmm3, %xmm12 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm8, %xmm8 -+ vpxor %xmm8, %xmm0, %xmm10 -+ vpslld $20, %xmm10, %xmm0 -+ vpsrld $12, %xmm10, %xmm10 -+ vpxor %xmm0, %xmm10, %xmm0 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm8, %xmm8 -+ vpxor %xmm8, %xmm0, %xmm0 -+ vpshufd $57, %xmm1, %xmm1 -+ vpshufd $78, %xmm8, %xmm8 -+ vpslld $25, %xmm0, %xmm10 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm10, %xmm0, %xmm0 -+ vpslldq $4, %xmm5, %xmm10 -+ vpblendw $240, %xmm10, %xmm12, %xmm12 -+ vpshufd $147, %xmm0, %xmm0 -+ vpshufd $147, %xmm12, %xmm12 -+ vpaddd %xmm9, %xmm12, %xmm12 -+ vpaddd %xmm0, %xmm12, %xmm12 -+ vpxor %xmm12, %xmm1, %xmm1 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm8, %xmm8 -+ vpxor %xmm8, %xmm0, %xmm11 -+ vpslld $20, %xmm11, %xmm9 -+ vpsrld $12, %xmm11, %xmm11 -+ vpxor %xmm9, %xmm11, %xmm0 -+ vpshufd $8, %xmm2, %xmm9 -+ vpblendw $192, %xmm5, %xmm3, %xmm11 -+ vpblendw $240, %xmm11, %xmm9, %xmm9 -+ vpshufd $177, %xmm9, %xmm9 -+ vpaddd %xmm12, %xmm9, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm11 -+ vpxor %xmm11, %xmm1, %xmm1 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm8, %xmm8 -+ vpxor %xmm8, %xmm0, %xmm9 -+ vpshufd $147, %xmm1, %xmm1 -+ vpshufd $78, %xmm8, %xmm8 -+ vpslld $25, %xmm9, %xmm0 -+ vpsrld $7, %xmm9, %xmm9 -+ vpxor %xmm0, %xmm9, %xmm0 -+ vpslldq $4, %xmm3, %xmm9 -+ vpblendw $48, %xmm9, %xmm2, %xmm9 -+ vpblendw $240, %xmm9, %xmm4, %xmm9 -+ vpshufd $57, %xmm0, %xmm0 -+ vpshufd $177, %xmm9, %xmm9 -+ vpaddd %xmm11, %xmm9, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm8, %xmm11 -+ vpxor %xmm11, %xmm0, %xmm0 -+ vpslld $20, %xmm0, %xmm8 -+ vpsrld $12, %xmm0, %xmm0 -+ vpxor %xmm8, %xmm0, %xmm0 -+ vpunpckhdq %xmm3, %xmm4, %xmm8 -+ vpblendw $12, %xmm10, %xmm8, %xmm12 -+ vpshufd $177, %xmm12, %xmm12 -+ vpaddd %xmm9, %xmm12, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm11, %xmm11 -+ vpxor %xmm11, %xmm0, %xmm0 -+ vpshufd $57, %xmm1, %xmm1 -+ vpshufd $78, %xmm11, %xmm11 -+ vpslld $25, %xmm0, %xmm12 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm12, %xmm0, %xmm0 -+ vpunpckhdq %xmm5, %xmm2, %xmm12 -+ vpshufd $147, %xmm0, %xmm0 -+ vpblendw $15, %xmm13, %xmm12, %xmm12 -+ vpslldq $8, %xmm5, %xmm13 -+ vpshufd $210, %xmm12, %xmm12 -+ vpaddd %xmm9, %xmm12, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm11, %xmm11 -+ vpxor %xmm11, %xmm0, %xmm0 -+ vpslld $20, %xmm0, %xmm12 -+ vpsrld $12, %xmm0, %xmm0 -+ vpxor %xmm12, %xmm0, %xmm0 -+ vpunpckldq %xmm4, %xmm2, %xmm12 -+ vpblendw $240, %xmm4, %xmm12, %xmm12 -+ vpblendw $192, %xmm13, %xmm12, %xmm12 -+ vpsrldq $12, %xmm3, %xmm13 -+ vpaddd %xmm12, %xmm9, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm11, %xmm11 -+ vpxor %xmm11, %xmm0, %xmm0 -+ vpshufd $147, %xmm1, %xmm1 -+ vpshufd $78, %xmm11, %xmm11 -+ vpslld $25, %xmm0, %xmm12 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm12, %xmm0, %xmm0 -+ vpblendw $60, %xmm2, %xmm4, %xmm12 -+ vpblendw $3, %xmm13, %xmm12, %xmm12 -+ vpshufd $57, %xmm0, %xmm0 -+ vpshufd $78, %xmm12, %xmm12 -+ vpaddd %xmm9, %xmm12, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm11, %xmm11 -+ vpxor %xmm11, %xmm0, %xmm12 -+ vpslld $20, %xmm12, %xmm13 -+ vpsrld $12, %xmm12, %xmm0 -+ vpblendw $51, %xmm3, %xmm4, %xmm12 -+ vpxor %xmm13, %xmm0, %xmm0 -+ vpblendw $192, %xmm10, %xmm12, %xmm10 -+ vpslldq $8, %xmm2, %xmm12 -+ vpshufd $27, %xmm10, %xmm10 -+ vpaddd %xmm9, %xmm10, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm11, %xmm11 -+ vpxor %xmm11, %xmm0, %xmm0 -+ vpshufd $57, %xmm1, %xmm1 -+ vpshufd $78, %xmm11, %xmm11 -+ vpslld $25, %xmm0, %xmm10 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm10, %xmm0, %xmm0 -+ vpunpckhdq %xmm2, %xmm8, %xmm10 -+ vpshufd $147, %xmm0, %xmm0 -+ vpblendw $12, %xmm5, %xmm10, %xmm10 -+ vpshufd $210, %xmm10, %xmm10 -+ vpaddd %xmm9, %xmm10, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm11, %xmm11 -+ vpxor %xmm11, %xmm0, %xmm10 -+ vpslld $20, %xmm10, %xmm0 -+ vpsrld $12, %xmm10, %xmm10 -+ vpxor %xmm0, %xmm10, %xmm0 -+ vpblendw $12, %xmm4, %xmm5, %xmm10 -+ vpblendw $192, %xmm12, %xmm10, %xmm10 -+ vpunpckldq %xmm2, %xmm4, %xmm12 -+ vpshufd $135, %xmm10, %xmm10 -+ vpaddd %xmm9, %xmm10, %xmm9 -+ vpaddd %xmm0, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm1, %xmm1 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm11, %xmm13 -+ vpxor %xmm13, %xmm0, %xmm0 -+ vpshufd $147, %xmm1, %xmm1 -+ vpshufd $78, %xmm13, %xmm13 -+ vpslld $25, %xmm0, %xmm10 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm10, %xmm0, %xmm0 -+ vpblendw $15, %xmm3, %xmm4, %xmm10 -+ vpblendw $192, %xmm5, %xmm10, %xmm10 -+ vpshufd $57, %xmm0, %xmm0 -+ vpshufd $198, %xmm10, %xmm10 -+ vpaddd %xmm9, %xmm10, %xmm10 -+ vpaddd %xmm0, %xmm10, %xmm10 -+ vpxor %xmm10, %xmm1, %xmm1 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm0, %xmm9 -+ vpslld $20, %xmm9, %xmm0 -+ vpsrld $12, %xmm9, %xmm9 -+ vpxor %xmm0, %xmm9, %xmm0 -+ vpunpckhdq %xmm2, %xmm3, %xmm9 -+ vpunpcklqdq %xmm12, %xmm9, %xmm15 -+ vpunpcklqdq %xmm12, %xmm8, %xmm12 -+ vpblendw $15, %xmm5, %xmm8, %xmm8 -+ vpaddd %xmm15, %xmm10, %xmm15 -+ vpaddd %xmm0, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm1, %xmm1 -+ vpshufd $141, %xmm8, %xmm8 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm0, %xmm0 -+ vpshufd $57, %xmm1, %xmm1 -+ vpshufd $78, %xmm13, %xmm13 -+ vpslld $25, %xmm0, %xmm10 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm10, %xmm0, %xmm0 -+ vpunpcklqdq %xmm2, %xmm3, %xmm10 -+ vpshufd $147, %xmm0, %xmm0 -+ vpblendw $51, %xmm14, %xmm10, %xmm14 -+ vpshufd $135, %xmm14, %xmm14 -+ vpaddd %xmm15, %xmm14, %xmm14 -+ vpaddd %xmm0, %xmm14, %xmm14 -+ vpxor %xmm14, %xmm1, %xmm1 -+ vpunpcklqdq %xmm3, %xmm4, %xmm15 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm0, %xmm0 -+ vpslld $20, %xmm0, %xmm11 -+ vpsrld $12, %xmm0, %xmm0 -+ vpxor %xmm11, %xmm0, %xmm0 -+ vpunpckhqdq %xmm5, %xmm3, %xmm11 -+ vpblendw $51, %xmm15, %xmm11, %xmm11 -+ vpunpckhqdq %xmm3, %xmm5, %xmm15 -+ vpaddd %xmm11, %xmm14, %xmm11 -+ vpaddd %xmm0, %xmm11, %xmm11 -+ vpxor %xmm11, %xmm1, %xmm1 -+ vpshufb %xmm6, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm0, %xmm0 -+ vpshufd $147, %xmm1, %xmm1 -+ vpshufd $78, %xmm13, %xmm13 -+ vpslld $25, %xmm0, %xmm14 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm14, %xmm0, %xmm14 -+ vpunpckhqdq %xmm4, %xmm2, %xmm0 -+ vpshufd $57, %xmm14, %xmm14 -+ vpblendw $51, %xmm15, %xmm0, %xmm15 -+ vpaddd %xmm15, %xmm11, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm1, %xmm1 -+ vpshufb %xmm7, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm14, %xmm14 -+ vpslld $20, %xmm14, %xmm11 -+ vpsrld $12, %xmm14, %xmm14 -+ vpxor %xmm11, %xmm14, %xmm14 -+ vpblendw $3, %xmm2, %xmm4, %xmm11 -+ vpslldq $8, %xmm11, %xmm0 -+ vpblendw $15, %xmm5, %xmm0, %xmm0 -+ vpshufd $99, %xmm0, %xmm0 -+ vpaddd %xmm15, %xmm0, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm1, %xmm0 -+ vpaddd %xmm12, %xmm15, %xmm15 -+ vpshufb %xmm6, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm14, %xmm14 -+ vpshufd $57, %xmm0, %xmm0 -+ vpshufd $78, %xmm13, %xmm13 -+ vpslld $25, %xmm14, %xmm1 -+ vpsrld $7, %xmm14, %xmm14 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpblendw $3, %xmm5, %xmm4, %xmm1 -+ vpshufd $147, %xmm14, %xmm14 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpshufb %xmm7, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm14, %xmm14 -+ vpslld $20, %xmm14, %xmm12 -+ vpsrld $12, %xmm14, %xmm14 -+ vpxor %xmm12, %xmm14, %xmm14 -+ vpsrldq $4, %xmm2, %xmm12 -+ vpblendw $60, %xmm12, %xmm1, %xmm1 -+ vpaddd %xmm1, %xmm15, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpblendw $12, %xmm4, %xmm3, %xmm1 -+ vpshufb %xmm6, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm13, %xmm13 -+ vpxor %xmm13, %xmm14, %xmm14 -+ vpshufd $147, %xmm0, %xmm0 -+ vpshufd $78, %xmm13, %xmm13 -+ vpslld $25, %xmm14, %xmm12 -+ vpsrld $7, %xmm14, %xmm14 -+ vpxor %xmm12, %xmm14, %xmm14 -+ vpsrldq $4, %xmm5, %xmm12 -+ vpblendw $48, %xmm12, %xmm1, %xmm1 -+ vpshufd $33, %xmm5, %xmm12 -+ vpshufd $57, %xmm14, %xmm14 -+ vpshufd $108, %xmm1, %xmm1 -+ vpblendw $51, %xmm12, %xmm10, %xmm12 -+ vpaddd %xmm15, %xmm1, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpaddd %xmm12, %xmm15, %xmm15 -+ vpshufb %xmm7, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm13, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpslld $20, %xmm14, %xmm13 -+ vpsrld $12, %xmm14, %xmm14 -+ vpxor %xmm13, %xmm14, %xmm14 -+ vpslldq $12, %xmm3, %xmm13 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpshufb %xmm6, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpshufd $57, %xmm0, %xmm0 -+ vpshufd $78, %xmm1, %xmm1 -+ vpslld $25, %xmm14, %xmm12 -+ vpsrld $7, %xmm14, %xmm14 -+ vpxor %xmm12, %xmm14, %xmm14 -+ vpblendw $51, %xmm5, %xmm4, %xmm12 -+ vpshufd $147, %xmm14, %xmm14 -+ vpblendw $192, %xmm13, %xmm12, %xmm12 -+ vpaddd %xmm12, %xmm15, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpsrldq $4, %xmm3, %xmm12 -+ vpshufb %xmm7, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpslld $20, %xmm14, %xmm13 -+ vpsrld $12, %xmm14, %xmm14 -+ vpxor %xmm13, %xmm14, %xmm14 -+ vpblendw $48, %xmm2, %xmm5, %xmm13 -+ vpblendw $3, %xmm12, %xmm13, %xmm13 -+ vpshufd $156, %xmm13, %xmm13 -+ vpaddd %xmm15, %xmm13, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpshufb %xmm6, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpshufd $147, %xmm0, %xmm0 -+ vpshufd $78, %xmm1, %xmm1 -+ vpslld $25, %xmm14, %xmm13 -+ vpsrld $7, %xmm14, %xmm14 -+ vpxor %xmm13, %xmm14, %xmm14 -+ vpunpcklqdq %xmm2, %xmm4, %xmm13 -+ vpshufd $57, %xmm14, %xmm14 -+ vpblendw $12, %xmm12, %xmm13, %xmm12 -+ vpshufd $180, %xmm12, %xmm12 -+ vpaddd %xmm15, %xmm12, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpshufb %xmm7, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpslld $20, %xmm14, %xmm12 -+ vpsrld $12, %xmm14, %xmm14 -+ vpxor %xmm12, %xmm14, %xmm14 -+ vpunpckhqdq %xmm9, %xmm4, %xmm12 -+ vpshufd $198, %xmm12, %xmm12 -+ vpaddd %xmm15, %xmm12, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpaddd %xmm15, %xmm8, %xmm15 -+ vpshufb %xmm6, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpshufd $57, %xmm0, %xmm0 -+ vpshufd $78, %xmm1, %xmm1 -+ vpslld $25, %xmm14, %xmm12 -+ vpsrld $7, %xmm14, %xmm14 -+ vpxor %xmm12, %xmm14, %xmm14 -+ vpsrldq $4, %xmm4, %xmm12 -+ vpshufd $147, %xmm14, %xmm14 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm15, %xmm0, %xmm0 -+ vpshufb %xmm7, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpslld $20, %xmm14, %xmm8 -+ vpsrld $12, %xmm14, %xmm14 -+ vpxor %xmm14, %xmm8, %xmm14 -+ vpblendw $48, %xmm5, %xmm2, %xmm8 -+ vpblendw $3, %xmm12, %xmm8, %xmm8 -+ vpunpckhqdq %xmm5, %xmm4, %xmm12 -+ vpshufd $75, %xmm8, %xmm8 -+ vpblendw $60, %xmm10, %xmm12, %xmm10 -+ vpaddd %xmm15, %xmm8, %xmm15 -+ vpaddd %xmm14, %xmm15, %xmm15 -+ vpxor %xmm0, %xmm15, %xmm0 -+ vpshufd $45, %xmm10, %xmm10 -+ vpshufb %xmm6, %xmm0, %xmm0 -+ vpaddd %xmm15, %xmm10, %xmm15 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm14, %xmm14 -+ vpshufd $147, %xmm0, %xmm0 -+ vpshufd $78, %xmm1, %xmm1 -+ vpslld $25, %xmm14, %xmm8 -+ vpsrld $7, %xmm14, %xmm14 -+ vpxor %xmm14, %xmm8, %xmm8 -+ vpshufd $57, %xmm8, %xmm8 -+ vpaddd %xmm8, %xmm15, %xmm15 -+ vpxor %xmm0, %xmm15, %xmm0 -+ vpshufb %xmm7, %xmm0, %xmm0 -+ vpaddd %xmm0, %xmm1, %xmm1 -+ vpxor %xmm8, %xmm1, %xmm8 -+ vpslld $20, %xmm8, %xmm10 -+ vpsrld $12, %xmm8, %xmm8 -+ vpxor %xmm8, %xmm10, %xmm10 -+ vpunpckldq %xmm3, %xmm4, %xmm8 -+ vpunpcklqdq %xmm9, %xmm8, %xmm9 -+ vpaddd %xmm9, %xmm15, %xmm9 -+ vpaddd %xmm10, %xmm9, %xmm9 -+ vpxor %xmm0, %xmm9, %xmm8 -+ vpshufb %xmm6, %xmm8, %xmm8 -+ vpaddd %xmm8, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm10, %xmm10 -+ vpshufd $57, %xmm8, %xmm8 -+ vpshufd $78, %xmm1, %xmm1 -+ vpslld $25, %xmm10, %xmm12 -+ vpsrld $7, %xmm10, %xmm10 -+ vpxor %xmm10, %xmm12, %xmm10 -+ vpblendw $48, %xmm4, %xmm3, %xmm12 -+ vpshufd $147, %xmm10, %xmm0 -+ vpunpckhdq %xmm5, %xmm3, %xmm10 -+ vpshufd $78, %xmm12, %xmm12 -+ vpunpcklqdq %xmm4, %xmm10, %xmm10 -+ vpblendw $192, %xmm2, %xmm10, %xmm10 -+ vpshufhw $78, %xmm10, %xmm10 -+ vpaddd %xmm10, %xmm9, %xmm10 -+ vpaddd %xmm0, %xmm10, %xmm10 -+ vpxor %xmm8, %xmm10, %xmm8 -+ vpshufb %xmm7, %xmm8, %xmm8 -+ vpaddd %xmm8, %xmm1, %xmm1 -+ vpxor %xmm0, %xmm1, %xmm9 -+ vpslld $20, %xmm9, %xmm0 -+ vpsrld $12, %xmm9, %xmm9 -+ vpxor %xmm9, %xmm0, %xmm0 -+ vpunpckhdq %xmm5, %xmm4, %xmm9 -+ vpblendw $240, %xmm9, %xmm2, %xmm13 -+ vpshufd $39, %xmm13, %xmm13 -+ vpaddd %xmm10, %xmm13, %xmm10 -+ vpaddd %xmm0, %xmm10, %xmm10 -+ vpxor %xmm8, %xmm10, %xmm8 -+ vpblendw $12, %xmm4, %xmm2, %xmm13 -+ vpshufb %xmm6, %xmm8, %xmm8 -+ vpslldq $4, %xmm13, %xmm13 -+ vpblendw $15, %xmm5, %xmm13, %xmm13 -+ vpaddd %xmm8, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm0, %xmm0 -+ vpaddd %xmm13, %xmm10, %xmm13 -+ vpshufd $147, %xmm8, %xmm8 -+ vpshufd $78, %xmm1, %xmm1 -+ vpslld $25, %xmm0, %xmm14 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm0, %xmm14, %xmm14 -+ vpshufd $57, %xmm14, %xmm14 -+ vpaddd %xmm14, %xmm13, %xmm13 -+ vpxor %xmm8, %xmm13, %xmm8 -+ vpaddd %xmm13, %xmm12, %xmm12 -+ vpshufb %xmm7, %xmm8, %xmm8 -+ vpaddd %xmm8, %xmm1, %xmm1 -+ vpxor %xmm14, %xmm1, %xmm14 -+ vpslld $20, %xmm14, %xmm10 -+ vpsrld $12, %xmm14, %xmm14 -+ vpxor %xmm14, %xmm10, %xmm10 -+ vpaddd %xmm10, %xmm12, %xmm12 -+ vpxor %xmm8, %xmm12, %xmm8 -+ vpshufb %xmm6, %xmm8, %xmm8 -+ vpaddd %xmm8, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm10, %xmm0 -+ vpshufd $57, %xmm8, %xmm8 -+ vpshufd $78, %xmm1, %xmm1 -+ vpslld $25, %xmm0, %xmm10 -+ vpsrld $7, %xmm0, %xmm0 -+ vpxor %xmm0, %xmm10, %xmm10 -+ vpblendw $48, %xmm2, %xmm3, %xmm0 -+ vpblendw $15, %xmm11, %xmm0, %xmm0 -+ vpshufd $147, %xmm10, %xmm10 -+ vpshufd $114, %xmm0, %xmm0 -+ vpaddd %xmm12, %xmm0, %xmm0 -+ vpaddd %xmm10, %xmm0, %xmm0 -+ vpxor %xmm8, %xmm0, %xmm8 -+ vpshufb %xmm7, %xmm8, %xmm8 -+ vpaddd %xmm8, %xmm1, %xmm1 -+ vpxor %xmm10, %xmm1, %xmm10 -+ vpslld $20, %xmm10, %xmm11 -+ vpsrld $12, %xmm10, %xmm10 -+ vpxor %xmm10, %xmm11, %xmm10 -+ vpslldq $4, %xmm4, %xmm11 -+ vpblendw $192, %xmm11, %xmm3, %xmm3 -+ vpunpckldq %xmm5, %xmm4, %xmm4 -+ vpshufd $99, %xmm3, %xmm3 -+ vpaddd %xmm0, %xmm3, %xmm3 -+ vpaddd %xmm10, %xmm3, %xmm3 -+ vpxor %xmm8, %xmm3, %xmm11 -+ vpunpckldq %xmm5, %xmm2, %xmm0 -+ vpblendw $192, %xmm2, %xmm5, %xmm2 -+ vpshufb %xmm6, %xmm11, %xmm11 -+ vpunpckhqdq %xmm0, %xmm9, %xmm0 -+ vpblendw $15, %xmm4, %xmm2, %xmm4 -+ vpaddd %xmm11, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm10, %xmm10 -+ vpshufd $147, %xmm11, %xmm11 -+ vpshufd $201, %xmm0, %xmm0 -+ vpslld $25, %xmm10, %xmm8 -+ vpsrld $7, %xmm10, %xmm10 -+ vpxor %xmm10, %xmm8, %xmm10 -+ vpshufd $78, %xmm1, %xmm1 -+ vpaddd %xmm3, %xmm0, %xmm0 -+ vpshufd $27, %xmm4, %xmm4 -+ vpshufd $57, %xmm10, %xmm10 -+ vpaddd %xmm10, %xmm0, %xmm0 -+ vpxor %xmm11, %xmm0, %xmm11 -+ vpaddd %xmm0, %xmm4, %xmm0 -+ vpshufb %xmm7, %xmm11, %xmm7 -+ vpaddd %xmm7, %xmm1, %xmm1 -+ vpxor %xmm10, %xmm1, %xmm10 -+ vpslld $20, %xmm10, %xmm8 -+ vpsrld $12, %xmm10, %xmm10 -+ vpxor %xmm10, %xmm8, %xmm8 -+ vpaddd %xmm8, %xmm0, %xmm0 -+ vpxor %xmm7, %xmm0, %xmm7 -+ vpshufb %xmm6, %xmm7, %xmm6 -+ vpaddd %xmm6, %xmm1, %xmm1 -+ vpxor %xmm1, %xmm8, %xmm8 -+ vpshufd $78, %xmm1, %xmm1 -+ vpshufd $57, %xmm6, %xmm6 -+ vpslld $25, %xmm8, %xmm2 -+ vpsrld $7, %xmm8, %xmm8 -+ vpxor %xmm8, %xmm2, %xmm8 -+ vpxor (%rdi), %xmm1, %xmm1 -+ vpshufd $147, %xmm8, %xmm8 -+ vpxor %xmm0, %xmm1, %xmm0 -+ vmovups %xmm0, (%rdi) -+ vpxor 16(%rdi), %xmm8, %xmm0 -+ vpxor %xmm6, %xmm0, %xmm6 -+ vmovups %xmm6, 16(%rdi) -+ addq $64, %rsi ++ movdqa %xmm0,%xmm10 ++ movdqa %xmm1,%xmm11 ++ paddq %xmm15,%xmm14 ++ movdqa IV(%rip),%xmm2 ++ movdqa %xmm14,%xmm3 ++ pxor IV+0x10(%rip),%xmm3 ++ leaq SIGMA(%rip),%rcx ++.Lroundloop: ++ movzbl (%rcx),%eax ++ movd (%rsi,%rax,4),%xmm4 ++ movzbl 0x1(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm5 ++ movzbl 0x2(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm6 ++ movzbl 0x3(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm7 ++ punpckldq %xmm5,%xmm4 ++ punpckldq %xmm7,%xmm6 ++ punpcklqdq %xmm6,%xmm4 ++ paddd %xmm4,%xmm0 ++ paddd %xmm1,%xmm0 ++ pxor %xmm0,%xmm3 ++ pshufb %xmm12,%xmm3 ++ paddd %xmm3,%xmm2 ++ pxor %xmm2,%xmm1 ++ movdqa %xmm1,%xmm8 ++ psrld $0xc,%xmm1 ++ pslld $0x14,%xmm8 ++ por %xmm8,%xmm1 ++ movzbl 0x4(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm5 ++ movzbl 0x5(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm6 ++ movzbl 0x6(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm7 ++ movzbl 0x7(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm4 ++ punpckldq %xmm6,%xmm5 ++ punpckldq %xmm4,%xmm7 ++ punpcklqdq %xmm7,%xmm5 ++ paddd %xmm5,%xmm0 ++ paddd %xmm1,%xmm0 ++ pxor %xmm0,%xmm3 ++ pshufb %xmm13,%xmm3 ++ paddd %xmm3,%xmm2 ++ pxor %xmm2,%xmm1 ++ movdqa %xmm1,%xmm8 ++ psrld $0x7,%xmm1 ++ pslld $0x19,%xmm8 ++ por %xmm8,%xmm1 ++ pshufd $0x93,%xmm0,%xmm0 ++ pshufd $0x4e,%xmm3,%xmm3 ++ pshufd $0x39,%xmm2,%xmm2 ++ movzbl 0x8(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm6 ++ movzbl 0x9(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm7 ++ movzbl 0xa(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm4 ++ movzbl 0xb(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm5 ++ punpckldq %xmm7,%xmm6 ++ punpckldq %xmm5,%xmm4 ++ punpcklqdq %xmm4,%xmm6 ++ paddd %xmm6,%xmm0 ++ paddd %xmm1,%xmm0 ++ pxor %xmm0,%xmm3 ++ pshufb %xmm12,%xmm3 ++ paddd %xmm3,%xmm2 ++ pxor %xmm2,%xmm1 ++ movdqa %xmm1,%xmm8 ++ psrld $0xc,%xmm1 ++ pslld $0x14,%xmm8 ++ por %xmm8,%xmm1 ++ movzbl 0xc(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm7 ++ movzbl 0xd(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm4 ++ movzbl 0xe(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm5 ++ movzbl 0xf(%rcx),%eax ++ movd (%rsi,%rax,4),%xmm6 ++ punpckldq %xmm4,%xmm7 ++ punpckldq %xmm6,%xmm5 ++ punpcklqdq %xmm5,%xmm7 ++ paddd %xmm7,%xmm0 ++ paddd %xmm1,%xmm0 ++ pxor %xmm0,%xmm3 ++ pshufb %xmm13,%xmm3 ++ paddd %xmm3,%xmm2 ++ pxor %xmm2,%xmm1 ++ movdqa %xmm1,%xmm8 ++ psrld $0x7,%xmm1 ++ pslld $0x19,%xmm8 ++ por %xmm8,%xmm1 ++ pshufd $0x39,%xmm0,%xmm0 ++ pshufd $0x4e,%xmm3,%xmm3 ++ pshufd $0x93,%xmm2,%xmm2 ++ addq $0x10,%rcx ++ cmpq %r8,%rcx ++ jnz .Lroundloop ++ pxor %xmm2,%xmm0 ++ pxor %xmm3,%xmm1 ++ pxor %xmm10,%xmm0 ++ pxor %xmm11,%xmm1 ++ addq $0x40,%rsi + decq %rdx -+ jnz .Lbeginofloop ++ jnz .Lbeginofloop ++ movdqu %xmm0,(%rdi) ++ movdqu %xmm1,0x10(%rdi) ++ movdqu %xmm14,0x20(%rdi) +.Lendofloop: + ret -+ENDPROC(blake2s_compress_avx) -+#endif /* CONFIG_AS_AVX */ ++ENDPROC(blake2s_compress_ssse3) ++#endif /* CONFIG_AS_SSSE3 */ + +#ifdef CONFIG_AS_AVX512 +ENTRY(blake2s_compress_avx512) @@ -34528,7 +34242,7 @@ + vmovdqu (%rsi),%ymm6 + vmovdqu 0x20(%rsi),%ymm7 + addq $0x40,%rsi -+ leaq SIGMA(%rip),%rax ++ leaq SIGMA2(%rip),%rax + movb $0xa,%cl +.Lblake2s_compress_avx512_roundloop: + addq $0x40,%rax @@ -34553,9 +34267,9 @@ + vpaddd %xmm3,%xmm2,%xmm2 + vpxor %xmm2,%xmm1,%xmm1 + vprord $0x7,%xmm1,%xmm1 -+ vpshufd $0x39,%xmm1,%xmm1 -+ vpshufd $0x4e,%xmm2,%xmm2 -+ vpshufd $0x93,%xmm3,%xmm3 ++ vpshufd $0x93,%xmm0,%xmm0 ++ vpshufd $0x4e,%xmm3,%xmm3 ++ vpshufd $0x39,%xmm2,%xmm2 + vpaddd %xmm9,%xmm0,%xmm0 + vpaddd %xmm1,%xmm0,%xmm0 + vpxor %xmm0,%xmm3,%xmm3 @@ -34571,9 +34285,9 @@ + vpaddd %xmm3,%xmm2,%xmm2 + vpxor %xmm2,%xmm1,%xmm1 + vprord $0x7,%xmm1,%xmm1 -+ vpshufd $0x93,%xmm1,%xmm1 -+ vpshufd $0x4e,%xmm2,%xmm2 -+ vpshufd $0x39,%xmm3,%xmm3 ++ vpshufd $0x39,%xmm0,%xmm0 ++ vpshufd $0x4e,%xmm3,%xmm3 ++ vpshufd $0x93,%xmm2,%xmm2 + decb %cl + jne .Lblake2s_compress_avx512_roundloop + vpxor %xmm10,%xmm0,%xmm0 @@ -34589,8 +34303,8 @@ + retq +ENDPROC(blake2s_compress_avx512) +#endif /* CONFIG_AS_AVX512 */ ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-mips.S 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-mips.S 2019-08-20 20:26:42.396341425 +0000 @@ -0,0 +1,424 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -35016,8 +34730,8 @@ + FOR_EACH_WORD(JMPTBL_UNALIGNED) +.end chacha20_mips +.set at ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-unrolled-arm.S 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-unrolled-arm.S 2019-08-20 20:26:42.397341426 +0000 @@ -0,0 +1,461 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* @@ -35480,8 +35194,8 @@ + + pop {r4-r11,pc} +ENDPROC(hchacha20_arm) ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/curve25519/curve25519-arm.S 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/curve25519/curve25519-arm.S 2019-08-20 20:26:42.398341426 +0000 @@ -0,0 +1,2064 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -37547,8 +37261,8 @@ + pop {r4-r11, pc} +ENDPROC(curve25519_neon) +#endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-mips.S 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-mips.S 2019-08-20 20:26:42.401341426 +0000 @@ -0,0 +1,407 @@ +/* SPDX-License-Identifier: GPL-2.0 OR MIT */ +/* @@ -37957,8 +37671,8 @@ + /* Jump Back */ + jr $ra +.end poly1305_init_mips ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-arm.pl 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-arm.pl 2019-08-20 20:26:42.396341425 +0000 @@ -0,0 +1,1227 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause @@ -38648,9 +38362,9 @@ + "&vshr_u32 ($b,$t,25)", + "&vsli_32 ($b,$t,7)", + -+ "&vext_8 ($c,$c,$c,8)", -+ "&vext_8 ($b,$b,$b,$odd?12:4)", -+ "&vext_8 ($d,$d,$d,$odd?4:12)" ++ "&vext_8 ($a,$a,$a,$odd?4:12)", ++ "&vext_8 ($d,$d,$d,8)", ++ "&vext_8 ($c,$c,$c,$odd?12:4)" + ); +} + @@ -39187,8 +38901,8 @@ + print $_,"\n"; +} +close STDOUT; ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-arm64.pl 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-arm64.pl 2019-08-20 20:26:42.396341425 +0000 @@ -0,0 +1,1163 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause @@ -39570,9 +39284,9 @@ + "&ushr ('$b','$t',25)", + "&sli ('$b','$t',7)", + -+ "&ext ('$c','$c','$c',8)", -+ "&ext ('$d','$d','$d',$odd?4:12)", -+ "&ext ('$b','$b','$b',$odd?12:4)" ++ "&ext ('$a','$a','$a',$odd?4:12)", ++ "&ext ('$d','$d','$d',8)", ++ "&ext ('$c','$c','$c',$odd?12:4)" + ); +} + @@ -40353,13 +40067,13 @@ + print $_,"\n"; +} +close STDOUT; # flush ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/chacha20/chacha20-x86_64.pl 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/chacha20/chacha20-x86_64.pl 2019-08-20 20:26:42.397341426 +0000 @@ -0,0 +1,4106 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +# -+# Copyright (C) 2017-2018 Samuel Neves . All Rights Reserved. ++# Copyright (C) 2017-2019 Samuel Neves . All Rights Reserved. +# Copyright (C) 2017-2019 Jason A. Donenfeld . All Rights Reserved. +# Copyright (C) 2006-2017 CRYPTOGAMS by . All Rights Reserved. +# @@ -40883,15 +40597,15 @@ +1: +___ + &SSSE3ROUND(); -+ &pshufd ($c,$c,0b01001110); -+ &pshufd ($b,$b,0b00111001); -+ &pshufd ($d,$d,0b10010011); ++ &pshufd ($a,$a,0b10010011); ++ &pshufd ($d,$d,0b01001110); ++ &pshufd ($c,$c,0b00111001); + &nop (); + + &SSSE3ROUND(); -+ &pshufd ($c,$c,0b01001110); -+ &pshufd ($b,$b,0b10010011); -+ &pshufd ($d,$d,0b00111001); ++ &pshufd ($a,$a,0b00111001); ++ &pshufd ($d,$d,0b01001110); ++ &pshufd ($c,$c,0b10010011); + + &dec ($counter); + &jnz ("1b"); @@ -40958,15 +40672,15 @@ +.Loop_ssse3: +___ + &SSSE3ROUND(); -+ &pshufd ($c,$c,0b01001110); -+ &pshufd ($b,$b,0b00111001); -+ &pshufd ($d,$d,0b10010011); ++ &pshufd ($a,$a,0b10010011); ++ &pshufd ($d,$d,0b01001110); ++ &pshufd ($c,$c,0b00111001); + &nop (); + + &SSSE3ROUND(); -+ &pshufd ($c,$c,0b01001110); -+ &pshufd ($b,$b,0b10010011); -+ &pshufd ($d,$d,0b00111001); ++ &pshufd ($a,$a,0b00111001); ++ &pshufd ($d,$d,0b01001110); ++ &pshufd ($c,$c,0b10010011); + + &dec ($counter); + &jnz (".Loop_ssse3"); @@ -41128,20 +40842,20 @@ +.Loop_128: +___ + &SSSE3ROUND_2x(); -+ &pshufd ($c,$c,0b01001110); -+ &pshufd ($b,$b,0b00111001); -+ &pshufd ($d,$d,0b10010011); -+ &pshufd ($c1,$c1,0b01001110); -+ &pshufd ($b1,$b1,0b00111001); -+ &pshufd ($d1,$d1,0b10010011); ++ &pshufd ($a,$a,0b10010011); ++ &pshufd ($d,$d,0b01001110); ++ &pshufd ($c,$c,0b00111001); ++ &pshufd ($a1,$a1,0b10010011); ++ &pshufd ($d1,$d1,0b01001110); ++ &pshufd ($c1,$c1,0b00111001); + + &SSSE3ROUND_2x(); -+ &pshufd ($c,$c,0b01001110); -+ &pshufd ($b,$b,0b10010011); -+ &pshufd ($d,$d,0b00111001); -+ &pshufd ($c1,$c1,0b01001110); -+ &pshufd ($b1,$b1,0b10010011); -+ &pshufd ($d1,$d1,0b00111001); ++ &pshufd ($a,$a,0b00111001); ++ &pshufd ($d,$d,0b01001110); ++ &pshufd ($c,$c,0b10010011); ++ &pshufd ($a1,$a1,0b00111001); ++ &pshufd ($d1,$d1,0b01001110); ++ &pshufd ($c1,$c1,0b10010011); + + &dec ($counter); + &jnz (".Loop_128"); @@ -44462,8 +44176,8 @@ +} + +close STDOUT; ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-arm.pl 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-arm.pl 2019-08-20 20:26:42.400341426 +0000 @@ -0,0 +1,1276 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause @@ -45741,8 +45455,8 @@ + print $_,"\n"; +} +close STDOUT; # enforce flush ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-arm64.pl 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-arm64.pl 2019-08-20 20:26:42.400341426 +0000 @@ -0,0 +1,974 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause @@ -46718,8 +46432,8 @@ + print $_,"\n"; +} +close STDOUT; ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-mips64.pl 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-mips64.pl 2019-08-20 20:26:42.401341426 +0000 @@ -0,0 +1,467 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause @@ -47188,8 +46902,8 @@ +print $code; +close STDOUT; + ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/zinc/poly1305/poly1305-x86_64.pl 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/zinc/poly1305/poly1305-x86_64.pl 2019-08-20 20:26:42.402341426 +0000 @@ -0,0 +1,4266 @@ +#!/usr/bin/env perl +# SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause @@ -51457,9 +51171,9 @@ + print $_,"\n"; +} +close STDOUT; ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/compat/Makefile.include 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,78 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/compat/Makefile.include 2019-08-20 20:26:42.392341425 +0000 +@@ -0,0 +1,94 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright (C) 2015-2019 Jason A. Donenfeld . All Rights Reserved. @@ -51470,37 +51184,37 @@ +asflags-y += -include $(kbuild-dir)/compat/compat-asm.h + +ifeq ($(wildcard $(srctree)/include/linux/ptr_ring.h),) -+ccflags-y += -I$(src)/compat/ptr_ring/include ++ccflags-y += -I$(kbuild-dir)/compat/ptr_ring/include +endif + +ifeq ($(wildcard $(srctree)/include/linux/siphash.h),) -+ccflags-y += -I$(src)/compat/siphash/include ++ccflags-y += -I$(kbuild-dir)/compat/siphash/include +wireguard-y += compat/siphash/siphash.o +endif + +ifeq ($(wildcard $(srctree)/include/net/dst_cache.h),) -+ccflags-y += -I$(src)/compat/dst_cache/include ++ccflags-y += -I$(kbuild-dir)/compat/dst_cache/include +wireguard-y += compat/dst_cache/dst_cache.o +endif + +ifeq ($(wildcard $(srctree)/arch/x86/include/asm/intel-family.h)$(CONFIG_X86),y) -+ccflags-y += -I$(src)/compat/intel-family-x86/include ++ccflags-y += -I$(kbuild-dir)/compat/intel-family-x86/include +endif + +ifeq ($(wildcard $(srctree)/arch/x86/include/asm/fpu/api.h)$(CONFIG_X86),y) -+ccflags-y += -I$(src)/compat/fpu-x86/include ++ccflags-y += -I$(kbuild-dir)/compat/fpu-x86/include +endif + +ifeq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/simd.h)$(shell grep -s -F "generic-y += simd.h" "$(srctree)/arch/$(SRCARCH)/Makefile" "$(srctree)/arch/$(SRCARCH)/Makefile"),) -+ccflags-y += -I$(src)/compat/simd-asm/include ++ccflags-y += -I$(kbuild-dir)/compat/simd-asm/include +endif + +ifeq ($(wildcard $(srctree)/include/linux/simd.h),) -+ccflags-y += -I$(src)/compat/simd/include ++ccflags-y += -I$(kbuild-dir)/compat/simd/include +endif + +ifeq ($(wildcard $(srctree)/include/net/udp_tunnel.h),) -+ccflags-y += -I$(src)/compat/udp_tunnel/include ++ccflags-y += -I$(kbuild-dir)/compat/udp_tunnel/include +wireguard-y += compat/udp_tunnel/udp_tunnel.o +endif + @@ -51509,11 +51223,17 @@ +wireguard-y += compat/memneq/memneq.o +endif + ++ifdef CONFIG_HZ ++ifeq ($(wildcard $(srctree)/include/generated/timeconst.h),) ++ccflags-y += $(shell echo 'define gcd(a,b){auto t;while(b){t=b;b=a%b;a=t;};return a;};hz=$(CONFIG_HZ);cd=gcd(hz,1000000);print "-DHZ_TO_USEC_NUM=",1000000/cd," -DHZ_TO_USEC_DEN=",hz/cd;halt;' | bc -q) ++endif ++endif ++ +ifeq ($(wildcard $(srctree)/arch/arm/include/asm/neon.h)$(CONFIG_ARM),y) -+ccflags-y += -I$(src)/compat/neon-arm/include ++ccflags-y += -I$(kbuild-dir)/compat/neon-arm/include +endif +ifeq ($(wildcard $(srctree)/arch/arm64/include/asm/neon.h)$(CONFIG_ARM64),y) -+ccflags-y += -I$(src)/compat/neon-arm/include ++ccflags-y += -I$(kbuild-dir)/compat/neon-arm/include +endif + +ifeq ($(CONFIG_X86_64),y) @@ -51537,9 +51257,19 @@ + ccflags-y += $(avx512_instr) + asflags-y += $(avx512_instr) + endif ++ ifeq ($(bmi2_instr),) ++ bmi2_instr :=$(call as-instr,mulx %rax$(comma)%rax$(comma)%rax,-DCONFIG_AS_BMI2=1) ++ ccflags-y += $(bmi2_instr) ++ asflags-y += $(bmi2_instr) ++ endif ++ ifeq ($(adx_instr),) ++ adx_instr :=$(call as-instr,adcx %rax$(comma)%rax,-DCONFIG_AS_ADX=1) ++ ccflags-y += $(adx_instr) ++ asflags-y += $(adx_instr) ++ endif +endif ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/crypto/Makefile.include 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/crypto/Makefile.include 2019-08-20 20:26:42.395341425 +0000 @@ -0,0 +1,57 @@ +ifeq ($(CONFIG_X86_64)$(if $(CONFIG_UML),y,n),yn) +CONFIG_ZINC_ARCH_X86_64 := y @@ -51591,15 +51321,15 @@ +.SECONDARY: + +wireguard-y += $(addprefix crypto/zinc/,$(zinc-y)) -+ccflags-y += -I$(src)/crypto/include ++ccflags-y += -I$(kbuild-dir)/crypto/include +ccflags-$(CONFIG_ZINC_ARCH_X86_64) += -DCONFIG_ZINC_ARCH_X86_64 +ccflags-$(CONFIG_ZINC_ARCH_ARM) += -DCONFIG_ZINC_ARCH_ARM +ccflags-$(CONFIG_ZINC_ARCH_ARM64) += -DCONFIG_ZINC_ARCH_ARM64 +ccflags-$(CONFIG_ZINC_ARCH_MIPS) += -DCONFIG_ZINC_ARCH_MIPS +ccflags-$(CONFIG_ZINC_ARCH_MIPS64) += -DCONFIG_ZINC_ARCH_MIPS64 +ccflags-$(CONFIG_WIREGUARD_DEBUG) += -DCONFIG_ZINC_SELFTEST ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/Makefile 2019-04-06 07:11:56.000000000 -0400 +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/Makefile 2019-08-20 20:26:42.392341425 +0000 @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: GPL-2.0 +# @@ -51615,16 +51345,18 @@ +include $(src)/compat/Makefile.include + +obj-$(if $(KBUILD_EXTMOD),m,$(CONFIG_WIREGUARD)) := wireguard.o ---- /dev/null 2019-04-27 11:28:49.949709478 -0400 -+++ b/net/wireguard/Kconfig 2019-04-06 07:11:56.000000000 -0400 -@@ -0,0 +1,32 @@ +--- /dev/null 2019-08-08 06:40:53.862527576 +0000 ++++ b/net/wireguard/Kconfig 2019-08-20 20:26:42.392341425 +0000 +@@ -0,0 +1,34 @@ +config WIREGUARD + tristate "IP: WireGuard secure network tunnel" + depends on NET && INET + depends on IPV6 || !IPV6 + select NET_UDP_TUNNEL + select DST_CACHE ++ select CRYPTO + select CRYPTO_BLKCIPHER ++ select XOR_BLOCKS + select VFP + select VFPv3 if CPU_V7 + select NEON if CPU_V7 diff --git a/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig b/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig index d71af7e..5907a84 100644 --- a/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig +++ b/meta-citadel/recipes-kernel/citadel-kernel/files/defconfig @@ -1,15 +1,16 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 5.0.6 Kernel Configuration +# Linux/x86 5.2.9 Kernel Configuration # # -# Compiler: gcc (Debian 8.3.0-6) 8.3.0 +# Compiler: gcc (Debian 9.2.1-1) 9.2.1 20190813 # CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=80300 +CONFIG_GCC_VERSION=90201 CONFIG_CLANG_VERSION=0 CONFIG_CC_HAS_ASM_GOTO=y +CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y CONFIG_IRQ_WORK=y CONFIG_BUILDTIME_EXTABLE_SORT=y CONFIG_THREAD_INFO_IN_TASK=y @@ -63,6 +64,8 @@ CONFIG_GENERIC_IRQ_RESERVATION_MODE=y CONFIG_IRQ_FORCED_THREADING=y CONFIG_SPARSE_IRQ=y # CONFIG_GENERIC_IRQ_DEBUGFS is not set +# end of IRQ subsystem + CONFIG_CLOCKSOURCE_WATCHDOG=y CONFIG_ARCH_CLOCKSOURCE_DATA=y CONFIG_ARCH_CLOCKSOURCE_INIT=y @@ -81,8 +84,12 @@ CONFIG_NO_HZ_COMMON=y # CONFIG_HZ_PERIODIC is not set # CONFIG_NO_HZ_IDLE is not set CONFIG_NO_HZ_FULL=y +CONFIG_CONTEXT_TRACKING=y +# CONFIG_CONTEXT_TRACKING_FORCE is not set CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y +# end of Timers subsystem + # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set CONFIG_PREEMPT=y @@ -102,6 +109,8 @@ CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y CONFIG_TASK_IO_ACCOUNTING=y # CONFIG_PSI is not set +# end of CPU/Task time and stats accounting + CONFIG_CPU_ISOLATION=y # @@ -114,16 +123,16 @@ CONFIG_TREE_SRCU=y CONFIG_TASKS_RCU=y CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_NEED_SEGCBLIST=y -CONFIG_CONTEXT_TRACKING=y -# CONFIG_CONTEXT_TRACKING_FORCE is not set CONFIG_RCU_FANOUT=32 CONFIG_RCU_FANOUT_LEAF=16 CONFIG_RCU_FAST_NO_HZ=y # CONFIG_RCU_BOOST is not set CONFIG_RCU_NOCB_CPU=y -CONFIG_BUILD_BIN2C=y +# end of RCU Subsystem + CONFIG_IKCONFIG=y CONFIG_IKCONFIG_PROC=y +# CONFIG_IKHEADERS is not set CONFIG_LOG_BUF_SHIFT=18 CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13 @@ -176,7 +185,6 @@ CONFIG_RD_LZ4=y CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set CONFIG_SYSCTL=y -CONFIG_ANON_INODES=y CONFIG_SYSCTL_EXCEPTION_TRACE=y CONFIG_HAVE_PCSPKR_PLATFORM=y CONFIG_BPF=y @@ -201,6 +209,7 @@ CONFIG_TIMERFD=y CONFIG_EVENTFD=y CONFIG_SHMEM=y CONFIG_AIO=y +# CONFIG_IO_URING is not set CONFIG_ADVISE_SYSCALLS=y CONFIG_MEMBARRIER=y CONFIG_KALLSYMS=y @@ -221,6 +230,8 @@ CONFIG_HAVE_PERF_EVENTS=y # CONFIG_PERF_EVENTS=y # CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# end of Kernel Performance Events And Counters + CONFIG_VM_EVENT_COUNTERS=y CONFIG_SLUB_DEBUG=y # CONFIG_SLUB_MEMCG_SYSFS_ON is not set @@ -231,10 +242,13 @@ CONFIG_SLUB=y CONFIG_SLAB_MERGE_DEFAULT=y CONFIG_SLAB_FREELIST_RANDOM=y CONFIG_SLAB_FREELIST_HARDENED=y +CONFIG_SHUFFLE_PAGE_ALLOCATOR=y CONFIG_SLUB_CPU_PARTIAL=y CONFIG_SYSTEM_DATA_VERIFICATION=y CONFIG_PROFILING=y CONFIG_TRACEPOINTS=y +# end of General setup + CONFIG_64BIT=y CONFIG_X86_64=y CONFIG_X86=y @@ -251,9 +265,7 @@ CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 CONFIG_GENERIC_ISA_DMA=y CONFIG_GENERIC_BUG=y CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y -CONFIG_GENERIC_HWEIGHT=y CONFIG_ARCH_MAY_HAVE_PC_FDC=y -CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_ARCH_HAS_CPU_RELAX=y CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y @@ -267,7 +279,6 @@ CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ZONE_DMA32=y CONFIG_AUDIT_ARCH=y -CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y CONFIG_HAVE_INTEL_TXT=y CONFIG_X86_64_SMP=y @@ -356,6 +367,8 @@ CONFIG_PERF_EVENTS_INTEL_UNCORE=y CONFIG_PERF_EVENTS_INTEL_RAPL=y CONFIG_PERF_EVENTS_INTEL_CSTATE=y CONFIG_PERF_EVENTS_AMD_POWER=m +# end of Performance monitoring + # CONFIG_X86_VSYSCALL_EMULATION is not set # CONFIG_I8K is not set CONFIG_MICROCODE=y @@ -423,6 +436,8 @@ CONFIG_LEGACY_VSYSCALL_NONE=y # CONFIG_CMDLINE_BOOL is not set # CONFIG_MODIFY_LDT_SYSCALL is not set CONFIG_HAVE_LIVEPATCH=y +# end of Processor type and features + CONFIG_ARCH_HAS_ADD_PAGES=y CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y CONFIG_USE_PERCPU_NUMA_NODE_ID=y @@ -495,6 +510,7 @@ CONFIG_ACPI_HED=y # CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set CONFIG_ACPI_NFIT=m # CONFIG_NFIT_SECURITY_DEBUG is not set +# CONFIG_ACPI_HMAT is not set CONFIG_HAVE_ACPI_APEI=y CONFIG_HAVE_ACPI_APEI_NMI=y CONFIG_ACPI_APEI=y @@ -542,6 +558,7 @@ CONFIG_X86_AMD_FREQ_SENSITIVITY=m # # shared options # +# end of CPU Frequency scaling # # CPU Idle @@ -549,7 +566,11 @@ CONFIG_X86_AMD_FREQ_SENSITIVITY=m CONFIG_CPU_IDLE=y CONFIG_CPU_IDLE_GOV_LADDER=y CONFIG_CPU_IDLE_GOV_MENU=y +# CONFIG_CPU_IDLE_GOV_TEO is not set +# end of CPU Idle + CONFIG_INTEL_IDLE=y +# end of Power management and ACPI options # # Bus options (PCI etc.) @@ -562,13 +583,15 @@ CONFIG_MMCONF_FAM10H=y CONFIG_ISA_DMA_API=y CONFIG_AMD_NB=y # CONFIG_X86_SYSFB is not set +# end of Bus options (PCI etc.) # # Binary Emulations # # CONFIG_IA32_EMULATION is not set # CONFIG_X86_X32 is not set -CONFIG_X86_DEV_DMA_OPS=y +# end of Binary Emulations + CONFIG_HAVE_GENERIC_GUP=y # @@ -579,7 +602,7 @@ CONFIG_FIRMWARE_MEMMAP=y CONFIG_DMIID=y CONFIG_DMI_SYSFS=y CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y -# CONFIG_ISCSI_IBFT_FIND is not set +# CONFIG_ISCSI_IBFT is not set CONFIG_FW_CFG_SYSFS=m # CONFIG_FW_CFG_SYSFS_CMDLINE is not set # CONFIG_GOOGLE_FIRMWARE is not set @@ -598,12 +621,18 @@ CONFIG_EFI_CAPSULE_LOADER=y # CONFIG_EFI_TEST is not set # CONFIG_APPLE_PROPERTIES is not set # CONFIG_RESET_ATTACK_MITIGATION is not set +# end of EFI (Extensible Firmware Interface) Support + CONFIG_UEFI_CPER=y CONFIG_UEFI_CPER_X86=y +CONFIG_EFI_EARLYCON=y # # Tegra firmware driver # +# end of Tegra firmware driver +# end of Firmware Drivers + CONFIG_HAVE_KVM=y CONFIG_HAVE_KVM_IRQCHIP=y CONFIG_HAVE_KVM_IRQFD=y @@ -654,6 +683,7 @@ CONFIG_HAVE_DMA_CONTIGUOUS=y CONFIG_GENERIC_SMP_IDLE_THREAD=y CONFIG_ARCH_HAS_FORTIFY_SOURCE=y CONFIG_ARCH_HAS_SET_MEMORY=y +CONFIG_ARCH_HAS_SET_DIRECT_MAP=y CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT=y CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y @@ -670,7 +700,6 @@ CONFIG_HAVE_PERF_USER_STACK_DUMP=y CONFIG_HAVE_ARCH_JUMP_LABEL=y CONFIG_HAVE_ARCH_JUMP_LABEL_RELATIVE=y CONFIG_HAVE_RCU_TABLE_FREE=y -CONFIG_HAVE_RCU_TABLE_INVALIDATE=y CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG=y CONFIG_HAVE_ALIGNED_STRUCT_PAGE=y CONFIG_HAVE_CMPXCHG_LOCAL=y @@ -701,6 +730,7 @@ CONFIG_ARCH_MMAP_RND_BITS=28 CONFIG_HAVE_COPY_THREAD_TLS=y CONFIG_HAVE_STACK_VALIDATION=y CONFIG_HAVE_RELIABLE_STACKTRACE=y +CONFIG_64BIT_TIME=y CONFIG_HAVE_ARCH_VMAP_STACK=y CONFIG_VMAP_STACK=y CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y @@ -710,14 +740,20 @@ CONFIG_STRICT_MODULE_RWX=y CONFIG_ARCH_HAS_REFCOUNT=y # CONFIG_REFCOUNT_FULL is not set CONFIG_HAVE_ARCH_PREL32_RELOCATIONS=y +CONFIG_ARCH_USE_MEMREMAP_PROT=y +# CONFIG_LOCK_EVENT_COUNTS is not set # # GCOV-based kernel profiling # # CONFIG_GCOV_KERNEL is not set CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y +# end of GCOV-based kernel profiling + CONFIG_PLUGIN_HOSTCC="" CONFIG_HAVE_GCC_PLUGINS=y +# end of General architecture-dependent options + CONFIG_RT_MUTEXES=y CONFIG_BASE_SMALL=0 CONFIG_MODULES=y @@ -764,6 +800,8 @@ CONFIG_MSDOS_PARTITION=y CONFIG_EFI_PARTITION=y # CONFIG_SYSV68_PARTITION is not set # CONFIG_CMDLINE_PARTITION is not set +# end of Partition Types + CONFIG_BLK_MQ_PCI=y CONFIG_BLK_MQ_VIRTIO=y CONFIG_BLK_PM=y @@ -774,6 +812,8 @@ CONFIG_BLK_PM=y CONFIG_MQ_IOSCHED_DEADLINE=y CONFIG_MQ_IOSCHED_KYBER=y # CONFIG_IOSCHED_BFQ is not set +# end of IO Schedulers + CONFIG_PREEMPT_NOTIFIERS=y CONFIG_PADATA=y CONFIG_ASN1=y @@ -799,6 +839,7 @@ CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y CONFIG_BINFMT_SCRIPT=y # CONFIG_BINFMT_MISC is not set CONFIG_COREDUMP=y +# end of Executable file formats # # Memory Management options @@ -812,7 +853,6 @@ CONFIG_SPARSEMEM_EXTREME=y CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y CONFIG_SPARSEMEM_VMEMMAP=y CONFIG_HAVE_MEMBLOCK_NODE_MAP=y -CONFIG_ARCH_DISCARD_MEMBLOCK=y # CONFIG_MEMORY_HOTPLUG is not set CONFIG_SPLIT_PTLOCK_CPUS=4 CONFIG_MEMORY_BALLOON=y @@ -847,10 +887,13 @@ CONFIG_GENERIC_EARLY_IOREMAP=y # CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set # CONFIG_IDLE_PAGE_TRACKING is not set CONFIG_ARCH_HAS_ZONE_DEVICE=y +CONFIG_ARCH_HAS_HMM_MIRROR=y CONFIG_FRAME_VECTOR=y # CONFIG_PERCPU_STATS is not set # CONFIG_GUP_BENCHMARK is not set CONFIG_ARCH_HAS_PTE_SPECIAL=y +# end of Memory Management options + CONFIG_NET=y CONFIG_NET_INGRESS=y CONFIG_SKB_EXTENSIONS=y @@ -861,14 +904,10 @@ CONFIG_SKB_EXTENSIONS=y CONFIG_PACKET=y CONFIG_PACKET_DIAG=y CONFIG_UNIX=y +CONFIG_UNIX_SCM=y CONFIG_UNIX_DIAG=y # CONFIG_TLS is not set -CONFIG_XFRM=y # CONFIG_XFRM_USER is not set -# CONFIG_XFRM_INTERFACE is not set -# CONFIG_XFRM_SUB_POLICY is not set -# CONFIG_XFRM_MIGRATE is not set -# CONFIG_XFRM_STATISTICS is not set # CONFIG_NET_KEY is not set # CONFIG_XDP_SOCKETS is not set CONFIG_INET=y @@ -885,6 +924,7 @@ CONFIG_IP_ROUTE_VERBOSE=y # CONFIG_NET_IPGRE_DEMUX is not set CONFIG_NET_IP_TUNNEL=y CONFIG_SYN_COOKIES=y +# CONFIG_NET_IPVTI is not set CONFIG_NET_UDP_TUNNEL=y # CONFIG_NET_FOU is not set # CONFIG_NET_FOU_IP_TUNNELS is not set @@ -892,9 +932,6 @@ CONFIG_NET_UDP_TUNNEL=y # CONFIG_INET_ESP is not set # CONFIG_INET_IPCOMP is not set CONFIG_INET_TUNNEL=y -# CONFIG_INET_XFRM_MODE_TRANSPORT is not set -# CONFIG_INET_XFRM_MODE_TUNNEL is not set -# CONFIG_INET_XFRM_MODE_BEET is not set CONFIG_INET_DIAG=y CONFIG_INET_TCP_DIAG=y CONFIG_INET_UDP_DIAG=y @@ -912,10 +949,6 @@ CONFIG_IPV6=y # CONFIG_INET6_IPCOMP is not set # CONFIG_IPV6_MIP6 is not set # CONFIG_IPV6_ILA is not set -CONFIG_INET6_XFRM_MODE_TRANSPORT=y -CONFIG_INET6_XFRM_MODE_TUNNEL=y -CONFIG_INET6_XFRM_MODE_BEET=y -# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set # CONFIG_IPV6_VTI is not set CONFIG_IPV6_SIT=y # CONFIG_IPV6_SIT_6RD is not set @@ -972,8 +1005,8 @@ CONFIG_NF_CT_NETLINK_TIMEOUT=y CONFIG_NF_CT_NETLINK_HELPER=y CONFIG_NETFILTER_NETLINK_GLUE_CT=y CONFIG_NF_NAT=y -CONFIG_NF_NAT_NEEDED=y CONFIG_NF_NAT_REDIRECT=y +CONFIG_NF_NAT_MASQUERADE=y CONFIG_NETFILTER_SYNPROXY=y CONFIG_NF_TABLES=y # CONFIG_NF_TABLES_SET is not set @@ -995,7 +1028,6 @@ CONFIG_NFT_QUOTA=y CONFIG_NFT_REJECT=y # CONFIG_NFT_COMPAT is not set # CONFIG_NFT_HASH is not set -# CONFIG_NFT_XFRM is not set # CONFIG_NFT_SOCKET is not set # CONFIG_NFT_OSF is not set # CONFIG_NFT_TPROXY is not set @@ -1030,6 +1062,7 @@ CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set # CONFIG_NETFILTER_XT_TARGET_RATEEST is not set CONFIG_NETFILTER_XT_TARGET_REDIRECT=y +CONFIG_NETFILTER_XT_TARGET_MASQUERADE=y # CONFIG_NETFILTER_XT_TARGET_TEE is not set # CONFIG_NETFILTER_XT_TARGET_TPROXY is not set # CONFIG_NETFILTER_XT_TARGET_TRACE is not set @@ -1070,7 +1103,6 @@ CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y # CONFIG_NETFILTER_XT_MATCH_NFACCT is not set # CONFIG_NETFILTER_XT_MATCH_OSF is not set CONFIG_NETFILTER_XT_MATCH_OWNER=y -# CONFIG_NETFILTER_XT_MATCH_POLICY is not set # CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set # CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set @@ -1085,6 +1117,8 @@ CONFIG_NETFILTER_XT_MATCH_SOCKET=y # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set # CONFIG_NETFILTER_XT_MATCH_TIME is not set # CONFIG_NETFILTER_XT_MATCH_U32 is not set +# end of Core Netfilter Configuration + # CONFIG_IP_SET is not set # CONFIG_IP_VS is not set @@ -1095,7 +1129,6 @@ CONFIG_NF_DEFRAG_IPV4=y CONFIG_NF_SOCKET_IPV4=y # CONFIG_NF_TPROXY_IPV4 is not set CONFIG_NF_TABLES_IPV4=y -CONFIG_NFT_CHAIN_ROUTE_IPV4=y CONFIG_NFT_REJECT_IPV4=y CONFIG_NFT_DUP_IPV4=y # CONFIG_NFT_FIB_IPV4 is not set @@ -1104,11 +1137,6 @@ CONFIG_NF_DUP_IPV4=y # CONFIG_NF_LOG_ARP is not set CONFIG_NF_LOG_IPV4=y CONFIG_NF_REJECT_IPV4=y -CONFIG_NF_NAT_IPV4=y -CONFIG_NF_NAT_MASQUERADE_IPV4=y -CONFIG_NFT_CHAIN_NAT_IPV4=y -CONFIG_NFT_MASQ_IPV4=y -CONFIG_NFT_REDIR_IPV4=y CONFIG_IP_NF_IPTABLES=y # CONFIG_IP_NF_MATCH_AH is not set # CONFIG_IP_NF_MATCH_ECN is not set @@ -1128,6 +1156,7 @@ CONFIG_IP_NF_MANGLE=y CONFIG_IP_NF_RAW=y CONFIG_IP_NF_SECURITY=y # CONFIG_IP_NF_ARPTABLES is not set +# end of IP: Netfilter Configuration # # IPv6: Netfilter Configuration @@ -1138,8 +1167,9 @@ CONFIG_IP_NF_SECURITY=y # CONFIG_NF_DUP_IPV6 is not set # CONFIG_NF_REJECT_IPV6 is not set # CONFIG_NF_LOG_IPV6 is not set -# CONFIG_NF_NAT_IPV6 is not set # CONFIG_IP6_NF_IPTABLES is not set +# end of IPv6: Netfilter Configuration + CONFIG_NF_DEFRAG_IPV6=y CONFIG_NF_TABLES_BRIDGE=y CONFIG_NF_LOG_BRIDGE=y @@ -1217,6 +1247,9 @@ CONFIG_NET_FLOW_LIMIT=y # # CONFIG_NET_PKTGEN is not set # CONFIG_NET_DROP_MONITOR is not set +# end of Network testing +# end of Networking options + # CONFIG_HAMRADIO is not set # CONFIG_CAN is not set CONFIG_BT=m @@ -1249,6 +1282,9 @@ CONFIG_BT_HCIBTUSB_RTL=y # CONFIG_BT_HCIVHCI is not set # CONFIG_BT_MRVL is not set # CONFIG_BT_ATH3K is not set +CONFIG_BT_MTKSDIO=m +# end of Bluetooth device drivers + # CONFIG_AF_RXRPC is not set # CONFIG_AF_KCM is not set CONFIG_FIB_RULES=y @@ -1298,8 +1334,7 @@ CONFIG_NET_9P_VIRTIO=m # CONFIG_LWTUNNEL is not set CONFIG_DST_CACHE=y CONFIG_GRO_CELLS=y -# CONFIG_NET_DEVLINK is not set -CONFIG_MAY_USE_DEVLINK=y +CONFIG_NET_DEVLINK=y CONFIG_PAGE_POOL=y CONFIG_FAILOVER=y CONFIG_HAVE_EBPF_JIT=y @@ -1323,6 +1358,7 @@ CONFIG_PCIEASPM_POWERSAVE=y # CONFIG_PCIEASPM_PERFORMANCE is not set CONFIG_PCIE_PME=y # CONFIG_PCIE_PTM is not set +# CONFIG_PCIE_BW is not set CONFIG_PCI_MSI=y CONFIG_PCI_MSI_IRQ_DOMAIN=y CONFIG_PCI_QUIRKS=y @@ -1349,6 +1385,8 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m # # Cadence PCIe controllers support # +# end of Cadence PCIe controllers support + # CONFIG_VMD is not set # @@ -1356,16 +1394,21 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m # # CONFIG_PCIE_DW_PLAT_HOST is not set # CONFIG_PCI_MESON is not set +# end of DesignWare PCI Core Support +# end of PCI controller drivers # # PCI Endpoint # # CONFIG_PCI_ENDPOINT is not set +# end of PCI Endpoint # # PCI switch controller drivers # # CONFIG_PCI_SW_SWITCHTEC is not set +# end of PCI switch controller drivers + # CONFIG_PCCARD is not set # CONFIG_RAPIDIO is not set @@ -1384,6 +1427,8 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y CONFIG_FW_LOADER=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_FW_LOADER_USER_HELPER is not set +# end of Firmware loader + CONFIG_WANT_DEV_COREDUMP=y CONFIG_ALLOW_DEV_COREDUMP=y CONFIG_DEV_COREDUMP=y @@ -1399,10 +1444,13 @@ CONFIG_REGMAP_SPI=y CONFIG_REGMAP_IRQ=y CONFIG_DMA_SHARED_BUFFER=y # CONFIG_DMA_FENCE_TRACE is not set +# end of Generic Driver Options # # Bus devices # +# end of Bus devices + CONFIG_CONNECTOR=y CONFIG_PROC_EVENTS=y # CONFIG_GNSS is not set @@ -1449,6 +1497,7 @@ CONFIG_BLK_DEV_NVME=y # CONFIG_NVME_FC is not set # CONFIG_NVME_TCP is not set # CONFIG_NVME_TARGET is not set +# end of NVME Support # # Misc devices @@ -1489,6 +1538,8 @@ CONFIG_EEPROM_93CX6=m # CONFIG_EEPROM_93XX46 is not set # CONFIG_EEPROM_IDT_89HPESX is not set # CONFIG_EEPROM_EE1004 is not set +# end of EEPROM support + CONFIG_CB710_CORE=m # CONFIG_CB710_DEBUG is not set CONFIG_CB710_DEBUG_ASSUMPTIONS=y @@ -1497,11 +1548,14 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y # Texas Instruments shared transport line discipline # # CONFIG_TI_ST is not set +# end of Texas Instruments shared transport line discipline + # CONFIG_SENSORS_LIS3_I2C is not set # CONFIG_ALTERA_STAPL is not set -# CONFIG_INTEL_MEI is not set -# CONFIG_INTEL_MEI_ME is not set +CONFIG_INTEL_MEI=m +CONFIG_INTEL_MEI_ME=m # CONFIG_INTEL_MEI_TXE is not set +CONFIG_INTEL_MEI_HDCP=m # CONFIG_VMWARE_VMCI is not set # @@ -1542,11 +1596,16 @@ CONFIG_CB710_DEBUG_ASSUMPTIONS=y # # VOP Driver # +# end of Intel MIC & related support + # CONFIG_GENWQE is not set # CONFIG_ECHO is not set # CONFIG_MISC_ALCOR_PCI is not set # CONFIG_MISC_RTSX_PCI is not set # CONFIG_MISC_RTSX_USB is not set +# CONFIG_HABANA_AI is not set +# end of Misc devices + CONFIG_HAVE_IDE=y # CONFIG_IDE is not set @@ -1583,6 +1642,8 @@ CONFIG_SCSI_SAS_LIBSAS=m # CONFIG_SCSI_SAS_ATA is not set CONFIG_SCSI_SAS_HOST_SMP=y CONFIG_SCSI_SRP_ATTRS=m +# end of SCSI Transports + CONFIG_SCSI_LOWLEVEL=y # CONFIG_ISCSI_TCP is not set CONFIG_ISCSI_BOOT_SYSFS=m @@ -1639,7 +1700,8 @@ CONFIG_SCSI_MPT3SAS_MAX_SGE=128 # CONFIG_SCSI_PM8001 is not set CONFIG_SCSI_VIRTIO=y # CONFIG_SCSI_DH is not set -# CONFIG_SCSI_OSD_INITIATOR is not set +# end of SCSI device support + CONFIG_ATA=y # CONFIG_ATA_VERBOSE_ERROR is not set CONFIG_ATA_ACPI=y @@ -1757,6 +1819,8 @@ CONFIG_DM_THIN_PROVISIONING=y # CONFIG_DM_ZERO is not set # CONFIG_DM_MULTIPATH is not set # CONFIG_DM_DELAY is not set +# CONFIG_DM_DUST is not set +# CONFIG_DM_INIT is not set CONFIG_DM_UEVENT=y # CONFIG_DM_FLAKEY is not set CONFIG_DM_VERITY=y @@ -1775,6 +1839,8 @@ CONFIG_FIREWIRE_OHCI=m CONFIG_FIREWIRE_SBP2=m CONFIG_FIREWIRE_NET=m CONFIG_FIREWIRE_NOSY=m +# end of IEEE 1394 (FireWire) support + # CONFIG_MACINTOSH_DRIVERS is not set CONFIG_NETDEVICES=y CONFIG_MII=m @@ -1806,6 +1872,8 @@ CONFIG_VIRTIO_NET=y # # Distributed Switch Architecture drivers # +# end of Distributed Switch Architecture drivers + CONFIG_ETHERNET=y CONFIG_MDIO=m # CONFIG_NET_VENDOR_3COM is not set @@ -1956,6 +2024,8 @@ CONFIG_NET_VENDOR_SOCIONEXT=y # CONFIG_NET_VENDOR_TI is not set # CONFIG_NET_VENDOR_VIA is not set # CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_NET_VENDOR_XILINX=y +# CONFIG_XILINX_LL_TEMAC is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set # CONFIG_NET_SB1000 is not set @@ -1974,7 +2044,7 @@ CONFIG_SWPHY=y # # CONFIG_AMD_PHY is not set # CONFIG_AQUANTIA_PHY is not set -# CONFIG_ASIX_PHY is not set +# CONFIG_AX88796B_PHY is not set # CONFIG_AT803X_PHY is not set CONFIG_BCM7XXX_PHY=m CONFIG_BCM87XX_PHY=m @@ -2152,6 +2222,8 @@ CONFIG_IWLWIFI_PCIE_RTPM=y # # CONFIG_IWLWIFI_DEBUG is not set CONFIG_IWLWIFI_DEVICE_TRACING=y +# end of Debugging Options + # CONFIG_WLAN_VENDOR_INTERSIL is not set # CONFIG_WLAN_VENDOR_MARVELL is not set # CONFIG_WLAN_VENDOR_MEDIATEK is not set @@ -2204,6 +2276,7 @@ CONFIG_INPUT_KEYBOARD=y # CONFIG_KEYBOARD_ADP5588 is not set # CONFIG_KEYBOARD_ADP5589 is not set CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_QT1050 is not set # CONFIG_KEYBOARD_QT1070 is not set # CONFIG_KEYBOARD_QT2160 is not set # CONFIG_KEYBOARD_DLINK_DIR685 is not set @@ -2342,15 +2415,18 @@ CONFIG_TOUCHSCREEN_SURFACE3_SPI=m # CONFIG_TOUCHSCREEN_ZET6223 is not set CONFIG_TOUCHSCREEN_ZFORCE=m # CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +# CONFIG_TOUCHSCREEN_IQS5XX is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_AD714X is not set # CONFIG_INPUT_BMA150 is not set # CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_MSM_VIBRATOR is not set # CONFIG_INPUT_MMA8450 is not set # CONFIG_INPUT_APANEL is not set # CONFIG_INPUT_GP2A is not set # CONFIG_INPUT_GPIO_BEEPER is not set # CONFIG_INPUT_GPIO_DECODER is not set +# CONFIG_INPUT_GPIO_VIBRA is not set # CONFIG_INPUT_ATLAS_BTNS is not set # CONFIG_INPUT_ATI_REMOTE2 is not set # CONFIG_INPUT_KEYSPAN_REMOTE is not set @@ -2398,10 +2474,11 @@ CONFIG_SERIO_RAW=m # CONFIG_SERIO_ALTERA_PS2 is not set # CONFIG_SERIO_PS2MULT is not set # CONFIG_SERIO_ARC_PS2 is not set -# CONFIG_SERIO_OLPC_APSP is not set # CONFIG_SERIO_GPIO_PS2 is not set # CONFIG_USERIO is not set # CONFIG_GAMEPORT is not set +# end of Hardware I/O ports +# end of Input device support # # Character devices @@ -2419,6 +2496,8 @@ CONFIG_UNIX98_PTYS=y # CONFIG_NOZOMI is not set # CONFIG_N_GSM is not set # CONFIG_TRACE_SINK is not set +# CONFIG_NULL_TTY is not set +CONFIG_LDISC_AUTOLOAD=y # CONFIG_DEVMEM is not set # CONFIG_DEVKMEM is not set @@ -2460,12 +2539,15 @@ CONFIG_SERIAL_CORE_CONSOLE=y # CONFIG_SERIAL_ARC is not set # CONFIG_SERIAL_RP2 is not set # CONFIG_SERIAL_FSL_LPUART is not set +# end of Serial drivers + # CONFIG_SERIAL_DEV_BUS is not set # CONFIG_TTY_PRINTK is not set CONFIG_HVC_DRIVER=y CONFIG_VIRTIO_CONSOLE=y CONFIG_IPMI_HANDLER=m CONFIG_IPMI_DMI_DECODE=y +CONFIG_IPMI_PLAT_DATA=y # CONFIG_IPMI_PANIC_EVENT is not set CONFIG_IPMI_DEVICE_INTERFACE=m CONFIG_IPMI_SI=m @@ -2479,7 +2561,6 @@ CONFIG_HW_RANDOM_INTEL=m CONFIG_HW_RANDOM_VIA=m CONFIG_HW_RANDOM_VIRTIO=y CONFIG_NVRAM=y -# CONFIG_R3964 is not set # CONFIG_APPLICOM is not set # CONFIG_MWAVE is not set # CONFIG_RAW_DRIVER is not set @@ -2505,6 +2586,8 @@ CONFIG_TCG_VTPM_PROXY=m # CONFIG_TELCLOCK is not set CONFIG_DEVPORT=y # CONFIG_XILLYBUS is not set +# end of Character devices + # CONFIG_RANDOM_TRUST_CPU is not set # @@ -2526,6 +2609,8 @@ CONFIG_I2C_MUX_PCA9541=m CONFIG_I2C_MUX_PCA954x=m CONFIG_I2C_MUX_REG=m # CONFIG_I2C_MUX_MLXCPLD is not set +# end of Multiplexer I2C Chip support + CONFIG_I2C_HELPER_AUTO=y CONFIG_I2C_SMBUS=m CONFIG_I2C_ALGOBIT=y @@ -2543,6 +2628,7 @@ CONFIG_I2C_ALGOBIT=y CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m +CONFIG_I2C_AMD_MP2=m CONFIG_I2C_I801=m CONFIG_I2C_ISCH=m CONFIG_I2C_ISMT=m @@ -2589,12 +2675,16 @@ CONFIG_I2C_DESIGNWARE_BAYTRAIL=y # Other I2C/SMBus bus drivers # # CONFIG_I2C_MLXCPLD is not set +# end of I2C Hardware Bus support + CONFIG_I2C_STUB=m CONFIG_I2C_SLAVE=y CONFIG_I2C_SLAVE_EEPROM=m # CONFIG_I2C_DEBUG_CORE is not set # CONFIG_I2C_DEBUG_ALGO is not set # CONFIG_I2C_DEBUG_BUS is not set +# end of I2C support + # CONFIG_I3C is not set CONFIG_SPI=y # CONFIG_SPI_DEBUG is not set @@ -2612,12 +2702,14 @@ CONFIG_SPI_DESIGNWARE=m CONFIG_SPI_DW_PCI=m CONFIG_SPI_DW_MID_DMA=y CONFIG_SPI_DW_MMIO=m +# CONFIG_SPI_NXP_FLEXSPI is not set # CONFIG_SPI_GPIO is not set # CONFIG_SPI_OC_TINY is not set CONFIG_SPI_PXA2XX=m CONFIG_SPI_PXA2XX_PCI=m # CONFIG_SPI_ROCKCHIP is not set CONFIG_SPI_SC18IS602=m +CONFIG_SPI_SIFIVE=m # CONFIG_SPI_MXIC is not set # CONFIG_SPI_XCOMM is not set # CONFIG_SPI_XILINX is not set @@ -2655,6 +2747,8 @@ CONFIG_PTP_1588_CLOCK=m # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. # CONFIG_PTP_1588_CLOCK_KVM=m +# end of PTP clock support + CONFIG_PINCTRL=y CONFIG_PINMUX=y CONFIG_PINCONF=y @@ -2691,8 +2785,9 @@ CONFIG_GPIOLIB_IRQCHIP=y CONFIG_GPIO_ICH=m CONFIG_GPIO_LYNXPOINT=m # CONFIG_GPIO_MB86S7X is not set -# CONFIG_GPIO_MOCKUP is not set # CONFIG_GPIO_VX855 is not set +CONFIG_GPIO_AMD_FCH=m +# end of Memory mapped GPIO drivers # # Port-mapped I/O GPIO drivers @@ -2703,6 +2798,7 @@ CONFIG_GPIO_LYNXPOINT=m # CONFIG_GPIO_SCH311X is not set # CONFIG_GPIO_WINBOND is not set # CONFIG_GPIO_WS16C48 is not set +# end of Port-mapped I/O GPIO drivers # # I2C GPIO expanders @@ -2713,11 +2809,13 @@ CONFIG_GPIO_LYNXPOINT=m # CONFIG_GPIO_PCA953X is not set # CONFIG_GPIO_PCF857X is not set # CONFIG_GPIO_TPIC2810 is not set +# end of I2C GPIO expanders # # MFD GPIO expanders # # CONFIG_GPIO_CRYSTAL_COVE is not set +# end of MFD GPIO expanders # # PCI GPIO expanders @@ -2728,6 +2826,7 @@ CONFIG_GPIO_LYNXPOINT=m # CONFIG_GPIO_PCI_IDIO_16 is not set # CONFIG_GPIO_PCIE_IDIO_24 is not set # CONFIG_GPIO_RDC321X is not set +# end of PCI GPIO expanders # # SPI GPIO expanders @@ -2737,10 +2836,14 @@ CONFIG_GPIO_LYNXPOINT=m # CONFIG_GPIO_MC33880 is not set # CONFIG_GPIO_PISOSR is not set # CONFIG_GPIO_XRA1403 is not set +# end of SPI GPIO expanders # # USB GPIO expanders # +# end of USB GPIO expanders + +# CONFIG_GPIO_MOCKUP is not set # CONFIG_W1 is not set # CONFIG_POWER_AVS is not set # CONFIG_POWER_RESET is not set @@ -2762,7 +2865,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_CHARGER_MAX8903 is not set # CONFIG_CHARGER_LP8727 is not set # CONFIG_CHARGER_GPIO is not set -# CONFIG_CHARGER_LTC3651 is not set +CONFIG_CHARGER_LT3651=m # CONFIG_CHARGER_BQ2415X is not set # CONFIG_CHARGER_BQ24190 is not set # CONFIG_CHARGER_BQ24257 is not set @@ -2871,7 +2974,6 @@ CONFIG_SENSORS_CORETEMP=m # CONFIG_SENSORS_NCT7802 is not set # CONFIG_SENSORS_NCT7904 is not set # CONFIG_SENSORS_NPCM7XX is not set -# CONFIG_SENSORS_OCC_P8_I2C is not set # CONFIG_SENSORS_PCF8591 is not set # CONFIG_PMBUS is not set # CONFIG_SENSORS_SHT15 is not set @@ -2956,7 +3058,11 @@ CONFIG_INTEL_SOC_DTS_THERMAL=m CONFIG_INT340X_THERMAL=m CONFIG_ACPI_THERMAL_REL=m CONFIG_INT3406_THERMAL=m +# end of ACPI INT340X thermal drivers + CONFIG_INTEL_PCH_THERMAL=m +# end of Intel thermal drivers + # CONFIG_GENERIC_ADC_THERMAL is not set # CONFIG_WATCHDOG is not set CONFIG_SSB_POSSIBLE=y @@ -3065,6 +3171,7 @@ CONFIG_MFD_INTEL_LPSS_PCI=y # CONFIG_TWL6040_CORE is not set # CONFIG_MFD_WL1273_CORE is not set # CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TQMX86 is not set # CONFIG_MFD_VX855 is not set # CONFIG_MFD_ARIZONA_I2C is not set # CONFIG_MFD_ARIZONA_SPI is not set @@ -3073,6 +3180,8 @@ CONFIG_MFD_INTEL_LPSS_PCI=y # CONFIG_MFD_WM831X_SPI is not set # CONFIG_MFD_WM8350_I2C is not set # CONFIG_MFD_WM8994 is not set +# end of Multifunction device drivers + # CONFIG_REGULATOR is not set # CONFIG_RC_CORE is not set CONFIG_MEDIA_SUPPORT=m @@ -3127,7 +3236,6 @@ CONFIG_V4L_PLATFORM_DRIVERS=y # CONFIG_VIDEO_CAFE_CCIC is not set # CONFIG_VIDEO_CADENCE is not set # CONFIG_VIDEO_ASPEED is not set -# CONFIG_SOC_CAMERA is not set CONFIG_V4L_MEM2MEM_DRIVERS=y # CONFIG_VIDEO_MEM2MEM_DEINTERLACE is not set # CONFIG_VIDEO_SH_VEU is not set @@ -3160,13 +3268,6 @@ CONFIG_MEDIA_SUBDRV_AUTOSELECT=y # # Video decoders # -CONFIG_VIDEO_BT819=m -CONFIG_VIDEO_BT856=m -CONFIG_VIDEO_BT866=m -CONFIG_VIDEO_KS0127=m -CONFIG_VIDEO_SAA7110=m -CONFIG_VIDEO_SAA711X=m -CONFIG_VIDEO_VPX3220=m # # Video and audio decoders @@ -3175,14 +3276,15 @@ CONFIG_VIDEO_VPX3220=m # # Video encoders # -CONFIG_VIDEO_SAA7185=m -CONFIG_VIDEO_ADV7170=m -CONFIG_VIDEO_ADV7175=m # # Camera sensor devices # +# +# Lens drivers +# + # # Flash devices # @@ -3203,13 +3305,10 @@ CONFIG_VIDEO_ADV7175=m # Miscellaneous helper chips # -# -# Sensors used on soc_camera driver -# - # # Media SPI Adapters # +# end of Media SPI Adapters # # Tools to develop new frontends @@ -3240,7 +3339,7 @@ CONFIG_DRM_FBDEV_OVERALLOC=100 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set # CONFIG_DRM_DP_CEC is not set CONFIG_DRM_TTM=y -CONFIG_DRM_VM=y +CONFIG_DRM_GEM_SHMEM_HELPER=y CONFIG_DRM_SCHED=m # @@ -3250,6 +3349,13 @@ CONFIG_DRM_I2C_CH7006=m CONFIG_DRM_I2C_SIL164=m CONFIG_DRM_I2C_NXP_TDA998X=m # CONFIG_DRM_I2C_NXP_TDA9950 is not set +# end of I2C encoder or helper chips + +# +# ARM devices +# +# end of ARM devices + CONFIG_DRM_RADEON=m CONFIG_DRM_RADEON_USERPTR=y CONFIG_DRM_AMDGPU=m @@ -3262,6 +3368,7 @@ CONFIG_DRM_AMDGPU_USERPTR=y # ACP (Audio CoProcessor) Configuration # CONFIG_DRM_AMD_ACP=y +# end of ACP (Audio CoProcessor) Configuration # # Display Engine Configuration @@ -3270,15 +3377,11 @@ CONFIG_DRM_AMD_DC=y CONFIG_DRM_AMD_DC_DCN1_0=y CONFIG_DRM_AMD_DC_DCN1_01=y # CONFIG_DEBUG_KERNEL_DC is not set -# CONFIG_HSA_AMD is not set +# end of Display Engine Configuration -# -# AMD Library routines -# -CONFIG_CHASH=m -# CONFIG_CHASH_STATS is not set -# CONFIG_CHASH_SELFTEST is not set +# CONFIG_HSA_AMD is not set CONFIG_DRM_NOUVEAU=m +# CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set CONFIG_NOUVEAU_DEBUG=5 CONFIG_NOUVEAU_DEBUG_DEFAULT=3 # CONFIG_NOUVEAU_DEBUG_MMU is not set @@ -3302,6 +3405,8 @@ CONFIG_DRM_I915_GVT=y # CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set # CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set # CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set +# end of drm/i915 Debugging + # CONFIG_DRM_VGEM is not set # CONFIG_DRM_VKMS is not set CONFIG_DRM_VMWGFX=m @@ -3320,6 +3425,8 @@ CONFIG_DRM_PANEL=y # Display Panels # # CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN is not set +# end of Display Panels + CONFIG_DRM_BRIDGE=y CONFIG_DRM_PANEL_BRIDGE=y @@ -3327,8 +3434,12 @@ CONFIG_DRM_PANEL_BRIDGE=y # Display Interface Bridges # # CONFIG_DRM_ANALOGIX_ANX78XX is not set +# end of Display Interface Bridges + +# CONFIG_DRM_ETNAVIV is not set # CONFIG_DRM_HISI_HIBMC is not set # CONFIG_DRM_TINYDRM is not set +# CONFIG_DRM_VBOXVIDEO is not set # CONFIG_DRM_LEGACY is not set CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y @@ -3402,7 +3513,11 @@ CONFIG_FB_RADEON_BACKLIGHT=y # CONFIG_FB_MB862XX is not set # CONFIG_FB_SIMPLE is not set # CONFIG_FB_SM712 is not set -CONFIG_BACKLIGHT_LCD_SUPPORT=y +# end of Frame buffer Devices + +# +# Backlight & LCD device support +# # CONFIG_LCD_CLASS_DEVICE is not set CONFIG_BACKLIGHT_CLASS_DEVICE=y # CONFIG_BACKLIGHT_GENERIC is not set @@ -3419,6 +3534,8 @@ CONFIG_BACKLIGHT_APPLE=m # CONFIG_BACKLIGHT_LV5207LP is not set # CONFIG_BACKLIGHT_BD6107 is not set # CONFIG_BACKLIGHT_ARCXCNN is not set +# end of Backlight & LCD device support + CONFIG_HDMI=y # @@ -3435,7 +3552,11 @@ CONFIG_FRAMEBUFFER_CONSOLE=y CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set # CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +# end of Console display driver support + # CONFIG_LOGO is not set +# end of Graphics support + CONFIG_SOUND=m CONFIG_SOUND_OSS_CORE=y CONFIG_SOUND_OSS_CORE_PRECLAIM=y @@ -3562,6 +3683,8 @@ CONFIG_SND_HDA_CODEC_HDMI=m # CONFIG_SND_HDA_CODEC_SI3054 is not set CONFIG_SND_HDA_GENERIC=m CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 +# end of HD-Audio + CONFIG_SND_HDA_CORE=m CONFIG_SND_HDA_DSP_LOADER=y CONFIG_SND_HDA_COMPONENT=y @@ -3602,10 +3725,14 @@ CONFIG_SND_SOC_ACPI=m # # CONFIG_SND_SOC_FSL_ASRC is not set # CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_AUDMIX is not set # CONFIG_SND_SOC_FSL_SSI is not set # CONFIG_SND_SOC_FSL_SPDIF is not set # CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_MICFIL is not set # CONFIG_SND_SOC_IMX_AUDMUX is not set +# end of SoC Audio for Freescale CPUs + # CONFIG_SND_I2S_HI6210_I2S is not set # CONFIG_SND_SOC_IMG is not set CONFIG_SND_SOC_INTEL_SST_TOPLEVEL=y @@ -3653,11 +3780,54 @@ CONFIG_SND_SOC_INTEL_BXT_RT298_MACH=m # CONFIG_SND_SOC_INTEL_KBL_DA7219_MAX98927_MACH is not set # CONFIG_SND_SOC_INTEL_KBL_RT5660_MACH is not set # CONFIG_SND_SOC_INTEL_GLK_RT5682_MAX98357A_MACH is not set +# CONFIG_SND_SOC_INTEL_SKL_HDA_DSP_GENERIC_MACH is not set +# CONFIG_SND_SOC_INTEL_SOF_RT5682_MACH is not set +# CONFIG_SND_SOC_MTK_BTCVSD is not set +CONFIG_SND_SOC_SOF_TOPLEVEL=y +CONFIG_SND_SOC_SOF_PCI=m +CONFIG_SND_SOC_SOF_ACPI=m +CONFIG_SND_SOC_SOF_OPTIONS=m +# CONFIG_SND_SOC_SOF_NOCODEC_SUPPORT is not set +# CONFIG_SND_SOC_SOF_STRICT_ABI_CHECKS is not set +# CONFIG_SND_SOC_SOF_DEBUG is not set +CONFIG_SND_SOC_SOF=m +CONFIG_SND_SOC_SOF_PROBE_WORK_QUEUE=y +CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y +CONFIG_SND_SOC_SOF_INTEL_ACPI=m +CONFIG_SND_SOC_SOF_INTEL_PCI=m +CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m +CONFIG_SND_SOC_SOF_INTEL_ATOM_HIFI_EP=m +CONFIG_SND_SOC_SOF_INTEL_COMMON=m +CONFIG_SND_SOC_SOF_BAYTRAIL_SUPPORT=y +CONFIG_SND_SOC_SOF_BAYTRAIL=m +CONFIG_SND_SOC_SOF_BROADWELL_SUPPORT=y +CONFIG_SND_SOC_SOF_BROADWELL=m +# CONFIG_SND_SOC_SOF_MERRIFIELD_SUPPORT is not set +CONFIG_SND_SOC_SOF_APOLLOLAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_APOLLOLAKE=m +CONFIG_SND_SOC_SOF_GEMINILAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_GEMINILAKE=m +CONFIG_SND_SOC_SOF_CANNONLAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_CANNONLAKE=m +CONFIG_SND_SOC_SOF_COFFEELAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_COFFEELAKE=m +CONFIG_SND_SOC_SOF_ICELAKE_SUPPORT=y +CONFIG_SND_SOC_SOF_ICELAKE=m +CONFIG_SND_SOC_SOF_HDA_COMMON=m +CONFIG_SND_SOC_SOF_HDA_LINK=y +CONFIG_SND_SOC_SOF_HDA_AUDIO_CODEC=y +CONFIG_SND_SOC_SOF_HDA_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_HDA=m +CONFIG_SND_SOC_SOF_XTENSA=m # # STMicroelectronics STM32 SOC audio support # +# end of STMicroelectronics STM32 SOC audio support + # CONFIG_SND_SOC_XILINX_I2S is not set +# CONFIG_SND_SOC_XILINX_AUDIO_FORMATTER is not set +# CONFIG_SND_SOC_XILINX_SPDIF is not set # CONFIG_SND_SOC_XTFPGA_I2S is not set # CONFIG_ZX_TDM is not set CONFIG_SND_SOC_I2C_AND_SPI=m @@ -3685,6 +3855,7 @@ CONFIG_SND_SOC_AC97_CODEC=m # CONFIG_SND_SOC_CS35L33 is not set # CONFIG_SND_SOC_CS35L34 is not set # CONFIG_SND_SOC_CS35L35 is not set +# CONFIG_SND_SOC_CS35L36 is not set # CONFIG_SND_SOC_CS42L42 is not set # CONFIG_SND_SOC_CS42L51_I2C is not set # CONFIG_SND_SOC_CS42L52 is not set @@ -3696,6 +3867,7 @@ CONFIG_SND_SOC_AC97_CODEC=m # CONFIG_SND_SOC_CS4271_SPI is not set # CONFIG_SND_SOC_CS42XX8_I2C is not set # CONFIG_SND_SOC_CS43130 is not set +# CONFIG_SND_SOC_CS4341 is not set # CONFIG_SND_SOC_CS4349 is not set # CONFIG_SND_SOC_CS53L30 is not set CONFIG_SND_SOC_DA7219=m @@ -3708,6 +3880,7 @@ CONFIG_SND_SOC_HDMI_CODEC=m # CONFIG_SND_SOC_ES8328_SPI is not set # CONFIG_SND_SOC_GTM601 is not set CONFIG_SND_SOC_HDAC_HDMI=m +CONFIG_SND_SOC_HDAC_HDA=m # CONFIG_SND_SOC_INNO_RK3036 is not set # CONFIG_SND_SOC_MAX98088 is not set CONFIG_SND_SOC_MAX98090=m @@ -3730,6 +3903,7 @@ CONFIG_SND_SOC_MAX98357A=m # CONFIG_SND_SOC_PCM3168A_SPI is not set # CONFIG_SND_SOC_PCM512x_I2C is not set # CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_RK3328 is not set CONFIG_SND_SOC_RL6231=m CONFIG_SND_SOC_RL6347A=m CONFIG_SND_SOC_RT286=m @@ -3786,6 +3960,7 @@ CONFIG_SND_SOC_TS3A227E=m # CONFIG_SND_SOC_WM8804_I2C is not set # CONFIG_SND_SOC_WM8804_SPI is not set # CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8904 is not set # CONFIG_SND_SOC_WM8960 is not set # CONFIG_SND_SOC_WM8962 is not set # CONFIG_SND_SOC_WM8974 is not set @@ -3794,12 +3969,15 @@ CONFIG_SND_SOC_TS3A227E=m # CONFIG_SND_SOC_ZX_AUD96P22 is not set # CONFIG_SND_SOC_MAX9759 is not set # CONFIG_SND_SOC_MT6351 is not set +# CONFIG_SND_SOC_MT6358 is not set # CONFIG_SND_SOC_NAU8540 is not set # CONFIG_SND_SOC_NAU8810 is not set # CONFIG_SND_SOC_NAU8822 is not set # CONFIG_SND_SOC_NAU8824 is not set CONFIG_SND_SOC_NAU8825=m # CONFIG_SND_SOC_TPA6130A2 is not set +# end of CODEC drivers + CONFIG_SND_SIMPLE_CARD_UTILS=m CONFIG_SND_SIMPLE_CARD=m CONFIG_SND_X86=y @@ -3832,6 +4010,7 @@ CONFIG_HID_CHERRY=m # CONFIG_HID_CHICONY is not set CONFIG_HID_CORSAIR=m # CONFIG_HID_COUGAR is not set +# CONFIG_HID_MACALLY is not set # CONFIG_HID_PRODIKEYS is not set CONFIG_HID_CMEDIA=m # CONFIG_HID_CP2112 is not set @@ -3850,6 +4029,7 @@ CONFIG_HID_KEYTOUCH=m CONFIG_HID_KYE=m CONFIG_HID_UCLOGIC=m # CONFIG_HID_WALTOP is not set +# CONFIG_HID_VIEWSONIC is not set # CONFIG_HID_GYRATION is not set # CONFIG_HID_ICADE is not set # CONFIG_HID_ITE is not set @@ -3867,6 +4047,7 @@ CONFIG_LOGIRUMBLEPAD2_FF=y # CONFIG_LOGIG940_FF is not set CONFIG_LOGIWHEELS_FF=y CONFIG_HID_MAGICMOUSE=y +# CONFIG_HID_MALTRON is not set # CONFIG_HID_MAYFLASH is not set # CONFIG_HID_REDRAGON is not set CONFIG_HID_MICROSOFT=m @@ -3898,6 +4079,7 @@ CONFIG_HID_RMI=m # CONFIG_HID_THINGM is not set # CONFIG_HID_THRUSTMASTER is not set # CONFIG_HID_UDRAW_PS3 is not set +# CONFIG_HID_U2FZERO is not set CONFIG_HID_WACOM=m # CONFIG_HID_WIIMOTE is not set # CONFIG_HID_XINMO is not set @@ -3906,6 +4088,7 @@ CONFIG_HID_WACOM=m CONFIG_HID_SENSOR_HUB=m # CONFIG_HID_SENSOR_CUSTOM_SENSOR is not set CONFIG_HID_ALPS=m +# end of Special HID drivers # # USB HID support @@ -3913,16 +4096,22 @@ CONFIG_HID_ALPS=m CONFIG_USB_HID=y CONFIG_HID_PID=y CONFIG_USB_HIDDEV=y +# end of USB HID support # # I2C HID support # CONFIG_I2C_HID=m +# end of I2C HID support # # Intel ISH HID support # CONFIG_INTEL_ISH_HID=m +CONFIG_INTEL_ISH_FIRMWARE_DOWNLOADER=m +# end of Intel ISH HID support +# end of HID support + CONFIG_USB_OHCI_LITTLE_ENDIAN=y CONFIG_USB_SUPPORT=y CONFIG_USB_COMMON=y @@ -3940,6 +4129,7 @@ CONFIG_USB_DEFAULT_PERSIST=y # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set CONFIG_USB_LEDS_TRIGGER_USBPORT=m +CONFIG_USB_AUTOSUSPEND_DELAY=2 CONFIG_USB_MON=y # CONFIG_USB_WUSB_CBAF is not set @@ -3955,6 +4145,7 @@ CONFIG_USB_EHCI_HCD=y CONFIG_USB_EHCI_ROOT_HUB_TT=y CONFIG_USB_EHCI_TT_NEWSCHED=y CONFIG_USB_EHCI_PCI=y +# CONFIG_USB_EHCI_FSL is not set CONFIG_USB_EHCI_HCD_PLATFORM=m # CONFIG_USB_OXU210HP_HCD is not set # CONFIG_USB_ISP116X_HCD is not set @@ -4106,6 +4297,8 @@ CONFIG_USB_APPLEDISPLAY=m # CONFIG_NOP_USB_XCEIV is not set # CONFIG_USB_GPIO_VBUS is not set # CONFIG_USB_ISP1301 is not set +# end of USB Physical Layer drivers + # CONFIG_USB_GADGET is not set # CONFIG_TYPEC is not set # CONFIG_USB_ROLE_SWITCH is not set @@ -4151,6 +4344,7 @@ CONFIG_LEDS_CLASS=y # # CONFIG_LEDS_APU is not set # CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3532 is not set # CONFIG_LEDS_LM3642 is not set # CONFIG_LEDS_PCA9532 is not set # CONFIG_LEDS_GPIO is not set @@ -4167,7 +4361,6 @@ CONFIG_LEDS_CLASS=y # CONFIG_LEDS_PWM is not set # CONFIG_LEDS_BD2802 is not set # CONFIG_LEDS_INTEL_SS4200 is not set -# CONFIG_LEDS_LT3593 is not set # CONFIG_LEDS_TCA6507 is not set # CONFIG_LEDS_TLC591XX is not set # CONFIG_LEDS_LM355x is not set @@ -4229,6 +4422,7 @@ CONFIG_RTC_INTF_DEV=y # I2C RTC drivers # # CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABEOZ9 is not set # CONFIG_RTC_DRV_ABX80X is not set # CONFIG_RTC_DRV_DS1307 is not set # CONFIG_RTC_DRV_DS1374 is not set @@ -4251,7 +4445,9 @@ CONFIG_RTC_INTF_DEV=y # CONFIG_RTC_DRV_RX8581 is not set # CONFIG_RTC_DRV_RX8025 is not set # CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3028 is not set # CONFIG_RTC_DRV_RV8803 is not set +# CONFIG_RTC_DRV_SD3078 is not set # # SPI RTC drivers @@ -4338,6 +4534,8 @@ CONFIG_DW_DMAC_PCI=y CONFIG_SYNC_FILE=y # CONFIG_SW_SYNC is not set # CONFIG_UDMABUF is not set +# end of DMABUF options + # CONFIG_AUXDISPLAY is not set CONFIG_UIO=m # CONFIG_UIO_CIF is not set @@ -4364,6 +4562,8 @@ CONFIG_VIRTIO_INPUT=y # Microsoft Hyper-V guest support # # CONFIG_HYPERV is not set +# end of Microsoft Hyper-V guest support + CONFIG_STAGING=y # CONFIG_PRISM2_USB is not set # CONFIG_COMEDI is not set @@ -4377,7 +4577,6 @@ CONFIG_RTL8192E=m CONFIG_R8712U=m CONFIG_R8188EU=m # CONFIG_88EU_AP_MODE is not set -# CONFIG_R8822BE is not set # CONFIG_RTS5208 is not set # CONFIG_VT6655 is not set # CONFIG_VT6656 is not set @@ -4391,68 +4590,74 @@ CONFIG_R8188EU=m # # CONFIG_ADIS16203 is not set # CONFIG_ADIS16240 is not set +# end of Accelerometers # # Analog to digital converters # -# CONFIG_AD7606 is not set -# CONFIG_AD7780 is not set # CONFIG_AD7816 is not set # CONFIG_AD7192 is not set # CONFIG_AD7280 is not set +# end of Analog to digital converters # # Analog digital bi-direction converters # # CONFIG_ADT7316 is not set +# end of Analog digital bi-direction converters # # Capacitance to digital converters # # CONFIG_AD7150 is not set -# CONFIG_AD7152 is not set # CONFIG_AD7746 is not set +# end of Capacitance to digital converters # # Direct Digital Synthesis # # CONFIG_AD9832 is not set # CONFIG_AD9834 is not set +# end of Direct Digital Synthesis # # Network Analyzer, Impedance Converters # # CONFIG_AD5933 is not set +# end of Network Analyzer, Impedance Converters # # Active energy metering IC # # CONFIG_ADE7854 is not set +# end of Active energy metering IC # # Resolver to digital converters # # CONFIG_AD2S1210 is not set +# end of Resolver to digital converters +# end of IIO staging drivers + # CONFIG_FB_SM750 is not set -# CONFIG_FB_XGI is not set # # Speakup console speech # # CONFIG_SPEAKUP is not set +# end of Speakup console speech + CONFIG_STAGING_MEDIA=y -CONFIG_VIDEO_ZORAN=m -CONFIG_VIDEO_ZORAN_DC30=m -CONFIG_VIDEO_ZORAN_ZR36060=m -CONFIG_VIDEO_ZORAN_BUZ=m -CONFIG_VIDEO_ZORAN_DC10=m -CONFIG_VIDEO_ZORAN_LML33=m -CONFIG_VIDEO_ZORAN_LML33R10=m -CONFIG_VIDEO_ZORAN_AVS6EYES=m + +# +# soc_camera sensor drivers +# # # Android # +# end of Android + # CONFIG_LTE_GDM724X is not set # CONFIG_FIREWIRE_SERIAL is not set # CONFIG_GS_FPGABOOT is not set @@ -4463,16 +4668,17 @@ CONFIG_VIDEO_ZORAN_AVS6EYES=m # CONFIG_MOST is not set # CONFIG_KS7010 is not set # CONFIG_GREYBUS is not set -# CONFIG_DRM_VBOXVIDEO is not set # CONFIG_PI433 is not set -# CONFIG_MTK_MMC is not set # # Gasket devices # # CONFIG_STAGING_GASKET_FRAMEWORK is not set -# CONFIG_XIL_AXIS_FIFO is not set +# end of Gasket devices + # CONFIG_EROFS_FS is not set +# CONFIG_FIELDBUS_DEV is not set +# CONFIG_KPC2000 is not set CONFIG_X86_PLATFORM_DEVICES=y CONFIG_ACER_WMI=m # CONFIG_ACER_WIRELESS is not set @@ -4529,7 +4735,6 @@ CONFIG_ACPI_TOSHIBA=m CONFIG_TOSHIBA_BT_RFKILL=m CONFIG_TOSHIBA_HAPS=m CONFIG_TOSHIBA_WMI=m -# CONFIG_ACPI_CMPC is not set # CONFIG_INTEL_INT0002_VGPIO is not set CONFIG_INTEL_HID_EVENT=m # CONFIG_INTEL_VBTN is not set @@ -4539,7 +4744,6 @@ CONFIG_INTEL_PMC_CORE=y CONFIG_SAMSUNG_LAPTOP=m CONFIG_MXM_WMI=m # CONFIG_INTEL_OAKTRAIL is not set -# CONFIG_SAMSUNG_Q10 is not set CONFIG_APPLE_GMUX=m CONFIG_INTEL_RST=m CONFIG_INTEL_SMARTCONNECT=y @@ -4552,6 +4756,7 @@ CONFIG_INTEL_PUNIT_IPC=m # CONFIG_I2C_MULTI_INSTANTIATE is not set # CONFIG_INTEL_ATOMISP2_PM is not set # CONFIG_HUAWEI_WMI is not set +# CONFIG_PCENGINES_APU2 is not set CONFIG_PMC_ATOM=y CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_LAPTOP=m @@ -4572,6 +4777,8 @@ CONFIG_COMMON_CLK=y # CONFIG_COMMON_CLK_CDCE706 is not set # CONFIG_COMMON_CLK_CS2000_CP is not set # CONFIG_COMMON_CLK_PWM is not set +# end of Common Clock Framework + # CONFIG_HWSPINLOCK is not set # @@ -4579,18 +4786,22 @@ CONFIG_COMMON_CLK=y # CONFIG_CLKEVT_I8253=y CONFIG_CLKBLD_I8253=y +# end of Clock Source drivers + CONFIG_MAILBOX=y CONFIG_PCC=y # CONFIG_ALTERA_MBOX is not set +CONFIG_IOMMU_IOVA=y CONFIG_IOMMU_API=y CONFIG_IOMMU_SUPPORT=y # # Generic IOMMU Pagetable Support # +# end of Generic IOMMU Pagetable Support + # CONFIG_IOMMU_DEBUGFS is not set # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set -CONFIG_IOMMU_IOVA=y CONFIG_AMD_IOMMU=y CONFIG_AMD_IOMMU_V2=m CONFIG_DMAR_TABLE=y @@ -4604,12 +4815,15 @@ CONFIG_IRQ_REMAP=y # Remoteproc drivers # # CONFIG_REMOTEPROC is not set +# end of Remoteproc drivers # # Rpmsg drivers # # CONFIG_RPMSG_QCOM_GLINK_RPM is not set # CONFIG_RPMSG_VIRTIO is not set +# end of Rpmsg drivers + # CONFIG_SOUNDWIRE is not set # @@ -4619,28 +4833,49 @@ CONFIG_IRQ_REMAP=y # # Amlogic SoC drivers # +# end of Amlogic SoC drivers + +# +# Aspeed SoC drivers +# +# end of Aspeed SoC drivers # # Broadcom SoC drivers # +# end of Broadcom SoC drivers # # NXP/Freescale QorIQ SoC drivers # +# end of NXP/Freescale QorIQ SoC drivers # # i.MX SoC drivers # +# end of i.MX SoC drivers + +# +# IXP4xx SoC drivers +# +# CONFIG_IXP4XX_QMGR is not set +# CONFIG_IXP4XX_NPE is not set +# end of IXP4xx SoC drivers # # Qualcomm SoC drivers # +# end of Qualcomm SoC drivers + # CONFIG_SOC_TI is not set # # Xilinx SoC drivers # # CONFIG_XILINX_VCU is not set +# end of Xilinx SoC drivers +# end of SOC (System On Chip) specific Drivers + CONFIG_PM_DEVFREQ=y # @@ -4665,6 +4900,7 @@ CONFIG_EXTCON=y # CONFIG_EXTCON_GPIO is not set # CONFIG_EXTCON_INTEL_INT3496 is not set # CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_PTN5150 is not set # CONFIG_EXTCON_RT8973A is not set # CONFIG_EXTCON_SM5502 is not set # CONFIG_EXTCON_USB_GPIO is not set @@ -4714,6 +4950,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_SCA3000 is not set # CONFIG_STK8312 is not set # CONFIG_STK8BA50 is not set +# end of Accelerometers # # Analog to digital converters @@ -4723,7 +4960,11 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_AD7291 is not set # CONFIG_AD7298 is not set # CONFIG_AD7476 is not set +# CONFIG_AD7606_IFACE_PARALLEL is not set +# CONFIG_AD7606_IFACE_SPI is not set # CONFIG_AD7766 is not set +# CONFIG_AD7768_1 is not set +# CONFIG_AD7780 is not set # CONFIG_AD7791 is not set # CONFIG_AD7793 is not set # CONFIG_AD7887 is not set @@ -4755,15 +4996,18 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_TI_ADS1015 is not set # CONFIG_TI_ADS7950 is not set # CONFIG_TI_TLC4541 is not set +# end of Analog to digital converters # # Analog Front Ends # +# end of Analog Front Ends # # Amplifiers # # CONFIG_AD8366 is not set +# end of Amplifiers # # Chemical Sensors @@ -4772,22 +5016,23 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 # CONFIG_BME680 is not set # CONFIG_CCS811 is not set # CONFIG_IAQCORE is not set +# CONFIG_SENSIRION_SGP30 is not set +# CONFIG_SPS30 is not set # CONFIG_VZ89X is not set +# end of Chemical Sensors # # Hid Sensor IIO Common # CONFIG_HID_SENSOR_IIO_COMMON=m CONFIG_HID_SENSOR_IIO_TRIGGER=m +# end of Hid Sensor IIO Common # # SSP Sensor Common # # CONFIG_IIO_SSP_SENSORHUB is not set - -# -# Counters -# +# end of SSP Sensor Common # # Digital to analog converters @@ -4821,10 +5066,13 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m # CONFIG_TI_DAC082S085 is not set # CONFIG_TI_DAC5571 is not set # CONFIG_TI_DAC7311 is not set +# CONFIG_TI_DAC7612 is not set +# end of Digital to analog converters # # IIO dummy driver # +# end of IIO dummy driver # # Frequency Synthesizers DDS/PLL @@ -4834,11 +5082,14 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m # Clock Generator/Distribution # # CONFIG_AD9523 is not set +# end of Clock Generator/Distribution # # Phase-Locked Loop (PLL) frequency synthesizers # # CONFIG_ADF4350 is not set +# end of Phase-Locked Loop (PLL) frequency synthesizers +# end of Frequency Synthesizers DDS/PLL # # Digital gyroscope sensors @@ -4849,10 +5100,12 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m # CONFIG_ADIS16260 is not set # CONFIG_ADXRS450 is not set # CONFIG_BMG160 is not set +# CONFIG_FXAS21002C is not set CONFIG_HID_SENSOR_GYRO_3D=m # CONFIG_MPU3050_I2C is not set # CONFIG_IIO_ST_GYRO_3AXIS is not set # CONFIG_ITG3200 is not set +# end of Digital gyroscope sensors # # Health Sensors @@ -4865,6 +5118,8 @@ CONFIG_HID_SENSOR_GYRO_3D=m # CONFIG_AFE4404 is not set # CONFIG_MAX30100 is not set # CONFIG_MAX30102 is not set +# end of Heart Rate Monitors +# end of Health Sensors # # Humidity sensors @@ -4877,6 +5132,7 @@ CONFIG_HID_SENSOR_GYRO_3D=m # CONFIG_HTU21 is not set # CONFIG_SI7005 is not set # CONFIG_SI7020 is not set +# end of Humidity sensors # # Inertial measurement units @@ -4889,6 +5145,7 @@ CONFIG_HID_SENSOR_GYRO_3D=m # CONFIG_INV_MPU6050_I2C is not set # CONFIG_INV_MPU6050_SPI is not set # CONFIG_IIO_ST_LSM6DSX is not set +# end of Inertial measurement units # # Light sensors @@ -4915,6 +5172,7 @@ CONFIG_HID_SENSOR_PROX=m # CONFIG_LTR501 is not set # CONFIG_LV0104CS is not set # CONFIG_MAX44000 is not set +# CONFIG_MAX44009 is not set # CONFIG_OPT3001 is not set # CONFIG_PA12203001 is not set # CONFIG_SI1133 is not set @@ -4933,6 +5191,7 @@ CONFIG_HID_SENSOR_PROX=m # CONFIG_VEML6070 is not set # CONFIG_VL6180 is not set # CONFIG_ZOPT2201 is not set +# end of Light sensors # # Magnetometer sensors @@ -4949,22 +5208,26 @@ CONFIG_HID_SENSOR_MAGNETOMETER_3D=m # CONFIG_SENSORS_HMC5843_SPI is not set # CONFIG_SENSORS_RM3100_I2C is not set # CONFIG_SENSORS_RM3100_SPI is not set +# end of Magnetometer sensors # # Multiplexers # +# end of Multiplexers # # Inclinometer sensors # CONFIG_HID_SENSOR_INCLINOMETER_3D=m CONFIG_HID_SENSOR_DEVICE_ROTATION=m +# end of Inclinometer sensors # # Triggers - standalone # CONFIG_IIO_INTERRUPT_TRIGGER=m CONFIG_IIO_SYSFS_TRIGGER=m +# end of Triggers - standalone # # Digital potentiometers @@ -4978,11 +5241,13 @@ CONFIG_IIO_SYSFS_TRIGGER=m # CONFIG_MCP4531 is not set # CONFIG_MCP41010 is not set # CONFIG_TPL0102 is not set +# end of Digital potentiometers # # Digital potentiostats # # CONFIG_LMP91000 is not set +# end of Digital potentiostats # # Pressure sensors @@ -5000,28 +5265,33 @@ CONFIG_HID_SENSOR_PRESS=m # CONFIG_T5403 is not set # CONFIG_HP206C is not set # CONFIG_ZPA2326 is not set +# end of Pressure sensors # # Lightning sensors # # CONFIG_AS3935 is not set +# end of Lightning sensors # # Proximity and distance sensors # # CONFIG_ISL29501 is not set # CONFIG_LIDAR_LITE_V2 is not set +# CONFIG_MB1232 is not set # CONFIG_RFD77402 is not set # CONFIG_SRF04 is not set # CONFIG_SX9500 is not set # CONFIG_SRF08 is not set # CONFIG_VL53L0X_I2C is not set +# end of Proximity and distance sensors # # Resolver to digital converters # # CONFIG_AD2S90 is not set # CONFIG_AD2S1200 is not set +# end of Resolver to digital converters # # Temperature sensors @@ -5034,6 +5304,9 @@ CONFIG_HID_SENSOR_PRESS=m # CONFIG_TMP007 is not set # CONFIG_TSYS01 is not set # CONFIG_TSYS02D is not set +# CONFIG_MAX31856 is not set +# end of Temperature sensors + # CONFIG_NTB is not set # CONFIG_VME_BUS is not set CONFIG_PWM=y @@ -5048,6 +5321,8 @@ CONFIG_PWM_LPSS_PLATFORM=m # IRQ chip support # CONFIG_ARM_GIC_MAX_NR=1 +# end of IRQ chip support + # CONFIG_IPACK_BUS is not set # CONFIG_RESET_CONTROLLER is not set # CONFIG_FMC is not set @@ -5060,6 +5335,8 @@ CONFIG_GENERIC_PHY=y # CONFIG_PHY_PXA_28NM_HSIC is not set # CONFIG_PHY_PXA_28NM_USB2 is not set # CONFIG_PHY_CPCAP_USB is not set +# end of PHY Subsystem + CONFIG_POWERCAP=y CONFIG_INTEL_RAPL=y # CONFIG_IDLE_INJECT is not set @@ -5068,6 +5345,8 @@ CONFIG_INTEL_RAPL=y # # Performance monitor support # +# end of Performance monitor support + # CONFIG_RAS is not set # CONFIG_THUNDERBOLT is not set @@ -5075,6 +5354,8 @@ CONFIG_INTEL_RAPL=y # Android # # CONFIG_ANDROID is not set +# end of Android + CONFIG_LIBNVDIMM=y CONFIG_BLK_DEV_PMEM=m CONFIG_ND_BLK=m @@ -5086,22 +5367,29 @@ CONFIG_DAX_DRIVER=y CONFIG_DAX=y CONFIG_DEV_DAX=m CONFIG_NVMEM=y +# CONFIG_NVMEM_SYSFS is not set # # HW tracing support # # CONFIG_STM is not set # CONFIG_INTEL_TH is not set +# end of HW tracing support + # CONFIG_FPGA is not set CONFIG_PM_OPP=y # CONFIG_UNISYS_VISORBUS is not set # CONFIG_SIOX is not set # CONFIG_SLIMBUS is not set +# CONFIG_INTERCONNECT is not set +# CONFIG_COUNTER is not set +# end of Device Drivers # # File systems # CONFIG_DCACHE_WORD_ACCESS=y +CONFIG_VALIDATE_FS_PARSER=y CONFIG_FS_IOMAP=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y @@ -5113,8 +5401,6 @@ CONFIG_EXT3_FS_SECURITY=y CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y CONFIG_EXT4_FS_SECURITY=y -CONFIG_EXT4_ENCRYPTION=y -CONFIG_EXT4_FS_ENCRYPTION=y # CONFIG_EXT4_DEBUG is not set CONFIG_JBD2=y # CONFIG_JBD2_DEBUG is not set @@ -5168,6 +5454,7 @@ CONFIG_FSCACHE_OBJECT_LIST=y CONFIG_CACHEFILES=m # CONFIG_CACHEFILES_DEBUG is not set # CONFIG_CACHEFILES_HISTOGRAM is not set +# end of Caches # # CD-ROM/DVD Filesystems @@ -5176,6 +5463,7 @@ CONFIG_ISO9660_FS=m # CONFIG_JOLIET is not set # CONFIG_ZISOFS is not set # CONFIG_UDF_FS is not set +# end of CD-ROM/DVD Filesystems # # DOS/FAT/NT Filesystems @@ -5187,6 +5475,7 @@ CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="ascii" # CONFIG_FAT_DEFAULT_UTF8 is not set # CONFIG_NTFS_FS is not set +# end of DOS/FAT/NT Filesystems # # Pseudo filesystems @@ -5204,8 +5493,11 @@ CONFIG_TMPFS_XATTR=y CONFIG_HUGETLBFS=y CONFIG_HUGETLB_PAGE=y CONFIG_MEMFD_CREATE=y +CONFIG_ARCH_HAS_GIGANTIC_PAGE=y CONFIG_CONFIGFS_FS=y CONFIG_EFIVAR_FS=y +# end of Pseudo filesystems + CONFIG_MISC_FILESYSTEMS=y # CONFIG_ORANGEFS_FS is not set # CONFIG_ADFS_FS is not set @@ -5293,6 +5585,8 @@ CONFIG_NLS_KOI8_U=m # CONFIG_NLS_MAC_TURKISH is not set CONFIG_NLS_UTF8=m # CONFIG_DLM is not set +# CONFIG_UNICODE is not set +# end of File systems # # Security options @@ -5308,7 +5602,6 @@ CONFIG_SECURITY=y CONFIG_SECURITYFS=y CONFIG_SECURITY_NETWORK=y CONFIG_PAGE_TABLE_ISOLATION=y -# CONFIG_SECURITY_NETWORK_XFRM is not set CONFIG_SECURITY_PATH=y # CONFIG_INTEL_TXT is not set CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y @@ -5321,16 +5614,29 @@ CONFIG_HARDENED_USERCOPY_FALLBACK=y # CONFIG_SECURITY_SMACK is not set # CONFIG_SECURITY_TOMOYO is not set CONFIG_SECURITY_APPARMOR=y -CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 CONFIG_SECURITY_APPARMOR_HASH=y CONFIG_SECURITY_APPARMOR_HASH_DEFAULT=y # CONFIG_SECURITY_APPARMOR_DEBUG is not set # CONFIG_SECURITY_LOADPIN is not set # CONFIG_SECURITY_YAMA is not set +# CONFIG_SECURITY_SAFESETID is not set # CONFIG_INTEGRITY is not set # CONFIG_DEFAULT_SECURITY_APPARMOR is not set CONFIG_DEFAULT_SECURITY_DAC=y -CONFIG_DEFAULT_SECURITY="" +CONFIG_LSM="yama,loadpin,safesetid,integrity" + +# +# Kernel hardening options +# + +# +# Memory initialization +# +CONFIG_INIT_STACK_NONE=y +# end of Memory initialization +# end of Kernel hardening options +# end of Security options + CONFIG_XOR_BLOCKS=y CONFIG_CRYPTO=y @@ -5353,9 +5659,6 @@ CONFIG_CRYPTO_AKCIPHER=y CONFIG_CRYPTO_KPP2=y CONFIG_CRYPTO_KPP=y CONFIG_CRYPTO_ACOMP2=y -CONFIG_CRYPTO_RSA=y -CONFIG_CRYPTO_DH=y -CONFIG_CRYPTO_ECDH=m CONFIG_CRYPTO_MANAGER=y CONFIG_CRYPTO_MANAGER2=y CONFIG_CRYPTO_USER=m @@ -5372,6 +5675,15 @@ CONFIG_CRYPTO_SIMD=y CONFIG_CRYPTO_GLUE_HELPER_X86=y CONFIG_CRYPTO_ENGINE=m +# +# Public-key cryptography +# +CONFIG_CRYPTO_RSA=y +CONFIG_CRYPTO_DH=y +CONFIG_CRYPTO_ECC=m +CONFIG_CRYPTO_ECDH=m +# CONFIG_CRYPTO_ECRDSA is not set + # # Authenticated Encryption with Associated Data # @@ -5543,6 +5855,8 @@ CONFIG_SYSTEM_TRUSTED_KEYS="" # CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set CONFIG_SECONDARY_TRUSTED_KEYRING=y # CONFIG_SYSTEM_BLACKLIST_KEYRING is not set +# end of Certificates for signature checking + CONFIG_BINARY_PRINTF=y # @@ -5550,12 +5864,14 @@ CONFIG_BINARY_PRINTF=y # CONFIG_RAID6_PQ=y CONFIG_RAID6_PQ_BENCHMARK=y +# CONFIG_PACKING is not set CONFIG_BITREVERSE=y -CONFIG_RATIONAL=y CONFIG_GENERIC_STRNCPY_FROM_USER=y CONFIG_GENERIC_STRNLEN_USER=y CONFIG_GENERIC_NET_UTILS=y CONFIG_GENERIC_FIND_FIRST_BIT=y +CONFIG_CORDIC=m +CONFIG_RATIONAL=y CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y @@ -5612,6 +5928,7 @@ CONFIG_NEED_SG_DMA_LENGTH=y CONFIG_NEED_DMA_MAP_STATE=y CONFIG_ARCH_DMA_ADDR_T_64BIT=y CONFIG_SWIOTLB=y +# CONFIG_DMA_API_DEBUG is not set CONFIG_SGL_ALLOC=y CONFIG_CHECK_SIGNATURE=y CONFIG_CPU_RMAP=y @@ -5620,7 +5937,6 @@ CONFIG_GLOB=y # CONFIG_GLOB_SELFTEST is not set CONFIG_NLATTR=y CONFIG_CLZ_TAB=y -CONFIG_CORDIC=m # CONFIG_DDR is not set CONFIG_IRQ_POLL=y CONFIG_MPILIB=y @@ -5634,8 +5950,10 @@ CONFIG_SG_POOL=y CONFIG_ARCH_HAS_PMEM_API=y CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y CONFIG_ARCH_HAS_UACCESS_MCSAFE=y +CONFIG_ARCH_STACKWALK=y CONFIG_SBITMAP=y # CONFIG_STRING_SELFTEST is not set +# end of Library routines # # Kernel hacking @@ -5645,11 +5963,13 @@ CONFIG_SBITMAP=y # printk and dmesg options # CONFIG_PRINTK_TIME=y +# CONFIG_PRINTK_CALLER is not set CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 CONFIG_CONSOLE_LOGLEVEL_QUIET=4 CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 CONFIG_BOOT_PRINTK_DELAY=y # CONFIG_DYNAMIC_DEBUG is not set +# end of printk and dmesg options # # Compile-time checks and compiler options @@ -5660,23 +5980,27 @@ CONFIG_FRAME_WARN=2048 # CONFIG_STRIP_ASM_SYMS is not set # CONFIG_READABLE_ASM is not set # CONFIG_UNUSED_SYMBOLS is not set -# CONFIG_PAGE_OWNER is not set CONFIG_DEBUG_FS=y # CONFIG_HEADERS_CHECK is not set +# CONFIG_OPTIMIZE_INLINING is not set # CONFIG_DEBUG_SECTION_MISMATCH is not set # CONFIG_SECTION_MISMATCH_WARN_ONLY is not set CONFIG_STACK_VALIDATION=y # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# end of Compile-time checks and compiler options + CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0 CONFIG_MAGIC_SYSRQ_SERIAL=y CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_MISC=y # # Memory Debugging # # CONFIG_PAGE_EXTENSION is not set # CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_PAGE_OWNER is not set # CONFIG_PAGE_POISONING is not set # CONFIG_DEBUG_PAGE_REF is not set # CONFIG_DEBUG_RODATA_TEST is not set @@ -5691,12 +6015,12 @@ CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y # CONFIG_DEBUG_VIRTUAL is not set # CONFIG_DEBUG_MEMORY_INIT is not set # CONFIG_DEBUG_PER_CPU_MAPS is not set -CONFIG_HAVE_DEBUG_STACKOVERFLOW=y -# CONFIG_DEBUG_STACKOVERFLOW is not set CONFIG_HAVE_ARCH_KASAN=y CONFIG_CC_HAS_KASAN_GENERIC=y # CONFIG_KASAN is not set CONFIG_KASAN_STACK=1 +# end of Memory Debugging + CONFIG_ARCH_HAS_KCOV=y CONFIG_CC_HAS_SANCOV_TRACE_PC=y # CONFIG_KCOV is not set @@ -5716,6 +6040,8 @@ CONFIG_HARDLOCKUP_DETECTOR=y CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0 # CONFIG_DETECT_HUNG_TASK is not set # CONFIG_WQ_WATCHDOG is not set +# end of Debug Lockups and Hangs + # CONFIG_PANIC_ON_OOPS is not set CONFIG_PANIC_ON_OOPS_VALUE=0 CONFIG_PANIC_TIMEOUT=0 @@ -5742,12 +6068,14 @@ CONFIG_LOCK_DEBUGGING_SUPPORT=y # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set # CONFIG_LOCK_TORTURE_TEST is not set # CONFIG_WW_MUTEX_SELFTEST is not set +# end of Lock Debugging (spinlocks, mutexes, etc...) + CONFIG_STACKTRACE=y # CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set # CONFIG_DEBUG_KOBJECT is not set CONFIG_DEBUG_BUGVERBOSE=y CONFIG_DEBUG_LIST=y -# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_PLIST is not set # CONFIG_DEBUG_SG is not set # CONFIG_DEBUG_NOTIFIERS is not set # CONFIG_DEBUG_CREDENTIALS is not set @@ -5760,6 +6088,8 @@ CONFIG_DEBUG_LIST=y CONFIG_RCU_CPU_STALL_TIMEOUT=60 # CONFIG_RCU_TRACE is not set # CONFIG_RCU_EQS_DEBUG is not set +# end of RCU Debugging + # CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set # CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set @@ -5811,9 +6141,7 @@ CONFIG_PROBE_EVENTS=y # CONFIG_RING_BUFFER_STARTUP_TEST is not set # CONFIG_PREEMPTIRQ_DELAY_TEST is not set # CONFIG_TRACE_EVAL_MAP_FILE is not set -CONFIG_TRACING_EVENTS_GPIO=y # CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set -# CONFIG_DMA_API_DEBUG is not set CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_LKDTM is not set # CONFIG_TEST_LIST_SORT is not set @@ -5826,6 +6154,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_ATOMIC64_SELFTEST is not set # CONFIG_TEST_HEXDUMP is not set # CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_STRSCPY is not set # CONFIG_TEST_KSTRTOX is not set # CONFIG_TEST_PRINTF is not set # CONFIG_TEST_BITMAP is not set @@ -5837,6 +6166,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_HASH is not set # CONFIG_TEST_IDA is not set # CONFIG_TEST_LKM is not set +# CONFIG_TEST_VMALLOC is not set # CONFIG_TEST_USER_COPY is not set # CONFIG_TEST_BPF is not set # CONFIG_FIND_BIT_BENCHMARK is not set @@ -5846,6 +6176,7 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_TEST_STATIC_KEYS is not set # CONFIG_TEST_KMOD is not set # CONFIG_TEST_MEMCAT_P is not set +# CONFIG_TEST_STACKINIT is not set # CONFIG_MEMTEST is not set # CONFIG_BUG_ON_DATA_CORRUPTION is not set # CONFIG_SAMPLES is not set @@ -5853,12 +6184,12 @@ CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y # CONFIG_UBSAN is not set +CONFIG_UBSAN_ALIGNMENT=y CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y CONFIG_TRACE_IRQFLAGS_SUPPORT=y CONFIG_X86_VERBOSE_BOOTUP=y CONFIG_EARLY_PRINTK=y # CONFIG_EARLY_PRINTK_DBGP is not set -CONFIG_EARLY_PRINTK_EFI=y # CONFIG_EARLY_PRINTK_USB_XDBC is not set # CONFIG_X86_PTDUMP is not set # CONFIG_EFI_PGT_DUMP is not set @@ -5878,7 +6209,6 @@ CONFIG_IO_DELAY_0X80=y CONFIG_DEFAULT_IO_DELAY_TYPE=0 # CONFIG_DEBUG_BOOT_PARAMS is not set # CONFIG_CPA_DEBUG is not set -# CONFIG_OPTIMIZE_INLINING is not set # CONFIG_DEBUG_ENTRY is not set # CONFIG_DEBUG_NMI_SELFTEST is not set # CONFIG_X86_DEBUG_FPU is not set @@ -5886,3 +6216,4 @@ CONFIG_DEFAULT_IO_DELAY_TYPE=0 CONFIG_UNWINDER_ORC=y # CONFIG_UNWINDER_FRAME_POINTER is not set # CONFIG_UNWINDER_GUESS is not set +# end of Kernel hacking