Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
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.
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>
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.
Last edited by H_TeXMeX_H; 01-20-2010 at 10:31 AM.
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:
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:  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.
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
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.