stable.vger.kernel.org archive mirror
 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:00 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).