KVM_SET_SREGS 64位设置错误
KVM中如果通过 KVM_SET_SREGS 开启64位(段描述符l位置1时),可能会出现无效参数的错误。
出现这个的原因是 kvm_sregs.efer 没设置值,来开启64位,关于IA32_EFER位查阅Intel手册,这里不详讲。
对于HAXM,其可以直接通过MSR设置IA32_EFER位设置,但对于KVM,必须在段寄存器中设置好该值。
具体如何设置,查看Intel手册根据实际情况设置,我们下面给出一个样例:
uint64_t val = IA32_EFER_SCE | IA32_EFER_LME | IA32_EFER_LMA | IA32_EFER_XD;