From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A45D92773F0; Mon, 23 Mar 2026 15:10:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278628; cv=none; b=hYiPscMaUWtoHHUSE0uiF44QeLmmp6BtqOEY2sp2g3n0QsJ0QkfzdEueAPbTe8EXtgv3XyQY8oFu1tGcerh6isXECrqcu5CQEsHZXqyKDDZiianZRlWpwTOIlaqAlcA0ALMd85Hy/V2EWRPn/0GMRx+7tt2w7XgeB+y4DMamXeI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774278628; c=relaxed/simple; bh=umgE/+FpNrAa0uCU7cHJFWVu4PSBDep31pO390Rw3NQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IdsAzsKoyNIiwNLJqu/jHOfstkp2XQ5tjcO/mUOtDdAMudD9aMAAS+RGuTkKg/P8x8btJseWeH2WHro300y53p7lYvo5768pB49kcRV0vTYYaPqT2g8baNC+f/agstUAdrVNa+4R85pDfFelh5zoMRLt/H4zty8PsvJjeGMIw88= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=fdmWGe3E; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="fdmWGe3E" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D802EC4CEF7; Mon, 23 Mar 2026 15:10:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1774278628; bh=umgE/+FpNrAa0uCU7cHJFWVu4PSBDep31pO390Rw3NQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fdmWGe3EMgYIe1AzS6Z7dUui84OUapsbe2z6l8sP3cemibMowDAFQDW5wn5ZO5Kvc i4/MESfE5nZTRIuAxDdomqbOqp2FKVql9BuaUFACxYQJnkRPbkiCYby2ifsNs8w1K+ 27prjYVr90eBTIN3RvIMvJ5AloxxtAbySXu9yL/Y= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Ankit Garg , Jordan Rhee , Harshitha Ramamurthy , Paolo Abeni , Joshua Washington Subject: [PATCH 6.6 366/567] gve: defer interrupt enabling until NAPI registration Date: Mon, 23 Mar 2026 14:44:46 +0100 Message-ID: <20260323134542.870894602@linuxfoundation.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260323134533.749096647@linuxfoundation.org> References: <20260323134533.749096647@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.6-stable review patch. If anyone has any objections, please let me know. ------------------ From: Ankit Garg [ Upstream commit 3d970eda003441f66551a91fda16478ac0711617 ] 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] [ 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] [ 0.946369] [ 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: 893ce44df565 ("gve: Add basic driver framework for Compute Engine Virtual NIC") Signed-off-by: Ankit Garg Reviewed-by: Jordan Rhee Signed-off-by: Harshitha Ramamurthy Link: https://patch.msgid.link/20251219102945.2193617-1-hramamurthy@google.com Signed-off-by: Paolo Abeni [ 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 Signed-off-by: Greg Kroah-Hartman --- 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 @@ -585,6 +585,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; }; /* Tracks allowed and current queue settings */ --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -407,9 +407,10 @@ static int gve_alloc_notify_blocks(struc snprintf(block->name, sizeof(block->name), "gve-ntfy-blk%d@pci:%s", i, pci_name(priv->pdev)); 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); @@ -575,6 +576,7 @@ static void gve_add_napi(struct gve_priv struct gve_notify_block *block = &priv->ntfy_blocks[ntfy_idx]; netif_napi_add(priv->dev, &block->napi, gve_poll); + enable_irq(block->irq); } static void gve_remove_napi(struct gve_priv *priv, int ntfy_idx) @@ -582,6 +584,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_xdp_qpls(struct gve_priv *priv)