PCI Sata (VIA VT6421A) on FreeBSD 8.0

32KB there is not a a speed, but a transaction size limit. It limits speed only indirectly. There is no way to limit speed below 150MB/s on SATA.
 
I thought it so. I thought it's transfer speed or transaction. I'm limiting transfer speed on network level.

Not seeing the slices of 16 GB SSD is maybe about it's SSD. Controller may not support it.

I'm not sure but the problems with 320 GB SATA hdd may be because of it's large size? LBA or something else? I have no other sata hdd lower than 320 GB so I cannot test it.

I'm hopeless about this card. I'm just sharing what I see.

It's IDE socket works perfect with 20-40 GB hdds. But SATA is not working well.

Thank you again.
 
can you kldload geom_mbr, geom_label, and
geom_bsd to fix the sata issue, and if it
does (creates more /dev devices) you can
put those in /boot/loader.conf.
 
@jb_fvwm2, after I set the modules on /boot/loader.conf it's still same.

Code:
ad4: 305245MB <Seagate ST3320620AS 3.AAK> at ata2-master UDMA100 SATA 1.5Gb/s
ad4: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=312474960
ad4: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=10<NID_NOT_FOUND> LBA=312474960
WARNING: ad4s1 expected rawoffset 0, found 63
WARNING: ad4s2 expected rawoffset 0, found 312474960
ad4: WARNING - READ_DMA48 UDMA ICRC error (retrying request) LBA=312474960
ad4: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=10<NID_NOT_FOUND> LBA=312474960
WARNING: ad4s1d expected rawoffset 0, found 63
WARNING: ad4s2d expected rawoffset 0, found 312474960
ad4: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=191
ad4: WARNING - READ_DMA48 UDMA ICRC error (retrying request) LBA=312474960
ad4: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=10<NID_NOT_FOUND> LBA=312474960
ad4: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=12043615
ad4: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=12043615
ad4: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=84<ICRC,ABORTED> LBA=12043615
ad4: FAILURE - device detached

@rongsongshen,

All the cables I have (about 5-10 brand new cables) are about 50-52 CM (20 inches).

Are the cables at this long, short or long? I haven't got any shorter one but if it'd solve my problem, I can buy a shorter one. How much in size do you suggest?
 
Hello again,

I have installed Linux onto this server. Linux too gives errors, however it automatically mounts the drive after it disconnects. I limited network to 1mbit/s to be a little more stable while transferring files.

Using linux will be a temporary solution for me until building a new server with different and brand new hardware.

This output belongs to Linux. I copied this because maybe it can give someone an idea in the future.
Code:
# tail -n 20 /var/log/messages
Feb 21 10:31:39 backup kernel: ata1.00: configured for UDMA/33
Feb 21 10:31:39 backup kernel: ata1: EH complete
Feb 21 10:31:39 backup kernel: sd 2:0:0:0: [sda] 625142448 512-byte hardware sectors: (320 GB/298 GiB)
Feb 21 10:31:39 backup kernel: sd 2:0:0:0: [sda] Write Protect is off
Feb 21 10:31:39 backup kernel: sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Feb 21 10:55:04 backup kernel: ata1: hard resetting link
Feb 21 10:55:04 backup kernel: ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Feb 21 10:55:04 backup kernel: ata1.00: configured for UDMA/33
Feb 21 10:55:04 backup kernel: ata1: EH complete
Feb 21 10:55:04 backup kernel: sd 2:0:0:0: [sda] 625142448 512-byte hardware sectors: (320 GB/298 GiB)
Feb 21 10:55:04 backup kernel: sd 2:0:0:0: [sda] Write Protect is off
Feb 21 10:55:04 backup kernel: sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Feb 21 11:01:40 backup kernel: ata1: hard resetting link
Feb 21 11:01:40 backup kernel: ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
Feb 21 11:01:40 backup kernel: ata1.00: configured for UDMA/33
Feb 21 11:01:40 backup kernel: ata1: EH complete
Feb 21 11:01:40 backup kernel: sd 2:0:0:0: [sda] 625142448 512-byte hardware sectors: (320 GB/298 GiB)
Feb 21 11:01:40 backup kernel: sd 2:0:0:0: [sda] Write Protect is off
Feb 21 11:01:40 backup kernel: sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA

Conclusion,
I don't suggest VIA VT6421A cards to anybody. If you want to use this card in a production server (e.g: www or database server), I think it's a mistake. If you have bought it before and would like to use for a storage solution like me (e.g. a backup server), and if you've followed the steps in FreeBSD and it doesn't work; then try it with a Linux distribution too. I'm using it with errors in Linux temporarily until buying a new server.

