All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, "Björn Töpel" <bjorn.topel@intel.com>,
	"Daniel Borkmann" <daniel@iogearbox.net>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Sasha Levin" <sashal@kernel.org>
Subject: [PATCH 5.10 014/167] net: Introduce preferred busy-polling
Date: Mon, 26 Jul 2021 17:37:27 +0200	[thread overview]
Message-ID: <20210726153839.841834200@linuxfoundation.org> (raw)
In-Reply-To: <20210726153839.371771838@linuxfoundation.org>

From: Björn Töpel <bjorn.topel@intel.com>

[ Upstream commit 7fd3253a7de6a317a0683f83739479fb880bffc8 ]

The existing busy-polling mode, enabled by the SO_BUSY_POLL socket
option or system-wide using the /proc/sys/net/core/busy_read knob, is
an opportunistic. That means that if the NAPI context is not
scheduled, it will poll it. If, after busy-polling, the budget is
exceeded the busy-polling logic will schedule the NAPI onto the
regular softirq handling.

One implication of the behavior above is that a busy/heavy loaded NAPI
context will never enter/allow for busy-polling. Some applications
prefer that most NAPI processing would be done by busy-polling.

This series adds a new socket option, SO_PREFER_BUSY_POLL, that works
in concert with the napi_defer_hard_irqs and gro_flush_timeout
knobs. The napi_defer_hard_irqs and gro_flush_timeout knobs were
introduced in commit 6f8b12d661d0 ("net: napi: add hard irqs deferral
feature"), and allows for a user to defer interrupts to be enabled and
instead schedule the NAPI context from a watchdog timer. When a user
enables the SO_PREFER_BUSY_POLL, again with the other knobs enabled,
and the NAPI context is being processed by a softirq, the softirq NAPI
processing will exit early to allow the busy-polling to be performed.

If the application stops performing busy-polling via a system call,
the watchdog timer defined by gro_flush_timeout will timeout, and
regular softirq handling will resume.

In summary; Heavy traffic applications that prefer busy-polling over
softirq processing should use this option.

Example usage:

  $ echo 2 | sudo tee /sys/class/net/ens785f1/napi_defer_hard_irqs
  $ echo 200000 | sudo tee /sys/class/net/ens785f1/gro_flush_timeout

Note that the timeout should be larger than the userspace processing
window, otherwise the watchdog will timeout and fall back to regular
softirq processing.

Enable the SO_BUSY_POLL/SO_PREFER_BUSY_POLL options on your socket.

Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/bpf/20201130185205.196029-2-bjorn.topel@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 arch/alpha/include/uapi/asm/socket.h  |  2 +
 arch/mips/include/uapi/asm/socket.h   |  2 +
 arch/parisc/include/uapi/asm/socket.h |  2 +
 arch/sparc/include/uapi/asm/socket.h  |  2 +
 fs/eventpoll.c                        |  2 +-
 include/linux/netdevice.h             | 35 +++++++-----
 include/net/busy_poll.h               |  5 +-
 include/net/sock.h                    |  4 ++
 include/uapi/asm-generic/socket.h     |  2 +
 net/core/dev.c                        | 78 +++++++++++++++++++++------
 net/core/sock.c                       |  9 ++++
 11 files changed, 111 insertions(+), 32 deletions(-)

diff --git a/arch/alpha/include/uapi/asm/socket.h b/arch/alpha/include/uapi/asm/socket.h
index de6c4df61082..538359642554 100644
--- a/arch/alpha/include/uapi/asm/socket.h
+++ b/arch/alpha/include/uapi/asm/socket.h
@@ -124,6 +124,8 @@
 
 #define SO_DETACH_REUSEPORT_BPF 68
 
+#define SO_PREFER_BUSY_POLL	69
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64
diff --git a/arch/mips/include/uapi/asm/socket.h b/arch/mips/include/uapi/asm/socket.h
index d0a9ed2ca2d6..e406e73b5e6e 100644
--- a/arch/mips/include/uapi/asm/socket.h
+++ b/arch/mips/include/uapi/asm/socket.h
@@ -135,6 +135,8 @@
 
 #define SO_DETACH_REUSEPORT_BPF 68
 
+#define SO_PREFER_BUSY_POLL	69
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64
diff --git a/arch/parisc/include/uapi/asm/socket.h b/arch/parisc/include/uapi/asm/socket.h
index 10173c32195e..1bc46200889d 100644
--- a/arch/parisc/include/uapi/asm/socket.h
+++ b/arch/parisc/include/uapi/asm/socket.h
@@ -116,6 +116,8 @@
 
 #define SO_DETACH_REUSEPORT_BPF 0x4042
 
+#define SO_PREFER_BUSY_POLL	0x4043
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64
diff --git a/arch/sparc/include/uapi/asm/socket.h b/arch/sparc/include/uapi/asm/socket.h
index 8029b681fc7c..99688cf673a4 100644
--- a/arch/sparc/include/uapi/asm/socket.h
+++ b/arch/sparc/include/uapi/asm/socket.h
@@ -117,6 +117,8 @@
 
 #define SO_DETACH_REUSEPORT_BPF  0x0047
 
+#define SO_PREFER_BUSY_POLL	 0x0048
+
 #if !defined(__KERNEL__)
 
 
diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 6094b2e9058b..9e5b05e818ad 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -397,7 +397,7 @@ static void ep_busy_loop(struct eventpoll *ep, int nonblock)
 	unsigned int napi_id = READ_ONCE(ep->napi_id);
 
 	if ((napi_id >= MIN_NAPI_ID) && net_busy_loop_on())
-		napi_busy_loop(napi_id, nonblock ? NULL : ep_busy_loop_end, ep);
+		napi_busy_loop(napi_id, nonblock ? NULL : ep_busy_loop_end, ep, false);
 }
 
 static inline void ep_reset_busy_poll_napi_id(struct eventpoll *ep)
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index e37480b5f4c0..2488638a8749 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -350,23 +350,25 @@ struct napi_struct {
 };
 
 enum {
-	NAPI_STATE_SCHED,	/* Poll is scheduled */
-	NAPI_STATE_MISSED,	/* reschedule a napi */
-	NAPI_STATE_DISABLE,	/* Disable pending */
-	NAPI_STATE_NPSVC,	/* Netpoll - don't dequeue from poll_list */
-	NAPI_STATE_LISTED,	/* NAPI added to system lists */
-	NAPI_STATE_NO_BUSY_POLL,/* Do not add in napi_hash, no busy polling */
-	NAPI_STATE_IN_BUSY_POLL,/* sk_busy_loop() owns this NAPI */
+	NAPI_STATE_SCHED,		/* Poll is scheduled */
+	NAPI_STATE_MISSED,		/* reschedule a napi */
+	NAPI_STATE_DISABLE,		/* Disable pending */
+	NAPI_STATE_NPSVC,		/* Netpoll - don't dequeue from poll_list */
+	NAPI_STATE_LISTED,		/* NAPI added to system lists */
+	NAPI_STATE_NO_BUSY_POLL,	/* Do not add in napi_hash, no busy polling */
+	NAPI_STATE_IN_BUSY_POLL,	/* sk_busy_loop() owns this NAPI */
+	NAPI_STATE_PREFER_BUSY_POLL,	/* prefer busy-polling over softirq processing*/
 };
 
 enum {
-	NAPIF_STATE_SCHED	 = BIT(NAPI_STATE_SCHED),
-	NAPIF_STATE_MISSED	 = BIT(NAPI_STATE_MISSED),
-	NAPIF_STATE_DISABLE	 = BIT(NAPI_STATE_DISABLE),
-	NAPIF_STATE_NPSVC	 = BIT(NAPI_STATE_NPSVC),
-	NAPIF_STATE_LISTED	 = BIT(NAPI_STATE_LISTED),
-	NAPIF_STATE_NO_BUSY_POLL = BIT(NAPI_STATE_NO_BUSY_POLL),
-	NAPIF_STATE_IN_BUSY_POLL = BIT(NAPI_STATE_IN_BUSY_POLL),
+	NAPIF_STATE_SCHED		= BIT(NAPI_STATE_SCHED),
+	NAPIF_STATE_MISSED		= BIT(NAPI_STATE_MISSED),
+	NAPIF_STATE_DISABLE		= BIT(NAPI_STATE_DISABLE),
+	NAPIF_STATE_NPSVC		= BIT(NAPI_STATE_NPSVC),
+	NAPIF_STATE_LISTED		= BIT(NAPI_STATE_LISTED),
+	NAPIF_STATE_NO_BUSY_POLL	= BIT(NAPI_STATE_NO_BUSY_POLL),
+	NAPIF_STATE_IN_BUSY_POLL	= BIT(NAPI_STATE_IN_BUSY_POLL),
+	NAPIF_STATE_PREFER_BUSY_POLL	= BIT(NAPI_STATE_PREFER_BUSY_POLL),
 };
 
 enum gro_result {
@@ -437,6 +439,11 @@ static inline bool napi_disable_pending(struct napi_struct *n)
 	return test_bit(NAPI_STATE_DISABLE, &n->state);
 }
 
