From: Tejun Heo <tj@kernel.org>
To: Andreas Mohr <andi@lisas.de>
Cc: linux-ide@vger.kernel.org, Jeff Garzik <jeff@garzik.org>,
Mark Lord <liml@rtr.ca>, Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: 2.6.28-rc3 libata: still "failed to IDENTIFY" on bootup
Date: Wed, 12 Nov 2008 11:35:02 +0900 [thread overview]
Message-ID: <491A40D6.1000207@kernel.org> (raw)
In-Reply-To: <20081111174634.GA11632@rhlx01.hs-esslingen.de>
[-- Attachment #1: Type: text/plain, Size: 649 bytes --]
Andreas Mohr wrote:
> when searching for the "identify retried exceeded" BSD error message
> the CRX700E-mentioning page is the _only_ one that comes up on Google!!
> (IOW, it strongly looks like this issue seems quite isolated to CRX700E drives
> only and we should find a way to implement an IDENTIFY-timeout-related blacklist flag,
> for CRX700E, somehow).
>
> ...right?
>
> (BTW, does a drive firmware have to do something special to obey
> Cable Select protocol properly, and would this thus indicate a firmware bug indeed?)
I think libata screwed up somewhere. Can you please apply the attached
patch and report the kernel log?
--
tejun
[-- Attachment #2: phantom-debug.patch --]
[-- Type: text/x-patch, Size: 1639 bytes --]
diff --git a/drivers/ata/libata-sff.c b/drivers/ata/libata-sff.c
index 4b47394..abbb5f0 100644
--- a/drivers/ata/libata-sff.c
+++ b/drivers/ata/libata-sff.c
@@ -1226,11 +1226,16 @@ fsm_start:
} else {
/* ATA PIO protocol */
if (unlikely((status & ATA_DRQ) == 0)) {
+ ata_dev_printk(qc->dev, KERN_INFO, "XXX status=0x%x hdiag=%d\n",
+ status, qc->dev->horkage & ATA_HORKAGE_DIAGNOSTIC);
+
/* handle BSY=0, DRQ=0 as error */
- if (likely(status & (ATA_ERR | ATA_DF)))
+ if (likely(status & (ATA_ERR | ATA_DF))) {
/* device stops HSM for abort/error */
qc->err_mask |= AC_ERR_DEV;
- else {
+ if (qc->dev->horkage & ATA_HORKAGE_DIAGNOSTIC)
+ qc->err_mask |= AC_ERR_NODEV_HINT;
+ } else {
/* HSM violation. Let EH handle this.
* Phantom devices also trigger this
* condition. Mark hint.
@@ -1838,6 +1843,8 @@ unsigned int ata_sff_dev_classify(struct ata_device *dev, int present,
/* determine if device is ATA or ATAPI */
class = ata_dev_classify(&tf);
+ ata_dev_printk(dev, KERN_INFO, "XXX sff_dev_classify present=%d hdiag=%d tf=%02x:%02x:%02x class=%d\n",
+ present, dev->horkage & ATA_HORKAGE_DIAGNOSTIC, tf.lbal, tf.lbam, tf.lbah, class);
if (class == ATA_DEV_UNKNOWN) {
/* If the device failed diagnostic, it's likely to
@@ -1981,6 +1988,7 @@ int ata_sff_softreset(struct ata_link *link, unsigned int *classes,
devmask |= (1 << 0);
if (slave_possible && ata_devchk(ap, 1))
devmask |= (1 << 1);
+ ata_link_printk(link, KERN_INFO, "XXX devmask=%x\n", devmask);
/* select device 0 again */
ap->ops->sff_dev_select(ap, 0);
next prev parent reply other threads:[~2008-11-12 2:35 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-09 13:02 2.6.28-rc3 libata: still "failed to IDENTIFY" on bootup Andreas Mohr
2008-11-11 9:36 ` Tejun Heo
2008-11-11 16:11 ` Andreas Mohr
2008-11-11 17:46 ` Andreas Mohr
2008-11-12 2:35 ` Tejun Heo [this message]
2008-11-12 15:55 ` Andreas Mohr
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=491A40D6.1000207@kernel.org \
--to=tj@kernel.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=andi@lisas.de \
--cc=jeff@garzik.org \
--cc=liml@rtr.ca \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.