# Another thread about slow SATA speeds with Silicon Image

## complex

I've looked through past threads and tried what I could find, but so far, nothing has helped me out. My hardware:

Tyan Tiger MPX

Dual Athlon MP 2400s

1 GB registered Corsair DDR

Silicon Image 3114 two-port SATA PCI card (sitting in a 32-bit slot because I was having troubles formatting the drive when the card was in a 64-bit slot)

Seagate ST3160023AS 160 GB SATA Barracuda drive connected to the first SATA channel (hde)

I was using 2.6.0-test9 and everything was working fine -- except the performance sucked.

```
20:10:13-root@~: hdparm -Tt /dev/hde

 

/dev/hde:

 Timing buffer-cache reads:   956 MB in  2.00 seconds = 477.12 MB/sec

 Timing buffered disk reads:   48 MB in  3.10 seconds =  15.50 MB/sec
```

Meanwhile, a Western Digital WD1200JB on my secondary IDE bus was getting more normal speeds (as well as two other IBMs in the system).

```
20:14:48-root@~: hdparm -Tt /dev/hdd

/dev/hdd:

 Timing buffer-cache reads:   1008 MB in  2.00 seconds = 503.57 MB/sec

 Timing buffered disk reads:  138 MB in  3.02 seconds =  45.63 MB/sec
```

Info for each drive:

/dev/hde (Seagate 160 GB SATA)

```
20:16:06-root@~: hdparm -v /dev/hde

 

/dev/hde:

 multcount    = 16 (on)

 IO_support   =  1 (32-bit)

 unmaskirq    =  1 (on)

 using_dma    =  1 (on)

 keepsettings =  0 (off)

 readonly     =  0 (off)

 readahead    = 256 (on)

 geometry     = 19457/255/63, sectors = 312581808, start = 0

20:17:41-root@~: hdparm -I /dev/hde

 

/dev/hde:

 

ATA device, with non-removable media

        Model Number:       ST3160023AS

        Serial Number:      3JS0YYVJ

        Firmware Revision:  3.05

Standards:

        Used: ATA/ATAPI-6 T13 1410D revision 2

        Supported: 6 5 4 3

Configuration:

        Logical         max     current

        cylinders       16383   65535

        heads           16      1

        sectors/track   63      63

        --

        CHS current addressable sectors:    4128705

        LBA    user addressable sectors:  268435455

        LBA48  user addressable sectors:  312581808

        device size with M = 1024*1024:      152627 MBytes

        device size with M = 1000*1000:      160041 MBytes (160 GB)

Capabilities:

        LBA, IORDY(can be disabled)

        bytes avail on r/w long: 4      Queue depth: 1

        Standby timer values: spec'd by Standard

        R/W multiple sector transfer: Max = 16  Current = 16

        Recommended acoustic management value: 254, current value: 0

        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6

             Cycle time: min=120ns recommended=120ns

        PIO: pio0 pio1 pio2 pio3 pio4

             Cycle time: no flow control=240ns  IORDY flow control=120ns

Commands/features:

...
```

/dev/hdd (Western Digital 120 GB IDE)

```
20:18:36-root@~: hdparm -v /dev/hdd

 

/dev/hdd:

 multcount    = 16 (on)

 IO_support   =  1 (32-bit)

 unmaskirq    =  1 (on)

 using_dma    =  1 (on)

 keepsettings =  0 (off)

 readonly     =  0 (off)

 readahead    = 256 (on)

 geometry     = 65535/16/63, sectors = 234441648, start = 0

20:20:14-root@~: hdparm -I /dev/hdd

 

/dev/hdd:

 

ATA device, with non-removable media

        Model Number:       WDC WD1200JB-00CRA1

        Serial Number:      WD-WCA8C4004658

        Firmware Revision:  17.07W17

Standards:

        Supported: 5 4 3 2

        Likely used: 6

Configuration:

        Logical         max     current

        cylinders       16383   16383

        heads           16      16

        sectors/track   63      63

        --

        CHS current addressable sectors:   16514064

        LBA    user addressable sectors:  234441648

        device size with M = 1024*1024:      114473 MBytes

        device size with M = 1000*1000:      120034 MBytes (120 GB)

Capabilities:

        LBA, IORDY(can be disabled)

        bytes avail on r/w long: 40     Queue depth: 1

        Standby timer values: spec'd by Standard, with device specific minimum

        R/W multiple sector transfer: Max = 16  Current = 16

        Recommended acoustic management value: 128, current value: 254

        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5

             Cycle time: min=120ns recommended=120ns

        PIO: pio0 pio1 pio2 pio3 pio4

             Cycle time: no flow control=120ns  IORDY flow control=120ns

Commands/features:

...
```

After fiddling around with different hdparm settings, I switched to development-sources-2.6.0_beta8 because I read at least one post reporting success with them, but no luck. I'm still seeing the same performance numbers.

Here's the relevant part of my dmesg:

```
SiI3112 Serial ATA: IDE controller at PCI slot 0000:02:06.0

SiI3112 Serial ATA: chipset revision 2

SiI3112 Serial ATA: 100% native mode on irq 18

    ide2: MMIO-DMA at 0xf8853000-0xf8853007, BIOS settings: hde:pio, hdf:pio

    ide3: MMIO-DMA at 0xf8853008-0xf885300f, BIOS settings: hdg:pio, hdh:pio

hde: ST3160023AS, ATA DISK drive

ide2 at 0xf8853080-0xf8853087,0xf885308a on irq 18

hda: max request size: 128KiB

hda: 90069840 sectors (46115 MB) w/1916KiB Cache, CHS=65535/16/63, UDMA(100)

 /dev/ide/host0/bus0/target0/lun0: p1 p2 p3 p4 < p5 p6 >

hdc: max request size: 128KiB

hdc: 90069840 sectors (46115 MB) w/1916KiB Cache, CHS=65535/16/63, UDMA(100)

 /dev/ide/host0/bus1/target0/lun0: p1 < p5 > p2

hdd: max request size: 128KiB

hdd: 234441648 sectors (120034 MB) w/8192KiB Cache, CHS=65535/16/63, UDMA(100)

 /dev/ide/host0/bus1/target1/lun0: p1

hde: max request size: 7KiB

hde: 312581808 sectors (160041 MB) w/8192KiB Cache, CHS=19457/255/63

 /dev/ide/host2/bus0/target0/lun0: p1
```

Everything is extremely stable -- I transferred 72 gigs from hdd to hde with no problems, it was just very slow. Any suggestions?

Edit: Just noticed this at the bottom of my dmesg...

```
hde: Speed warnings UDMA 3/4/5 is not functional.
```

And for some reason, I can't get into the SATA card BIOS on bootup. It says to hit ctrl+S or F4, but neither does anything.

----------

## pross

i have the silimage board integrated on my mobo ..i also get the 'hit ctrl+s for setup' and if i hit it i get a raid setup screen with the only options being:

set up an array

low level format

no other settings there im afraid  :Sad: 

/dev/hde:

 Timing buffer-cache reads:   1536 MB in  2.00 seconds = 766.47 MB/sec

 Timing buffered disk reads:   76 MB in  3.02 seconds =  25.15 MB/sec

----------

## complex

Okay, thanks. I'm not worried about that, then... But I wish I could figure out the speed issue. Would you mind sharing your hdparm -v and -I outputs? dmesg might be interesting, too (either here or in a PM).

----------

## Garbz

i addressed this in my last SI - Sata / SataRAID thread.

Sillicon Image have only closed source drivers availuable for linux and thus the only distros which can use Sillicon Image cards properly are Suse, Redhat and a few others.

2 Sillicon Image kernel drivers exists, and one of them is for raid (siiraid.o) but they are primative hacks and don't work very well.

Ur slow speeds are becuase the hdds are in PIO mode 4, as set by the kernel because SATA is NOT supported on this chipset.  Setting it to DMA will either a) crash the system or b) corrupt data. so DON'T do it, and don't say u haven't been warned.

The siiraid.o module on several configs fails to detect the ataraid configuration when loading, and from my tests didn't help with the PIO problem.

All i can sugest is that the changelog for Kernel 2.6 - test7 had SATA support written in it but it didn't mention anything about Silicon Image. (finally correct spelling  :Very Happy: : )  Try this kernel and see if the PIO / DMA problem is solved, but this won't work for the raid configuration.

/EDIT: kernel 2.6 test9 that should be

----------

## pross

root@genbox pross # hdparm -i /dev/hde

