Edgar E. Iglesias
eda3a8cd2e
xen: mapcache: Refactor xen_map_cache for multi-instance
...
Make xen_map_cache take a MapCache as argument. This is in
prepaparation to support multiple map caches.
No functional changes.
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org >
Message-ID: <20240430164939.925307-5-edgar.iglesias@gmail.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-06 14:41:39 +02:00
Edgar E. Iglesias
efb0c6caef
xen: mapcache: Refactor lock functions for multi-instance
...
Make the lock functions take MapCache * as argument. This is
in preparation for supporting multiple caches.
No functional changes.
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org >
Message-ID: <20240430164939.925307-4-edgar.iglesias@gmail.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-06 14:41:39 +02:00
Juergen Gross
337265dbf2
xen: let xen_ram_addr_from_mapcache() return -1 in case of not found entry
...
Today xen_ram_addr_from_mapcache() will either abort() or return 0 in
case it can't find a matching entry for a pointer value. Both cases
are bad, so change that to return an invalid address instead.
Signed-off-by: Juergen Gross <jgross@suse.com >
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org >
Message-Id: <20231005181629.4046-5-vikram.garhwal@amd.com >
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com >
Message-ID: <20240430164939.925307-3-edgar.iglesias@gmail.com >
[PMD: Keep xen_ram_addr_from_mapcache_not_found trace event]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-06 14:41:39 +02:00
Juergen Gross
a99dd3375c
system: let qemu_map_ram_ptr() use qemu_ram_ptr_length()
...
qemu_map_ram_ptr() and qemu_ram_ptr_length() share quite some code, so
modify qemu_ram_ptr_length() a little bit and use it for
qemu_map_ram_ptr(), too.
Signed-off-by: Juergen Gross <jgross@suse.com >
Signed-off-by: Vikram Garhwal <vikram.garhwal@amd.com >
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20240227223501.28475-4-vikram.garhwal@amd.com >
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com >
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com >
Acked-by: David Hildenbrand <david@redhat.com >
Reviewed-by: Peter Xu <peterx@redhat.com >
Message-ID: <20240430164939.925307-2-edgar.iglesias@gmail.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-06 14:41:36 +02:00
Philippe Mathieu-Daudé
59272469bd
user: Use get_task_state() helper
...
Get the TaskState pointer calling get_task_state().
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428221450.26460-11-philmd@linaro.org >
2024-05-06 14:13:45 +02:00
Philippe Mathieu-Daudé
8019601324
user: Declare get_task_state() once in 'accel/tcg/vcpu-state.h'
...
While each user emulation implentation defines its own
TaskState structure, both use the same get_task_state()
declaration, in particular in common code (such gdbstub).
Declare the method once in "accel/tcg/vcpu-state.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428221450.26460-10-philmd@linaro.org >
2024-05-06 14:13:45 +02:00
Philippe Mathieu-Daudé
ef932e21bd
user: Forward declare TaskState type definition
...
Forward declare TaskState in "qemu/typedefs.h" so we can
use it in generic headers like "hw/cpu/core.h".
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428221450.26460-9-philmd@linaro.org >
2024-05-06 14:13:45 +02:00
Philippe Mathieu-Daudé
80f034c5b2
accel/tcg: Move @plugin_mem_cbs from CPUState to CPUNegativeOffsetState
...
@plugin_mem_cbs is accessed by tcg generated code, move it
to CPUNegativeOffsetState.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240429213050.55177-4-philmd@linaro.org >
2024-05-06 11:24:14 +02:00
Philippe Mathieu-Daudé
fc44d592db
accel/tcg: Restrict cpu_plugin_mem_cbs_enabled() to TCG
...
So far cpu_plugin_mem_cbs_enabled() is only called from
TCG, so reduce it to accel/tcg/.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <5f59c754-44e5-4743-a2dd-87ef8e13eadf@linaro.org >
2024-05-06 11:24:14 +02:00
Philippe Mathieu-Daudé
57d828429e
accel/tcg: Restrict qemu_plugin_vcpu_exit_hook() to TCG plugins
...
qemu_plugin_vcpu_exit_hook() is specific to TCG plugins,
so must be restricted to it in cpu_common_unrealizefn(),
similarly to how qemu_plugin_create_vcpu_state() is
restricted in the cpu_common_realizefn() counterpart.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240429213050.55177-2-philmd@linaro.org >
2024-05-06 11:24:14 +02:00
Philippe Mathieu-Daudé
b3e7bdeb78
accel/tcg: Update CPUNegativeOffsetState::can_do_io field documentation
...
The @can_do_io field got moved from CPUState to
CPUNegativeOffsetState in commit 464dacf609 ("accel/tcg:
Move can_do_io to CPUNegativeOffsetState").
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428221450.26460-14-philmd@linaro.org >
2024-05-06 11:24:14 +02:00
Philippe Mathieu-Daudé
40ab89f374
accel/tcg: Move user definition of cpu_interrupt() to user-exec.c
...
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428221450.26460-4-philmd@linaro.org >
2024-05-06 11:21:05 +02:00
Philippe Mathieu-Daudé
b254c342cf
accel/tcg: Access tcg_cflags with getter / setter
...
Access the CPUState::tcg_cflags via tcg_cflags_has() and
tcg_cflags_set() helpers.
Mechanical change using the following Coccinelle spatch script:
@@
expression cpu;
expression flags;
@@
- cpu->tcg_cflags & flags
+ tcg_cflags_has(cpu, flags)
@@
expression cpu;
expression flags;
@@
- (tcg_cflags_has(cpu, flags))
+ tcg_cflags_has(cpu, flags)
@@
expression cpu;
expression flags;
@@
- cpu->tcg_cflags |= flags;
+ tcg_cflags_set(cpu, flags);
Then manually moving the declarations, and adding both
tcg_cflags_has() and tcg_cflags_set() definitions.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-15-philmd@linaro.org >
2024-05-06 11:21:05 +02:00
Philippe Mathieu-Daudé
0650fc1ea3
accel/tcg: Use cpu_loop_exit_requested() in cpu_loop_exec_tb()
...
Do not open-code cpu_loop_exit_requested().
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428214915.10339-9-philmd@linaro.org >
2024-05-06 11:17:15 +02:00
Philippe Mathieu-Daudé
74781c0888
exec/cpu: Extract page-protection definitions to page-protection.h
...
Extract page-protection definitions from "exec/cpu-all.h"
to "exec/page-protection.h".
The list of files requiring the new header was generated
using:
$ git grep -wE \
'PAGE_(READ|WRITE|EXEC|RWX|VALID|ANON|RESERVED|TARGET_.|PASSTHROUGH)'
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Nicholas Piggin <npiggin@gmail.com >
Acked-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-3-philmd@linaro.org >
2024-05-06 11:17:15 +02:00
Philippe Mathieu-Daudé
7dd1259b37
exec/cpu: Remove duplicated PAGE_PASSTHROUGH definition
...
Missed in commit 58771921af ("include/exec: Move PAGE_* macros
to common header"), PAGE_PASSTHROUGH ended being defined twice.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-8-philmd@linaro.org >
2024-05-06 11:17:15 +02:00
Philippe Mathieu-Daudé
a4f06b1a05
exec/cpu: Remove obsolete PAGE_RESERVED definition
...
We stopped using the PAGE_RESERVED definition in commit
50d25c8aec ("accel/tcg: Drop PAGE_RESERVED for CONFIG_BSD").
This completes commit 2e9a5713f0 ("Remove PAGE_RESERVED").
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-7-philmd@linaro.org >
2024-05-06 11:17:15 +02:00
BALATON Zoltan
86b7c55182
exec/cpu: Rename PAGE_BITS macro to PAGE_RWX
...
This macro can be used to abbreviate PAGE_READ | PAGE_WRITE | PAGE_EXEC
for which PAGE_RWX is a better name and renaming it also shows it is
not related to TARGET_PAGE_BITS.
Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-ID: <20240505121008.44A0D4E602D@zero.eik.bme.hu >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-06 11:17:15 +02:00
Philippe Mathieu-Daudé
1072f927f0
exec/cpu: Indent TARGET_PAGE_foo definitions
...
The TARGET_PAGE_foo definitions are defined with multiple
level of #ifdef'ry. Indent it a bit for clarity.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-6-philmd@linaro.org >
2024-05-06 11:17:14 +02:00
Richard Henderson
248f6f62df
Merge tag 'pull-axp-20240504' of https://gitlab.com/rth7680/qemu into staging
...
target/alpha: Implement CF_PCREL
# -----BEGIN PGP SIGNATURE-----
#
# iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmY2VlYdHHJpY2hhcmQu
# aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV/IxQf/UAxpxtc+glkuZ17C
# mUliqx/Vif31BuKw31GVSDENOMteD900fR8+nNGY401+2hdZxoNo2N70ZL1h9AgX
# xWVz1H33MwBXbW3lWhGSpikJ/Sd3K7dsqZpRWlr1uUEFmNXDSihKgY3JfhJ4mEsq
# 8IIITyixSiiRyl1HBgfCUqLfHkWQamHz/Tbmku9wvOZ5fYkPHV1kCmlQ8X89iB9j
# yxHW9Zcm8cShD0w4pU1HZAttHhyNZrB70ebauksAWX6QIG6fdTv+qMz9XP4FofuT
# SwLuYja3ohoTijFkC7ctA0dbsF3xwCFKES6CdP8Ne5cKHSzsrejZhh8z/0uHi+D2
# jwxnMg==
# =oK6Y
# -----END PGP SIGNATURE-----
# gpg: Signature made Sat 04 May 2024 08:37:58 AM PDT
# gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg: issuer "richard.henderson@linaro.org "
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org >" [ultimate]
* tag 'pull-axp-20240504' of https://gitlab.com/rth7680/qemu :
target/alpha: Implement CF_PCREL
target/alpha: Split out gen_pc_disp
target/alpha: Split out gen_goto_tb
target/alpha: Simplify gen_bcond_internal()
target/alpha: Return DISAS_NORETURN once
target/alpha: Inline DISAS_PC_UPDATED and return DISAS_NORETURN
target/alpha: Use DISAS_NEXT definition instead of magic '0' value
target/alpha: Hoist branch shift to initial decode
target/alpha: Use cpu_env in preference to ALPHA_CPU
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-04 08:39:46 -07:00
Richard Henderson
23bb086350
target/alpha: Implement CF_PCREL
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-10-philmd@linaro.org >
2024-05-04 08:05:51 -07:00
Richard Henderson
b1a3eacf31
target/alpha: Split out gen_pc_disp
...
Prepare for pcrel by not modifying cpu_pc before use,
in the case of JSR.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-9-philmd@linaro.org >
2024-05-04 08:05:51 -07:00
Richard Henderson
82b60d2509
target/alpha: Split out gen_goto_tb
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240424234436.995410-4-richard.henderson@linaro.org >
[PMD: Split bigger patch, part 5/5]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-8-philmd@linaro.org >
2024-05-04 08:05:49 -07:00
Philippe Mathieu-Daudé
39482c2edc
target/alpha: Simplify gen_bcond_internal()
...
Richard Henderson explained on IRC:
bcond_internal() used to insist that both branch
destination and branch fallthrough are use_goto_tb;
if not, we'd use movcond to compute an indirect jump.
But it's perfectly fine for e.g. the branch fallthrough
to use_goto_tb, and the branch destination to use
an indirect branch.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240424234436.995410-4-richard.henderson@linaro.org >
[PMD: Split bigger patch, part 4/5]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-7-philmd@linaro.org >
2024-05-04 08:02:57 -07:00
Richard Henderson
9804ab26d0
target/alpha: Return DISAS_NORETURN once
...
Trivial change to make next commits easier to understand.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240424234436.995410-4-richard.henderson@linaro.org >
[PMD: Split bigger patch, part 3/5]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-6-philmd@linaro.org >
2024-05-04 07:38:09 -07:00
Richard Henderson
c0fcd5612e
target/alpha: Inline DISAS_PC_UPDATED and return DISAS_NORETURN
...
Inline DISAS_PC_UPDATED switch case from alpha_tr_tb_stop():
switch (ctx->base.is_jmp) {
...
case DISAS_PC_UPDATED:
tcg_gen_lookup_and_goto_ptr();
break;
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240424234436.995410-4-richard.henderson@linaro.org >
[PMD: Split bigger patch, part 2/5]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-5-philmd@linaro.org >
2024-05-04 07:38:09 -07:00
Richard Henderson
0cda93c9b5
target/alpha: Use DISAS_NEXT definition instead of magic '0' value
...
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240424234436.995410-4-richard.henderson@linaro.org >
[PMD: Split bigger patch, part 1/5]
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-4-philmd@linaro.org >
2024-05-04 07:38:08 -07:00
Richard Henderson
1bcae46aac
target/alpha: Hoist branch shift to initial decode
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-3-philmd@linaro.org >
2024-05-04 07:38:08 -07:00
Richard Henderson
ab709f13b8
target/alpha: Use cpu_env in preference to ALPHA_CPU
...
ALPHA_CPU has a dynamic object type assert, which is
unnecessary considering that these are all class hooks.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240503072014.24751-2-philmd@linaro.org >
2024-05-04 07:38:08 -07:00
Richard Henderson
97c872276d
Merge tag 'accel-sh4-ui-20240503' of https://github.com/philmd/qemu into staging
...
- Fix NULL dereference in NVMM & WHPX init_vcpu()
- Move user emulation headers "exec/user" to "user"
- Fix SH-4 ADDV / SUBV opcodes
- Drop Cocoa compatility on macOS <= 10.12
- Update Anthony PERARD email
# -----BEGIN PGP SIGNATURE-----
#
# iQIzBAABCAAdFiEE+qvnXhKRciHc/Wuy4+MsLN6twN4FAmY1BE4ACgkQ4+MsLN6t
# wN73jg//dbdHQU+4oM7BgTduDZn1ulKz5DtNEJawRP6vxIcSQ+Co2Yd+gdLOSXNI
# 2BaoiOQ8cyDEHj1Uud3WVB0GsQYvHrqgXcjeHpX6yFFCZNyRvzEXizJPHKCtq+4e
# XQFtfTFftlJdaKCLqyDqVnrVNRacFPm7kinrEQbTSmglAhwnyu3GwsokDAYiJTqp
# g0n6mX/pWVEMDNY1HrDsk2Q/pyIZFmzhtuRyXRvi/bh8/BnmMCpySG+2463dnu1O
# xIGr2w8ldc+mKn2w2k3wYKDnUHz/NhOkE86tL/ZxIgjCzeenZXwXNdzM+cuAmOZX
# L9KIu5io6bTevYVwwHhd5/N6MCqVEhoRmsUQfF0CIkIzxXbyF14M89YHXZo3YJAd
# n2uoJ7i6hF/4Pt6Uqlg09+vEk7onwrobnTPnbKHEKNWHNOMKXpq1CBxxcVz2qe24
# +CTAAOOhHqaTjODPSexzHZDZYxugCy1XSqps9AFF1HqUcmsPCL/PQ75YGTJJO0oF
# 0V1Yvzjhin26AQS9SglIeXnHxYC26Cg2mXnUpVbryWnG888r0XAGpRl+FEuXK7Ln
# /dGuCIWTozypSkG9304IlxlYsOoXhL11NZqINW+W/Tor3dMRQhWUQcHqv98Jl4Ad
# rnpzZ0Dhd9ityZdbI0CCMZZZLY5dw1Rq5q407GTJr1CDU4PJBh0=
# =N8q0
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 03 May 2024 08:35:42 AM PDT
# gpg: using RSA key FAABE75E12917221DCFD6BB2E3E32C2CDEADC0DE
# gpg: Good signature from "Philippe Mathieu-Daudé (F4BUG) <f4bug@amsat.org >" [full]
* tag 'accel-sh4-ui-20240503' of https://github.com/philmd/qemu :
ui/cocoa.m: Drop old macOS-10.12-and-earlier compat ifdefs
target/sh4: Rename TCGv variables as manual for SUBV opcode
target/sh4: Rename TCGv variables as manual for ADDV opcode
target/sh4: Fix SUBV opcode
target/sh4: Fix ADDV opcode
MAINTAINERS: Update my email address
plugins: Update stale comment
plugins/api: Only include 'exec/ram_addr.h' with system emulation
coverity: Update user emulation regexp
user: Move 'thunk.h' from 'exec/user' to 'user'
user: Move 'abitypes.h' from 'exec/user' to 'user'
exec: Include missing license in 'exec/cpu-common.h'
accel/whpx: Fix NULL dereference in whpx_init_vcpu()
accel/nvmm: Fix NULL dereference in nvmm_init_vcpu()
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-03 14:42:50 -07:00
Peter Maydell
2d27c91e2b
ui/cocoa.m: Drop old macOS-10.12-and-earlier compat ifdefs
...
We only support the most recent two versions of macOS (currently
macOS 13 Ventura and macOS 14 Sonoma), and our ui/cocoa.m code
already assumes at least macOS 12 Monterey or better, because it uses
NSScreen safeAreaInsets, which is 12.0-or-newer.
Remove the ifdefs that were providing backwards compatibility for
building on 10.12 and earlier versions.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org >
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com >
Message-ID: <20240502142904.62644-1-peter.maydell@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-03 17:33:26 +02:00
Philippe Mathieu-Daudé
942ba09d7c
target/sh4: Rename TCGv variables as manual for SUBV opcode
...
To easily compare with the SH4 manual, rename:
REG(B11_8) -> Rn
REG(B7_4) -> Rm
t0 -> result
Mention how underflow is calculated.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Message-Id: <20240430163125.77430-5-philmd@linaro.org >
2024-05-03 17:33:26 +02:00
Philippe Mathieu-Daudé
40ed073f89
target/sh4: Rename TCGv variables as manual for ADDV opcode
...
To easily compare with the SH4 manual, rename:
REG(B11_8) -> Rn
REG(B7_4) -> Rm
t0 -> result
Mention how overflow is calculated.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp >
Message-Id: <20240430163125.77430-4-philmd@linaro.org >
2024-05-03 17:33:26 +02:00
Philippe Mathieu-Daudé
e88a856efd
target/sh4: Fix SUBV opcode
...
The documentation says:
SUBV Rm, Rn Rn - Rm -> Rn, underflow -> T
The overflow / underflow can be calculated as:
T = ((Rn ^ Rm) & (Result ^ Rn)) >> 31
However we were using the incorrect:
T = ((Rn ^ Rm) & (Result ^ Rm)) >> 31
Fix by using the Rn register instead of Rm.
Add tests provided by Paul Cercueil.
Cc: qemu-stable@nongnu.org
Fixes: ad8d25a11f ("target-sh4: implement addv and subv using TCG")
Reported-by: Paul Cercueil <paul@crapouillou.net >
Suggested-by: Paul Cercueil <paul@crapouillou.net >
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2318
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp >
Message-Id: <20240430163125.77430-3-philmd@linaro.org >
2024-05-03 17:33:26 +02:00
Philippe Mathieu-Daudé
c365e6b070
target/sh4: Fix ADDV opcode
...
The documentation says:
ADDV Rm, Rn Rn + Rm -> Rn, overflow -> T
But QEMU implementation was:
ADDV Rm, Rn Rn + Rm -> Rm, overflow -> T
Fix by filling the correct Rm register.
Add tests provided by Paul Cercueil.
Cc: qemu-stable@nongnu.org
Fixes: ad8d25a11f ("target-sh4: implement addv and subv using TCG")
Reported-by: Paul Cercueil <paul@crapouillou.net >
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2317
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Yoshinori Sato <ysato@users.sourceforge.jp >
Message-Id: <20240430163125.77430-2-philmd@linaro.org >
2024-05-03 17:33:26 +02:00
Anthony PERARD
a0dbef9f33
MAINTAINERS: Update my email address
...
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com >
Acked-by: Paul Durrant <paul@xen.org >
Acked-by: Stefano Stabellini <sstabellini@kernel.org >
Message-ID: <20240429154938.19340-1-anthony.perard@citrix.com >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
2024-05-03 17:33:26 +02:00
Philippe Mathieu-Daudé
e096d370ad
plugins: Update stale comment
...
"plugin_mask" was renamed as "event_mask" in commit c006147122
("plugins: create CPUPluginState and migrate plugin_mask").
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-3-philmd@linaro.org >
2024-05-03 17:21:20 +02:00
Philippe Mathieu-Daudé
155fb465b1
plugins/api: Only include 'exec/ram_addr.h' with system emulation
...
"exec/ram_addr.h" shouldn't be used with user emulation.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Acked-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-4-philmd@linaro.org >
2024-05-03 17:21:20 +02:00
Philippe Mathieu-Daudé
bf0bcac890
coverity: Update user emulation regexp
...
All user emulation headers are now under include/user/.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428221450.26460-3-philmd@linaro.org >
2024-05-03 17:21:20 +02:00
Philippe Mathieu-Daudé
4e11165316
user: Move 'thunk.h' from 'exec/user' to 'user'
...
Keep all user emulation headers under the same user/ directory.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240428221450.26460-2-philmd@linaro.org >
2024-05-03 17:21:20 +02:00
Philippe Mathieu-Daudé
22879b6680
user: Move 'abitypes.h' from 'exec/user' to 'user'
...
Keep all user emulation headers under the same user/ directory.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240503125202.35667-1-philmd@linaro.org >
2024-05-03 17:21:18 +02:00
Philippe Mathieu-Daudé
f184f3856e
exec: Include missing license in 'exec/cpu-common.h'
...
Commit 1ad2134f91 ("Hardware convenience library") extracted
"cpu-common.h" from "cpu-all.h", which uses the LGPL-2.1+ license.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240427155714.53669-5-philmd@linaro.org >
2024-05-03 17:21:13 +02:00
Richard Henderson
909aff7eaf
Merge tag 'pull-misc-20240503' of https://gitlab.com/rth7680/qemu into staging
...
util/bufferiszero:
- Remove sse4.1 and avx512 variants
- Reorganize for early test for acceleration
- Remove useless prefetches
- Optimize sse2, avx2 and integer variants
- Add simd acceleration for aarch64
- Add bufferiszero-bench
# -----BEGIN PGP SIGNATURE-----
#
# iQFRBAABCgA7FiEEekgeeIaLTbaoWgXAZN846K9+IV8FAmY0/qMdHHJpY2hhcmQu
# aGVuZGVyc29uQGxpbmFyby5vcmcACgkQZN846K9+IV+ULQf/T2JSdvG6/EjDCf4N
# cnSGiUV2MIeByw8tkrc/fWCNdlulHhk9gbg9l+f2muwK8H/k2BdynbrQnt1Ymmtk
# xzM6+PNOcByaovSAkvNweZVbrQX36Yih9S7f3n+xcxfVuvvYhKSLHXLkeqO96LMd
# rN+WRpxhReaU3n8/FO7o3S26SRpk7X9kRfShaT7U7ytHGjGsXUvMKIRs30hbsJTB
# yjed0a0u54FoSlN6AEqjWdgzaWP8nT65+8Yxe3dzB9hx09UiolZo60eHqYy7Mkno
# N6aMOB6gUUbCiKZ3Qk+1zEX97vl26NH3zt5tIIJTWDoIkC3f9qbg1x5hwWLQ3rra
# rM8h8w==
# =DnZO
# -----END PGP SIGNATURE-----
# gpg: Signature made Fri 03 May 2024 08:11:31 AM PDT
# gpg: using RSA key 7A481E78868B4DB6A85A05C064DF38E8AF7E215F
# gpg: issuer "richard.henderson@linaro.org "
# gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org >" [ultimate]
* tag 'pull-misc-20240503' of https://gitlab.com/rth7680/qemu :
tests/bench: Add bufferiszero-bench
util/bufferiszero: Add simd acceleration for aarch64
util/bufferiszero: Simplify test_buffer_is_zero_next_accel
util/bufferiszero: Introduce biz_accel_fn typedef
util/bufferiszero: Improve scalar variant
util/bufferiszero: Optimize SSE2 and AVX2 variants
util/bufferiszero: Remove useless prefetches
util/bufferiszero: Reorganize for early test for acceleration
util/bufferiszero: Remove AVX512 variant
util/bufferiszero: Remove SSE4.1 variant
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-03 08:13:51 -07:00
Richard Henderson
a06d9eddb0
tests/bench: Add bufferiszero-bench
...
Benchmark each acceleration function vs an aligned buffer of zeros.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-03 08:03:35 -07:00
Richard Henderson
22437b4de9
util/bufferiszero: Add simd acceleration for aarch64
...
Because non-embedded aarch64 is expected to have AdvSIMD enabled, merely
double-check with the compiler flags for __ARM_NEON and don't bother with
a runtime check. Otherwise, model the loop after the x86 SSE2 function.
Use UMAXV for the vector reduction. This is 3 cycles on cortex-a76 and
2 cycles on neoverse-n1.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-03 08:03:35 -07:00
Richard Henderson
bf67aa3dd2
util/bufferiszero: Simplify test_buffer_is_zero_next_accel
...
Because the three alternatives are monotonic, we don't need
to keep a couple of bitmasks, just identify the strongest
alternative at startup.
Generalize test_buffer_is_zero_next_accel and init_accel
by always defining an accel_table array.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-03 08:03:05 -07:00
Richard Henderson
0100ce2b49
util/bufferiszero: Introduce biz_accel_fn typedef
...
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-03 08:03:05 -07:00
Richard Henderson
7ae6399a85
util/bufferiszero: Improve scalar variant
...
Split less-than and greater-than 256 cases.
Use unaligned accesses for head and tail.
Avoid using out-of-bounds pointers in loop boundary conditions.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2024-05-03 08:03:05 -07:00
Alexander Monakov
f28e0bbefa
util/bufferiszero: Optimize SSE2 and AVX2 variants
...
Increase unroll factor in SIMD loops from 4x to 8x in order to move
their bottlenecks from ALU port contention to load issue rate (two loads
per cycle on popular x86 implementations).
Avoid using out-of-bounds pointers in loop boundary conditions.
Follow SSE2 implementation strategy in the AVX2 variant. Avoid use of
PTEST, which is not profitable there (like in the removed SSE4 variant).
Signed-off-by: Alexander Monakov <amonakov@ispras.ru >
Signed-off-by: Mikhail Romanov <mmromanov@ispras.ru >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240206204809.9859-6-amonakov@ispras.ru >
2024-05-03 08:03:05 -07:00
Alexander Monakov
93a6085618
util/bufferiszero: Remove useless prefetches
...
Use of prefetching in bufferiszero.c is quite questionable:
- prefetches are issued just a few CPU cycles before the corresponding
line would be hit by demand loads;
- they are done for simple access patterns, i.e. where hardware
prefetchers can perform better;
- they compete for load ports in loops that should be limited by load
port throughput rather than ALU throughput.
Signed-off-by: Alexander Monakov <amonakov@ispras.ru >
Signed-off-by: Mikhail Romanov <mmromanov@ispras.ru >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20240206204809.9859-5-amonakov@ispras.ru >
2024-05-03 08:03:05 -07:00