linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Art Haas <ahaas@airmail.net>
Cc: Mark Lord <mlord@pobox.com>, Alan Cox <alan@lxorguk.ukuu.org.uk>,
	linux-ide@vger.kernel.org, Albert Lee <albertcc@tw.ibm.com>,
	Sergei Shtylyov <sshtylyov@ru.mvista.com>
Subject: Re: [PATCH] ata_piix: fix pio/mwdma programming (for testing, don't apply)
Date: Wed, 07 Feb 2007 11:53:17 +0900	[thread overview]
Message-ID: <45C93F1D.8090504@gmail.com> (raw)
In-Reply-To: <20070206163303.GA2185@artsapartment.org>

[-- Attachment #1: Type: text/plain, Size: 1437 bytes --]

Art Haas wrote:
>>> Also, zero out the features register before issuing PACKET_IDENTIFY,
>>> if the code isn't already doing that.
>> Okay.
>>
>>> After the drive asserts BUSY, and later deasserts BUSY,
>>> there might be a slight delay before the drive asserts DRQ.
>>> So, it is possible for the status to read zeros in the important bits.
>>>
>>> My suggestion is to wait up to the infamous 50 milliseconds again here,
>>> if needed.
>> Okay, the attached patch does what Mark suggested.  Art, can you please
>> give it a shot and report dmesg?  My thanks for sticking around till now.
> 
> SUCCESS!!!!!

Yay!

[--snip--]
> ata_piix 0000:00:07.1: version 2.00ac7
> ata1: PATA max UDMA/33 cmd 0x1F0 ctl 0x3F6 bmdma 0xF000 irq 14
> ata2: PATA max UDMA/33 cmd 0x170 ctl 0x376 bmdma 0xF008 irq 15
> scsi0 : ata_piix
> ata1.00: ATA-2, max UDMA/33, 6303024 sectors: LBA 
> ata1.00: ata1: dev 0 multi count 16
> ata1.01: ATA-4, max UDMA/66, 16514064 sectors: LBA 
> ata1.01: ata1: dev 1 multi count 16
> ata1.00: configured for UDMA/33
> ata1.01: configured for UDMA/33
> scsi1 : ata_piix
> ata2.00: ATAPI, max MWDMA1
> ata2.00: configured for MWDMA1

So, it succeeded without any DRQ wait.  Can you please apply only the 
attached patch over vanilla 2.6.20 and see if your problem is fixed?

This problem has been around for quite a while now and there probably 
have been other users hit by this out there.  Thanks a lot, Mark.

-- 
tejun

[-- Attachment #2: clear-TF-for-IDENTIFY.patch --]
[-- Type: text/x-patch, Size: 780 bytes --]

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 667acd2..d6fcf0a 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1478,7 +1478,16 @@ int ata_dev_read_id(struct ata_device *dev, unsigned int *p_class,
 	}
 
 	tf.protocol = ATA_PROT_PIO;
-	tf.flags |= ATA_TFLAG_POLLING; /* for polling presence detection */
+
+	/* Some devices choke if TF registers contain garbage.  Make
+	 * sure those are properly initialized.
+	 */
+	tf.flags |= ATA_TFLAG_ISADDR | ATA_TFLAG_DEVICE;
+
+	/* Device presence detection is unreliable on some
+	 * controllers.  Always poll IDENTIFY if available.
+	 */
+	tf.flags |= ATA_TFLAG_POLLING;
 
 	err_mask = ata_exec_internal(dev, &tf, NULL, DMA_FROM_DEVICE,
 				     id, sizeof(id[0]) * ATA_ID_WORDS);

  reply	other threads:[~2007-02-07 17:55 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-02 15:18 [PATCH] ata_piix: fix pio/mwdma programming (for testing, don't apply) Tejun Heo
2007-02-02 15:34 ` Sergei Shtylyov
2007-02-02 16:38   ` Jeff Garzik
2007-02-02 16:57     ` Mark Lord
2007-02-02 18:34       ` Sergei Shtylyov
2007-02-02 16:41   ` Tejun Heo
2007-02-02 18:49     ` Alan
2007-02-02 19:04       ` Sergei Shtylyov
2007-02-02 17:42 ` Alan
2007-02-03  1:40   ` Tejun Heo
2007-02-03 20:04     ` Alan
2007-02-04  2:47       ` Tejun Heo
2007-02-02 21:14 ` Art Haas
2007-02-03  2:09   ` Tejun Heo
2007-02-03 14:35     ` Art Haas
2007-02-03 19:47     ` Mark Lord
2007-02-06  9:11       ` Tejun Heo
2007-02-06 16:33         ` Art Haas
2007-02-07  2:53           ` Tejun Heo [this message]
2007-02-07 19:35             ` Art Haas
2007-02-07 19:51               ` Mark Lord
2007-02-07 20:37                 ` [PATCH] libata: clear TF before IDENTIFYing Tejun Heo
2007-02-08 14:56                   ` Mark Lord
2007-02-13 19:38                   ` Art Haas
2007-02-15 23:08                   ` Jeff Garzik
2007-04-30 18:29 ` [PATCH] Fix pio/mwdma programming on ata_piix.c Art Haas
2007-05-01  3:02   ` Tejun Heo
2007-05-24 19:59     ` Art Haas
2007-05-24 20:55       ` Jeff Garzik
2007-05-24 21:03         ` Tejun Heo
2007-05-25 17:16           ` [PATCH] ata_piix: fix pio/mwdma programming Tejun Heo
2007-05-25 18:05             ` Alan Cox
2007-05-28 13:02             ` Jeff Garzik

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=45C93F1D.8090504@gmail.com \
    --to=htejun@gmail.com \
    --cc=ahaas@airmail.net \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=albertcc@tw.ibm.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=mlord@pobox.com \
    --cc=sshtylyov@ru.mvista.com \
    /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).