lkml.org 
[lkml]   [2005]   [Aug]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: SiI 3112A + Seagate HDs = still no go?

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 majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-08-13 03:16    [W:0.046 / U:0.356 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site