如何告诉 Windows 或 Linux 将特定 (PCI[e]) 设备置于睡眠/关闭 (D3) 状态?

Bal*_*ann 5 linux windows-7 pci acpi power-management

如何告诉 Windows 或 Linux 关闭特定设备(例如 USB 控制器、网卡、视频卡)的电源,即使其处于 D3 状态?从我对 ACPI 等的了解很少,操作系统可以控制这一点,因为它会将设备置于所述 D3 状态(如果支持),例如在将计算机置于睡眠 (S3) 模式时。我想知道是否有办法为某些设备手动执行此操作。

对于Linux,我发现了这个线程,建议使用例如启用驱动程序来控制设备的电源

 echo -n "auto" > /devices/pci0000:00/0000:00:02.0/power/control' 
Run Code Online (Sandbox Code Playgroud)

然后卸载驱动程序:

 echo -n "0000:00:02.0" > /sys/bus/pci/drivers/i915/unbind
Run Code Online (Sandbox Code Playgroud)

以便设备休眠。

还有其他方法吗?也许是为了模拟当整个系统进入睡眠模式时会发生什么?

此外,这将如何在 Windows 7 中工作?

xra*_*aso 3

对于Linux,我找到了这个线程,建议使用例如启用驱动程序来控制设备的电源

echo -n "auto" > /devices/pci0000:00/0000:00:02.0/power/control' 和

然后卸载驱动程序:

echo -n "0000:00:02.0" > /sys/bus/pci/drivers/i915/unbind

以便设备进入睡眠状态。

对于Linux,

向 sys 文件 (/sys/devices/..../..../power/control) 回显 auto 是告诉内核为该特定设备启用运行时电源管理。我相信这需要 2.6.32 的最低内核版本,并且必须在内核配置文件中启用运行时 PM (CONFIG_PM_RUNTIME=y)。

启动转换到 D3 的事件是链路丢失。卸载驱动程序可能会阻止设备进入 D3,最好是 ifdown(或 ifconfig ethX down)接口。

您可以使用以下命令确定设备的状态:

lspci -s 00:02.0 -vv

对于 NDIS,相同的事件(链路丢失)会启动向 D3 的转换(卸载/禁用设备/电缆拉动/链路伙伴断开连接)。您可以通过查看“属性”->“详细信息”->“电源数据”来了解设备的状态。此外,电源数据屏幕应告知您电源状态映射(即在每个 Sx 状态中进入什么 Dx 状态)。