qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] a096b3: kvmclock: Ensure time in migration ne


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] a096b3: kvmclock: Ensure time in migration never goes back...
Date: Thu, 05 Jun 2014 12:00:06 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: a096b3a6732f846ec57dc28b47ee9435aa0609bf
      
https://github.com/qemu/qemu/commit/a096b3a6732f846ec57dc28b47ee9435aa0609bf
  Author: Alexander Graf <address@hidden>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M hw/i386/kvm/clock.c

  Log Message:
  -----------
  kvmclock: Ensure time in migration never goes backward

When we migrate we ask the kernel about its current belief on what the guest
time would be. However, I've seen cases where the kvmclock guest structure
indicates a time more recent than the kvm returned time.

To make sure we never go backwards, calculate what the guest would have seen
as time at the point of migration and use that value instead of the kernel
returned one when it's more recent.  This bases the view of the kvmclock
after migration on the same foundation in host as well as guest.

Signed-off-by: Alexander Graf <address@hidden>
Cc: address@hidden
Reviewed-by: Marcelo Tosatti <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b763adf1a6b271f17f15ea31fae93d03e980d911
      
https://github.com/qemu/qemu/commit/b763adf1a6b271f17f15ea31fae93d03e980d911
  Author: Paolo Bonzini <address@hidden>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M scripts/kvm/kvm_stat

  Log Message:
  -----------
  kvm_stat: allow choosing between tracepoints and old stats

The old stats contain information not available in the tracepoints.
By default, keep the old behavior, but allow choosing which set of stats
to present, or even both.

Inspired by a patch from Marcelo Tosatti.

Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 87446327ccb2e944fe7abc848bab798a0864eb03
      
https://github.com/qemu/qemu/commit/87446327ccb2e944fe7abc848bab798a0864eb03
  Author: Kevin O'Connor <address@hidden>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M target-i386/seg_helper.c

  Log Message:
  -----------
  target-i386: Fix vm86 mode regression introduced in fd460606fd6f.

Commit fd460606fd6f moved setting of eflags above calls to
cpu_x86_load_seg_cache() in seg_helper.c.  Unfortunately, in
do_interrupt_protected() this moved the clearing of VM_MASK above a
test for it.

Fix this regression by storing the value of VM_MASK at the start of
do_interrupt_protected().

Signed-off-by: Kevin O'Connor <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: b98dbc90950cd4e43ab9b4f8300dbeae6cf8c8cb
      
https://github.com/qemu/qemu/commit/b98dbc90950cd4e43ab9b4f8300dbeae6cf8c8cb
  Author: Paolo Bonzini <address@hidden>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M bsd-user/main.c
    M linux-user/main.c
    M target-i386/gdbstub.c
    M target-i386/seg_helper.c
    M target-i386/smm_helper.c

  Log Message:
  -----------
  target-i386: fix segment flags for SMM and VM86 mode

With the next patch, these need to be correct or VM86 tasks
have the wrong CPL.  The flags are basically what the Intel VMX
documentation say is mandatory for entry into a VM86 guest.

For consistency, SMM ought to have the same flags except with
CPL=0.

Tested-by: Kevin O'Connor <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: d3b5491897456739c6dc21c604ef8bc28e294bfc
      
https://github.com/qemu/qemu/commit/d3b5491897456739c6dc21c604ef8bc28e294bfc
  Author: Paolo Bonzini <address@hidden>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M target-i386/seg_helper.c

  Log Message:
  -----------
  target-i386: rework CPL checks during task switch, preparing for next patch

During task switch, all of CS.DPL, CS.RPL, SS.DPL must match (in addition
to all the other requirements) and will be the new CPL.  So far this worked
by carefully setting the CS selector and flags before doing the task
switch; but this will not work once we get the CPL from SS.DPL.

Temporarily assume that the CPL comes from CS.RPL during task switch
to a protected-mode task, until the descriptor of SS is loaded.

Tested-by: Kevin O'Connor <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 7125c937c97d9ec4a41b3cb6d1b3e805ec53e255
      
https://github.com/qemu/qemu/commit/7125c937c97d9ec4a41b3cb6d1b3e805ec53e255
  Author: Paolo Bonzini <address@hidden>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M target-i386/cpu.h
    M target-i386/kvm.c
    M target-i386/machine.c

  Log Message:
  -----------
  target-i386: get CPL from SS.DPL

CS.RPL is not equal to the CPL in the few instructions between
setting CR0.PE and reloading CS.  We get this right in the common
case, because writes to CR0 do not modify the CPL, but it would
not be enough if an SMI comes exactly during that brief period.
Were this to happen, the RSM instruction would erroneously set
CPL to the low two bits of the real-mode selector; and if they are
not 00, the next instruction fetch cannot access the code segment
and causes a triple fault.

However, SS.DPL *is* always equal to the CPL.  In real processors
(AMD only) there is a weird case of SYSRET setting SS.DPL=SS.RPL
from the STAR register while forcing CPL=3, but we do not emulate
that.

Tested-by: Kevin O'Connor <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 28fb26f19ffa675ac8cc08a355e5b01cc194aa5e
      
https://github.com/qemu/qemu/commit/28fb26f19ffa675ac8cc08a355e5b01cc194aa5e
  Author: Paolo Bonzini <address@hidden>
  Date:   2014-05-21 (Wed, 21 May 2014)

  Changed paths:
    M target-i386/cpu.h
    M target-i386/seg_helper.c
    M target-i386/smm_helper.c
    M target-i386/svm_helper.c

  Log Message:
  -----------
  target-i386: set CC_OP to CC_OP_EFLAGS in cpu_load_eflags

