From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev,
Maciej Fijalkowski <maciej.fijalkowski@intel.com>,
Alexander Lobakin <aleksander.lobakin@intel.com>,
Jacob Keller <jacob.e.keller@intel.com>,
Michal Kubiak <michal.kubiak@intel.com>,
Alexander Nowlin <alexander.nowlin@intel.com>,
Tony Nguyen <anthony.l.nguyen@intel.com>
Subject: [PATCH 6.18 190/193] ice: switch to Page Pool
Date: Fri, 23 Oct 2026 18:37:47 +0200 [thread overview]
Message-ID: <20261023163718.715324884@linuxfoundation.org> (raw)
In-Reply-To: <20261023163714.201276352@linuxfoundation.org>
6.18-stable review patch. If anyone has any objections, please let me know.
------------------
From: Michal Kubiak <michal.kubiak@intel.com>
commit 93f53db9f9dc4a16b40ecd18e6d338ad57e4b670 upstream.
This patch completes the transition of the ice driver to use the Page Pool
and libeth APIs, following the same direction as commit 5fa4caff59f2
("iavf: switch to Page Pool"). With the legacy page splitting and recycling
logic already removed, the driver is now in a clean state to adopt the
modern memory model.
The Page Pool integration simplifies buffer management by offloading
DMA mapping and recycling to the core infrastructure. This eliminates
the need for driver-specific handling of headroom, buffer sizing, and
page order. The libeth helper is used for CPU-side processing, while
DMA-for-device is handled by the Page Pool core.
Additionally, this patch extends the conversion to cover XDP support.
The driver now uses libeth_xdp helpers for Rx buffer processing,
and optimizes XDP_TX by skipping per-frame DMA mapping. Instead, all
buffers are mapped as bi-directional up front, leveraging Page Pool's
lifecycle management. This significantly reduces overhead in virtualized
environments.
Performance observations:
- In typical scenarios (netperf, XDP_PASS, XDP_DROP), performance remains
on par with the previous implementation.
- In XDP_TX mode:
* With IOMMU enabled, performance improves dramatically - over 5x
increase - due to reduced DMA mapping overhead and better memory reuse.
* With IOMMU disabled, performance remains comparable to the previous
implementation, with no significant changes observed.
- In XDP_DROP mode:
* For small MTUs, (where multiple buffers can be allocated on a single
memory page), a performance drop of approximately 20% is observed.
According to 'perf top' analysis, the bottleneck is caused by atomic
reference counter increments in the Page Pool.
* For normal MTUs, (where only one buffer can be allocated within a
single memory page), performance remains comparable to baseline
levels.
This change is also a step toward a more modular and unified XDP
implementation across Intel Ethernet drivers, aligning with ongoing
efforts to consolidate and streamline feature support.
Suggested-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Suggested-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Reviewed-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Michal Kubiak <michal.kubiak@intel.com>
Tested-by: Alexander Nowlin <alexander.nowlin@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/ethernet/intel/Kconfig | 1
drivers/net/ethernet/intel/ice/ice_base.c | 91 ++---
drivers/net/ethernet/intel/ice/ice_ethtool.c | 17 -
drivers/net/ethernet/intel/ice/ice_lib.c | 1
drivers/net/ethernet/intel/ice/ice_main.c | 10
drivers/net/ethernet/intel/ice/ice_txrx.c | 440 ++++----------------------
drivers/net/ethernet/intel/ice/ice_txrx.h | 37 --
drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 65 ++-
drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 9
drivers/net/ethernet/intel/ice/ice_xsk.c | 76 +---
drivers/net/ethernet/intel/ice/ice_xsk.h | 6
11 files changed, 202 insertions(+), 551 deletions(-)
--- a/drivers/net/ethernet/intel/Kconfig
+++ b/drivers/net/ethernet/intel/Kconfig
@@ -296,6 +296,7 @@ config ICE
depends on GNSS || GNSS = n
select AUXILIARY_BUS
select DIMLIB
+ select LIBETH_XDP
select LIBIE
select LIBIE_ADMINQ
select LIBIE_FWLOG if DEBUG_FS
--- a/drivers/net/ethernet/intel/ice/ice_base.c
+++ b/drivers/net/ethernet/intel/ice/ice_base.c
@@ -2,6 +2,7 @@
/* Copyright (c) 2019, Intel Corporation. */
#include <net/xdp_sock_drv.h>
+#include <linux/net/intel/libie/rx.h>
#include "ice_base.h"
#include "ice_lib.h"
#include "ice_dcb_lib.h"
@@ -495,7 +496,7 @@ static int ice_setup_rx_ctx(struct ice_r
/* Receive Packet Data Buffer Size.
* The Packet Data Buffer Size is defined in 128 byte units.
*/
- rlan_ctx.dbuf = DIV_ROUND_UP(ICE_RXBUF_3072,
+ rlan_ctx.dbuf = DIV_ROUND_UP(ring->rx_buf_len,
BIT_ULL(ICE_RLAN_CTX_DBUF_S));
/* use 32 byte descriptors */
@@ -537,7 +538,7 @@ static int ice_setup_rx_ctx(struct ice_r
* than 5 x DBUF
*/
rlan_ctx.rxmax = min_t(u32, vsi->max_frame,
- ICE_MAX_CHAINED_RX_BUFS * ICE_RXBUF_3072);
+ ICE_MAX_CHAINED_RX_BUFS * ring->rx_buf_len);
/* Rx queue threshold in units of 64 */
rlan_ctx.lrxqthresh = 1;
@@ -573,8 +574,6 @@ static int ice_setup_rx_ctx(struct ice_r
if (vsi->type == ICE_VSI_VF)
return 0;
- ring->rx_offset = ICE_SKB_PAD;
-
/* init queue specific tail register */
ring->tail = hw->hw_addr + QRX_TAIL(pf_q);
writel(0, ring->tail);
@@ -582,38 +581,6 @@ static int ice_setup_rx_ctx(struct ice_r
return 0;
}
-static void ice_xsk_pool_fill_cb(struct ice_rx_ring *ring)
-{
- void *ctx_ptr = &ring->pkt_ctx;
- struct xsk_cb_desc desc = {};
-
- XSK_CHECK_PRIV_TYPE(struct ice_xdp_buff);
- desc.src = &ctx_ptr;
- desc.off = offsetof(struct ice_xdp_buff, pkt_ctx) -
- sizeof(struct xdp_buff);
- desc.bytes = sizeof(ctx_ptr);
- xsk_pool_fill_cb(ring->xsk_pool, &desc);
-}
-
-/**
- * ice_get_frame_sz - calculate xdp_buff::frame_sz
- * @rx_ring: the ring being configured
- *
- * Return frame size based on underlying PAGE_SIZE
- */
-static unsigned int ice_get_frame_sz(struct ice_rx_ring *rx_ring)
-{
- unsigned int frame_sz;
-
-#if (PAGE_SIZE >= 8192)
- frame_sz = rx_ring->rx_buf_len;
-#else
- frame_sz = PAGE_SIZE;
-#endif
-
- return frame_sz;
-}
-
/**
* ice_vsi_cfg_rxq - Configure an Rx queue
* @ring: the ring being configured
@@ -622,8 +589,14 @@ static unsigned int ice_get_frame_sz(str
*/
static int ice_vsi_cfg_rxq(struct ice_rx_ring *ring)
{
+ struct libeth_fq fq = {
+ .count = ring->count,
+ .nid = NUMA_NO_NODE,
+ .xdp = ice_is_xdp_ena_vsi(ring->vsi),
+ .buf_len = LIBIE_MAX_RX_BUF_LEN,
+ };
struct device *dev = ice_pf_to_dev(ring->vsi->back);
- u32 num_bufs = ICE_RX_DESC_UNUSED(ring);
+ u32 num_bufs = ICE_DESC_UNUSED(ring);
u32 rx_buf_len;
int err;
@@ -632,12 +605,16 @@ static int ice_vsi_cfg_rxq(struct ice_rx
err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev,
ring->q_index,
ring->q_vector->napi.napi_id,
- ICE_RXBUF_3072);
+ ring->rx_buf_len);
if (err)
return err;
}
ice_rx_xsk_pool(ring);
+ err = ice_realloc_rx_xdp_bufs(ring, ring->xsk_pool);
+ if (err)
+ return err;
+
if (ring->xsk_pool) {
xdp_rxq_info_unreg(&ring->xdp_rxq);
@@ -655,36 +632,38 @@ static int ice_vsi_cfg_rxq(struct ice_rx
if (err)
return err;
xsk_pool_set_rxq_info(ring->xsk_pool, &ring->xdp_rxq);
- ice_xsk_pool_fill_cb(ring);
dev_info(dev, "Registered XDP mem model MEM_TYPE_XSK_BUFF_POOL on Rx ring %d\n",
ring->q_index);
} else {
+ err = libeth_rx_fq_create(&fq, &ring->q_vector->napi);
+ if (err)
+ return err;
+
+ ring->pp = fq.pp;
+ ring->rx_fqes = fq.fqes;
+ ring->truesize = fq.truesize;
+ ring->rx_buf_len = fq.buf_len;
+
if (!xdp_rxq_info_is_reg(&ring->xdp_rxq)) {
err = __xdp_rxq_info_reg(&ring->xdp_rxq, ring->netdev,
ring->q_index,
ring->q_vector->napi.napi_id,
- ICE_RXBUF_3072);
+ ring->rx_buf_len);
if (err)
- return err;
+ goto err_destroy_fq;
}
-
- err = xdp_rxq_info_reg_mem_model(&ring->xdp_rxq,
- MEM_TYPE_PAGE_SHARED,
- NULL);
- if (err)
- return err;
+ xdp_rxq_info_attach_page_pool(&ring->xdp_rxq,
+ ring->pp);
}
}
- xdp_init_buff(&ring->xdp, ice_get_frame_sz(ring), &ring->xdp_rxq);
ring->xdp.data = NULL;
- ring->xdp_ext.pkt_ctx = &ring->pkt_ctx;
err = ice_setup_rx_ctx(ring);
if (err) {
dev_err(dev, "ice_setup_rx_ctx failed for RxQ %d, err %d\n",
ring->q_index, err);
- return err;
+ goto err_destroy_fq;
}
if (ring->xsk_pool) {
@@ -712,9 +691,19 @@ static int ice_vsi_cfg_rxq(struct ice_rx
if (ring->vsi->type == ICE_VSI_CTRL)
ice_init_ctrl_rx_descs(ring, num_bufs);
else
- ice_alloc_rx_bufs(ring, num_bufs);
+ err = ice_alloc_rx_bufs(ring, num_bufs);
+
+ if (err)
+ goto err_destroy_fq;
return 0;
+
+err_destroy_fq:
+ libeth_rx_fq_destroy(&fq);
+ ring->rx_fqes = NULL;
+ ring->pp = NULL;
+
+ return err;
}
int ice_vsi_cfg_single_rxq(struct ice_vsi *vsi, u16 q_idx)
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -10,6 +10,7 @@
#include "ice_lib.h"
#include "ice_dcb_lib.h"
#include <net/dcbnl.h>
+#include <net/libeth/rx.h>
struct ice_stats {
char stat_string[ETH_GSTRING_LEN];
@@ -1222,8 +1223,9 @@ static int ice_diag_send(struct ice_tx_r
*/
static int ice_lbtest_receive_frames(struct ice_rx_ring *rx_ring)
{
- struct ice_rx_buf *rx_buf;
+ struct libeth_fqe *rx_buf;
int valid_frames, i;
+ struct page *page;
u8 *received_buf;
valid_frames = 0;
@@ -1238,8 +1240,10 @@ static int ice_lbtest_receive_frames(str
cpu_to_le16(BIT(ICE_RX_FLEX_DESC_STATUS0_EOF_S)))))
continue;
- rx_buf = &rx_ring->rx_buf[i];
- received_buf = page_address(rx_buf->page) + rx_buf->page_offset;
+ rx_buf = &rx_ring->rx_fqes[i];
+ page = __netmem_to_page(rx_buf->netmem);
+ received_buf = page_address(page) + rx_buf->offset +
+ page->pp->p.offset;
if (ice_lbtest_check_frame(received_buf))
valid_frames++;
@@ -3304,7 +3308,8 @@ process_rx:
rx_rings[i].count = new_rx_cnt;
rx_rings[i].cached_phctime = pf->ptp.cached_phc_time;
rx_rings[i].desc = NULL;
- rx_rings[i].rx_buf = NULL;
+ rx_rings[i].xdp_buf = NULL;
+
/* this is to allow wr32 to have something to write to
* during early allocation of Rx buffers
*/
@@ -3313,10 +3318,6 @@ process_rx:
err = ice_setup_rx_ring(&rx_rings[i]);
if (err)
goto rx_unwind;
-
- /* allocate Rx buffers */
- err = ice_alloc_rx_bufs(&rx_rings[i],
- ICE_RX_DESC_UNUSED(&rx_rings[i]));
rx_unwind:
if (err) {
while (i) {
--- a/drivers/net/ethernet/intel/ice/ice_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_lib.c
@@ -1431,7 +1431,6 @@ static int ice_vsi_alloc_rings(struct ic
ring->reg_idx = vsi->rxq_map[i];
ring->vsi = vsi;
ring->netdev = vsi->netdev;
- ring->dev = dev;
ring->count = vsi->num_rx_desc;
ring->cached_phctime = pf->ptp.cached_phc_time;
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -37,6 +37,8 @@ static const char ice_copyright[] = "Cop
#define ICE_DDP_PKG_FILE ICE_DDP_PKG_PATH "ice.pkg"
MODULE_DESCRIPTION(DRV_SUMMARY);
+MODULE_IMPORT_NS("LIBETH");
+MODULE_IMPORT_NS("LIBETH_XDP");
MODULE_IMPORT_NS("LIBIE");
MODULE_IMPORT_NS("LIBIE_ADMINQ");
MODULE_IMPORT_NS("LIBIE_FWLOG");
@@ -3015,19 +3017,11 @@ ice_xdp_setup_prog(struct ice_vsi *vsi,
}
}
xdp_features_set_redirect_target(vsi->netdev, true);
- /* reallocate Rx queues that are used for zero-copy */
- xdp_ring_err = ice_realloc_zc_buf(vsi, true);
- if (xdp_ring_err)
- NL_SET_ERR_MSG_MOD(extack, "Setting up XDP Rx resources failed");
} else if (ice_is_xdp_ena_vsi(vsi) && !prog) {
xdp_features_clear_redirect_target(vsi->netdev);
xdp_ring_err = ice_destroy_xdp_rings(vsi, ICE_XDP_CFG_FULL);
if (xdp_ring_err)
NL_SET_ERR_MSG_MOD(extack, "Freeing XDP Tx resources failed");
- /* reallocate Rx queues that were used for zero-copy */
- xdp_ring_err = ice_realloc_zc_buf(vsi, false);
- if (xdp_ring_err)
- NL_SET_ERR_MSG_MOD(extack, "Freeing XDP Rx resources failed");
}
resume_if:
--- a/drivers/net/ethernet/intel/ice/ice_txrx.c
+++ b/drivers/net/ethernet/intel/ice/ice_txrx.c
@@ -7,6 +7,8 @@
#include <linux/netdevice.h>
#include <linux/prefetch.h>
#include <linux/bpf_trace.h>
+#include <linux/net/intel/libie/rx.h>
+#include <net/libeth/xdp.h>
#include <net/dsfield.h>
#include <net/mpls.h>
#include <net/xdp.h>
@@ -111,7 +113,7 @@ ice_prgm_fdir_fltr(struct ice_vsi *vsi,
static void
ice_unmap_and_free_tx_buf(struct ice_tx_ring *ring, struct ice_tx_buf *tx_buf)
{
- if (dma_unmap_len(tx_buf, len))
+ if (tx_buf->type != ICE_TX_BUF_XDP_TX && dma_unmap_len(tx_buf, len))
dma_unmap_page(ring->dev,
dma_unmap_addr(tx_buf, dma),
dma_unmap_len(tx_buf, len),
@@ -125,7 +127,7 @@ ice_unmap_and_free_tx_buf(struct ice_tx_
dev_kfree_skb_any(tx_buf->skb);
break;
case ICE_TX_BUF_XDP_TX:
- page_frag_free(tx_buf->raw_buf);
+ libeth_xdp_return_va(tx_buf->raw_buf, false);
break;
case ICE_TX_BUF_XDP_XMIT:
xdp_return_frame(tx_buf->xdpf);
@@ -513,54 +515,44 @@ err:
*/
void ice_clean_rx_ring(struct ice_rx_ring *rx_ring)
{
- struct xdp_buff *xdp = &rx_ring->xdp;
- struct device *dev = rx_ring->dev;
+ struct libeth_fq fq = {
+ .fqes = rx_ring->rx_fqes,
+ .pp = rx_ring->pp,
+ };
u32 size;
- u16 i;
-
- /* ring already cleared, nothing to do */
- if (!rx_ring->rx_buf)
- return;
if (rx_ring->xsk_pool) {
ice_xsk_clean_rx_ring(rx_ring);
goto rx_skip_free;
}
- if (xdp->data) {
- xdp_return_buff(xdp);
- xdp->data = NULL;
- }
+ /* ring already cleared, nothing to do */
+ if (!rx_ring->rx_fqes)
+ return;
+
+ libeth_xdp_return_stash(&rx_ring->xdp);
/* Free all the Rx ring sk_buffs */
- for (i = 0; i < rx_ring->count; i++) {
- struct ice_rx_buf *rx_buf = &rx_ring->rx_buf[i];
+ for (u32 i = rx_ring->next_to_clean; i != rx_ring->next_to_use; ) {
+ const struct libeth_fqe *rx_fqes = &rx_ring->rx_fqes[i];
- if (!rx_buf->page)
- continue;
+ libeth_rx_recycle_slow(rx_fqes->netmem);
- /* Invalidate cache lines that may have been written to by
- * device so that we avoid corrupting memory.
- */
- dma_sync_single_range_for_cpu(dev, rx_buf->dma,
- rx_buf->page_offset,
- ICE_RXBUF_3072,
- DMA_FROM_DEVICE);
-
- /* free resources associated with mapping */
- dma_unmap_page_attrs(dev, rx_buf->dma, PAGE_SIZE,
- DMA_FROM_DEVICE, ICE_RX_DMA_ATTR);
- __free_page(rx_buf->page);
+ if (unlikely(++i == rx_ring->count))
+ i = 0;
+ }
- rx_buf->page = NULL;
- rx_buf->page_offset = 0;
+ if (rx_ring->vsi->type == ICE_VSI_PF &&
+ xdp_rxq_info_is_reg(&rx_ring->xdp_rxq)) {
+ xdp_rxq_info_detach_mem_model(&rx_ring->xdp_rxq);
+ xdp_rxq_info_unreg(&rx_ring->xdp_rxq);
}
+ libeth_rx_fq_destroy(&fq);
+ rx_ring->rx_fqes = NULL;
+ rx_ring->pp = NULL;
+
rx_skip_free:
- if (rx_ring->xsk_pool)
- memset(rx_ring->xdp_buf, 0, array_size(rx_ring->count, sizeof(*rx_ring->xdp_buf)));
- else
- memset(rx_ring->rx_buf, 0, array_size(rx_ring->count, sizeof(*rx_ring->rx_buf)));
/* Zero out the descriptor ring */
size = ALIGN(rx_ring->count * sizeof(union ice_32byte_rx_desc),
@@ -569,7 +561,6 @@ rx_skip_free:
rx_ring->next_to_alloc = 0;
rx_ring->next_to_clean = 0;
- rx_ring->first_desc = 0;
rx_ring->next_to_use = 0;
}
@@ -581,26 +572,20 @@ rx_skip_free:
*/
void ice_free_rx_ring(struct ice_rx_ring *rx_ring)
{
+ struct device *dev = ice_pf_to_dev(rx_ring->vsi->back);
u32 size;
ice_clean_rx_ring(rx_ring);
- if (rx_ring->vsi->type == ICE_VSI_PF)
- if (xdp_rxq_info_is_reg(&rx_ring->xdp_rxq))
- xdp_rxq_info_unreg(&rx_ring->xdp_rxq);
WRITE_ONCE(rx_ring->xdp_prog, NULL);
if (rx_ring->xsk_pool) {
kfree(rx_ring->xdp_buf);
rx_ring->xdp_buf = NULL;
- } else {
- kfree(rx_ring->rx_buf);
- rx_ring->rx_buf = NULL;
}
if (rx_ring->desc) {
size = ALIGN(rx_ring->count * sizeof(union ice_32byte_rx_desc),
PAGE_SIZE);
- dmam_free_coherent(rx_ring->dev, size,
- rx_ring->desc, rx_ring->dma);
+ dmam_free_coherent(dev, size, rx_ring->desc, rx_ring->dma);
rx_ring->desc = NULL;
}
}
@@ -613,19 +598,9 @@ void ice_free_rx_ring(struct ice_rx_ring
*/
int ice_setup_rx_ring(struct ice_rx_ring *rx_ring)
{
- struct device *dev = rx_ring->dev;
+ struct device *dev = ice_pf_to_dev(rx_ring->vsi->back);
u32 size;
- if (!dev)
- return -ENOMEM;
-
- /* warn if we are about to overwrite the pointer */
- WARN_ON(rx_ring->rx_buf);
- rx_ring->rx_buf =
- kcalloc(rx_ring->count, sizeof(*rx_ring->rx_buf), GFP_KERNEL);
- if (!rx_ring->rx_buf)
- return -ENOMEM;
-
/* round up to nearest page */
size = ALIGN(rx_ring->count * sizeof(union ice_32byte_rx_desc),
PAGE_SIZE);
@@ -634,22 +609,16 @@ int ice_setup_rx_ring(struct ice_rx_ring
if (!rx_ring->desc) {
dev_err(dev, "Unable to allocate memory for the Rx descriptor ring, size=%d\n",
size);
- goto err;
+ return -ENOMEM;
}
rx_ring->next_to_use = 0;
rx_ring->next_to_clean = 0;
- rx_ring->first_desc = 0;
if (ice_is_xdp_ena_vsi(rx_ring->vsi))
WRITE_ONCE(rx_ring->xdp_prog, rx_ring->vsi->xdp_prog);
return 0;
-
-err:
- kfree(rx_ring->rx_buf);
- rx_ring->rx_buf = NULL;
- return -ENOMEM;
}
/**
@@ -663,7 +632,7 @@ err:
* Returns any of ICE_XDP_{PASS, CONSUMED, TX, REDIR}
*/
static u32
-ice_run_xdp(struct ice_rx_ring *rx_ring, struct xdp_buff *xdp,
+ice_run_xdp(struct ice_rx_ring *rx_ring, struct libeth_xdp_buff *xdp,
struct bpf_prog *xdp_prog, struct ice_tx_ring *xdp_ring,
union ice_32b_rx_flex_desc *eop_desc)
{
@@ -673,23 +642,23 @@ ice_run_xdp(struct ice_rx_ring *rx_ring,
if (!xdp_prog)
goto exit;
- ice_xdp_meta_set_desc(xdp, eop_desc);
+ xdp->desc = eop_desc;
- act = bpf_prog_run_xdp(xdp_prog, xdp);
+ act = bpf_prog_run_xdp(xdp_prog, &xdp->base);
switch (act) {
case XDP_PASS:
break;
case XDP_TX:
if (static_branch_unlikely(&ice_xdp_locking_key))
spin_lock(&xdp_ring->tx_lock);
- ret = __ice_xmit_xdp_ring(xdp, xdp_ring, false);
+ ret = __ice_xmit_xdp_ring(&xdp->base, xdp_ring, false);
if (static_branch_unlikely(&ice_xdp_locking_key))
spin_unlock(&xdp_ring->tx_lock);
if (ret == ICE_XDP_CONSUMED)
goto out_failure;
break;
case XDP_REDIRECT:
- if (xdp_do_redirect(rx_ring->netdev, xdp, xdp_prog))
+ if (xdp_do_redirect(rx_ring->netdev, &xdp->base, xdp_prog))
goto out_failure;
ret = ICE_XDP_REDIR;
break;
@@ -701,8 +670,10 @@ out_failure:
trace_xdp_exception(rx_ring->netdev, xdp_prog, act);
fallthrough;
case XDP_DROP:
+ libeth_xdp_return_buff(xdp);
ret = ICE_XDP_CONSUMED;
}
+
exit:
return ret;
}
@@ -791,48 +762,6 @@ ice_xdp_xmit(struct net_device *dev, int
}
/**
- * ice_alloc_mapped_page - recycle or make a new page
- * @rx_ring: ring to use
- * @bi: rx_buf struct to modify
- *
- * Returns true if the page was successfully allocated or
- * reused.
- */
-static bool
-ice_alloc_mapped_page(struct ice_rx_ring *rx_ring, struct ice_rx_buf *bi)
-{
- struct page *page = bi->page;
- dma_addr_t dma;
-
- /* alloc new page for storage */
- page = dev_alloc_pages(ice_rx_pg_order(rx_ring));
- if (unlikely(!page)) {
- rx_ring->ring_stats->rx_stats.alloc_page_failed++;
- return false;
- }
-
- /* map page for use */
- dma = dma_map_page_attrs(rx_ring->dev, page, 0, PAGE_SIZE,
- DMA_FROM_DEVICE, ICE_RX_DMA_ATTR);
-
- /* if mapping failed free memory back to system since
- * there isn't much point in holding memory we can't use
- */
- if (dma_mapping_error(rx_ring->dev, dma)) {
- __free_pages(page, ice_rx_pg_order(rx_ring));
- rx_ring->ring_stats->rx_stats.alloc_page_failed++;
- return false;
- }
-
- bi->dma = dma;
- bi->page = page;
- bi->page_offset = rx_ring->rx_offset;
- page_ref_add(page, USHRT_MAX - 1);
-
- return true;
-}
-
-/**
* ice_init_ctrl_rx_descs - Initialize Rx descriptors for control vsi.
* @rx_ring: ring to init descriptors on
* @count: number of descriptors to initialize
@@ -878,9 +807,14 @@ void ice_init_ctrl_rx_descs(struct ice_r
*/
bool ice_alloc_rx_bufs(struct ice_rx_ring *rx_ring, unsigned int cleaned_count)
{
+ const struct libeth_fq_fp fq = {
+ .pp = rx_ring->pp,
+ .fqes = rx_ring->rx_fqes,
+ .truesize = rx_ring->truesize,
+ .count = rx_ring->count,
+ };
union ice_32b_rx_flex_desc *rx_desc;
u16 ntu = rx_ring->next_to_use;
- struct ice_rx_buf *bi;
/* do nothing if no valid netdev defined */
if (!rx_ring->netdev || !cleaned_count)
@@ -888,30 +822,25 @@ bool ice_alloc_rx_bufs(struct ice_rx_rin
/* get the Rx descriptor and buffer based on next_to_use */
rx_desc = ICE_RX_DESC(rx_ring, ntu);
- bi = &rx_ring->rx_buf[ntu];
do {
- /* if we fail here, we have work remaining */
- if (!ice_alloc_mapped_page(rx_ring, bi))
- break;
+ dma_addr_t addr;
- /* sync the buffer for use by the device */
- dma_sync_single_range_for_device(rx_ring->dev, bi->dma,
- bi->page_offset,
- ICE_RXBUF_3072,
- DMA_FROM_DEVICE);
+ addr = libeth_rx_alloc(&fq, ntu);
+ if (addr == DMA_MAPPING_ERROR) {
+ rx_ring->ring_stats->rx_stats.alloc_page_failed++;
+ break;
+ }
/* Refresh the desc even if buffer_addrs didn't change
* because each write-back erases this info.
*/
- rx_desc->read.pkt_addr = cpu_to_le64(bi->dma + bi->page_offset);
+ rx_desc->read.pkt_addr = cpu_to_le64(addr);
rx_desc++;
- bi++;
ntu++;
if (unlikely(ntu == rx_ring->count)) {
rx_desc = ICE_RX_DESC(rx_ring, 0);
- bi = rx_ring->rx_buf;
ntu = 0;
}
@@ -928,205 +857,6 @@ bool ice_alloc_rx_bufs(struct ice_rx_rin
}
/**
- * ice_add_xdp_frag - Add contents of Rx buffer to xdp buf as a frag
- * @rx_ring: Rx descriptor ring to transact packets on
- * @xdp: xdp buff to place the data into
- * @rx_buf: buffer containing page to add
- * @size: packet length from rx_desc
- *
- * This function will add the data contained in rx_buf->page to the xdp buf.
- * It will just attach the page as a frag.
- */
-static int
-ice_add_xdp_frag(struct ice_rx_ring *rx_ring, struct xdp_buff *xdp,
- struct ice_rx_buf *rx_buf, const unsigned int size)
-{
- struct skb_shared_info *sinfo = xdp_get_shared_info_from_buff(xdp);
-
- if (!size)
- return 0;
-
- if (!xdp_buff_has_frags(xdp)) {
- sinfo->nr_frags = 0;
- sinfo->xdp_frags_size = 0;
- xdp_buff_set_frags_flag(xdp);
- }
-
- if (unlikely(sinfo->nr_frags == MAX_SKB_FRAGS))
- return -ENOMEM;
-
- __skb_fill_page_desc_noacc(sinfo, sinfo->nr_frags++, rx_buf->page,
- rx_buf->page_offset, size);
- sinfo->xdp_frags_size += size;
-
- if (page_is_pfmemalloc(rx_buf->page))
- xdp_buff_set_frag_pfmemalloc(xdp);
-
- return 0;
-}
-
-/**
- * ice_get_rx_buf - Fetch Rx buffer and synchronize data for use
- * @rx_ring: Rx descriptor ring to transact packets on
- * @size: size of buffer to add to skb
- * @ntc: index of next to clean element
- *
- * This function will pull an Rx buffer from the ring and synchronize it
- * for use by the CPU.
- */
-static struct ice_rx_buf *
-ice_get_rx_buf(struct ice_rx_ring *rx_ring, const unsigned int size,
- const unsigned int ntc)
-{
- struct ice_rx_buf *rx_buf;
-
- rx_buf = &rx_ring->rx_buf[ntc];
- prefetchw(rx_buf->page);
-
- if (!size)
- return rx_buf;
- /* we are reusing so sync this buffer for CPU use */
- dma_sync_single_range_for_cpu(rx_ring->dev, rx_buf->dma,
- rx_buf->page_offset, size,
- DMA_FROM_DEVICE);
-
- return rx_buf;
-}
-
-/**
- * ice_get_pgcnts - grab page_count() for gathered fragments
- * @rx_ring: Rx descriptor ring to store the page counts on
- * @ntc: the next to clean element (not included in this frame!)
- *
- * This function is intended to be called right before running XDP
- * program so that the page recycling mechanism will be able to take
- * a correct decision regarding underlying pages; this is done in such
- * way as XDP program can change the refcount of page
- */
-static void ice_get_pgcnts(struct ice_rx_ring *rx_ring, unsigned int ntc)
-{
- u32 idx = rx_ring->first_desc;
- struct ice_rx_buf *rx_buf;
- u32 cnt = rx_ring->count;
-
- while (idx != ntc) {
- rx_buf = &rx_ring->rx_buf[idx];
- rx_buf->pgcnt = page_count(rx_buf->page);
-
- if (++idx == cnt)
- idx = 0;
- }
-}
-
-/**
- * ice_build_skb - Build skb around an existing buffer
- * @rx_ring: Rx descriptor ring to transact packets on
- * @xdp: xdp_buff pointing to the data
- *
- * This function builds an skb around an existing XDP buffer, taking care
- * to set up the skb correctly and avoid any memcpy overhead. Driver has
- * already combined frags (if any) to skb_shared_info.
- */
-static struct sk_buff *
-ice_build_skb(struct ice_rx_ring *rx_ring, struct xdp_buff *xdp)
-{
- u8 metasize = xdp->data - xdp->data_meta;
- struct skb_shared_info *sinfo = NULL;
- unsigned int nr_frags;
- struct sk_buff *skb;
-
- if (unlikely(xdp_buff_has_frags(xdp))) {
- sinfo = xdp_get_shared_info_from_buff(xdp);
- nr_frags = sinfo->nr_frags;
- }
-
- /* Prefetch first cache line of first page. If xdp->data_meta
- * is unused, this points exactly as xdp->data, otherwise we
- * likely have a consumer accessing first few bytes of meta
- * data, and then actual data.
- */
- net_prefetch(xdp->data_meta);
- /* build an skb around the page buffer */
- skb = napi_build_skb(xdp->data_hard_start, xdp->frame_sz);
- if (unlikely(!skb))
- return NULL;
-
- /* must to record Rx queue, otherwise OS features such as
- * symmetric queue won't work
- */
- skb_record_rx_queue(skb, rx_ring->q_index);
-
- /* update pointers within the skb to store the data */
- skb_reserve(skb, xdp->data - xdp->data_hard_start);
- __skb_put(skb, xdp->data_end - xdp->data);
- if (metasize)
- skb_metadata_set(skb, metasize);
-
- if (unlikely(xdp_buff_has_frags(xdp)))
- xdp_update_skb_frags_info(skb, nr_frags, sinfo->xdp_frags_size,
- nr_frags * xdp->frame_sz,
- xdp_buff_get_skb_flags(xdp));
-
- return skb;
-}
-
-/**
- * ice_put_rx_buf - Clean up used buffer and either recycle or free
- * @rx_ring: Rx descriptor ring to transact packets on
- * @rx_buf: Rx buffer to pull data from
- *
- * This function will clean up the contents of the rx_buf. It will either
- * recycle the buffer or unmap it and free the associated resources.
- */
-static void
-ice_put_rx_buf(struct ice_rx_ring *rx_ring, struct ice_rx_buf *rx_buf)
-{
- if (!rx_buf)
- return;
-
- /* we are not reusing the buffer so unmap it */
- dma_unmap_page_attrs(rx_ring->dev, rx_buf->dma,
- PAGE_SIZE, DMA_FROM_DEVICE,
- ICE_RX_DMA_ATTR);
-
- /* clear contents of buffer_info */
- rx_buf->page = NULL;
-}
-
-/**
- * ice_put_rx_mbuf - ice_put_rx_buf() caller, for all buffers in frame
- * @rx_ring: Rx ring with all the auxiliary data
- * @xdp: XDP buffer carrying linear + frags part
- * @ntc: the next to clean element (not included in this frame!)
- * @verdict: return code from XDP program execution
- *
- * Called after XDP program is completed, or on error with verdict set to
- * ICE_XDP_CONSUMED.
- *
- * Walk through buffers from first_desc to the end of the frame, releasing
- * buffers and satisfying internal page recycle mechanism. The action depends
- * on verdict from XDP program.
- */
-static void ice_put_rx_mbuf(struct ice_rx_ring *rx_ring, struct xdp_buff *xdp,
- u32 ntc, u32 verdict)
-{
- u32 idx = rx_ring->first_desc;
- u32 cnt = rx_ring->count;
- struct ice_rx_buf *buf;
-
- while (idx != ntc) {
- buf = &rx_ring->rx_buf[idx];
- if (++idx == cnt)
- idx = 0;
-
- ice_put_rx_buf(rx_ring, buf);
- }
-
- xdp->data = NULL;
- rx_ring->first_desc = ntc;
-}
-
-/**
* ice_clean_ctrl_rx_irq - Clean descriptors from flow director Rx ring
* @rx_ring: Rx descriptor ring for ctrl_vsi to transact packets on
*
@@ -1160,9 +890,8 @@ void ice_clean_ctrl_rx_irq(struct ice_rx
total_rx_pkts++;
}
- rx_ring->first_desc = ntc;
rx_ring->next_to_clean = ntc;
- ice_init_ctrl_rx_descs(rx_ring, ICE_RX_DESC_UNUSED(rx_ring));
+ ice_init_ctrl_rx_descs(rx_ring, ICE_DESC_UNUSED(rx_ring));
}
/**
@@ -1180,16 +909,17 @@ void ice_clean_ctrl_rx_irq(struct ice_rx
static int ice_clean_rx_irq(struct ice_rx_ring *rx_ring, int budget)
{
unsigned int total_rx_bytes = 0, total_rx_pkts = 0;
- unsigned int offset = rx_ring->rx_offset;
- struct xdp_buff *xdp = &rx_ring->xdp;
struct ice_tx_ring *xdp_ring = NULL;
struct bpf_prog *xdp_prog = NULL;
u32 ntc = rx_ring->next_to_clean;
+ LIBETH_XDP_ONSTACK_BUFF(xdp);
u32 cached_ntu, xdp_verdict;
u32 cnt = rx_ring->count;
u32 xdp_xmit = 0;
bool failure;
+ libeth_xdp_init_buff(xdp, &rx_ring->xdp, &rx_ring->xdp_rxq);
+
xdp_prog = READ_ONCE(rx_ring->xdp_prog);
if (xdp_prog) {
xdp_ring = rx_ring->xdp_ring;
@@ -1199,7 +929,7 @@ static int ice_clean_rx_irq(struct ice_r
/* start the loop to process Rx packets bounded by 'budget' */
while (likely(total_rx_pkts < (unsigned int)budget)) {
union ice_32b_rx_flex_desc *rx_desc;
- struct ice_rx_buf *rx_buf;
+ struct libeth_fqe *rx_buf;
struct sk_buff *skb;
unsigned int size;
u16 stat_err_bits;
@@ -1228,65 +958,47 @@ static int ice_clean_rx_irq(struct ice_r
size = le16_to_cpu(rx_desc->wb.pkt_len) &
ICE_RX_FLX_DESC_PKT_LEN_M;
+ stat_err_bits = BIT(ICE_RX_FLEX_DESC_STATUS0_RXE_S);
+ if (unlikely(ice_test_staterr(rx_desc->wb.status_error0,
+ stat_err_bits)))
+ size = 0;
+
/* retrieve a buffer from the ring */
- rx_buf = ice_get_rx_buf(rx_ring, size, ntc);
+ rx_buf = &rx_ring->rx_fqes[ntc];
+ libeth_xdp_process_buff(xdp, rx_buf, size);
- /* Increment ntc before calls to ice_put_rx_mbuf() */
if (++ntc == cnt)
ntc = 0;
- if (!xdp->data) {
- void *hard_start;
-
- hard_start = page_address(rx_buf->page) + rx_buf->page_offset -
- offset;
- xdp_prepare_buff(xdp, hard_start, offset, size, !!offset);
- xdp_buff_clear_frags_flag(xdp);
- } else if (ice_add_xdp_frag(rx_ring, xdp, rx_buf, size)) {
- ice_put_rx_mbuf(rx_ring, xdp, ntc, ICE_XDP_CONSUMED);
- break;
- }
-
/* skip if it is NOP desc */
- if (ice_is_non_eop(rx_ring, rx_desc))
+ if (ice_is_non_eop(rx_ring, rx_desc) || unlikely(!xdp->data))
continue;
- ice_get_pgcnts(rx_ring, ntc);
xdp_verdict = ice_run_xdp(rx_ring, xdp, xdp_prog, xdp_ring, rx_desc);
if (xdp_verdict == ICE_XDP_PASS)
goto construct_skb;
- total_rx_bytes += xdp_get_buff_len(xdp);
- total_rx_pkts++;
- ice_put_rx_mbuf(rx_ring, xdp, ntc, xdp_verdict);
- xdp_xmit |= xdp_verdict & (ICE_XDP_TX | ICE_XDP_REDIR);
+ if (xdp_verdict & (ICE_XDP_TX | ICE_XDP_REDIR))
+ xdp_xmit |= xdp_verdict;
+ total_rx_bytes += xdp_get_buff_len(&xdp->base);
+ total_rx_pkts++;
+ xdp->data = NULL;
continue;
+
construct_skb:
- skb = ice_build_skb(rx_ring, xdp);
+ skb = xdp_build_skb_from_buff(&xdp->base);
+ xdp->data = NULL;
+
/* exit if we failed to retrieve a buffer */
if (!skb) {
+ libeth_xdp_return_buff_slow(xdp);
rx_ring->ring_stats->rx_stats.alloc_buf_failed++;
- xdp_verdict = ICE_XDP_CONSUMED;
- }
- ice_put_rx_mbuf(rx_ring, xdp, ntc, xdp_verdict);
-
- if (!skb)
- break;
-
- stat_err_bits = BIT(ICE_RX_FLEX_DESC_STATUS0_RXE_S);
- if (unlikely(ice_test_staterr(rx_desc->wb.status_error0,
- stat_err_bits))) {
- dev_kfree_skb_any(skb);
continue;
}
vlan_tci = ice_get_vlan_tci(rx_desc);
- /* pad the skb if needed, to make a valid ethernet frame */
- if (eth_skb_pad(skb))
- continue;
-
/* probably a little skewed due to removing CRC */
total_rx_bytes += skb->len;
@@ -1303,11 +1015,13 @@ construct_skb:
rx_ring->next_to_clean = ntc;
/* return up to cleaned_count buffers to hardware */
- failure = ice_alloc_rx_bufs(rx_ring, ICE_RX_DESC_UNUSED(rx_ring));
+ failure = ice_alloc_rx_bufs(rx_ring, ICE_DESC_UNUSED(rx_ring));
if (xdp_xmit)
ice_finalize_xdp_rx(xdp_ring, xdp_xmit, cached_ntu);
+ libeth_xdp_save_buff(&rx_ring->xdp, xdp);
+
if (rx_ring->ring_stats)
ice_update_rx_ring_stats(rx_ring, total_rx_pkts,
total_rx_bytes);
--- a/drivers/net/ethernet/intel/ice/ice_txrx.h
+++ b/drivers/net/ethernet/intel/ice/ice_txrx.h
@@ -4,6 +4,8 @@
#ifndef _ICE_TXRX_H_
#define _ICE_TXRX_H_
+#include <net/libeth/types.h>
+
#include "ice_type.h"
#define ICE_DFLT_IRQ_WORK 256
@@ -27,8 +29,6 @@
#define ICE_MAX_TXQ_PER_TXQG 128
-#define ICE_SKB_PAD (NET_SKB_PAD + NET_IP_ALIGN)
-
/* We are assuming that the cache line is always 64 Bytes here for ice.
* In order to make sure that is a correct assumption there is a check in probe
* to print a warning if the read from GLPCI_CNF2 tells us that the cache line
@@ -48,10 +48,6 @@
(u16)((((R)->next_to_clean > (R)->next_to_use) ? 0 : (R)->count) + \
(R)->next_to_clean - (R)->next_to_use - 1)
-#define ICE_RX_DESC_UNUSED(R) \
- ((((R)->first_desc > (R)->next_to_use) ? 0 : (R)->count) + \
- (R)->first_desc - (R)->next_to_use - 1)
-
#define ICE_RING_QUARTER(R) ((R)->count >> 2)
#define ICE_TX_FLAGS_TSO BIT(0)
@@ -133,13 +129,6 @@ struct ice_tx_offload_params {
u8 header_len;
};
-struct ice_rx_buf {
- dma_addr_t dma;
- struct page *page;
- unsigned int page_offset;
- unsigned int pgcnt;
-};
-
struct ice_q_stats {
u64 pkts;
u64 bytes;
@@ -205,15 +194,6 @@ struct ice_pkt_ctx {
__be16 vlan_proto;
};
-struct ice_xdp_buff {
- struct xdp_buff xdp_buff;
- const union ice_32b_rx_flex_desc *eop_desc;
- const struct ice_pkt_ctx *pkt_ctx;
-};
-
-/* Required for compatibility with xdp_buffs from xsk_pool */
-static_assert(offsetof(struct ice_xdp_buff, xdp_buff) == 0);
-
/* indices into GLINT_ITR registers */
#define ICE_RX_ITR ICE_IDX_ITR0
#define ICE_TX_ITR ICE_IDX_ITR1
@@ -266,7 +246,7 @@ struct ice_tstamp_ring {
struct ice_rx_ring {
/* CL1 - 1st cacheline starts here */
void *desc; /* Descriptor ring memory */
- struct device *dev; /* Used for DMA mapping */
+ struct page_pool *pp;
struct net_device *netdev; /* netdev ring maps to */
struct ice_vsi *vsi; /* Backreference to associated VSI */
struct ice_q_vector *q_vector; /* Backreference to associated vector */
@@ -278,14 +258,16 @@ struct ice_rx_ring {
u16 next_to_alloc;
union {
- struct ice_rx_buf *rx_buf;
+ struct libeth_fqe *rx_fqes;
struct xdp_buff **xdp_buf;
};
+
/* CL2 - 2nd cacheline starts here */
union {
- struct ice_xdp_buff xdp_ext;
- struct xdp_buff xdp;
+ struct libeth_xdp_buff_stash xdp;
+ struct libeth_xdp_buff *xsk;
};
+
/* CL3 - 3rd cacheline starts here */
union {
struct ice_pkt_ctx pkt_ctx;
@@ -295,12 +277,11 @@ struct ice_rx_ring {
};
};
struct bpf_prog *xdp_prog;
- u16 rx_offset;
/* used in interrupt processing */
u16 next_to_use;
u16 next_to_clean;
- u16 first_desc;
+ u32 truesize;
/* stats structs */
struct ice_ring_stats *ring_stats;
--- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.c
@@ -3,6 +3,7 @@
#include <linux/filter.h>
#include <linux/net/intel/libie/rx.h>
+#include <net/libeth/xdp.h>
#include "ice_txrx_lib.h"
#include "ice_eswitch.h"
@@ -230,9 +231,12 @@ ice_process_skb_fields(struct ice_rx_rin
if (ice_is_port_repr_netdev(netdev))
ice_repr_inc_rx_stats(netdev, skb->len);
+
+ /* __skb_push() is needed because xdp_build_skb_from_buff()
+ * calls eth_type_trans()
+ */
+ __skb_push(skb, ETH_HLEN);
skb->protocol = eth_type_trans(skb, netdev);
- } else {
- skb->protocol = eth_type_trans(skb, rx_ring->netdev);
}
ice_rx_csum(rx_ring, skb, rx_desc, ptype);
@@ -270,19 +274,18 @@ static void
ice_clean_xdp_tx_buf(struct device *dev, struct ice_tx_buf *tx_buf,
struct xdp_frame_bulk *bq)
{
- dma_unmap_single(dev, dma_unmap_addr(tx_buf, dma),
- dma_unmap_len(tx_buf, len), DMA_TO_DEVICE);
- dma_unmap_len_set(tx_buf, len, 0);
-
switch (tx_buf->type) {
case ICE_TX_BUF_XDP_TX:
- page_frag_free(tx_buf->raw_buf);
+ libeth_xdp_return_va(tx_buf->raw_buf, true);
break;
case ICE_TX_BUF_XDP_XMIT:
+ dma_unmap_single(dev, dma_unmap_addr(tx_buf, dma),
+ dma_unmap_len(tx_buf, len), DMA_TO_DEVICE);
xdp_return_frame_bulk(tx_buf->xdpf, bq);
break;
}
+ dma_unmap_len_set(tx_buf, len, 0);
tx_buf->type = ICE_TX_BUF_EMPTY;
}
@@ -377,9 +380,11 @@ int __ice_xmit_xdp_ring(struct xdp_buff
struct ice_tx_buf *tx_buf;
u32 cnt = xdp_ring->count;
void *data = xdp->data;
+ struct page *page;
u32 nr_frags = 0;
u32 free_space;
u32 frag = 0;
+ u32 offset;
free_space = ICE_DESC_UNUSED(xdp_ring);
if (free_space < ICE_RING_QUARTER(xdp_ring))
@@ -399,24 +404,28 @@ int __ice_xmit_xdp_ring(struct xdp_buff
tx_head = &xdp_ring->tx_buf[ntu];
tx_buf = tx_head;
+ page = virt_to_page(data);
+ offset = offset_in_page(xdp->data);
+
for (;;) {
dma_addr_t dma;
- dma = dma_map_single(dev, data, size, DMA_TO_DEVICE);
- if (dma_mapping_error(dev, dma))
- goto dma_unmap;
-
- /* record length, and DMA address */
- dma_unmap_len_set(tx_buf, len, size);
- dma_unmap_addr_set(tx_buf, dma, dma);
-
if (frame) {
+ dma = dma_map_single(dev, data, size, DMA_TO_DEVICE);
+ if (dma_mapping_error(dev, dma))
+ goto dma_unmap;
tx_buf->type = ICE_TX_BUF_FRAG;
} else {
+ dma = page_pool_get_dma_addr(page) + offset;
+ dma_sync_single_for_device(dev, dma, size, DMA_BIDIRECTIONAL);
tx_buf->type = ICE_TX_BUF_XDP_TX;
tx_buf->raw_buf = data;
}
+ /* record length, and DMA address */
+ dma_unmap_len_set(tx_buf, len, size);
+ dma_unmap_addr_set(tx_buf, dma, dma);
+
tx_desc->buf_addr = cpu_to_le64(dma);
tx_desc->cmd_type_offset_bsz = ice_build_ctob(0, 0, size, 0);
@@ -430,6 +439,8 @@ int __ice_xmit_xdp_ring(struct xdp_buff
tx_desc = ICE_TX_DESC(xdp_ring, ntu);
tx_buf = &xdp_ring->tx_buf[ntu];
+ page = skb_frag_page(&sinfo->frags[frag]);
+ offset = skb_frag_off(&sinfo->frags[frag]);
data = skb_frag_address(&sinfo->frags[frag]);
size = skb_frag_size(&sinfo->frags[frag]);
frag++;
@@ -514,10 +525,13 @@ void ice_finalize_xdp_rx(struct ice_tx_r
*/
static int ice_xdp_rx_hw_ts(const struct xdp_md *ctx, u64 *ts_ns)
{
- const struct ice_xdp_buff *xdp_ext = (void *)ctx;
+ const struct libeth_xdp_buff *xdp_ext = (void *)ctx;
+ struct ice_rx_ring *rx_ring;
- *ts_ns = ice_ptp_get_rx_hwts(xdp_ext->eop_desc,
- xdp_ext->pkt_ctx);
+ rx_ring = libeth_xdp_buff_to_rq(xdp_ext, typeof(*rx_ring), xdp_rxq);
+
+ *ts_ns = ice_ptp_get_rx_hwts(xdp_ext->desc,
+ &rx_ring->pkt_ctx);
if (!*ts_ns)
return -ENODATA;
@@ -545,10 +559,10 @@ ice_xdp_rx_hash_type(const union ice_32b
static int ice_xdp_rx_hash(const struct xdp_md *ctx, u32 *hash,
enum xdp_rss_hash_type *rss_type)
{
- const struct ice_xdp_buff *xdp_ext = (void *)ctx;
+ const struct libeth_xdp_buff *xdp_ext = (void *)ctx;
- *hash = ice_get_rx_hash(xdp_ext->eop_desc);
- *rss_type = ice_xdp_rx_hash_type(xdp_ext->eop_desc);
+ *hash = ice_get_rx_hash(xdp_ext->desc);
+ *rss_type = ice_xdp_rx_hash_type(xdp_ext->desc);
if (!likely(*hash))
return -ENODATA;
@@ -567,13 +581,16 @@ static int ice_xdp_rx_hash(const struct
static int ice_xdp_rx_vlan_tag(const struct xdp_md *ctx, __be16 *vlan_proto,
u16 *vlan_tci)
{
- const struct ice_xdp_buff *xdp_ext = (void *)ctx;
+ const struct libeth_xdp_buff *xdp_ext = (void *)ctx;
+ struct ice_rx_ring *rx_ring;
+
+ rx_ring = libeth_xdp_buff_to_rq(xdp_ext, typeof(*rx_ring), xdp_rxq);
- *vlan_proto = xdp_ext->pkt_ctx->vlan_proto;
+ *vlan_proto = rx_ring->pkt_ctx.vlan_proto;
if (!*vlan_proto)
return -ENODATA;
- *vlan_tci = ice_get_vlan_tci(xdp_ext->eop_desc);
+ *vlan_tci = ice_get_vlan_tci(xdp_ext->desc);
if (!*vlan_tci)
return -ENODATA;
--- a/drivers/net/ethernet/intel/ice/ice_txrx_lib.h
+++ b/drivers/net/ethernet/intel/ice/ice_txrx_lib.h
@@ -135,13 +135,4 @@ ice_process_skb_fields(struct ice_rx_rin
void
ice_receive_skb(struct ice_rx_ring *rx_ring, struct sk_buff *skb, u16 vlan_tci);
-static inline void
-ice_xdp_meta_set_desc(struct xdp_buff *xdp,
- union ice_32b_rx_flex_desc *eop_desc)
-{
- struct ice_xdp_buff *xdp_ext = container_of(xdp, struct ice_xdp_buff,
- xdp_buff);
-
- xdp_ext->eop_desc = eop_desc;
-}
#endif /* !_ICE_TXRX_LIB_H_ */
--- a/drivers/net/ethernet/intel/ice/ice_xsk.c
+++ b/drivers/net/ethernet/intel/ice/ice_xsk.c
@@ -3,6 +3,7 @@
#include <linux/bpf_trace.h>
#include <linux/unroll.h>
+#include <net/libeth/xdp.h>
#include <net/xdp_sock_drv.h>
#include <net/xdp.h>
#include "ice.h"
@@ -169,50 +170,18 @@ ice_xsk_pool_enable(struct ice_vsi *vsi,
* If allocation was successful, substitute buffer with allocated one.
* Returns 0 on success, negative on failure
*/
-static int
+int
ice_realloc_rx_xdp_bufs(struct ice_rx_ring *rx_ring, bool pool_present)
{
- size_t elem_size = pool_present ? sizeof(*rx_ring->xdp_buf) :
- sizeof(*rx_ring->rx_buf);
- void *sw_ring = kcalloc(rx_ring->count, elem_size, GFP_KERNEL);
-
- if (!sw_ring)
- return -ENOMEM;
-
if (pool_present) {
- kfree(rx_ring->rx_buf);
- rx_ring->rx_buf = NULL;
- rx_ring->xdp_buf = sw_ring;
+ rx_ring->xdp_buf = kcalloc(rx_ring->count,
+ sizeof(*rx_ring->xdp_buf),
+ GFP_KERNEL);
+ if (!rx_ring->xdp_buf)
+ return -ENOMEM;
} else {
kfree(rx_ring->xdp_buf);
rx_ring->xdp_buf = NULL;
- rx_ring->rx_buf = sw_ring;
- }
-
- return 0;
-}
-
-/**
- * ice_realloc_zc_buf - reallocate XDP ZC queue pairs
- * @vsi: Current VSI
- * @zc: is zero copy set
- *
- * Reallocate buffer for rx_rings that might be used by XSK.
- * XDP requires more memory, than rx_buf provides.
- * Returns 0 on success, negative on failure
- */
-int ice_realloc_zc_buf(struct ice_vsi *vsi, bool zc)
-{
- struct ice_rx_ring *rx_ring;
- uint i;
-
- ice_for_each_rxq(vsi, i) {
- rx_ring = vsi->rx_rings[i];
- if (!rx_ring->xsk_pool)
- continue;
-
- if (ice_realloc_rx_xdp_bufs(rx_ring, zc))
- return -ENOMEM;
}
return 0;
@@ -228,6 +197,7 @@ int ice_realloc_zc_buf(struct ice_vsi *v
*/
int ice_xsk_pool_setup(struct ice_vsi *vsi, struct xsk_buff_pool *pool, u16 qid)
{
+ struct ice_rx_ring *rx_ring = vsi->rx_rings[qid];
bool if_running, pool_present = !!pool;
int ret = 0, pool_failure = 0;
@@ -241,8 +211,6 @@ int ice_xsk_pool_setup(struct ice_vsi *v
ice_is_xdp_ena_vsi(vsi);
if (if_running) {
- struct ice_rx_ring *rx_ring = vsi->rx_rings[qid];
-
ret = ice_qp_dis(vsi, qid);
if (ret) {
netdev_err(vsi->netdev, "ice_qp_dis error = %d\n", ret);
@@ -303,11 +271,6 @@ static u16 ice_fill_rx_descs(struct xsk_
rx_desc->read.pkt_addr = cpu_to_le64(dma);
rx_desc->wb.status_error0 = 0;
- /* Put private info that changes on a per-packet basis
- * into xdp_buff_xsk->cb.
- */
- ice_xdp_meta_set_desc(*xdp, rx_desc);
-
rx_desc++;
xdp++;
}
@@ -606,10 +569,10 @@ int ice_clean_rx_irq_zc(struct ice_rx_ri
struct xsk_buff_pool *xsk_pool,
int budget)
{
+ struct xdp_buff *first = (struct xdp_buff *)rx_ring->xsk;
unsigned int total_rx_bytes = 0, total_rx_packets = 0;
u32 ntc = rx_ring->next_to_clean;
u32 ntu = rx_ring->next_to_use;
- struct xdp_buff *first = NULL;
struct ice_tx_ring *xdp_ring;
unsigned int xdp_xmit = 0;
struct bpf_prog *xdp_prog;
@@ -623,9 +586,6 @@ int ice_clean_rx_irq_zc(struct ice_rx_ri
xdp_prog = READ_ONCE(rx_ring->xdp_prog);
xdp_ring = rx_ring->xdp_ring;
- if (ntc != rx_ring->first_desc)
- first = *ice_xdp_buf(rx_ring, rx_ring->first_desc);
-
while (likely(total_rx_packets < (unsigned int)budget)) {
union ice_32b_rx_flex_desc *rx_desc;
unsigned int size, xdp_res = 0;
@@ -661,15 +621,17 @@ int ice_clean_rx_irq_zc(struct ice_rx_ri
first = xdp;
} else if (likely(size) && !xsk_buff_add_frag(first, xdp)) {
xsk_buff_free(first);
- break;
+ first = NULL;
}
if (++ntc == cnt)
ntc = 0;
- if (ice_is_non_eop(rx_ring, rx_desc))
+ if (ice_is_non_eop(rx_ring, rx_desc) || unlikely(!first))
continue;
+ ((struct libeth_xdp_buff *)first)->desc = rx_desc;
+
xdp_res = ice_run_xdp_zc(rx_ring, first, xdp_prog, xdp_ring,
xsk_pool);
if (likely(xdp_res & (ICE_XDP_TX | ICE_XDP_REDIR))) {
@@ -677,7 +639,6 @@ int ice_clean_rx_irq_zc(struct ice_rx_ri
} else if (xdp_res == ICE_XDP_EXIT) {
failure = true;
first = NULL;
- rx_ring->first_desc = ntc;
break;
} else if (xdp_res == ICE_XDP_CONSUMED) {
xsk_buff_free(first);
@@ -689,7 +650,6 @@ int ice_clean_rx_irq_zc(struct ice_rx_ri
total_rx_packets++;
first = NULL;
- rx_ring->first_desc = ntc;
continue;
construct_skb:
@@ -697,12 +657,14 @@ construct_skb:
skb = xdp_build_skb_from_zc(first);
if (!skb) {
xsk_buff_free(first);
+ first = NULL;
+
rx_ring->ring_stats->rx_stats.alloc_buf_failed++;
- break;
+ continue;
}
first = NULL;
- rx_ring->first_desc = ntc;
+
total_rx_bytes += skb->len;
total_rx_packets++;
@@ -713,7 +675,9 @@ construct_skb:
}
rx_ring->next_to_clean = ntc;
- entries_to_alloc = ICE_RX_DESC_UNUSED(rx_ring);
+ rx_ring->xsk = (struct libeth_xdp_buff *)first;
+
+ entries_to_alloc = ICE_DESC_UNUSED(rx_ring);
if (entries_to_alloc > ICE_RING_QUARTER(rx_ring))
failure |= !ice_alloc_rx_bufs_zc(rx_ring, xsk_pool,
entries_to_alloc);
--- a/drivers/net/ethernet/intel/ice/ice_xsk.h
+++ b/drivers/net/ethernet/intel/ice/ice_xsk.h
@@ -22,7 +22,7 @@ bool ice_xsk_any_rx_ring_ena(struct ice_
void ice_xsk_clean_rx_ring(struct ice_rx_ring *rx_ring);
void ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring);
bool ice_xmit_zc(struct ice_tx_ring *xdp_ring, struct xsk_buff_pool *xsk_pool);
-int ice_realloc_zc_buf(struct ice_vsi *vsi, bool zc);
+int ice_realloc_rx_xdp_bufs(struct ice_rx_ring *rx_ring, bool pool_present);
void ice_qvec_cfg_msix(struct ice_vsi *vsi, struct ice_q_vector *q_vector,
u16 qid);
void ice_qvec_toggle_napi(struct ice_vsi *vsi, struct ice_q_vector *q_vector,
@@ -77,8 +77,8 @@ static inline void ice_xsk_clean_rx_ring
static inline void ice_xsk_clean_xdp_ring(struct ice_tx_ring *xdp_ring) { }
static inline int
-ice_realloc_zc_buf(struct ice_vsi __always_unused *vsi,
- bool __always_unused zc)
+ice_realloc_rx_xdp_bufs(struct ice_rx_ring *rx_ring,
+ bool __always_unused pool_present)
{
return 0;
}
next prev parent reply other threads:[~2026-10-23 16:51 UTC|newest]
Thread overview: 455+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-23 16:34 [PATCH 6.18 000/193] 6.18.59-rc1 review Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 001/193] drm/ttm: fix swapped-out resources never leaving their bulk_move range Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 002/193] ALSA: ctxfi: Dont enumerate SPDIF1 at DAIO initialization Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 003/193] ALSA: ctxfi: Rename SPDIFI1 to SPDIFI_BAY Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 004/193] ALSA: ctxfi: Use correct DAIO type for da_desc Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 005/193] ax25: bound REJ-driven fast retransmits with the existing N2 counter Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 006/193] rose: purge rose_neigh->queue on final teardown Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 007/193] i2c: qcom-geni: Restore the source-clock selection policy Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 008/193] kho: free phys_bits bitmaps using free_page() in __kho_abort() Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 009/193] soc/tegra: fuse: Add missing newline to APBMISC error message Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 010/193] ARM: dts: ti/omap: dra7: fix PCIe PHY clock divider definition Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 011/193] power: supply: Fix maintenance charge table kernel-doc Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 012/193] power: supply: ds2780: Fix ds2780_get_capacity() returning raw value Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 013/193] Drivers: hv: Avoid infinite retry loop in init_vp_index() Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 014/193] x86/hyperv: Avoid using per-cpu output page in hv_apicid_to_vp_index() Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 015/193] Drivers: hv: Dont reset VMBus connection state on error/exit paths Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 016/193] pinctrl: qcom: qcs8300: Fix intr_target_width Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 017/193] pinctrl: qcom: ipq5018: add missing pwm3 function on gpio13 Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 018/193] tools/power turbostat: Fix fd_perf leak on reset Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 019/193] tools/power turbostat: Fix CWF PMT off-by-one Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 020/193] tools/power turbostat: Fix PMT error path fd handling Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 021/193] tools/power turbostat: Fix add_counter issue if > 24 counters Greg Kroah-Hartman
2026-10-23 16:34 ` [PATCH 6.18 022/193] power: supply: generic-adc-battery: Fix temperature IIO channel conversion Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 023/193] power: supply: core: prevent unregistering a power supply while a callback runs Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 024/193] pinctrl: qcom: ipq5018: replace gcc_plltest with pwm2 on gpio12 Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 025/193] pinctrl: sunxi: dt: do not accumulate npins across probe attempts Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 026/193] drm/vc4: hdmi: Move packet RAM enable to PM runtime Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 027/193] gpio: nct6694: Mark the GPIO controller as sleeping Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 028/193] vsock: treat TCP_CLOSING as once-established Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 029/193] net/rds: dont let the rdma_cm destroy an id RDS still owns on route failure Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 030/193] ASoC: Intel: avs: Reset the stream unless it is already prepared Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 031/193] ASoC: stm32: spdifrx: fix synchronization state check Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 032/193] ASoC: cs42l56: Put the Limiter Cushion control on the limiter register Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 033/193] ASoC: cs42l52: Fix the NG Type Switch bit Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 034/193] ASoC: pcm3168a: Fix the DAC zero flag polarity bit Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 035/193] ASoC: max98371: Fix the Speaker DHT Min Volume bits Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 036/193] ASoC: wm8978: Fix the 128x oversampling switch bits Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 037/193] ASoC: nau8822: " Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 038/193] regcache: Add ->populate() callback to separate from ->init() Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 039/193] regcache: Do not overwrite error code when finalizing cache after error Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 040/193] regmap: Drop map lock during cache init and exit Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 041/193] netlink: reset skb headers before unicast and multicast filtering Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 042/193] accel/rocket: clear rdev on device init failure Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 043/193] net/mlx5: HWS, release L2 to L3 tunnel reformats to their own pool Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 044/193] net/mlx5: HWS, fix flow meter offset within its bulk Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 045/193] ASoC: amd: yc: disable MSI on resume Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 046/193] drm/xe: skip eviction of a BO with no resource Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 047/193] drm/xe/oa: Zero OA buffer at allocation Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 048/193] spi: tegra114: assert CS GPIO for every transfer in a message Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 049/193] nios2: fix __wsum type degradation in csum_fold() Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 050/193] scsi: st: Save the visited block for the partition the drive is in Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 051/193] scsi: target: iscsi: Fix race in discovery auth updates Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 052/193] drm/panthor: fix immortalis condition Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 053/193] ocfs2/dlm: Protect the recovery list during debugfs reads Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 054/193] samples: pidfd: fix userprogs typo Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 055/193] pipe: preserve existing fasync readers on writer setup failure Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 056/193] tracing: probes: error if BTF is required but unavailable Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 057/193] scsi: libsas: Fix SMP IO deadlock during HA resume Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 058/193] netlink: avoid hashing the network namespace pointer Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 059/193] net: bcmgenet: unshare the skb before writing the control block Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 060/193] net/ipv6: Introduce payload_len helpers Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 061/193] calipso: keep BIG TCP payload_len in calipso_skbuff_setattr() Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 062/193] gpiolib: fix memory leak in gpiod_set_array_value_complex() on error paths Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 063/193] gpio: mxc: fix race between chained IRQ handler install and probe completion Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 081/242] net: ethernet: aeroflex: move setting of netops to fix crash Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 064/193] gpio: mxc: fix both_edges bit operations Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 065/193] gpio: mxc: use BIT() macro Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 066/193] gpio: mxc: fix wakeup_pads bit operations Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 067/193] gpio: mxc: fix race between gpiochip registration and IRQ domain setup Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 068/193] perf: Fix perf_pmu_migrate_context() leaving events behind Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 069/193] printk: Postpone kthread startup Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 070/193] PCI: Dont treat ~0 as ready in pci_dev_wait() with RRS SV Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 071/193] accel/rocket: search every core slot when a core is removed Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 072/193] afs: free the super info after a grace period Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 073/193] autofs: ignore notification errors from a replaced pipe Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 074/193] bootconfig: give the footer size static_assert a message Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 075/193] unicode: free the map after a grace period Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 076/193] watch_queue: Fix note pool publication race in watch_queue_set_size() Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 077/193] x86/kvm: Dont consume async #PF flags on a kernel #PF in NMI context Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 078/193] KVM: nVMX: Reset MMU back to the root MMU if loading L2 state fails for !VM-Entry Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 079/193] fsnotify: prevent mark additions during connector teardown Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 080/193] pid_namespace: make zap_pid_ns_processes() freezable Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 081/193] eventfs: Free the eventfs_inode after an rcu grace period too Greg Kroah-Hartman
2026-10-23 16:35 ` [PATCH 6.18 082/193] namei: test for a negative dentry the way traverse_mounts() does Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 083/193] lib/crypto: arm64: Fix lost Poly1305 carry when resuming NEON state Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 084/193] lib/crypto: poly1305: Use memzero_explicit() in poly1305_final() Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 085/193] net/sched: fix use-after-free in __tcf_action_put() Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 086/193] net: rds: fix uninitialized trans dereference in CM event handler Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 087/193] pinctrl: amd: Clear S4 wake bits when firmware has _AEI Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 088/193] sctp: revalidate output stream after association connect wait Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 089/193] tools: gpio: fix building from the top level with O= Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 090/193] tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 091/193] i2c: qcom-cci: Fix HALT_ACK reset request being dropped Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 092/193] i2c: viai2c-wmt: Fix clock leak in wmt_i2c_probe() Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 093/193] perf: Track the perf mlock gift separately Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 094/193] perf: Update cgroup time when rotating multiplexed events Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 095/193] ring-buffer: Do not show buffer_meta for CPUs without a buffer Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 096/193] ring-buffer: Fix the sub-buffer array base in rb_meta_subbuf_idx() Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 097/193] ring-buffer: Fix false warning in ring_buffer_map_get_reader() Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 098/193] scsi: bsg: Pass reply_len to bsg_setup_queue() to fit UFS ARPMB replies Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 099/193] scsi: xen/scsifront: Check for a NULL shadow entry on a backend response Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 100/193] scsi: libiscsi: Reject a negative task index from parse_pdu_itt Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 101/193] scsi: libiscsi: Validate the ITT reflected in a Reject PDU Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 102/193] scsi: libiscsi: Validate the task named by a management response Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 103/193] drm/amd/pm: add zero fan stop temperature support on smu 14.0.2 Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 104/193] drm/amdgpu/sdma3: Work around POLL_REGMEM / FENCE hang Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 105/193] drm/amdgpu: dont drop the runtime PM reference twice in amdgpu_gpr Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 106/193] drm/amdgpu: report the BO alignment in bytes in GEM_LIST_HANDLES Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 107/193] drm/exec: dont immediately add prelocked obj to array of locked objs Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 108/193] drm/i915/cx0_phy: Fix ARL-S host bridge detection Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 109/193] drm/i915/dmc: Add sanity check for DMC load address Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 110/193] drm/xe: Bump LRU for external objects on exec and rebind Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 111/193] tracing: Fix the shift out of bounds in the log2 histogram modifier Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 112/193] tracing: Take trace_types_lock when dropping the buffer_meta reference Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 113/193] tracing: Check operator stack capacity before pushing Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 114/193] tracing: Do not initialize tracefs work if tracing is disabled Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 115/193] tracing: Fix hist trigger timestamps for buffered events Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 116/193] wifi: p54: validate firmware record lengths Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 117/193] tcp: fix use-after-free in do_tcp_getsockopt(TCP_CONGESTION) Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 118/193] tcp: fix use-after-free in do_tcp_getsockopt(TCP_CC_INFO) Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 119/193] cgroup: fix spurious SIGKILL of CLONE_INTO_CGROUP children Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 120/193] cifs: dont update i_size in cifs_do_truncate without a cached handle Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 138/242] i2c: xiic: restore non-managed runtime PM to fix clk WARN flood Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 121/193] dm cache: fix demotion stats in passthrough mode Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 122/193] dm cache: fix issue with background work locking Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 123/193] dm-crypt: fix a tiny race condition in crypt_dec_pending Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 124/193] dm-ebs: fix incorrect device offset check in ebs_ctr() Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 125/193] dm-integrity: fix infinite loop on discard with large tag size Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 126/193] dm-integrity: require stable writes for internal hash modes Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 127/193] mac802154: fix data race and NULL deref on local->assoc_dev Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 128/193] net/iucv: fix the recvmsg window update Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 129/193] xfs: dont hold buffer locks across sync transaction commit in xfs_sync_sb_buf Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 130/193] xfs: fix capability check in xfs Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 131/193] xfs: fix zoned write iomap flags assignments Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 132/193] netlink: specs: fix the conntrack filter type Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 133/193] netlink: specs: add missing mask attributes for conntrack dump Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 134/193] workqueue: Use raise_softirq() to trigger softirq in irq_work handler Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 135/193] workqueue: Annotate cb_lock nesting when draining a dead BH pool Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 136/193] tipc: protect node reset trace dump with node lock Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 137/193] sctp: validate chunk length in the inqueue parser Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 138/193] page_pool: keep frag_offset aligned for odd-sized requests Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 139/193] s390/ctcm: Prevent XID null dereference Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 140/193] s390/pci: Fix leak of uninitialized kernel data in SCLP report Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 141/193] ipv4: avoid divide by zero in fib_rebalance Greg Kroah-Hartman
2026-10-23 16:36 ` [PATCH 6.18 142/193] KVM: SVM: Stop toggling virtual VMSAVE/VMLOAD on intercept recalc Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 143/193] drm/amdgpu: Fix VCE 3 ring align_mask Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 144/193] ACPI: tiny-power-button: Convert the driver to a platform one Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 145/193] netfilter: nft_byteorder: remove multi-register support Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 146/193] KVM: x86/mmu: Preserve nested TDP shadow page tables if they are used as roots Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 147/193] KVM: x86/mmu: Cope with the SS bit being set in #NPF exit codes Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 148/193] drm/amdgpu: keep the eviction fence until the last handle is closed Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 149/193] futex: Fix mm reuse handling for FUT_OFF_MMSHARED Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 150/193] ASoC: SOF: ipc4-topology: Fix shift-out-of-bounds for aggregated ALH capture Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 151/193] ext4: free the sbi after a grace period Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 152/193] net: bridge: mcast: dont truncate the port group walk on teardown Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 153/193] net: psp: do not inherit the Rx association on clone Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 154/193] ksmbd: fill in FileSysIdentifier in FS_POSIX_INFORMATION Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 155/193] ksmbd: initialize FileSystemControlFlags in FS_CONTROL_INFORMATION Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 156/193] ksmbd: zero the FS_OBJECT_ID_INFORMATION buffer before filling it in Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 157/193] net/sched: cls_flower: validate mask pointer after nla_next() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 158/193] smb: client: fix heap overflow in cifs_do_set_acl() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 159/193] smb: client: fix multiuser mount with krb5 Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 160/193] scsi: st: Fix use-after-free race between st_remove() and st_open() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 161/193] ntfs3: fix use-after-free of sbi->options in cmp_fnames Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 162/193] ntfs3: fix double free of sbi->options->nls and clarify ownership of fc->fs_private Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 163/193] fs/ntfs3: fix ntfs_mount_options leak in ntfs_fill_super() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 164/193] ntfs3: free the sbi after a grace period Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 165/193] drm/i915/dmc: Harden DMC firmware payload parsing Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 166/193] sched_ext: idle: Respect task affinity in restricted CPU selection Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 167/193] tracing: Fix ignored return value of resize_buffer_duplicate_size() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 168/193] tracing: Keep the predicate limit separate from program capacity Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 169/193] drm/amdgpu: free the userptr ranges when a CS fails after parser_bos Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 170/193] sched_ext: Fix stall when a task enqueued with SCX_ENQ_LAST lands back on its CPUs local DSQ Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 171/193] tracing: Fix fully-qualified variable reference printing in histograms Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 172/193] tracing: Use __free() for expr_str() buffer Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 173/193] tracing: Bound histogram expression strings with seq_buf Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 174/193] tracing: Fix NULL dereference when copying keys for a field variable Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 175/193] smb/client: refresh allocation size after duplicate extents Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 176/193] cifs: add revalidation on FSCTL failure in smb2_duplicate_extents() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 177/193] io_uring/cancel: move request/task cancelation logic into cancel.c Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 178/193] io_uring/cancel: move __io_uring_cancel() " Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 179/193] io_uring/cancel: move cancelation code from io_uring.c to cancel.c Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 180/193] io_uring/cancel: dont spin on local work the task cant run Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 181/193] workqueue: release pwq pools by pool type Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 182/193] workqueue: Fix unbound pool lifetime for pending pwqs Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 183/193] virtio: set skb owner of virtio_transport_reset_no_sock() reply Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 184/193] vsock/virtio: validate packet source for connected sockets Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 185/193] ipv4: udp: Create exceptions before socket matching Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 186/193] vsock/vmci: validate packet source for connected sockets Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 187/193] smb: client: fix data corruption with concurrent writes and O_TRUNC Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 188/193] ice: remove legacy Rx and construct SKB Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 189/193] ice: drop page splitting and recycling Greg Kroah-Hartman
2026-10-23 16:37 ` Greg Kroah-Hartman [this message]
2026-10-23 16:37 ` [PATCH 6.18 191/193] ice: fix broken Rx on VFs Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 192/193] ice: fix crash in ethtool offline loopback test Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 6.18 193/193] smb: client: drain outstanding I/O before truncating on O_TRUNC open Greg Kroah-Hartman
2026-10-23 19:52 ` [PATCH 6.18 000/193] 6.18.59-rc1 review Wentao Guan
2026-10-23 20:15 ` Nikola Ciprich
2026-10-23 20:47 ` Pavel Machek
2026-10-23 21:28 ` Florian Fainelli
2026-10-24 2:27 ` Peter Schneider
2026-10-24 10:46 ` Barry K. Nathan
2026-10-24 10:58 ` Brett A C Sheffield
2026-10-24 11:55 ` Miguel Ojeda
2026-10-24 18:18 ` SJ Park
2026-10-25 0:37 ` Ron Economos
2026-10-26 18:41 ` Shuah Khan
-- strict thread matches above, loose matches on Subject: below --
2026-10-23 16:37 [PATCH 7.2 000/242] 7.2.13-rc1 review Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 001/242] ksmbd: exempt FSCTL_PIPE_TRANSCEIVE from the generic file-id lookup Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 002/242] i2c: qcom-geni: Restore the source-clock selection policy Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 003/242] soc/tegra: fuse: Add missing newline to APBMISC error message Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 004/242] ARM: dts: ti/omap: dra7: fix PCIe PHY clock divider definition Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 005/242] power: supply: Fix maintenance charge table kernel-doc Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 006/242] power: supply: ds2780: Fix ds2780_get_capacity() returning raw value Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 007/242] soc/tegra: pmc: Fix uninitialised clock rate Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 008/242] Drivers: hv: Avoid infinite retry loop in init_vp_index() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 009/242] x86/hyperv: Avoid using per-cpu output page in hv_apicid_to_vp_index() Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 010/242] Drivers: hv: Dont reset VMBus connection state on error/exit paths Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 011/242] pinctrl: qcom: nord: fix GPIO interrupt target width Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 012/242] pinctrl: qcom: hawi: Fix intr_target_width Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 013/242] pinctrl: qcom: qcs8300: " Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 014/242] ARM: configs: sama5: enable current Microchip KSZ DSA symbols Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 015/242] pinctrl: qcom: ipq5018: add missing pwm3 function on gpio13 Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 016/242] pinctrl: qcom: spmi-gpio: make direction changes exclusive Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 017/242] tools/power turbostat: Warn, but dont Err on out-dated perf systems Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 018/242] tools/power turbostat: Fix fd_perf leak on reset Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 019/242] tools/power turbostat: Fix CWF PMT off-by-one Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 020/242] tools/power turbostat: Fix PMT error path fd handling Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 021/242] tools/power turbostat: Fix add_counter issue if > 24 counters Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 022/242] power: supply: generic-adc-battery: Fix temperature IIO channel conversion Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 023/242] power: supply: core: prevent unregistering a power supply while a callback runs Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 024/242] pinctrl: qcom: ipq5018: replace gcc_plltest with pwm2 on gpio12 Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 025/242] pinctrl: sunxi: dt: do not accumulate npins across probe attempts Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 026/242] drm/vc4: hdmi: Move packet RAM enable to PM runtime Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 027/242] gpio: nct6694: Mark the GPIO controller as sleeping Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 028/242] vsock: treat TCP_CLOSING as once-established Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 029/242] net/rds: dont let the rdma_cm destroy an id RDS still owns on route failure Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 030/242] accel/amdxdna: Fix Kconfig invalid configuration Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 031/242] ASoC: Intel: avs: Reset the stream unless it is already prepared Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 032/242] ASoC: stm32: spdifrx: fix synchronization state check Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 033/242] ASoC: cs42l56: Put the Limiter Cushion control on the limiter register Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 034/242] ASoC: cs42l52: Fix the NG Type Switch bit Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 035/242] ASoC: pcm3168a: Fix the DAC zero flag polarity bit Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 036/242] ASoC: max98371: Fix the Speaker DHT Min Volume bits Greg Kroah-Hartman
2026-10-23 16:37 ` [PATCH 7.2 037/242] ASoC: wm8978: Fix the 128x oversampling switch bits Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 038/242] ASoC: nau8822: " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 039/242] regmap: Drop map lock during cache init and exit Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 040/242] netlink: reset skb headers before unicast and multicast filtering Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 041/242] accel/rocket: clear rdev on device init failure Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 042/242] net/mlx5: HWS, release L2 to L3 tunnel reformats to their own pool Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 043/242] net/mlx5: HWS, fix flow meter offset within its bulk Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 044/242] ASoC: amd: yc: disable MSI on resume Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 045/242] drm/xe: skip eviction of a BO with no resource Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 046/242] drm/xe/oa: Zero OA buffer at allocation Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 047/242] spi: tegra114: assert CS GPIO for every transfer in a message Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 048/242] nios2: fix __wsum type degradation in csum_fold() Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 049/242] scsi: st: Save the visited block for the partition the drive is in Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 050/242] scsi: target: Disable interrupts while holding delayed_cmd_lock Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 051/242] scsi: target: iscsi: Fix race in discovery auth updates Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 052/242] sched/core: Call wakeup_preempt() for queued tasks during class change Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 053/242] entry: Account the deferred hrtimer rearm as hardirq context for lockdep Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 054/242] iommupt/kunit: Use if_changed_rule for the kunit Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 055/242] drm/panthor: fix immortalis condition Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 056/242] ocfs2/dlm: Protect the recovery list during debugfs reads Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 057/242] samples: pidfd: fix userprogs typo Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 058/242] exit: fix lost-update race on the child_subreaper bitfields Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 059/242] pipe: preserve existing fasync readers on writer setup failure Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 060/242] fs: add switch_fs_struct() Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 061/242] fs: notice when init abandons fs sharing Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 062/242] fs: add scoped_with_init_fs() Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 063/242] fs: add real_fs to track tasks actual fs_struct Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 064/242] fs: make userspace_init_fs a dynamically-initialized pointer Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 065/242] fs: add umh argument to struct kernel_clone_args Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 066/242] fs: pass flags to copy_fs() Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 067/242] fs: let idle threads share init_fs Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 068/242] tracing: Fix empty symbol names in simple_ring_buffer undef check Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 069/242] tracing: Fix simple_ring_buffer undef check on parisc Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 070/242] tracing: Fix simple_ring_buffer undef check on sparc64 Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 071/242] ring-buffer: Skip si_mem_available() for persistent and remote buffers Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 072/242] tracing: probes: error if BTF is required but unavailable Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 073/242] scsi: libsas: Fix SMP IO deadlock during HA resume Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 074/242] netlink: avoid hashing the network namespace pointer Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 075/242] net: hisilicon: hisi_femac: Move setting of netops to fix crash Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 076/242] net: hisilicon: hip04_eth: " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 077/242] net: ethernet: actions: " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 078/242] net: mv643xx: move " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 079/242] net: au1000: " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 080/242] net: ethoc: " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 082/242] net: ti: icssm-prueth: Move " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 083/242] net: bcmgenet: unshare the skb before writing the control block Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 084/242] calipso: keep BIG TCP payload_len in calipso_skbuff_setattr() Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 085/242] gpiolib: fix memory leak in gpiod_set_array_value_complex() on error paths Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 086/242] gpio: mxc: fix race between chained IRQ handler install and probe completion Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 087/242] gpio: mxc: fix both_edges bit operations Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 088/242] gpio: mxc: fix wakeup_pads " Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 089/242] gpio: mxc: fix race between gpiochip registration and IRQ domain setup Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 090/242] ring-buffer: Use subbuf_order in available memory estimation Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 091/242] net: stmmac: dwmac1000: clear the RGMII status interrupt Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 092/242] perf/x86/intel/uncore: Fix DMR CXL CM invert filter Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 093/242] perf: Fix perf_pmu_migrate_context() leaving events behind Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 094/242] printk: Postpone kthread startup Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 095/242] PCI: Ignore Immediate Readiness on Samsung 990 PRO and 990 EVO Plus NVMe Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 096/242] PCI: Dont treat ~0 as ready in pci_dev_wait() with RRS SV Greg Kroah-Hartman
2026-10-23 16:38 ` [PATCH 7.2 097/242] x86/insn-eval: Fix shadowed segment index in get_seg_reg_override_idx() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 098/242] firewire: core: fix race condition in split transaction handling Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 099/242] 9p: free the session after a grace period Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 100/242] accel/rocket: search every core slot when a core is removed Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 101/242] accel/rocket: search every core slot when looking up a scheduler Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 102/242] afs: free the super info after a grace period Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 103/242] ASoC: SOF: ipc4-topology: Fix shift-out-of-bounds for aggregated ALH capture Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 104/242] ASoC: SOF: sof-client: Use event-handler mutex consistently Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 105/242] autofs: ignore notification errors from a replaced pipe Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 106/242] bootconfig: give the footer size static_assert a message Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 107/242] unicode: free the map after a grace period Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 108/242] watch_queue: Fix note pool publication race in watch_queue_set_size() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 109/242] x86/kvm: Dont consume async #PF flags on a kernel #PF in NMI context Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 110/242] KVM: SEV: Fix page dirtying in sev_gmem_post_populate() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 111/242] KVM: nVMX: Reset MMU back to the root MMU if loading L2 state fails for !VM-Entry Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 112/242] fsnotify: prevent mark additions during connector teardown Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 113/242] pid_namespace: make zap_pid_ns_processes() freezable Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 114/242] ext4: free the sbi after a grace period Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 115/242] eventfs: Free the eventfs_inode after an rcu grace period too Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 116/242] ipc: drop the mqueue mount with kern_unmount() on setup failure Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 117/242] ntfs3: free the sbi after a grace period Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 118/242] namespace: a mount that copy_tree() leaves out cant take over a lock Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 119/242] namei: test for a negative dentry the way traverse_mounts() does Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 120/242] futex: Fix mm reuse handling for FUT_OFF_MMSHARED Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 121/242] lib/crypto: arm64: Fix lost Poly1305 carry when resuming NEON state Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 122/242] lib/crypto: poly1305: Use memzero_explicit() in poly1305_final() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 123/242] mshv_vtl: Check per-CPU register page before mmap Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 124/242] net/sched: fix use-after-free in __tcf_action_put() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 125/242] net: rds: fix uninitialized trans dereference in CM event handler Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 126/242] pinctrl: amd: Clear S4 wake bits when firmware has _AEI Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 127/242] power: sequencing: qcom-wcn: power off WLAN at probe Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 128/242] riscv: dts: microchip: beaglev-fire: remove double definition of gpio interrupts Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 129/242] sctp: revalidate output stream after association connect wait Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 130/242] spi: imx: fix slab corruption from undersized DMA bounce buffers Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 131/242] tools/power turbostat: Read complete CPU lists Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 132/242] tools: gpio: fix building from the top level with O= Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 133/242] tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 134/242] gpio: shared: fix use-after-free bug when adding shared proxies Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 135/242] gpio: shared: gracefully handle no-device lookup of shared GPIOs Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 136/242] i2c: qcom-cci: Fix HALT_ACK reset request being dropped Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 137/242] i2c: viai2c-wmt: Fix clock leak in wmt_i2c_probe() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 139/242] perf: Track the perf mlock gift separately Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 140/242] perf: Update cgroup time when rotating multiplexed events Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 141/242] ring-buffer: Do not show buffer_meta for CPUs without a buffer Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 142/242] ring-buffer: Fix the sub-buffer array base in rb_meta_subbuf_idx() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 143/242] ring-buffer: Fix false warning in ring_buffer_map_get_reader() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 144/242] scsi: bsg: Pass reply_len to bsg_setup_queue() to fit UFS ARPMB replies Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 145/242] scsi: st: Fix use-after-free race between st_remove() and st_open() Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 146/242] scsi: xen/scsifront: Check for a NULL shadow entry on a backend response Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 147/242] scsi: libiscsi: Reject a negative task index from parse_pdu_itt Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 148/242] scsi: libiscsi: Validate the ITT reflected in a Reject PDU Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 149/242] scsi: libiscsi: Validate the task named by a management response Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 150/242] drm/amd/display: Fix NULL sink dereference in USB4 bandwidth functions Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 151/242] drm/amd/pm: add zero fan stop temperature support on smu 14.0.2 Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 152/242] drm/amdgpu/sdma3: Work around POLL_REGMEM / FENCE hang Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 153/242] drm/amdgpu/uvd3.1: Fix checking whether UVD firmware keyselect was already set Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 154/242] drm/amdgpu: destroy mutex when tearing down ttm buffer entity Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 155/242] drm/amdgpu: dont drop the runtime PM reference twice in amdgpu_gpr Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 156/242] drm/amdgpu: fix GEM object leak on ENOMEM in userptr ioctl Greg Kroah-Hartman
2026-10-23 16:39 ` [PATCH 7.2 157/242] drm/amdgpu: fix sched entity leak in ttm buffer entity init Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 158/242] drm/amdgpu: keep the eviction fence until the last handle is closed Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 159/242] drm/amdgpu: report the BO alignment in bytes in GEM_LIST_HANDLES Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 160/242] drm/exec: dont immediately add prelocked obj to array of locked objs Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 161/242] drm/i915/cx0_phy: Fix ARL-S host bridge detection Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 162/242] drm/i915/dmc: Add sanity check for DMC load address Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 163/242] drm/xe: Bump LRU for external objects on exec and rebind Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 164/242] drm/xe: Dont transfer shrinker pages for pinned bos on purgeable state change Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 165/242] sched_ext: Fix use-after-free of a destroyed user DSQ by a deferred reenqueue Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 166/242] sched_ext: idle: Respect task affinity in restricted CPU selection Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 167/242] sched_ext: Propagate every bypass depth change to the descendants Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 168/242] tracing: Fix the shift out of bounds in the log2 histogram modifier Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 169/242] tracing: Keep the predicate limit separate from program capacity Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 170/242] tracing: Take trace_types_lock when dropping the buffer_meta reference Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 171/242] tracing: Check operator stack capacity before pushing Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 172/242] tracing: Do not initialize tracefs work if tracing is disabled Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 173/242] tracing: Fix crash in print_graph_function_event() Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 174/242] tracing: Fix hist trigger timestamps for buffered events Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 175/242] tracing: Fix ignored return value of resize_buffer_duplicate_size() Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 176/242] wifi: p54: validate firmware record lengths Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 177/242] tcp: fix use-after-free in do_tcp_getsockopt(TCP_CONGESTION) Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 178/242] tcp: fix use-after-free in do_tcp_getsockopt(TCP_CC_INFO) Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 179/242] cgroup: fix spurious SIGKILL of CLONE_INTO_CGROUP children Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 180/242] cifs: add revalidation on FSCTL failure in smb2_duplicate_extents() Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 181/242] cifs: dont update i_size in cifs_do_truncate without a cached handle Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 182/242] dm cache: fix demotion stats in passthrough mode Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 183/242] dm cache: fix issue with background work locking Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 184/242] dm-crypt: fix a tiny race condition in crypt_dec_pending Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 185/242] dm-ebs: fix incorrect device offset check in ebs_ctr() Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 186/242] dm-integrity: fix infinite loop on discard with large tag size Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 187/242] dm-integrity: require stable writes for internal hash modes Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 188/242] mac802154: fix data race and NULL deref on local->assoc_dev Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 189/242] net/iucv: fix the recvmsg window update Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 190/242] xfs: dont hold buffer locks across sync transaction commit in xfs_sync_sb_buf Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 191/242] xfs: fix capability check in xfs Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 192/242] xfs: fix zoned write iomap flags assignments Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 193/242] netlink: specs: fix the conntrack filter type Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 194/242] netlink: specs: add missing mask attributes for conntrack dump Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 195/242] io_uring/cancel: dont spin on local work the task cant run Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 196/242] workqueue: Use raise_softirq() to trigger softirq in irq_work handler Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 197/242] workqueue: Annotate cb_lock nesting when draining a dead BH pool Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 198/242] tipc: protect node reset trace dump with node lock Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 199/242] selinux: fix BPF token permission checks Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 200/242] sctp: validate chunk length in the inqueue parser Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 201/242] page_pool: keep frag_offset aligned for odd-sized requests Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 202/242] s390/ctcm: Prevent XID null dereference Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 203/242] s390/pai: Handle multiple PMU stop callback invocations Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 204/242] s390/pci: Fix leak of uninitialized kernel data in SCLP report Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 205/242] vsock/virtio: validate packet source for connected sockets Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 206/242] vsock/vmci: " Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 207/242] ipv4: avoid divide by zero in fib_rebalance Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 208/242] drm/amdgpu: Fix VCE 3 ring align_mask Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 209/242] KVM: x86/mmu: Cope with the SS bit being set in #NPF exit codes Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 210/242] drm/amdgpu: correct reservation fence slots for userq per-vm BOs eviction Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 211/242] drm/amdgpu/userq: actually validate userq BOs Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 212/242] drm/i915/dmc: Harden DMC firmware payload parsing Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 213/242] net: bridge: mcast: dont truncate the port group walk on teardown Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 214/242] net: ntb_netdev: Fix statistics races Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 215/242] net: psp: do not inherit the Rx association on clone Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 216/242] ksmbd: fill in FileSysIdentifier in FS_POSIX_INFORMATION Greg Kroah-Hartman
2026-10-23 16:40 ` [PATCH 7.2 217/242] ksmbd: initialize FileSystemControlFlags in FS_CONTROL_INFORMATION Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 218/242] ksmbd: zero the FS_OBJECT_ID_INFORMATION buffer before filling it in Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 219/242] net/sched: cls_flower: validate mask pointer after nla_next() Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 220/242] smb: client: fix data corruption with concurrent writes and O_TRUNC Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 221/242] smb: client: fix heap overflow in cifs_do_set_acl() Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 222/242] smb: client: fix multiuser mount with krb5 Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 223/242] smb: client: reject SetEA requests that do not fit the request buffer Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 224/242] ntfs: handle signal interruption in fallocate Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 225/242] ntfs: fix FITRIM range alignment Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 226/242] ntfs: fix incorrect MFT record pointer passed to ntfs_attr_record_resize Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 227/242] ntfs: fix undefined behavior in mft/index record size calculation Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 228/242] genirq/proc: Fix missing CPU header in /proc/interrupts Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 229/242] drm/amdgpu: Remove the bo list mutex Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 230/242] drm/amdgpu: free the userptr ranges when a CS fails after parser_bos Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 231/242] sched_ext: Fix stall when a task enqueued with SCX_ENQ_LAST lands back on its CPUs local DSQ Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 232/242] tracing: Use __free() for expr_str() buffer Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 233/242] tracing: Bound histogram expression strings with seq_buf Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 234/242] tracing: Fix NULL dereference when copying keys for a field variable Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 235/242] sched_ext: Fix the bypass dispatch claim for schedulers bypassed by an ancestor Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 236/242] workqueue: Fix unbound pool lifetime for pending pwqs Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 237/242] ntfs: use pagecache_isize_extended() on size extension Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 238/242] ntfs: take invalidate_lock in ntfs_setattr_size() Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 239/242] ntfs: fix resident conversion in ntfs_new_attr_flags Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 240/242] ntfs: move attribute payload before shrinking its record Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 241/242] ntfs: fix memmove overlap in ntfs_new_attr_flags Greg Kroah-Hartman
2026-10-23 16:41 ` [PATCH 7.2 242/242] smb: client: drain outstanding I/O before truncating on O_TRUNC open Greg Kroah-Hartman
2026-10-23 20:44 ` [PATCH 7.2 000/242] 7.2.13-rc1 review Pavel Machek
2026-10-23 21:34 ` Salvatore Bonaccorso
2026-10-23 22:44 ` Florian Fainelli
2026-10-23 23:42 ` Barry K. Nathan
2026-10-24 1:21 ` Peter Schneider
2026-10-24 5:32 ` Greg Kroah-Hartman
2026-10-24 14:09 ` Miguel Ojeda
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=20261023163718.715324884@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=aleksander.lobakin@intel.com \
--cc=alexander.nowlin@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=jacob.e.keller@intel.com \
--cc=maciej.fijalkowski@intel.com \
--cc=michal.kubiak@intel.com \
--cc=patches@lists.linux.dev \
--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.