RFC: ATA to CAM integration patch (INTEL DX58SO)
Mike Tancsa
mike at sentex.net
Fri Jul 3 19:00:43 UTC 2009
At 10:49 AM 7/3/2009, Alexander Motin wrote:
>Mike Tancsa wrote:
> > At 10:26 AM 7/3/2009, Alexander Motin wrote:
> >
> >> Wait! Stop! I have got lost in what we are testing. In some of your your
> >> previous messages today I have seen:
> >
> > Sorry, I just opened up the case to confirm, and it is indeed a SATA DVD
> > drive.
>
>Messages like "it's just not working" will not give anything except
>upsetting me. Usually I need more information. So if you are really what
>to track and fix some problem, please, identify it somehow, to be able
>to send more follow-ups later and compare to different user's results.
>Open cases one by one in separate emails.
Sorry again for the confusion. I am trying a *different* motherboard
(INTEL DX58SO) and drive now with your 0629 patch as well as the diff below.
--- ahci.c.prev 2009-06-29 12:48:45.000000000 +0300
+++ ahci.c 2009-06-29 17:25:29.000000000 +0300
@@ -986,7 +986,7 @@ ahci_begin_transaction(device_t dev, uni
if (ch->slot[tag].state == AHCI_SLOT_EMPTY)
break;
} while (tag != ch->lastslot);
- if (tag == ch->lastslot)
+ if (ch->slot[tag].state != AHCI_SLOT_EMPTY)
device_printf(ch->dev, "ALL SLOTS BUSY!\n");
ch->lastslot = tag;
/* Occupy chosen slot. */
Without the diff, I was getting a steady stream of
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
ahcich0: ALL SLOTS BUSY!
With the above diff, all seems to work well.
Full verbose dmesg and pciconf -lvc at
http://www.tancsa.com/ahci/DX58SO.txt
Read/Write speed looks good with a more modern disk as well
-------Sequential Output-------- ---Sequential Input--
--Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block---
--Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU /sec %CPU
4000 103884 51.4 109344 9.7 42048 6.0 91201 59.0
116723 8.5 1123.4 2.0
0(ich10)# dd if=/dev/ada0 of=/dev/null bs=1m count=1000
1000+0 records in
1000+0 records out
1048576000 bytes transferred in 7.562206 secs (138660068 bytes/sec)
0(ich10)#
The eSata port does not work, but it never did under the old driver
either. I think it has a separate controller ? At the BIOS boot up
time, it shows some Marvell controller talking to the eSata attached
drive, and pciconf does show a separate ATA controller
ahci0 at pci0:0:31:2: class=0x010601 card=0x4f538086
chip=0x3a228086 rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = '6 port SATA AHCI Controller'
class = mass storage
subclass = SATA
cap 05[80] = MSI supports 16 messages enabled with 1 message
cap 01[70] = powerspec 3 supports D0 D3 current D0
cap 12[a8] = SATA Index-Data Pair
none7 at pci0:0:31:3: class=0x0c0500 card=0x4f538086
chip=0x3a308086 rev=0x00 hdr=0x00
vendor = 'Intel Corporation'
device = 'SMB controller (50011458)'
class = serial bus
subclass = SMBus
atapci0 at pci0:6:0:0: class=0x01018f card=0x4f538086
chip=0x612111ab rev=0xb2 hdr=0x00
vendor = 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
device = '6121 SATA2 Controller'
class = mass storage
subclass = ATA
cap 01[48] = powerspec 2 supports D0 D1 D3 current D0
cap 05[50] = MSI supports 1 message
cap 10[e0] = PCI-Express 1 legacy endpoint max data 128(128) link x1(x1)
More information about the freebsd-current
mailing list