问题标签 [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.
embedded-linux - 写/读 AMD geode LX800 CPU EEPROM
我在 AMD geode LX800 CPU 数据表 ( http://goo.gl/fUl5RM ) 中读到该 CPU 在安全块中有一个可用于存储用户数据的内部 EEPROM。
我可以使用 linux 读写 MSR 寄存器,但我现在不知道如何通过 MSR 寄存器访问 eeprom 地址(可能吗?)。我不知道该怎么做,有人可以帮助我吗?
提前致谢。
file - 无法读取 sysfs 文件
我正在尝试通过读取 sysfs 文件来读取机器特定寄存器 (MSR) /dev/cpu/0/msr
。它通常仅对 root 具有读写权限。我将这些权限更新为 666(当然使用 sudo 权限),然后尝试以普通用户的身份读取文件。它不允许我这样做。但是,如果我尝试用sudo
它打开文件,我可以打开文件并阅读。
我还尝试使用chown
命令更改文件的所有权。目前该文件的状态如下:
我需要做什么才能以普通用户身份访问该文件?
linux - 如何在没有任何外部硬件仪表的情况下测量linux中进程的能耗?
我曾尝试在谷歌上搜索它,并在RAPL下找到了MSR_PKG_ENERGY_STATUS ,但不幸的是它只支持像 Sandy Bridge、Ivy Bridge 等较新的处理器。还有其他方法可以在旧处理器中获取它吗?
这是我的处理器:http ://ark.intel.com/products/50176/Intel-Pentium-Processor-P6200-3M-Cache-2_13-GHz
我不是为这个特定的方法寻找一种方法,而是试图为比 Sandy Bridge 更老的模型找到所有可能的选项。
performance - 如何重置英特尔的通用性能计数器
我知道我们可以使用wrmsr
和rdmsr
指令来设置性能计数器并读取通用性能计数器寄存器。
但是,我的问题是:
我们是否需要在发布之前重置通用性能计数器寄存器wrmsr
?
换句话说,对于下面的代码,我们需要在下面的代码之前重置性能计数器吗?如果必须,我们如何重置它?
c - x86_64 64bit RCX 寄存器值上的 WRMSR 设置错误
我想写入 PMC1 寄存器,所以我想将 RCX 设置为 188。
我用来使用 WRMSR 指令的代码附在最后。问题是我将 eax 和 ecx 值(64 位)传递给宏,但 %rcx 寄存器始终设置为 eax 值。
执行 RTXEN_WRITE_MSR(eax, ecx) 时,内核崩溃!注册信息如下:
谁能帮我看看我的代码有什么问题?
x86 - 使用 GDB 读取 MSR
在使用 GDB 调试程序时,是否有某种方法可以读取特定于 x86-64 模型的寄存器,特别是 IA32_FS_BASE 和 IA32_GS_BASE?
不太可取的是使用像英特尔的 Pintool 这样的动态仪器包的解决方案,但同样值得赞赏。
amd-processor - 修改 AMD 机器的机器寄存器
我正在研究修改 AMD 机器上的 MSR 和 PCI 配置寄存器。我通过查看以下内容知道要更改哪些位等:http: //amd-dev.wpengine.netdna-cdn.com/wordpress/media/2012/10/42301_15h_Mod_00h-0Fh_BKDG1.pdf
我尝试使用 rdmsr/wrmsr 命令(msr-tools),但它并没有真正改变 AMD 机器的任何东西。如何更改 Linux 上的 msrs 和其他寄存器?
linux - 有没有办法识别导致现代英特尔处理器上最新的最后一级缓存未命中的指令?
我目前能够从用户空间读取最后一级缓存未命中和引用的硬件计数器,wrmsr
用于选择它们然后rdpmc
读取它们。
然而,虽然一些未命中是非常明显的引用,我不会命中缓存,但其他的则更加微妙,有时会在多次执行相同的代码路径(订购 100,000 次)时四处移动。
我怀疑其中一些未命中是由于硬件预取引起的,因此我通过 BIOS 禁用了硬件预取器,但我仍然遇到滑动缓存未命中,原因很难确定。
Linux 内核或 Intel 的寄存器中是否有某种能力来确定导致最近的最后一级缓存未命中的指令的地址?
如果它有用,我正在2.6.32-279.el6.x86_64
运行Intel Xeon X3470
.
c - 根有段错误执行 RDMSR 汇编代码
我想直接从具有root 权限的 C 代码中读取 msr 0x19a (IA32_CLOCK_MODULATION)。但是,我收到以下段错误错误。
有谁知道这种调用 rdmsr 的方式是否可行?
提前致谢!
顺便说一句,代码是从这个答案中提取的。
c - 调用系统调用后如何避免 MSR 重置
我的目的是使用模型特定寄存器 (MSR) 测量特定应用程序的不同性能事件的计数。
因为,这可以通过在 ring 0 处使用 RDMSR 和 WRMSR 来完成,我使用 Linux 模块来调用这些指令并使用“insmod”插入它。
然后我在 /dev 目录 (mknod) 中创建了字符设备文件,并使用 ioctl 调用在用户模式下调用它。
当我在两个 ioctl 调用之间使用计算循环时,它给了我正确的计数。但是,当我使用 system("./sample") 调用而不是循环时,它给了我错误的值。
我阅读了这些调用,并且知道这些调用会重置 MSR。有没有办法克服这个问题?或者有没有其他方法可以在 C 程序中运行应用程序?
我提到了这个http://www.mindfruit.co.uk/2012/11/a-linux-kernel-module-for.html。
如果有人知道答案,请告诉我。在此先感谢。