您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何以编程方式禁用硬件预取?

如何以编程方式禁用硬件预取?

从Intel参考: 必须在特权级别0或实地址模式下执行此指令;否则,将生成一般保护异常#GP(0)。在ECX中指定保留的或未实现的MSR地址也会导致一般保护异常。

… 在使用此指令之前,应使用cpuID指令确定是否支持MSR(EDX [5] = 1)。

因此,您的故障可能与不支持MSR或使用错误MSR地址的cpu有关。

在内核源中使用MSR的例子很多:

在内核源中,对于单个cpu,它演示了在arch / i386 / kernel / cpu / intel.c中通过功能禁用Xeon的预取:

static void __cpuinit Intel_errata_workarounds(struct cpuinfo_x86 * c)

rdmsr函数参数是msr号,指向低32位字的指针和指向高32位字的指针。 wrmsr函数的参数是msr号,低32位字值和高32位字值。

多核或smp系统必须将cpu结构作为第一个参数传递: void rdmsr_on_cpu(unsigned int cpu,u32 msr_no,u32 * l,u32 * h); void wrmsr_on_cpu(unsigned int cpu,u32 msr_no,u32 l,u32 h);

其他 2022/1/1 18:15:56 有500人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