From nobody Mon Feb 9 14:02:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1499239322511166.89326142062566; Wed, 5 Jul 2017 00:22:02 -0700 (PDT) Received: from localhost ([::1]:44512 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSedM-00029h-2g for importer@patchew.org; Wed, 05 Jul 2017 03:22:00 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46277) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dSeWY-0004N2-6X for qemu-devel@nongnu.org; Wed, 05 Jul 2017 03:15:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dSeWT-0007PI-Mw for qemu-devel@nongnu.org; Wed, 05 Jul 2017 03:14:58 -0400 Received: from mail-wm0-x241.google.com ([2a00:1450:400c:c09::241]:36786) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dSeWT-0007Nj-Df for qemu-devel@nongnu.org; Wed, 05 Jul 2017 03:14:53 -0400 Received: by mail-wm0-x241.google.com with SMTP id y5so30406731wmh.3 for ; Wed, 05 Jul 2017 00:14:51 -0700 (PDT) Received: from 640k.lan (94-39-191-51.adsl-ull.clienti.tiscali.it. [94.39.191.51]) by smtp.gmail.com with ESMTPSA id y35sm22202793wrc.51.2017.07.05.00.14.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 05 Jul 2017 00:14:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=mruUxzQ3ocRvCkMkatEuVT9PdNDinEPNDUoz/umHcRg=; b=dTRkWBCoy1n8n8lFMOVrHZOEbx0GJwL/kVhF+vL484IzbUE4n+aFY7qyvHUKsJ7HtW ZejCeE2i6rCPPd8e+Yfh/0uuSpKgKqZvyQf9mFWtJbsAHdfJmk4AKII/CK0kseGRVFen x2y3Jb3NHbskRbIrPqOgs7EdhdpiW6UWpqlY9EBzMR6K1xL9i7KUP68891dpIYz/gJ45 8YuqviE5gyisJYnMKVhJW1+E+EpgxpxC5sqsjMzK7kO/DvD2mhH+5j1b+6JkOzuX/VFX r37FUceztjJJ9sqn4L2Pjn93jlcHszebKRaC95iC9A5Svl1kHw2Q4qOLRINhGc94cVlF ZDlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=mruUxzQ3ocRvCkMkatEuVT9PdNDinEPNDUoz/umHcRg=; b=VhwiRPxVUXsiw9bPFo42ImHh1NzyqniPHW1lsEJGS9wznzm7DgHrQhqLLiS04z6Z6j EGSeVh/FLsDq+52cPxReiIcVSci+6OCmgvFeZ8jerCwjaRRCAYgGJ7vEromIhDUcewXQ F4ZIeCHM81RD1Y5TCbCWQfNO4gTsW3TXP6ioWq+g5/X0hWv09bXejE39Y6lW4+0TBLCW oVJZ3h9Gkc9+EGz+66w+lsylP8OUZ2J+H0sXUuGLsQc01ZX9r9zczxd5pcWiVTvAKDDz olx/IpYYlV1yvRnNonBjUsKUKkaDmmJLQFUwjw1cfyRVDeS4n+alntq6RLXZiyUbnnyV bhqQ== X-Gm-Message-State: AKS2vOzfMbJafg+JJzLXzFoQMpmuhxNyA8XdPgXdwQXbV46DSNfn8Zy4 7RCL5qesP1DqQJKzp7k= X-Received: by 10.28.168.145 with SMTP id r139mr20648845wme.102.1499238890572; Wed, 05 Jul 2017 00:14:50 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Wed, 5 Jul 2017 09:14:04 +0200 Message-Id: <1499238885-26161-2-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1499238885-26161-1-git-send-email-pbonzini@redhat.com> References: <1499238885-26161-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::241 Subject: [Qemu-devel] [PULL 01/42] vcpu_dirty: share the same field in CPUState for all accelerators X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Sergio Andres Gomez Del Real Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sergio Andres Gomez Del Real 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 Message-Id: <20170618191101.3457-1-Sergio.G.DelReal@gmail.com> Signed-off-by: Paolo Bonzini --- 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) =20 cpu->kvm_fd =3D ret; cpu->kvm_state =3D s; - cpu->kvm_vcpu_dirty =3D true; + cpu->vcpu_dirty =3D true; =20 mmap_size =3D kvm_ioctl(s, KVM_GET_VCPU_MMAP_SIZE, 0); if (mmap_size < 0) { @@ -1864,15 +1864,15 @@ void kvm_flush_coalesced_mmio_buffer(void) =20 static void do_kvm_cpu_synchronize_state(CPUState *cpu, run_on_cpu_data ar= g) { - if (!cpu->kvm_vcpu_dirty) { + if (!cpu->vcpu_dirty) { kvm_arch_get_registers(cpu); - cpu->kvm_vcpu_dirty =3D true; + cpu->vcpu_dirty =3D true; } } =20 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_da= ta arg) { kvm_arch_put_registers(cpu, KVM_PUT_RESET_STATE); - cpu->kvm_vcpu_dirty =3D false; + cpu->vcpu_dirty =3D false; } =20 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_dat= a arg) { kvm_arch_put_registers(cpu, KVM_PUT_FULL_STATE); - cpu->kvm_vcpu_dirty =3D false; + cpu->vcpu_dirty =3D false; } =20 void kvm_cpu_synchronize_post_init(CPUState *cpu) @@ -1901,7 +1901,7 @@ void kvm_cpu_synchronize_post_init(CPUState *cpu) =20 static void do_kvm_cpu_synchronize_pre_loadvm(CPUState *cpu, run_on_cpu_da= ta arg) { - cpu->kvm_vcpu_dirty =3D true; + cpu->vcpu_dirty =3D true; } =20 void kvm_cpu_synchronize_pre_loadvm(CPUState *cpu) @@ -1982,9 +1982,9 @@ int kvm_cpu_exec(CPUState *cpu) do { MemTxAttrs attrs; =20 - if (cpu->kvm_vcpu_dirty) { + if (cpu->vcpu_dirty) { kvm_arch_put_registers(cpu, KVM_PUT_RUNTIME_STATE); - cpu->kvm_vcpu_dirty =3D false; + cpu->vcpu_dirty =3D false; } =20 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; =20 int kvm_fd; - bool kvm_vcpu_dirty; struct KVMState *kvm_state; struct kvm_run *kvm_run; =20 @@ -386,6 +385,9 @@ struct CPUState { uint32_t can_do_io; int32_t exception_index; /* used by m68k TCG */ =20 + /* shared by kvm, hax and hvf */ + bool vcpu_dirty; + /* Used to keep track of an outstanding cpu throttle thread for migrat= ion * autoconverge */ @@ -400,7 +402,6 @@ struct CPUState { icount_decr_u16 u16; } icount_decr; =20 - bool hax_vcpu_dirty; struct hax_vcpu_state *hax_vcpu; =20 /* 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) } =20 cpu->hax_vcpu =3D hax_global.vm->vcpus[cpu->cpu_index]; - cpu->hax_vcpu_dirty =3D true; + cpu->vcpu_dirty =3D true; qemu_register_reset(hax_reset_vcpu_state, (CPUArchState *) (cpu->env_p= tr)); =20 return ret; @@ -599,12 +599,12 @@ static void do_hax_cpu_synchronize_state(CPUState *cp= u, run_on_cpu_data arg) CPUArchState *env =3D cpu->env_ptr; =20 hax_arch_get_registers(env); - cpu->hax_vcpu_dirty =3D true; + cpu->vcpu_dirty =3D true; } =20 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 =3D cpu->env_ptr; =20 hax_vcpu_sync_state(env, 1); - cpu->hax_vcpu_dirty =3D false; + cpu->vcpu_dirty =3D false; } =20 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 =3D cpu->env_ptr; =20 hax_vcpu_sync_state(env, 1); - cpu->hax_vcpu_dirty =3D false; + cpu->vcpu_dirty =3D false; } =20 void hax_cpu_synchronize_post_init(CPUState *cpu) @@ -638,7 +638,7 @@ void hax_cpu_synchronize_post_init(CPUState *cpu) =20 static void do_hax_cpu_synchronize_pre_loadvm(CPUState *cpu, run_on_cpu_da= ta arg) { - cpu->hax_vcpu_dirty =3D true; + cpu->vcpu_dirty =3D true; } =20 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 run= ning, 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 =3D 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 run= ning, RunState state) return; } =20 - if (!cs->kvm_vcpu_dirty) { + if (!cs->vcpu_dirty) { ret =3D kvm_mips_restore_count(cs); if (ret < 0) { fprintf(stderr, "Failed restoring count\n"); --=20 1.8.3.1