ACPI 唤醒 4 个字母代码的含义?

ACPI 唤醒 4 个字母代码的含义?

我必须禁用某些事件为了避免在我的台式机中挂起后立即唤醒,我通过反复试验做到了(效果很好,所以这不是问题)。但我想知道......例如在我的笔记本电脑中我有一个很长的列表/proc/acpi/wakeup

[...]
RP03      S4    *disabled
PXSX      S4    *disabled
RP04      S4    *disabled  pci:0000:00:1c.3
PXSX      S4    *enabled   pci:0000:03:00.0
RP06      S4    *disabled
[...]

我四处搜寻,找不到解释第一列中 4 个字母代码含义的列表的地方。我想象后面带有设备名称的事件是由该设备链接/生成的,但我对其余的大多数事件感到茫然……减去疯狂的猜测。

例如,我如何知道事件RP06是什么?哪里有清单吗?或者这些代码是特定于供应商的?

答案1

这些代码来自 BIOS 的 DSDT(差异化系统描述表)。此“表”描述了主板上的集成设备、它们的依赖性和电源管理功能。

DSDT 中的设备按树形排列,每个路径组件限制为 4 个字符。其中的代码/proc/acpi/wakeup是供应商用于设备的设备的最后一个路径组件(也称为名称)。

它们本质上是特定于供应商的,因为供应商可以根据自己的喜好命名任何设备。但有一些名称在许多供应商之间是通用的,或者是因为它们被用作示例ACPI规范或者因为它们是明显的缩写:

  • PS2K:PS/2 键盘
  • PS2M:PS/2 鼠标
  • PWRB 或 PBTN:电源按钮
  • SLPB:睡眠按钮
  • LID:笔记本电脑盖
  • RP0x 或 EXPx:PCIE 插槽 #x(又名 PCI Express 根端口 #x)
  • EHCx 或 USBx:USB 2.0 (EHCI) 芯片
  • XHC:USB 3.0 (XHCI) 芯片
  • PEGx:用于图形插槽 #x 的 PCI Express
  • GLAN 或 IGBE:千兆位以太网

答案2

PCI 设备的明显解决方案:

# cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
GP12      S4    *enabled   pci:0000:00:07.1
GP13      S4    *enabled   pci:0000:00:08.1 
XHC0      S4    *enabled   pci:0000:08:00.3
GPP0      S4    *enabled   pci:0000:00:01.1
GPP8      S4    *enabled   pci:0000:00:03.1
GPP1      S4    *enabled   pci:0000:00:01.2
PTXH      S4    *enabled   pci:0000:02:00.0
PT20      S4    *enabled   pci:0000:03:00.0
...

是按公交车号码搜索:

# lspci | grep 08:00.3
08:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
# lspci | grep 02:00.0
02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] Device 43ee

答案3

您可以为您的计算机提取并反编译 ACPI 表。

通过使用Intel的ASL编译器,您可以将系统DSDT表转换为源代码。

您需要安装acpica-tools

  • 乌班图:sudo apt-get install acpica-tools
  • 拱门Linux:sudo pacman -S --needed acpica

步骤如下:

  1. 提取 ACPI 表(以 root 身份):sudo cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
  2. 反编译:iasl -d dsdt.dat,我们得到输出文件dsdt.dsl
  3. 查找定义的设备/proc/acpi/wakeup并将其与dsdt.dsl

参考

答案4

Linux内核acpi 命名空间的文档给出了一些关于这些缩写可能是什么的诱人提示,例如“Scope(RP03):PCI0电源范围”,以及内核源代码因为 /proc 文件说它是 a dev->pnp.bus_id,但这没有帮助。

958页面ACPI 规范 5.0很有趣,但对这些名字也没有帮助。

相关内容