ACPI 唤醒 4 个字母的代码是什么意思?

Rma*_*ano 37 acpi linux-kernel

我必须禁用某些事件以避免在我的台式机中挂起后立即唤醒,并且我通过反复试验来实现(效果很好,所以这不是问题)。但我想知道......例如在我的笔记本电脑中,我有一个很长的列表/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
[...]
Run Code Online (Sandbox Code Playgroud)

我四处搜索,找不到解释第一列中具有 4 个字母代码含义的列表的地方。我想象在它们之后带有设备名称的事件是由该设备链接/生成的,但我对其余的大部分都不知所措......减去疯狂的猜测。

例如,我怎么知道事件RP06是什么?有没有清单?或者该代码是特定于供应商的?

cg9*_*909 40

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

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

它们本质上是特定于供应商的,因为供应商可以随意命名任何设备。但是有一些名称在许多供应商之间是通用的,要么是因为它们在ACPI 规范中用作示例,要么是因为它们是明显的缩写:

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

  • 嗯,它们本质上是特定于供应商的,所以你不能太确定。但是HDEF最有可能的意思是“高清”,所以它很可能是集成音频设备,而IGBE可以代表“Intel Gigabit Ethernet”或“Integrated Gigabit Ethernet”,所以它应该是以太网LAN控制器。 (4认同)
  • 很好的答案!谢谢。IGBE 和 HDEF 怎么样?;-) (2认同)
  • “PXSX”怎么样? (2认同)
  • @BuZZ-dEE `PXSX` 似乎是使用 PCI Express 的设备的通用名称。至少在我的计算机上,每个 RP0x 设备对应一个 PXSX 设备。您可能会通过[阅读计算机的 DSDT](https://blog.fpmurphy.com/2014/12/decompiling-acpi-tables.html) 获得更多信息。如果在`/proc/acpi/wakeup` 输出的右侧有一个PCI id,你可以将它与`lspci` 的输出相关联 (2认同)

小智 7

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
...
Run Code Online (Sandbox Code Playgroud)

是按公交车号码搜索:

# 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
Run Code Online (Sandbox Code Playgroud)


mja*_*mja 5

您可以为您的计算机提取并反编译 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

参考

  • dsdt.dsl 是一个巨大的文件,其中有一些英文。我什至没有看到“键盘”或“鼠标”。这是我使用华硕机器的体验 (2认同)