-   Linux - Hardware (
-   -   Help getting kernel to use the AHCI SATA driver (

ssenuta 01-20-2010 11:10 AM

Help getting kernel to use the AHCI SATA driver
How can I force my kernel to use the ahci driver when both the ahci
& sata_nv are built into the kernel.?

My MSI board bios doesn't have an option for "AHCI MODE". The only
sata option that it has is "called "On Chip Sata" & is located under
"Integrated Peripherals. Also, the only values available for
"On Chip Sata" are enabled or disabled. If I choose the disabled
option, the sata drives arn't found & bootup fails.

I tried to tell the kernel to use the ahci driver by appending kernel
options to my Grub2 bootloader but they all failed.

(eg.) ahci, scsi=ahci, ata=ahci, ahci.=0 sd=ahci
sata_nv=no, sata_nv=0, sata_nv=none

The only thing I can think of that is left to do is to re-build my
kernel with CONFIG_SATA_NV as a loadable module & CONFIG_AHCI as
a build-in driver. With only the ahci driver available at boot, the
kernel will have to use it or fail to boot.

One more thing I want to say is that my other computer with the ASUS
motherboard uses the ahci driver & I have both the sata_via & the ahci
drivers built into the kernel. However, it has a bios option for

(eg.) Southbridge VT8251
Serial ATA IDE Controller <AHCI>

cladisch 01-20-2010 11:28 AM

Please show the output of "lspci" and "lspci -n".

H_TeXMeX_H 01-20-2010 11:30 AM

Well for sure you should not have both built-in. You should only need one of those drivers to only include the one that works. If your BIOS has no option for AHCI for the SATA controller then it probably doesn't support it, so you would use only the sata_nv driver.

You could also make both modules and use an initrd if you wanted.

You can also look at the output of 'lspci -vv' for which driver it is using right now.

ssenuta 01-20-2010 11:12 PM

My MSI system is definately using the sata_nv module. I confirmed this via the "dmesg" log but here is the output of the "lspci" command you suggested anyways:

lspci -vv
00:08.0 IDE interface: nVidia Corporation MCP61 SATA Controller (rev a2) (prog-if 85 [Master SecO PriO])
Subsystem: Micro-Star International Co., Ltd. Device 7309
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 0 (750ns min, 250ns max)
Interrupt: pin A routed to IRQ 23
Region 0: I/O ports at e480 [size=8]
Region 1: I/O ports at e400 [size=4]
Region 2: I/O ports at e080 [size=8]
Region 3: I/O ports at e000 [size=4]
Region 4: I/O ports at dc00 [size=16]
Region 5: Memory at dfff9000 (32-bit, non-prefetchable) [size=4K]
Capabilities: [44] Power Management version 2
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [b0] MSI: Mask- 64bit+ Count=1/4 Enable-
Address: 0000000000000000 Data: 0000
Capabilities: [cc] HyperTransport: MSI Mapping Enable- Fixed+
Kernel driver in use: sata_nv

I never knew the lspci command showed the driver being used. Thanks for the tip.

You also suggested booting via an initrd but I don't think that would work. The initrd wouldn't be found if it were on the sata drive. I'd have to boot the initrd off of some other drive the system recognizes & then have it load the sata drive rootfs.???

I was kinda hoping someone knew a Kernel boot option to force the builtin ahci driver to load & bind to my sata drive before the builtin sata_nv driver takes control.

Thanks for your responses. I'll keep hoping fon an easy command-line solution, but when I compile my next kernel, you can be sure I'll only compile the ahci sata driver as my builtin.

cladisch 01-21-2010 02:09 AM


lspci -vv
00:08.0 IDE interface: nVidia Corporation MCP61 SATA Controller (rev a2) (prog-if 85 [Master SecO PriO])
This is not an AHCI device.
If you use a kernel that has only the AHCI driver, it will not boot.

The MCP61 is nForce 430, isn't it? This chip does not support AHCI.

H_TeXMeX_H 01-21-2010 08:34 AM

I agree with cladisch, you cannot use the ahci driver because the chipset does not support AHCI.

ssenuta 01-21-2010 12:22 PM

I guess you guys are telling me that I have an older Nvidia chipset that was marketed before Nvidia started supporting the AHCI standard.That would explain why the Kernel keeps a seperate driver for it. It works fine with the sata_nv driver so that is ok ..But how did you find that out? Is their a list somewhere? Whenever I try to find out stuff like that I end up blindly searching the web. Sort of like a guy that looks for a word definition in the dictionary but doesn't know about alphabetical order.

Here is the info I have on my MSI board:
Mother Board MSI K9N6SGM-V
North Bridge Nvidia GEForce 6100
South Bridge Nvidia NForce 405

Note: The North & South Bridge chips are combined in a single combo chip
AKA: MCP/SPP chips

Thank you

H_TeXMeX_H 01-21-2010 02:41 PM

It should be listed in the manual, but if it's not and if there is no option for AHCI in the BIOS then it probably doesn't support it.

cladisch 01-22-2010 06:19 AM


Originally Posted by ssenuta
how did you find that out?

You didn't show the output of "lspci -n", but according to pci.ids, the name "MCP61 SATA Controller" can be device ID 03e7, 03f6 or 03f7.
The file include/linux/pci_ids.h defines the symbols PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA(2/3) for these.
The file drivers/ata/sata_nv.c contains these IDs, the file drivers/ata/ahci.c does not.

All times are GMT -5. The time now is 04:24 PM.