1. 18 6月, 2014 1 次提交
  2. 27 5月, 2014 1 次提交
  3. 22 5月, 2014 2 次提交
    • P
      KVM: x86: check CS.DPL against RPL during task switch · 5045b468
      Paolo Bonzini 提交于
      Table 7-1 of the SDM mentions a check that the code segment's
      DPL must match the selector's RPL.  This was not done by KVM,
      fix it.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      5045b468
    • P
      KVM: x86: use new CS.RPL as CPL during task switch · 2356aaeb
      Paolo Bonzini 提交于
      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 flag before doing the
      task switch; setting CS.selector will already change the CPL.
      
      However, this will not work once we get the CPL from SS.DPL, because
      then you will have to set the full segment descriptor cache to change
      the CPL.  ctxt->ops->cpl(ctxt) will then return the old CPL during the
      task switch, and the check that SS.DPL == CPL will fail.
      
      Temporarily assume that the CPL comes from CS.RPL during task switch
      to a protected-mode task.  This is the same approach used in QEMU's
      emulation code, which (until version 2.0) manually tracks the CPL.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      2356aaeb
  4. 24 4月, 2014 2 次提交
  5. 22 4月, 2014 1 次提交
  6. 17 3月, 2014 2 次提交
    • I
      KVM: x86 emulator: emulate MOVAPD · 6fec27d8
      Igor Mammedov 提交于
      Add emulation for 0x66 prefixed instruction of 0f 28 opcode
      that has been added earlier.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      6fec27d8
    • I
      KVM: x86 emulator: emulate MOVAPS · 27ce8258
      Igor Mammedov 提交于
      HCK memory driver test fails when testing 32-bit Windows 8.1
      with baloon driver.
      
      tracing KVM shows error:
      reason EXIT_ERR rip 0x81c18326 info 0 0
      
      x/10i 0x81c18326-20
      0x0000000081c18312:  add    %al,(%eax)
      0x0000000081c18314:  add    %cl,-0x7127711d(%esi)
      0x0000000081c1831a:  rolb   $0x0,0x80ec(%ecx)
      0x0000000081c18321:  and    $0xfffffff0,%esp
      0x0000000081c18324:  mov    %esp,%esi
      0x0000000081c18326:  movaps %xmm0,(%esi)
      0x0000000081c18329:  movaps %xmm1,0x10(%esi)
      0x0000000081c1832d:  movaps %xmm2,0x20(%esi)
      0x0000000081c18331:  movaps %xmm3,0x30(%esi)
      0x0000000081c18335:  movaps %xmm4,0x40(%esi)
      
      which points to MOVAPS instruction currently no emulated by KVM.
      Fix it by adding appropriate entries to opcode table in KVM's emulator.
      Signed-off-by: NIgor Mammedov <imammedo@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      27ce8258
  7. 05 11月, 2013 2 次提交
  8. 03 11月, 2013 1 次提交
    • P
      KVM: x86: fix emulation of "movzbl %bpl, %eax" · daf72722
      Paolo Bonzini 提交于
      When I was looking at RHEL5.9's failure to start with
      unrestricted_guest=0/emulate_invalid_guest_state=1, I got it working with a
      slightly older tree than kvm.git.  I now debugged the remaining failure,
      which was introduced by commit 660696d1 (KVM: X86 emulator: fix
      source operand decoding for 8bit mov[zs]x instructions, 2013-04-24)
      introduced a similar mis-emulation to the one in commit 8acb4207 (KVM:
      fix sil/dil/bpl/spl in the mod/rm fields, 2013-05-30).  The incorrect
      decoding occurs in 8-bit movzx/movsx instructions whose 8-bit operand
      is sil/dil/bpl/spl.
      
      Needless to say, "movzbl %bpl, %eax" does occur in RHEL5.9's decompression
      prolog, just a handful of instructions before finally giving control to
      the decompressed vmlinux and getting out of the invalid guest state.
      
      Because OpMem8 bypasses decode_modrm, the same handling of the REX prefix
      must be applied to OpMem8.
      Reported-by: NMichele Baldessari <michele@redhat.com>
      Cc: stable@vger.kernel.org
      Cc: Gleb Natapov <gleb@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NGleb Natapov <gleb@redhat.com>
      daf72722
  9. 01 11月, 2013 1 次提交
  10. 31 10月, 2013 4 次提交
  11. 17 9月, 2013 1 次提交
  12. 03 6月, 2013 2 次提交
  13. 21 5月, 2013 8 次提交
  14. 09 5月, 2013 3 次提交
  15. 25 4月, 2013 1 次提交
  16. 14 4月, 2013 3 次提交
  17. 11 4月, 2013 1 次提交
    • K
      KVM: x86 emulator: Fix segment loading in VM86 · f8da94e9
      Kevin Wolf 提交于
      This fixes a regression introduced in commit 03ebebeb ("KVM: x86
      emulator: Leave segment limit and attributs alone in real mode").
      
      The mentioned commit changed the segment descriptors for both real mode
      and VM86 to only update the segment base instead of creating a
      completely new descriptor with limit 0xffff so that unreal mode keeps
      working across a segment register reload.
      
      This leads to an invalid segment descriptor in the eyes of VMX, which
      seems to be okay for real mode because KVM will fix it up before the
      next VM entry or emulate the state, but it doesn't do this if the guest
      is in VM86, so we end up with:
      
        KVM: entry failed, hardware error 0x80000021
      
      Fix this by effectively reverting commit 03ebebeb for VM86 and leaving
      it only in place for real mode, which is where it's really needed.
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      Signed-off-by: NGleb Natapov <gleb@redhat.com>
      f8da94e9
  18. 14 2月, 2013 1 次提交
  19. 27 1月, 2013 1 次提交
  20. 24 1月, 2013 2 次提交