1. 02 8月, 2010 36 次提交
  2. 01 8月, 2010 4 次提交
    • J
      KVM: Remove unnecessary divide operations · 82855413
      Joerg Roedel 提交于
      This patch converts unnecessary divide and modulo operations
      in the KVM large page related code into logical operations.
      This allows to convert gfn_t to u64 while not breaking 32
      bit builds.
      Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      82855413
    • S
      KVM: Fix IOMMU memslot reference warning · 95c87e2b
      Sheng Yang 提交于
      This patch fixes the following warning.
      
      ===================================================
      [ INFO: suspicious rcu_dereference_check() usage. ]
      ---------------------------------------------------
      include/linux/kvm_host.h:259 invoked rcu_dereference_check() without
      protection!
      
      other info that might help us debug this:
      
      rcu_scheduler_active = 1, debug_locks = 0
      no locks held by qemu-system-x86/29679.
      
      stack backtrace:
      Pid: 29679, comm: qemu-system-x86 Not tainted 2.6.35-rc3+ #200
      Call Trace:
       [<ffffffff810a224e>] lockdep_rcu_dereference+0xa8/0xb1
       [<ffffffffa018a06f>] kvm_iommu_unmap_memslots+0xc9/0xde [kvm]
       [<ffffffffa018a0c4>] kvm_iommu_unmap_guest+0x40/0x4e [kvm]
       [<ffffffffa018f772>] kvm_arch_destroy_vm+0x1a/0x186 [kvm]
       [<ffffffffa01800d0>] kvm_put_kvm+0x110/0x167 [kvm]
       [<ffffffffa0180ecc>] kvm_vcpu_release+0x18/0x1c [kvm]
       [<ffffffff81156f5d>] fput+0x22a/0x3a0
       [<ffffffff81152288>] filp_close+0xb4/0xcd
       [<ffffffff8106599f>] put_files_struct+0x1b7/0x36b
       [<ffffffff81065830>] ? put_files_struct+0x48/0x36b
       [<ffffffff8131ee59>] ? do_raw_spin_unlock+0x118/0x160
       [<ffffffff81065bc0>] exit_files+0x6d/0x75
       [<ffffffff81068348>] do_exit+0x47d/0xc60
       [<ffffffff8177e7b5>] ? _raw_spin_unlock_irq+0x30/0x36
       [<ffffffff81068bfa>] do_group_exit+0xcf/0x134
       [<ffffffff81080790>] get_signal_to_deliver+0x732/0x81d
       [<ffffffff81095996>] ? cpu_clock+0x4e/0x60
       [<ffffffff81002082>] do_notify_resume+0x117/0xc43
       [<ffffffff810a2fa3>] ? trace_hardirqs_on+0xd/0xf
       [<ffffffff81080d79>] ? sys_rt_sigtimedwait+0x2b5/0x3bf
       [<ffffffff8177d9f2>] ? trace_hardirqs_off_thunk+0x3a/0x3c
       [<ffffffff81003221>] ? sysret_signal+0x5/0x3d
       [<ffffffff8100343b>] int_signal+0x12/0x17
      Signed-off-by: NSheng Yang <sheng@linux.intel.com>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      95c87e2b
    • A
      KVM: PPC: Make use of hash based Shadow MMU · fef093be
      Alexander Graf 提交于
      We just introduced generic functions to handle shadow pages on PPC.
      This patch makes the respective backends make use of them, getting
      rid of a lot of duplicate code along the way.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      fef093be
    • A
      KVM: PPC: Add generic hpte management functions · 7741909b
      Alexander Graf 提交于
      Currently the shadow paging code keeps an array of entries it knows about.
      Whenever the guest invalidates an entry, we loop through that entry,
      trying to invalidate matching parts.
      
      While this is a really simple implementation, it is probably the most
      ineffective one possible. So instead, let's keep an array of lists around
      that are indexed by a hash. This way each PTE can be added by 4 list_add,
      removed by 4 list_del invocations and the search only needs to loop through
      entries that share the same hash.
      
      This patch implements said lookup and exports generic functions that both
      the 32-bit and 64-bit backend can use.
      Signed-off-by: NAlexander Graf <agraf@suse.de>
      Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
      7741909b