コードは次のとおりです。
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
なぜこのレジスタの値を連続して読むとこんな感じになるのか。最初の 2 つは異なりますが、残りは同じです。
私の最終的な目標は、このレジスタの APIC_DM_NMI(0x00400) をリセットすることですが、値が一貫していない場合、ビットをリセットするポイントは何ですか? このビット APIC_DM_NMI をリセットすると、APIC から NMI を有効にできると誰かが教えてくれました。誰かがこの MSR に関する情報を提供できれば、それを正しく操作する方法を教えていただければ幸いです。
ありがとう。