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);
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]