Eduardo Habkost
1f43571604
pc: Use "min-[x]level" on compat_props
...
Since the automatic cpuid-level code was introduced in commit
c39c0edf9b ("target-i386: Automatically
set level/xlevel/xlevel2 when needed"), the CPU model tables just define
the default CPUID level code (set using "min-level"). Setting
"[x]level" forces CPUID level to a specific value and disable the
automatic-level logic.
But the PC compat code was not updated and the existing "[x]level"
compat properties broke compatibility for people using features that
triggered the auto-level code. To keep previous behavior, we should set
"min-[x]level" instead of "[x]level" on compat_props.
This was not a problem for most cases, because old machine-types don't
have full-cpuid-auto-level enabled. The only common use case it broke
was the CPUID[7] auto-level code, that was already enabled since the
first CPUID[7] feature was introduced (in QEMU 1.4.0).
This causes the regression reported at:
https://bugzilla.redhat.com/show_bug.cgi?id=1454641
Change the PC compat code to use "min-[x]level" instead of "[x]level" on
compat_props, and add new test cases to ensure we don't break this
again.
Reported-by: "Guo, Zhiyi" <zhguo@redhat.com >
Fixes: c39c0edf9b ("target-i386: Automatically set level/xlevel/xlevel2 when needed")
Cc: qemu-stable@nongnu.org
Acked-by: Michael S. Tsirkin <mst@redhat.com >
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com >
2017-06-05 14:59:08 -03:00
Peter Maydell
a0d4aac746
Merge remote-tracking branch 'remotes/rth/tags/pull-tcg-20170605' into staging
...
Queued TCG patches
# gpg: Signature made Mon 05 Jun 2017 17:48:42 BST
# gpg: using RSA key 0xAD1270CC4DD0279B
# gpg: Good signature from "Richard Henderson <rth7680@gmail.com >"
# gpg: aka "Richard Henderson <rth@redhat.com >"
# gpg: aka "Richard Henderson <rth@twiddle.net >"
# Primary key fingerprint: 9CB1 8DDA F8E8 49AD 2AFC 16A4 AD12 70CC 4DD0 279B
* remotes/rth/tags/pull-tcg-20170605: (26 commits)
target/alpha: Use goto_tb for fallthru between TBs
target/alpha: Implement WTINT inline
target/mips: optimize indirect branches
target/mips: optimize cross-page direct jumps in softmmu
target/aarch64: optimize indirect branches
target/aarch64: optimize cross-page direct jumps in softmmu
target/hppa: Use tcg_gen_lookup_and_goto_ptr
target/s390: Use tcg_gen_lookup_and_goto_ptr
tcg/mips: implement goto_ptr
tcg/arm: Implement goto_ptr
tcg/arm: Clarify tcg_out_bx for arm4 host
tcg/s390: Implement goto_ptr
tcg/sparc: Implement goto_ptr
tcg/aarch64: Implement goto_ptr
tcg/ppc: Implement goto_ptr
tb-hash: improve tb_jmp_cache hash function in user mode
target/i386: optimize indirect branches
target/i386: optimize cross-page direct jumps in softmmu
target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr
target/arm: optimize indirect branches
...
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
2017-06-05 18:03:43 +01:00
Richard Henderson
2d826cdc8a
target/alpha: Use goto_tb for fallthru between TBs
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
bec5e2b975
target/alpha: Implement WTINT inline
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Aurelien Jarno
e350d8ca3a
target/mips: optimize indirect branches
...
Cc: Yongbok Kim <yongbok.kim@imgtec.com >
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net >
Message-Id: <20170430145254.25616-4-aurelien@aurel32.net >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Aurelien Jarno
d9a9acde64
target/mips: optimize cross-page direct jumps in softmmu
...
Cc: Yongbok Kim <yongbok.kim@imgtec.com >
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net >
Message-Id: <20170430145254.25616-3-aurelien@aurel32.net >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
e75449a346
target/aarch64: optimize indirect branches
...
Measurements:
[Baseline performance is that before applying this and the previous commit]
- NBench, aarch64-softmmu. Host: Intel i7-4790K @ 4.00GHz
1.7x +-+--------------------------------------------------------------------------------------------------------------+-+
| |
| cross |
1.6x +cross+jr.................................................####...................................................+-+
| #++# |
| # # |
1.5x +-+...................................................*****..#...................................................+-+
| *+++* # |
| * * # |
1.4x +-+...................................................*...*..#...................................................+-+
| * * # |
| ##### * * # |
1.3x +-+................................****+++#...........*...*..#...................................................+-+
| *++* # * * # |
| * * # * * # |
1.2x +-+................................*..*...#...........*...*..#...................................................+-+
| * * # * * # |
| #### * * # * * # |
1.1x +-+.......................+++#..#..*..*...#...........*...*..#...................................................+-+
| **** # * * # * * # ****#### |
| * * # * * # * * # ****### +++#### ****### * * # |
1x +-++-++++++-++++****###++-*++*++#++*++*+-+#++****+++++*+++*++#++*++*-+#++*****++#++****###-++*++*-+#++*+-*+++#+-++-+
| *****### * * # * * # * * # *++*### * * # * * # * * # * *++# * * # * * # |
| * *++# * * # * * # * * # * * # * * # * * # * * # * * # * * # * * # |
0.9x +-+---*****###--****###---****###--****####--****###--*****###--****###--*****###--****###---****###--****####---+-+
ASSIGNMENT BITFIELD FOURFP EMULATION HUFFMAN LU DECOMPOSITIONNEURAL NUMERIC SORSTRING SORT hmean
png: http://imgur.com/qO9ubtk
NB. cross here represents the previous commit.
- SPECint06 (test set), aarch64-linux-user. Host: Intel i7-4790K @ 4.00GHz
1.5x +-+--------------------------------------------------------------------------------------------------------------+-+
| ***** |
| *+++* jr |
| * * |
1.4x +-+.....................................................................*...*.....................+++............+-+
| * * | |
| ***** * * | |
| * * * * ***** |
1.3x +-+....................................*...*............................*...*....................*.|.*...........+-+
| +++ * * * * * | * |
| ***** * * * * *+++* |
| * * * * * * * * |
1.2x +-+....................*...*...........*...*............................*...*...........*****....*...*...........+-+
| ***** * * * * * * * * * * +++ |
| * * * * * * * * * * * * ***** |
| * * * * ***** * * * * * * * * * * |
1.1x +-+...*...*............*...*...*...*...*...*............................*...*....+++....*...*....*...*...*...*...+-+
| * * * * * * * * * * ***** * * * * * * |
| * * * * * * * * ***** * * * * * * * * * * |
| * * ***** * * * * * * * * ****** * * * * * * * * * * |
1x +-++-+*+++*-++*+++*++++*+-+*+++*-++*+++*-++*+++*+++*++-*++++*-++*****+++*++-*+++*++-*+++*+-+*++++*+++*++-*+++*+-++-+
| * * * * * * * * * * * * * * *+++* * * * * * * * * * * |
| * * * * * * * * * * * * * * * * * * * * * * * * * * |
| * * * * * * * * * * * * * * * * * * * * * * * * * * |
0.9x +-+---*****---*****----*****---*****---*****---*****---******---*****---*****---*****---*****----*****---*****---+-+
astar bzip2 gcc gobmk h264ref hmmlibquantum mcf omnetpperlbench sjengxalancbmk hmean
png: http://imgur.com/3Dp4vvq
- SPECint06 (train set), aarch64-linux-user. Host: Intel i7-4790K @ 4.00GHz
1.7x +-+--------------------------------------------------------------------------------------------------------------+-+
| |
| jr |
1.6x +-+...............................................................................................+++............+-+
| ***** |
| *+++* |
| * * |
1.5x +-+..............................................................................................*...*...........+-+
| +++ * * |
| ***** * * |
1.4x +-+.....................................................................*+++*....................*...*...........+-+
| * * * * |
| ***** * * * * |
| * * * * ***** * * |
1.3x +-+....................................*...*............................*...*...*...*............*...*...........+-+
| +++ * * * * * * * * |
| ***** * * * * * * ***** * * |
1.2x +-+....................*...*...........*...*............................*...*...*...*...*+++*....*...*...*****...+-+
| * * * * * * * * * * * * *+++* |
| ***** * * ***** * * * * * * * * * * * * |
| * * * * *+++* * * * * * * * * * * * * |
1.1x +-+...*...*............*...*...*...*...*...*............................*...*...*...*...*...*....*...*...*...*...+-+
| * * ***** * * * * * * ***** * * * * * * * * * * |
| * * * * * * * * * * +++ ****** *+++* * * * * * * * * * * |
1x +-+---*****---*****----*****---*****---*****---*****---******---*****---*****---*****---*****----*****---*****---+-+
astar bzip2 gcc gobmk h264ref hmmlibquantum mcf omnetpperlbench sjengxalancbmk hmean
png: http://imgur.com/vRrdc9j
Signed-off-by: Emilio G. Cota <cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
e78722368c
target/aarch64: optimize cross-page direct jumps in softmmu
...
Perf numbers in next commit's log.
Signed-off-by: Emilio G. Cota <cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
4137cb83fa
target/hppa: Use tcg_gen_lookup_and_goto_ptr
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
6350001e83
target/s390: Use tcg_gen_lookup_and_goto_ptr
...
Tested-by: Aurelien Jarno <aurelien@aurel32.net >
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Aurelien Jarno
5786e0683c
tcg/mips: implement goto_ptr
...
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net >
Message-Id: <20170430145254.25616-2-aurelien@aurel32.net >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
085c648bef
tcg/arm: Implement goto_ptr
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
702a947484
tcg/arm: Clarify tcg_out_bx for arm4 host
...
In theory this would re-enable usage of QEMU on an armv4 host.
Whether this is worthwhile is debatable -- we've been unconditionally
issuing the armv5t BX instruction in the prologue since 2011 without
complaint. Possibly we should simply require an armv6 host.
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
46644483ca
tcg/s390: Implement goto_ptr
...
Tested-by: Aurelien Jarno <aurelien@aurel32.net >
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
38f81dc593
tcg/sparc: Implement goto_ptr
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
b19f0c2e7d
tcg/aarch64: Implement goto_ptr
...
Measurements:
SPECint06 (test set), x86_64-linux-user. Host: APM 64-bit ARMv8 (Atlas/A57) @ 2.4 GHz
1.45x +-+-------------------------------------------------------------------------------------------------------------+-+
| ***** |
| +++ * * +goto-ptr |
1.4x +-+...*****............................*...*....................................................................+-+
| *+++* * * +++ |
1.35x +-+...*...*............................*...*...........................*****....................................+-+
| * * * * *+++* |
| * * * * * * |
1.3x +-+...*...*............................*...*...........................*...*....................................+-+
| * * * * * * |
| * * * * * * ***** |
1.25x +-+...*...*...........*****............*...*...........................*...*............*****...*...*...........+-+
| * * * * * * * * *+++* * * |
1.2x +-+...*...*...........*...*............*...*...........................*...*............*...*...*...*...........+-+
| * * * * * * * * * * * * |
| * * * * * * * * * * * * ***** |
1.15x +-+...*...*...........*...*............*...*...........................*...*............*...*...*...*...*...*...+-+
| * * * * * * * * +++ * * * * * * |
| * * * * * * * * ***** * * * * * * |
1.1x +-+...*...*...........*...*....*****...*...*...*****...................*...*...*...*....*...*...*...*...*...*...+-+
| * * * * * * * * * * * * * * * * * * * * |
1.05x +-+...*...*...........*...*....*...*...*...*...*...*...................*...*...*...*....*...*...*...*...*...*...+-+
| * * ***** * * * * * * * * * * * * * * * * * * |
| * * * * * * * * * * * * ***** ***** * * * * * * * * * * |
1x +-+---*****---*****---*****----*****---*****---*****---*****---*****---*****---*****----*****---*****---*****---+-+
astar bzip2 gcc gobmk h264ref hmmlibquantum mcf omnetpperlbench sjenxalancbmk hmean
png: http://imgur.com/en9HE8L
Tested-by: Emilio G. Cota <cota@braap.org >
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
0c240785a8
tcg/ppc: Implement goto_ptr
...
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
6f1653180f
tb-hash: improve tb_jmp_cache hash function in user mode
...
Optimizations to cross-page chaining and indirect branches make
performance more sensitive to the hit rate of tb_jmp_cache.
The constraint of reserving some bits for the page number
lowers the achievable quality of the hashing function.
However, user-mode does not have this requirement. Thus,
with this change we use for user-mode a hashing function that
is both faster and of better quality than the previous one.
Measurements:
Note: baseline (i.e. speedup == 1x) is QEMU v2.9.0.
- SPECint06 (test set), x86_64-linux-user. Host: Intel i7-6700K @ 4.00GHz
2.2x +-+--------------------------------------------------------------------------------------------------------------+-+
| |
| jr |
2x +jr+multhash +....................................................+++++...................................+-+
| jr+hash |$$$ |
| |$+$ |
| ### $ |
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/4UXTrEc
Here I also tried the hash function suggested by Paolo ("multhash"):
return ((uint64_t) (pc * 2654435761) >> 32) & (TB_JMP_CACHE_SIZE - 1);
As you can see it is just as good as the other new function ("hash"),
which is what I ended up going with.
- SPECint06 (train set), x86_64-linux-user. Host: Intel i7-6700K @ 4.00GHz
2.6x +-+--------------------------------------------------------------------------------------------------------------+-+
| |
| jr ### |
2.4x +jr+hash...........................................................................................#.#...........+-+
| # # |
| # # |
2.2x +-+................................................................................................#.#...........+-+
| # # |
| # # |
2x +-+................................................................................................#.#...........+-+
| **** # |
| * * # |
1.8x +-+.............................................................................................*..*.#...........+-+
| +++ * * # |
| #### #### * * # |
1.6x +-+......................................####.............................#..#.****..#..........*..*.#...........+-+
| +++ #++# **** # * * # #### * * # |
| ### # # * * # * * # # # * * # |
1.4x +-+...................****+#..........****..#..........................*..*..#.*..*..#....#..#..*..*.#...........+-+
| *++* # * * # * * # * * # *** # * * # #### |
| * * # #### * * # * * # * * # * * # * * # **** # |
1.2x +-+...................*..*.#..****++#.*..*..#..........................*..*..#.*..*..#..*.*..#..*..*.#..*..*..#..+-+
| ****### * * # * * # * * # * * # * * # * * # * * # * * # |
| * * # ***### * * # * * # * * # ****## * * # * * # * * # * * # * * # |
1x +-+--****###--***###--****##--****###-****###--***###--***###--****##--****###-****###--***###--****##--****###--+-+
astar bzip2 gcc gobmk h264ref hmmlibquantum mcf omnetpperlbench sjengxalancbmk hmean
png: http://imgur.com/ArCbHqo
- NBench, x86_64-linux-user. Host: Intel i7-6700K @ 4.00GHz
1.12x +-+-------------------------------------------------------------------------------------------------------------+-+
| |
| jr +++ |
1.1x +jr+hash...........................................................####.........................................+-+
| +++#| # |
| | #++# |
1.08x +-+................................+++................+++.+++..*****..#.........................................+-+
| | +++ | | * | * # |
| | | | | *+++* # |
1.06x +-+................................****###.............|...|...*...*..#.........................+++.............+-+
| *| * |# ****### * * # | |
| *| *++# *| * |# * * # #### |
1.04x +-+................................*++*..#............*|.*.|#..*...*..#........................#.|#.............+-+
| * * # *++*++# * * # +++#++# |
| * * # * * # * * # | # # +++#### |
1.02x +-+................................*..*..#......+++...*..*..#..*...*..#.....................****..#..*****++#...+-+
| +++ * * # +++ | * * # * * # +++ *| * # *+++* # |
| +++ | +++ +++ ++++++ * * # *****### * * # * * # | +++ ++++++ *++* # * * # |
1x +-++-+++++####++****###++++-+####+-*++*++#-+*+++*-+#++*++*++#++*+-+*++#+-+++####-+*****###++*++*++#++*+-+*++#+-++-+
| *****| # *++* |# *****| # * * # * *++# * * # * * # **** |# * * # * * # * * # |
| * | *| # * *++# * | *++# * * # * * # * * # * * # *| *++# * * # * * # * * # |
0.98x +-+...*.|.*++#..*..*..#..*+++*..#..*..*..#..*...*..#..*..*..#..*...*..#..*++*..#..*...*..#..*..*..#..*...*..#...+-+
| *+++* # * * # * * # * * # * * # * * # * * # * * # * * # * * # * * # |
| * * # * * # * * # * * # * * # * * # * * # * * # * * # * * # * * # |
0.96x +-+---*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###---+-+
ASSIGNMENT BITFIELD FOURFP EMULATION HUFFMAN LU DECOMPOSITIONEURAL NNUMERIC SOSTRING SORT hmean
png: http://imgur.com/ZXFX0hJ
- NBench, arm-linux-user. Host: Intel i7-4790K @ 4.00GHz
1.3x +-+-------------------------------------------------------------------------------------------------------------+-+
| #### |
| jr # # +++ |
1.25x +jr+hash.....................#..#...........................................####................................+-+
| # # # # |
| # # # # |
1.2x +-+..........................#..#...........................................#..#................................+-+
| # # # # |
| # # # # |
1.15x +-+..........................#..#...........................................#..#................................+-+
| # # #### # # |
| # # # # # # |
1.1x +-+..........................#..#..................................#..#.....#..#................................+-+
| # # # # # # +++ |
| # # #### # # # # #### |
1.05x +-+..........................#..#...............#..#.....####......#..#.....#..#.........................#..#...+-+
| # # # # # # # # # # +++ # # |
| +++ ***** # #### ***** # # # +++# # **** # ****### # # |
1x +-++-+*****###++****+++++*+-+*++#+-****++#-+*+++*-+#+++++#++#++*****++#+-*++*++#-+*****-++++*++*++#++*****++#+-++-+
| * * # * * | * * # * * # * * # **** # * * # * * # * *### * *++# * * # |
| * * # * *### * * # * * # * * # * * # * * # * * # * * # * * # * * # |
0.95x +-+...*...*..#..*..*.|#..*...*..#..*..*..#..*...*..#..*..*..#..*...*..#..*..*..#..*...*..#..*..*..#..*...*..#...+-+
| * * # * * |# * * # * * # * * # * * # * * # * * # * * # * * # * * # |
| * * # * * |# * * # * * # * * # * * # * * # * * # * * # * * # * * # |
0.9x +-+---*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###--****###--*****###---+-+
ASSIGNMENT BITFIELD FOURFP EMULATION HUFFMAN LU DECOMPOSITIONEURAL NNUMERIC SOSTRING SORT hmean
png: http://imgur.com/FfD27ey
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1493263764-18657-12-git-send-email-cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
b4aa297781
target/i386: optimize indirect branches
...
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: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1493263764-18657-11-git-send-email-cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
fe62089563
target/i386: optimize cross-page direct jumps in softmmu
...
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: Richard Henderson <rth@twiddle.net >
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1493263764-18657-10-git-send-email-cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
1ebb1af1b8
target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr
...
This helper will be used by subsequent changes.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1493263764-18657-9-git-send-email-cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
8a6b28c7b5
target/arm: optimize indirect branches
...
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: Emilio 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: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
7ad55b4ffd
target/arm: optimize cross-page direct jumps in softmmu
...
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: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Emilio G. Cota <cota@braap.org >
Message-Id: <1493263764-18657-7-git-send-email-cota@braap.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
5cb4ef80f6
tcg/i386: implement goto_ptr
...
Suggested-by: Richard Henderson <rth@twiddle.net >
Reviewed-by: Richard Henderson <rth@twiddle.net >
Signed-off-by: Emilio 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: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Emilio G. Cota
cedbcb0152
tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr
...
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: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Emilio 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: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
374aae6534
qemu/atomic: Loosen restrictions for 64-bit ILP32 hosts
...
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: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
f1079bb8f9
tcg/sparc: Use the proper compilation flags for 32-bit
...
We have required a v9 cpu since 9b9c37c364 .
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: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Richard Henderson
1639a965d3
target/nios2: Fix 64-bit ilp32 compilation
...
Avoid a "cast from pointer to integer of different size" warning
by using the proper host type.
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Richard Henderson <rth@twiddle.net >
2017-06-05 09:25:42 -07:00
Peter Maydell
199e19ee53
Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging
...
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: Peter Maydell <peter.maydell@linaro.org >
2017-06-05 15:28:12 +01:00
Thomas Huth
03e947f9c2
hw/core: nmi.c can be compiled as common-obj nowadays
...
The target-specific code in nmi.c has been removed with this commit:
commit f7e981f295
nmi: remove x86 specific nmi handling
Signed-off-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Juan Quintela <quintela@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-05 17:23:36 +03:00
Peter Maydell
cb8b8ef457
Merge remote-tracking branch 'remotes/elmarco/tags/chrfe-pull-request' into staging
...
# 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: Peter Maydell <peter.maydell@linaro.org >
2017-06-05 10:09:14 +01:00
Marc-André Lureau
22c3aea8db
dump: fix memory_mapping_filter leak
...
Spotted by ASAN.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
John Snow
543f8f13e2
ide-test: check return of fwrite
...
To quiet patchew, add an assert for fwrite's return value.
Signed-off-by: John Snow <jsnow@redhat.com >
Reviewed-by: Jeff Cody <jcody@redhat.com >
Reviewed-by: Laurent Vivier <lvivier@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Suraj Jitindar Singh
f603164ae4
help: Add newline to end of thread option help text
...
The help text for the thread sub option of the accel option is missing
a newline at the end. This is annoying as it makes it hard to see the
help text for the next option.
Add the new line so that the following option help text (-smp) is
displayed on a new line rather on the same line and directly after
the thread help.
Before patch:
-accel [accel=]accelerator[,thread=single|multi]
select accelerator (kvm, xen, hax or tcg; use 'help' for a list)
thread=single|multi (enable multi-threaded TCG)-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
set the number of CPUs to 'n' [default=1]
maxcpus= maximum number of total cpus, including
offline CPUs for hotplug, etc
cores= number of CPU cores on one socket
threads= number of threads on one CPU core
sockets= number of discrete sockets in the system
After patch:
-accel [accel=]accelerator[,thread=single|multi]
select accelerator (kvm, xen, hax or tcg; use 'help' for a list)
thread=single|multi (enable multi-threaded TCG)
-smp [cpus=]n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
set the number of CPUs to 'n' [default=1]
maxcpus= maximum number of total cpus, including
offline CPUs for hotplug, etc
cores= number of CPU cores on one socket
threads= number of threads on one CPU core
sockets= number of discrete sockets in the system
Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Marc-André Lureau
7064024dee
qemu-ga: remove useless allocation
...
There is no need to duplicate a fixed string.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Reviewed-by: Eric Blake <eblake@redhat.com >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Mao Zhongyi
3975bb56a7
scsi/lsi53c895a: Remove unused lsi_mem_*() return value
...
lsi_mem_read/write() always return 0 about which their
callers actually don't care. Change the function type
to void.
Signed-off-by: Mao Zhongyi <maozy.fnst@cn.fujitsu.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Eric Blake
244d04db58
qapi: Fix some QMP documentation regressions
...
In the process of getting rid of docs/qmp-commands.txt, we managed
to regress on some of the text that changed after the point where
the move was first branched and when the move actually occurred.
For example, commit 3282eca for blockdev-snapshot re-added the
extra "options" layer which had been cleaned up in commit 0153d2f .
This clears up all regressions identified over the range
02b351d..bd6092e:
https://lists.gnu.org/archive/html/qemu-devel/2017-05/msg05127.html
as well as a cleanup to x-blockdev-remove-medium to prefer
'id' over 'device' (matching the cleanup for 'eject').
Signed-off-by: Eric Blake <eblake@redhat.com >
Reviewed-by: Markus Armbruster <armbru@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Philippe Mathieu-Daudé
2283adfb0a
hw/mips: add missing include
...
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Acked-by: Aurelien Jarno <aurelien@aurel32.net >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Philippe Mathieu-Daudé
016b4a93e7
register: display register prefix (name) since it is available
...
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Alistair Francis <alistair.francis@xilinx.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Philippe Mathieu-Daudé
1f6fb58d05
hw/sparc: use ARRAY_SIZE() macro
...
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Max Filippov
bb0b6f39c0
hw/xtensa: sim: use g_string/g_new
...
Replace malloc/free/sprintf with g_string/g_string_printf/g_string_free.
Replace g_malloc with g_new when allocating the MemoryRegion to get more
type safety.
Suggested-by: Alex Bennée <alex.bennee@linaro.org >
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Luc MICHEL
95e9a242e2
target/arm: add data cache invalidation cp15 instruction to cortex-r5
...
The cp15, CRn=15, opc1=0, CRm=5, opc2=0 instruction invalidates all the
data cache on the cortex-r5. Implementing it as a NOP.
Signed-off-by: Luc MICHEL <luc.michel@git.antfield.fr >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Eric Blake
f85d66f47f
block: Correct documentation for BLOCK_WRITE_THRESHOLD
...
Use the correct command name.
Signed-off-by: Eric Blake <eblake@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Juan Quintela
e8758b6229
trivial: Remove unneeded ifndef in memory.h
...
All the file is surounded already by #ifndef CONFIG_USER_ONLY.
Signed-off-by: Juan Quintela <quintela@redhat.com >
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com >
Reviewed-by: Laurent Vivier <lvivier@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Paolo Bonzini
cc16ee9d4e
altera_timer: fix incorrect memset
...
Use sizeof instead of ARRAY_SIZE, fixing -Wmemset-elt-size with recent
GCC versions.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
Reviewed-by: Laurent Vivier <lvivier@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Kamil Rytarowski
271f37abb5
configure: Detect native NetBSD curses(3)
...
NetBSD ships with traditional BSD curses with compatibility with ncurses.
qemu works nicely with the basesystem version of curses(3) from NetBSD.
The only mismatch between curses(3) and ncurses is the lack of
curses_version() in the NetBSD version. This function is used solely in
the configure script, therefore eliminate it from the curses(3) detection.
With this change applied, configure detects correctly curses frontend.
Signed-off-by: Kamil Rytarowski <n54@gmx.com >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Thomas Huth
7c933ad61b
tests/libqtest: Print error instead of aborting when env variable is missing
...
When you currently try to run a test directly from the command line
without setting the QTEST_QEMU_BINARY environment variable first,
you are presented with an unhelpful assertion message like this:
ERROR:tests/libqtest.c:163:qtest_init_without_qmp_handshake:
assertion failed: (qemu_binary != NULL)
Aborted (core dumped)
Let's replace the assert() with a more user friendly error message
instead.
Reviewed-by: Markus Armbruster <armbru@redhat.com >
Signed-off-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Markus Armbruster
7a0bbd55e5
docs/qdev-device-use.txt: update section Default Devices
...
Resynchronize the table of default device suppressions with vl.c's
default_list[].
Signed-off-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Markus Armbruster
1c9f3b887b
docs qemu-doc: Avoid ide-drive, it's deprecated
...
Suggested-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Markus Armbruster <armbru@redhat.com >
Reviewed-by: Thomas Huth <thuth@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00
Thomas Huth
2f8d8f01c8
qemu-doc: Add hyperlinks to further license information
...
Add a link to the GPLv2 and a link to the LICENSE file in the
QEMU repository to fix the two TODO items in this appendix.
Signed-off-by: Thomas Huth <thuth@redhat.com >
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2017-06-04 18:42:55 +03:00