第1章 ACPI简述 1
1.1首要目标 1
1.2电源管理 2
1.3遗留支持 3
1.4 OEM实现策略 3
1.5电源和睡眠按钮 3
1.6 ACPI规范与结构 4
1.7 OS、平台兼容性 5
1.7.1平台实现ACPI定义的接口 5
1.7.2 OSPM实现 5
1.7.3 OS要求 6
第2章 ACPI基本术语及概念 7
2.1通用ACPI术语 7
2.2各种状态定义 12
2.2.1全局系统状态定义 12
2.2.2设备电源状态定义 13
2.2.3睡眠状态定义 14
2.2.4处理器电源状态定义 15
2.2.5设备和处理器性能状态定义 15
2.3电源状态 16
2.3.1平台电源管理特征 17
2.4电源管理标准 18
2.5跨设备依赖 18
2.6硬件编程模型 18
2.6.1固定硬件编程模型 19
2.6.2通用硬件编程模型 19
2.7 ACPI硬件特征 20
2.8 ACPI寄存器模型 21
2.9系统描述表头部 25
第3章 ASL编程语言 28
3.1 ASL语法 28
3.1.1 ASL语法表示法 28
3.2 ASL概念 29
3.2.1 ASL名字 29
3.2.2 ASL字面常量 29
3.2.3 ASL资源模板 30
3.2.4 ASL宏 31
3.2.5 ASL数据类型 31
3.2.6 ACPI名字空间 39
3.2.7定义块 41
3.2.8控制方法执行 43
3.2.9资源描述符类型 46
3.3常用ASL操作符 62
3.3.1 ACPI表管理 62
3.3.2 ASL编译控制 64
3.3.3常量 64
3.3.4混杂命名对象创建 65
3.3.5操作区域和字段 71
3.3.6字节 数组字段 77
3.3.7同步 78
3.3.8对象参考 79
3.3.9整数运算 79
3.3.10逻辑操作符 82
3.3.11方法执行控制 83
3.3.12数据类型转换和处理 87
3.3.13资源描述符宏 93
3.3.14控制方法对象 108
3.4预定义的对象 109
3.4.1 \_GL (Global Lock Mutex) 109
3.4.2 _OSI (Operating System Interface) 109
3.4.3 \_OS (OS Name Object) 112
3.4.4\_REV (Revision Data Object) 112
3.5转化ASL到AML 112
第4章 系统描述表架构 115
4.1概要 115
4.2 ACPI系统描述表 117
4.2.1保留位和字段 117
4.2.2兼容性 118
4.2.3地址格式 118
4.2.4 UUID (Universal Uniform Identifiers) 119
4.2.5 RSDP 119
4.2.6 RSDT 120
4.2.7 XSDT 121
4.2.8 FADT 121
4.2.9 FACS 140
4.2.10 DSDT 143
4.2.11 SSDT 143
4.2.12 MADT 144
4.2.13 SBST 151
4.2.14 ECDT 151
4.2.15 SRAT 153
4.2.16 SLIT 155
4.3其他ACPI表 156
4.3.1 MCFG 156
4.3.2 HPET 157
4.3.3 DMAR 158
4.3.4微软软件授权表 158
4.3.5 SPMI 159
4.3.6 SPCR 160
第5章 ACPI事件编程模型 165
5.1 ACPI事件编程模型组件 165
5.2 ACPI事件类型 166
5.3固定事件处理 166
5.4通用目的事件处理 167
5.4.1针对GPE处理的_Exx、_Lxx和_Qxx方法 170
5.4.2 GPE唤醒事件 171
5.5设备对象通知 173
第6章 设备及系统配置 176
6.1设备标识对象 176
6.1.1_ADR (Address) 177
6.1.2_CID (Compatible ID) 178
6.1.3_CLS (Class Code) 179
6.1.4_DDN (DOS Device Name) 179
6.1.5 _HID (Hardware ID) 179
6.1.6 _HRV (Hardware Revision) 180
6.1.7 _MLS (Multiple Language String) 180
6.1.8 _SUB 181
6.1.9 _STR (String) 181
6.1.10 _UID (Unique ID) 182
6.1.11 _SUN (Slot User Number) 182
6.2设备配置对象 183
6.2.1 _CDM (Clock Domain) 184
6.2.2 _CRS (Current Resource Settings) 184
6.2.3 _DIS (Disable) 185
6.2.4 _DMA(Direct Memory Access) 185
6.2.5 _DSD (Device Specific Data) 187
6.2.6 _FIX (Fixed Register Resource Provider) 187
6.2.7 _GSB (Global System Interrupt Base) 189
6.2.8 _HPP (Hot Plug Parameters) 190
6.2.9 _HPX (Hot Plug Parameters Extensions) 192
6.2.10 _MAT (Multiple APIC Table Entry) 195
6.2.11 _OSC (Operating System Capabilities) 196
6.2.12 _PRS (Possible Resource Setting) 202
6.2.13 _PRT (PCI Routing Table) 202
6.2.14 _PXM (Proximity) 205
6.2.15 _SLI (System Locality Information) 205
6.2.16 _CCA (Cache Coherency Attribute) 207
6.2.17 _SRS (Set Resource Settings) 208
6.3设备插入、移走和状态对象 209
6.3.1 _EDL(Eject Device List) 210
6.3.2 _EJD(Eject Dependent Device) 211
6.3.3 _EJx(Eject) 212
6.3.4 _LCK(Lock) 212
6.3.5 _OST(OSPM Status Indication) 212
6.3.6 _RMV(Remove) 216
6.3.7 _STA (Status) 216
6.4其他对象和控制方法 217
6.4.1 _INI (Init) 218
6.4.2 _REG (Region) 218
6.4.3 _BBN (Base Bus Number) 220
6.4.4 _SEG (Segment) 220
6.4.5 _GLK (Global Lock) 222
6.5系统配置对象 222
6.6 ISA设备配置 222
第7章 电源和性能管理 228
7.1声明电源资源对象 228
7.2为电源资源定义的子对象 228
7.2.1 _OFF 229
7.2.2 _ON 229
7.2.3 _STA (Status) 229
7.3设备电源管理对象 229
7.3.1 _DSW (Device Sleep Wake) 231
7.3.2 _PSx (Power State x) 231
7.3.3 _PSC (Power State Current) 231
7.3.4 _PR0 (Power Resource for D0) 232
7.3.5 _PR1 (Power Resource for D1) 232
7.3.6 _PR2 (Power Resource for D2) 233
7.3.7 _PR3 (Power Resource for D3hot) 233
7.3.8 _PRW (Power Resource for Wake) 233
7.3.9 _PSW (Power State Wake) 234
7.3.10 _IRC (In Rush Current) 235
7.3.11_S1D (S1 Device State) 235
7.3.12_S2D (S2 Device State) 235
7.3.13_S3D (S3 Device State) 236
7.3.14 _S4D (S4 Device State) 236
7.3.15 _S0W (S0 Device Wake State) 237
7.3.16 _S1W (S1 Device Wake State) 237
7.3.17 _S2W (S2 Device Wake State) 237
7.3.18 _S3W (S3 Device Wake State) 238
7.3.19 _S4W (S4 Device Wake State) 238
7.4 OEM提供的系统级别控制方法 238
7.4.1 \_PTS 239
7.4.2系统\_Sx状态 239
7.4.3 \_SWS (System Wake Source) 242
7.4.4 \_TTS (Transition To State) 242
7.4.5 \_WAK (System Wake) 243
7.5 OSPM使用_PTS、_TTS和_WAK 243
7.6控制设备电源 244
7.6.1获取设备电源能力 244
7.6.2设置设备电源状态 244
7.6.3获取设备电源状态 245
7.6.4唤醒计算机 245
7.6.5调制解调器设备电源管理示例 245
第8章 ACPI嵌入式控制器接口规范 250
8.1嵌入式控制器接口描述 250
8.2嵌入式控制器寄存器描述 251
8.2.1嵌入式控制器状态寄存器 251
8.2.2嵌入式控制器命令寄存器 252
8.2.3嵌入式控制器数据寄存器 252
8.3嵌入式控制器命令集 252
8.3.1读嵌入式控制器 252
8.3.2写嵌入式控制器 252
8.3.3突发使能嵌入式控制器 253
8.3.4突发屏蔽嵌入式控制器 253
8.3.5查询嵌入式控制器 253
8.4中断模型 254
8.4.1事件中断模型 254
8.4.2命令中断模型 254
8.5嵌入式控制器接口算法 255
8.6嵌入式控制器描述信息 255
8.7通过嵌入式控制器实现的SMBus主控制器接口 255
8.7.1寄存器描述 256
8.7.2协议描述 259
8.8 SMBus设备 261
8.8.1 SMBus设备访问限制 262
8.8.2 SMBus设备命令访问限制 262
8.9在ACPI名字空间中定义一个嵌入式控制器设备 262
8.10在ACPI名字空间中定义一个EC SMBus主控制器 266
第9章 ACPI系统管理总线接口规范 268
9.1 SMBus概要 268
9.1.1 SMBus从地址 268
9.1.2 SMBus协议 269
9.1.3 SMBus状态码 269
9.1.4 SMBus命令值 269
9.2 ASL代码访问SMBus 270
9.2.1声明SMBus主控制器对象 270
9.2.2声明SMBus设备 271
9.2.3声明SMBus操作区域 271
9.2.4声明SMBus字段 272
9.2.5声明和使用SMBus数据缓冲区 274
9.3使用SMBus协议 275
9.3.1快速读/写(SMBQuick) 275
9.3.2发送/接收字节 (SMBSendReceive ) 276
9.3.3读/写字节 (SMBByte) 277
9.3.4读/写双字节 (SMBWord) 278
9.3.5读/写块(SMBBlock) 278
9.3.6双字节 过程调用(SMBProcessCall ) 279
9.3.7块过程调用(SMBBlockProcessCall ) 280
第10章 处理器配置和控制 282
10.1处理器电源状态 282
10.1.1处理器电源状态C0 283
10.1.2处理器电源状态C1 285
10.1.3处理器电源状态C2 285
10.1.4处理器电源状态C3 285
10.1.5额外处理器电源状态 286
10.2刷新缓存 287
10.3声明处理器 287
10.3.1_PDC (Processor Driver Capabilities) 288
10.3.2处理器电源状态控制 289
10.3.3处理器风门控制 292
10.3.4处理器性能控制 297
10.4处理器聚合设备 302
10.4.1逻辑处理器空载 302
10.4.2_PUR (Processor Utilization Request) 302
第11章 ACPI定义的设备和设备特定对象 304
11.1\_SI系统指示标记 304
11.1.1 _SST (System Status) 305
11.1.2 _MSG (Message) 305
11.1.3 _BLT (Battery Level Threshold) 305
11.1.4 ASL代码示例 305
11.2电池设备 306
11.3控制型外盖设备 306
11.3.1 _LID 307
11.3.2实现示例 307
11.4控制型电源和睡眠按钮设备 310
11.5嵌入式控制器设备 312
11.6通用容器设备 313
11.7 ATA控制器设备 313
11.7.1 _GTF (Get Task File) 313
11.7.2 IDE控制器设备 314
11.7.3 SATA控制器设备 317
11.8 GPE块设备 318
11.9模块设备 319
11.10内存设备 322
11.10.1地址解码 323
11.10.2内存设备的OSC定义 323
11.11 _UPC (USB Port Capabilities) 324
11.12 USB 2.0主控制器和_UPC、 _PLD 326
11.13设备对象名冲突 327
11.13.1 _DSM (Device Specific Method) 327
11.14 PC/AT RTC/CMOS设备 327
11.14.1 PC/AT兼容RTC/CMOS设备(PNP0B00) 327
11.14.2 Intel PIIX4兼容RTC/CMOS设备(PNP0B01) 328
11.14.3 Dallas Semiconductor兼容RTC/CMOS设备(PNP0B02) 329
11.15 I/O APIC设备 329
第12章 电源和电表设备 330
12.1电池管理 330
12.1.1电池通讯 331
12.1.2电池容量 331
12.1.3电池容量规格 331
12.1.4低电量容量级别 332
12.1.5电池校准 333
12.2智能电池子系统 334
12.2.1 ACPI智能电池状态改变通知要求 335
12.2.2智能电池对象 336
12.2.3 _SBS(Smart Battery Subsystem) 336
12.3控制型电池 338
12.3.1电池事件 339
12.3.2电池控制方法 339
12.3.3 ASL代码示例 347
12.4 AC适配器和电源对象 348
12.4.1 _PSR(Power Source) 349
12.4.2 _PCL(Power Consume List) 349
12.4.3 _PIF(Power Source Information) 350
12.4.4 _PRL(Power Source Redundancy List) 350
12.5电表 350
12.5.1 _PMC(Power Meter Capabilities) 351
12.5.2 _PTP(Power Trip Points) 352
12.5.3 _PMM(Power Meter Measurement) 352
12.5.4 _PAI(Power Averaging Interval) 352
12.5.5 _GAI(Get Averaging Interval) 353
12.5.6 _SHL(Set Hardware Limit) 353
12.5.7 _GHL(Get Hardware Limit) 353
12.5.8 _PMD(Power Metered Devices) 353
12.6电源和电表名字空间示例 353
第13章 散热管理 355
13.1散热控制 355
13.1.1主动和被动冷却模型 356
13.1.2性能和节 省电量 356
13.1.3噪声 357
13.1.4多个散热区 357
13.1.5主动、被动和临界策略 357
13.1.6动态地改变冷却温度触发点 358
13.1.7识别温度改变 359
13.1.8主动冷却 360
13.1.9被动冷却 361
13.1.10临界关机 362
13.2冷却首选项 362
13.2.1评估散热设备列表 364
13.2.2评估设备散热关系信息 364
13.2.3风扇设备通知 364
13.3风扇设备 364
13.3.1 _FIF(Fan Information) 365
13.3.2 _FPS(Fan Performance States) 366
13.3.3 _FSL(Fan Set Level) 366
13.3.4 _FST(Fan Status) 366
13.4散热对象 367
13.4.1 _ACx(Active Cooling) 367
13.4.2 _ALx(Active List) 368
13.4.3 _ART(Active Cooling Relationship Table) 368
13.4.4 _CRT(Critical Temperature) 370
13.4.5 _DTI(Device Temperature Indication) 370
13.4.6 _HOT(Hot Temperature) 370
13.4.7 _NTT(Notification Temperature Threshold) 370
13.4.8 _PSL(Passive List) 370
13.4.9 _PSV(Passive) 371
13.4.10 _RTV(Relative Temperature Values) 371
13.4.11 _SCP(Set Cooling Policy) 371
13.4.12 _TC1(Thermal Constant 1) 374
13.4.13 _TC2(Thermal Constant 2) 374
13.4.14 _TMP(Temperature) 374
13.4.15 _TPT(Trip Point Temperature) 375
13.4.16 _TRT(Thermal Relationship Table) 375
13.4.17 _TSP(Thermal Sampling Period) 375
13.4.18 _TST(Temperature Sensor Threshold) 375
13.4.19 _TZD(Thermal Zone Devices) 376
13.4.20 _TZM(Thermal Zone Member) 376
13.4.21 _TZP(Thermal Zone Polling) 376
13.5 OS设备驱动散热接口 376
13.6散热区接口要求 377
13.7散热区示例 377
13.7.1基础散热区 378
13.7.2多速率风扇 379
13.7.3具有多个设备的散热区 381
第14章 系统地址映射接口 387
14.1 INT 15h, E820h——查询系统地址映射 387
14.2 E820假设和限制 389
14.3 UEFI启动服务功能 389
14.4 UEFI假设和限制 390
14.5地址映射示例 390
14.6操作系统调用示例 391
第15章 唤醒和睡眠 393
15.1睡眠状态 393
15.1.1 S1睡眠状态 395
15.1.2 S2睡眠状态 396
15.1.3 S3睡眠状态 396
15.1.4 S4睡眠状态 397
15.1.5 S5软关机状态 398
15.1.6从工作状态转换到睡眠状态 398
15.1.7从工作状态转换到软关机状态 399
15.2刷新缓存 399
15.3初始化 400
15.3.1将系统置于ACPI模式 401
15.3.2 BIOS对内存进行初始化 402
15.3.3加载OS 404
15.3.4退出ACPI模式 405
第16章 NUMA架构平台 406
16.1 NUMA节 点 406
16.2系统位置 407
16.2.1 SRAT定义 407
16.2.2系统资源关联更新 407
16.3系统位置距离信息 407
16.3.1在线插拔 408
16.3.2对已存在位置的影响 408
第17章 ACPI平台错误接口(APEI) 409
17.1硬件错误和错误源 409
17.2 OSPM和系统固件之间的关系 410
17.3错误源发现 410
17.3.1启动错误源 410
17.3.2 ACPI错误源 411
17.4固件首先处理错误 420
17.5错误序列化 421
17.5.1序列化动作表 421
17.5.2操作 425
17.6错误注入 429
17.6.1 EINJ 429
17.6.2注入指令项 430
17.6.3注入指令 431
17.6.4触发动作表 433
17.6.5错误注入操作 433
第18章 ACPI功能实现 436
18.1架构概要 436
18.1.1 ACPICA系统概要 436
18.1.2 ACPICA子系统架构 438
18.1.3 OS服务层架构 440
18.2设计细节 441
18.2.1 ACPI名字空间基本原理 441
18.2.2执行模型 443
18.2.3原理和理论 449
18.3实现细节 450
18.3.1主机OS初始化顺序要求 450
18.3.2 ACPICA初始化顺序要求 451
18.3.3多线程支持 456
18.3.4通用目的事件支持 461
18.3.5混杂ACPICA行为 463
18.4 ACPICA部署向导 464
18.4.1使用ACPICA子系统接口 464
18.4.2实现OS服务层 469