1. 21 Jan, 2016 1 commit
  2. 11 Sep, 2015 2 commits
  3. 14 Aug, 2015 1 commit
    • Paolo Bonzini's avatar
      exec: drop cpu_can_do_io, just read cpu->can_do_io · 414b15c9
      Paolo Bonzini authored
      After commit 626cf8f4 (icount: set can_do_io outside TB execution,
      2014-12-08), can_do_io is set to 1 if not executing code.  It is
      no longer necessary to make this assumption in cpu_can_do_io.
      It is also possible to remove the use_icount test, simply by
      never setting cpu->can_do_io to 0 unless use_icount is true.
      With these changes cpu_can_do_io boils down to a read of
      Signed-off-by: 's avatarPaolo Bonzini <pbonzini@redhat.com>
  4. 11 Jun, 2015 1 commit
  5. 14 May, 2015 2 commits
  6. 26 Apr, 2015 3 commits
  7. 16 Feb, 2015 1 commit
    • Paolo Bonzini's avatar
      exec: make iotlb RCU-friendly · 9d82b5a7
      Paolo Bonzini authored
      After the previous patch, TLBs will be flushed on every change to
      the memory mapping.  This patch augments that with synchronization
      of the MemoryRegionSections referred to in the iotlb array.
      With this change, it is guaranteed that iotlb_to_region will access
      the correct memory map, even once the TLB will be accessed outside
      the BQL.
      Reviewed-by: 's avatarFam Zheng <famz@redhat.com>
      Signed-off-by: 's avatarPaolo Bonzini <pbonzini@redhat.com>
  8. 03 Nov, 2014 1 commit
  9. 01 Sep, 2014 1 commit
    • Xin Tong's avatar
      implementing victim TLB for QEMU system emulated TLB · 88e89a57
      Xin Tong authored
      QEMU system mode page table walks are expensive. Taken by running QEMU
      qemu-system-x86_64 system mode on Intel PIN , a TLB miss and walking a
      4-level page tables in guest Linux OS takes ~450 X86 instructions on
      QEMU system mode TLB is implemented using a directly-mapped hashtable.
      This structure suffers from conflict misses. Increasing the
      associativity of the TLB may not be the solution to conflict misses as
      all the ways may have to be walked in serial.
      A victim TLB is a TLB used to hold translations evicted from the
      primary TLB upon replacement. The victim TLB lies between the main TLB
      and its refill path. Victim TLB is of greater associativity (fully
      associative in this patch). It takes longer to lookup the victim TLB,
      but its likely better than a full page table walk. The memory
      translation path is changed as follows :
      Before Victim TLB:
      1. Inline TLB lookup
      2. Exit code cache on TLB miss.
      3. Check for unaligned, IO accesses
      4. TLB refill.
      5. Do the memory access.
      6. Return to code cache.
      After Victim TLB:
      1. Inline TLB lookup
      2. Exit code cache on TLB miss.
      3. Check for unaligned, IO accesses
      4. Victim TLB lookup.
      5. If victim TLB misses, TLB refill
      6. Do the memory access.
      7. Return to code cache
      The advantage is that victim TLB can offer more associativity to a
      directly mapped TLB and thus potentially fewer page table walks while
      still keeping the time taken to flush within reasonable limits.
      However, placing a victim TLB before the refill path increase TLB
      refill path as the victim TLB is consulted before the TLB refill. The
      performance results demonstrate that the pros outweigh the cons.
      some performance results taken on SPECINT2006 train
      datasets and kernel boot and qemu configure script on an
      Intel(R) Xeon(R) CPU  E5620  @ 2.40GHz Linux machine are shown in the
      Google Doc link below.
      In summary, victim TLB improves the performance of qemu-system-x86_64 by
      11% on average on SPECINT2006, kernelboot and qemu configscript and with
      highest improvement of in 26% in 456.hmmer. And victim TLB does not result
      in any performance degradation in any of the measured benchmarks. Furthermore,
      the implemented victim TLB is architecture independent and is expected to
      benefit other architectures in QEMU as well.
      Although there are measurement fluctuations, the performance
      improvement is very significant and by no means in the range of
      Signed-off-by: 's avatarXin Tong <trent.tong@gmail.com>
      Message-id: 1407202523-23553-1-git-send-email-trent.tong@gmail.com
      Reviewed-by: 's avatarPeter Maydell <peter.maydell@linaro.org>
      Signed-off-by: 's avatarPeter Maydell <peter.maydell@linaro.org>
  10. 05 Jun, 2014 3 commits
  11. 13 Mar, 2014 4 commits
  12. 11 Feb, 2014 2 commits
  13. 01 Feb, 2014 1 commit
  14. 10 Oct, 2013 2 commits
  15. 02 Sep, 2013 3 commits
  16. 26 Aug, 2013 2 commits
  17. 29 May, 2013 4 commits
  18. 19 Dec, 2012 2 commits
  19. 03 Nov, 2012 1 commit
  20. 23 Oct, 2012 1 commit
    • Avi Kivity's avatar
      Rename target_phys_addr_t to hwaddr · a8170e5e
      Avi Kivity authored
      target_phys_addr_t is unwieldly, violates the C standard (_t suffixes are
      reserved) and its purpose doesn't match the name (most target_phys_addr_t
      addresses are not target specific).  Replace it with a finger-friendly,
      standards conformant hwaddr.
      Outstanding patchsets can be fixed up with the command
        git rebase -i --exec 'find -name "*.[ch]"
                              | xargs s/target_phys_addr_t/hwaddr/g' origin
      Signed-off-by: 's avatarAvi Kivity <avi@redhat.com>
      Signed-off-by: 's avatarAnthony Liguori <aliguori@us.ibm.com>
  21. 15 Sep, 2012 1 commit
  22. 15 Apr, 2012 1 commit