+static inline bool napi_prefer_busy_poll(struct napi_struct *n)
+{
+	return test_bit(NAPI_STATE_PREFER_BUSY_POLL, &n->state);
+}
+
 bool napi_schedule_prep(struct napi_struct *n);
 
 /**
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h
index b001fa91c14e..0292b8353d7e 100644
--- a/include/net/busy_poll.h
+++ b/include/net/busy_poll.h
@@ -43,7 +43,7 @@ bool sk_busy_loop_end(void *p, unsigned long start_time);
 
 void napi_busy_loop(unsigned int napi_id,
 		    bool (*loop_end)(void *, unsigned long),
-		    void *loop_end_arg);
+		    void *loop_end_arg, bool prefer_busy_poll);
 
 #else /* CONFIG_NET_RX_BUSY_POLL */
 static inline unsigned long net_busy_loop_on(void)
@@ -105,7 +105,8 @@ static inline void sk_busy_loop(struct sock *sk, int nonblock)
 	unsigned int napi_id = READ_ONCE(sk->sk_napi_id);
 
 	if (napi_id >= MIN_NAPI_ID)
-		napi_busy_loop(napi_id, nonblock ? NULL : sk_busy_loop_end, sk);
+		napi_busy_loop(napi_id, nonblock ? NULL : sk_busy_loop_end, sk,
+			       READ_ONCE(sk->sk_prefer_busy_poll));
 #endif
 }
 
