如何访问多核处理器上的 CRx 寄存器
我需要为系统上的所有内核设置 CR4.MCE 位 (4)。我想为此编写一个 Linux 内核模块,但我不知道如何继续:How do you orderly access all of the CR4 registers?我已经阅读了英特尔手册,他们描述了一种初始化每个核心的方法,但这是在BIOS中完成的。 有什么想法吗?
I need to set the CR4.MCE bit for all the cores on my system (4). I'd like to write a linux kernel module for that, but I am not sure how to proceed: How do you sequentially access all of the CR4 registers? I have read the Intel manuals and they describe a way to initialize each core, but this is done in the bios.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
内核中已经存在 MCE 支持;请参阅
CONFIG_X86_MCE
。MCE support already exists in the kernel; see
CONFIG_X86_MCE
.为此,您需要在每个 CPU 上依次运行修改
%cr4
的代码。您可以修改 SMP 启动代码以在启动时执行此操作;或者,如果您想在运行时执行此操作,则需要广播 IPI(处理器间中断)并安排让每个处理器捕获 IPI 并运行您的代码。In order to do this, you need to run the code to modify
%cr4
on each CPU in turn. You can either modify the SMP startup code to do this at boot; or if you want to do it at runtime, you'll need to broadcast an IPI (inter-processor interrupt) and arrange to have each processor catch the IPI and run your code.