There is no reason to keep that out of the function.  The comment refers
to the disassembler's cc_op state rather than the CPUState field.

Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 0e1dac6c41f337f997814344a847162968c20c64
      
https://github.com/qemu/qemu/commit/0e1dac6c41f337f997814344a847162968c20c64
  Author: Eduardo Habkost <address@hidden>
  Date:   2014-05-30 (Fri, 30 May 2014)

  Changed paths:
    M kvm-all.c

  Log Message:
  -----------
  kvm: Ensure negative return value on kvm_init() error handling path

We need to ensure ret < 0 when going through the error path, or QEMU may
try to run the half-initialized VM and crash.

Signed-off-by: Eduardo Habkost <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: f522d2acc549dd11f495048330aa5f3f424a7dfa
      
https://github.com/qemu/qemu/commit/f522d2acc549dd11f495048330aa5f3f424a7dfa
  Author: Alex Williamson <address@hidden>
  Date:   2014-06-03 (Tue, 03 Jun 2014)

  Changed paths:
    M target-i386/cpu-qom.h
    M target-i386/cpu.c
    M target-i386/kvm.c

  Log Message:
  -----------
  kvm: Enable -cpu option to hide KVM

The latest Nvidia driver (337.88) specifically checks for KVM as the
hypervisor and reports Code 43 for the driver in a Windows guest when
found.  Removing or changing the KVM signature is sufficient for the
driver to load and work.  This patch adds an option to easily allow
the KVM hypervisor signature to be hidden using '-cpu kvm=off'.  We
continue to expose KVM via the cpuid value by default.  The state of
this option does not supercede or replace -enable-kvm or the accel=kvm
machine option.  This only changes the visibility of KVM to the guest
and paravirtual features specifically tied to the KVM cpuid.

Signed-off-by: Alex Williamson <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9b1786829aefb83f37a8f3135e3ea91c56001b56
      
https://github.com/qemu/qemu/commit/9b1786829aefb83f37a8f3135e3ea91c56001b56
  Author: Marcelo Tosatti <address@hidden>
  Date:   2014-06-03 (Tue, 03 Jun 2014)

  Changed paths:
    M hw/i386/kvm/clock.c

  Log Message:
  -----------
  kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation

Ensure proper env->tsc value for kvmclock_current_nsec calculation.

Reported-by: Marcin GibuĊ‚a <address@hidden>
Cc: address@hidden
Signed-off-by: Marcelo Tosatti <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 79b6f2f651d64a122dd647c1456635d5a6a176ac
      
https://github.com/qemu/qemu/commit/79b6f2f651d64a122dd647c1456635d5a6a176ac
  Author: Jidong Xiao <address@hidden>
  Date:   2014-06-04 (Wed, 04 Jun 2014)

  Changed paths:
    M target-i386/kvm.c

  Log Message:
  -----------
  kvm: Fix eax for cpuid leaf 0x40000000

Since Linux kernel 3.5, KVM has documented eax for leaf 0x40000000
to be KVM_CPUID_FEATURES:

https://github.com/torvalds/linux/commit/57c22e5f35aa4b9b2fe11f73f3e62bbf9ef36190

But qemu still tries to set it to 0. It would be better to make qemu
and kvm consistent. This patch just fixes this issue.

Signed-off-by: Jidong Xiao <address@hidden>
[Include kvm_base in the value. - Paolo]
Signed-off-by: Paolo Bonzini <address@hidden>


  Commit: 9f0355b590ac523d0c4e67c416c3f9cf7af3d574
      
https://github.com/qemu/qemu/commit/9f0355b590ac523d0c4e67c416c3f9cf7af3d574
  Author: Peter Maydell <address@hidden>
  Date:   2014-06-05 (Thu, 05 Jun 2014)

  Changed paths:
    M bsd-user/main.c
    M hw/i386/kvm/clock.c
    M kvm-all.c
    M linux-user/main.c
    M scripts/kvm/kvm_stat
    M target-i386/cpu-qom.h
    M target-i386/cpu.c
    M target-i386/cpu.h
    M target-i386/gdbstub.c
    M target-i386/kvm.c
    M target-i386/machine.c
    M target-i386/seg_helper.c
    M target-i386/smm_helper.c
    M target-i386/svm_helper.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/kvm/uq/master' into staging

* remotes/kvm/uq/master:
  kvm: Fix eax for cpuid leaf 0x40000000
  kvmclock: Ensure proper env->tsc value for kvmclock_current_nsec calculation
  kvm: Enable -cpu option to hide KVM
  kvm: Ensure negative return value on kvm_init() error handling path
  target-i386: set CC_OP to CC_OP_EFLAGS in cpu_load_eflags
  target-i386: get CPL from SS.DPL
  target-i386: rework CPL checks during task switch, preparing for next patch
  target-i386: fix segment flags for SMM and VM86 mode
  target-i386: Fix vm86 mode regression introduced in fd460606fd6f.
  kvm_stat: allow choosing between tracepoints and old stats
  kvmclock: Ensure time in migration never goes backward

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/d4f005db9b90...9f0355b590ac

reply via email to

[Prev in Thread] Current Thread [Next in Thread]