当前位置: 首页 > 科技观察

Devyn的Linux内核专题:配置PCI和ACPI

时间:2023-03-13 04:47:01 科技观察

欢迎阅读下一篇关于内核配置的文章!还有大量选项可供配置。本文将主要讨论PCI和ACPI。在这里我们可以启用对ACPI控制的坞站和可移动驱动器插槽(Dock)的支持。请记住,ACPI(高级配置和电源管理接口)是一个电源管理系统。坞站是其他设备通过附加端口插入的设备。坞站可以容纳许多不同的端口和连接器。ACPI控制的扩展坞是通过ACPI完成电源管理的扩展坞。驱动器托架是一组可以添加硬盘的设备,也可以通过ACPI进行管理。接下来,我们让ACPI管理空闲的CPU(处理器)。这将使处理器在空闲时进入ACPIC2或C3状态。这样既省电又降低了CPU芯片的温度。处理器只有在100%未被占用时才进入空闲状态。没有程序必须在特定时间请求CPU资源。CPU电源有四种状态——C0、C1、C2和C3。C0是操作激活状态。C1(Halt)是不执行指令的活动状态,但可以立即执行指令。C2(Stop-Clock)为断电状态。C3(Sleep)是比C2更完整的断电状态。在C3状态下,缓存不再同步或管理,直到CPU离开此状态。第五个状态称为C1E(EnhancedHaltState),功耗低。如果启用了IPMI驱动程序,则ACPI可以访问BMC控制器(IPMI)。底板管理控制器(BMC)是一种管理软件和硬件之间连接的微控制器。智能平台管理接口(IPMI)是一个框架,用于在直接硬件级别而不是在登录shell或操作系统级别管理计算机。ACPIv4.0进程聚合器允许内核将CPU配置应用于系统中的所有处理器(处理器聚合器)。从ACPIv4.0开始,只能以这种方式配置空闲状态。接下来,您可以启用ACPI热区(ThermalZone)。大多数硬件都支持此功能。这允许风扇的电源由ACPI管理。如果启用此选项,自定义DSDT可以链接到内核中。在此设置中,开发人员必须在文件中包含完整路径名。系统差异表(DSDT)是一个文件,其中包含有关系统支持的电源事件的信息。它不需要输入路径名,这些表存在于固件中。内核会为你处理这个。这样做的主要目的是在开发人员需要使用与设备内置表格不同的表格时使用。任意ACPI表都可以被initrd覆盖(ACPI表通过initrd覆盖)。ACPI表是指示如何控制硬件并与硬件交互的基本规则和指令。和内核的其他部分一样,ACPI系统也可以产生调试信息(DebugStatements)。与其他调试功能一样,您可能希望禁用它并节省50KB。启用以下功能将为系统(PCI插槽检测驱动程序)检测到的每个PCI插槽创建一个文件(/sys/bus/pci/slots/)。PCI插槽是PCI主板上的一个端口,允许用户连接其他PC设备。PCI是主板的一种。PCI是指组件相互通信的方式。某些应用程序可能需要这些文件。电源管理定时器是另一种电源管理系统(PowerManagementTimerSupport)。这是多少系统跟踪时间。这需要很少的能量。处理器空闲、电压/频率缩放和节流不会影响此计时器。大量的系统需要使用这个特性。接下来,您可以启用ACPI模块和容器设备驱动程序(ContainerandModuleDevices)。这为处理器、内存和节点启用了热插拔支持。它需要NUMA系统。以下驱动程序为ACPI内存(内存热插拔)提供热插拔支持。即使启用了此驱动程序,某些设备也不支持热插拔。如果驱动程序作为模块添加,模块将被acpi_memhotplug调用。注意:对于内核的某个特定功能,硬件、BIOS和固件必须支持时才会出现问题。某些系统的BIOS不控制硬件。这种类型的BIOS通常不限制功能。如果内核确实具有特定功能,则硬件必须能够执行此类任务。智能电源管理驱动程序提供对电池状态和信息的访问(智能电池系统)。接下来,我们有一个“硬件错误设备”驱动程序。设备通过SCI报告硬件错误。通常,大多数错误都是已纠正的错误。以下是ACPI调试功能(允许在运行时插入/替换ACPI方法)。这允许在不重新启动系统的情况下管理ACPIAML模式。AML代表ACPI机器语言(ACPIMachineLanguage)。可以通过请求重新启动来更改和测试AML代码。APEI是ACPI的错误接口(ACPIPlatformErrorInterface(APEI))。APEI从芯片向操作系统报告错误。错误接口还提供了注入错误的能力。启用“SFI(简单固件接口)支持”时,硬件固件可以向操作系统发送消息。固件和操作系统之间的通信是通过内存中的静态表进行的。在仅SFI计算机上运行内核需要此功能。要更改处理器的时钟速度和运行时间,请启用此功能(CPU频率缩放)。CPU频率调整意味着改变处理器的时钟速度。该驱动程序可用于降低时钟频率以节省功耗。下面是另一个电源管理子系统(CPUidlePMsupport)。当处理器处于非活动状态时,它处于有效的空闲模式以降低功耗并降低CPU消耗。降低功耗还可以减少内部组件的发热。Linux内核提供了许多CPU空闲驱动程序。在多处理器系统上,一些用户可能有理由在每个CPU上使用不同的驱动程序(Supportmultiplecpuidledrivers)。启用此驱动程序允许用户为每个处理器设置不同的驱动程序。对于Intel处理器,内核有一个驱动程序(CpuidleDriverforIntelProcessors)专门用于管理此类CPU芯片的空闲状态。当内存芯片空闲时,它们也可以处于低功耗状态(英特尔芯片组空闲内存节能驱动程序)。此驱动程序专门用于支持IOAT的Intel设备。不同的计算机使用不同类型的主板(支持PCI)。其中一种类型是PCI。该驱动程序允许内核在PCI主板上运行。接下来,我们可以启用/禁用“支持mmconfigPCI配置空间访问”。接下来,我们有一个选项来启用/禁用主机桥窗口驱动程序(支持mmconfigPCI配置空间访问)。警告:此驱动程序尚未完成(至少从3.9.4开始)。和上面说的主板一样,还有一种主板。一种选择是编写提供“PCIExpress(PCIe)支持”的驱动程序。PCIe是PCI的改进和更快的版本。在此之后,应启用以下驱动程序以支持PCIe主板上的热插拔(PCIExpress热插拔驱动程序)。接下来,我们可以启用/禁用PCIe主板错误报告(RootPortAdvancedErrorReporting)。这是PCIeAER驱动程序。下一个功能允许用户使用PCIeEREC(PCIExpressECRC设置控制)覆盖BIOS和固件设置。下一个选项是PCIe错误注入(PCIeAER错误注入器支持)。以下设置提供操作系统控制PCI的活动状态和时钟电源管理(PCIExpressASPM控制)。通常,固件控制ASPM,但此功能允许操作系统进行控制。和以前一样,像内核的许多组件一样,有对ASPM(DebugPCIExpressASPM)的调试支持。接下来,从此菜单中选择“默认ASPM策略”。在这个选项之后,下一个是关于允许设备驱动程序启用消息信号中断(MessageSignaledInterrupts(MSI))。通常上限允许设备向CPU发送中断。要向系统日志添加大量调试信息,请启用“PCI调试”。下一个选项让PCI核心检测是否有必要启用PCI资源重新分配(EnablePCIresourcereallocationdetection)。在Linux上托管虚拟操作系统时,有时可以用来为虚拟系统预留一个PCI设备(PCIStubdriver)。通过系统虚拟化,一个操作系统可以在另一个系统内部或与另一个系统并行。有时他们会争夺资源。可以为客户端保留设备以减少争用并提高性能。以下驱动程序允许超传输设备使用中断(超传输设备上的中断)。HyperTransport是一种用于处理器之间高速通信的系统/协议总线。下一个驱动因素是PCI虚拟化,它允许虚拟设备共享它们的物理资源(PCIIOV支持)。PCI页面请求接口(PRI)使IOMMU(输入/输出内存管理单元)后面的PCI设备能够从页面错误中恢复(PCIPRI支持)。页面错误不是一种错误。这是软件尝试访问不在物理内存中的数据的事件。同样,您将在以后的文章中看到更多需要配置的Linux内核功能。通过:http://www.linux.org/threads/the-linux-kernel-configuring-the-kernel-part-6.4457/