1. 24 4月, 2012 1 次提交
  2. 17 4月, 2012 5 次提交
  3. 08 3月, 2012 3 次提交
  4. 05 3月, 2012 3 次提交
  5. 01 2月, 2012 1 次提交
    • S
      KVM: x86: fix missing checks in syscall emulation · c2226fc9
      Stephan Bärwolf 提交于
      On hosts without this patch, 32bit guests will crash (and 64bit guests
      may behave in a wrong way) for example by simply executing following
      nasm-demo-application:
      
          [bits 32]
          global _start
          SECTION .text
          _start: syscall
      
      (I tested it with winxp and linux - both always crashed)
      
          Disassembly of section .text:
      
          00000000 <_start>:
             0:   0f 05                   syscall
      
      The reason seems a missing "invalid opcode"-trap (int6) for the
      syscall opcode "0f05", which is not available on Intel CPUs
      within non-longmodes, as also on some AMD CPUs within legacy-mode.
      (depending on CPU vendor, MSR_EFER and cpuid)
      
      Because previous mentioned OSs may not engage corresponding
      syscall target-registers (STAR, LSTAR, CSTAR), they remain
      NULL and (non trapping) syscalls are leading to multiple
      faults and finally crashs.
      
      Depending on the architecture (AMD or Intel) pretended by
      guests, various checks according to vendor's documentation
      are implemented to overcome the current issue and behave
      like the CPUs physical counterparts.
      
      [mtosatti: cleanup/beautify code]
      Signed-off-by: NStephan Baerwolf <stephan.baerwolf@tu-ilmenau.de>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      c2226fc9
  6. 27 12月, 2011 16 次提交
  7. 26 9月, 2011 11 次提交