1. 06 6月, 2017 10 次提交
    • E
      target/i386: optimize indirect branches · b4aa2977
      Emilio G. Cota 提交于
      Speed up indirect branches by jumping to the target if it is valid.
      
      Softmmu measurements (see later commit for user-mode numbers):
      
      Note: baseline (i.e. speedup == 1x) is QEMU v2.9.0.
      
      -                  SPECint06 (test set), x86_64-softmmu (Ubuntu 16.04 guest). Host: Intel i7-4790K @ 4.00GHz
      
       2.4x +-+--------------------------------------------------------------------------------------------------------------+-+
            |                                                                                                                  |
            |   cross                                                                                                          |
       2.2x +cross+jr..........................................................................+++...........................+-+
            |                                                                                   |                              |
            |                                                                               +++ |                              |
         2x +-+..............................................................................|..|............................+-+
            |                                                                                |  |                              |
            |                                                                                |  |                              |
       1.8x +-+..............................................................................|####...........................+-+
            |                                                                                |# |#                             |
            |                                                                              **** |#                             |
       1.6x +-+............................................................................*.|*.|#...........................+-+
            |                                                                              * |* |#                             |
            |                                                                              * |* |#                             |
       1.4x +-+.......................................................................+++..*.|*.|#...........................+-+
            |                                                      ++++++             #### * |*++#             +++             |
            |                        +++                            |  |              #++# *++*  #          +++ |              |
       1.2x +-+......................###.....####....+++............|..|...........****..#.*..*..#....####...|.###.....####..+-+
            |        +++          **** #  ****  #    ####          ***###          *++*  # *  *  #    #++#  ****|#  +++#++#    |
            |    ****###     +++  *++* #  *++*  #  ++#  #    ####  *|* |#     +++  *  *  # *  *  #  ***  #  *| *|#  ****  #    |
         1x +-++-*++*++#++***###++*++*+#++*+-*++#+****++#++***++#+-*+*++#-+****##++*++*-+#+*++*-+#++*+*++#++*-+*+#++*++*++#-++-+
            |    *  *  #  * *  #  *  * #  *  *  # *  *  #  * *  #  *|* |#  *++* #  *  *  # *  *  #  * *  #  *  * #  *  *  #    |
            |    *  *  #  * *  #  *  * #  *  *  # *  *  #  * *  #  *+*++#  *  * #  *  *  # *  *  #  * *  #  *  * #  *  *  #    |
       0.8x +-+--****###--***###--****##--****###-****###--***###--***###--****##--****###-****###--***###--****##--****###--+-+
               astar   bzip2      gcc   gobmk h264ref   hmmlibquantum      mcf omnetpperlbench   sjengxalancbmk   hmean
        png: http://imgur.com/DU36YFU
      
      NB. 'cross' represents the previous commit.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-11-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      b4aa2977
    • E
      target/i386: optimize cross-page direct jumps in softmmu · fe620895
      Emilio G. Cota 提交于
      Instead of unconditionally exiting to the exec loop, use the
      gen_jr helper to jump to the target if it is valid.
      
      Perf impact: see next commit's log.
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-10-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      fe620895
    • E
      target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr · 1ebb1af1
      Emilio G. Cota 提交于
      This helper will be used by subsequent changes.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-9-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      1ebb1af1
    • E
      target/arm: optimize indirect branches · 8a6b28c7
      Emilio G. Cota 提交于
      Speed up indirect branches by jumping to the target if it is valid.
      
      Softmmu measurements (see later commit for user-mode results):
      
      Note: baseline (i.e. speedup == 1x) is QEMU v2.9.0.
      
      - Impact on Boot time
      
      | setup  | ARM debian jessie boot+shutdown time | stddev |
      |--------+--------------------------------------+--------|
      | v2.9.0 |                                 8.84 |   0.07 |
      | +cross |                                 8.85 |   0.03 |
      | +jr    |                                 8.83 |   0.06 |
      
      -                            NBench, arm-softmmu (debian jessie guest). Host: Intel i7-4790K @ 4.00GHz
      
        1.3x +-+-------------------------------------------------------------------------------------------------------------+-+
             |                                                                                                                 |
             |   cross                                                          ####                                           |
       1.25x +cross+jr..........................................................#++#.........................................+-+
             |                                                        ####      #  #                                           |
             |                                                     +++#  #      #  #                                           |
             |                                      +++            ****  #      #  #                                           |
        1.2x +-+...................................####............*..*..#......#..#.........................................+-+
             |                                  ****  #            *  *  #      #  #     ####                                  |
             |                                  *  *  #            *  *  #      #  #     #  #                                  |
       1.15x +-+................................*..*..#............*..*..#......#..#.....#..#................................+-+
             |                                  *  *  #            *  *  #      #  #     #  #                                  |
             |                                  *  *  #      ####  *  *  #      #  #     #  #                                  |
             |                                  *  *  #      #  #  *  *  #      #  #     #  #                         ####     |
        1.1x +-+................................*..*..#......#..#..*..*..#......#..#.....#..#.........................#..#...+-+
             |                                  *  *  #      #  #  *  *  #      #  #     #  #                         #  #     |
             |                                  *  *  #      #  #  *  *  #      #  #     #  #                         #  #     |
       1.05x +-+..........................####..*..*..#......#..#..*..*..#......#..#.....#..#......+++............*****..#...+-+
             |                        *****  #  *  *  #      #  #  *  *  #  *****  #     #  #   +++ |    ****###  *   *  #     |
             |                        *+++*  #  *  *  #      #  #  *  *  #  *+++*  #  ****  #  *****###  *  *  #  *   *  #     |
             |     *****###  +++####  *   *  #  *  *  #  *****  #  *  *  #  *   *  #  *  *  #  * | *++#  *  *  #  *   *  #     |
          1x +-++-+*+++*-+#++****++#++*+-+*++#+-*++*++#-+*+++*-+#++*++*++#++*+-+*++#+-*++*++#-+*+++*-+#++*++*++#++*+-+*++#+-++-+
             |     *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
             |     *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #  *  *  #  *   *  #     |
       0.95x +-+---*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###---+-+
             ASSIGNMENT BITFIELD   FOURFP EMULATION   HUFFMAN   LU DECOMPOSITIONEURAL NNUMERIC SOSTRING SORT     hmean
        png: http://imgur.com/eOLmZNR
      
      NB. 'cross' represents the previous commit.
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-8-git-send-email-cota@braap.org>
      [rth: Replace gen_jr global variable with DISAS_EXIT state.]
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      8a6b28c7
    • E
      target/arm: optimize cross-page direct jumps in softmmu · 7ad55b4f
      Emilio G. Cota 提交于
      Instead of unconditionally exiting to the exec loop, use the
      lookup_and_goto_ptr helper to jump to the target if it is valid.
      
      Perf impact: see next commit's log.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-7-git-send-email-cota@braap.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      7ad55b4f
    • E
      tcg/i386: implement goto_ptr · 5cb4ef80
      Emilio G. Cota 提交于
      Suggested-by: NRichard Henderson <rth@twiddle.net>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Signed-off-by: NEmilio G. Cota <cota@braap.org>
      Message-Id: <1493263764-18657-6-git-send-email-cota@braap.org>
      [rth: Reuse goto_ptr epilogue for exit_tb 0.]
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      5cb4ef80
    • E
      tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr · cedbcb01
      Emilio G. Cota 提交于
      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: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NEmilio 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: NRichard Henderson <rth@twiddle.net>
      cedbcb01
    • R
      qemu/atomic: Loosen restrictions for 64-bit ILP32 hosts · 374aae65
      Richard Henderson 提交于
      We need to coordinate with the TCG_OVERSIZED_GUEST test in cputlb.c,
      and allow 64-bit atomics even though sizeof(void *) == 4.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      374aae65
    • R
      tcg/sparc: Use the proper compilation flags for 32-bit · f1079bb8
      Richard Henderson 提交于
      We have required a v9 cpu since 9b9c37c3.
      However, the flags we were using did not reliably enable v8plus, which
      meant that the compiler didn't know it could inline 64-bit atomics.
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      f1079bb8
    • R
      target/nios2: Fix 64-bit ilp32 compilation · 1639a965
      Richard Henderson 提交于
      Avoid a "cast from pointer to integer of different size" warning
      by using the proper host type.
      Reviewed-by: NPhilippe Mathieu-Daudé <f4bug@amsat.org>
      Reviewed-by: NAlex Bennée <alex.bennee@linaro.org>
      Signed-off-by: NRichard Henderson <rth@twiddle.net>
      1639a965
  2. 05 6月, 2017 3 次提交
    • P
      Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging · 199e19ee
      Peter Maydell 提交于
      trivial patches for 2017-06-05
      
      # gpg: Signature made Mon 05 Jun 2017 15:23:46 BST
      # gpg:                using RSA key 0x701B4F6B1A693E59
      # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>"
      # gpg:                 aka "Michael Tokarev <mjt@corpit.ru>"
      # gpg:                 aka "Michael Tokarev <mjt@debian.org>"
      # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D  4324 457C E0A0 8044 65C5
      #      Subkey fingerprint: 7B73 BAD6 8BE7 A2C2 8931  4B22 701B 4F6B 1A69 3E59
      
      * remotes/mjt/tags/trivial-patches-fetch: (21 commits)
        hw/core: nmi.c can be compiled as common-obj nowadays
        dump: fix memory_mapping_filter leak
        ide-test: check return of fwrite
        help: Add newline to end of thread option help text
        qemu-ga: remove useless allocation
        scsi/lsi53c895a: Remove unused lsi_mem_*() return value
        qapi: Fix some QMP documentation regressions
        hw/mips: add missing include
        register: display register prefix (name) since it is available
        hw/sparc: use ARRAY_SIZE() macro
        hw/xtensa: sim: use g_string/g_new
        target/arm: add data cache invalidation cp15 instruction to cortex-r5
        block: Correct documentation for BLOCK_WRITE_THRESHOLD
        trivial: Remove unneeded ifndef in memory.h
        altera_timer: fix incorrect memset
        configure: Detect native NetBSD curses(3)
        tests/libqtest: Print error instead of aborting when env variable is missing
        docs/qdev-device-use.txt: update section Default Devices
        docs qemu-doc: Avoid ide-drive, it's deprecated
        qemu-doc: Add hyperlinks to further license information
        ...
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      199e19ee
    • T
      hw/core: nmi.c can be compiled as common-obj nowadays · 03e947f9
      Thomas Huth 提交于
      The target-specific code in nmi.c has been removed with this commit:
      
      	commit f7e981f2
      	nmi: remove x86 specific nmi handling
      Signed-off-by: NThomas Huth <thuth@redhat.com>
      Reviewed-by: NJuan Quintela <quintela@redhat.com>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      03e947f9
    • P
      Merge remote-tracking branch 'remotes/elmarco/tags/chrfe-pull-request' into staging · cb8b8ef4
      Peter Maydell 提交于
      # gpg: Signature made Fri 02 Jun 2017 20:12:48 BST
      # gpg:                using RSA key 0xDAE8E10975969CE5
      # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>"
      # gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>"
      # gpg: WARNING: This key is not certified with sufficiently trusted signatures!
      # gpg:          It is not certain that the signature belongs to the owner.
      # Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5
      
      * remotes/elmarco/tags/chrfe-pull-request:
        char: move char devices to chardev/
        char: make chr_fe_deinit() optionaly delete backend
        char: rename functions that are not part of fe
        char: move CharBackend handling in char-fe unit
        char: generalize qemu_chr_write_all()
        be-hci: use backend functions
        chardev: serial & parallel declaration to own headers
        chardev: move headers to include/chardev
        Remove/replace sysemu/char.h inclusion
        char-win: close file handle except with console
        char-win: rename hcom->file
        char-win: rename win_chr_init/poll win_chr_serial_init/poll
        char-win: remove WinChardev.len
        char-win: simplify win_chr_read()
        char: cast ARRAY_SIZE() as signed to silent warning on empty array
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      cb8b8ef4
  3. 04 6月, 2017 20 次提交
  4. 03 6月, 2017 1 次提交
    • P
      Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging · c6e84fbd
      Peter Maydell 提交于
      virtio, vhost: fixes, features
      
      IOTLB support in vhost-user.
      A bunch of fixes all over the place.
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      
      # gpg: Signature made Fri 02 Jun 2017 17:33:25 BST
      # gpg:                using RSA key 0x281F0DB8D28D5469
      # gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>"
      # gpg:                 aka "Michael S. Tsirkin <mst@redhat.com>"
      # Primary key fingerprint: 0270 606B 6F3C DF3D 0B17  0970 C350 3912 AFBE 8E67
      #      Subkey fingerprint: 5D09 FD08 71C8 F85B 94CA  8A0D 281F 0DB8 D28D 5469
      
      * remotes/mst/tags/for_upstream:
        spec/vhost-user spec: Add IOMMU support
        vhost-user: add slave-req-fd support
        vhost-user: add vhost_user to hold the chr
        vhost: rework IOTLB messaging
        vhost: propagate errors in vhost_device_iotlb_miss()
        virtio-serial: fix segfault on disconnect
        virtio: add virtqueue_alloc_element tracepoint
        virtio-serial-bus: Unset hotplug handler when unrealize
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      c6e84fbd
  5. 02 6月, 2017 6 次提交