|
@@ -791,6 +791,9 @@ static void vmx_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
|
|
*/
|
|
*/
|
|
static void vmx_set_cr0_no_modeswitch(struct kvm_vcpu *vcpu, unsigned long cr0)
|
|
static void vmx_set_cr0_no_modeswitch(struct kvm_vcpu *vcpu, unsigned long cr0)
|
|
{
|
|
{
|
|
|
|
+ if (!vcpu->rmode.active && !(cr0 & CR0_PE_MASK))
|
|
|
|
+ enter_rmode(vcpu);
|
|
|
|
+
|
|
vcpu->rmode.active = ((cr0 & CR0_PE_MASK) == 0);
|
|
vcpu->rmode.active = ((cr0 & CR0_PE_MASK) == 0);
|
|
update_exception_bitmap(vcpu);
|
|
update_exception_bitmap(vcpu);
|
|
vmcs_writel(CR0_READ_SHADOW, cr0);
|
|
vmcs_writel(CR0_READ_SHADOW, cr0);
|