diff mbox

[06/16] KVM-HDR: Implement wallclock over KVM - KVM Virtual Memory

Message ID 1295892397-11354-7-git-send-email-glommer@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Glauber Costa Jan. 24, 2011, 6:06 p.m. UTC
None
diff mbox

Patch

diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 4ee9c87..a232a36 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -1540,16 +1540,26 @@  int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
 		break;
 	case MSR_KVM_REGISTER_MEM_AREA: {
 		struct kvm_memory_area area_desc;
+		u64 wall_data;
 
 		kvm_read_guest(vcpu->kvm, data, &area_desc, sizeof(area_desc));
 		area_desc.result = 0xF;
 
+		if (area_desc.type == KVM_AREA_WALLCLOCK) {
+			kvm_read_guest(vcpu->kvm, area_desc.base,
+				       &wall_data, area_desc.size);
+			vcpu->kvm->arch.wall_clock = wall_data;
+			kvm_write_wall_clock(vcpu->kvm, wall_data);
+			goto rma_out;
+		}
+
 		if (vcpu->kvm->register_mem_area_uspace) {
 			vcpu->run->exit_reason = KVM_EXIT_X86_MSR_OP;
 			vcpu->run->msr.msr_data = data;
 			return 1;
 		}
 rma_out:
+		area_desc.result = 0;
 		kvm_write_guest(vcpu->kvm, data, &area_desc, sizeof(area_desc));
 		break;
 	}