1. 06 Oct, 2014 1 commit
  2. 12 Aug, 2014 1 commit
    • Alex Bennée's avatar
      trace: add some tcg tracing support · 6db8b538
      Alex Bennée authored
      This adds a couple of tcg specific trace-events which are useful for
      tracing execution though tcg generated blocks. It's been tested with
      lttng user space tracing but is generic enough for all systems. The tcg
      events are:
      
        * translate_block - when a subject block is translated
        * exec_tb - when a translated block is entered
        * exec_tb_exit - when we exit the translated code
        * exec_tb_nocache - special case translations
      
      Of course we can only trace the entrance to the first block of a chain
      as each block will jump directly to the next when it can. See the -d
      nochain patch to allow more complete tracing at the expense of
      performance.
      Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      6db8b538
  3. 24 Jun, 2014 1 commit
  4. 19 Jun, 2014 1 commit
  5. 24 May, 2014 2 commits
  6. 12 May, 2014 1 commit
  7. 04 Apr, 2014 1 commit
    • Andrei Warkentin's avatar
      page_check_range: don't bail out early after unprotecting page · cd7ccc83
      Andrei Warkentin authored
      When checking a page range, if we found that a page was
      made read-only by QEMU because it contained translated code,
      we were incorrectly returning immediately after unprotecting
      that page, rather than continuing to check the entire range,
      so we might fail to unprotect pages later in the range, or
      might incorrectly return a "success" result even if later
      pages were not writable.
      
      In particular, this could cause segfaults in a case where
      signals are delivered back to back on a target architecture
      which uses trampoline code in the stack frame (as AArch64
      currently does). The second signal causes a segfault because
      the frame cannot be written to (it was protected because
      we translated and executed the restorer trampoline, and the
      unprotect logic did not unprotect the whole range).
      
      Signed-off-by: Andrei Warkentin <andrey.warkentin@gmail.com
      [PMM: expanded commit message a bit]
      Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
      Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      cd7ccc83
  8. 13 Mar, 2014 13 commits
  9. 11 Feb, 2014 1 commit
  10. 17 Jan, 2014 1 commit
  11. 23 Dec, 2013 1 commit
  12. 10 Dec, 2013 1 commit
    • Paolo Bonzini's avatar
      split definitions for exec.c and translate-all.c radix trees · 03f49957
      Paolo Bonzini authored
      The exec.c and translate-all.c radix trees are quite different, and
      the exec.c one in particular is not limited to the CPU---it can be
      used also by devices that do DMA, and in that case the address space
      is not limited to TARGET_PHYS_ADDR_SPACE_BITS bits.
      
      We want to make exec.c's radix trees 64-bit wide.  As a first step,
      stop sharing the constants between exec.c and translate-all.c.
      exec.c gets P_L2_* constants, translate-all.c gets V_L2_*, for
      consistency with the existing V_L1_* symbols.  Though actually
      in the softmmu case translate-all.c is also indexed by physical
      addresses...
      
      This patch has no semantic change.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      03f49957
  13. 10 Oct, 2013 1 commit
  14. 20 Sep, 2013 1 commit
    • Stefan Weil's avatar
      translate-all: Fix formatting of dump output · 227b8175
      Stefan Weil authored
      The page dump writes a table with 3 abi_ulong values in each row.
      These values take 8 or 16 characters (depending on sizeof abi_ulong).
      
      Fix the table headings to be aligned with the table columns.
      
      old:
      start    end      size     prot
      0000000120000000-000000012021e000 000000000021e000 rwx
      0000004000000000-0000004000002000 0000000000002000 ---
      0000004000002000-0000004000802000 0000000000800000 rw-
      
      new:
      start            end              size             prot
      0000000120000000-000000012021e000 000000000021e000 rwx
      0000004000000000-0000004000002000 0000000000002000 ---
      0000004000002000-0000004000802000 0000000000800000 rw-
      Signed-off-by: default avatarStefan Weil <sw@weilnetz.de>
      Signed-off-by: default avatarMichael Tokarev <mjt@tls.msk.ru>
      227b8175
  15. 03 Sep, 2013 1 commit
  16. 23 Jul, 2013 1 commit
    • Alexander Graf's avatar
      linux-user: Unlock mmap_lock when resuming guest from page_unprotect · d02532f0
      Alexander Graf authored
      The page_unprotect() function is running everything locked. Before every
      potential exit path of the function mmap_unlock() gets called to make sure
      we don't leak the lock.
      
      However, the function calls tb_invalidate_phys_page() which again can
      exit a signal through longjmp, leaving our mmap_unlock() attempts in vain.
      
      Add a hint to tb_invalidate_phys_page() that we need to unlock before we
      can leave back into guest context, so that we don't leak the lock.
      
      This fixes 16-bit i386 wine programs running in linux-user for me.
      Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
      Signed-off-by: default avatarRiku Voipio <riku.voipio@linaro.org>
      d02532f0
  17. 09 Jul, 2013 2 commits
  18. 20 Jun, 2013 1 commit
  19. 12 Jun, 2013 1 commit
  20. 29 May, 2013 1 commit
    • Paolo Bonzini's avatar
      memory: add address_space_translate · 149f54b5
      Paolo Bonzini authored
      Using phys_page_find to translate an AddressSpace to a MemoryRegionSection
      is unwieldy.  It requires to pass the page index rather than the address,
      and later memory_region_section_addr has to be called.  Replace
      memory_region_section_addr with a function that does all of it: call
      phys_page_find, compute the offset within the region, and check how
      big the current mapping is.  This way, a large flat region can be written
      with a single lookup rather than a page at a time.
      
      address_space_translate will also provide a single point where IOMMU
      forwarding is implemented.
      Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      149f54b5
  21. 24 May, 2013 1 commit
  22. 18 May, 2013 1 commit
  23. 26 Apr, 2013 1 commit
    • Alexander Graf's avatar
      PPC: Fix compile with profiling enabled · c8ff5daa
      Alexander Graf authored
      When using profiling, we rely on profile_getclock() being available
      at our disposal. Somehow that function got moved from an indirect
      include we used to have in translate-init.c, so that we were now
      left not properly compiling anymore.
      
      Add an explicit include to timer.h which defines profile_getclock,
      so that we can compile again.
      Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
      c8ff5daa
  24. 22 Apr, 2013 1 commit
  25. 15 Apr, 2013 1 commit
  26. 22 Mar, 2013 1 commit