diff --git a/include/net/sock.h b/include/net/sock.h
index 3c7addf95150..95311369567f 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -301,6 +301,7 @@ struct bpf_local_storage;
   *	@sk_ack_backlog: current listen backlog
   *	@sk_max_ack_backlog: listen backlog set in listen()
   *	@sk_uid: user id of owner
+  *	@sk_prefer_busy_poll: prefer busypolling over softirq processing
   *	@sk_priority: %SO_PRIORITY setting
   *	@sk_type: socket type (%SOCK_STREAM, etc)
   *	@sk_protocol: which protocol this socket belongs in this network family
@@ -479,6 +480,9 @@ struct sock {
 	u32			sk_ack_backlog;
 	u32			sk_max_ack_backlog;
 	kuid_t			sk_uid;
+#ifdef CONFIG_NET_RX_BUSY_POLL
+	u8			sk_prefer_busy_poll;
+#endif
 	struct pid		*sk_peer_pid;
 	const struct cred	*sk_peer_cred;
 	long			sk_rcvtimeo;
diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h
index 77f7c1638eb1..7dd02408b7ce 100644
--- a/include/uapi/asm-generic/socket.h
+++ b/include/uapi/asm-generic/socket.h
@@ -119,6 +119,8 @@
 
 #define SO_DETACH_REUSEPORT_BPF 68
 
+#define SO_PREFER_BUSY_POLL	69
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
diff --git a/net/core/dev.c b/net/core/dev.c
index 2fdf30eefc59..6b08de52bf0e 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -6496,7 +6496,8 @@ bool napi_complete_done(struct napi_struct *n, int work_done)
 
 		WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
 
-		new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED);
+		new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED |
+			      NAPIF_STATE_PREFER_BUSY_POLL);
 
 		/* If STATE_MISSED was set, leave STATE_SCHED set,
 		 * because we will call napi->poll() one more time.
@@ -6535,8 +6536,29 @@ static struct napi_struct *napi_by_id(unsigned int napi_id)
 
 #define BUSY_POLL_BUDGET 8
 
-static void busy_poll_stop(struct napi_struct *napi, void *have_poll_lock)
+static void __busy_poll_stop(struct napi_struct *napi, bool skip_schedule)
 {
+	if (!skip_schedule) {
+		gro_normal_list(napi);
+		__napi_schedule(napi);
+		return;
+	}
+
+	if (napi->gro_bitmask) {
+		/* flush too old packets
+		 * If HZ < 1000, flush all packets.
+		 */
+		napi_gro_flush(napi, HZ >= 1000);
+	}
+
+	gro_normal_list(napi);
+	clear_bit(NAPI_STATE_SCHED, &napi->state);
+}
+
+static void busy_poll_stop(struct napi_struct *napi, void *have_poll_lock, bool prefer_busy_poll)
+{
+	bool skip_schedule = false;
+	unsigned long timeout;
 	int rc;
 
 	/* Busy polling means there is a high chance device driver hard irq
@@ -6553,6 +6575,15 @@ static void busy_poll_stop(struct napi_struct *napi, void *have_poll_lock)
 
 	local_bh_disable();
 
+	if (prefer_busy_poll) {
+		napi->defer_hard_irqs_count = READ_ONCE(napi->dev->napi_defer_hard_irqs);
+		timeout = READ_ONCE(napi->dev->gro_flush_timeout);
+		if (napi->defer_hard_irqs_count && timeout) {
+			hrtimer_start(&napi->timer, ns_to_ktime(timeout), HRTIMER_MODE_REL_PINNED);
+			skip_schedule = true;
+		}
+	}
+
 	/* All we really want here is to re-enable device interrupts.
 	 * Ideally, a new ndo_busy_poll_stop() could avoid another round.
 	 */
@@ -6563,19 +6594,14 @@ static void busy_poll_stop(struct napi_struct *napi, void *have_poll_lock)
 	 */
 	trace_napi_poll(napi, rc, BUSY_POLL_BUDGET);
 	netpoll_poll_unlock(have_poll_lock);
-	if (rc == BUSY_POLL_BUDGET) {
-		/* As the whole budget was spent, we still own the napi so can
-		 * safely handle the rx_list.
-		 */
-		gro_normal_list(napi);
-		__napi_schedule(napi);
-	}
+	if (rc == BUSY_POLL_BUDGET)
+		__busy_poll_stop(napi, skip_schedule);
 	local_bh_enable();
 }
 
 void napi_busy_loop(unsigned int napi_id,
 		    bool (*loop_end)(void *, unsigned long),
-		    void *loop_end_arg)
+		    void *loop_end_arg, bool prefer_busy_poll)
 {
 	unsigned long start_time = loop_end ? busy_loop_current_time() : 0;
 	int (*napi_poll)(struct napi_struct *napi, int budget);
@@ -6603,12 +6629,18 @@ restart:
 			 * we avoid dirtying napi->state as much as we can.
 			 */
 			if (val & (NAPIF_STATE_DISABLE | NAPIF_STATE_SCHED |
-				   NAPIF_STATE_IN_BUSY_POLL))
+				   NAPIF_STATE_IN_BUSY_POLL)) {
+				if (prefer_busy_poll)
+					set_bit(NAPI_STATE_PREFER_BUSY_POLL, &napi->state);
 				goto count;
+			}
 			if (cmpxchg(&napi->state, val,
 				    val | NAPIF_STATE_IN_BUSY_POLL |
-					  NAPIF_STATE_SCHED) != val)
+					  NAPIF_STATE_SCHED) != val) {
+				if (prefer_busy_poll)
+					set_bit(NAPI_STATE_PREFER_BUSY_POLL, &napi->state);
 				goto count;
+			}
 			have_poll_lock = netpoll_poll_lock(napi);
 			napi_poll = napi->poll;
 		}
