Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2220969/?format=api
{ "id": 2220969, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2220969/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260408-tegra_warn-v1-1-669a3bc74d77@debian.org/", "project": { "id": 21, "url": "http://patchwork.ozlabs.org/api/1.1/projects/21/?format=api", "name": "Linux Tegra Development", "link_name": "linux-tegra", "list_id": "linux-tegra.vger.kernel.org", "list_email": "linux-tegra@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<20260408-tegra_warn-v1-1-669a3bc74d77@debian.org>", "date": "2026-04-08T13:45:43", "name": "spi: tegra210-quad: Fix false positive WARN on interrupt timeout with transfer complete", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "621e4fb59204856b4893d3db71e08e66bbb48be6", "submitter": { "id": 71262, "url": "http://patchwork.ozlabs.org/api/1.1/people/71262/?format=api", "name": "Breno Leitao", "email": "leitao@debian.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-tegra/patch/20260408-tegra_warn-v1-1-669a3bc74d77@debian.org/mbox/", "series": [ { "id": 499144, "url": "http://patchwork.ozlabs.org/api/1.1/series/499144/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-tegra/list/?series=499144", "date": "2026-04-08T13:45:43", "name": "spi: tegra210-quad: Fix false positive WARN on interrupt timeout with transfer complete", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/499144/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2220969/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2220969/checks/", "tags": {}, "headers": { "Return-Path": "\n <linux-tegra+bounces-13608-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-tegra@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n secure) header.d=debian.org header.i=@debian.org header.a=rsa-sha256\n header.s=smtpauto.stravinsky header.b=icQTJTsS;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c04:e001:36c::12fc:5321; helo=tor.lore.kernel.org;\n envelope-from=linux-tegra+bounces-13608-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org\n header.b=\"icQTJTsS\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=82.195.75.108", "smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=debian.org", "smtp.subspace.kernel.org;\n spf=none smtp.mailfrom=debian.org" ], "Received": [ "from tor.lore.kernel.org (tor.lore.kernel.org\n [IPv6:2600:3c04:e001:36c::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frPW13PPxz1xv0\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 08 Apr 2026 23:46:53 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby tor.lore.kernel.org (Postfix) with ESMTP id 956463042E95\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 8 Apr 2026 13:46:14 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 2469B3D091B;\n\tWed, 8 Apr 2026 13:46:14 +0000 (UTC)", "from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B1FA3D0919;\n\tWed, 8 Apr 2026 13:46:12 +0000 (UTC)", "from authenticated user\n\tby stravinsky.debian.org with esmtpsa\n (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)\n\t(Exim 4.96)\n\t(envelope-from <leitao@debian.org>)\n\tid 1wATEN-008Snk-04;\n\tWed, 08 Apr 2026 13:46:07 +0000" ], "ARC-Seal": "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775655973; cv=none;\n b=D0h+NKg1KLtmFy0q68yF83cw5GEPNSfitT1ZJ6Gn9vae28U1DvG8A6+v/YbRpB42sZnBQ/2J5Wm+gvGcbBMA7c4uP/UsJQ52h+pqOtrpqCdi4khFxnOmpn7ZN7BooTBQtQKwh+CyXxKAD7AEzM1z/hSAhgTvcq2WJeQR41wdcTg=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775655973; c=relaxed/simple;\n\tbh=L2VDqHhN7Ia7l+wKWCkvcm5lCLsUz8HKsNWtCrpGFt0=;\n\th=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc;\n b=Fj442XIPQVrXm8E6EGNldZQ1sv5a7MPGXAfHJzEYPaTDEAofiOWPu0PxBw3xqVEdAk1if1OlgP5lqP0JLn2eCGD/x8GUgJ4ORu8tvqjRM7yMYnAw/J/VDvfWKT/gXhByDmPM6Xf5p8xMlyumuQlKDbzGq+8eqWtpuSxQ587e1PE=", "ARC-Authentication-Results": "i=1; smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=debian.org;\n spf=none smtp.mailfrom=debian.org;\n dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org\n header.b=icQTJTsS; arc=none smtp.client-ip=82.195.75.108", "DKIM-Signature": "v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org;\n\ts=smtpauto.stravinsky; h=X-Debian-User:Cc:To:Message-Id:\n\tContent-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date:From:\n\tReply-To:Content-ID:Content-Description:In-Reply-To:References;\n\tbh=HcvFXUIAV4OQbqlH4vRJ5Y5Q1or2wmgdX0N00cKRyx0=; b=icQTJTsSdSmhWVsrOw6iMDEkcx\n\t6dkFhyNoWBHaMJ0VLi4G6UlFOPn4sK5QKrI2Ix1ij1JhsJs8wAqvMMoaRuGbyTNyEi/PlpD6SbYnx\n\tm6UmfFzG4L/YvdfpH6HjpSJ6gHoeWWGt98ZgAMSVw8HKlSLaN1zacWR/vXJMZdEcG0O1uGEI1Y399\n\t1RggYcDakrgrFQrTY9pMoIrnm6ynwYrFSsgwFT4x7d9Vpz6ODkT15GIkfay1SU1i54Os2mrzY2qnG\n\tI/FDKlYlmmvvV/ivcWTQjmBsXGw2MZ26TrNtqCtg7PdwXAKCv/EiA9whMVtQQwfs/tkTjhvInwtfP\n\t1VGfMkIA==;", "From": "Breno Leitao <leitao@debian.org>", "Date": "Wed, 08 Apr 2026 06:45:43 -0700", "Subject": "[PATCH] spi: tegra210-quad: Fix false positive WARN on interrupt\n timeout with transfer complete", "Precedence": "bulk", "X-Mailing-List": "linux-tegra@vger.kernel.org", "List-Id": "<linux-tegra.vger.kernel.org>", "List-Subscribe": "<mailto:linux-tegra+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-tegra+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20260408-tegra_warn-v1-1-669a3bc74d77@debian.org>", "X-B4-Tracking": "v=1; b=H4sIAAZc1mkC/yXMQQrCQAwF0KuEv+7AdCxF5ioikqaxxsUomVaF0\n ruLdvk2b0VVN63ItML1ZdUeBZnahiA3LpMGG5EJKaY+dvEYZp2cL2/2EkRlTMIH7tsBDeHperX\n PPzudd9dluKvMvwHb9gUGTwG0bgAAAA==", "X-Change-ID": "20260408-tegra_warn-cecd2ca3a61b", "To": "Thierry Reding <thierry.reding@kernel.org>,\n Jonathan Hunter <jonathanh@nvidia.com>,\n Sowjanya Komatineni <skomatineni@nvidia.com>,\n Laxman Dewangan <ldewangan@nvidia.com>, Mark Brown <broonie@kernel.org>", "Cc": "linux-tegra@vger.kernel.org, linux-spi@vger.kernel.org,\n linux-kernel@vger.kernel.org, song@kernel.org, kernel-team@meta.com,\n Breno Leitao <leitao@debian.org>", "X-Mailer": "b4 0.16-dev-453a6", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=2822; i=leitao@debian.org;\n h=from:subject:message-id; bh=L2VDqHhN7Ia7l+wKWCkvcm5lCLsUz8HKsNWtCrpGFt0=;\n b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBp1lwa0fRGYKAfqmnbOnbUQt23sPW2yEc53EGC1\n 1SJdRgmzL6JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCadZcGgAKCRA1o5Of/Hh3\n bTk4D/9Zpiz9mjkCbo1M5qP26gFrQH6VOr4VwUL0PxpKTWaF5SJiMTM/uCT1s2RV26mwI5L279o\n 5bP3/WfRuDU70jdy721FgOexf3RpqghxM+6x0zN9O71IdHZsGpdqKcRV6mV18rMVz0mM6gnwuaV\n XyZNdsqHPam2ocM3YS2Dc/e2OmLd0R8CVqhKHJAgENK+myawra+B6+aBP2qsYriKZ6wV9PnuZCn\n zeKFRVzi/C/thsR5Ils44MtMXxQsrv+QJFloY9m8dwQ794G6w9a9zfHN3KRXC56oiSFTBqddw+h\n P4bP9fbdPID3JIG5MAmyeimBFfPQH1tJEnyK2RHzbV8961gf+QVrS4oUCgUYAuj0xWI26PScTsb\n Sl+vIBcNmtBO/KV5gDGXFrud9Zhf2/z52qGSd7gz0OfpV3vlkc9D/+PvV5MCwpYIDWim9xNcp1y\n ep4yfYJT1kSTestgmIbuh3sCzd2Dnl//XFGmbqALhg16+3X1pkEoDNuxhfpkzHKfWijGT52wG3t\n XDKjXLW2THn+qVCqtL2Qcnke2BOFAE1+N7wsYL4BJxBmB/Ba+X3t5CeEnnw65lTESZNZvjxrWcX\n SCK7hjuRFM/rxWfPminPsAl80RfrHZEBTVwfx2nQNwjM3PEb6XL0InSuq/aOsVssbD6Ifh4l4FD\n k6KJuFXhF1bU8Sw==", "X-Developer-Key": "i=leitao@debian.org; a=openpgp;\n fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D", "X-Debian-User": "leitao" }, "content": "The WARN_ON_ONCE/WARN_ON fired unconditionally on any completion\ntimeout, including the recoverable case where the interrupt was lost but\nthe hardware actually finished the transfer. This produced a noisy splat\nwith a full call trace even though the driver successfully recovered via\ntegra_qspi_handle_timeout().\n\nSince tegra210 uses threaded interrupts, the transfer completion can be\nsignaled before the interrupt fires, making this false positive case\ncommon in practice.\n\nAlmost all the hosts I sysadmin in my fleet produce the following splat:\n\n\tWARNING: CPU: 47 PID: 844 at drivers/spi/spi-tegra210-quad.c:1226 tegra_qspi_transfer_one_message+0x8a4/0xba8\n\t....\n\ttegra-qspi NVDA1513:00: QSPI interrupt timeout, but transfer complete\n\nMove WARN_ON_ONCE/WARN_ON to fire only on real unrecoverable timeouts,\ni.e., when tegra_qspi_handle_timeout() confirms the hardware did NOT\ncomplete. This makes the warning actionable instead of just polluting\nthe metrics.\n\nSigned-off-by: Breno Leitao <leitao@debian.org>\n---\n drivers/spi/spi-tegra210-quad.c | 6 ++++--\n 1 file changed, 4 insertions(+), 2 deletions(-)\n\n\n---\nbase-commit: f3e6330d7fe42b204af05a2dbc68b379e0ad179e\nchange-id: 20260408-tegra_warn-cecd2ca3a61b\n\nBest regards,\n-- \nBreno Leitao <leitao@debian.org>", "diff": "diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c\nindex 7cca5578eba31..db28dd556484b 100644\n--- a/drivers/spi/spi-tegra210-quad.c\n+++ b/drivers/spi/spi-tegra210-quad.c\n@@ -1223,7 +1223,7 @@ static int tegra_qspi_combined_seq_xfer(struct tegra_qspi *tqspi,\n \t\t\t\t\t(&tqspi->xfer_completion,\n \t\t\t\t\tQSPI_DMA_TIMEOUT);\n \n-\t\t\tif (WARN_ON_ONCE(ret == 0)) {\n+\t\t\tif (ret == 0) {\n \t\t\t\t/*\n \t\t\t\t * Check if hardware completed the transfer\n \t\t\t\t * even though interrupt was lost or delayed.\n@@ -1232,6 +1232,7 @@ static int tegra_qspi_combined_seq_xfer(struct tegra_qspi *tqspi,\n \t\t\t\tret = tegra_qspi_handle_timeout(tqspi);\n \t\t\t\tif (ret < 0) {\n \t\t\t\t\t/* Real timeout - clean up and fail */\n+\t\t\t\t\tWARN_ON_ONCE(1);\n \t\t\t\t\tdev_err(tqspi->dev, \"transfer timeout\\n\");\n \n \t\t\t\t\t/* Abort transfer by resetting pio/dma bit */\n@@ -1340,7 +1341,7 @@ static int tegra_qspi_non_combined_seq_xfer(struct tegra_qspi *tqspi,\n \n \t\tret = wait_for_completion_timeout(&tqspi->xfer_completion,\n \t\t\t\t\t\t QSPI_DMA_TIMEOUT);\n-\t\tif (WARN_ON(ret == 0)) {\n+\t\tif (ret == 0) {\n \t\t\t/*\n \t\t\t * Check if hardware completed the transfer even though\n \t\t\t * interrupt was lost or delayed. If so, process the\n@@ -1349,6 +1350,7 @@ static int tegra_qspi_non_combined_seq_xfer(struct tegra_qspi *tqspi,\n \t\t\tret = tegra_qspi_handle_timeout(tqspi);\n \t\t\tif (ret < 0) {\n \t\t\t\t/* Real timeout - clean up and fail */\n+\t\t\t\tWARN_ON(1);\n \t\t\t\tdev_err(tqspi->dev, \"transfer timeout\\n\");\n \n \t\t\t\tif (tqspi->is_curr_dma_xfer)\n", "prefixes": [] }