From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
kvm@vger.kernel.org,
"Richard Henderson" <richard.henderson@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [PATCH v5 00/69] accel: Preparatory cleanups for split-accel
Date: Thu, 3 Jul 2025 12:54:26 +0200 [thread overview]
Message-ID: <20250703105540.67664-1-philmd@linaro.org> (raw)
Missing review: 23-24, 27
Since v4:
- Addressed Pierrick & Zhao review comments
- Added R-b tags
Few changes needed before being able to add the
split acceleration:
- few method docstring added
- remove pointless stubs
- propagate soon required AccelState argument
- try to reduce current_accel() uses
- move declarations AccelClass <-> AccelOpsClass
- display model name in 'info cpus'
- add 'info accel' command to QMP/HMP
- make accel_create_vcpu_thread() more generic
- introduce hwaccel_enabled()
I plan to send a PR once fully reviewed (v5 likely final, 69 is a good number).
Regards,
Phil.
Philippe Mathieu-Daudé (69):
system/memory: Restrict eventfd dispatch_write() to emulators
system/runstate: Document qemu_add_vm_change_state_handler()
system/cpus: Defer memory layout changes until vCPUs are realized
system/cpus: Assert interrupt handling is done with BQL locked
accel: Keep reference to AccelOpsClass in AccelClass
accel: Introduce AccelOpsClass::cpu_target_realize() hook
accel/hvf: Add hvf_arch_cpu_realize() stubs
accel/kvm: Remove kvm_init_cpu_signals() stub
accel/kvm: Reduce kvm_create_vcpu() declaration scope
accel: Propagate AccelState to AccelClass::init_machine()
accel/kvm: Prefer local AccelState over global MachineState::accel
accel/hvf: Re-use QOM allocated state
accel/tcg: Prefer local AccelState over global current_accel()
accel: Directly pass AccelState argument to AccelClass::has_memory()
accel/kvm: Directly pass KVMState argument to do_kvm_create_vm()
accel: Remove unused MachineState argument of AccelClass::setup_post()
accel: Pass AccelState argument to gdbstub_supported_sstep_flags()
accel: Move supports_guest_debug() declaration to AccelClass
accel: Move cpus_are_resettable() declaration to AccelClass
accel: Move cpu_common_[un]realize() declarations to AccelOpsClass
accel/system: Convert pre_resume() from AccelOpsClass to AccelClass
hw/core/machine: Display CPU model name in 'info cpus' command
accel/tcg: Remove 'info opcount' and @x-query-opcount
accel/tcg: Remove profiler leftover
accel/tcg: Factor tcg_dump_flush_info() out
accel/tcg: Factor tcg_dump_stats() out for re-use
accel/tcg: Extract statistic related code to tcg-stats.c
qapi: Move definitions related to accelerators in their own file
accel/system: Introduce @x-accel-stats QMP command
accel/system: Add 'info accel' on human monitor
accel/tcg: Implement get_[vcpu]_stats()
accel/hvf: Implement get_vcpu_stats()
accel/hvf: Report missing com.apple.security.hypervisor entitlement
accel/hvf: Restrict internal declarations
accel/hvf: Move per-cpu method declarations to hvf-accel-ops.c
accel/hvf: Move generic method declarations to hvf-all.c
cpus: Document CPUState::vcpu_dirty field
accel/hvf: Replace @dirty field by generic CPUState::vcpu_dirty field
accel/nvmm: Replace @dirty field by generic CPUState::vcpu_dirty field
accel/whpx: Replace @dirty field by generic CPUState::vcpu_dirty field
accel/kvm: Remove kvm_cpu_synchronize_state() stub
accel/system: Document cpu_synchronize_state()
accel/system: Document cpu_synchronize_state_post_init/reset()
accel/nvmm: Expose nvmm_enabled() to common code
accel/whpx: Expose whpx_enabled() to common code
accel/system: Introduce hwaccel_enabled() helper
target/arm: Use generic hwaccel_enabled() to check 'host' cpu type
accel/dummy: Extract 'dummy-cpus.h' header from 'system/cpus.h'
accel/dummy: Factor dummy_thread_precreate() out
accel/tcg: Factor tcg_vcpu_thread_precreate() out
accel: Factor accel_create_vcpu_thread() out
accel: Introduce AccelOpsClass::cpu_thread_routine handler
accel/dummy: Convert to AccelOpsClass::cpu_thread_routine
accel/tcg: Convert to AccelOpsClass::cpu_thread_routine
accel/hvf: Convert to AccelOpsClass::cpu_thread_routine
accel/kvm: Convert to AccelOpsClass::cpu_thread_routine
accel/nvmm: Convert to AccelOpsClass::cpu_thread_routine
accel/whpx: Convert to AccelOpsClass::cpu_thread_routine
accel: Factor accel_cpu_realize() out
accel: Pass old/new interrupt mask to handle_interrupt() handler
accel: Expose and register generic_handle_interrupt()
accel: Always register AccelOpsClass::kick_vcpu_thread() handler
accel: Always register AccelOpsClass::get_elapsed_ticks() handler
accel: Always register AccelOpsClass::get_virtual_clock() handler
accel/tcg: Factor tcg_vcpu_init() out for re-use
accel/tcg: Factor mttcg_cpu_exec() out for re-use
accel/tcg: Factor rr_cpu_exec() out
accel/tcg: Clear exit_request once in tcg_cpu_exec()
accel/tcg: Unregister the RCU before exiting RR thread
MAINTAINERS | 1 +
qapi/accelerator.json | 74 +++++++
qapi/machine.json | 68 +-----
qapi/qapi-schema.json | 1 +
accel/accel-internal.h | 2 +
accel/dummy-cpus.h | 15 ++
accel/kvm/kvm-cpus.h | 1 -
accel/tcg/internal-common.h | 2 +
accel/tcg/tcg-accel-ops-icount.h | 2 +-
accel/tcg/tcg-accel-ops-mttcg.h | 4 +-
accel/tcg/tcg-accel-ops.h | 5 +-
include/hw/core/cpu.h | 3 +-
include/qemu/accel.h | 22 +-
include/system/accel-ops.h | 42 +++-
include/system/cpus.h | 5 -
include/system/hvf.h | 38 ----
include/system/hvf_int.h | 37 +++-
include/system/hw_accel.h | 34 ++-
include/system/kvm.h | 8 -
include/system/nvmm.h | 23 +-
include/system/runstate.h | 10 +
include/system/whpx.h | 27 +--
target/i386/whpx/whpx-accel-ops.h | 1 -
accel/accel-common.c | 55 ++++-
accel/accel-qmp.c | 34 +++
accel/accel-system.c | 35 ++-
accel/dummy-cpus.c | 11 +-
accel/hvf/hvf-accel-ops.c | 341 +++++-------------------------
accel/hvf/hvf-all.c | 281 ++++++++++++++++++++++--
accel/kvm/kvm-accel-ops.c | 25 +--
accel/kvm/kvm-all.c | 38 ++--
accel/qtest/qtest.c | 10 +-
accel/stubs/kvm-stub.c | 9 -
accel/stubs/nvmm-stub.c | 12 ++
accel/stubs/whpx-stub.c | 12 ++
accel/tcg/monitor.c | 212 +------------------
accel/tcg/tcg-accel-ops-icount.c | 8 +-
accel/tcg/tcg-accel-ops-mttcg.c | 28 +--
accel/tcg/tcg-accel-ops-rr.c | 40 ++--
accel/tcg/tcg-accel-ops.c | 44 ++--
accel/tcg/tcg-all.c | 20 +-
accel/tcg/tcg-stats.c | 206 ++++++++++++++++++
accel/xen/xen-all.c | 13 +-
bsd-user/main.c | 2 +-
gdbstub/system.c | 7 +-
hw/core/machine-hmp-cmds.c | 4 +-
hw/core/machine-qmp-cmds.c | 2 +
linux-user/main.c | 2 +-
system/cpus.c | 55 ++---
system/memory.c | 11 +-
system/physmem.c | 8 +
target/arm/arm-qmp-cmds.c | 5 +-
target/arm/cpu.c | 5 +-
target/arm/hvf/hvf.c | 11 +-
target/i386/hvf/hvf.c | 11 +-
target/i386/hvf/x86hvf.c | 2 +-
target/i386/nvmm/nvmm-accel-ops.c | 17 +-
target/i386/nvmm/nvmm-all.c | 29 +--
target/i386/whpx/whpx-accel-ops.c | 18 +-
target/i386/whpx/whpx-all.c | 33 ++-
tests/qtest/qmp-cmd-test.c | 1 -
accel/meson.build | 2 +-
accel/stubs/meson.build | 2 +
accel/tcg/meson.build | 1 +
hmp-commands-info.hx | 26 ++-
qapi/meson.build | 1 +
66 files changed, 1186 insertions(+), 928 deletions(-)
create mode 100644 qapi/accelerator.json
create mode 100644 accel/dummy-cpus.h
create mode 100644 accel/accel-qmp.c
create mode 100644 accel/stubs/nvmm-stub.c
create mode 100644 accel/stubs/whpx-stub.c
create mode 100644 accel/tcg/tcg-stats.c
--
2.49.0
next reply other threads:[~2025-07-03 10:55 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-03 10:54 Philippe Mathieu-Daudé [this message]
2025-07-03 10:54 ` [PATCH v5 01/69] system/memory: Restrict eventfd dispatch_write() to emulators Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 02/69] system/runstate: Document qemu_add_vm_change_state_handler() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 03/69] system/cpus: Defer memory layout changes until vCPUs are realized Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 04/69] system/cpus: Assert interrupt handling is done with BQL locked Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 05/69] accel: Keep reference to AccelOpsClass in AccelClass Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 06/69] accel: Introduce AccelOpsClass::cpu_target_realize() hook Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 07/69] accel/hvf: Add hvf_arch_cpu_realize() stubs Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 08/69] accel/kvm: Remove kvm_init_cpu_signals() stub Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 09/69] accel/kvm: Reduce kvm_create_vcpu() declaration scope Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 10/69] accel: Propagate AccelState to AccelClass::init_machine() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 11/69] accel/kvm: Prefer local AccelState over global MachineState::accel Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 12/69] accel/hvf: Re-use QOM allocated state Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 13/69] accel/tcg: Prefer local AccelState over global current_accel() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 14/69] accel: Directly pass AccelState argument to AccelClass::has_memory() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 15/69] accel/kvm: Directly pass KVMState argument to do_kvm_create_vm() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 16/69] accel: Remove unused MachineState argument of AccelClass::setup_post() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 17/69] accel: Pass AccelState argument to gdbstub_supported_sstep_flags() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 18/69] accel: Move supports_guest_debug() declaration to AccelClass Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 19/69] accel: Move cpus_are_resettable() " Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 20/69] accel: Move cpu_common_[un]realize() declarations to AccelOpsClass Philippe Mathieu-Daudé
2025-07-03 14:50 ` Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 21/69] accel/system: Convert pre_resume() from AccelOpsClass to AccelClass Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 22/69] hw/core/machine: Display CPU model name in 'info cpus' command Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 23/69] accel/tcg: Remove 'info opcount' and @x-query-opcount Philippe Mathieu-Daudé
2025-07-03 11:32 ` Dr. David Alan Gilbert
2025-07-03 17:12 ` Richard Henderson
2025-07-03 10:54 ` [PATCH v5 24/69] accel/tcg: Remove profiler leftover Philippe Mathieu-Daudé
2025-07-03 17:12 ` Richard Henderson
2025-07-03 10:54 ` [PATCH v5 25/69] accel/tcg: Factor tcg_dump_flush_info() out Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 26/69] accel/tcg: Factor tcg_dump_stats() out for re-use Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 27/69] accel/tcg: Extract statistic related code to tcg-stats.c Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 28/69] qapi: Move definitions related to accelerators in their own file Philippe Mathieu-Daudé
2025-07-03 16:42 ` Philippe Mathieu-Daudé
2025-07-15 17:29 ` Philippe Mathieu-Daudé
2025-07-16 8:23 ` Markus Armbruster
2025-07-16 9:24 ` Daniel P. Berrangé
2025-07-17 8:45 ` Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 29/69] accel/system: Introduce @x-accel-stats QMP command Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 30/69] accel/system: Add 'info accel' on human monitor Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 31/69] accel/tcg: Implement get_[vcpu]_stats() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 32/69] accel/hvf: Implement get_vcpu_stats() Philippe Mathieu-Daudé
2025-07-03 10:54 ` [PATCH v5 33/69] accel/hvf: Report missing com.apple.security.hypervisor entitlement Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 34/69] accel/hvf: Restrict internal declarations Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 35/69] accel/hvf: Move per-cpu method declarations to hvf-accel-ops.c Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 36/69] accel/hvf: Move generic method declarations to hvf-all.c Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 37/69] cpus: Document CPUState::vcpu_dirty field Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 38/69] accel/hvf: Replace @dirty field by generic " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 39/69] accel/nvmm: " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 40/69] accel/whpx: " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 41/69] accel/kvm: Remove kvm_cpu_synchronize_state() stub Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 42/69] accel/system: Document cpu_synchronize_state() Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 43/69] accel/system: Document cpu_synchronize_state_post_init/reset() Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 44/69] accel/nvmm: Expose nvmm_enabled() to common code Philippe Mathieu-Daudé
2025-07-03 11:01 ` Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 45/69] accel/whpx: Expose whpx_enabled() " Philippe Mathieu-Daudé
2025-07-03 11:02 ` Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 46/69] accel/system: Introduce hwaccel_enabled() helper Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 47/69] target/arm: Use generic hwaccel_enabled() to check 'host' cpu type Philippe Mathieu-Daudé
2025-07-03 13:45 ` Philippe Mathieu-Daudé
2025-07-03 13:46 ` Peter Maydell
2025-07-03 14:46 ` Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 48/69] accel/dummy: Extract 'dummy-cpus.h' header from 'system/cpus.h' Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 49/69] accel/dummy: Factor dummy_thread_precreate() out Philippe Mathieu-Daudé
2025-07-03 17:19 ` Richard Henderson
2025-07-03 10:55 ` [PATCH v5 50/69] accel/tcg: Factor tcg_vcpu_thread_precreate() out Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 51/69] accel: Factor accel_create_vcpu_thread() out Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 52/69] accel: Introduce AccelOpsClass::cpu_thread_routine handler Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 53/69] accel/dummy: Convert to AccelOpsClass::cpu_thread_routine Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 54/69] accel/tcg: " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 55/69] accel/hvf: " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 56/69] accel/kvm: " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 57/69] accel/nvmm: " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 58/69] accel/whpx: " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 59/69] accel: Factor accel_cpu_realize() out Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 60/69] accel: Pass old/new interrupt mask to handle_interrupt() handler Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 61/69] accel: Expose and register generic_handle_interrupt() Philippe Mathieu-Daudé
2025-07-03 17:21 ` Richard Henderson
2025-07-03 10:55 ` [PATCH v5 62/69] accel: Always register AccelOpsClass::kick_vcpu_thread() handler Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 63/69] accel: Always register AccelOpsClass::get_elapsed_ticks() handler Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 64/69] accel: Always register AccelOpsClass::get_virtual_clock() handler Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 65/69] accel/tcg: Factor tcg_vcpu_init() out for re-use Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 66/69] accel/tcg: Factor mttcg_cpu_exec() " Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 67/69] accel/tcg: Factor rr_cpu_exec() out Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 68/69] accel/tcg: Clear exit_request once in tcg_cpu_exec() Philippe Mathieu-Daudé
2025-07-03 10:55 ` [PATCH v5 69/69] accel/tcg: Unregister the RCU before exiting RR thread Philippe Mathieu-Daudé
2025-07-03 11:06 ` [PATCH v5 00/69] accel: Preparatory cleanups for split-accel Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250703105540.67664-1-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=kvm@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).