I thank you all for you support. I'm marking this thread as solved.

Have a good day...
 
Hi Guys,

I'm not so certain this is an issue with simply the VIA sata controller, possibly more with the drive itself, tho I have not yet had a chance to confirm that. The reason I think this is because I am running into the exact same problem on an Intel based controller:

Code:
atapci1: <Intel ICH9 SATA300 controller> port 0x3428-0x342f,0x3434-0x3437,0x3420-0x3427,0x3430-0x3433,0x3020-0x303f mem 0xe3221000-0xe32217ff irq 21 at device 31.2 on pci0
atapci1: [ITHREAD]
atapci1: AHCI called from vendor specific driver
atapci1: AHCI v1.20 controller with 6 3Gbps ports, PM supported
...
ad6: 476940MB <Seagate ST3500320AS SD15> at ata3-master SATA150
ad8: 476940MB <Seagate ST3500418AS CC38> at ata4-master SATA300
GEOM: ad6s1: geometry does not match label (255h,63s != 16h,63s).
ad14: 476940MB <Seagate ST3500320AS SD15> at ata7-master SATA150
ad16: 476940MB <Seagate ST3500320AS SD15> at ata8-master SATA150

Code:
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5
ad6: TIMEOUT - READ_DMA48 retrying (1 retry left) LBA=386980703
ad6: TIMEOUT - READ_DMA48 retrying (0 retries left) LBA=386980703
ad6: FAILURE - READ_DMA48 timed out LBA=386980703
g_vfs_done():ad6s1h[READ(offset=30630363136, length=16384)]error = 5

Sorry for the excess in read failures. I was moving data off to a RAID enabled drive set when I trigger this issue, however I have seen it crop up 2 times in the nightly security output.

I did a quick reboot, swapped cables, and as you can see ad6 is already limited at 150. I have new drives on hand and will be swapping this one out if I can get the disk mirrored before it fails on me. As it is a seagate I can run a test suite on the drive itself when I have a moment and confirm if it was the disk itself, or if there maybe something else going on.
 
@cbowlby

This output belongs to another server I have, with onboard sata support with VIA 6420 chipset. Operating system is [CMD=""]FreeBSD 7.2-RELEASE-p7[/CMD]

Code:
atapci0: <VIA 6420 SATA150 controller> port 0xd400-0xd407,0xd000-0xd003,0xcc00-0xcc07,0xc800-0xc803,0xc400-0xc40f,0xc000-0xc0ff irq 20 at device 15.0 on pci0

This system runs the same harddisk without any error.

VIA VT 6421 PCI Card on Freebsd 8-Stable 2010-02, gives so many read/write errors with the same harddisk, which runs without problem on the first one.

My onboard sata controller see my solid state drive. I can use it without problem.

PCI card only shows there's a drive. But can't see slices, so can't mount it or fdisk/format it.

I have ordered a SIL3512 from ebay. Waiting for it.

There's an issue too. System shows this card. If I shutdown the system and restart it, it doesn't see this pci card. I must switch off the power supply and cut the electricity, and open it again; then pci card appears. I think that it's about the via card. Because, I removed this sata card and put an secondary ethernet card to it's place and on the same way (shutdown then start) system see the ethernet card.

I also tried to remove the agp vga card and put a pci vga card. And it's the same. So I think it's not about irq things.

I'm not a hardware expert. But I have tried everything.
 
Very useful thread.

I've been pulling my hair with a VIA6421 SATA controller as well. No matter what, it just spit outs interrupt storms and read/write timeouts, and it does so with all the four hard disks I've tested on it. When looking around and noticing the problems people are having with this controller, it seems like the best solution is to buy a new one...
 
I run into the same problem yesterday with SATA. Already had these problems with same card and IDE on anther computer but it just threw interrupt storms and did not freeze the whole system until hardware reset.

@Jailed: Did you just tried the other of the two SATA-Ports?

When I connect only one(!) SATA drive to the card on the first(!) port it runs well. (Think I read this tip somewhere else.) But I just testing for a day and two SATA drives at the card runs well too from time to time for a while.

But I do not think it is the chips fault at all. I have the same chip on another card of another manufacturer with just one SATA port and had never a single problem with it. Seems to me that the malady is the shared eSATA/SATA port on one channel. Sounds more like a bad implementation of the chip by the card manufacturer.

I also noticed that the PCI connector of the "bad" card is shorter then the one of the "good" (but also cheap) card. While the "good" one uses the whole PCI slot, the "bad" one does not. But does not have to mean anything -- just noticed it.

