From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"Alexander Graf" <agraf@csgraf.de>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Thomas Huth" <thuth@redhat.com>,
"Cameron Esfahani" <dirty@apple.com>,
"Julian Armistead" <julian.armistead@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Edgar E. Iglesias" <edgar.iglesias@gmail.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: [RFC PATCH v2 20/48] cpus: Rename 'vcpu_dirty' field as negated 'hwaccel_synchronized'
Date: Fri, 20 Jun 2025 19:13:13 +0200 [thread overview]
Message-ID: <20250620171342.92678-21-philmd@linaro.org> (raw)
In-Reply-To: <20250620171342.92678-1-philmd@linaro.org>
Try to better describe which side is dirty (QEMU process or
hardware accelerator) by renaming as @hwaccel_synchronized.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
include/hw/core/cpu.h | 4 ++--
accel/kvm/kvm-all.c | 20 ++++++++++----------
target/mips/kvm.c | 4 ++--
3 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index 69ea425c458..d5f82609943 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -441,7 +441,7 @@ struct qemu_work_item;
* @opaque: User data.
* @mem_io_pc: Host Program Counter at which the memory was accessed.
* @accel: Pointer to accelerator specific state.
- * @vcpu_dirty: Hardware accelerator is not synchronized with QEMU state
+ * @hwaccel_synchronized: Hardware accelerator is synchronized with QEMU state
* @kvm_fd: vCPU file descriptor for KVM.
* @work_mutex: Lock to prevent multiple access to @work_list.
* @work_list: List of pending asynchronous work.
@@ -538,7 +538,6 @@ struct CPUState {
uint32_t kvm_fetch_index;
uint64_t dirty_pages;
int kvm_vcpu_stats_fd;
- bool vcpu_dirty;
/* Use by accel-block: CPU is executing an ioctl() */
QemuLockCnt in_ioctl_lock;
@@ -555,6 +554,7 @@ struct CPUState {
int32_t exception_index;
AccelCPUState *accel;
+ bool hwaccel_synchronized;
/* Used to keep track of an outstanding cpu throttle thread for migration
* autoconverge
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 37faf615cbc..dca6d4b99ef 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -478,8 +478,8 @@ static int kvm_create_vcpu(CPUState *cpu)
cpu->kvm_fd = kvm_fd;
cpu->kvm_state = s;
- if (!s->guest_state_protected) {
- cpu->vcpu_dirty = true;
+ if (s->guest_state_protected) {
+ cpu->hwaccel_synchronized = true;
}
cpu->dirty_pages = 0;
cpu->throttle_us_per_full = 0;
@@ -2880,7 +2880,7 @@ void kvm_flush_coalesced_mmio_buffer(void)
static void do_kvm_cpu_synchronize_state(CPUState *cpu, run_on_cpu_data arg)
{
- if (!cpu->vcpu_dirty && !kvm_state->guest_state_protected) {
+ if (cpu->hwaccel_synchronized && !kvm_state->guest_state_protected) {
Error *err = NULL;
int ret = kvm_arch_get_registers(cpu, &err);
if (ret) {
@@ -2894,13 +2894,13 @@ static void do_kvm_cpu_synchronize_state(CPUState *cpu, run_on_cpu_data arg)
vm_stop(RUN_STATE_INTERNAL_ERROR);
}
- cpu->vcpu_dirty = true;
+ cpu->hwaccel_synchronized = false;
}
}
void kvm_cpu_synchronize_state(CPUState *cpu)
{
- if (!cpu->vcpu_dirty && !kvm_state->guest_state_protected) {
+ if (cpu->hwaccel_synchronized && !kvm_state->guest_state_protected) {
run_on_cpu(cpu, do_kvm_cpu_synchronize_state, RUN_ON_CPU_NULL);
}
}
@@ -2920,7 +2920,7 @@ static void do_kvm_cpu_synchronize_post_reset(CPUState *cpu, run_on_cpu_data arg
vm_stop(RUN_STATE_INTERNAL_ERROR);
}
- cpu->vcpu_dirty = false;
+ cpu->hwaccel_synchronized = true;
}
void kvm_cpu_synchronize_post_reset(CPUState *cpu)
@@ -2946,7 +2946,7 @@ static void do_kvm_cpu_synchronize_post_init(CPUState *cpu, run_on_cpu_data arg)
exit(1);
}
- cpu->vcpu_dirty = false;
+ cpu->hwaccel_synchronized = true;
}
void kvm_cpu_synchronize_post_init(CPUState *cpu)
@@ -2962,7 +2962,7 @@ void kvm_cpu_synchronize_post_init(CPUState *cpu)
static void do_kvm_cpu_synchronize_pre_loadvm(CPUState *cpu, run_on_cpu_data arg)
{
- cpu->vcpu_dirty = true;
+ cpu->hwaccel_synchronized = false;
}
void kvm_cpu_synchronize_pre_loadvm(CPUState *cpu)
@@ -3131,7 +3131,7 @@ int kvm_cpu_exec(CPUState *cpu)
do {
MemTxAttrs attrs;
- if (cpu->vcpu_dirty) {
+ if (!cpu->hwaccel_synchronized) {
Error *err = NULL;
ret = kvm_arch_put_registers(cpu, KVM_PUT_RUNTIME_STATE, &err);
if (ret) {
@@ -3145,7 +3145,7 @@ int kvm_cpu_exec(CPUState *cpu)
break;
}
- cpu->vcpu_dirty = false;
+ cpu->hwaccel_synchronized = true;
}
kvm_arch_pre_run(cpu, run);
diff --git a/target/mips/kvm.c b/target/mips/kvm.c
index ec53acb51a1..44fca0d649f 100644
--- a/target/mips/kvm.c
+++ b/target/mips/kvm.c
@@ -565,7 +565,7 @@ static void kvm_mips_update_state(void *opaque, bool running, RunState state)
* already saved and can be restored when it is synced back to KVM.
*/
if (!running) {
- if (!cs->vcpu_dirty) {
+ if (cs->hwaccel_synchronized) {
ret = kvm_mips_save_count(cs);
if (ret < 0) {
warn_report("Failed saving count");
@@ -581,7 +581,7 @@ static void kvm_mips_update_state(void *opaque, bool running, RunState state)
return;
}
- if (!cs->vcpu_dirty) {
+ if (cs->hwaccel_synchronized) {
ret = kvm_mips_restore_count(cs);
if (ret < 0) {
warn_report("Failed restoring count");
--
2.49.0
next prev parent reply other threads:[~2025-06-20 17:20 UTC|newest]
Thread overview: 77+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-20 17:12 [RFC PATCH v2 00/48] accel: Preparatory cleanups for split-accel Philippe Mathieu-Daudé
2025-06-20 17:12 ` [RFC PATCH v2 01/48] system/runstate: Document qemu_add_vm_change_state_handler() Philippe Mathieu-Daudé
2025-06-22 1:11 ` Richard Henderson
2025-06-20 17:12 ` [RFC PATCH v2 02/48] system/cpus: Defer memory layout changes until vCPUs are realized Philippe Mathieu-Daudé
2025-06-20 17:12 ` [RFC PATCH v2 03/48] system/cpus: Assert interrupt handling is done with BQL locked Philippe Mathieu-Daudé
2025-06-22 1:12 ` Richard Henderson
2025-06-20 17:12 ` [RFC PATCH v2 04/48] accel/kvm: Remove kvm_init_cpu_signals() stub Philippe Mathieu-Daudé
2025-06-22 1:13 ` Richard Henderson
2025-06-20 17:12 ` [RFC PATCH v2 05/48] accel/kvm: Reduce kvm_create_vcpu() declaration scope Philippe Mathieu-Daudé
2025-06-22 1:14 ` Richard Henderson
2025-06-20 17:12 ` [RFC PATCH v2 06/48] accel: Propagate AccelState to AccelClass::init_machine() Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 07/48] accel/kvm: Prefer local AccelState over global MachineState::accel Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 08/48] accel/hvf: Re-use QOM allocated state Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 09/48] accel/tcg: Prefer local AccelState over global current_accel() Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 10/48] accel: Pass AccelState argument to gdbstub_supported_sstep_flags() Philippe Mathieu-Daudé
2025-06-22 1:16 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 11/48] accel: Move supports_guest_debug() declaration to AccelClass Philippe Mathieu-Daudé
2025-06-22 1:20 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 12/48] accel: Move cpus_are_resettable() " Philippe Mathieu-Daudé
2025-06-22 1:22 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 13/48] accel: Move cpu_common_[un]realize() declarations to AccelOpsClass Philippe Mathieu-Daudé
2025-06-22 1:24 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 14/48] hw/core/machine: Display CPU model name in 'info cpus' command Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 15/48] accel/system: Add 'info accel' on human monitor Philippe Mathieu-Daudé
2025-06-22 1:26 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 16/48] accel/tcg: Factor tcg_dump_flush_info() out Philippe Mathieu-Daudé
2025-06-22 1:28 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 17/48] accel/tcg: Implement get_[vcpu]_stats() Philippe Mathieu-Daudé
2025-06-22 1:28 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 18/48] accel/hvf: Implement get_vcpu_stats() Philippe Mathieu-Daudé
2025-06-22 1:30 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 19/48] cpus: Document CPUState::vcpu_dirty field Philippe Mathieu-Daudé
2025-06-22 1:30 ` Richard Henderson
2025-06-20 17:13 ` Philippe Mathieu-Daudé [this message]
2025-06-22 1:35 ` [RFC PATCH v2 20/48] cpus: Rename 'vcpu_dirty' field as negated 'hwaccel_synchronized' Richard Henderson
2025-06-23 14:13 ` Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 21/48] accel/hvf: Replace @dirty field by generic @hwaccel_synchronized Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 22/48] accel/nvmm: " Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 23/48] accel/whpx: " Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 24/48] accel/kvm: Remove kvm_cpu_synchronize_state() stub Philippe Mathieu-Daudé
2025-06-22 1:35 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 25/48] accel/system: Document cpu_synchronize_state() Philippe Mathieu-Daudé
2025-06-22 1:46 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 26/48] accel/system: Document cpu_synchronize_state_post_init/reset() Philippe Mathieu-Daudé
2025-06-22 1:46 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 27/48] accel/dummy: Factor dummy_thread_precreate() out Philippe Mathieu-Daudé
2025-06-22 1:58 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 28/48] accel/dummy: Factor tcg_vcpu_thread_precreate() out Philippe Mathieu-Daudé
2025-06-22 1:49 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 29/48] accel: Factor accel_create_vcpu_thread() out Philippe Mathieu-Daudé
2025-06-22 1:56 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 30/48] accel: Introduce AccelOpsClass::cpu_thread_routine handler Philippe Mathieu-Daudé
2025-06-22 1:58 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 31/48] accel/dummy: Convert to AccelOpsClass::cpu_thread_routine Philippe Mathieu-Daudé
2025-06-22 1:59 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 32/48] accel/tcg: " Philippe Mathieu-Daudé
2025-06-22 2:03 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 33/48] accel/hvf: " Philippe Mathieu-Daudé
2025-06-22 2:04 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 34/48] accel/kvm: " Philippe Mathieu-Daudé
2025-06-22 2:05 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 35/48] accel/nvmm: " Philippe Mathieu-Daudé
2025-06-22 2:05 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 36/48] accel/whpx: " Philippe Mathieu-Daudé
2025-06-22 2:05 ` Richard Henderson
2025-06-22 2:10 ` Richard Henderson
2025-06-23 12:31 ` Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 37/48] accel/nvmm: Expose nvmm_enabled() to common code Philippe Mathieu-Daudé
2025-06-22 2:06 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 38/48] accel/whpx: Expose whpx_enabled() " Philippe Mathieu-Daudé
2025-06-22 2:07 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 39/48] accel/system: Introduce hwaccel_enabled() helper Philippe Mathieu-Daudé
2025-06-22 2:08 ` Richard Henderson
2025-06-20 17:13 ` [RFC PATCH v2 40/48] accel: Factor accel_cpu_realize() out Philippe Mathieu-Daudé
2025-06-22 2:14 ` Richard Henderson
2025-06-23 14:16 ` Philippe Mathieu-Daudé
2025-06-20 17:13 ` [RFC PATCH v2 41/48] accel/tcg: Factor tcg_vcpu_init() out for re-use 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=20250620171342.92678-21-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=agraf@csgraf.de \
--cc=alex.bennee@linaro.org \
--cc=dirty@apple.com \
--cc=edgar.iglesias@gmail.com \
--cc=julian.armistead@linaro.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=thuth@redhat.com \
/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).