在启用安全启动的情况下从用户空间启用 Intel Turbo Boost

在启用安全启动的情况下从用户空间启用 Intel Turbo Boost

在我的笔记本电脑(Acer ES1-562-5191)上,我有一个 Intel Core i5-7200U,通常以 2.50GHz 运行。我启用了 Turbo Boost,它工作正常。一切都很好,除了在某个功率水平(大约 15%)下 Turbo Boost 被禁用。给笔记本电脑充电后,它不会重新启用。解决这个问题的唯一方法是重新启动笔记本电脑。

在启用安全启动之前,我可以轻松地重新启用涡轮增压,但由于内核锁定,我现在无法写入这些文件。

我尝试过几种工具来做到这一点,但据我所知,这是不可能的。

我想到的解决方案是:找到一种方法在禁用涡轮增压后重新启用它,或者找到一种方法阻止计算机禁用它。

$ uname -a
Linux Jaco-LAPTOP 5.11.0-22-generic #23-Ubuntu SMP Thu Jun 17 00:34:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v6/7th Gen Core Processor Host Bridge/DRAM Registers (rev 02)
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 620 (rev 02)
00:14.0 USB controller: Intel Corporation Sunrise Point-LP USB 3.0 xHCI Controller (rev 21)
00:15.0 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 (rev 21)
00:15.1 Signal processing controller: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #1 (rev 21)
00:16.0 Communication controller: Intel Corporation Sunrise Point-LP CSME HECI #1 (rev 21)
00:17.0 SATA controller: Intel Corporation Sunrise Point-LP SATA Controller [AHCI mode] (rev 21)
00:1c.0 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #5 (rev f1)
00:1c.5 PCI bridge: Intel Corporation Sunrise Point-LP PCI Express Root Port #6 (rev f1)
00:1f.0 ISA bridge: Intel Corporation Sunrise Point-LP LPC Controller (rev 21)
00:1f.2 Memory controller: Intel Corporation Sunrise Point-LP PMC (rev 21)
00:1f.3 Audio device: Intel Corporation Sunrise Point-LP HD Audio (rev 21)
00:1f.4 SMBus: Intel Corporation Sunrise Point-LP SMBus (rev 21)
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
02:00.0 Network controller: Intel Corporation Dual Band Wireless-AC 3168NGW [Stone Peak] (rev 10)

写入 MSR 寄存器是大多数软件更改涡轮增压状态的最终方法。这种方法行不通。

# wrmsr -p0 0x1a0 0x4000850089
wrmsr: pwrite: Operation not permitted

在这里您可以看到 i7z 和 wrmsr 的示例 dmesg 输出。

# dmesg
...
[40160.847525] Lockdown: i7z: raw MSR access is restricted; see man kernel_lockdown.7
[41009.622949] Lockdown: wrmsr: raw MSR access is restricted; see man kernel_lockdown.7

有什么建议么?

答案1

较新的内核默认禁用用户对 MSR(机器特定寄存器)的写访问,这是有意为之,因为太多内核陷入了严重的问题,包括破坏其处理器。

要启用 MSR 写访问权限,您需要将其添加msr.allow_writes=on到 grub 命令行。例如,我拥有的其他内容:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 consoleblank=314 intel_pstate=active intel_pstate=no_hwp msr.allow_writes=on cpuidle.governor=teo"

您还可以在启动后以及 msr 模块加载后访问该参数:

doug@s19:~/config/etc/default$ ls -l /sys/module/msr/parameters/allow_writes
ls: cannot access '/sys/module/msr/parameters/allow_writes': No such file or directory
doug@s19:~/config/etc/default$ sudo modprobe msr
doug@s19:~/config/etc/default$ ls -l /sys/module/msr/parameters/allow_writes
-rw------- 1 root root 4096 Jul 13 08:31 /sys/module/msr/parameters/allow_writes
doug@s19:~/config/etc/default$ sudo cat /sys/module/msr/parameters/allow_writes
on

其中选项为 [on/off/default]。我认为默认值是由内核配置参数定义的。

现在,如果您不想通过 grub 命令行启用,您也可以稍后通过以下方式执行:

doug@s19:~$ ls -l /sys/module/msr/parameters/allow_writes
ls: cannot access '/sys/module/msr/parameters/allow_writes': No such file or directory
doug@s19:~$ sudo modprobe msr
doug@s19:~$ ls -l /sys/module/msr/parameters/allow_writes
-rw------- 1 root root 4096 Jul 13 08:42 /sys/module/msr/parameters/allow_writes
doug@s19:~$ sudo cat /sys/module/msr/parameters/allow_writes
default
doug@s19:~$ echo on | sudo tee /sys/module/msr/parameters/allow_writes
on
doug@s19:~$ sudo cat /sys/module/msr/parameters/allow_writes
on

编辑:顺便说一句,您尝试写入的命令将禁用 turbo,而不是启用它。示例:

doug@s19:~$ sudo rdmsr 0x1a0
850089
doug@s19:~$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0
doug@s19:~$ sudo wrmsr 0x1a0 0x4000850089
doug@s19:~$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
1
doug@s19:~$ sudo rdmsr 0x1a0
4000850089

相关内容