无需反复试验即可找到正确的 ACPI 驱动程序

无需反复试验即可找到正确的 ACPI 驱动程序

我的系统正在最小内核配置上运行(基于make defconfig)。

现在我正在尝试找出必须启用哪些额外的 acpi 设备驱动程序才能使系统上的所有内容正常工作。为了找到匹配的驱动程序,我可以启用它,构建并重新启动,观察 dmesg。这是一个繁琐且容易出错的过程,我希望能够根据系统信息选择正确的驱动程序。

对于 PCI 或 USB 设备,我能够利用并lspci -nn搜索vendorId:deviceIdLKDb

我也在此数据库中看到了 ACPI 条目,但无法弄清楚如何从我的系统中提取 ACPI 设备信息。

答案1

ACPI DSDT解决方案是从 BIOS 中转储并反编译(差异化系统描述表)。这包括特定于所用系统的 ACPI 设备初始化代码,因此也包括必要的设备 ID。

使用以下命令反编译DSDT(iasl必须安装)

cp /sys/firmware/acpi/tables/DSDT dsdt.dat
iasl -d dsdt.dat

然后查询反编译代码中的设备id

grep '_HID.*"' dsdt.dsl

输出将包括声明设备的所有行以及相应的设备 ID。最后利用LKDDb为设备找到必要的内核 acpi 驱动程序。

要快速提取相关行,您可以使用以下命令:

wget https://cateee.net/sources/lkddb/lkddb.list
for i in $(grep '_HID.*"' dsdt.dsl | grep -o '"[A-Z0-9]*"'); do grep "$i" lkddb.list; done | sort -u > relevant

此外列出CONFIG_*输出中的所有变量:

cat relevant | grep -o 'CONFIG[A-Z0-9_]*' | sort -u

请注意,此列表仅供参考,并不能保证没有误报或漏报。如果你想确定自己在做什么,你应该调查一下dsdt.dsl自己。

相关内容