在为x86\u 64构建Linux内核时,如何禁用CONFIG\u PM

在为x86\u 64构建Linux内核时,如何禁用CONFIG\u PM,linux,kernel,config,power-management,Linux,Kernel,Config,Power Management,我已取消选择“电源管理和ACPI选项”子菜单中的所有选项 但选项CONFIG\u PM,CONFIG\u PM\u SLEEP仍处于启用状态 # Power management and ACPI options # # CONFIG_SUSPEND is not set CONFIG_HIBERNATE_CALLBACKS=y # CONFIG_HIBERNATION is not set CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y # CONFIG_PM

我已取消选择“电源管理和ACPI选项”子菜单中的所有选项

但选项
CONFIG\u PM
CONFIG\u PM\u SLEEP
仍处于启用状态

# Power management and ACPI options
#
# CONFIG_SUSPEND is not set
CONFIG_HIBERNATE_CALLBACKS=y
# CONFIG_HIBERNATION is not set
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
# CONFIG_PM_AUTOSLEEP is not set
# CONFIG_PM_WAKELOCKS is not set
CONFIG_PM=y
# CONFIG_PM_DEBUG is not set
CONFIG_PM_CLK=y
CONFIG_PM_GENERIC_DOMAINS=y
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
CONFIG_PM_GENERIC_DOMAINS_SLEEP=y
CONFIG_PM_GENERIC_DOMAINS_OF=y
# CONFIG_ENERGY_MODEL is not set
CONFIG_ARCH_SUPPORTS_ACPI=y
# CONFIG_ACPI is not set
CONFIG_X86_PM_TIMER=y

手动编辑
.config
将所有选项更改为“未设置”也不起作用。运行“make”后,这些选项将自动启用。如何禁用
CONFIG\u PM
CONFIG\u PM\u SLEEP

我从内核源代码的顶层使用了以下内容:

find . -name Kconfig -exec grep -H 'select PM$' {} \;
除非您在arm/mach上运行,否则它只能找到kernel/power/Kconfig。只有当你打开PM_SLEEP时,PM才会被强制打开。否则,关闭PM将关闭所有电源管理

编辑:请注意,PM_SLEEP具有“def_bool y”这意味着除非明确设置,否则它将被启用。要关闭它,请将.config更改为:

CONFIG_PM_SLEEP=n

请注意,这意味着开发人员非常确定他们希望一直打开它,因此代码不会在关闭它的情况下进行测试。您将自行查找并修复因关闭它而导致的错误。

谢谢您的回复!但是我找不到一个方法来关闭下午睡眠。将“CONFIG_PM_SLEEP=y”链接到“#CONFIG_PM_SLEEP未设置”将无法工作。不知何故,它会自动启用。而且没有选择PM_SLEEP的选项,因为
$find-名称Kconfig-exec grep-H'select PM_SLEEP'{}\返回空结果。我以前从未见过def_bool。只是把它加到了答案上。啊,德福布尔是怎么回事。但是,
PM\u SLEEP=n
不起作用。我知道“#CONFIG_PM_SLEEP is not set”(配置未设置睡眠)应该取消设置选项,但不知何故,它不起作用。最后,我在kernel/power/Kconfig中将“def_bool y”更改为“def_bool n”,从而禁用了
CONFIG_PM
。看起来您希望更改系统ACPI PM默认值。我想您可以动态插入SSDT以达到此目的。@TerenceLiu您是否建议我可以插入SSDT以禁用电源管理?实际上,我正在尝试使用PM宏来替换“ifdef CONFIG_PM_SLEEP”,并想知道如果禁用PM_SLEEP,是否没有编译问题。无论如何谢谢你!