The test patch is a simple house keeping one to clean up some inadvertent GPLv3 tagging to GPLv2-or-later. I've also increased the timeout for check-tcg due to TCI timesouts.
The main bulk of this series is register reading support for TCG plugins. The main change to the API is that the get/read_register functions are now implicitly vCPU context only so have dropped the vcpu index parameter and use current_cpu instead. This avoids the need for locking the gdbstub structures in case there is a cross-vCPU access. I've pulled in some patches from Pierrick's inline enhancement series that allow this to happen (making sure the init callback is in the vCPU context). Changes for v2: After lots of back and forth in the last review I've dropped trying to be clever with CPUClass as it was pointed out even with a common CPUClass we might see different sets of registers depending on what features are enabled on a CPU. Now I just have a hash per CPUState (stored in the new CPUPluginState structure) with a simple reg_num key. I also fixed a bug in nios2-linux-user. The following still need review: contrib/plugins: extend execlog to track register changes tests/tcg: expand insn test case to exercise register API plugins: create CPUPluginState and migrate plugin_mask gdbstub: expose api to find registers linux-user: ensure nios2 processes queued work tests/tcg: bump TCG test timeout to 120s But I'd like to get this merged soon so its not a mad rush before soft freeze and so we can get the new inline support stabilised and merged. Alex. Akihiko Odaki (11): target/arm: Use GDBFeature for dynamic XML target/ppc: Use GDBFeature for dynamic XML target/riscv: Use GDBFeature for dynamic XML gdbstub: Use GDBFeature for gdb_register_coprocessor gdbstub: Use GDBFeature for GDBRegisterState gdbstub: Change gdb_get_reg_cb and gdb_set_reg_cb gdbstub: Simplify XML lookup gdbstub: Infer number of core registers from XML hw/core/cpu: Remove gdb_get_dynamic_xml member gdbstub: Add members to identify registers to GDBFeature plugins: Use different helpers when reading registers Alex Bennée (11): tests/tcg: update licenses to GPLv2 as intended tests/tcg: bump TCG test timeout to 120s linux-user: ensure nios2 processes queued work gdbstub: expose api to find registers plugins: create CPUPluginState and migrate plugin_mask plugins: add an API to read registers tests/tcg: expand insn test case to exercise register API contrib/plugins: fix imatch contrib/plugins: extend execlog to track register changes docs/devel: lift example and plugin API sections up docs/devel: document some plugin assumptions Pierrick Bouvier (5): 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 docs/devel: plugins can trigger a tb flush docs/devel/multi-thread-tcg.rst | 1 + docs/devel/tcg-plugins.rst | 72 +++- accel/tcg/plugin-helpers.h | 3 +- include/exec/gdbstub.h | 43 ++- include/hw/core/cpu.h | 18 +- include/qemu/plugin.h | 16 + include/qemu/qemu-plugin.h | 59 +++- include/qemu/typedefs.h | 1 + plugins/plugin.h | 6 +- target/arm/cpu.h | 27 +- target/arm/internals.h | 14 +- target/hexagon/internal.h | 4 +- target/microblaze/cpu.h | 4 +- target/ppc/cpu-qom.h | 1 + target/ppc/cpu.h | 5 +- target/riscv/cpu.h | 5 +- target/s390x/cpu.h | 2 - tests/tcg/aarch64/semicall.h | 4 +- tests/tcg/arm/semicall.h | 4 +- tests/tcg/multiarch/float_helpers.h | 4 +- tests/tcg/riscv64/semicall.h | 4 +- accel/tcg/plugin-gen.c | 46 ++- contrib/plugins/cache.c | 2 +- contrib/plugins/execlog.c | 318 +++++++++++++++--- gdbstub/gdbstub.c | 169 ++++++---- hw/core/cpu-common.c | 15 +- linux-user/nios2/cpu_loop.c | 1 + plugins/api.c | 129 +++++-- plugins/core.c | 27 +- target/arm/cpu.c | 2 - target/arm/cpu64.c | 1 - target/arm/gdbstub.c | 230 ++++++------- target/arm/gdbstub64.c | 122 +++---- target/avr/cpu.c | 1 - target/hexagon/cpu.c | 4 +- target/hexagon/gdbstub.c | 10 +- target/i386/cpu.c | 2 - target/loongarch/cpu.c | 2 - target/loongarch/gdbstub.c | 13 +- target/m68k/cpu.c | 1 - target/m68k/helper.c | 26 +- target/microblaze/cpu.c | 6 +- target/microblaze/gdbstub.c | 14 +- target/ppc/cpu_init.c | 7 - target/ppc/gdbstub.c | 114 ++++--- target/riscv/cpu.c | 15 - target/riscv/gdbstub.c | 145 ++++---- target/rx/cpu.c | 1 - target/s390x/cpu.c | 1 - target/s390x/gdbstub.c | 105 +++--- tests/plugin/insn.c | 21 ++ .../multiarch/arm-compat-semi/semiconsole.c | 4 +- .../multiarch/arm-compat-semi/semihosting.c | 4 +- tests/tcg/multiarch/float_convd.c | 4 +- tests/tcg/multiarch/float_convs.c | 4 +- tests/tcg/multiarch/float_madds.c | 4 +- tests/tcg/multiarch/libs/float_helpers.c | 4 +- plugins/qemu-plugins.symbols | 5 +- scripts/feature_to_c.py | 14 +- tests/tcg/Makefile.target | 9 +- tests/tcg/i386/system/boot.S | 6 +- tests/tcg/x86_64/system/boot.S | 6 +- 62 files changed, 1257 insertions(+), 654 deletions(-) -- 2.39.2