From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 2211B15800A for ; Wed, 19 Jul 2023 17:20:22 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id AA71DE070D; Wed, 19 Jul 2023 17:20:20 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 8DAC1E070D for ; Wed, 19 Jul 2023 17:20:20 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 948E4340955 for ; Wed, 19 Jul 2023 17:20:19 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id DE7F869 for ; Wed, 19 Jul 2023 17:20:17 +0000 (UTC) From: "Mike Pagano" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Mike Pagano" Message-ID: <1689787194.c8d07676d1b037a176fadabbb45ae5dd6e8c831a.mpagano@gentoo> Subject: [gentoo-commits] proj/linux-patches:6.4 commit in: / X-VCS-Repository: proj/linux-patches X-VCS-Files: 0000_README 2400_wireguard-queueing-cpu-sel-wrapping-fix.patch X-VCS-Directories: / X-VCS-Committer: mpagano X-VCS-Committer-Name: Mike Pagano X-VCS-Revision: c8d07676d1b037a176fadabbb45ae5dd6e8c831a X-VCS-Branch: 6.4 Date: Wed, 19 Jul 2023 17:20:17 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: af16a635-10e6-4723-9f61-702dad64d6f2 X-Archives-Hash: 40e63c36db22a1b1151e8c19c4a3a988 commit: c8d07676d1b037a176fadabbb45ae5dd6e8c831a Author: Mike Pagano gentoo org> AuthorDate: Wed Jul 19 17:19:54 2023 +0000 Commit: Mike Pagano gentoo org> CommitDate: Wed Jul 19 17:19:54 2023 +0000 URL: https://gitweb.gentoo.org/proj/linux-patches.git/commit/?id=c8d07676 Remove redundant patch Removed: 2400_wireguard-queueing-cpu-sel-wrapping-fix.patch Signed-off-by: Mike Pagano gentoo.org> 0000_README | 4 - 2400_wireguard-queueing-cpu-sel-wrapping-fix.patch | 116 --------------------- 2 files changed, 120 deletions(-) diff --git a/0000_README b/0000_README index 2532d9e5..8da93495 100644 --- a/0000_README +++ b/0000_README @@ -79,10 +79,6 @@ Patch: 2000_BT-Check-key-sizes-only-if-Secure-Simple-Pairing-enabled.patch From: https://lore.kernel.org/linux-bluetooth/20190522070540.48895-1-marcel@holtmann.org/raw Desc: Bluetooth: Check key sizes only when Secure Simple Pairing is enabled. See bug #686758 -Patch: 2400_wireguard-queueing-cpu-sel-wrapping-fix.patch -From: https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=7387943fa35516f6f8017a3b0e9ce48a3bef9faa -Desc: wireguard: queueing: use saner cpu selection wrapping - Patch: 2900_tmp513-Fix-build-issue-by-selecting-CONFIG_REG.patch From: https://bugs.gentoo.org/710790 Desc: tmp513 requies REGMAP_I2C to build. Select it by default in Kconfig. See bug #710790. Thanks to Phil Stracchino diff --git a/2400_wireguard-queueing-cpu-sel-wrapping-fix.patch b/2400_wireguard-queueing-cpu-sel-wrapping-fix.patch deleted file mode 100644 index fa199039..00000000 --- a/2400_wireguard-queueing-cpu-sel-wrapping-fix.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 7387943fa35516f6f8017a3b0e9ce48a3bef9faa Mon Sep 17 00:00:00 2001 -From: "Jason A. Donenfeld" -Date: Mon, 3 Jul 2023 03:27:04 +0200 -Subject: wireguard: queueing: use saner cpu selection wrapping - -Using `% nr_cpumask_bits` is slow and complicated, and not totally -robust toward dynamic changes to CPU topologies. Rather than storing the -next CPU in the round-robin, just store the last one, and also return -that value. This simplifies the loop drastically into a much more common -pattern. - -Fixes: e7096c131e51 ("net: WireGuard secure network tunnel") -Cc: stable@vger.kernel.org -Reported-by: Linus Torvalds -Tested-by: Manuel Leiner -Signed-off-by: Jason A. Donenfeld -Signed-off-by: David S. Miller ---- - drivers/net/wireguard/queueing.c | 1 + - drivers/net/wireguard/queueing.h | 25 +++++++++++-------------- - drivers/net/wireguard/receive.c | 2 +- - drivers/net/wireguard/send.c | 2 +- - 4 files changed, 14 insertions(+), 16 deletions(-) - -diff --git a/drivers/net/wireguard/queueing.c b/drivers/net/wireguard/queueing.c -index 8084e7408c0ae..26d235d152352 100644 ---- a/drivers/net/wireguard/queueing.c -+++ b/drivers/net/wireguard/queueing.c -@@ -28,6 +28,7 @@ int wg_packet_queue_init(struct crypt_queue *queue, work_func_t function, - int ret; - - memset(queue, 0, sizeof(*queue)); -+ queue->last_cpu = -1; - ret = ptr_ring_init(&queue->ring, len, GFP_KERNEL); - if (ret) - return ret; -diff --git a/drivers/net/wireguard/queueing.h b/drivers/net/wireguard/queueing.h -index 125284b346a77..1ea4f874e367e 100644 ---- a/drivers/net/wireguard/queueing.h -+++ b/drivers/net/wireguard/queueing.h -@@ -117,20 +117,17 @@ static inline int wg_cpumask_choose_online(int *stored_cpu, unsigned int id) - return cpu; - } - --/* This function is racy, in the sense that next is unlocked, so it could return -- * the same CPU twice. A race-free version of this would be to instead store an -- * atomic sequence number, do an increment-and-return, and then iterate through -- * every possible CPU until we get to that index -- choose_cpu. However that's -- * a bit slower, and it doesn't seem like this potential race actually -- * introduces any performance loss, so we live with it. -+/* This function is racy, in the sense that it's called while last_cpu is -+ * unlocked, so it could return the same CPU twice. Adding locking or using -+ * atomic sequence numbers is slower though, and the consequences of racing are -+ * harmless, so live with it. - */ --static inline int wg_cpumask_next_online(int *next) -+static inline int wg_cpumask_next_online(int *last_cpu) - { -- int cpu = *next; -- -- while (unlikely(!cpumask_test_cpu(cpu, cpu_online_mask))) -- cpu = cpumask_next(cpu, cpu_online_mask) % nr_cpumask_bits; -- *next = cpumask_next(cpu, cpu_online_mask) % nr_cpumask_bits; -+ int cpu = cpumask_next(*last_cpu, cpu_online_mask); -+ if (cpu >= nr_cpu_ids) -+ cpu = cpumask_first(cpu_online_mask); -+ *last_cpu = cpu; - return cpu; - } - -@@ -159,7 +156,7 @@ static inline void wg_prev_queue_drop_peeked(struct prev_queue *queue) - - static inline int wg_queue_enqueue_per_device_and_peer( - struct crypt_queue *device_queue, struct prev_queue *peer_queue, -- struct sk_buff *skb, struct workqueue_struct *wq, int *next_cpu) -+ struct sk_buff *skb, struct workqueue_struct *wq) - { - int cpu; - -@@ -173,7 +170,7 @@ static inline int wg_queue_enqueue_per_device_and_peer( - /* Then we queue it up in the device queue, which consumes the - * packet as soon as it can. - */ -- cpu = wg_cpumask_next_online(next_cpu); -+ cpu = wg_cpumask_next_online(&device_queue->last_cpu); - if (unlikely(ptr_ring_produce_bh(&device_queue->ring, skb))) - return -EPIPE; - queue_work_on(cpu, wq, &per_cpu_ptr(device_queue->worker, cpu)->work); -diff --git a/drivers/net/wireguard/receive.c b/drivers/net/wireguard/receive.c -index 7135d51d2d872..0b3f0c8435509 100644 ---- a/drivers/net/wireguard/receive.c -+++ b/drivers/net/wireguard/receive.c -@@ -524,7 +524,7 @@ static void wg_packet_consume_data(struct wg_device *wg, struct sk_buff *skb) - goto err; - - ret = wg_queue_enqueue_per_device_and_peer(&wg->decrypt_queue, &peer->rx_queue, skb, -- wg->packet_crypt_wq, &wg->decrypt_queue.last_cpu); -+ wg->packet_crypt_wq); - if (unlikely(ret == -EPIPE)) - wg_queue_enqueue_per_peer_rx(skb, PACKET_STATE_DEAD); - if (likely(!ret || ret == -EPIPE)) { -diff --git a/drivers/net/wireguard/send.c b/drivers/net/wireguard/send.c -index 5368f7c35b4bf..95c853b59e1da 100644 ---- a/drivers/net/wireguard/send.c -+++ b/drivers/net/wireguard/send.c -@@ -318,7 +318,7 @@ static void wg_packet_create_data(struct wg_peer *peer, struct sk_buff *first) - goto err; - - ret = wg_queue_enqueue_per_device_and_peer(&wg->encrypt_queue, &peer->tx_queue, first, -- wg->packet_crypt_wq, &wg->encrypt_queue.last_cpu); -+ wg->packet_crypt_wq); - if (unlikely(ret == -EPIPE)) - wg_queue_enqueue_per_peer_tx(first, PACKET_STATE_DEAD); - err: --- -cgit