--- a/arch/x86/realmode/rm/wakeup_asm.S 2013-05-02 17:20:25.266667541 +0200 +++ b/arch/x86/realmode/rm/wakeup_asm.S 2013-05-02 18:54:49.176667541 +0200 @@ -112,13 +112,17 @@ btl $WAKEUP_BEHAVIOR_RESTORE_CR4, %edi jnc 1f - movl pmode_cr4, %eax - movl %eax, %cr4 + movl pmode_cr4, %ecx + jecxz 1f + movl %ecx, %cr4 1: btl $WAKEUP_BEHAVIOR_RESTORE_EFER, %edi jnc 1f movl pmode_efer, %eax movl pmode_efer + 4, %edx + movl %eax, %ecx + orl %edx, %ecx + jz 1f movl $MSR_EFER, %ecx wrmsr 1: