1. 27 12月, 2011 7 次提交
  2. 26 9月, 2011 1 次提交
    • S
      KVM: Intelligent device lookup on I/O bus · 743eeb0b
      Sasha Levin 提交于
      Currently the method of dealing with an IO operation on a bus (PIO/MMIO)
      is to call the read or write callback for each device registered
      on the bus until we find a device which handles it.
      
      Since the number of devices on a bus can be significant due to ioeventfds
      and coalesced MMIO zones, this leads to a lot of overhead on each IO
      operation.
      
      Instead of registering devices, we now register ranges which points to
      a device. Lookup is done using an efficient bsearch instead of a linear
      search.
      
      Performance test was conducted by comparing exit count per second with
      200 ioeventfds created on one byte and the guest is trying to access a
      different byte continuously (triggering usermode exits).
      Before the patch the guest has achieved 259k exits per second, after the
      patch the guest does 274k exits per second.
      
      Cc: Avi Kivity <avi@redhat.com>
      Cc: Marcelo Tosatti <mtosatti@redhat.com>
      Signed-off-by: NSasha Levin <levinsasha928@gmail.com>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      743eeb0b
  3. 24 7月, 2011 2 次提交
  4. 12 7月, 2011 4 次提交
  5. 06 6月, 2011 1 次提交
    • M
      KVM: Initialize kvm before registering the mmu notifier · 74b5c5bf
      Mike Waychison 提交于
      It doesn't make sense to ever see a half-initialized kvm structure on
      mmu notifier callbacks.  Previously, 85722cda changed the ordering to
      ensure that the mmu_lock was initialized before mmu notifier
      registration, but there is still a race where the mmu notifier could
      come in and try accessing other portions of struct kvm before they are
      intialized.
      
      Solve this by moving the mmu notifier registration to occur after the
      structure is completely initialized.
      
      Google-Bug-Id: 452199
      Signed-off-by: NMike Waychison <mikew@google.com>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      74b5c5bf
  6. 26 5月, 2011 1 次提交
  7. 22 5月, 2011 2 次提交
    • O
      KVM: Fix kvm mmu_notifier initialization order · 85722cda
      OGAWA Hirofumi 提交于
      Like the following, mmu_notifier can be called after registering
      immediately. So, kvm have to initialize kvm->mmu_lock before it.
      
      BUG: spinlock bad magic on CPU#0, kswapd0/342
       lock: ffff8800af8c4000, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
      Pid: 342, comm: kswapd0 Not tainted 2.6.39-rc5+ #1
      Call Trace:
       [<ffffffff8118ce61>] spin_bug+0x9c/0xa3
       [<ffffffff8118ce91>] do_raw_spin_lock+0x29/0x13c
       [<ffffffff81024923>] ? flush_tlb_others_ipi+0xaf/0xfd
       [<ffffffff812e22f3>] _raw_spin_lock+0x9/0xb
       [<ffffffffa0582325>] kvm_mmu_notifier_clear_flush_young+0x2c/0x66 [kvm]
       [<ffffffff810d3ff3>] __mmu_notifier_clear_flush_young+0x2b/0x57
       [<ffffffff810c8761>] page_referenced_one+0x88/0xea
       [<ffffffff810c89bf>] page_referenced+0x1fc/0x256
       [<ffffffff810b2771>] shrink_page_list+0x187/0x53a
       [<ffffffff810b2ed7>] shrink_inactive_list+0x1e0/0x33d
       [<ffffffff810acf95>] ? determine_dirtyable_memory+0x15/0x27
       [<ffffffff812e90ee>] ? call_function_single_interrupt+0xe/0x20
       [<ffffffff810b3356>] shrink_zone+0x322/0x3de
       [<ffffffff810a9587>] ? zone_watermark_ok_safe+0xe2/0xf1
       [<ffffffff810b3928>] kswapd+0x516/0x818
       [<ffffffff810b3412>] ? shrink_zone+0x3de/0x3de
       [<ffffffff81053d17>] kthread+0x7d/0x85
       [<ffffffff812e9394>] kernel_thread_helper+0x4/0x10
       [<ffffffff81053c9a>] ? __init_kthread_worker+0x37/0x37
       [<ffffffff812e9390>] ? gs_change+0xb/0xb
      Signed-off-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      85722cda
    • T
      KVM: Validate userspace_addr of memslot when registered · fa3d315a
      Takuya Yoshikawa 提交于
      This way, we can avoid checking the user space address many times when
      we read the guest memory.
      
      Although we can do the same for write if we check which slots are
      writable, we do not care write now: reading the guest memory happens
      more often than writing.
      
      [avi: change VERIFY_READ to VERIFY_WRITE]
      Signed-off-by: NTakuya Yoshikawa <yoshikawa.takuya@oss.ntt.co.jp>
      Signed-off-by: NAvi Kivity <avi@redhat.com>
      fa3d315a
  8. 11 5月, 2011 1 次提交
  9. 06 4月, 2011 1 次提交
  10. 24 3月, 2011 3 次提交
  11. 18 3月, 2011 8 次提交
  12. 14 1月, 2011 3 次提交
  13. 12 1月, 2011 6 次提交