问题标签 [msr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
x86 - AMD x86 和 Intel x86 之间的 MSR 有什么区别?
我知道 AMD 和 Intel 都实现了 x86 架构 CPU,它们都包含 MSR 寄存器。我不确定两种实现中的 MSR 寄存器是否相同。如果不是,主要区别是什么?
谢谢!
c - 如何检测是否存在特定于模型的寄存器
我正在尝试检查 IA32_VMX_EPT_VPID_CAP (48CH) 中的某个位是否清晰,但在某些情况下,我正在使用本身没有那个 msr(q9300) 的硬件并且我得到了段错误。我想知道是否有一条指令或一种“好”的方式来检查 msr 是否首先存在。我知道我可能可以处理段错误或检查 CPU 型号并将其与准备好的表进行比较,该表具有哪些 CPU 具有 msr,但这些解决方案对我来说似乎有点混乱。我查看了英特尔手册,但我没有找到任何关于检查它的方法的参考。有没有比上述方式更合适的约定或更合适的方式?
profiling - Perf 错误:sys_perf_event_open() 系统调用为事件 (msr/tsc/) 返回了 22(无效参数)
我正在使用 perf 来监视系统中的某些事件。但是,我收到以下错误,我不知道它来自哪里,因为该事件列在 perf list 中
sudo perf 记录 -e msr/tsc/ -a
如何检查 No CONFIG_PERF_EVENTS=y 内核支持配置?
**部分测试结果:
性能列表 |grep msr
sudo uname -a Linux bla 4.9.0-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
sudo /proc/config.gz返回命令未找到任何帮助/想法表示赞赏。
caching - 在 Skylake 中使用 MSR 正确禁用硬件预取
我正在尝试在我的机器上禁用硬件预取:
CPU系列:6
型号:78
型号名称:Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz
我已经检查过: gcc -march=native -Q --help=target|grep march - 命令,它是 Skylake 微架构。
我已经安装了 msr-tools。grep -i msr /boot/config-$(uname -r) 这给出了结果: CONFIG_X86_MSR=m - 我不确定是否有必要将其设置为 Y,或者如何设置。我试图使用这个帖子:
但是我认为帖子有点旧并且不使用 0x1a4 地址。同样在评论中没有描述如何使用这个地址来做,或者修改 0x1a4 或 0x1a0 之间是否没有区别。
我已阅读这篇文章:https ://software.intel.com/en-us/articles/disclosure-of-hw-prefetcher-control-on-some-intel-processors说可以通过设置 0 禁用预取0x1A4 中的 -3 位到 1。modprobe msr - 执行此命令不会出错(也不会打印任何消息)。然后我正在尝试这两个命令:
sudo wrmsr -p 0 0x1a4 15 //对于核心 0
sudo wrmsr -p 2 0x1a4 15 //对于核心 2
15 用于将所有最后 4 位设置为 1
你能帮我确保我正确地禁用了预取器吗?由于我对 sudo wrmsr -p 0 0x1a4 15 - 命令做了很多假设,我不确定我是否正确使用它。我试图提供所有信息,但如果还有其他需要,请告诉我。(我已经缩短了帖子,因为我想它太长了,无法通过)
linux - 在安全启动的情况下执行 rdmsr / wrmsr?
我试图在安全启动模式下运行 Ubuntu 18.04/内核 4.18.0-16 的英特尔 Skylake 机器上降低我的 CPU 电压,并且需要读/写 MSR 0x150。我已经签署并加载了 msr.ko 内核模块,但无法从 msr-tools 运行可执行文件 rdmsr 和 wrmsr,即使是 root / 超级用户(我得到权限错误)。我掌握的是,使用较新的内核(> 3.7?)您无法从用户空间访问 MSR。描述了一些解决方法:我尝试为 rdmsr 和 wrmsr 设置“setcap cap_sys_rawio+ep”,但这没有帮助。我正在使用工具iuvolt和undervolt,但也直接尝试了 wrmsr 。
如何在安全启动模式下执行 rdmsr / wrmsr?
system - 如何验证我的硬件预取器是否已禁用
我使用以下指南禁用了硬件预取:已安装 msr-tools 1.3
我的系统 (Broadwell) 的预取器信息位于 msr 地址 0x1A4 中,如英特尔文档所示。
我做rdmsr -a 0x1A4
了输出显示1
。根据英特尔文档,如果与特定预取器对应的位数设置为 1,则表示它被禁用。
我想知道是否有其他方法可以验证我的硬件预取器已被禁用?
c - 如何从 EFI 棒更改 msr 0x199?
我有一个没有电池的macbookpro11,3。取出电池后,固件会将 CPU 调至半速。在 Windows 中,我可以使用 Throttlestop 覆盖它以关闭 BD PROCHOT 并将乘数设置为 25。我想从 EFI 执行此操作,以便引导和更新以正常速度运行。
基于更新 0x3a 寄存器的rEFInd的源代码,我编写了这个程序,但是当 BD PROCHOT 在启动到 Windows 后被正确禁用时,乘数不是。
从 EFI 读取带有 rdmsr 的寄存器似乎显示两者都设置正确,但是当启动到 Windows 时,当 0x1FC 的位 0 正确设置为关闭时,存储在 0x199 中的乘数与默认值 12 相比没有变化,而我预计它是 25。
默认值
这些是标准启动到 Windows 后的值(来自 RWEverything)
调用程序后的结果
在调用 Windows 引导加载程序bootmgfw.efi之前从 EFI shell 调用程序
0x1FC 已更新,0x199 未更新。
在 Windows 中使用 RWEverything 更新 0x199 会正确更改乘数,因此我相当确定它是正确的寄存器。
由于这是我的第一个 EFI(或 C)程序,我可能忽略了一些琐碎的事情。
trace - Qemu:跟踪 msr 读/写
Qemu 确实在 trace-events-all 中列出了一些跟踪工具。但是,没有关键字可以确定何时读取或写入特定于模型的寄存器。有什么解决方法吗?
intel - 在 BIOS 中没有禁用预取的选项
我一直在尝试禁用笔记本电脑中的预取。经过多次尝试,我意识到英特尔停止披露有关如何禁用 nehalem 架构的预取的信息。即使我尝试修改 MSR,它也总是给出一个错误,说我没有写权限。然后我发现它可以使用 BIOS 禁用。但是,在我的 BIOS 中,我没有禁用预取的选项。我有一台戴尔笔记本电脑,我的 BIOS 版本是 1.2.7。
谁能告诉我如何在我的笔记本电脑中禁用预取?我正在使用戴尔 Inspiron 灵越 5559。
linux - 在 /dev 文件上设置 root-only 权限并构建二进制文件
作为构建过程的一部分,我想运行以下两个命令:
这会将内核模块/dev/cpu/*/msr
公开的文件设置为全球可读,并设置实际读取这些文件所需msr
的二进制文件(作为构建的一部分生成)的附加权限。./bench
问题是这需要 root 权限,因此sudo
.
我想要一个类似 setuid 根脚本的东西来完成这两个特定的事情,但是在现代 Linux 上不推荐和禁用setuid 根脚本。
对于一个简单的解决方案,我有哪些选择?
仅适用于第二行(setcap
)的解决方案也很有趣,因为我需要这个来运行每个构建,而chmod
每次启动只需要运行一次。