@@ -6626,7 +6658,7 @@ count:
 
 		if (unlikely(need_resched())) {
 			if (napi_poll)
-				busy_poll_stop(napi, have_poll_lock);
+				busy_poll_stop(napi, have_poll_lock, prefer_busy_poll);
 			preempt_enable();
 			rcu_read_unlock();
 			cond_resched();
@@ -6637,7 +6669,7 @@ count:
 		cpu_relax();
 	}
 	if (napi_poll)
-		busy_poll_stop(napi, have_poll_lock);
+		busy_poll_stop(napi, have_poll_lock, prefer_busy_poll);
 	preempt_enable();
 out:
 	rcu_read_unlock();
@@ -6688,8 +6720,10 @@ static enum hrtimer_restart napi_watchdog(struct hrtimer *timer)
 	 * NAPI_STATE_MISSED, since we do not react to a device IRQ.
 	 */
 	if (!napi_disable_pending(napi) &&
-	    !test_and_set_bit(NAPI_STATE_SCHED, &napi->state))
+	    !test_and_set_bit(NAPI_STATE_SCHED, &napi->state)) {
+		clear_bit(NAPI_STATE_PREFER_BUSY_POLL, &napi->state);
 		__napi_schedule_irqoff(napi);
+	}
 
 	return HRTIMER_NORESTART;
 }
