From nobody Mon Apr 29 02:00:19 2024 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.zoho.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 149781314548886.82434842341547; Sun, 18 Jun 2017 12:12:25 -0700 (PDT) Received: from localhost ([::1]:39309 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dMfcT-0000j8-I3 for importer@patchew.org; Sun, 18 Jun 2017 15:12:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33282) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dMfbe-0000R8-51 for qemu-devel@nongnu.org; Sun, 18 Jun 2017 15:11:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dMfba-0006y1-UA for qemu-devel@nongnu.org; Sun, 18 Jun 2017 15:11:30 -0400 Received: from mail-vk0-x242.google.com ([2607:f8b0:400c:c05::242]:33146) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dMfba-0006xR-Oh for qemu-devel@nongnu.org; Sun, 18 Jun 2017 15:11:26 -0400 Received: by mail-vk0-x242.google.com with SMTP id p62so5800322vkp.0 for ; Sun, 18 Jun 2017 12:11:26 -0700 (PDT) Received: from localhost.localdomain ([186.147.183.209]) by smtp.gmail.com with ESMTPSA id v44sm3449903uaf.15.2017.06.18.12.11.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 18 Jun 2017 12:11:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=AVzJeJSHTzPOdCcYT/L0iQyS3+aziIPLHZGZq6+lxsE=; b=ndOGrrgmu51n0h+vMUc2MJG0k/v7tWt85v1AUNv5S+1wAV6HPTlXLjIibjQm6tnewb 5bHm19CZOv1ZKLSiwfxIDwFDQiGPQQeDS99RVdKE71pV8v032k/KpaiS+pnWeN4ywo/1 6aWg/Bli2jWLQ+naI4CmJuV2M7EU7IsygktfBgsaWqN/3WW+kBwNU4bbhIKKecUsSeg/ cYA1iGAtyohv77NypioEjY9ZSKTZcfuwVAMxjV1jd+OCQBVXGc7ZQpD7x8BVf+YGqA6z PaK7TCrc/VrfIINMY287FAshDCo9zlgAp8AEHVaHCdpkZy48jbimTbW/Fu7so+GSUArz ydkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=AVzJeJSHTzPOdCcYT/L0iQyS3+aziIPLHZGZq6+lxsE=; b=ZY4lgFkFmfDWRxod9/W6DKd/6Jh9d5tZEMQ9+IKT9pCRq/lApkwr4uI+I0M4c7txgI ujfDqnZHjfulAlr//x5qhoFn9GvmU9AhdQ0gIlfX1t3pdxHE8uGT4eeniSonRuGIMvCg zDXzumXGeRaVoDU+E/BetUDYDtvCCl6LIQ8n8Z1CmWB6A0nVLxfNYqQ7M/4HWjU7NwXL u877LxBf8qXuh6l1Kc/IMnee9R9SSMpo00vqxT7BqUrgzYxh8shPwazIKpZqIMiDlr6w rngOVFSOGVYcLh3Wop61pRa2L3REeicdXFvq4EDaV7Xayku6yGTXlN7HhtwOVSo/kkW7 S4AA== X-Gm-Message-State: AKS2vOzP4l1g5rKNT2PmI2hX28ULas/kKSb1+reOY/k4VdfC6LN4WXtS KlWH0YBgfLjHyw== X-Received: by 10.31.194.147 with SMTP id s141mr10191923vkf.70.1497813086047; Sun, 18 Jun 2017 12:11:26 -0700 (PDT) From: Sergio Andres Gomez Del Real X-Google-Original-From: Sergio Andres Gomez Del Real To: Date: Sun, 18 Jun 2017 14:11:01 -0500 Message-Id: <20170618191101.3457-1-Sergio.G.DelReal@gmail.com> X-Mailer: git-send-email 2.11.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400c:c05::242 Subject: [Qemu-devel] [PATCH] 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: James Hogan , Eduardo Habkost , "open list:Overall" , "open list:CPU" , Sergio Andres Gomez Del Real , Yongbok Kim , Paolo Bonzini , Aurelien Jarno , Richard Henderson 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" 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 --- include/qom/cpu.h | 5 +++-- kvm-all.c | 18 +++++++++--------- target/i386/hax-all.c | 12 ++++++------ target/mips/kvm.c | 4 ++-- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/include/qom/cpu.h b/include/qom/cpu.h index 89ddb686fb..2098eeae03 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/kvm-all.c b/kvm-all.c index ab8262f672..a5eaff270e 100644 --- a/kvm-all.c +++ b/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) @@ -1981,9 +1981,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/target/i386/hax-all.c b/target/i386/hax-all.c index 097db5cae1..3ada8b54d4 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; @@ -598,12 +598,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); } } @@ -614,7 +614,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) @@ -627,7 +627,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) @@ -637,7 +637,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 0982e874bb..3317905e71 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 2.13.0