{"id":2237922,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2237922/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-ide/patch/20260513151359.1075403-8-cassel@kernel.org/","project":{"id":13,"url":"http://patchwork.ozlabs.org/api/1.1/projects/13/?format=json","name":"Linux IDE development","link_name":"linux-ide","list_id":"linux-ide.vger.kernel.org","list_email":"linux-ide@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260513151359.1075403-8-cassel@kernel.org>","date":"2026-05-13T15:14:01","name":"[v4,2/4] ata: libata-scsi: do not use the deferred QC feature for ATA_DEFER_PORT","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"91cc1c72a33505b39f4f321629bbcee772867474","submitter":{"id":87751,"url":"http://patchwork.ozlabs.org/api/1.1/people/87751/?format=json","name":"Niklas Cassel","email":"cassel@kernel.org"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-ide/patch/20260513151359.1075403-8-cassel@kernel.org/mbox/","series":[{"id":504179,"url":"http://patchwork.ozlabs.org/api/1.1/series/504179/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-ide/list/?series=504179","date":"2026-05-13T15:13:59","name":"ata: fix deferred QC handling for port multipliers","version":4,"mbox":"http://patchwork.ozlabs.org/series/504179/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2237922/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2237922/checks/","tags":{},"headers":{"Return-Path":"\n <linux-ide+bounces-5741-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-ide@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=AaJw5sJV;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ide+bounces-5741-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"AaJw5sJV\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::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 4gFyl12k3Dz1yKH\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 14 May 2026 01:57:01 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 648173451ED3\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 13 May 2026 15:18:06 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 23FE149550A;\n\tWed, 13 May 2026 15:14:13 +0000 (UTC)","from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\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 01431494A00\n\tfor <linux-ide@vger.kernel.org>; Wed, 13 May 2026 15:14:12 +0000 (UTC)","by smtp.kernel.org (Postfix) with ESMTPSA id 3025AC19425;\n\tWed, 13 May 2026 15:14:11 +0000 (UTC)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1778685253; cv=none;\n b=aHViWVeERm4g2KYU4nIkEGBX9ruwZAe1gkylYDo6tpA8jv0TxNKql+uTBgehXPpBXzte9EAJpiOiuXXSSo4pwHQXST6tl8P6NOB3ofo9Jh4TVKjfQtLmqImcXyjASbmPE74PzxyNz3uQNqg6s56aj4lEmPLHH98nN6GT2JXhamI=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1778685253; c=relaxed/simple;\n\tbh=QL1hgyowVfja/vcJIALXSKCDzjwmNt42m3BowKG8WeQ=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=t3Bh1JliCfNHSXjeS8v3DPiesUWIT35Y+iK8h/RMitngb6R+GBbmKjEFhTFPNeG++RrYb/Dxx9wtSvnxB3+2j4K1ihGrVdup56EmD7/FnozVbxhECGZ9vBxdB/TnAW6um0W5Cu8ZGTV+MtuXBWBARk2Yt7KTI52mDcnqOJjhB0A=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=AaJw5sJV; arc=none smtp.client-ip=10.30.226.201","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1778685252;\n\tbh=QL1hgyowVfja/vcJIALXSKCDzjwmNt42m3BowKG8WeQ=;\n\th=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n\tb=AaJw5sJVaOCRaU2hB4vvcQajcqQjX7ruecf55JaFFubL0BZnwjFDDM8GOB2+2nAVt\n\t FJTPB83Qaw8AniTQKZJvBqbCFhEaSi7xjyYZXtQcaMhqfQhJJwYdXcml+Z3uQrFru3\n\t hGUs3ZQcPc2By2WRNj6sd/hgXoNiKp+4CQlRMcEdsgcbM+Opee6V5F9nmVBSYVd2eh\n\t GPrCSfkKeXyQU/ju9+HRqZDUYjHLYb9S1TunPqSotTh6plMP7dNRSejVaMtjJmGKMU\n\t 7JhpbrpbdrLN+/GZNr2fRDgLw7gJ1pOyfMhGQmDZG1qfBPrl7pQhLoxhdjT7qxOYjh\n\t xul/W9GXQaFuQ==","From":"Niklas Cassel <cassel@kernel.org>","To":"Tommy Kelly <linux@tkel.ly>,\n\tDamien Le Moal <dlemoal@kernel.org>,\n\tNiklas Cassel <cassel@kernel.org>,\n\tJohn Garry <john.g.garry@oracle.com>,\n\t\"Martin K. Petersen\" <martin.petersen@oracle.com>","Cc":"linux-ide@vger.kernel.org","Subject":"[PATCH v4 2/4] ata: libata-scsi: do not use the deferred QC feature\n for ATA_DEFER_PORT","Date":"Wed, 13 May 2026 17:14:01 +0200","Message-ID":"<20260513151359.1075403-8-cassel@kernel.org>","X-Mailer":"git-send-email 2.54.0","In-Reply-To":"<20260513151359.1075403-6-cassel@kernel.org>","References":"<20260513151359.1075403-6-cassel@kernel.org>","Precedence":"bulk","X-Mailing-List":"linux-ide@vger.kernel.org","List-Id":"<linux-ide.vger.kernel.org>","List-Subscribe":"<mailto:linux-ide+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-ide+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-Developer-Signature":"v=1; a=openpgp-sha256; l=1567; i=cassel@kernel.org;\n h=from:subject; bh=QL1hgyowVfja/vcJIALXSKCDzjwmNt42m3BowKG8WeQ=;\n b=owGbwMvMwCV2MsVw8cxjvkWMp9WSGLJYppq7PlbM0Fq6gOfF3uPrcoJeVP3jqLzVU8r6VXweh\n /fNErN9HaUsDGJcDLJiiiy+P1z2F3e7TzmueMcGZg4rE8gQBi5OAZjIX0FGhj3PuXafd3/++J/p\n 9/JeofMrWXx8lOY67ePYbGXS2th2ZRsjw4OwaRWZsplp1o+YJA53vDTPWZaQOOtMwix2J+0FiyV\n 5OAE=","X-Developer-Key":"i=cassel@kernel.org; a=openpgp;\n fpr=5ADE635C0E631CBBD5BE065A352FE6582ED9B5DA","Content-Transfer-Encoding":"8bit"},"content":"The deferred QC feature was meant to handle mixed NCQ and non-NCQ commands,\ni.e. for return value ATA_DEFER_LINK.\n\nATA_DEFER_PORT is returned by PATA drivers, but also certain SATA drivers\nlike sata_mv and sata_sil24 that uses ap->excl_link to workaround hardware\nbugs in these HBAs. Regardless of the reason, using the deferred QC feature\nfor ATA_DEFER_PORT is always wrong, and will break the ap->excl_link usage\nof the SATA drivers that rely on that feature.\n\nModify ata_scsi_qc_issue() to only use the deferred QC feature when mixing\nNCQ and non-NCQ commands, i.e. ATA_DEFER_LINK.\n\nFixes: 0ea84089dbf6 (\"ata: libata-scsi: avoid Non-NCQ command starvation\")\nSigned-off-by: Niklas Cassel <cassel@kernel.org>\n---\n drivers/ata/libata-scsi.c | 5 +++--\n 1 file changed, 3 insertions(+), 2 deletions(-)","diff":"diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c\nindex b9064dd4390c..22642a0e6b84 100644\n--- a/drivers/ata/libata-scsi.c\n+++ b/drivers/ata/libata-scsi.c\n@@ -1789,11 +1789,11 @@ static int ata_scsi_qc_issue(struct ata_port *ap, struct ata_queued_cmd *qc)\n \t\tgoto defer_qc;\n \tcase ATA_DEFER_PORT:\n \t\tret = SCSI_MLQUEUE_HOST_BUSY;\n-\t\tgoto defer_qc;\n+\t\tgoto free_qc;\n \tdefault:\n \t\tWARN_ON_ONCE(1);\n \t\tret = SCSI_MLQUEUE_HOST_BUSY;\n-\t\tgoto defer_qc;\n+\t\tgoto free_qc;\n \t}\n \n issue_qc:\n@@ -1813,6 +1813,7 @@ static int ata_scsi_qc_issue(struct ata_port *ap, struct ata_queued_cmd *qc)\n \t\treturn 0;\n \t}\n \n+free_qc:\n \t/* Force a requeue of the command to defer its execution. */\n \tata_qc_free(qc);\n \n","prefixes":["v4","2/4"]}