蚊章汇 - ACPI
type: channel
link: https://linuxcn.bwsl.wang/tag/ACPI/
items: 戴文的Linux内核专题：10 配置内核(6)

戴文的Linux内核专题：10 配置内核(6)
type: item
date: 2013-11-24T05:15:00+08:00
description: 欢迎来到下一篇关于内核配置文章！还有大量的选项需要配置。这篇文章将主要讨论PCI和ACPI。这里我们可以启用由ACPI控制的扩展坞和可移动驱动器槽的支持(Dock)。记住，ACPI(Advanced Configuration and Power Management Interface)是一个电源管理系统。扩展坞是一种其他的设备通过额外的接口插入的设备。扩展坞可以容纳许多不同的端口和连接器。一个ACPI控制的扩展坞是指其电源管理是通过ACPI进行的。驱动器槽是一套可以增加硬盘的设备，这也可以由ACPI管理。下面，我们允许ACPI用来管理空闲的CPU(Processor)。这会让处理器在空闲时进入ACPI C2或者C3状态。这可以节省电源并降低CPU芯片的温度。处理器只在100%没有占用时才进入空闲状态。没有程序必须请求一个特定时间的CPU资源。CPU电源有四个状态 - C0、C1、C2和C3。C0是操作激活状态。C1(Halt)是一个不执行指令激活状态，但是可以立刻执行指令。C2(Stop-Clock)是一种断电状态。C3(Sleep)是一种比C2更彻底的断电状态。在C3状态中，现在缓存不再被同步或者管理，直到CPU离开这个状态。第五个状态称作C1E(Enhanced Halt State)，他拥有低功耗。如果启用了IPMI驱动，那么ACPI可以访问BMC控制器(IPMI)。基板管理控制器(BMC)是一种管理软件和硬件间连接的微控制器。智能平台管理接口(IPMI)是一种框架，通过直接的硬件层面而不是登录shell或者操作系统层面来管理计算机。ACPI v4.0进程聚合器允许内核应用一个CPU配置到所有系统中的处理器中(Processor Aggregator)。截止到ACPI v4.0，只有idle状态可以用这个方式配置。接下来，可以启用ACPI热区(Thermal Zone)。多数硬件支持这个特性。这允许风扇的电源由ACPI管理。如果启用这个选项，自定义DSDT可以链接到内核。在这个设置中，开发者必须在文件中包含完整的路径名。系统差异表(DSDT)是一个包含了系统支持的电源事件信息的文件。它不需要输入路径名，这些表存在于固件中。内核会帮你处理这些。这个主要的目的是用于如果开发者需要使用不同于设备内置的表时用到。任意ACPI表都可以通过initrd来覆盖(ACPI tables override via initrd)。ACPI表是指示如何控制并与硬件交互的基础规则和指令。像内核的其他部分一样，ACPI系统也可以生成调试信息(Debug Statements)。像其他调试特性一样，你或许希望禁用它并省下50KB。启用下面的特性会为系统检测到的每个PCI插槽(PCI slot detection driver)创建文件(/sys/bus/pci/slots/)。一个PCI插槽是在PCI主板上的一个端口，它允许用户接上其他的PC设备。PCI是主板的一种类型。PCI是指组件互相通信的方式。有些应用程序可能需要这些文件。电源管理定时器是另外一种电源管理系统(Power Management Timer Support)。这是许多系统追踪时间的方式。这个只需要很少的能源。处理器的空闲、电压/频率调节和节流都不会影响这个定时器。大量的系统需要使用这个特性。下面，可以启用ACPI模块和容器设备驱动(Container and Module Devices)。这会启用处理器、内存和节点的热插拔支持。它需要NUMA系统。下面的驱动提供对ACPI内存的热插拔支持(Memory Hotplug)。有些设备甚至启用这个驱动也不支持热插拔。如果驱动以模块形式加入，那么模块将会被acpi\_memhotplug调用。注意：对于内核某个特定的功能，硬件、BIOS和固件在必须支持时会有问题。有些系统的BIOS是不控制硬件的。这种类型的BIOS通常不会限制特性。如果内核确实有一个特定的功能，硬件必须有能力完成这样的任务。智能电源管理驱动提供访问电池的状态和信息(Smart Battery System)。下面，我们有一个"Hardware Error Device"驱动。设备通过SCI报告硬件错误。通常上，大多数的错误会是已纠正的错误。下面的是ACPI调试特性(Allow ACPI methods to be inserted/replaced at run time)。这允许ACPI AML方式不通过重启系统管理。 AML代表的是ACPI机器语言(ACPI Machine Language)。AML代码可以通过请求重启来改变和测试。APEI是ACPI的错误接口(ACPI Platform Error Interface (APEI))。APEI从芯片给操作…