[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 00/17] TCG Plugin inline operation enhancement
From: |
Pierrick Bouvier |
Subject: |
[PATCH v3 00/17] TCG Plugin inline operation enhancement |
Date: |
Tue, 6 Feb 2024 13:24:05 +0400 |
This series adds a new thread-safe API to declare inline operation
inside plugins. As well, it removes the existing non thread-safe API,
and migrates all existing plugins to use it.
Tested on Linux (user, system) for i386, x86_64 and aarch64.
To give some context, this a long term series of work around plugins,
with the goal to be able to do basic operations in a more performant and
accurate way. This will mean to add more inline operations and
conditional callbacks.
One final target of this work is to implement a plugin that implements
the icount=auto feature, and allow QEMU to run at a given "frequency"
based on number of instructions executed, without QEMU needing to keep
track of this.
Another final target is to be able to detect control flow changes in an
efficient and elegant way, by combining inline operation and conditional
callbacks.
v2
--
Implement scoreboard API (cpu local storage), so plugins don't have to deal
with how many cpus are used.
Since plugins have been modified again, I didn't transfer any reviewed-by on
those commits.
v3
--
- introduce qemu_plugin_num_vcpus (how many cpus were initialized)
- fix order of plugin init/idle/resume callbacks
- scoreboard:
- renamed qemu_plugin_u64_t -> qemu_plugin_u64
- some functions rename for scoreboard api
- qemu_plugin_u64 has only value based function (vs address before)
- various cleanup thanks to review of previous series
Based-on: 20240122145610.413836-1-alex.bennee@linaro.org
Version number: 3
Branches:
base:
plugin_registers_v3_20240122145610.413836-1-alex.bennee@linaro.org
topic: plugin_inline_per_vcpu
To: qemu-devel@nongnu.org
Pierrick Bouvier (17):
plugins: remove previous n_vcpus functions from API
plugins: add qemu_plugin_num_vcpus function
plugins: fix order of init/idle/resume callback
cpu: call plugin init hook asynchronously
plugins: scoreboard API
docs/devel: plugins can trigger a tb flush
plugins: implement inline operation relative to cpu_index
plugins: add inline operation per vcpu
tests/plugin: add test plugin for inline operations
tests/plugin/mem: migrate to new per_vcpu API
tests/plugin/insn: migrate to new per_vcpu API
tests/plugin/bb: migrate to new per_vcpu API
contrib/plugins/hotblocks: migrate to new per_vcpu API
contrib/plugins/howvec: migrate to new per_vcpu API
plugins: remove non per_vcpu inline operation from API
plugins: cleanup codepath for previous inline operation
MAINTAINERS: Add myself as reviewer for TCG Plugins
MAINTAINERS | 1 +
docs/devel/multi-thread-tcg.rst | 1 +
include/qemu/plugin.h | 6 ++
include/qemu/qemu-plugin.h | 151 ++++++++++++++++++++++++--------
plugins/plugin.h | 24 ++++--
accel/tcg/plugin-gen.c | 65 +++++++++++---
contrib/plugins/cache.c | 2 +-
contrib/plugins/hotblocks.c | 50 ++++++-----
contrib/plugins/howvec.c | 53 ++++++++----
hw/core/cpu-common.c | 9 +-
plugins/api.c | 121 ++++++++++++++++----------
plugins/core.c | 104 +++++++++++++++++++---
tests/plugin/bb.c | 63 ++++++--------
tests/plugin/inline.c | 186 ++++++++++++++++++++++++++++++++++++++++
tests/plugin/insn.c | 106 +++++++++++------------
tests/plugin/mem.c | 40 +++++----
plugins/qemu-plugins.symbols | 16 ++--
tests/plugin/meson.build | 2 +-
18 files changed, 745 insertions(+), 255 deletions(-)
Pierrick Bouvier (17):
plugins: remove previous n_vcpus functions from API
plugins: add qemu_plugin_num_vcpus function
plugins: fix order of init/idle/resume callback
cpu: call plugin init hook asynchronously
plugins: scoreboard API
docs/devel: plugins can trigger a tb flush
plugins: implement inline operation relative to cpu_index
plugins: add inline operation per vcpu
tests/plugin: add test plugin for inline operations
tests/plugin/mem: migrate to new per_vcpu API
tests/plugin/insn: migrate to new per_vcpu API
tests/plugin/bb: migrate to new per_vcpu API
contrib/plugins/hotblocks: migrate to new per_vcpu API
contrib/plugins/howvec: migrate to new per_vcpu API
plugins: remove non per_vcpu inline operation from API
plugins: cleanup codepath for previous inline operation
MAINTAINERS: Add myself as reviewer for TCG Plugins
MAINTAINERS | 1 +
docs/devel/multi-thread-tcg.rst | 1 +
include/qemu/plugin.h | 6 ++
include/qemu/qemu-plugin.h | 151 ++++++++++++++++++++------
plugins/plugin.h | 24 +++--
accel/tcg/plugin-gen.c | 65 +++++++++--
contrib/plugins/cache.c | 2 +-
contrib/plugins/hotblocks.c | 50 +++++----
contrib/plugins/howvec.c | 53 ++++++---
hw/core/cpu-common.c | 9 +-
plugins/api.c | 121 +++++++++++++--------
plugins/core.c | 104 ++++++++++++++++--
tests/plugin/bb.c | 63 +++++------
tests/plugin/inline.c | 186 ++++++++++++++++++++++++++++++++
tests/plugin/insn.c | 106 +++++++++---------
tests/plugin/mem.c | 40 ++++---
plugins/qemu-plugins.symbols | 16 ++-
tests/plugin/meson.build | 2 +-
18 files changed, 745 insertions(+), 255 deletions(-)
create mode 100644 tests/plugin/inline.c
--
2.43.0
- [PATCH v3 00/17] TCG Plugin inline operation enhancement,
Pierrick Bouvier <=
- [PATCH v3 01/17] plugins: remove previous n_vcpus functions from API, Pierrick Bouvier, 2024/02/06
- [PATCH v3 02/17] plugins: add qemu_plugin_num_vcpus function, Pierrick Bouvier, 2024/02/06
- [PATCH v3 03/17] plugins: fix order of init/idle/resume callback, Pierrick Bouvier, 2024/02/06
- [PATCH v3 04/17] cpu: call plugin init hook asynchronously, Pierrick Bouvier, 2024/02/06
- [PATCH v3 05/17] plugins: scoreboard API, Pierrick Bouvier, 2024/02/06