如何访问多核处理器上的 CRx 寄存器

发布于 2024-12-03 19:39:47 字数 168 浏览 1 评论 0原文

我需要为系统上的所有内核设置 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

洒一地阳光 2024-12-10 19:39:47

内核中已经存在 MCE 支持;请参阅CONFIG_X86_MCE

MCE support already exists in the kernel; see CONFIG_X86_MCE.

缱绻入梦 2024-12-10 19:39:47

为此,您需要在每个 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文