1. 08 11月, 2007 1 次提交
  2. 22 10月, 2007 4 次提交
  3. 13 10月, 2007 25 次提交
  4. 07 8月, 2007 1 次提交
  5. 25 7月, 2007 1 次提交
  6. 21 7月, 2007 1 次提交
  7. 16 7月, 2007 5 次提交
  8. 03 5月, 2007 2 次提交
    • A
      KVM: Allow passing 64-bit values to the emulated read/write API · 4c690a1e
      Avi Kivity 提交于
      This simplifies the API somewhat (by eliminating the special-case
      cmpxchg8b on i386).
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      4c690a1e
    • A
      KVM: x86 emulator: fix bit string operations operand size · df513e2c
      Avi Kivity 提交于
      On x86, bit operations operate on a string of bits that can reside in
      multiple words.  For example, 'btsl %eax, (blah)' will touch the word
      at blah+4 if %eax is between 32 and 63.
      
      The x86 emulator compensates for that by advancing the operand address
      by (bit offset / BITS_PER_LONG) and truncating the bit offset to the
      range (0..BITS_PER_LONG-1).  This has a side effect of forcing the operand
      size to 8 bytes on 64-bit hosts.
      
      Now, a 32-bit guest goes and fork()s a process.  It write protects a stack
      page at 0xbffff000 using the 'btr' instruction, at offset 0xffc in the page
      table, with bit offset 1 (for the write permission bit).
      
      The emulator now forces the operand size to 8 bytes as previously described,
      and an innocent page table update turns into a cross-page-boundary write,
      which is assumed by the mmu code not to be a page table, so it doesn't
      actually clear the corresponding shadow page table entry.  The guest and
      host permissions are out of sync and guest memory is corrupted soon
      afterwards, leading to guest failure.
      
      Fix by not using BITS_PER_LONG as the word size; instead use the actual
      operand size, so we get a 32-bit write in that case.
      
      Note we still have to teach the mmu to handle cross-page-boundary writes
      to guest page table; but for now this allows Damn Small Linux 0.4 (2.4.20)
      to boot.
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      df513e2c