KVM: when entering real mode align segment base to 16 bytes
PATCH v2 1/1 KVM: when entering real mode align segment base to 16 bytes
VMX checks that base is equal segment shifted 4 bites left. Otherwise guest entry fails.
Signed-off-by Gleb Natapov <[email protected]>
---
v1->v2
add printk_once.
arch/x86/kvm/vmx.c +3 -1
@@ -1736,9 +1736,11 @@ static void fix_rmode_seg(int seg, struct kvm_save_segment *save) save->limit =vmcs_read32 (sf->limit); save->ar =vmcs_read32 (sf->ar_bytes);vmcs_write16 (sf->selector, save->base >>4 ); -vmcs_write32 (sf->base, save->base &0xfffff ); +vmcs_write32 (sf->base, save->base &0xffff0 );vmcs_write32 (sf->limit,0xffff );vmcs_write32 (sf->ar_bytes,0xf3 ); +if (save->base &0xf ) +printk_once (KERN_WARNING "kvm: segment base is not 16 bit aligned when entering protected mode (seg=%d)" , seg); }static void enter_rmode (struct kvm_vcpu *vcpu)
--
Gleb.
Avi Kivity
AppliedQuoted 3 lines · Gleb Natapov
VMX checks that base is equal segment shifted 4 bites left. Otherwise guest entry fails.
Applied, thanks.
Signature · 1 line
error compiling committee.c: too many arguments to function