[PATCH v3 00/17] TCG Plugin inline operation enhancement

Pierrick Bouvier posted 17 patches 9 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240206092423.3005995-1-pierrick.bouvier@linaro.org
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Alex Bennée" <alex.bennee@linaro.org>, Alexandre Iooss <erdnaxe@crans.org>, Mahmoud Mandour <ma.mandourr@gmail.com>, Pierrick Bouvier <pierrick.bouvier@linaro.org>, Eduardo Habkost <eduardo@habkost.net>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Yanan Wang <wangyanan55@huawei.com>
There is a newer version of this series
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
[PATCH v3 00/17] TCG Plugin inline operation enhancement
Posted by Pierrick Bouvier 9 months, 3 weeks ago
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
Re: [PATCH v3 00/17] TCG Plugin inline operation enhancement
Posted by Alex Bennée 9 months, 3 weeks ago
Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:

> 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.

I've cherry-picked 3 and 4 into plugins/next so I can re-base the
registers work. I'll have a look at the rest of the series once I'm back
at my desk.

>
> 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

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH v3 00/17] TCG Plugin inline operation enhancement
Posted by Alex Bennée 9 months, 3 weeks ago
Alex Bennée <alex.bennee@linaro.org> writes:

> Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
>
>> 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.
>
> I've cherry-picked 3 and 4 into plugins/next so I can re-base the
> registers work. I'll have a look at the rest of the series once I'm back
> at my desk.

Actually belay that, I'm caught in a circular dependency because this is
based on the registers series. I'll sort it out tomorrow.

>
>>
>> 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

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro
Re: [PATCH v3 00/17] TCG Plugin inline operation enhancement
Posted by Pierrick Bouvier 9 months, 3 weeks ago
On 2/7/24 20:06, Alex Bennée wrote:
> Alex Bennée <alex.bennee@linaro.org> writes:
> 
>> Pierrick Bouvier <pierrick.bouvier@linaro.org> writes:
>>
>>> 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.
>>
>> I've cherry-picked 3 and 4 into plugins/next so I can re-base the
>> registers work. I'll have a look at the rest of the series once I'm back
>> at my desk.
> 
> Actually belay that, I'm caught in a circular dependency because this is
> based on the registers series. I'll sort it out tomorrow.
> 

You'll need 1 and 2 too, which allows to get number of cpus init, used 
in 4. You can as well submit this as part of register series if you 
prefer, so there won't be any conflict.

>>
>>>
>>> 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
>