linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Jeff Garzik <jeff@garzik.org>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	linux-ide@vger.kernel.org, Forrest Zhao <forrest.zhao@gmail.com>
Cc: Tejun Heo <htejun@gmail.com>
Subject: [PATCH 11/21] libata: implement AC_ERR_NCQ
Date: Mon, 16 Jul 2007 14:29:40 +0900	[thread overview]
Message-ID: <11845637801052-git-send-email-htejun@gmail.com> (raw)
In-Reply-To: <11845637782629-git-send-email-htejun@gmail.com>

When an NCQ command fails, all commands in flight are aborted and the
offending one is reported using log page 10h.  Depending on controller
characteristics and LLD implementation, all commands may appear as
having a device error due to shared TF status making it hard to
determine what's actually going on.

This patch adds AC_ERR_NCQ, marks the command reported by log page 10h
with it and print extra "<F>" after the error report for the command
to help distinguishing the offending command.

Signed-off-by: Tejun Heo <htejun@gmail.com>
---
 drivers/ata/libata-eh.c |    7 ++++---
 include/linux/libata.h  |    1 +
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index 96b184e..19f9947 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1195,7 +1195,7 @@ static void ata_eh_analyze_ncq_error(struct ata_port *ap)
 	/* we've got the perpetrator, condemn it */
 	qc = __ata_qc_from_tag(ap, tag);
 	memcpy(&qc->result_tf, &tf, sizeof(tf));
-	qc->err_mask |= AC_ERR_DEV;
+	qc->err_mask |= AC_ERR_DEV | AC_ERR_NCQ;
 	ehc->i.err_mask &= ~AC_ERR_DEV;
 }
 
@@ -1616,7 +1616,7 @@ static void ata_eh_report(struct ata_port *ap)
 			"cmd %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "
 			"tag %d cdb 0x%x data %u %s\n         "
 			"res %02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x "
-			"Emask 0x%x (%s)\n",
+			"Emask 0x%x (%s)%s\n",
 			cmd->command, cmd->feature, cmd->nsect,
 			cmd->lbal, cmd->lbam, cmd->lbah,
 			cmd->hob_feature, cmd->hob_nsect,
@@ -1627,7 +1627,8 @@ static void ata_eh_report(struct ata_port *ap)
 			res->lbal, res->lbam, res->lbah,
 			res->hob_feature, res->hob_nsect,
 			res->hob_lbal, res->hob_lbam, res->hob_lbah,
-			res->device, qc->err_mask, ata_err_string(qc->err_mask));
+			res->device, qc->err_mask, ata_err_string(qc->err_mask),
+			qc->err_mask & AC_ERR_NCQ ? " <F>" : "");
 	}
 }
 
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 94b37d1..cb18171 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -323,6 +323,7 @@ enum ata_completion_errors {
 	AC_ERR_INVALID		= (1 << 7), /* invalid argument */
 	AC_ERR_OTHER		= (1 << 8), /* unknown */
 	AC_ERR_NODEV_HINT	= (1 << 9), /* polling device detection hint */
+	AC_ERR_NCQ		= (1 << 10), /* marker for offending NCQ qc */
 };
 
 /* forward declarations */
-- 
1.5.0.3



  parent reply	other threads:[~2007-07-16  5:29 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-16  5:29 [PATCHSET 1/4] libata: misc updates in preparation of PMP support, take #2 Tejun Heo
2007-07-16  5:29 ` [PATCH 01/21] ahci: build fix for !CONFIG_PM Tejun Heo
2007-07-16  5:29 ` [PATCH 03/21] ahci: use deadline instead of fixed timeout for 1st FIS for SRST Tejun Heo
2007-07-16  5:29 ` [PATCH 02/21] libata: add @is_cmd to ata_tf_to_fis() Tejun Heo
2007-07-20 11:56   ` Jeff Garzik
2007-07-20 12:02   ` Jeff Garzik
2007-07-20 12:18     ` Tejun Heo
2007-07-20 12:20       ` Jeff Garzik
2007-07-16  5:29 ` [PATCH 07/21] sata_sil24: replace sil24_update_tf() with sil24_read_tf() Tejun Heo
2007-07-16  5:29 ` [PATCH 04/21] ahci: separate out ahci_kick_engine() Tejun Heo
2007-07-16  5:29 ` [PATCH 10/21] libata: improve EH report formatting Tejun Heo
2007-07-16  5:29 ` [PATCH 05/21] ahci: separate out ahci_exec_polled_cmd() Tejun Heo
2007-07-16  5:29 ` [PATCH 08/21] sata_sil24: separate out sil24_exec_polled_cmd() Tejun Heo
2007-07-16  5:29 ` [PATCH 06/21] ahci: separate out ahci_do_softreset() Tejun Heo
2007-07-16  5:29 ` [PATCH 09/21] sata_sil24: separate out sil24_do_softreset() Tejun Heo
2007-07-16  5:29 ` [PATCH 13/21] ahci: make NO_NCQ handling more consistent Tejun Heo
2007-07-16  5:29 ` [PATCH 17/21] libata: improve SCSI scan failure handling Tejun Heo
2007-07-20 12:26   ` Jeff Garzik
2007-07-20 12:28     ` Tejun Heo
2007-07-16  5:29 ` [PATCH 15/21] libata: improve SATA PHY speed down logic Tejun Heo
2007-07-20 12:20   ` Jeff Garzik
2007-07-16  5:29 ` Tejun Heo [this message]
2007-07-16  5:29 ` [PATCH 12/21] libata: make ->scr_read/write callbacks return error code Tejun Heo
2007-07-20 11:58   ` Jeff Garzik
2007-07-16  5:29 ` [PATCH 18/21] libata: reorganize ata_ehi_hotplugged() Tejun Heo
2007-07-16  5:29 ` [PATCH 16/21] libata: quickly trigger SATA SPD down after debouncing failed Tejun Heo
2007-07-16  5:29 ` [PATCH 14/21] ahci: implement SCR_NOTIFICATION r/w Tejun Heo
2007-07-16  5:29 ` [PATCH 20/21] libata: schedule probing after SError access failure during autopsy Tejun Heo
2007-07-16  5:29 ` [PATCH 21/21] libata: implement EH fast drain Tejun Heo
2007-07-16  5:29 ` [PATCH 19/21] libata: clear HOTPLUG flag after a reset Tejun Heo

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=11845637801052-git-send-email-htejun@gmail.com \
    --to=htejun@gmail.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=forrest.zhao@gmail.com \
    --cc=jeff@garzik.org \
    --cc=linux-ide@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).