Advanced Host Controller Interface

From Wikipedia, the free encyclopedia

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 as hot-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 July 2007, the current version of the specification is v1.2.[1]

Many SATA controllers can enable AHCI either separately or in conjunction with RAID support. Intel recommends choosing RAID mode on their motherboards (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.[2]

AHCI is fully supported out of the box for Microsoft Windows Vista and the Linux operating system from kernel 2.6.19.[3] NetBSD also supports drivers in AHCI mode out of the box in certain versions. Older operating systems require drivers written by the host bus adapter vendor in order to support AHCI.

Contents

[edit] Common problems switching to AHCI under Windows

  • Enabling AHCI in a system BIOS will cause a 0x7B Blue Screen of Death STOP error (INACCESSIBLE_BOOT_DEVICE) on installations of Windows XP where AHCI/RAID drivers for that system's chipset are not installed. Switching to AHCI mode requires installing new drivers before changing the BIOS settings.
  • For Intel chipsets (for example, Intel ICH9) drivers are available from either an OEM board or computer manufacturer. For the Intel versions, the driver must be loaded before loading the OS (by pressing F6 as setup starts).The Intel drivers will work for both XP and Vista. Also, in the case of ICH9, an unsupported method to enable AHCI on ICH9 is available.
  • When attempting to install Microsoft Windows XP or a previous version on an AHCI-enabled system will cause the setup to fail with the error message "set up could not detect hard disk drive...". This problem can only be corrected by either using a floppy disk with the appropriate drivers, by slipstreaming the appropriate drivers into the Windows XP installation CD or by turning on IDE emulation in the BIOS settings if available.
  • Enabling AHCI in a system BIOS with Windows Vista already installed will result in a BSoD if SATA has been running in IDE mode during Vista's installation. Before enabling AHCI in the BIOS, users must first follow the instructions found at 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."[4]

[edit] 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.[citation needed]
  • 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.[5]

[edit] References

[edit] External links