ACPI Tables


 ACPI SPEC定義了ACPI-compatible OS與BIOS之間的接口,ACPI Tables就是BIOS提供給OS的硬件配置數據,包括系統硬件的電源管理和配置管理。

BIOS在POST過程中,將RSDP存在0xE0000--0xFFFFF的內存空間中,然後Move RSDT/XSDT, FADT, DSDT到ACPI Recleam Area, Move FACS到ACPI NVS Area,最後填好表的Entry鏈接和Checksum。

控制權交給OS之後,由OS來開啓ACPI Mode,首先在內存中搜尋ACPI Table,然後寫ACPI_Enable到SMI_CMD,SCI_EN也會被HW置起來。

ACPI Tables根據存儲的位置,可以分爲:

1).  RSDP位於F段,用於OSPM搜索ACPI TableRSDP可以定位其他所有ACPI Table

2).  FACS位於ACPI NVS內存,用於系統進行S3保存的恢復指針,內存爲NV Store

3). 剩下所有ACPI Table都位於ACPI Reclaim內存,進入OS後,內存可以釋放

ACPI Table根據版本又分爲1.0B2.03.0,4.0

2.0以後,支持了64-bit的地址空間,因此幾個重要的Table會不大一樣,比如:RSDPRSDTFADTFACS。簡單的列舉一下不同版本的ACPI Table

1) ACPI 1.0BRSDP1RSDTFADT1FACS1DSDTMADTSSDTHPETMCFG

2) ACPI 3.0 RSDP3RSDTXSDTFADT3FACS3DSDTMADTHPETMCFGSSDT

以系統支持ACPI3.0爲例子,說明系統中ACPI table之間的關係如圖:

 其中綠色代表在內存F段,藍色是ACPI Reclaim內存,紅色是NV store內存

RSDP:Root System Description Pointer

OSPM獲得RSDP的方式:

a>. 在Legacy系統下,在Memory Space 0xE0000---0xFFFFF中 Search RSDP的signature: “RSD PTR ”。

b>. 在UEFI系統下, 在EFI System Table裏的EFI Configuration Table中Search RSDP的GUID。

1.       RSDT(Root System Description Table)              Signature: ‘RSDT’

         爲了兼容ACPI1.0而存在,XSDT取代了RSDT的功能。 如果XSDT存在,ACPI-compatible OS 必須使用XSDT。

2.       XSDT(Extended System Description Table)      Signature: ‘XSDT’

          一組64bit的物理指針,指明其他system description tables的Address。         

3.       FADT(Fixed ACPI Description Table)            Signature: ‘FACP’

          FADT包含了OS直接管理ACPI Hardware Register Blocks所必須的Fixed Hardware ACPI information,比如PM1a_EVT_BLK, PM1b_EVT_BLK, PM1a_CNT_BLK, PM1b_CNT_BLK, PM2_CNT_BLK, PM_TMR_BLK, GPE0_BLK, and GPE1_BLK這些的base address。

          通過FADT可以找到FACS和DSDT。

 

4.       FACS(Firmware ACPI Control Structure)              Signature: ‘FACS’

          The FACS contains the system’s hardware signature at last boot, the firmware waking vector, and the Global Lock。

hardware signature:由BIOS蒐集,當系統從S4喚醒的時候,OSPM通過比較當前的和已保存的hardware signature是否一致來確定系統能否恢復

firmware waking vector:在休眠之前,OSPM來填寫這一項,在POST時,BIOS來確定這一項是否不爲空,若不爲空則通過jump到這個Address來把控制權交給OSPM。

5.       DSDT(Differentiated System Description Table)                 Signature: ‘DSDT’

          DSDT包含了Differentiated Definition Block, 它們包含了整個系統的實現和配置信息。OS在系統啓動的過程中將DSDT的information插入到ACPI Namespace, 而且從不會被移除。

6.       SSDT(Secondary System Description Table)                Signature: ‘SSDT’

         SSDT是DSDT的繼續。可以有多個SSDT存在。OSPM在Load DSDT 創建出ACPI Namespace之後,會去逐個Load SSDT。注意:附加的tables 只能add data, 而不能override data。

7.       MADT(Multiple APIC Description Table)              Signature: ‘APIC’

        描述OS支持APIC/SAPIC所必須的information,比如IO-APIC address/Local-APIC address等等。

8.       SBST(Smart Battery Table)            Signature: ‘SBST’

         如果系統支持符合Smart Battery Specification V1.0 1.1的電池,則SBST就會存在。主要用來指明:

               Warning Energy Level:Warning時的Energy Level

               Low Energy Level: OSPM即將進入Sleep狀態時的Energy Level

              Critical Energy Level: OSPM將要執行緊急關機時的Energy Level

9.       MCFG(PCI-Memory Mapped Configuration table and sub-table)          Signature: 'MCFG'

         PCI Express memory mapped configuration space base address Description Table
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章