mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 03:27:44 -04:00
KVM: Workaround vmx inability to virtualize the reset state
The reset state has cs.selector == 0xf000 and cs.base == 0xffff0000, which aren't compatible with vm86 mode, which is used for real mode virtualization. When we create a vcpu, we set cs.base to 0xf0000, but if we get there by way of a reset, the values are inconsistent and vmx refuses to enter guest mode. Workaround by detecting the state and munging it appropriately. Signed-off-by: Avi Kivity <[email protected]>
This commit is contained in:
parent
aac012245a
commit
8cb5b03332
1 changed files with 2 additions and 0 deletions
|
|
@ -712,6 +712,8 @@ static void enter_rmode(struct kvm_vcpu *vcpu)
|
|||
|
||||
vmcs_write32(GUEST_CS_AR_BYTES, 0xf3);
|
||||
vmcs_write32(GUEST_CS_LIMIT, 0xffff);
|
||||
if (vmcs_readl(GUEST_CS_BASE) == 0xffff0000)
|
||||
vmcs_writel(GUEST_CS_BASE, 0xf0000);
|
||||
vmcs_write16(GUEST_CS_SELECTOR, vmcs_readl(GUEST_CS_BASE) >> 4);
|
||||
|
||||
fix_rmode_seg(VCPU_SREG_ES, &vcpu->rmode.es);
|
||||
|
|
|
|||
Loading…
Reference in a new issue