BIST是進入,當軟體建立一個BIST FIS在命令列中與設定CTBAz[B]。一但BIST命令被放到列表裡,SW將不允許去建立任何命令直到它清除PxCMD.ST。HBA如何運作的細節在測試模式中,此是章節將不在此說明範圍內。一個晶片商的連續特殊的試驗,可能被執行經由晶片商的特殊定義的戰存器(如同那些在HBA的PCI配置空間)。此BIST的細節不被定義在AHCI中,去允許晶片商自由的建構不是很詳盡的或不是很明顯測試架構。
此測試模式被退出時,是系統軟體清除PxCMD.ST與寫入一個0x01的值到PxSCTL.DET。清除PxCMD.ST放置DMA控制器進入到空閒,與寫PxSCTL.DET去重置此介面。
[AHCI 1.3 -> 10.14] Index-Data Pair
Index-Data Pair (IDP)提供主機軟體一個途徑,藉由執行memory mapped I/O space (> 1MB)去讀寫AHCI的暫存器。在PC平台上,主機軟體 (BIOS, Option ROMs, OSs)寫入運作在真實模式(‘real-mode’ (8086 mode))不能存取在配置在PCI上的記憶體位址,如果此位址空間是(1)記憶體映射與(2)映射大於1MB。 AHCI被致能後必須面對的問題:
- AHCI並不支援BIOS IDE存取方式。
- AHCI實現支援BIOS存取途徑,也支援4個裝置以上(一般或經由擴充器(Port Multiplier))
此IDP的途徑允許主機軟體去存取所有AHCI的MMIO暫存器間接I/O位址,在間接記憶體映射位址的地方存取經由AHCI基本位址暫存器(ABAR)。
當去設計一個驅動程式時,IDP與AHCI’s MMIO registers誰先搶到GHC.AE,並將它設為"1" ,另一端將放棄其控制權,要不然將會有衝突。
[Qemu-devel] [PATCH] ahci: add port I/O index-data pair
http://lists.gnu.org/archive/html/qemu-devel/2011-08/msg03327.html