- Advanced Host Controller Interface
The Advanced Host Controller Interface (AHCI) is a hardware mechanism that allows software to communicate with
Serial ATA (SATA) devices (such as host bus adapters) that are designed to offer features not offered by Parallel ATA (PATA) controllers, such ashot-plugging and native command queuing. The specification details a system memory structure for computer hardware vendors in order to transfer data between system memory and the device. As of June 2008, the current version of the specification is v1.3. [ [http://www.intel.com/technology/serialata/ahci.htm Serial ATA Advanced Host Controller Interface (AHCI) homepage] . Intel, Inc. Retrieved on2008-08-20 .]Many SATA controllers can enable AHCI either separately or in conjunction with
RAID support. Intel recommends choosing RAID mode on theirmotherboard s (which also enables AHCI) rather than the plain AHCI/SATA mode for maximum flexibility, due to the issues caused when the mode is switched once an operating system has already been installed. [ [http://www.intel.com/support/chipsets/imst/sb/cs-015988.htm Intel Matrix Storage Technology - Changing and/or choosing Serial ATA Modes] . Intel, Inc. Retrieved on2007-09-30 .]AHCI is fully supported out of the box for Microsoft
Windows Vista and theLinux operating system from kernel 2.6.19. [ [http://linux-ata.org/driver-status.html Serial ATA (SATA) Linux hardware/driver status report - Dunvegan Media] ]NetBSD also supports drivers in AHCI mode out of the box in certain versions.OpenBSD has had an ahci driver since OpenBSD 4.1. FreeBSD supports AHCI as well. Older operating systems require drivers written by the host bus adapter vendor in order to support AHCI.Common problems switching to AHCI under Windows
* Enabling AHCI in a system's
BIOS will cause a 0x7BBlue Screen of Death STOP error ("INACCESSIBLE_BOOT_DEVICE") on installations ofWindows XP where AHCI/RAID drivers for that system's chipset are not installed - i.e. boot failure. Switching the chipset to AHCI mode involves changing the BIOS settings. Usually, manual installation of new drivers is required before enabling AHCI in BIOS. [ [http://www.wikihow.com/Install-Ahci-Support-for-Ati-Sb600-Sata-Controllers-on-Existing-Windows-Installations How to Install Ahci Support for Ati Sb600 Sata Controllers on Existing Windows Installations] ] Alternatively, a "Repair" installation with the appropriate driver loaded during the setup process usually corrects the problem.
* For Intel chipsets (for example, Intel ICH9) drivers are available from either an OEM motherboard or computer manufacturer. For the Intel versions, the driver must be loaded before loading the OS (by pressing F6 as setup starts, then using the floppy disk when prompted).The Intel drivers will work for both XP and Vista. Also, in the case of ICH9, [http://www.msfn.org/board/index.php?showtopic=109450 an unsupported method to enable AHCI on ICH9] is available.
* When attempting to install Windows XP or a previous version on an AHCI-enabled system, setup will fail with the error message "setup could not detect hard disk drive..." since no drivers will be found for accessing the SATA controller/s. This problem can be corrected by either using afloppy disk or by slipstreaming the appropriate drivers into the Windows XP installation CD, or by turning on IDE emulation in the BIOS settings if it's available (usually labelled COMPATIBILITY or ACPI).
* Enabling AHCI in a system withWindows Vista already installed will result in a BSoD if SATA was configured in IDE mode during Vista's installation. Before enabling AHCI in the BIOS, users must first follow the instructions found at [http://support.microsoft.com/kb/922976 Microsoft Knowledge Base article 922976] .
* Enabling AHCI in a system BIOS on installations of Windows XP or Windows Vista will cause SATA Optical drives to disappear. A Hotfix for Windows Vista is available under the title: "SATA optical drives are not available after you start a Windows Vista-based computer." [ [http://support.microsoft.com/kb/928253 SATA optical drives are not available after you start a Windows Vista-based computer] . Microsoft KB article 928253, revision 1.5. Retrieved on2007-07-27 .] This problem was fixed in Vista SP1.Common problems switching to AHCI under Linux
* AHCI controller does not work on AMD/ATI RS400-200 and RS480 HBA when MSI is enabled due to a hardware error. In order for AHCI to work users must provide the "pci=nomsi" kernel boot parameter. With MSI disabled in this way, the PCIe bus can only act as a faster PCI bus with hotplug capabilities. This is also true of the Nvidia nForce 560 chipset.Fact|date=February 2008
* AHCI controller on AMD/ATI SB600 HBA can't do 64-bit DMA transfers. 64-bit addressing is optional in AHCI 1.1 and the chip claims it can do them, but in reality it can't, so it is disabled. After that it will be forced to do 32-bit DMA transfers. Thus DMA transfers will occur in the lower 4 GiB region of the memory, and bounce buffers must be used sometimes if there is more than 4 GiB of RAM. [ [http://www.mail-archive.com/linux-ide@vger.kernel.org/msg06694.html ahci: disable 64bit dma on sb600] ]
* The VIA VT8251 South bridge suffers the same fate but it can be circumvented with the "pci=nomsi" option to force detection of the chip. This has been tested to work on 2.6.26, 2.6.24 and 2.6.20 kernels.References
External links
* [http://www.intel.com/technology/serialata/ahci.htm Official webpage]
* [http://download.intel.com/technology/serialata/pdf/rev1_3.pdf Version 1.3 specification]
Wikimedia Foundation. 2010.