@Jailed: Your SiL3512 chip/card runs well? Heard of hardware bugs and incompatibilities with some drive manufactures for other SiL chips.

jailed said:
We couldn't solve this problem (..)
Wondering that the topic says "SOLVED". ]Wasp[/b]

PS: Running SATA drives on FreeBSD 6.2 stable and was running the card with IDE connected on FreeBSD 7.2 stable.
 
WASP,

Sorry, I have just seen your reply.

First of all, my problem wih this chip is not solved. But I marked the thread as solved because I found another solution to deal with my hdd connectivity.

I tried this chip with all of my servers. Running on 8-STABLE fixed the interrupt storms. But, still read/write errors exists. And after a little time, system is dumping and restarting. I shared all the error results on my previous posts.

Firstly, running Slackware with this card solved my problem a little. Because, linux is automatically re-attach the device after it detached with fault. But On BSD it ain't. BSD reboots the machine or just detaching the device itself.

The same errors exists on Linux too, but this auto-attaching thing solved my problem a little. But running this card was still a pain.

So I got bored and purchased a SiL3512 card from e-bay after a freebsd forum users suggestion. I was looking for a cheap pci card and I want to try this one too.

SiL3512 is better for me. Because I can format and fdisk the hdd. Which is not possible for me on VIA.

On VIA, when I shutdown the system, I have to switch the power button to off and cut the all electricity. Because, when I want to open the pc after shutdown, the system weren't detecting the card. But this problem disappeared with SIL.

I have problems with SIL too. After heavy load (55 mbps average and after 7-10 GB transfer) system dumping and rebooting. Transfer speed weren't important for me. So I have limited the network speed to 32 KBPS. This backup server is running for a month with 32KBPS transfer speed without any problem. It may sound stupid. But I was looking for a cheap and temporary solution for my backup. The system was old and my IDE hdds exploded and I don't want to buy new IDE hdds while I have several SATA hdds.

Your other question. I tried all the ports, all PCI slots, all different cables, all jumper setting with different HDDs, one or multiple. I did all the combinations like a crazy :)

One note too, this VIA card doesn't see my SSD. But SIL does. SIL also supports boot. You can boot a HDD from bios with this card. But it's still a cheap card. And still have problems. If you have PCI-x support, pay a little more and get a new one.

My system is old. 64 MB ram and 800 mhz CPU. I know that PCI is not related with RAM. I maybe wrong. But I tried VIA with a 3 gig machine too.

Now it doesn't matter for me. I solved my financial problems and buying new servers.

However, if you want me to try something with this cards, I can do to help you.

Conclusion,
I'm not using this VIA card now, I do not suggest it anyone, and I have marked this thread as solved because I solved my need with different solutions, not with this card.

Have a good day.
 
I wanted to add my experience with a VIA6421 PCI card. The card has one IDE port and two sata ports. I have had two IDE drives attached which both worked fine.

First I tried to attach a WDC WD15EARS-00Z5B1. That resulted in thousands of CRC errors like this:

Code:
ad6: WARNING - READ_DMA UDMA ICRC error (retrying request) LBA=113362091
ad6: FAILURE - READ_DMA status=51<READY,DSC,ERROR> error=84<ICRC,ABORTED> LBA=113362091

I changed the cable, tried to jumper the drive to SATA150, and switched it to the other SATA port on the card. Still CRC errors in all cases.

However when I connected a WDC WD5000AAKS-00YGA0 jumper'd to SATA150 for good luck, everything is fine. No errors and good throughput. I put the WD15EARS on a motherboard port instead and now all drives are working.

So, the problems with VIA6421 SATA may be related to certain drives only.
 
I Confirm this error.

I have same problem with my WDC WD15EARS hard drive connected to second port of VIA6420 SATA controller (And the another SATA drive is connected to first port): a lot of:
Code:
ad6: WARNING - READ_DMA48 UDMA ICRC error (retrying request) LBA=1598653696
ad6: FAILURE - READ_DMA48 status=51<READY,DSC,ERROR> error=10<NID_NOT_FOUND> LBA=1598653696

messages.

I checked my drive with MHDD on machine where I have problems with this error - There's no eny errors on disk. Also I chekhed this drive with another SATA controllers, it's also working fine.
So I think that problem may be:
1. Some bug in FreeBSD.
2. VIA6420 have problems with correct serving more then one SATA drives at the same time. (When I test drive with MHDD another SATA drive didn't work at all)
 
Back
Top