Re: SiI 3112A + Seagate HDs = still no go?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




 Hello, Chris.

Chris Boot wrote:
On 12 Aug 2005, at 15:08, Tejun Heo wrote:


[adding cc to Jeff Garzik. (Hi!)]

 Hi again, Chris.

Unfortunately, I'm as lost as you are. Can you please do the followings?

* Verify if read is free from the problem. ie. does "dd if=/dev/ sd? of=/dev/null" work?


Works like a treat at 30 MB/s. I do get a few errors in the log (repeated a couple of times), but they seem mostly harmless:

ata1: status=0x51 { DriveReady SeekComplete Error }
ata1: error=0x04 { DriveStatusError }

This is IDE ABRT error and it indicates that something strange is going on. You're not getting this kind of error on VIA controller, right?

* Turn on ATA_DEBUG and ATA_VERBOSE_DEBUG in include/linux/ libata.h (change #undef's to #define's) and make the drive hang. The log should show what was going on.


While untarring and compiling the new kernel I got lots of:

ata1: status=0x51 { DriveReady SeekComplete Error }
ata1: error=0x84 { DriveStatusError BadCRC }

 Wow, this is CRC error.  Something is wrong w/ your controller.

Syslog seems to die log before I get anything useful, and setting loglevel 9 with SysRq gives:

ata_fill_sg: PRD[126]: 0x1206A000, 0x1000)
ata_fill_sg: PRD[127]: 0x1206B000, 0x1000)
ata_dev_select: ENTER, ata1: device 0, wait 1
ATA: abnormal status 0xD9 on port 0xE0804087
ATA: abnormal status 0xD9 on port 0xE0804087
ata_tf_load_mmio: hob: feat 0x0 nsect 0x3, lba 0x1 0x0 0x0
ata_tf_load_mmio: feat 0x0 nsect 0xF8 lba 0x1A 0xEF 0x33
ata_tf_load_mmio: device 0xE0
ATA: abnormal statux 0xD9 on port 0xE0804087
ata_exec_command_mmio: ata: cmd 0x35
ata_scsi_translate: EXIT

It then hangs for exactly 30 seconds, and more stuff flies by followed by much the same messages EXCEPT:

1. There seems to be one less ata_fill_sg line every time, since PRD [XXX] decrements by one every time. 2. The ata_tf_load_mmio lines give different nsect and lba, the device stays the same.

30 secs is SCSI command timeout and retrying w/ one less chunk is sd driver's error recovery behavior.

It seems that a lot of errors occur while bits are going through your SATA connection. I don't know about Seagate drives, but my Samsung drive sometimes locks up if it gets weird packets/commands. This might be also your case. PHY-resetting usually gets the drive back online but currently libata doesn't do any such error recovery actions. To make sure that it's because of faulty controller, can you please try the following?

 * Monitor how IO goes on the drive in Windows.  You can do this by
     - Start->Run and enter perfmon.
     - After perfmon starts, right click on (heh heh, I guess this is
       one of those few times you read this on linux kernel mailing
       list) counter list and select add. Add DiskBytes/sec counter of
       PhysicalDisk object.
     - Adjust scale to 0.0000010.  Also, change color to black to make
       it stand out.
     - start dd.

I think, if the errors are due to hardware error, the perfmon graph will show some stuttering when it hits command timeout. So, write to disk, as writing seems to cause timeouts. If the problem also happens on Windows, it's highly likely that you have a faulty controller.

--
tejun
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux