ACPI wakeup 4-х буквенный код, означающий?

19

Мне нужно отключить какое-то событие, чтобы избежать немедленного пробуждения после приостановки на настольном компьютере, и я сделал это методом проб и ошибок (работает хорошо, так что это не проблема). Но мне интересно ... например, в моем ноутбуке у меня длинный список /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
[...]

Я искал вокруг, и я не могу найти место, где объясняется список со значением четырехбуквенного кода в первом столбце. Я предполагаю, что события с именем устройства после них связаны / генерируются этим устройством, но я в растерянности с большинством остальных ... минус дикие догадки.

Как я могу узнать, что, например, событие RP06? Есть ли где-нибудь список? Или эти коды зависят от производителя?

Rmano
источник

Ответы:

24

Коды взяты из DSDT (Таблица описания дифференцированной системы) вашего BIOS. Эта «таблица» описывает встроенные устройства на материнской плате, их зависимости и функции управления питанием.

Устройства в 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: гигабитный Ethernet
cg909
источник
2
Отличный ответ! Благодарю. А как насчет IGBE и HDEF? ;-)
Монах Тук
3
Ну, они по своей сути зависят от производителя, так что вы не можете быть слишком уверены. Но HDEF, скорее всего, означает «Высокое разрешение», поэтому, скорее всего, это будет интегрированное аудиоустройство, а IGBE может обозначать «Intel Gigabit Ethernet» или «Integrated Gigabit Ethernet», поэтому это должен быть контроллер локальной сети Ethernet.
cg909
Как насчет PXSX?
BuZZ-DEE
1
@ BuZZ-dEE PXSX- это общее название для устройств, использующих PCI Express. По крайней мере, на моем компьютере есть одно устройство PXSX, соответствующее каждому устройству RP0x. Вы можете получить больше информации, прочитав DSDT вашего компьютера . Если на /proc/acpi/wakeupвыходе справа есть идентификатор PCI, вы можете соотнести его с выводомlspci
cg909
2

Документация ядра Linux по пространству имен acpi дает некоторые дразнящие подсказки о том, какими могут быть эти сокращения, например, «Область (RP03): область действия PCI0», а источник ядра для файла / proc говорит, что это так dev->pnp.bus_id, но это не так. Помогите.

Спецификация acpi на 958 страниц 5.0 очень интересна, но и не помогает этим именам.

meuh
источник
2

Вы можете извлечь и декомпилировать таблицу ACPI для вашего компьютера.

Используя компилятор Intel ASL, вы можете превратить вашу системную таблицу DSDT в исходный код.

Вам нужно будет установить acpica-tools:

  • Ubuntu: sudo apt-get install acpica-tools
  • Arch Linux: sudo pacman -S --needed acpica

Вот шаги:

  1. Извлечь таблицы ACPI (как корень): # cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
  2. Декомпилируем: iasl -d dsdt.datполучаем файл выводаdsdt.dsl
  3. Найдите определенное устройство /proc/acpi/wakeupи сравните его сdsdt.dsl

Ссылки

мя
источник