Не удается прочитать обратно из MSR

Я пишу модуль ядра, и речь идет о чтении и написании MSR. Я написал простую программу для тестирования, но она все равно не работает. Все, что он делает, это пишет в MSR, а затем читает его обратно. Вот код:

static int __init test3_init(void)
{
    uint32_t hi,lo;
    hi=0; lo=0xb;
    asm volatile("mov %0,%%eax"::"r"(lo));
    asm volatile("mov %0,%%edx"::"r"(hi));
    asm volatile("mov $0x38d,%ecx");
    asm volatile("wrmsr");
    printk("exit_write: hi=%08x lo=%08x\n",hi,lo);
    asm volatile("mov $0x38d,%ecx");
    asm volatile("rdmsr":"=a"(lo),"=d"(hi));
    printk("exit_write2: hi=%08x lo=%08x\n",hi,lo);
    return 0;
}

The output looks like:

exit_write: hi=00000000 lo=0000000b

exit_write2: hi=00000000 lo=00000000

Может кто-нибудь сказать мне, почему возвращаемое значение 0 во втором выводе, а не оригинал? Что-то не так с моим кодом? Большое спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос