这是代码:
static int __init test3_init(void)
{
uint64_t v,i;
for (i=0;i<10;i++)
{
v= native_x2apic_icr_read();
printk("v=%llx\n",v);
}
return 0;
}
结果如下:
[ 6658.458919] v=9a557fd8
[ 6658.458925] v=1d
[ 6658.458928] v=17
[ 6658.458930] v=17
[ 6658.458932] v=17
[ 6658.458935] v=17
[ 6658.458937] v=17
[ 6658.458939] v=17
[ 6658.458942] v=17
[ 6658.458944] v=17
为什么连续读取这个寄存器的值是这样的。前两个是不同的,但其余的是相同的。
我的最终目标是重置此寄存器中的 APIC_DM_NMI(0x00400),但如果值不一致,那么重置位的意义何在?有人告诉我重置这个位 APIC_DM_NMI 可以从 APIC 启用 NMI,我不知道,我完全是新手。如果有人可以提供有关此 MSR 的任何信息,以及如何正确操作它,我们将不胜感激。
谢谢。