lkml.org 
[lkml]   [2007]   [Feb]   [12]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateSun, 11 Feb 2007 16:53:36 -0800
FromTejun Heo <>
SubjectRe: AHCI - remove probing of ata2
Hello, Paul.

Paul Rolland wrote:
>>> This looks like the problems that hopefully the patches 
>> from Tejun and
>>> from Mark Lord cured (the delay after reset and the task file clear)
>> Any chance I can find this patch(es) and try them ?
>> 
>>>> Also, I've seen a :
>>>>
>>>> ata1: Spurious SDB FIS during NCQ issue=0x0 SAct=0x7ff8001f
>>>> FIS=004040a1:00040000
>>>>
>>>> What's this ? Is it really bad or just a warning ???
>>> It's one Tejun stuck logging in for in order to investigate further.
>> OK, will wait a little bit ;)

You have a Maxtor connected to that port, right?  That's caused by 
firmware bug.  Future kernels will consider that condition as protocol 
violation and blacklist the drive such that NCQ is not used on it.  I 
think it can be dangerous on rare corner/error cases but there hasn't 
been any actual report of problems caused by that, so no need to worry 
about it too much.  If it bothers you, you can turn NCQ off using sysfs 
node.  Take a look at FAQ section of http://linux-ata.org

> In the meantime, I've been trying 2.6.20-rc7.
> Things are not better, except that the ata2 probing failing results in
> no /dev/sdd being allocated, thus it changes all the naming afterwards.

Slightly OT, but it's generally a good idea to use LABELs to access 
filesystems.  With so many ports and EH dynamics including hotplug, it's 
much more difficult to keep device names persistent and remember them.

> So, 2.6.20-rc7 results are :
>  - ata2 probing still very long and delaying boot a lot,

That's sil4726's config device acting weird.  When reset as a normal 
device (not PMP device), sil4726 acts as a normal ATA device which is 
used to configure how the chip behaves.  Unfortunately, the emulation 
seems to contain some flaws and cause lots of delays as you've seen. 
I'm attaching a patch to clear TF before IDENTIFY which fixes similar 
IDENTIFY failures on buggy ATAPI devices.

>  - Jmicron PATA still not working, and doesn't even detect the DVD-ROM on
>    the port.

This problem is likely to be fixed by clearing TF before IDENTIFY.

So, please test the attached patch and report the result.

-- 
tejun
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);
\
 
 \ /
  Last update: 2007-02-12 07:47    [from the cache]
©2003-2008