From nobody Wed Nov 12 10:09:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linux.intel.com ARC-Seal: i=1; a=rsa-sha256; t=1570320339; cv=none; d=zoho.com; s=zohoarc; b=Gsvx+jWeaV5l10hdqyop5XKemJ7nKr8cFxgc4WaQ2qjqIdNvU6mOd3Hefp6x5yWUiZGeUZ/aMAueuhMhnmR/JMqZilJiAv96L9SOAjy8oIn+Ey5m4BKfkxXrJVe8WUekTMIA/ByLaXKaTir4GG9TZ7OqBoipjAREzTUMNNtJGBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570320339; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=9ylUlK0/qpS4nUvs+JVeuBTwaPIt2E4a+nQi3SLSjmI=; b=I0kC/HUVdI39FNBHQwb1ksWk1QJCr5LgFCiusHzkYdp9NEkK6sP58NN+zjRcx5NVdu65eEuWNnoJoNmZ8c/SfeTuz3wyJwQAnic9cLzjxMeSIKeLnvocrci//5pbp9VzuudwOzjXv1wDrjAGbA8DirrjioHF23fS1ovbPVUfe48= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570320339414656.7659233228671; Sat, 5 Oct 2019 17:05:39 -0700 (PDT) Received: from localhost ([::1]:59440 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iGu3O-0007s1-7I for importer@patchew.org; Sat, 05 Oct 2019 20:05:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57780) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iGu1A-0006HR-27 for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iGu18-0001kR-VJ for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:19 -0400 Received: from mga09.intel.com ([134.134.136.24]:11792) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iGu18-0001kC-OQ for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:18 -0400 Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Oct 2019 17:03:17 -0700 Received: from richard.sh.intel.com (HELO localhost) ([10.239.159.54]) by fmsmga008.fm.intel.com with ESMTP; 05 Oct 2019 17:03:16 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,261,1566889200"; d="scan'208";a="191929239" From: Wei Yang To: quintela@redhat.com, dgilbert@redhat.com Subject: [PATCH 1/3] migration/postcopy: mis->have_listen_thread check will never be touched Date: Sun, 6 Oct 2019 08:02:47 +0800 Message-Id: <20191006000249.29926-2-richardw.yang@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191006000249.29926-1-richardw.yang@linux.intel.com> References: <20191006000249.29926-1-richardw.yang@linux.intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 134.134.136.24 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, Wei Yang Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" If mis->have_listen_thread is true, this means current PostcopyState must be LISTENING or RUNNING. While the check at the beginning of the function makes sure the state transaction happens when its previous PostcopyState is ADVISE or DISCARD. This means we would never touch this check. Signed-off-by: Wei Yang Reviewed-by: Dr. David Alan Gilbert --- migration/savevm.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/migration/savevm.c b/migration/savevm.c index feb757de79..eaa4cf58ef 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1878,11 +1878,6 @@ static int loadvm_postcopy_handle_listen(MigrationIn= comingState *mis) return -1; } =20 - if (mis->have_listen_thread) { - error_report("CMD_POSTCOPY_RAM_LISTEN already has a listen thread"= ); - return -1; - } - mis->have_listen_thread =3D true; /* Start up the listening thread and wait for it to signal ready */ qemu_sem_init(&mis->listen_thread_sem, 0); --=20 2.17.1 From nobody Wed Nov 12 10:09:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linux.intel.com ARC-Seal: i=1; a=rsa-sha256; t=1570320436; cv=none; d=zoho.com; s=zohoarc; b=XRKrq8IHqW/UuvOT24Z0MTlgvReP5m+nJ3FReysWn1caSI45jWwgoedUGZrM2RjEXZbYIWeDAc57oq7OGhwAwfIucCxSwQG3/GnrV5SWCXAMTrvWw2JKQ+a4YGeLMy6HWvqawRyd+9WTYtKzvZV9K3gTDBdW5uRNN1XqQC24Qp8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570320436; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=WpWayQtGWj3wvtInVExNfV2owSxC2pGbUDRceUHAS50=; b=fRmPub7ibMoD0vRm48JW9RkIxNGsK5Zd1aXOViZrvV47LIT9cFG7dX2Fj6TtpIcgeWkSQTbGfhzkHwcKsCD283DXQWiaWWd9bO80q1T/Oy69bSGAZv7HxZJ2uMXH1qEUmkeFoOrd4eSpac3Jh7/3l2u3kuZXaM4X0q9RsBCtsMI= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 157032043640647.680585549599414; Sat, 5 Oct 2019 17:07:16 -0700 (PDT) Received: from localhost ([::1]:59452 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iGu4x-0001St-Cx for importer@patchew.org; Sat, 05 Oct 2019 20:07:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57795) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iGu1B-0006Hc-C1 for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iGu1A-0001km-CV for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:21 -0400 Received: from mga09.intel.com ([134.134.136.24]:11793) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iGu1A-0001kY-5G for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:20 -0400 Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Oct 2019 17:03:19 -0700 Received: from richard.sh.intel.com (HELO localhost) ([10.239.159.54]) by fmsmga008.fm.intel.com with ESMTP; 05 Oct 2019 17:03:18 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,261,1566889200"; d="scan'208";a="191929243" From: Wei Yang To: quintela@redhat.com, dgilbert@redhat.com Subject: [PATCH 2/3] migration/postcopy: postpone setting PostcopyState to END Date: Sun, 6 Oct 2019 08:02:48 +0800 Message-Id: <20191006000249.29926-3-richardw.yang@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191006000249.29926-1-richardw.yang@linux.intel.com> References: <20191006000249.29926-1-richardw.yang@linux.intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 134.134.136.24 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, Wei Yang Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" There are two places to call function postcopy_ram_incoming_cleanup() postcopy_ram_listen_thread on migration success loadvm_postcopy_handle_listen one setup failure On success, the vm will never accept another migration. On failure, PostcopyState is transited from LISTENING to END and would be checked in qemu_loadvm_state_main(). If PostcopyState is RUNNING, migration would be paused and retried. Currently PostcopyState is set to END in function postcopy_ram_incoming_cleanup(). With above analysis, we can take this step out and postpone this till the end of listen thread to indicate the listen thread is done. This is a preparation patch for later cleanup. Signed-off-by: Wei Yang Reviewed-by: Dr. David Alan Gilbert --- migration/postcopy-ram.c | 2 -- migration/savevm.c | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index a394c7c3a6..5da6de8c8b 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -577,8 +577,6 @@ int postcopy_ram_incoming_cleanup(MigrationIncomingStat= e *mis) } } =20 - postcopy_state_set(POSTCOPY_INCOMING_END, NULL); - if (mis->postcopy_tmp_page) { munmap(mis->postcopy_tmp_page, mis->largest_page_size); mis->postcopy_tmp_page =3D NULL; diff --git a/migration/savevm.c b/migration/savevm.c index eaa4cf58ef..dcad8897a3 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1837,6 +1837,8 @@ static void *postcopy_ram_listen_thread(void *opaque) =20 rcu_unregister_thread(); mis->have_listen_thread =3D false; + postcopy_state_set(POSTCOPY_INCOMING_END, NULL); + return NULL; } =20 --=20 2.17.1 From nobody Wed Nov 12 10:09:31 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linux.intel.com ARC-Seal: i=1; a=rsa-sha256; t=1570320339; cv=none; d=zoho.com; s=zohoarc; b=FcG75ajEwDpsdQMHdr/vrqZYDSOBWRNRTSukRV1vzSQWQQ9Dm9Ox1iPBC0MX+47JGdM/riULDAoLmjdonGwrBdj9aTerpXotuuB6MLsBITW9X4TNFVHIaHpZy7UDNeofbqsQVs/cveU1n07ViuMG0GRcsftO4wIo4Lu0Twlz+Jk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570320339; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=F2D1mWvHJr9aHDkOp0R74CCpUqJWc25D2FX91+N++3E=; b=B7kn6wDHft4W0UeKdLTvXOVceJUcqhuX881XMK2gFgJS0uCvzwph7RBPMAw+YQ2rO0CRjBNKaDYAgXM/xeChg8gqP6hLJ4hcCPXJjY707cfPRGUSvPPc+QDw9VcPGLLtMNnRnsg2fXSMWxRTxQqhm+8yfMa7BAcii0ct/SNqYQQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570320339329494.8579152892938; Sat, 5 Oct 2019 17:05:39 -0700 (PDT) Received: from localhost ([::1]:59442 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iGu3O-0007s9-2C for importer@patchew.org; Sat, 05 Oct 2019 20:05:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57808) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iGu1C-0006I8-Ji for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iGu1B-0001l3-Ic for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:22 -0400 Received: from mga09.intel.com ([134.134.136.24]:11793) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iGu1B-0001kY-AT for qemu-devel@nongnu.org; Sat, 05 Oct 2019 20:03:21 -0400 Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Oct 2019 17:03:20 -0700 Received: from richard.sh.intel.com (HELO localhost) ([10.239.159.54]) by fmsmga008.fm.intel.com with ESMTP; 05 Oct 2019 17:03:20 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,261,1566889200"; d="scan'208";a="191929247" From: Wei Yang To: quintela@redhat.com, dgilbert@redhat.com Subject: [PATCH 3/3] migration/postcopy: replace have_listen_thread check with PostcopyState check Date: Sun, 6 Oct 2019 08:02:49 +0800 Message-Id: <20191006000249.29926-4-richardw.yang@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191006000249.29926-1-richardw.yang@linux.intel.com> References: <20191006000249.29926-1-richardw.yang@linux.intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 134.134.136.24 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu-devel@nongnu.org, Wei Yang Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" After previous cleanup, postcopy thread is running only when PostcopyState is LISTENNING or RUNNING. This means it is not necessary to spare a variable have_listen_thread to represent the state. Replace the check on have_listen_thread with PostcopyState and remove the variable. Signed-off-by: Wei Yang --- migration/migration.h | 1 - migration/ram.c | 2 +- migration/ram.h | 1 + migration/savevm.c | 4 +--- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/migration/migration.h b/migration/migration.h index 4f2fe193dc..a4d639663d 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -63,7 +63,6 @@ struct MigrationIncomingState { /* Set this when we want the fault thread to quit */ bool fault_thread_quit; =20 - bool have_listen_thread; QemuThread listen_thread; QemuSemaphore listen_thread_sem; =20 diff --git a/migration/ram.c b/migration/ram.c index 769d3f6454..dfc50d57d5 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -4188,7 +4188,7 @@ static bool postcopy_is_advised(void) return ps >=3D POSTCOPY_INCOMING_ADVISE && ps < POSTCOPY_INCOMING_END; } =20 -static bool postcopy_is_running(void) +bool postcopy_is_running(void) { PostcopyState ps =3D postcopy_state_get(); return ps >=3D POSTCOPY_INCOMING_LISTENING && ps < POSTCOPY_INCOMING_E= ND; diff --git a/migration/ram.h b/migration/ram.h index bd0eee79b6..44fe4753ad 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -59,6 +59,7 @@ int ram_postcopy_send_discard_bitmap(MigrationState *ms); /* For incoming postcopy discard */ int ram_discard_range(const char *block_name, uint64_t start, size_t lengt= h); int ram_postcopy_incoming_init(MigrationIncomingState *mis); +bool postcopy_is_running(void); =20 void ram_handle_compressed(void *host, uint8_t ch, uint64_t size); =20 diff --git a/migration/savevm.c b/migration/savevm.c index dcad8897a3..2a0e0b94df 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1836,7 +1836,6 @@ static void *postcopy_ram_listen_thread(void *opaque) qemu_loadvm_state_cleanup(); =20 rcu_unregister_thread(); - mis->have_listen_thread =3D false; postcopy_state_set(POSTCOPY_INCOMING_END, NULL); =20 return NULL; @@ -1880,7 +1879,6 @@ static int loadvm_postcopy_handle_listen(MigrationInc= omingState *mis) return -1; } =20 - mis->have_listen_thread =3D true; /* Start up the listening thread and wait for it to signal ready */ qemu_sem_init(&mis->listen_thread_sem, 0); qemu_thread_create(&mis->listen_thread, "postcopy/listen", @@ -2518,7 +2516,7 @@ int qemu_loadvm_state(QEMUFile *f) =20 trace_qemu_loadvm_state_post_main(ret); =20 - if (mis->have_listen_thread) { + if (postcopy_is_running()) { /* Listen thread still going, can't clean up yet */ return ret; } --=20 2.17.1