Bug 147086

Summary: AHCI not being enabled on PC
Product: Base System Reporter: Ryan Holt <ryan>
Component: kernAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   

Description Ryan Holt 2010-05-26 18:30:13 UTC
Hello,

I've got a fresh install of FreeBSD 8.0-Stable-201004 built on a Gigabyte GA-K8U-754 Motherboard (http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1876). The boot drives are plugged directly into the Motherboard's SATA ports, which I believe is powered by a ULi M1689 chipset. I also have a Supermicro AOC-SAT2-MV8 PCI-X HBA card (http://www.supermicro.com/products/accessories/addon/AOC-SAT2-MV8.cfm) which has a Hercules-2 Rev. C0 SATA host controller built in. I've added ahci_load="YES" in my /boot/loader.conf and I can see that ahci.ko was loaded using klstat, but I do not see any drives appearing that use the ahci module. All drives are labeled /dev/ad* instead of /dev/ada* and hotswap doesn't work properly. Running dmesg |grep -i ahci comes back empty.

How-To-Repeat: 1. Boot computer
2. Run dmesg |grep -i ahci
3. Unplug drive, watch PC kernel panic
Comment 1 Garrett Cooper 2010-05-26 18:48:21 UTC
Hi Ryan,
    A few requests:
    1. Can you please try a CURRENT CD to see if the drives detect and
attach themselves to ahci(4) properly?
    2. Could you please provide us with the device IDs for the controller?
Thanks!
-Garrett
Comment 2 Alexander Motin freebsd_committer freebsd_triage 2010-05-26 19:38:20 UTC
Ryan Holt wrote:
>> I've got a fresh install of FreeBSD 8.0-Stable-201004 built on a Gigabyte GA-K8U-754 Motherboard. The boot drives are plugged directly into the Motherboard's SATA ports, which I believe is powered by a ULi M1689 chipset. I also have a Supermicro AOC-SAT2-MV8 PCI-X HBA card which has a Hercules-2 Rev. C0 SATA host controller built in. I've added ahci_load="YES" in my /boot/loader.conf and I can see that ahci.ko was loaded using klstat, but I do not see any drives appearing that use the ahci module. All d rives are labeled /dev/ad* instead of /dev/ada* and hotswap doesn't work properly. Running dmesg |grep -i ahci comes back empty.

I can't say about ULi SATA - I haven't tried any of them. Make sure that
you have AHCI mode enabled in BIOS. ahci(4) driver should attach to any
hardware that reporting AHCI compatibility via PCI class/subclass.

Supermicro AOC-SAT2-MV8 - is not AHCI compatible. New driver for it
named mvs(4). It was merged to 8-STABLE just a few weeks ago. You may
update your system and try it.

-- 
Alexander Motin
Comment 3 Ryan Holt 2010-05-26 19:56:37 UTC
Hi Garrett,
 
How can I get the device IDs? pciconf?
 

[root@fs /usr/src]# pciconf -lv
hostb0@pci0:0:0:0:      class=0x060000 card=0x50001458 chip=0x168910b9 rev=0x00
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'ULi M1689 K8 Northbridge with AGP and hypertransport'
    class      = bridge
    subclass   = HOST-PCI
pcib1@pci0:0:1:0:       class=0x060400 card=0x00000000 chip=0x524610b9 rev=0x00
hdr=0x01
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'ULi AGP 3.0 Controller'
    class      = bridge
    subclass   = PCI-PCI
pcib2@pci0:0:2:0:       class=0x060401 card=0x00000000 chip=0x524910b9 rev=0x00
hdr=0x01
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'HyperTransport to PCI Bridge (M5249)'
    class      = bridge
    subclass   = PCI-PCI
isab0@pci0:0:3:0:       class=0x060100 card=0x50011458 chip=0x156310b9 rev=0x70
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'ALI M1563 South Bridge with Hypertransport Support'
    class      = bridge
    subclass   = PCI-ISA
none0@pci0:0:3:1:       class=0x068000 card=0x50031458 chip=0x710110b9 rev=0x00
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'ALI M7101 Power Management Controller'
    class      = bridge
none1@pci0:0:4:0:       class=0x040100 card=0xae011458 chip=0x545510b9 rev=0x20
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'AC'97 Audio Controller (M1563M Southbridge)'
    class      = multimedia
    subclass   = audio
atapci0@pci0:0:14:0:    class=0x0101fa card=0x50021458 chip=0x522910b9 rev=0xc7
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'EIDE Controller (M5229 Southbridge)'
    class      = mass storage
    subclass   = ATA
atapci1@pci0:0:14:1:    class=0x01018f card=0xb0031458 chip=0x528910b9 rev=0x10
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'M5289 SATA/Raid controller (ULI M1567/M1689 )'
    class      = mass storage
    subclass   = ATA
ohci0@pci0:0:15:0:      class=0x0c0310 card=0x50041458 chip=0x523710b9 rev=0x03
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'OpenHCI 1.1 USB to  2.0 (M5273 A1 for windows 98)'
    class      = serial bus
    subclass   = USB
ohci1@pci0:0:15:1:      class=0x0c0310 card=0x50041458 chip=0x523710b9 rev=0x03
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'OpenHCI 1.1 USB to  2.0 (M5273 A1 for windows 98)'
    class      = serial bus
    subclass   = USB
ohci2@pci0:0:15:2:      class=0x0c0310 card=0x50041458 chip=0x523710b9 rev=0x03
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'OpenHCI 1.1 USB to  2.0 (M5273 A1 for windows 98)'
    class      = serial bus
    subclass   = USB
ehci0@pci0:0:15:3:      class=0x0c0320 card=0x50041458 chip=0x523910b9 rev=0x01
hdr=0x00
    vendor     = 'Acer Labs Incorporated (ALi/ULi)'
    device     = 'USB EHCI2.0 Controller (527210B9)'
    class      = serial bus
    subclass   = USB
hostb1@pci0:0:24:0:     class=0x060000 card=0x00000000 chip=0x11001022 rev=0x00
hdr=0x00
    vendor     = 'Advanced Micro Devices (AMD)'
    device     = 'Athlon64/Opteron/Sempron (K8 Family) HyperTransport Technology
Configuration'
    class      = bridge
    subclass   = HOST-PCI
hostb2@pci0:0:24:1:     class=0x060000 card=0x00000000 chip=0x11011022 rev=0x00
hdr=0x00
    vendor     = 'Advanced Micro Devices (AMD)'
    device     = 'Athlon64/Opteron/Sempron (K8 Family) Address Map'
    class      = bridge
    subclass   = HOST-PCI
hostb3@pci0:0:24:2:     class=0x060000 card=0x00000000 chip=0x11021022 rev=0x00
hdr=0x00
    vendor     = 'Advanced Micro Devices (AMD)'
    device     = 'Athlon64/Opteron/Sempron (K8 Family) DRAM Controller'
    class      = bridge
    subclass   = HOST-PCI
hostb4@pci0:0:24:3:     class=0x060000 card=0x00000000 chip=0x11031022 rev=0x00
hdr=0x00
    vendor     = 'Advanced Micro Devices (AMD)'
    device     = 'Athlon64/Opteron/Sempron (K8 Family) Miscellaneous Control'
    class      = bridge
    subclass   = HOST-PCI
vgapci0@pci0:1:0:0:     class=0x030000 card=0x00000000 chip=0x011010de rev=0xa1
hdr=0x00
    vendor     = 'Nvidia Corp'
    device     = 'GeForce2 MX / MX 400 (NV11)'
    class      = display
    subclass   = VGA
em0@pci0:2:6:0: class=0x020000 card=0x13768086 chip=0x107c8086 rev=0x05 hdr=0x00
    vendor     = 'Intel Corporation'
    device     = 'Gigabit Ethernet Controller (Copper) rev 5 (82541PI)'
    class      = network
    subclass   = ethernet
hptrr0@pci0:2:8:0:      class=0x010000 card=0x11ab11ab chip=0x608111ab rev=0x09
hdr=0x00
    vendor     = 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
    device     = 'MV88SX6081 8-port SATA II PCI-X Controller'
    class      = mass storage
    subclass   = SCSI
rl0@pci0:2:10:0:        class=0x020000 card=0xe0001458 chip=0x813910ec rev=0x10
hdr=0x00
    vendor     = 'Realtek Semiconductor'
    device     = 'Realtek RTL8139 Family PCI Fast Ethernet NIC
(RTL-8139/8139C/8139C)'
    class      = network
    subclass   = ethernet


 
Thanks,
Ryan
 
Comment 4 Ryan Holt 2010-05-26 19:59:16 UTC
I'm assuming that the ULi doesn't have AHCI support as there's no option in the
BIOS for AHCI, only IDE and RAID.
 
Will the MVS driver allow for any type of hot swap? It appears that when I pull
the drive out of any slot on the Supermicro card the kernel will panic and
system crash. Same thing with the on-board controller.
 
Thanks,
Ryan
 
Comment 5 Alexander Motin freebsd_committer freebsd_triage 2010-05-26 20:10:41 UTC
ryan@ryanholt.net wrote:
> Will the MVS driver allow for any type of hot swap? It appears that when
> I pull the drive out of any slot on the Supermicro card the kernel will
> panic and system crash. Same thing with the on-board controller.

mvs(4) provides almost the same set of features that ahci(4), just for
different hardware. Hot swap should work fine.

-- 
Alexander Motin
Comment 6 Ryan Holt 2010-05-26 20:19:11 UTC
OK Great. Should I re-compile my kernel with mvs as a device option?
 
Thanks,
Ryan
 
Comment 7 Alexander Motin freebsd_committer freebsd_triage 2010-05-26 20:20:57 UTC
ryan@ryanholt.net wrote:
> OK Great. Should I re-compile my kernel with mvs as a device option?

As you wish. Module should also be fine.

-- 
Alexander Motin
Comment 8 Ryan Holt 2010-05-27 14:55:56 UTC
OK I got mvs compiled and the drives are using it now. Tested hot swap; removed
and replaced drives while writing data to the ZFS pool sitting atop. One issue I
noticed is that the glabels don't seem to be read once I insert the disk back
into the server. Seems like I need to re-label the drive and then replace it
back into the zpool using zpool replace. Would this be an issue with ZFS and not
the mvs driver?
 
Additionally, this might be a cabling issue or an issue with my drive cage, but
when I place a disk in slot 0 (port 0 on AOC-SAT2-MV8) I get mvsch0 timeout
errors and the whole box locks up requiring a hard reboot. Placing the drive in
slot 4 and utilizing slots 2-5 instead of 1-4 allows the server to boot up fine
/ run fine.
 
Also, the drive pool seems a bit slow. Using the command...
 
dd if=/dev/urandom (and /dev/zero) of=/tank/test.file bs=1024 count=102400 
 
Seems to indicate that I get somwhere between 15MB/sec (urandom) and 30 mb/sec
(zero). This card is on a PCI bus and therefore will be somewhat restricted, but
should it be reasonable to expect better performance than this out of a 4 disk
Hitachi 1TB 7200 RPM 32mb cache raidz1 pool? Are there any other recommended
tests to benchmark performance?
 
Thanks again for all your help!
Ryan
 

On May 26, 2010 at 7:20 PM Alexander Motin <mav@FreeBSD.org> wrote:

> ryan@ryanholt.net wrote:
> > OK Great. Should I re-compile my kernel with mvs as a device option?
>
> As you wish. Module should also be fine.
>
> --
> Alexander Motin
Comment 9 Alexander Motin freebsd_committer freebsd_triage 2010-05-27 20:35:37 UTC
ryan@ryanholt.net wrote:
> OK I got mvs compiled and the drives are using it now. Tested hot swap;
> removed and replaced drives while writing data to the ZFS pool sitting
> atop. One issue I noticed is that the glabels don't seem to be read once
> I insert the disk back into the server. Seems like I need to re-label
> the drive and then replace it back into the zpool using zpool replace.
> Would this be an issue with ZFS and not the mvs driver?

I don't think it is driver related.

> Additionally, this might be a cabling issue or an issue with my drive
> cage, but when I place a disk in slot 0 (port 0 on AOC-SAT2-MV8) I get
> mvsch0 timeout errors and the whole box locks up requiring a hard
> reboot. Placing the drive in slot 4 and utilizing slots 2-5 instead of
> 1-4 allows the server to boot up fine / run fine.

I need more info to say something. Boot with verbose messages and send
be complete log from boot messages up to the error.

> Also, the drive pool seems a bit slow. Using the command...
> 
> dd if=/dev/urandom (and /dev/zero) of=/tank/test.file bs=1024 count=102400 
> 
> Seems to indicate that I get somwhere between 15MB/sec (urandom) and 30
> mb/sec (zero). This card is on a PCI bus and therefore will be somewhat
> restricted, but should it be reasonable to expect better performance
> than this out of a 4 disk Hitachi 1TB 7200 RPM 32mb cache raidz1 pool?
> Are there any other recommended tests to benchmark performance?

If your card placed into regular PCI slot - absolute maximum you can get
from it is 133MB/s, but usually practical limit is lower. When you are
writing to redundant array, like raidz, same data written to several
devices same time. It also divides effective bandwidth by several times,
proportionally to redundancy. So even if 30MB/s a bit small, it is
possible in such configuration.

Also it is a bit strange to test linear bandwidth, using 1K blocks.
System I/O overhead may also affect result. Try it with at least 64K
block to be sure.

/dev/urandom may also affect performance. On my machine I can read only
about 60MB/s from it, so it is not a good test.

Also, depending on your typical workload you may be interested in random
I/O performance. 4 disks with NCQ supported by mvs(4) should handle
random parallel load quite fine.

-- 
Alexander Motin
Comment 10 Alexander Motin freebsd_committer freebsd_triage 2011-04-28 20:03:04 UTC
State Changed
From-To: open->closed

Original problem solved, secondary - no response.