From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: Sergio Andres Gomez Del Real <sergio.g.delreal@gmail.com>,
Sergio Andres Gomez Del Real <Sergio.G.DelReal@gmail.com>
Subject: [Qemu-devel] [PULL 01/42] vcpu_dirty: share the same field in CPUState for all accelerators
Date: Wed, 5 Jul 2017 09:14:04 +0200 [thread overview]
Message-ID: <1499238885-26161-2-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1499238885-26161-1-git-send-email-pbonzini@redhat.com>
From: Sergio Andres Gomez Del Real <sergio.g.delreal@gmail.com>
This patch simply replaces the separate boolean field in CPUState that
kvm, hax (and upcoming hvf) have for keeping track of vcpu dirtiness
with a single shared field.
Signed-off-by: Sergio Andres Gomez Del Real <Sergio.G.DelReal@gmail.com>
Message-Id: <20170618191101.3457-1-Sergio.G.DelReal@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
accel/kvm/kvm-all.c | 18 +++++++++---------
include/qom/cpu.h | 5 +++--
target/i386/hax-all.c | 12 ++++++------
target/mips/kvm.c | 4 ++--
4 files changed, 20 insertions(+), 19 deletions(-)
diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c
index 75feffa..cd71e28 100644
--- a/accel/kvm/kvm-all.c
+++ b/accel/kvm/kvm-all.c
@@ -318,7 +318,7 @@ int kvm_init_vcpu(CPUState *cpu)
cpu->kvm_fd = ret;
cpu->kvm_state = s;
- cpu->kvm_vcpu_dirty = true;
+ cpu->vcpu_dirty = true;
mmap_size = kvm_ioctl(s, KVM_GET_VCPU_MMAP_SIZE, 0);
if (mmap_size < 0) {
@@ -1864,15 +1864,15 @@ void kvm_flush_coalesced_mmio_buffer(void)
static void do_kvm_cpu_synchronize_state(CPUState *cpu, run_on_cpu_data arg)
{
- if (!cpu->kvm_vcpu_dirty) {
+ if (!cpu->vcpu_dirty) {
kvm_arch_get_registers(cpu);
- cpu->kvm_vcpu_dirty = true;
+ cpu->vcpu_dirty = true;
}
}
void kvm_cpu_synchronize_state(CPUState *cpu)
{
- if (!cpu->kvm_vcpu_dirty) {
+ if (!cpu->vcpu_dirty) {
run_on_cpu(cpu, do_kvm_cpu_synchronize_state, RUN_ON_CPU_NULL);
}
}
@@ -1880,7 +1880,7 @@ void kvm_cpu_synchronize_state(CPUState *cpu)
static void do_kvm_cpu_synchronize_post_reset(CPUState *cpu, run_on_cpu_data arg)
{
kvm_arch_put_registers(cpu, KVM_PUT_RESET_STATE);
- cpu->kvm_vcpu_dirty = false;
+ cpu->vcpu_dirty = false;
}
void kvm_cpu_synchronize_post_reset(CPUState *cpu)
@@ -1891,7 +1891,7 @@ void kvm_cpu_synchronize_post_reset(CPUState *cpu)
static void do_kvm_cpu_synchronize_post_init(CPUState *cpu, run_on_cpu_data arg)
{
kvm_arch_put_registers(cpu, KVM_PUT_FULL_STATE);
- cpu->kvm_vcpu_dirty = false;
+ cpu->vcpu_dirty = false;
}
void kvm_cpu_synchronize_post_init(CPUState *cpu)
@@ -1901,7 +1901,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->kvm_vcpu_dirty = true;
+ cpu->vcpu_dirty = true;
}
void kvm_cpu_synchronize_pre_loadvm(CPUState *cpu)
@@ -1982,9 +1982,9 @@ int kvm_cpu_exec(CPUState *cpu)
do {
MemTxAttrs attrs;
- if (cpu->kvm_vcpu_dirty) {
+ if (cpu->vcpu_dirty) {
kvm_arch_put_registers(cpu, KVM_PUT_RUNTIME_STATE);
- cpu->kvm_vcpu_dirty = false;
+ cpu->vcpu_dirty = false;
}
kvm_arch_pre_run(cpu, run);
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index 2fe7cff..b9440b6 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -369,7 +369,6 @@ struct CPUState {
vaddr mem_io_vaddr;
int kvm_fd;
- bool kvm_vcpu_dirty;
struct KVMState *kvm_state;
struct kvm_run *kvm_run;
@@ -386,6 +385,9 @@ struct CPUState {
uint32_t can_do_io;
int32_t exception_index; /* used by m68k TCG */
+ /* shared by kvm, hax and hvf */
+ bool vcpu_dirty;
+
/* Used to keep track of an outstanding cpu throttle thread for migration
* autoconverge
*/
@@ -400,7 +402,6 @@ struct CPUState {
icount_decr_u16 u16;
} icount_decr;
- bool hax_vcpu_dirty;
struct hax_vcpu_state *hax_vcpu;
/* The pending_tlb_flush flag is set and cleared atomically to
diff --git a/target/i386/hax-all.c b/target/i386/hax-all.c
index ba6117d..3ce6950 100644
--- a/target/i386/hax-all.c
+++ b/target/i386/hax-all.c
@@ -232,7 +232,7 @@ int hax_init_vcpu(CPUState *cpu)
}
cpu->hax_vcpu = hax_global.vm->vcpus[cpu->cpu_index];
- cpu->hax_vcpu_dirty = true;
+ cpu->vcpu_dirty = true;
qemu_register_reset(hax_reset_vcpu_state, (CPUArchState *) (cpu->env_ptr));
return ret;
@@ -599,12 +599,12 @@ static void do_hax_cpu_synchronize_state(CPUState *cpu, run_on_cpu_data arg)
CPUArchState *env = cpu->env_ptr;
hax_arch_get_registers(env);
- cpu->hax_vcpu_dirty = true;
+ cpu->vcpu_dirty = true;
}
void hax_cpu_synchronize_state(CPUState *cpu)
{
- if (!cpu->hax_vcpu_dirty) {
+ if (!cpu->vcpu_dirty) {
run_on_cpu(cpu, do_hax_cpu_synchronize_state, RUN_ON_CPU_NULL);
}
}
@@ -615,7 +615,7 @@ static void do_hax_cpu_synchronize_post_reset(CPUState *cpu,
CPUArchState *env = cpu->env_ptr;
hax_vcpu_sync_state(env, 1);
- cpu->hax_vcpu_dirty = false;
+ cpu->vcpu_dirty = false;
}
void hax_cpu_synchronize_post_reset(CPUState *cpu)
@@ -628,7 +628,7 @@ static void do_hax_cpu_synchronize_post_init(CPUState *cpu, run_on_cpu_data arg)
CPUArchState *env = cpu->env_ptr;
hax_vcpu_sync_state(env, 1);
- cpu->hax_vcpu_dirty = false;
+ cpu->vcpu_dirty = false;
}
void hax_cpu_synchronize_post_init(CPUState *cpu)
@@ -638,7 +638,7 @@ void hax_cpu_synchronize_post_init(CPUState *cpu)
static void do_hax_cpu_synchronize_pre_loadvm(CPUState *cpu, run_on_cpu_data arg)
{
- cpu->hax_vcpu_dirty = true;
+ cpu->vcpu_dirty = true;
}
void hax_cpu_synchronize_pre_loadvm(CPUState *cpu)
diff --git a/target/mips/kvm.c b/target/mips/kvm.c
index 0982e87..3317905 100644
--- a/target/mips/kvm.c
+++ b/target/mips/kvm.c
@@ -523,7 +523,7 @@ static void kvm_mips_update_state(void *opaque, int running, RunState state)
* already saved and can be restored when it is synced back to KVM.
*/
if (!running) {
- if (!cs->kvm_vcpu_dirty) {
+ if (!cs->vcpu_dirty) {
ret = kvm_mips_save_count(cs);
if (ret < 0) {
fprintf(stderr, "Failed saving count\n");
@@ -539,7 +539,7 @@ static void kvm_mips_update_state(void *opaque, int running, RunState state)
return;
}
- if (!cs->kvm_vcpu_dirty) {
+ if (!cs->vcpu_dirty) {
ret = kvm_mips_restore_count(cs);
if (ret < 0) {
fprintf(stderr, "Failed restoring count\n");
--
1.8.3.1
next prev parent reply other threads:[~2017-07-05 7:15 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-05 7:14 [Qemu-devel] [PULL 00/42] Misc changes for 2017-07-05 Paolo Bonzini
2017-07-05 7:14 ` Paolo Bonzini [this message]
2017-07-05 7:14 ` [Qemu-devel] [PULL 02/42] qemu-doc: Add missing "@c man end" statements Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 03/42] nbd: fix NBD over TLS Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 04/42] target/i386: fix interrupt CPL error when using ist in x86-64 Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 05/42] target/i386: simplify handling of conforming code segments on interrupt Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 06/42] include/exec/poison: Add some more missing TARGET and CONFIG defines Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 07/42] Move CONFIG_KVM related definitions to kvm_i386.h Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 08/42] include/exec/poison: Mark CONFIG_KVM as poisoned, too Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 09/42] cpu: Introduce a wrapper for tlb_flush() that can be used in common code Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 10/42] include/exec/poison: Mark CONFIG_SOFTMMU as poisoned Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 11/42] Makefile: Move bootdevice.o to common-obj-y Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 12/42] hw/misc/edu: Compile the edu device as common object Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 13/42] sockets: avoid formatting buffer that may not be NUL terminated Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 14/42] xsave_helper: pull xsave and xrstor out of kvm.c into helper function Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 15/42] util/oslib-win32: Remove if conditional Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 16/42] tests/test-char.c: Don't use main_loop_wait()'s return value Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 17/42] main_loop: Make main_loop_wait() return void Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 18/42] checkpatch: should not use signal except for SIG_DFL or SIG_IGN Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 19/42] virtio-scsi: finalize IOMMU support Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 20/42] qemu-thread: Assert locks are initialized before using Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 21/42] qemu-doc: do not refer to years-old version numbers Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 22/42] configure: factor out list of supported Xen/KVM/HAX targets Paolo Bonzini
2017-07-10 15:49 ` Peter Maydell
2017-07-10 16:14 ` Paolo Bonzini
2017-07-10 16:24 ` Peter Maydell
2017-07-10 16:28 ` Paolo Bonzini
2017-07-14 15:26 ` Philippe Mathieu-Daudé
2017-07-14 16:58 ` Paolo Bonzini
2017-07-12 0:24 ` Stefano Stabellini
2017-07-10 16:29 ` Anthony PERARD
2017-07-05 7:14 ` [Qemu-devel] [PULL 23/42] configure: early test for supported targets Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 24/42] configure: add --disable-tcg configure option Paolo Bonzini
2017-07-14 5:24 ` Philippe Mathieu-Daudé
2017-07-14 9:02 ` Paolo Bonzini
2017-07-14 15:33 ` Philippe Mathieu-Daudé
2017-07-05 7:14 ` [Qemu-devel] [PULL 25/42] vl: convert -tb-size to qemu_strtoul Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 26/42] vl: add tcg_enabled() for tcg related code Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 27/42] tcg: move page_size_init() function Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 28/42] cpu: move interrupt handling out of translate-common.c Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 29/42] tcg: make tcg_allowed global Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 30/42] monitor: disable "info jit" and "info opcount" if !TCG Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 31/42] vapic: use tcg_enabled Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 32/42] tcg: add the tcg-stub.c file into accel/stubs/ Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 33/42] tcg: move tb_lock out of translate-all.h Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 34/42] exec: elide calls to tb_lock and tb_unlock Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 35/42] tcg: add CONFIG_TCG guards in headers Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 36/42] tcg: add the CONFIG_TCG into Makefiles Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 37/42] target/i386: move cpu_sync_bndcs_hflags() function Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 38/42] target/i386: make cpu_get_fp80()/cpu_set_fp80() static Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 39/42] target/i386: split cpu_set_mxcsr() and make cpu_set_fpuc() inline Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 40/42] target/i386: move TLB refill function out of helper.c Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 41/42] target/i386: add the tcg_enabled() in target/i386/ Paolo Bonzini
2017-07-05 7:14 ` [Qemu-devel] [PULL 42/42] target/i386: add the CONFIG_TCG into Makefiles Paolo Bonzini
2017-07-06 10:42 ` [Qemu-devel] [PULL 00/42] Misc changes for 2017-07-05 Peter Maydell
2017-07-06 14:01 ` no-reply
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=1499238885-26161-2-git-send-email-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sergio.g.delreal@gmail.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).