/dev/hde:

 Model=ST3120026AS, FwRev=3.05, SerialNo=3JT0GKQG

 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }

 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4

 BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=16

 CurCHS=65535/1/63, CurSects=4128705, LBA=yes, LBAsects=234441648

 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}

 PIO modes:  pio0 pio1 pio2 pio3 pio4

 DMA modes:  mdma0 mdma1 mdma2

 UDMA modes: udma0 udma1 udma2

 AdvancedPM=no WriteCache=enabled

 Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2:

 * signifies the current active mode

root@genbox pross # hdparm -v /dev/hde

/dev/hde:

 multcount    = 16 (on)

 IO_support   =  0 (default 16-bit)

 unmaskirq    =  0 (off)

 using_dma    =  1 (on)

 keepsettings =  0 (off)

 readonly     =  0 (off)

 readahead    =  8 (on)

 geometry     = 14593/255/63, sectors = 234441648, start = 0

root@genbox pross # hdparm -I /dev/hde

/dev/hde:

ATA device, with non-removable media

        Model Number:       ST3120026AS

        Serial Number:      3JT0GKQG

        Firmware Revision:  3.05

Standards:

        Used: ATA/ATAPI-6 T13 1410D revision 2

        Supported: 6 5 4 3

Configuration:

        Logical         max     current

        cylinders       16383   65535

        heads           16      1

        sectors/track   63      63

        --

        CHS current addressable sectors:    4128705

        LBA    user addressable sectors:  234441648

        LBA48  user addressable sectors:  234441648

        device size with M = 1024*1024:      114473 MBytes

        device size with M = 1000*1000:      120034 MBytes (120 GB)

Capabilities:

        LBA, IORDY(can be disabled)

        bytes avail on r/w long: 4      Queue depth: 1

        Standby timer values: spec'd by Standard

        R/W multiple sector transfer: Max = 16  Current = 16

        Recommended acoustic management value: 254, current value: 0

        DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6

             Cycle time: min=120ns recommended=120ns

        PIO: pio0 pio1 pio2 pio3 pio4

             Cycle time: no flow control=240ns  IORDY flow control=120ns

Commands/features:

        Enabled Supported:

           *    READ BUFFER cmd

           *    WRITE BUFFER cmd

           *    Host Protected Area feature set

           *    Look-ahead

           *    Write cache

           *    Power Management feature set

                Security Mode feature set

           *    SMART feature set

           *    FLUSH CACHE EXT command

           *    Mandatory FLUSH CACHE command

           *    Device Configuration Overlay feature set

           *    48-bit Address feature set

                SET MAX security extension

           *    DOWNLOAD MICROCODE cmd

           *    SMART self-test

           *    SMART error logging

Security:

                supported

        not     enabled

        not     locked

        not     frozen

        not     expired: security count

        not     supported: enhanced erase

Checksum: correct

ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx

NFORCE2: IDE controller at PCI slot 00:09.0

NFORCE2: chipset revision 162

NFORCE2: not 100% native mode: will probe irqs later

AMD_IDE: nVidia Corporation nForce2 IDE (rev a2) UDMA100 controller on pci00:09.0

    ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA

    ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:DMA

SiI3112 Serial ATA: IDE controller at PCI slot 01:0b.0

SiI3112 Serial ATA: chipset revision 2

SiI3112 Serial ATA: not 100% native mode: will probe irqs later

PCI: Setting latency timer of device 01:0b.0 to 64

    ide2: MMIO-DMA , BIOS settings: hde:pio, hdf:pio

    ide3: MMIO-DMA , BIOS settings: hdg:pio, hdh:pio

hdc: LITEON DVD-ROM LTD163D, ATAPI CD/DVD-ROM drive

hdd: SAMSUNG CD-R/RW DRIVE SW-224B, ATAPI CD/DVD-ROM drive

hde: ST3120026AS, ATA DISK drive

blk: queue c0167998, I/O limit 4095Mb (mask 0xffffffff)

ide1 at 0x170-0x177,0x376 on irq 15

ide2 at 0xf8b1b080-0xf8b1b087,0xf8b1b08a on irq 11

hde: attached ide-disk driver.

hde: host protected area => 1

hde: 234441648 sectors (120034 MB) w/8192KiB Cache, CHS=14593/255/63

hdc: attached ide-cdrom driver.

hdc: ATAPI 48X DVD-ROM drive, 512kB Cache, UDMA(33)

Uniform CD-ROM driver Revision: 3.12

Partition check:

 /dev/ide/host2/bus0/target0/lun0: p1 p2 < p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 > p3 p4

[/edit]

[edit]

hope this helps

----------

