Skip to content
Snippets Groups Projects
  1. Sep 17, 2017
  2. Sep 07, 2017
  3. Jun 19, 2017
    • Emilio G. Cota's avatar
      tcg: allocate TB structs before the corresponding translated code · 6e3b2bfd
      Emilio G. Cota authored
      Allocating an arbitrarily-sized array of tbs results in either
      (a) a lot of memory wasted or (b) unnecessary flushes of the code
      cache when we run out of TB structs in the array.
      
      An obvious solution would be to just malloc a TB struct when needed,
      and keep the TB array as an array of pointers (recall that tb_find_pc()
      needs the TB array to run in O(log n)).
      
      Perhaps a better solution, which is implemented in this patch, is to
      allocate TB's right before the translated code they describe. This
      results in some memory waste due to padding to have code and TBs in
      separate cache lines--for instance, I measured 4.7% of padding in the
      used portion of code_gen_buffer when booting aarch64 Linux on a
      host with 64-byte cache lines. However, it can allow for optimizations
      in some host architectures, since TCG backends could safely assume that
      the TB and the corresponding translated code are very close to each
      other in memory. See this message by rth for a detailed explanation:
      
        https://lists.gnu.org/archive/html/qemu-devel/2017-03/msg05172.html
      
      
        Subject: Re: GSoC 2017 Proposal: TCG performance enhancements
        Message-ID: <1e67644b-4b30-887e-d329-1848e94c9484@twiddle.net>
      
      Suggested-by: default avatarRichard Henderson <rth@twiddle.net>
      Reviewed-by: default avatarPranith Kumar <bobby.prani@gmail.com>
      Signed-off-by: default avatarEmilio G. Cota <cota@braap.org>
      Message-Id: <1496790745-314-3-git-send-email-cota@braap.org>
      [rth: Simplify the arithmetic in tcg_tb_alloc]
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      6e3b2bfd
  4. Jun 05, 2017
    • Emilio G. Cota's avatar
      tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr · cedbcb01
      Emilio G. Cota authored
      
      Instead of exporting goto_ptr directly to TCG frontends, export
      tcg_gen_lookup_and_goto_ptr(), which calls goto_ptr with the pointer
      returned by the lookup_tb_ptr() helper. This is the only use case
      we have for goto_ptr and lookup_tb_ptr, so having this function is
      very convenient. Furthermore, it trivially allows us to avoid calling
      the lookup helper if goto_ptr is not implemented by the backend.
      
      Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: default avatarEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-2-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-3-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-4-git-send-email-cota@braap.org>
      Message-Id: <1493263764-18657-5-git-send-email-cota@braap.org>
      [rth: Squashed 4 related commits.]
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      cedbcb01
  5. Jan 10, 2017
  6. Nov 01, 2016
    • Richard Henderson's avatar
      log: Add locking to large logging blocks · 1ee73216
      Richard Henderson authored
      
      Reuse the existing locking provided by stdio to keep in_asm, cpu,
      op, op_opt, op_ind, and out_asm as contiguous blocks.
      
      While it isn't possible to interleave e.g. in_asm or op_opt logs
      because of the TB lock protecting all code generation, it is
      possible to interleave cpu logs, or to interleave a cpu dump with
      an out_asm dump.
      
      For mingw32, we appear to have no viable solution for this.  The locking
      functions are not properly exported from the system runtime library.
      
      Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarRichard Henderson <rth@twiddle.net>
      1ee73216
  7. Oct 24, 2016
  8. Sep 15, 2016
  9. Aug 05, 2016
  10. Jul 06, 2016
  11. May 19, 2016
  12. Apr 21, 2016
  13. Mar 22, 2016
  14. Feb 23, 2016
  15. Feb 08, 2016
Loading