mbox series

[00/12] TCG Plugin inline operation enhancement

Message ID 20240111142326.1743444-1-pierrick.bouvier@linaro.org
Headers show
Series TCG Plugin inline operation enhancement | expand

Message

Pierrick Bouvier Jan. 11, 2024, 2:23 p.m. UTC
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.

 Pierrick Bouvier (12):
       plugins: implement inline operation with cpu_index offset
       plugins: add inline operation per vcpu
       tests/plugin: add test plugin for inline operations
       tests/plugin/inline: migrate to new per_vcpu API
       tests/plugin/mem: fix race condition with callbacks
       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
       MAINTAINERS: Add myself as reviewer for TCG Plugins

  MAINTAINERS                  |   1 +
  accel/tcg/plugin-gen.c       |  60 +++++++++++++---
  contrib/plugins/hotblocks.c  |  25 +++++--
  contrib/plugins/howvec.c     |  33 ++++++---
  include/qemu/plugin.h        |   1 +
  include/qemu/qemu-plugin.h   |  65 +++++++++--------
  plugins/api.c                |  35 +++++----
  plugins/core.c               |  11 +--
  plugins/plugin.h             |   5 +-
  plugins/qemu-plugins.symbols |   3 +
  tests/plugin/bb.c            |  54 +++++++-------
  tests/plugin/inline.c        | 166 +++++++++++++++++++++++++++++++++++++++++++
  tests/plugin/insn.c          |  14 ++--
  tests/plugin/mem.c           |  21 ++++--
  tests/plugin/meson.build     |   2 +-
  15 files changed, 383 insertions(+), 113 deletions(-)

Pierrick Bouvier (12):
  plugins: implement inline operation with cpu_index offset
  plugins: add inline operation per vcpu
  tests/plugin: add test plugin for inline operations
  tests/plugin/inline: migrate to new per_vcpu API
  tests/plugin/mem: fix race condition with callbacks
  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
  MAINTAINERS: Add myself as reviewer for TCG Plugins

 MAINTAINERS                  |   1 +
 accel/tcg/plugin-gen.c       |  60 ++++++++++---
 contrib/plugins/hotblocks.c  |  25 ++++--
 contrib/plugins/howvec.c     |  33 ++++---
 include/qemu/plugin.h        |   1 +
 include/qemu/qemu-plugin.h   |  65 ++++++++------
 plugins/api.c                |  35 +++++---
 plugins/core.c               |  11 ++-
 plugins/plugin.h             |   5 +-
 plugins/qemu-plugins.symbols |   3 +
 tests/plugin/bb.c            |  54 ++++++------
 tests/plugin/inline.c        | 166 +++++++++++++++++++++++++++++++++++
 tests/plugin/insn.c          |  14 ++-
 tests/plugin/mem.c           |  21 +++--
 tests/plugin/meson.build     |   2 +-
 15 files changed, 383 insertions(+), 113 deletions(-)
 create mode 100644 tests/plugin/inline.c