Revision tags: v9.1.1, v9.0.3, v8.2.7, v7.2.14 |
|
#
b709da5d |
| 16-Sep-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{high,low}. Values are written only for accessed word size (upper bits are not set).
Atomic operations are doing read/write at the same time, so we generate two memory callbacks instead of one, to allow plugins to access distinct values.
For now, we can have access only up to 128 bits, thus split this in two 64 bits words. When QEMU will support wider operations, we'll be able to reconsider this.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240724194708.1843704-2-pierrick.bouvier@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240916085400.1046925-5-alex.bennee@linaro.org>
show more ...
|
Revision tags: v9.1.1, v9.0.3, v8.2.7, v7.2.14 |
|
#
b709da5d |
| 16-Sep-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{high,low}. Values are written only for accessed word size (upper bits are not set).
Atomic operations are doing read/write at the same time, so we generate two memory callbacks instead of one, to allow plugins to access distinct values.
For now, we can have access only up to 128 bits, thus split this in two 64 bits words. When QEMU will support wider operations, we'll be able to reconsider this.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240724194708.1843704-2-pierrick.bouvier@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240916085400.1046925-5-alex.bennee@linaro.org>
show more ...
|
Revision tags: v9.1.1, v9.0.3, v8.2.7, v7.2.14 |
|
#
b709da5d |
| 16-Sep-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{high,low}. Values are written only for accessed word size (upper bits are not set).
Atomic operations are doing read/write at the same time, so we generate two memory callbacks instead of one, to allow plugins to access distinct values.
For now, we can have access only up to 128 bits, thus split this in two 64 bits words. When QEMU will support wider operations, we'll be able to reconsider this.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240724194708.1843704-2-pierrick.bouvier@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240916085400.1046925-5-alex.bennee@linaro.org>
show more ...
|
Revision tags: v9.1.1, v9.0.3, v8.2.7, v7.2.14 |
|
#
b709da5d |
| 16-Sep-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{
plugins: save value during memory accesses
Different code paths handle memory accesses: - tcg generated code - load/store helpers - atomic helpers
This value is saved in cpu->neg.plugin_mem_value_{high,low}. Values are written only for accessed word size (upper bits are not set).
Atomic operations are doing read/write at the same time, so we generate two memory callbacks instead of one, to allow plugins to access distinct values.
For now, we can have access only up to 128 bits, thus split this in two 64 bits words. When QEMU will support wider operations, we'll be able to reconsider this.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240724194708.1843704-2-pierrick.bouvier@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240916085400.1046925-5-alex.bennee@linaro.org>
show more ...
|
Revision tags: v9.1.0, v9.1.0-rc4, v9.1.0-rc3, v9.1.0-rc2 |
|
#
278035fc |
| 13-Aug-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: fix race condition with scoreboards
A deadlock can be created if a new vcpu (a) triggers a scoreboard reallocation, and another vcpu (b) wants to create a new scoreboard at the same time.
plugins: fix race condition with scoreboards
A deadlock can be created if a new vcpu (a) triggers a scoreboard reallocation, and another vcpu (b) wants to create a new scoreboard at the same time.
In this case, (a) holds the plugin lock, and starts an exclusive section, waiting for (b). But at the same time, (b) is waiting for plugin lock.
The solution is to drop the lock before entering the exclusive section.
This bug can be easily reproduced by creating a callback for any tb exec, that allocates a new scoreboard. In this case, as soon as we reach more than 16 vcpus, the deadlock occurs.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2344 Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240812220748.95167-2-pierrick.bouvier@linaro.org> [AJB: tweak var position to meet coding style] Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20240813202329.1237572-22-alex.bennee@linaro.org>
show more ...
|
Revision tags: v9.1.0-rc1, v9.1.0-rc0, v9.0.2, v8.2.6, v7.2.13 |
|
#
0f3974b6 |
| 05-Jul-2024 |
Philippe Mathieu-Daudé <philmd@linaro.org> |
accel/tcg: Move qemu_plugin_vcpu_init__async() to plugins/
Calling qemu_plugin_vcpu_init__async() on the vCPU thread is a detail of plugins, not relevant to TCG vCPU management.
Signed-off-by: Phil
accel/tcg: Move qemu_plugin_vcpu_init__async() to plugins/
Calling qemu_plugin_vcpu_init__async() on the vCPU thread is a detail of plugins, not relevant to TCG vCPU management.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240606124010.2460-4-philmd@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240705084047.857176-30-alex.bennee@linaro.org>
show more ...
|
#
2089a2e5 |
| 05-Jul-2024 |
Philippe Mathieu-Daudé <philmd@linaro.org> |
plugins: Ensure vCPU index is assigned in init/exit hooks
Since vCPUs are hashed by their index, this index can't be uninitialized (UNASSIGNED_CPU_INDEX).
Signed-off-by: Philippe Mathieu-Daudé <phi
plugins: Ensure vCPU index is assigned in init/exit hooks
Since vCPUs are hashed by their index, this index can't be uninitialized (UNASSIGNED_CPU_INDEX).
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240606124010.2460-2-philmd@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240705084047.857176-28-alex.bennee@linaro.org>
show more ...
|
#
ca7d7f42 |
| 20-Jun-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: fix inject_mem_cb rw masking
These are not booleans, but masks. Issue found by Richard Henderson.
Fixes: f86fd4d8721 ("plugins: distinct types for callbacks") Signed-off-by: Richard Hender
plugins: fix inject_mem_cb rw masking
These are not booleans, but masks. Issue found by Richard Henderson.
Fixes: f86fd4d8721 ("plugins: distinct types for callbacks") Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240612195147.93121-3-pierrick.bouvier@linaro.org> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240620152220.2192768-12-alex.bennee@linaro.org>
show more ...
|
Revision tags: v9.0.1, v8.2.5, v7.2.12 |
|
#
2fa16246 |
| 30-May-2024 |
Alex Bennée <alex.bennee@linaro.org> |
plugins: remove special casing for cpu->realized
Now the condition variable is initialised early on we don't need to go through hoops to avoid calling async_run_on_cpu.
Signed-off-by: Alex Bennée <
plugins: remove special casing for cpu->realized
Now the condition variable is initialised early on we don't need to go through hoops to avoid calling async_run_on_cpu.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-ID: <20240530194250.1801701-5-alex.bennee@linaro.org> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
show more ...
|
#
09afe967 |
| 14-May-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: remove op from qemu_plugin_inline_cb
This field is not needed as the callback type already holds this information.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-
plugins: remove op from qemu_plugin_inline_cb
This field is not needed as the callback type already holds this information.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240502211522.346467-10-pierrick.bouvier@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240514174253.694591-12-alex.bennee@linaro.org>
show more ...
|
#
f86fd4d8 |
| 14-May-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: distinct types for callbacks
To prevent errors when writing new types of callbacks or inline operations, we split callbacks data to distinct types.
Reviewed-by: Richard Henderson <richard.
plugins: distinct types for callbacks
To prevent errors when writing new types of callbacks or inline operations, we split callbacks data to distinct types.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240502211522.346467-8-pierrick.bouvier@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240514174253.694591-10-alex.bennee@linaro.org>
show more ...
|
#
7de77d37 |
| 14-May-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: conditional callbacks
Extend plugins API to support callback called with a given criteria (evaluated inline).
Added functions: - qemu_plugin_register_vcpu_tb_exec_cond_cb - qemu_plugin_reg
plugins: conditional callbacks
Extend plugins API to support callback called with a given criteria (evaluated inline).
Added functions: - qemu_plugin_register_vcpu_tb_exec_cond_cb - qemu_plugin_register_vcpu_insn_exec_cond_cb
They expect as parameter a condition, a qemu_plugin_u64_t (op1) and an immediate (op2). Callback is called if op1 |cond| op2 is true.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240502211522.346467-6-pierrick.bouvier@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> [AJB: fix re-base conflict with tb_is_mem_only()] Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240514174253.694591-8-alex.bennee@linaro.org>
show more ...
|
#
36a1d8e7 |
| 14-May-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: add new inline op STORE_U64
This new operation can store an immediate u64 value to a given scoreboard.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick
plugins: add new inline op STORE_U64
This new operation can store an immediate u64 value to a given scoreboard.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Message-Id: <20240502211522.346467-4-pierrick.bouvier@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240514174253.694591-6-alex.bennee@linaro.org>
show more ...
|
#
21032784 |
| 14-May-2024 |
Pierrick Bouvier <pierrick.bouvier@linaro.org> |
plugins: prepare introduction of new inline ops
Until now, only add_u64 was available, and all functions assumed this or were named uniquely.
Reviewed-by: Richard Henderson <richard.henderson@linar
plugins: prepare introduction of new inline ops
Until now, only add_u64 was available, and all functions assumed this or were named uniquely.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20240514174253.694591-4-alex.bennee@linaro.org>
show more ...
|
Revision tags: v8.2.4, v8.2.3, v7.2.11, v9.0.0, v9.0.0-rc4, v9.0.0-rc3, v9.0.0-rc2, v9.0.0-rc1, v9.0.0-rc0, v8.2.2, v7.2.10, v8.2.1, v8.1.5, v7.2.9 |
|
#
80f034c5 |
| 09-Jan-2024 |
Philippe Mathieu-Daudé <philmd@linaro.org> |
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é <
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>
show more ...
|
#
ccd8f17e |
| 15-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
plugins: Introduce PLUGIN_CB_MEM_REGULAR
Use different enumerators for vcpu_udata and vcpu_mem callbacks.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderso
plugins: Introduce PLUGIN_CB_MEM_REGULAR
Use different enumerators for vcpu_udata and vcpu_mem callbacks.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
b0748975 |
| 15-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
tcg: Remove TCG_CALL_PLUGIN
Since we no longer emit plugin helpers during the initial code translation phase, we don't need to specially mark plugin helpers.
Reviewed-by: Pierrick Bouvier <pierrick
tcg: Remove TCG_CALL_PLUGIN
Since we no longer emit plugin helpers during the initial code translation phase, we don't need to specially mark plugin helpers.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
c7ba9483 |
| 14-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
plugins: Create TCGHelperInfo for all out-of-line callbacks
TCGHelperInfo includes the ABI for every function call.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richar
plugins: Create TCGHelperInfo for all out-of-line callbacks
TCGHelperInfo includes the ABI for every function call.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
aff56de5 |
| 15-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
plugins: Move function pointer in qemu_plugin_dyn_cb
The out-of-line function pointer is mutually exclusive with inline expansion, so move it into the union. Wrap the pointer in a structure named 'r
plugins: Move function pointer in qemu_plugin_dyn_cb
The out-of-line function pointer is mutually exclusive with inline expansion, so move it into the union. Wrap the pointer in a structure named 'regular' to match PLUGIN_CB_REGULAR.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
25875fe9 |
| 14-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
plugins: Zero new qemu_plugin_dyn_cb entries
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
#
e096d370 |
| 24-Apr-2024 |
Philippe Mathieu-Daudé <philmd@linaro.org> |
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é <philm
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>
show more ...
|
#
ccd8f17e |
| 15-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
plugins: Introduce PLUGIN_CB_MEM_REGULAR
Use different enumerators for vcpu_udata and vcpu_mem callbacks.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderso
plugins: Introduce PLUGIN_CB_MEM_REGULAR
Use different enumerators for vcpu_udata and vcpu_mem callbacks.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
b0748975 |
| 15-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
tcg: Remove TCG_CALL_PLUGIN
Since we no longer emit plugin helpers during the initial code translation phase, we don't need to specially mark plugin helpers.
Reviewed-by: Pierrick Bouvier <pierrick
tcg: Remove TCG_CALL_PLUGIN
Since we no longer emit plugin helpers during the initial code translation phase, we don't need to specially mark plugin helpers.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
c7ba9483 |
| 14-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
plugins: Create TCGHelperInfo for all out-of-line callbacks
TCGHelperInfo includes the ABI for every function call.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richar
plugins: Create TCGHelperInfo for all out-of-line callbacks
TCGHelperInfo includes the ABI for every function call.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
aff56de5 |
| 15-Mar-2024 |
Richard Henderson <richard.henderson@linaro.org> |
plugins: Move function pointer in qemu_plugin_dyn_cb
The out-of-line function pointer is mutually exclusive with inline expansion, so move it into the union. Wrap the pointer in a structure named 'r
plugins: Move function pointer in qemu_plugin_dyn_cb
The out-of-line function pointer is mutually exclusive with inline expansion, so move it into the union. Wrap the pointer in a structure named 'regular' to match PLUGIN_CB_REGULAR.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|