Forcing a an Intel ICH9 into AHCI mode from Linux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I have a box (Dell Power Edge R300) which I could really do with SATA hotplug functionality on. The BIOS doesn't have any AHCI support (and won't according to Dell), but I'd like to try and force the SATA controller into AHCI mode to see if this is a workable solution!

Having used setpci to stick the SATA controller into AHCI mode, and the fakephp driver to get the device rescanned by Linux, I now have a correct looking pci device showing up with lspci, but when loading the ahci driver I get:

ahci 0000:00:1f.2: version 3.0
ahci 0000:00:1f.2: device not available because of BAR 0 [cc20:cc27] collisions

This is what I did:

setpci -s 00:1f.2 0x90.w=0x0060
modprobe fakephp
echo 1 > /sys/bus/pci/slots/0000\:00\:1f.0/power
echo 1 > /sys/bus/pci/slots/0000\:00\:1f.2/power
echo 1 > /sys/bus/pci/slots/0000\:00\:1f.5/power
echo 0 > /sys/bus/pci/slots/0000\:00\:1f.2/power
echo 1 > /sys/bus/pci/slots/0000\:00\:1f.2/power
echo 1 > /sys/bus/pci/slots/0000\:00\:1f.0/power
echo 1 > /sys/bus/pci/slots/0000\:00\:1f.5/power
modprobe ahci

The kernel version is 2.6.26-2 (Debian 5.0).


lspci gives:

00:1f.2 SATA controller: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller (rev 02) (prog-if 01 [AHCI 1.0])
       Subsystem: Dell Device 020f
       Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Interrupt: pin C routed to IRQ 6
       Region 0: I/O ports at cc20 [size=8]
       Region 1: I/O ports at cc10 [size=4]
       Region 2: I/O ports at cc28 [size=8]
       Region 3: I/O ports at cc14 [size=4]
       Region 4: I/O ports at cc40 [size=32]
       Region 5: Memory at 0000c800 (32-bit, non-prefetchable) [size=2K]
       Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/4 Enable-
               Address: 00000000  Data: 0000
       Capabilities: [70] Power Management version 3
               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
               Status: D0 PME-Enable- DSel=0 DScale=0 PME-
       Capabilities: [a8] SATA HBA <?>
       Capabilities: [b0] PCIe advanced features <?>
       Kernel modules: ahci



... and I can't really work out why it thinks this... No over-laping stuff is showing up in /proc/ioports or the rest of the lspci output. Here's a diff of the lspci output before/after:

-00:1f.2 IDE interface [0101]: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA IDE Controller [8086:2920] (rev 02) (prog-if 8f [Master SecP SecO PriP PriO])
-       Subsystem: Dell PowerEdge R300 onboard SATA Controller [1028:020f]
+00:1f.2 SATA controller [0106]: Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA AHCI Controller [8086:2922] (rev 02) (prog-if 01 [AHCI 1.0])
+       Subsystem: Dell Device [1028:020f]
       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B- DisINTx-
       Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
       Latency: 0
-       Interrupt: pin C routed to IRQ 23
+       Interrupt: pin C routed to IRQ 6
       Region 0: I/O ports at bc20 [size=8]
       Region 1: I/O ports at bc10 [size=4]
       Region 2: I/O ports at bc28 [size=8]
       Region 3: I/O ports at bc14 [size=4]
-       Region 4: I/O ports at bc40 [size=16]
-       Region 5: I/O ports at bc50 [size=16]
+       Region 4: I/O ports at bc40 [size=32]
+       Region 5: Memory at 0000b800 (32-bit, non-prefetchable) [size=2K]
+       Capabilities: [80] Message Signalled Interrupts: Mask- 64bit- Queue=0/4 Enable-
+               Address: 00000000  Data: 0000
       Capabilities: [70] Power Management version 3
-               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
+               Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
               Status: D0 PME-Enable- DSel=0 DScale=0 PME-
+       Capabilities: [a8] SATA HBA <?>
       Capabilities: [b0] PCIe advanced features <?>
-       Kernel driver in use: ata_piix
-       Kernel modules: ata_piix, ata_generic, ide-pci-generic
+       Kernel modules: ahci




I know this is hacky, but it'd be nice to get it working... Any ideas?

Cheers,

Tim.
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux