ACPI _OSC 控制

ACPI _OSC 控制

我注意到 dmesg 输出中有一条错误,指出 ubuntu 无法启用 ASPM:

[    0.192722]  pci0000:00: ACPI _OSC support notification failed, disabling PCIe ASPM
[    0.192728]  pci0000:00: Unable to request _OSC control (_OSC support mask: 0x08)

虽然我知道这不是一个错误,但我想问是否有办法纠正它并启用 ASPM,原因是它可以延长电池寿命(powertop 显示 PCIe 始终处于 100% 开启状态)。

编辑:我正在使用具有最新 bios 版本 (1401) 的 ASUS eee pc 1015px

答案1

我从我的博客中粘贴了这段内容(并做了一些修改),因为它为这个问题添加了一些背景信息。

基于 PCI Express 的串行链接设备可以通过活动状态电源管理 (ASPM) 进行管理,以延长笔记本电脑和上网本等移动设备的电池寿命。ASPM 是一种电源管理协议,允许操作系统的电源管理将链接物理层置于低功耗模式,并且它能够指示链接上的其他设备也进入低功耗模式。

优点是,我们可以使用 ASPM 节省电量,但​​它会带来一些延迟,因为总线在低功耗状态下需要时间来唤醒。PCIe 规范(版本 2.0)定义了两种电源模式:

  • L0s,在链路的方向上设置低功耗模式(通常从物理链路层控制器下游)

  • L1,在链路的两个方向上设置低功耗模式,但唤醒延迟较大。

不幸的是,您的固件似乎向内核表明它确实不支持硬件上的 ASPM。内核已使用 ACPI _OSC 控件查询固件以查看是否支持 ASPM,并被告知不支持,因此 ASPM 被禁用。禁用的原因与供应商有关。可能是因为在 Windows 上,启用 ASPM 后某些东西会挂起或不可靠,因此固件将其完全禁用。

Linux 还提供了一些 ASPM 驱动程序内核参数,以允许一定程度的可调整性。可以使用以下内核参数:

禁用 ASPM:

pcie_aspm=off

使用默认固件配置:

pcie_aspm=default

禁用 ASPM 和时钟电源管理:

pcie_aspm=performance

最高省电模式,启用ASPM和时钟电源管理:

pcie_aspm=powersave

强制启用 ASPM:

pcie_aspm=force

您可能希望修改最后的设置以查看是否可以覆盖默认的 ASPM 设置。

相关内容