@@ -6747,6 +6781,7 @@ void napi_disable(struct napi_struct *n)
 
 	hrtimer_cancel(&n->timer);
 
+	clear_bit(NAPI_STATE_PREFER_BUSY_POLL, &n->state);
 	clear_bit(NAPI_STATE_DISABLE, &n->state);
 }
 EXPORT_SYMBOL(napi_disable);
@@ -6819,6 +6854,19 @@ static int napi_poll(struct napi_struct *n, struct list_head *repoll)
 		goto out_unlock;
 	}
 
+	/* The NAPI context has more processing work, but busy-polling
+	 * is preferred. Exit early.
+	 */
+	if (napi_prefer_busy_poll(n)) {
+		if (napi_complete_done(n, work)) {
+			/* If timeout is not set, we need to make sure
+			 * that the NAPI is re-scheduled.
+			 */
+			napi_schedule(n);
+		}
+		goto out_unlock;
+	}
+
 	if (n->gro_bitmask) {
 		/* flush too old packets
 		 * If HZ < 1000, flush all packets.
diff --git a/net/core/sock.c b/net/core/sock.c
index 7de51ea15cdf..cf0e5fc3a8ba 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1167,6 +1167,12 @@ set_sndbuf:
 				sk->sk_ll_usec = val;
 		}
 		break;
+	case SO_PREFER_BUSY_POLL:
+		if (valbool && !capable(CAP_NET_ADMIN))
+			ret = -EPERM;
+		else
+			WRITE_ONCE(sk->sk_prefer_busy_poll, valbool);
+		break;
 #endif
 
 	case SO_MAX_PACING_RATE:
@@ -1531,6 +1537,9 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
 	case SO_BUSY_POLL:
 		v.val = sk->sk_ll_usec;
 		break;
+	case SO_PREFER_BUSY_POLL:
+		v.val = READ_ONCE(sk->sk_prefer_busy_poll);
+		break;
 #endif
 
 	case SO_MAX_PACING_RATE:
-- 
2.30.2




  parent reply	other threads:[~2021-07-26 16:15 UTC|newest]

Thread overview: 183+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-26 15:37 [PATCH 5.10 000/167] 5.10.54-rc1 review Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 001/167] igc: Fix use-after-free error during reset Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 002/167] igb: " Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 003/167] igc: change default return of igc_read_phy_reg() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 004/167] ixgbe: Fix an error handling path in ixgbe_probe() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 005/167] igc: Fix an error handling path in igc_probe() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 006/167] igb: Fix an error handling path in igb_probe() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 007/167] fm10k: Fix an error handling path in fm10k_probe() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 008/167] e1000e: Fix an error handling path in e1000_probe() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 009/167] iavf: Fix an error handling path in iavf_probe() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 010/167] igb: Check if num of q_vectors is smaller than max before array access Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 011/167] igb: Fix position of assignment to *ring Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 012/167] gve: Fix an error handling path in gve_probe() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 013/167] net: add kcov handle to skb extensions Greg Kroah-Hartman
2021-07-26 15:37 ` Greg Kroah-Hartman [this message]
2021-07-28  7:48   ` [PATCH 5.10 014/167] net: Introduce preferred busy-polling Pavel Machek
2021-07-28 16:08     ` Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 015/167] bonding: fix suspicious RCU usage in bond_ipsec_add_sa() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 016/167] bonding: fix null dereference " Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 017/167] ixgbevf: use xso.real_dev instead of xso.dev in callback functions of struct xfrmdev_ops Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 018/167] bonding: fix suspicious RCU usage in bond_ipsec_del_sa() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 019/167] bonding: disallow setting nested bonding + ipsec offload Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 020/167] bonding: Add struct bond_ipesc to manage SA Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 021/167] bonding: fix suspicious RCU usage in bond_ipsec_offload_ok() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 022/167] bonding: fix incorrect return value of bond_ipsec_offload_ok() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 023/167] ipv6: fix disable_policy for fwd packets Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 024/167] stmmac: platform: Fix signedness bug in stmmac_probe_config_dt() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 025/167] selftests: icmp_redirect: remove from checking for IPv6 route get Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 026/167] selftests: icmp_redirect: IPv6 PMTU info should be cleared after redirect Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 027/167] pwm: sprd: Ensure configuring period and duty_cycle isnt wrongly skipped Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 028/167] cxgb4: fix IRQ free race during driver unload Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 029/167] net: do not reuse skbuff allocated from skbuff_fclone_cache in the skb cache Greg Kroah-Hartman
2021-07-27  8:22   ` Pavel Machek
2021-07-27  9:50     ` Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 030/167] mptcp: fix warning in __skb_flow_dissect() when do syn cookie for subflow join Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 031/167] nvme-pci: do not call nvme_dev_remove_admin from nvme_remove Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 032/167] KVM: x86/pmu: Clear anythread deprecated bit when 0xa leaf is unsupported on the SVM Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 033/167] perf inject: Fix dso->nsinfo refcounting Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 034/167] perf map: " Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 035/167] perf probe: " Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 036/167] perf env: Fix sibling_dies memory leak Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 037/167] perf test session_topology: Delete session->evlist Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 038/167] perf test event_update: Fix memory leak of evlist Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 039/167] perf dso: Fix memory leak in dso__new_map() Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 040/167] perf test maps__merge_in: Fix memory leak of maps Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 041/167] perf env: Fix memory leak of cpu_pmu_caps Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 042/167] perf report: Free generated help strings for sort option Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 043/167] perf script: Fix memory threads and cpus leaks on exit Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 044/167] perf lzma: Close lzma stream " Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 045/167] perf probe-file: Delete namelist in del_events() on the error path Greg Kroah-Hartman
2021-07-26 15:37 ` [PATCH 5.10 046/167] perf data: Close all files in close_dir() Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 047/167] perf sched: Fix record failure when CONFIG_SCHEDSTATS is not set Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 048/167] ASoC: wm_adsp: Correct wm_coeff_tlv_get handling Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 049/167] spi: imx: add a check for speed_hz before calculating the clock Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 050/167] spi: stm32: fixes pm_runtime calls in probe/remove Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 051/167] regulator: hi6421: Use correct variable type for regmap api val argument Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 052/167] regulator: hi6421: Fix getting wrong drvdata Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 053/167] spi: mediatek: fix fifo rx mode Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 054/167] ASoC: rt5631: Fix regcache sync errors on resume Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 055/167] bpf, test: fix NULL pointer dereference on invalid expected_attach_type Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 056/167] bpf: Fix tail_call_reachable rejection for interpreter when jit failed Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 057/167] xdp, net: Fix use-after-free in bpf_xdp_link_release Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 058/167] timers: Fix get_next_timer_interrupt() with no timers pending Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 059/167] liquidio: Fix unintentional sign extension issue on left shift of u16 Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 060/167] s390/bpf: Perform r1 range checking before accessing jit->seen_reg[r1] Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 061/167] bpf, sockmap: Fix potential memory leak on unlikely error case Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 062/167] bpf, sockmap, tcp: sk_prot needs inuse_idx set for proc stats Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 063/167] bpf, sockmap, udp: " Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 064/167] bpftool: Check malloc return value in mount_bpffs_for_pin Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 065/167] net: fix uninit-value in caif_seqpkt_sendmsg Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 066/167] usb: hso: fix error handling code of hso_create_net_device Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 067/167] dma-mapping: handle vmalloc addresses in dma_common_{mmap,get_sgtable} Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 068/167] efi/tpm: Differentiate missing and invalid final event log table Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 069/167] net: decnet: Fix sleeping inside in af_decnet Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 070/167] KVM: PPC: Book3S: Fix CONFIG_TRANSACTIONAL_MEM=n crash Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 071/167] KVM: PPC: Fix kvm_arch_vcpu_ioctl vcpu_load leak Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 072/167] net: sched: fix memory leak in tcindex_partial_destroy_work Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 073/167] sctp: trim optlen when its a huge value in sctp_setsockopt Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 074/167] netrom: Decrease sock refcount when sock timers expire Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 075/167] scsi: iscsi: Fix iface sysfs attr detection Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 076/167] scsi: target: Fix protect handling in WRITE SAME(32) Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 077/167] spi: cadence: Correct initialisation of runtime PM again Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 078/167] ACPI: Kconfig: Fix table override from built-in initrd Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 079/167] bnxt_en: dont disable an already disabled PCI device Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 080/167] bnxt_en: Refresh RoCE capabilities in bnxt_ulp_probe() Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 081/167] bnxt_en: Add missing check for BNXT_STATE_ABORT_ERR in bnxt_fw_rset_task() Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 082/167] bnxt_en: Validate vlan protocol ID on RX packets Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 083/167] bnxt_en: Check abort error state in bnxt_half_open_nic() Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 084/167] net: hisilicon: rename CACHE_LINE_MASK to avoid redefinition Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 085/167] net/tcp_fastopen: fix data races around tfo_active_disable_stamp Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 086/167] ALSA: hda: intel-dsp-cfg: add missing ElkhartLake PCI ID Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 087/167] net: hns3: fix possible mismatches resp of mailbox Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 088/167] net: hns3: fix rx VLAN offload state inconsistent issue Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 089/167] spi: spi-bcm2835: Fix deadlock Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 090/167] net/sched: act_skbmod: Skip non-Ethernet packets Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 091/167] ipv6: fix another slab-out-of-bounds in fib6_nh_flush_exceptions Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 092/167] ceph: dont WARN if were still opening a session to an MDS Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 093/167] nvme-pci: dont WARN_ON in nvme_reset_work if ctrl.state is not RESETTING Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 094/167] Revert "USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem" Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 095/167] afs: Fix tracepoint string placement with built-in AFS Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 096/167] r8169: Avoid duplicate sysfs entry creation error Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 097/167] nvme: set the PRACT bit when using Write Zeroes with T10 PI Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 098/167] sctp: update active_key for asoc when old key is being replaced Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 099/167] tcp: disable TFO blackhole logic by default Greg Kroah-Hartman
2021-07-28 10:12   ` Pavel Machek
2021-07-28 16:32     ` Yuchung Cheng
2022-01-31 17:17       ` Jesse Hathaway
2021-07-26 15:38 ` [PATCH 5.10 100/167] net: dsa: sja1105: make VID 4095 a bridge VLAN too Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 101/167] net: sched: cls_api: Fix the the wrong parameter Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 102/167] drm/panel: raspberrypi-touchscreen: Prevent double-free Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 103/167] cifs: only write 64kb at a time when fallocating a small region of a file Greg Kroah-Hartman
2021-07-28 10:15   ` Pavel Machek
2021-07-26 15:38 ` [PATCH 5.10 104/167] cifs: fix fallocate when trying to allocate a hole Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 105/167] proc: Avoid mixing integer types in mem_rw() Greg Kroah-Hartman
2021-07-26 15:38 ` [PATCH 5.10 106/167] mmc: core: Dont allocate IDA for OF aliases Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 107/167] s390/ftrace: fix ftrace_update_ftrace_func implementation Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 108/167] s390/boot: fix use of expolines in the DMA code Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 109/167] ALSA: usb-audio: Add missing proc text entry for BESPOKEN type Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 110/167] ALSA: usb-audio: Add registration quirk for JBL Quantum headsets Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 111/167] ALSA: sb: Fix potential ABBA deadlock in CSP driver Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 112/167] ALSA: hda/realtek: Fix pop noise and 2 Front Mic issues on a machine Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 113/167] ALSA: hdmi: Expose all pins on MSI MS-7C94 board Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 114/167] ALSA: pcm: Call substream ack() method upon compat mmap commit Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 115/167] ALSA: pcm: Fix mmap capability check Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 116/167] Revert "usb: renesas-xhci: Fix handling of unknown ROM state" Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 117/167] usb: xhci: avoid renesas_usb_fw.mem when its unusable Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 118/167] xhci: Fix lost USB 2 remote wake Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 119/167] KVM: PPC: Book3S: Fix H_RTAS rets buffer overflow Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 120/167] KVM: PPC: Book3S HV Nested: Sanitise H_ENTER_NESTED TM state Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 121/167] usb: hub: Disable USB 3 device initiated lpm if exit latency is too high Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 122/167] usb: hub: Fix link power management max exit latency (MEL) calculations Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 123/167] USB: usb-storage: Add LaCie Rugged USB3-FW to IGNORE_UAS Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 124/167] usb: max-3421: Prevent corruption of freed memory Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 125/167] usb: renesas_usbhs: Fix superfluous irqs happen after usb_pkt_pop() Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 126/167] USB: serial: option: add support for u-blox LARA-R6 family Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 127/167] USB: serial: cp210x: fix comments for GE CS1000 Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 128/167] USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 129/167] usb: gadget: Fix Unbalanced pm_runtime_enable in tegra_xudc_probe Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 130/167] usb: dwc2: gadget: Fix GOUTNAK flow for Slave mode Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 131/167] usb: dwc2: gadget: Fix sending zero length packet in DDMA mode Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 132/167] usb: typec: stusb160x: register role switch before interrupt registration Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 133/167] firmware/efi: Tell memblock about EFI iomem reservations Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 134/167] tracepoints: Update static_call before tp_funcs when adding a tracepoint Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 135/167] tracing/histogram: Rename "cpu" to "common_cpu" Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 136/167] tracing: Fix bug in rb_per_cpu_empty() that might cause deadloop Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 137/167] tracing: Synthetic event field_pos is an index not a boolean Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 138/167] btrfs: check for missing device in btrfs_trim_fs Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 139/167] media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf() Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 140/167] ixgbe: Fix packet corruption due to missing DMA sync Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 141/167] bus: mhi: core: Validate channel ID when processing command completions Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 142/167] posix-cpu-timers: Fix rearm racing against process tick Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 143/167] selftest: use mmap instead of posix_memalign to allocate memory Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 144/167] io_uring: explicitly count entries for poll reqs Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 145/167] io_uring: remove double poll entry on arm failure Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 146/167] userfaultfd: do not untag user pointers Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 147/167] memblock: make for_each_mem_range() traverse MEMBLOCK_HOTPLUG regions Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 148/167] hugetlbfs: fix mount mode command line processing Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 149/167] rbd: dont hold lock_rwsem while running_list is being drained Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 150/167] rbd: always kick acquire on "acquired" and "released" notifications Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 151/167] misc: eeprom: at24: Always append device id even if label property is set Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 152/167] nds32: fix up stack guard gap Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 153/167] driver core: Prevent warning when removing a device link from unregistered consumer Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 154/167] Revert "drm/i915: Propagate errors on awaiting already signaled fences" Greg Kroah-Hartman
2021-07-27 21:35   ` Pavel Machek
2021-07-28 11:59     ` Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 155/167] drm: Return -ENOTTY for non-drm ioctls Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 156/167] drm/amdgpu: update golden setting for sienna_cichlid Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 157/167] net: dsa: mv88e6xxx: enable SerDes RX stats for Topaz Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 158/167] net: dsa: mv88e6xxx: enable SerDes PCS register dump via ethtool -d on Topaz Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 159/167] PCI: Mark AMD Navi14 GPU ATS as broken Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 160/167] bonding: fix build issue Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 161/167] skbuff: Release nfct refcount on napi stolen or re-used skbs Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 162/167] Documentation: Fix intiramfs script name Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 163/167] perf inject: Close inject.output on exit Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 164/167] usb: ehci: Prevent missed ehci interrupts with edge-triggered MSI Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 165/167] drm/i915/gvt: Clear d3_entered on elsp cmd submission Greg Kroah-Hartman
2021-07-26 15:39 ` [PATCH 5.10 166/167] sfc: ensure correct number of XDP queues Greg Kroah-Hartman
2021-07-26 15:40 ` [PATCH 5.10 167/167] xhci: add xhci_get_virt_ep() helper Greg Kroah-Hartman
2021-07-28 10:10   ` Pavel Machek
2021-07-28 10:20     ` Greg Kroah-Hartman
2021-07-26 16:52 ` [PATCH 5.10 000/167] 5.10.54-rc1 review Daniel Díaz
2021-07-26 21:36 ` Florian Fainelli
2021-07-27  0:35 ` Shuah Khan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210726153839.841834200@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=bjorn.topel@intel.com \
    --cc=daniel@iogearbox.net \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.