OpenCloudOS-Kernel/arch/x86/kvm
Radim Krčmář 5dca0d9147 kvm: x86: fix kvmclock update protocol
The kvmclock spec says that the host will increment a version field to
an odd number, then update stuff, then increment it to an even number.
The host is buggy and doesn't do this, and the result is observable
when one vcpu reads another vcpu's kvmclock data.

There's no good way for a guest kernel to keep its vdso from reading
a different vcpu's kvmclock data, but we don't need to care about
changing VCPUs as long as we read a consistent data from kvmclock.
(VCPU can change outside of this loop too, so it doesn't matter if we
return a value not fit for this VCPU.)

Based on a patch by Radim Krčmář.

Reviewed-by: Radim Krčmář <rkrcmar@redhat.com>
Acked-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-04-27 15:48:59 +02:00
..
Kconfig Fairly small update, but there are some interesting new features. 2015-02-13 09:55:09 -08:00
Makefile KVM: x86: remove now unneeded include directory from Makefile 2015-03-26 21:43:13 +00:00
assigned-dev.c VFS: assorted d_backing_inode() annotations 2015-04-15 15:06:59 -04:00
assigned-dev.h KVM: x86: move device assignment out of kvm_host.h 2014-11-24 16:53:50 +01:00
cpuid.c KVM: x86: cache maxphyaddr CPUID leaf in struct kvm_vcpu 2015-04-08 10:46:56 +02:00
cpuid.h KVM: x86: cache maxphyaddr CPUID leaf in struct kvm_vcpu 2015-04-08 10:46:56 +02:00
emulate.c kvm: x86: fix x86 eflags fixed bit 2015-04-08 10:46:52 +02:00
i8254.c KVM: Redesign kvm_io_bus_ API to pass VCPU structure to the callbacks. 2015-03-26 21:43:11 +00:00
i8254.h KVM: move iodev.h from virt/kvm/ to include/kvm 2015-03-26 21:43:12 +00:00
i8259.c KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
ioapic.c The most interesting bit here is irqfd/ioeventfd support for ARM and ARM64. 2015-04-13 09:47:01 -07:00
ioapic.h KVM/ARM changes for v4.1: 2015-04-07 18:09:20 +02:00
iommu.c kvm: iommu: Add cond_resched to legacy device assignment code 2015-01-27 21:31:12 +01:00
irq.c KVM: nVMX: fix "acknowledge interrupt on exit" when APICv is in use 2014-08-05 15:00:24 +02:00
irq.h KVM: move iodev.h from virt/kvm/ to include/kvm 2015-03-26 21:43:12 +00:00
irq_comm.c kvm: remove CONFIG_X86 #ifdefs from files formerly shared with ia64 2014-11-21 18:07:26 +01:00
kvm_cache_regs.h KVM: MMU: Do not unconditionally read PDPTE from guest memory 2011-09-25 19:18:01 +03:00
lapic.c KVM: x86: cleanup kvm_irq_delivery_to_apic_fast 2015-04-14 18:09:51 +02:00
lapic.h KVM: x86: simplify kvm_apic_map 2015-04-08 10:47:01 +02:00
mmu.c KVM: MMU: fix comment in kvm_mmu_zap_collapsible_spte 2015-04-15 17:07:46 +02:00
mmu.h KVM: x86: #PF error-code on R/W operations is wrong 2015-01-09 10:24:11 +01:00
mmu_audit.c arch/x86: replace strict_strto calls 2014-08-08 15:57:28 -07:00
mmutrace.h x86/kvm/tracing: Use helper function trace_seq_buffer_ptr() 2014-11-19 15:25:36 -05:00
paging_tmpl.h KVM: x86: Wrong assertion on paging_tmpl.h 2014-10-24 13:30:37 +02:00
pmu.c KVM: x86: For the symbols used locally only should be static type 2015-03-17 22:38:28 -03:00
svm.c KVM: x86: BSP in MSR_IA32_APICBASE is writable 2015-04-08 10:47:02 +02:00
trace.h KVM: VMX: Add PML support in VMX 2015-01-30 09:39:54 +01:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: VMX: Preserve host CR4.MCE value while in guest mode. 2015-04-21 19:01:44 +02:00
x86.c kvm: x86: fix kvmclock update protocol 2015-04-27 15:48:59 +02:00
x86.h kvm: x86: Remove kvm_make_request from lapic.c 2015-01-08 22:48:08 +01:00