1. 26 7月, 2012 1 次提交
  2. 23 7月, 2012 3 次提交
  3. 21 7月, 2012 2 次提交
  4. 20 7月, 2012 3 次提交
  5. 19 7月, 2012 1 次提交
  6. 11 7月, 2012 1 次提交
  7. 07 7月, 2012 1 次提交
  8. 04 7月, 2012 1 次提交
  9. 03 7月, 2012 2 次提交
  10. 18 6月, 2012 1 次提交
  11. 16 6月, 2012 1 次提交
  12. 05 6月, 2012 3 次提交
  13. 01 5月, 2012 1 次提交
  14. 24 4月, 2012 1 次提交
  15. 19 4月, 2012 1 次提交
    • A
      KVM: lock slots_lock around device assignment · 21a1416a
      Alex Williamson 提交于
      As pointed out by Jason Baron, when assigning a device to a guest
      we first set the iommu domain pointer, which enables mapping
      and unmapping of memory slots to the iommu.  This leaves a window
      where this path is enabled, but we haven't synchronized the iommu
      mappings to the existing memory slots.  Thus a slot being removed
      at that point could send us down unexpected code paths removing
      non-existent pinnings and iommu mappings.  Take the slots_lock
      around creating the iommu domain and initial mappings as well as
      around iommu teardown to avoid this race.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      21a1416a
  16. 17 4月, 2012 1 次提交
    • M
      KVM: dont clear TMR on EOI · a0c9a822
      Michael S. Tsirkin 提交于
      Intel spec says that TMR needs to be set/cleared
      when IRR is set, but kvm also clears it on  EOI.
      
      I did some tests on a real (AMD based) system,
      and I see same TMR values both before
      and after EOI, so I think it's a minor bug in kvm.
      
      This patch fixes TMR to be set/cleared on IRR set
      only as per spec.
      
      And now that we don't clear TMR, we can save
      an atomic read of TMR on EOI that's not propagated
      to ioapic, by checking whether ioapic needs
      a specific vector first and calculating
      the mode afterwards.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      a0c9a822
  17. 12 4月, 2012 1 次提交
    • A
      KVM: unmap pages from the iommu when slots are removed · 32f6daad
      Alex Williamson 提交于
      We've been adding new mappings, but not destroying old mappings.
      This can lead to a page leak as pages are pinned using
      get_user_pages, but only unpinned with put_page if they still
      exist in the memslots list on vm shutdown.  A memslot that is
      destroyed while an iommu domain is enabled for the guest will
      therefore result in an elevated page reference count that is
      never cleared.
      
      Additionally, without this fix, the iommu is only programmed
      with the first translation for a gpa.  This can result in
      peer-to-peer errors if a mapping is destroyed and replaced by a
      new mapping at the same gpa as the iommu will still be pointing
      to the original, pinned memory address.
      Signed-off-by: NAlex Williamson <alex.williamson@redhat.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      32f6daad
  18. 08 4月, 2012 4 次提交
  19. 20 3月, 2012 1 次提交
  20. 08 3月, 2012 8 次提交
  21. 05 3月, 2012 2 次提交
    • P
      KVM: Move gfn_to_memslot() to kvm_host.h · 9d4cba7f
      Paul Mackerras 提交于
      This moves __gfn_to_memslot() and search_memslots() from kvm_main.c to
      kvm_host.h to reduce the code duplication caused by the need for
      non-modular code in arch/powerpc/kvm/book3s_hv_rm_mmu.c to call
      gfn_to_memslot() in real mode.
      
      Rather than putting gfn_to_memslot() itself in a header, which would
      lead to increased code size, this puts __gfn_to_memslot() in a header.
      Then, the non-modular uses of gfn_to_memslot() are changed to call
      __gfn_to_memslot() instead.  This way there is only one place in the
      source code that needs to be changed should the gfn_to_memslot()
      implementation need to be modified.
      
      On powerpc, the Book3S HV style of KVM has code that is called from
      real mode which needs to call gfn_to_memslot() and thus needs this.
      (Module code is allocated in the vmalloc region, which can't be
      accessed in real mode.)
      
      With this, we can remove builtin_gfn_to_memslot() from book3s_hv_rm_mmu.c.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      Acked-by: NAvi Kivity <avi@redhat.com>
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      9d4cba7f
    • M
      KVM: fix error handling for out of range irq · b93a3553
      Michael S. Tsirkin 提交于
      find_index_from_host_irq returns 0 on error
      but callers assume < 0 on error. This should
      not matter much: an out of range irq should never happen since
      irq handler was registered with this irq #,
      and even if it does we get a spurious msix irq in guest
      and typically nothing terrible happens.
      
      Still, better to make it consistent.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      b93a3553