ACPI Tables

Posted on 2013-02-25 22:20  道明一腾  阅读(5623)  评论(0编辑  收藏  举报

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

Copyright © 2024 道明一腾
Powered by .NET 8.0 on Kubernetes