1. 20 3月, 2007 9 次提交
  2. 19 3月, 2007 27 次提交
  3. 18 3月, 2007 4 次提交
    • A
      KVM: MMU: Fix host memory corruption on i386 with >= 4GB ram · 27aba766
      Avi Kivity 提交于
      PAGE_MASK is an unsigned long, so using it to mask physical addresses on
      i386 (which are 64-bit wide) leads to truncation.  This can result in
      page->private of unrelated memory pages being modified, with disasterous
      results.
      
      Fix by not using PAGE_MASK for physical addresses; instead calculate
      the correct value directly from PAGE_SIZE.  Also fix a similar BUG_ON().
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      27aba766
    • A
      KVM: MMU: Fix guest writes to nonpae pde · ac1b714e
      Avi Kivity 提交于
      KVM shadow page tables are always in pae mode, regardless of the guest
      setting.  This means that a guest pde (mapping 4MB of memory) is mapped
      to two shadow pdes (mapping 2MB each).
      
      When the guest writes to a pte or pde, we intercept the write and emulate it.
      We also remove any shadowed mappings corresponding to the write.  Since the
      mmu did not account for the doubling in the number of pdes, it removed the
      wrong entry, resulting in a mismatch between shadow page tables and guest
      page tables, followed shortly by guest memory corruption.
      
      This patch fixes the problem by detecting the special case of writing to
      a non-pae pde and adjusting the address and number of shadow pdes zapped
      accordingly.
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      ac1b714e
    • A
      KVM: Fix guest sysenter on vmx · f5b42c33
      Avi Kivity 提交于
      The vmx code currently treats the guest's sysenter support msrs as 32-bit
      values, which breaks 32-bit compat mode userspace on 64-bit guests.  Fix by
      using the native word width of the machine.
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      f5b42c33
    • A
      KVM: Unset kvm_arch_ops if arch module loading failed · ca45aaae
      Avi Kivity 提交于
      Otherwise, the core module thinks the arch module is loaded, and won't
      let you reload it after you've fixed the bug.
      Signed-off-by: NAvi Kivity <avi@qumranet.com>
      ca45aaae