+++ /dev/null
-From 3d970eda003441f66551a91fda16478ac0711617 Mon Sep 17 00:00:00 2001
-From: Ankit Garg <nktgrg@google.com>
-Date: Fri, 19 Dec 2025 10:29:45 +0000
-Subject: gve: defer interrupt enabling until NAPI registration
-
-From: Ankit Garg <nktgrg@google.com>
-
-commit 3d970eda003441f66551a91fda16478ac0711617 upstream.
-
-Currently, interrupts are automatically enabled immediately upon
-request. This allows interrupt to fire before the associated NAPI
-context is fully initialized and cause failures like below:
-
-[ 0.946369] Call Trace:
-[ 0.946369] <IRQ>
-[ 0.946369] __napi_poll+0x2a/0x1e0
-[ 0.946369] net_rx_action+0x2f9/0x3f0
-[ 0.946369] handle_softirqs+0xd6/0x2c0
-[ 0.946369] ? handle_edge_irq+0xc1/0x1b0
-[ 0.946369] __irq_exit_rcu+0xc3/0xe0
-[ 0.946369] common_interrupt+0x81/0xa0
-[ 0.946369] </IRQ>
-[ 0.946369] <TASK>
-[ 0.946369] asm_common_interrupt+0x22/0x40
-[ 0.946369] RIP: 0010:pv_native_safe_halt+0xb/0x10
-
-Use the `IRQF_NO_AUTOEN` flag when requesting interrupts to prevent auto
-enablement and explicitly enable the interrupt in NAPI initialization
-path (and disable it during NAPI teardown).
-
-This ensures that interrupt lifecycle is strictly coupled with
-readiness of NAPI context.
-
-Cc: stable@vger.kernel.org
-Fixes: 1dfc2e46117e ("gve: Refactor napi add and remove functions")
-Signed-off-by: Ankit Garg <nktgrg@google.com>
-Reviewed-by: Jordan Rhee <jordanrhee@google.com>
-Reviewed-by: Joshua Washington <joshwash@google.com>
-Signed-off-by: Harshitha Ramamurthy <hramamurthy@google.com>
-Link: https://patch.msgid.link/20251219102945.2193617-1-hramamurthy@google.com
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-[ modified to re-introduce the irq member to struct gve_notify_block,
- which was introuduced in commit 9a5e0776d11f ("gve: Avoid rescheduling
- napi if on wrong cpu"). ]
-Signed-off-by: Joshua Washington <joshwash@google.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/ethernet/google/gve/gve.h | 1 +
- drivers/net/ethernet/google/gve/gve_main.c | 5 ++++-
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
---- a/drivers/net/ethernet/google/gve/gve.h
-+++ b/drivers/net/ethernet/google/gve/gve.h
-@@ -165,6 +165,7 @@ struct gve_notify_block {
- struct gve_priv *priv;
- struct gve_tx_ring *tx; /* tx rings on this block */
- struct gve_rx_ring *rx; /* rx rings on this block */
-+ u32 irq;
- } ____cacheline_aligned;
-
- /* Tracks allowed and current queue settings */
---- a/drivers/net/ethernet/google/gve/gve_main.c
-+++ b/drivers/net/ethernet/google/gve/gve_main.c
-@@ -277,8 +277,9 @@ static int gve_alloc_notify_blocks(struc
- snprintf(block->name, sizeof(block->name), "%s-ntfy-block.%d",
- name, i);
- block->priv = priv;
-+ block->irq = priv->msix_vectors[msix_idx].vector;
- err = request_irq(priv->msix_vectors[msix_idx].vector,
-- gve_intr, 0, block->name, block);
-+ gve_intr, IRQF_NO_AUTOEN, block->name, block);
- if (err) {
- dev_err(&priv->pdev->dev,
- "Failed to receive msix vector %d\n", i);
-@@ -413,6 +414,7 @@ static void gve_add_napi(struct gve_priv
-
- netif_napi_add(priv->dev, &block->napi, gve_napi_poll,
- NAPI_POLL_WEIGHT);
-+ enable_irq(block->irq);
- }
-
- static void gve_remove_napi(struct gve_priv *priv, int ntfy_idx)
-@@ -420,6 +422,7 @@ static void gve_remove_napi(struct gve_p
- struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx];
-
- netif_napi_del(&block->napi);
-+ disable_irq(block->irq);
- }
-
- static int gve_register_qpls(struct gve_priv *priv)
serial-8250-add-late-synchronize_irq-to-shutdown-to-handle-dw-uart-busy.patch
drm-radeon-apply-state-adjust-rules-to-some-additional-hainan-vairants.patch
net-handle-napi_schedule-calls-from-non-interrupt.patch
-gve-defer-interrupt-enabling-until-napi-registration.patch
drm-exynos-vidi-use-priv-vidi_dev-for-ctx-lookup-in-vidi_connection_ioctl.patch
drm-exynos-vidi-fix-to-avoid-directly-dereferencing-user-pointer.patch
drm-exynos-vidi-use-ctx-lock-to-protect-struct-vidi_context-member-variables-related-to-memory-alloc-free.patch
+++ /dev/null
-From 3d970eda003441f66551a91fda16478ac0711617 Mon Sep 17 00:00:00 2001
-From: Ankit Garg <nktgrg@google.com>
-Date: Fri, 19 Dec 2025 10:29:45 +0000
-Subject: gve: defer interrupt enabling until NAPI registration
-
-From: Ankit Garg <nktgrg@google.com>
-
-commit 3d970eda003441f66551a91fda16478ac0711617 upstream.
-
-Currently, interrupts are automatically enabled immediately upon
-request. This allows interrupt to fire before the associated NAPI
-context is fully initialized and cause failures like below:
-
-[ 0.946369] Call Trace:
-[ 0.946369] <IRQ>
-[ 0.946369] __napi_poll+0x2a/0x1e0
-[ 0.946369] net_rx_action+0x2f9/0x3f0
-[ 0.946369] handle_softirqs+0xd6/0x2c0
-[ 0.946369] ? handle_edge_irq+0xc1/0x1b0
-[ 0.946369] __irq_exit_rcu+0xc3/0xe0
-[ 0.946369] common_interrupt+0x81/0xa0
-[ 0.946369] </IRQ>
-[ 0.946369] <TASK>
-[ 0.946369] asm_common_interrupt+0x22/0x40
-[ 0.946369] RIP: 0010:pv_native_safe_halt+0xb/0x10
-
-Use the `IRQF_NO_AUTOEN` flag when requesting interrupts to prevent auto
-enablement and explicitly enable the interrupt in NAPI initialization
-path (and disable it during NAPI teardown).
-
-This ensures that interrupt lifecycle is strictly coupled with
-readiness of NAPI context.
-
-Cc: stable@vger.kernel.org
-Fixes: 1dfc2e46117e ("gve: Refactor napi add and remove functions")
-Signed-off-by: Ankit Garg <nktgrg@google.com>
-Reviewed-by: Jordan Rhee <jordanrhee@google.com>
-Reviewed-by: Joshua Washington <joshwash@google.com>
-Signed-off-by: Harshitha Ramamurthy <hramamurthy@google.com>
-Link: https://patch.msgid.link/20251219102945.2193617-1-hramamurthy@google.com
-Signed-off-by: Paolo Abeni <pabeni@redhat.com>
-[ modified to re-introduce the irq member to struct gve_notify_block,
- which was introuduced in commit 9a5e0776d11f ("gve: Avoid rescheduling
- napi if on wrong cpu"). ]
-Signed-off-by: Joshua Washington <joshwash@google.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/ethernet/google/gve/gve.h | 1 +
- drivers/net/ethernet/google/gve/gve_main.c | 5 ++++-
- 2 files changed, 5 insertions(+), 1 deletion(-)
-
---- a/drivers/net/ethernet/google/gve/gve.h
-+++ b/drivers/net/ethernet/google/gve/gve.h
-@@ -441,6 +441,7 @@ struct gve_notify_block {
- struct gve_priv *priv;
- struct gve_tx_ring *tx; /* tx rings on this block */
- struct gve_rx_ring *rx; /* rx rings on this block */
-+ u32 irq;
- } ____cacheline_aligned;
-
- /* Tracks allowed and current queue settings */
---- a/drivers/net/ethernet/google/gve/gve_main.c
-+++ b/drivers/net/ethernet/google/gve/gve_main.c
-@@ -339,9 +339,10 @@ static int gve_alloc_notify_blocks(struc
- snprintf(block->name, sizeof(block->name), "%s-ntfy-block.%d",
- name, i);
- block->priv = priv;
-+ block->irq = priv->msix_vectors[msix_idx].vector;
- err = request_irq(priv->msix_vectors[msix_idx].vector,
- gve_is_gqi(priv) ? gve_intr : gve_intr_dqo,
-- 0, block->name, block);
-+ IRQF_NO_AUTOEN, block->name, block);
- if (err) {
- dev_err(&priv->pdev->dev,
- "Failed to receive msix vector %d\n", i);
-@@ -502,6 +503,7 @@ static void gve_add_napi(struct gve_priv
-
- netif_napi_add(priv->dev, &block->napi, gve_poll,
- NAPI_POLL_WEIGHT);
-+ enable_irq(block->irq);
- }
-
- static void gve_remove_napi(struct gve_priv *priv, int ntfy_idx)
-@@ -509,6 +511,7 @@ static void gve_remove_napi(struct gve_p
- struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx];
-
- netif_napi_del(&block->napi);
-+ disable_irq(block->irq);
- }
-
- static int gve_register_qpls(struct gve_priv *priv)
mm-hugetlb-fix-excessive-ipi-broadcasts-when-unsharing-pmd-tables-using-mmu_gather.patch
net-stmmac-dwmac-loongson-set-clk_csr_i-to-100-150mhz.patch
net-handle-napi_schedule-calls-from-non-interrupt.patch
-gve-defer-interrupt-enabling-until-napi-registration.patch
drm-exynos-vidi-use-priv-vidi_dev-for-ctx-lookup-in-vidi_connection_ioctl.patch
drm-exynos-vidi-fix-to-avoid-directly-dereferencing-user-pointer.patch
drm-exynos-vidi-use-ctx-lock-to-protect-struct-vidi_context-member-variables-related-to-memory-alloc-free.patch