Ziyang Zhang
731525c276
plugins: use int64_t for the syscall filter return value
...
The syscall return value passed back through the syscall filter
callback is semantically signed: negative values encode errno codes.
Declaring the sysret pointer as uint64_t * is therefore misleading and
forces callers to launder the value through an unsigned temporary.
Change the sysret pointer to int64_t * across the public plugin API
typedef (qemu_plugin_vcpu_syscall_filter_cb_t), the internal
qemu_plugin_vcpu_syscall_filter() prototypes and stub, its
implementation in plugins/core.c, the linux-user caller, and the
in-tree example plugins.
Signed-off-by: Ziyang Zhang <functioner@sjtu.edu.cn >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
Link: https://lore.kernel.org/qemu-devel/20260618082426.790315-2-functioner@sjtu.edu.cn
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-18 16:47:12 -07:00
Pierrick Bouvier
13c6930028
plugins: use consistent parameter documentation for userdata
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-24-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
25c6c15f7d
plugins: add userdata to qemu_plugin_register_vcpu_syscall_ret_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-23-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
6a6001021e
plugins: remove qemu_plugin_id from qemu_plugin_vcpu_syscall_ret_cb_t
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-22-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
d7706f7e89
plugins: add userdata to qemu_plugin_register_vcpu_syscall_filter_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-21-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
b8cdea393f
plugins: remove qemu_plugin_id from qemu_plugin_vcpu_syscall_filter_cb_t
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-20-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
1abe87fd59
plugins: add userdata to qemu_plugin_register_vcpu_syscall_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-19-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
0d71602089
plugins: remove qemu_plugin_id from qemu_plugin_vcpu_syscall_cb_t
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-18-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
285c40aaac
plugins: add userdata to qemu_plugin_vcpu_tb_trans_cb_t
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-17-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
ab24e19b42
plugins: remove qemu_plugin_id from qemu_plugin_vcpu_tb_trans_cb_t
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-16-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
65f399bce2
plugins: remove qemu_plugin_id from qemu_plugin_vcpu_discon_cb_t
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-15-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
041dca1e1b
plugins: add userdata to qemu_plugin_register_vcpu_discon_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-14-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
42e593c856
plugins: remove type qemu_plugin_vcpu_simple_cb_t
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-13-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
0079bbd8d5
plugins: add userdata to qemu_plugin_vcpu_for_each
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-12-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
e12944179a
plugins: add userdata to qemu_plugin_register_vcpu_resume_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-11-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
89662f8903
plugins: add userdata to qemu_plugin_register_vcpu_idle_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-10-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
214d9c0e33
plugins: add userdata to qemu_plugin_register_vcpu_exit_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-9-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
7cb918441a
plugins: add userdata to qemu_plugin_register_vcpu_init_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-8-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
6be156bd4d
plugins: remove qemu_plugin_id_t from qemu_plugin_vcpu_simple_cb_t
...
Not used in all our plugins.
Future commits will remove qemu_plugin_vcpu_simple_cb_t completely, and
replace it with qemu_plugin_vcpu_udata_cb_t, so id information can be
passed using userdata if needed.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-7-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
32a0ddf36a
plugins: remove qemu_plugin_id_t from qemu_plugin_udata_cb_t
...
We can now rely on userdata being always available to pass down this id
if needed.
In our plugins, only tests/tcg/plugins/reset.c was using it.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-6-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
de7c973f55
plugins: remove type qemu_plugin_simple_cb_t
...
We removed all usage of this type, it can now be removed.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-5-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
58ba4498d8
plugins: add userdata to qemu_plugin_register_flush_cb
...
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-4-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
d3b790036a
plugins: add userdata for qemu_plugin_{uninstall, reset}
...
We do both at the same time because they internally use the same
implementation.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-3-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
e5dcb06798
plugins: bump version
...
Next commits will be breaking changes, so bump min version and version
accordingly.
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260615193526.2883349-2-pierrick.bouvier@oss.qualcomm.com
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com >
2026-06-16 10:59:05 -07:00
Pierrick Bouvier
a08fff99be
include/plugins/qemu-plugin.h: add note about endianness of value returned by qemu_plugin_mem_get_value
...
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260325024252.3369186-3-pierrick.bouvier@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
2026-03-25 14:51:15 -07:00
Stefan Weil
b7ae542de4
Fix several typos in documentation (found by codespell)
...
Signed-off-by: Stefan Weil <sw@weilnetz.de >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
[Mjt: add 2 fixes suggested by Peter: "as a" and "deactivate"]
Reviewed-by: Michael Tokarev <mjt@tls.msk.ru >
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru >
2026-03-23 19:55:24 +03:00
Florian Hofhammer
71b424ca76
plugins: add missing docstrings to qemu-plugin.h
...
This patch adds docstrings for typedefs and function declarations in
include/plugins/qemu-plugin.h that were previously missing. This
resolves inconsistencies in the docs, e.g., the description for
qemu_plugin_read_register() referring to qemu_plugin_register_flush_cb()
but code cache flush callbacks not being documented themselves.
Signed-off-by: Florian Hofhammer <florian.hofhammer@epfl.ch >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260311-add-missing-plugin-docs-v3-1-d68b9135e397@epfl.ch
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
2026-03-11 12:30:17 -07:00
Florian Hofhammer
0443c203c4
plugins: add missing callbacks to version history
...
The discontinuity and system call filter callbacks were not reflected in
the versioning comments before. The callbacks have been introduced in
aac73d85d2 and
5ed628d1d3 , respectively.
Signed-off-by: Florian Hofhammer <florian.hofhammer@epfl.ch >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Link: https://lore.kernel.org/qemu-devel/c4ecefb4-8769-403f-8420-8bce42e43e13@epfl.ch
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
2026-03-05 10:54:09 -08:00
Florian Hofhammer
3ebd871cbd
plugins: add read-only property for registers
...
Some registers should be marked as read-only from a plugin API
perspective, as writing to them via qemu_plugin_write_register has no
effect. This includes the program counter, and we expose this fact to
the plugins with this patch.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Florian Hofhammer <florian.hofhammer@epfl.ch >
Link: https://lore.kernel.org/qemu-devel/20260305-setpc-v5-v7-6-4c3adba52403@epfl.ch
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
2026-03-05 10:54:09 -08:00
Florian Hofhammer
4f55cd7801
plugins: add PC diversion API function
...
This patch adds a plugin API function that allows diverting the program
counter during execution. A potential use case for this functionality is
to skip over parts of the code, e.g., by hooking into a specific
instruction and setting the PC to the next instruction in the callback.
Link: https://lists.nongnu.org/archive/html/qemu-devel/2025-08/msg00656.html
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Florian Hofhammer <florian.hofhammer@epfl.ch >
Link: https://lore.kernel.org/qemu-devel/20260305-setpc-v5-v7-4-4c3adba52403@epfl.ch
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
2026-03-05 10:54:09 -08:00
Florian Hofhammer
d16ffa4244
plugins: add flag to specify whether PC is rw
...
In addition to the flags specifying whether general-purpose registers
are read-write (rw) during a plugin callback, we add an additional flag
explicitly stating whether the PC is writable. This is in preparation of
a patch that allows to explicitly set the PC to divert control flow from
within a plugin callback, which is currently not possible.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Florian Hofhammer <florian.hofhammer@epfl.ch >
Link: https://lore.kernel.org/qemu-devel/20260305-setpc-v5-v7-2-4c3adba52403@epfl.ch
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
2026-03-05 10:54:09 -08:00
Pierrick Bouvier
cab15547f1
plugins: move qemu-plugin.h to include/plugins/
...
This change has two benefits:
- ensure plugins can't include anything else from QEMU than plugins API
- when compiling a C++ module, solves the header conflict with iostream
header that includes transitively the wrong ctype.h, which already
exists in include/qemu.
By Hyrum's law, there was already one usage of other headers with mem
plugin, which has been eliminated in previous commit.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Reviewed-by: Manos Pitsidianakis <manos.pitsidianakis@linaro.org >
Link: https://lore.kernel.org/qemu-devel/20260124182921.531562-7-pierrick.bouvier@linaro.org
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
2026-01-29 09:34:14 -08:00