svn commit: r218596 - head/sys/dev/ahci
mav at FreeBSD.org
Sat Feb 12 14:21:14 UTC 2011
Nikolay Denev wrote:
> On 12 Feb, 2011, at 09:06 , Alexander Motin wrote:
>> Author: mav
>> Date: Sat Feb 12 07:06:40 2011
>> New Revision: 218596
>> URL: http://svn.freebsd.org/changeset/base/218596
>> Disable NCQ for multiport Marvell 88SX61XX SATA controllers. Simultaneous
>> active I/O to several disks (copying large file on ZFS) causes timeout after
>> just a few seconds of run. Single port 88SX6111 seems like not affected.
>> Skip reading transferred bytes count for these controllers. It works for
>> 88SX6111, but 88SX6145 always returns zero there. Haven't tested others,
>> but better to be safe.
> I was using Marvell 6121 for quite some time with OCZ Throttle eSATA 8G flash drive for zfs l2arc,
> but the timeouts were not there from the beginning. Maybe NCQ was not enabled in earlier drivers?
> Also there is no other drive/ssd attached to the controller, the OCZ drive reports that it supports 2 tag openings.
> atapci2 at pci0:4:0:0: class=0x01018f card=0x612111ab chip=0x612111ab rev=0xb2 hdr=0x00
> vendor = 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
> device = '6121 SATA2 Controller'
> class = mass storage
> subclass = ATA
> bar  = type I/O Port, range 32, base 0xbf00, size 8, enabled
> bar  = type I/O Port, range 32, base 0xbe00, size 4, enabled
> bar  = type I/O Port, range 32, base 0xbd00, size 8, enabled
> bar [1c] = type I/O Port, range 32, base 0xbc00, size 4, enabled
> bar  = type I/O Port, range 32, base 0xbb00, size 16, enabled
> bar  = type Memory, range 32, base 0xfb9ff000, size 1024, enabled
> cap 01 = powerspec 2 supports D0 D1 D3 current D0
> cap 05 = MSI supports 1 message
> cap 10[e0] = PCI-Express 1 legacy endpoint max data 128(128) link x1(x1)
> ecap 0001 = AER 1 0 fatal 0 non-fatal 1 corrected
I can't see here whether you are using ahci(4) or ataahci from ata(4).
In last case (from the beginning) there is no NCQ by definition.
If you are using ahci(4), and 2 tags you are talking about were reported
by `camcontrol tags ...`, then quite likely your device doesn't support
NCQ at all, but CAM submits two command at a time to the queue-aware
controller just to hide some inter-request latencies.
If both device and controller support NCQ, you should see such message
ada0: Command Queueing enabled
PS: I can't confirm that problem exist on 88SX6121 -- I have no such
hardware. But I have seen user complaining about it and that is what
Linux also does.
More information about the svn-src-all