From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829141764786.6598981857206; Wed, 7 Jun 2017 02:52:21 -0700 (PDT) Received: from localhost ([::1]:42332 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXdU-0005f0-9e for importer@patchew.org; Wed, 07 Jun 2017 05:52:20 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58035) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYt-0001Ao-Cf for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYp-0000Es-E8 for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:35 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:15626) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYp-0000EQ-8J for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:31 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6007J08J3AG30@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:27 +0100 (BST) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094727eucas1p1a8151f0a82d7ecc65a1332077eb76692~FzefnxooB0301603016eucas1p1t; Wed, 7 Jun 2017 09:47:27 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1.samsung.com (EUCPMTA) with SMTP id 4C.CE.14140.1BBC7395; Wed, 7 Jun 2017 10:47:29 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094726eucas1p146abfbdb92413f43fa395a5004d2541a~FzefAqlGg2189321893eucas1p1Y; Wed, 7 Jun 2017 09:47:26 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 7C.22.20206.EABC7395; Wed, 7 Jun 2017 10:47:26 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:26 +0100 (BST) X-AuditID: cbfec7ef-f796a6d00000373c-25-5937cbb1daf2 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:28 +0300 Message-id: <1496828798-27548-2-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCIsWRmVeSWpSXmKPExsWy7djP87obT5tHGixYLWMx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUVw2Kak5mWWpRfp2CVwZuy7L F3xiqziywKSB8ThrFyMnh4SAicSxu+vZIGwxiQv3QGwuDiGBZYwSXw9sASsSEvjMKLF8TwFM w5T/s1nhil7vvcQI4XQzSVx/OI29i5GDg03AQGLfPVuQBhEBSYnfXaeZQWxmgQKJj60rWUBs YYEQial/DoDFWQRUJaZ9XsQOYvMKuEs0XD0KdZGcxMljk8GO4BTwkPgx9TYzyC4JgctsEt9O X2YF2SUhICuxCWKOhICLxJbtL1ggbGGJV8e3sEPYMhKXJ3ezQPS2M0p07+xkhXAmMEqcmf4X qspe4tTNq0wQl/JJTNo2nRliAa9ER5sQRImHxJT3V6COc5TYsOABO8Tzsxkl3p3awT6BUWYB I8MqRpHU0uLc9NRiQ73ixNzi0rx0veT83E2MwLg8/e/4+x2MT5tDDjEKcDAq8fBm7DGLFGJN LCuuzD3EKMHBrCTCO/GoeaQQb0piZVVqUX58UWlOavEhRmkOFiVxXt5T1yKEBNITS1KzU1ML UotgskwcnFINjBu9fIyWZfy7HKN9YNs20xOR2zrdT+6oWXygU7m5lFVJxHF3tXH400c2Ql6e d/ylS9dPPMsXZTGx1VTg83a7gt9/efdyxKWoN+rv1H4w764nu/j3mtD/PC9y5EIO7AiYUrBz z91//K7xZyffvJxz67Vk8ITDsxtSzDQ8jrbt2nzqC8ueVVPtDJRYijMSDbWYi4oTAfMkJqDH AgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMLMWRmVeSWpSXmKPExsVy+t/xy7rrTptHGlz7w2kx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUW42GamJKalFCql5yfkpmXnp tkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DL2HVZvuATW8WRBSYN jMdZuxg5OSQETCSm/J8NZYtJXLi3nq2LkYtDSGAJo8SMjzuYIJxeJom9f34xdjFycLAJGEjs u2cL0iAiICnxu+s0M4jNLFAgcW7yFBYQW1ggRGLqnwNgcRYBVYlpnxexg9i8Au4SDVePskEs k5M4eWwy2GJOAQ+JH1Nvg9ULAdXcvnOGaQIj7wJGhlWMIqmlxbnpucVGesWJucWleel6yfm5 mxiBAbrt2M8tOxi73gUfYhTgYFTi4c3YYxYpxJpYVlyZe4hRgoNZSYR34lHzSCHelMTKqtSi /Pii0pzU4kOMpkBHTWSWEk3OB0ZPXkm8oYmhuaWhkbGFhbmRkZI479QPV8KFBNITS1KzU1ML Uotg+pg4OKUaGGdof83vifa9LpPhwWlwTrONT/Rw3VTZ+2rbLX8qL/i0zFtyg1XRPFldvZSZ gVXCJ1eutT605F5Y1eVbm09cq7ph4NzxQH/20gnz3z2RXVawZMq09zP1JxpWMEdc411tltay JerkVb8uKeXu/IkiLIte2K20Xc2pfFJhvtAHX/3XObWn+3yjOpRYijMSDbWYi4oTAfe97J9m AgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094726eucas1p146abfbdb92413f43fa395a5004d2541a X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094726eucas1p146abfbdb92413f43fa395a5004d2541a X-RootMTR: 20170607094726eucas1p146abfbdb92413f43fa395a5004d2541a References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.12 Subject: [Qemu-devel] [PATCH v8 01/11] userfault: add pid into uffd_msg & update UFFD_FEATURE_* 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This commit duplicates header of "userfaultfd: provide pid in userfault msg" into linux kernel. Signed-off-by: Alexey Perevalov --- linux-headers/linux/userfaultfd.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/linux-headers/linux/userfaultfd.h b/linux-headers/linux/userfa= ultfd.h index 9701772..eda028c 100644 --- a/linux-headers/linux/userfaultfd.h +++ b/linux-headers/linux/userfaultfd.h @@ -78,6 +78,9 @@ struct uffd_msg { struct { __u64 flags; __u64 address; + union { + __u32 ptid; + } feat; } pagefault; =20 struct { @@ -161,6 +164,7 @@ struct uffdio_api { #define UFFD_FEATURE_MISSING_HUGETLBFS (1<<4) #define UFFD_FEATURE_MISSING_SHMEM (1<<5) #define UFFD_FEATURE_EVENT_UNMAP (1<<6) +#define UFFD_FEATURE_THREAD_ID (1<<7) __u64 features; =20 __u64 ioctls; --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829445627266.62592200448444; Wed, 7 Jun 2017 02:57:25 -0700 (PDT) Received: from localhost ([::1]:42367 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXiO-0002IM-3h for importer@patchew.org; Wed, 07 Jun 2017 05:57:24 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58088) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYv-0001B3-8i for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYr-0000Fj-1d for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:37 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:26023) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYq-0000Ex-PW for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:32 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout4.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6007GJ8J4C200@mailout4.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:28 +0100 (BST) Received: from eusmges4.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094727eucas1p1605e5102c116bbd0ce8471ac2259dbdd~FzegIoFHS2189821898eucas1p1X; Wed, 7 Jun 2017 09:47:27 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges4.samsung.com (EUCPMTA) with SMTP id 59.47.04729.FABC7395; Wed, 7 Jun 2017 10:47:27 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094727eucas1p13b2228fead9fc5a49d953985c777b719~Fzefjgfkg2789927899eucas1p1t; Wed, 7 Jun 2017 09:47:27 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 1D.22.20206.EABC7395; Wed, 7 Jun 2017 10:47:26 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:26 +0100 (BST) X-AuditID: cbfec7f4-f79806d000001279-f6-5937cbafdba0 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:29 +0300 Message-id: <1496828798-27548-3-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCIsWRmVeSWpSXmKPExsWy7djP87rrT5tHGry5KWYx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUVw2Kak5mWWpRfp2CVwZp8// Yyt4LV+x5uovlgbGOZJdjJwcEgImEu/7VrBC2GISF+6tZwOxhQSWMkr8mBzZxcgFZH9mlNjy sJEVpmH1jv1sEIlljBKd7V1QTjeTxPWH09i7GDk42AQMJPbdswVpEBGQlPjddZoZxGYWKJD4 2LqSBaREWCBJ4myzLkiYRUBVYs3pBiYQm1fAXWLW77vMELvkJE4emwy2l1PAQ+LH1NvMIKsk BK6zSdw8spcRZI6EgKzEpgNQ9S4Sj5fdh7pTWOLV8S3sELaMxOXJ3SwQve2MEt07O1khnAmM Emem/4Wqspc4dfMqE8ShfBKTtk1nhljAK9HRJgRR4iGxbPlVNoiwo8SnrQYQr89mlDi7+jvz BEaZBYwMqxhFUkuLc9NTi030ihNzi0vz0vWS83M3MQLj8vS/4192MC4+ZnWIUYCDUYmHN2OP WaQQa2JZcWXuIUYJDmYlEd6JR80jhXhTEiurUovy44tKc1KLDzFKc7AoifNynboWISSQnliS mp2aWpBaBJNl4uCUamDcXLU1v870aBR/e+nkjjbmyUb7vbyF79hEat817TrhfUs4/Hly5uLv uRGtyxm3i2e+Fjxs0bVNIfVkzb0D81T+3Cn84/Op4snV/99Mv13OXuBxVDmr3Fy6dy+rSBTn kzt+BV7fNWdxfX9RcnfeAVOLenfBinPbL4ZpHMxQuRt7yf1QwiLnR/ZKLMUZiYZazEXFiQCF I2F2xwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrMLMWRmVeSWpSXmKPExsVy+t/xy7rrTptHGvT+17WYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKDebjNTElNQihdS85PyUzLx0 W6XQEDddCyWFvMTcVFulCF3fkCAlhbLEnFIgz8gADTg4B7gHK+nbJbhlnD7/j63gtXzFmqu/ WBoY50h2MXJySAiYSKzesZ8NwhaTuHBvPZgtJLCEUeLL6swuRi4gu5dJYu+fX4xdjBwcbAIG Evvu2YLUiAhISvzuOs0MYjMLFEicmzyFBaREWCBJ4myzLkiYRUBVYs3pBiYQm1fAXWLW77vM EKvkJE4em8wKYnMKeEj8mHqbGWKtu8TtO2eYJjDyLmBkWMUoklpanJueW2ykV5yYW1yal66X nJ+7iREYoNuO/dyyg7HrXfAhRgEORiUe3ow9ZpFCrIllxZW5hxglOJiVRHgnHjWPFOJNSays Si3Kjy8qzUktPsRoCnTURGYp0eR8YPTklcQbmhiaWxoaGVtYmBsZKYnzTv1wJVxIID2xJDU7 NbUgtQimj4mDU6qBUW1zmU2lvF7gl5PR315p/77BrlXtPeFA+PTHHgqcrGIfMnnjFq6tKPHc plTa2V5csINHUvbb2pSNzNoXZWc/OCC1m4Wfr+D0kpXXX65TrD2nLzhty/tE1pob5zakttnd uvXmUuDXDy8W6WxIKTsllLmlV0sqdXsje6+eVL//+tgZ35zOJDOuV2Ipzkg01GIuKk4EADmQ IDhmAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094727eucas1p13b2228fead9fc5a49d953985c777b719 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094727eucas1p13b2228fead9fc5a49d953985c777b719 X-RootMTR: 20170607094727eucas1p13b2228fead9fc5a49d953985c777b719 References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.14 Subject: [Qemu-devel] [PATCH v8 02/11] migration: pass MigrationIncomingState* into migration check functions 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" That tiny refactoring is necessary to be able to set UFFD_FEATURE_THREAD_ID while requesting features, and then to create downtime context in case when kernel supports it. Signed-off-by: Alexey Perevalov --- migration/migration.c | 3 ++- migration/postcopy-ram.c | 10 +++++----- migration/postcopy-ram.h | 2 +- migration/savevm.c | 2 +- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 48c94c9..2a77636 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -726,6 +726,7 @@ void qmp_migrate_set_capabilities(MigrationCapabilitySt= atusList *params, Error **errp) { MigrationState *s =3D migrate_get_current(); + MigrationIncomingState *mis =3D migration_incoming_get_current(); MigrationCapabilityStatusList *cap; bool old_postcopy_cap =3D migrate_postcopy_ram(); =20 @@ -772,7 +773,7 @@ void qmp_migrate_set_capabilities(MigrationCapabilitySt= atusList *params, * special support. */ if (!old_postcopy_cap && runstate_check(RUN_STATE_INMIGRATE) && - !postcopy_ram_supported_by_host()) { + !postcopy_ram_supported_by_host(mis)) { /* postcopy_ram_supported_by_host will have emitted a more * detailed message */ diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 9c41887..10d39a0 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -63,7 +63,7 @@ struct PostcopyDiscardState { #include #include =20 -static bool ufd_version_check(int ufd) +static bool ufd_version_check(int ufd, MigrationIncomingState *mis) { struct uffdio_api api_struct; uint64_t ioctl_mask; @@ -126,7 +126,7 @@ static int test_ramblock_postcopiable(const char *block= _name, void *host_addr, * normally fine since if the postcopy succeeds it gets turned back on at = the * end. */ -bool postcopy_ram_supported_by_host(void) +bool postcopy_ram_supported_by_host(MigrationIncomingState *mis) { long pagesize =3D getpagesize(); int ufd =3D -1; @@ -149,7 +149,7 @@ bool postcopy_ram_supported_by_host(void) } =20 /* Version and features check */ - if (!ufd_version_check(ufd)) { + if (!ufd_version_check(ufd, mis)) { goto out; } =20 @@ -525,7 +525,7 @@ int postcopy_ram_enable_notify(MigrationIncomingState *= mis) * Although the host check already tested the API, we need to * do the check again as an ABI handshake on the new fd. */ - if (!ufd_version_check(mis->userfault_fd)) { + if (!ufd_version_check(mis->userfault_fd, mis)) { return -1; } =20 @@ -663,7 +663,7 @@ void *postcopy_get_tmp_page(MigrationIncomingState *mis) =20 #else /* No target OS support, stubs just fail */ -bool postcopy_ram_supported_by_host(void) +bool postcopy_ram_supported_by_host(MigrationIncomingState *mis) { error_report("%s: No OS support", __func__); return false; diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h index 52d51e8..587a8b8 100644 --- a/migration/postcopy-ram.h +++ b/migration/postcopy-ram.h @@ -14,7 +14,7 @@ #define QEMU_POSTCOPY_RAM_H =20 /* Return true if the host supports everything we need to do postcopy-ram = */ -bool postcopy_ram_supported_by_host(void); +bool postcopy_ram_supported_by_host(MigrationIncomingState *mis); =20 /* * Make all of RAM sensitive to accesses to areas that haven't yet been wr= itten diff --git a/migration/savevm.c b/migration/savevm.c index 9c320f5..8b7bab8 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1380,7 +1380,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis) return -1; } =20 - if (!postcopy_ram_supported_by_host()) { + if (!postcopy_ram_supported_by_host(mis)) { postcopy_state_set(POSTCOPY_INCOMING_NONE); return -1; } --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829139600305.8421857229306; Wed, 7 Jun 2017 02:52:19 -0700 (PDT) Received: from localhost ([::1]:42331 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXdS-0005dh-5r for importer@patchew.org; Wed, 07 Jun 2017 05:52:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58058) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYu-0001Az-9L for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYq-0000FQ-CW for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:36 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:55809) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYq-0000Ec-6k for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:32 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR600A4C8J4VT30@mailout1.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:28 +0100 (BST) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094728eucas1p2bd194d4b3ed8093f32a239dae6657414~FzegqSog31380613806eucas1p2A; Wed, 7 Jun 2017 09:47:28 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3.samsung.com (EUCPMTA) with SMTP id 08.FC.17464.FABC7395; Wed, 7 Jun 2017 10:47:27 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094727eucas1p2d1063171fa2850fc1d590b286cd5d880~FzegEwm840469004690eucas1p2L; Wed, 7 Jun 2017 09:47:27 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id ED.22.20206.FABC7395; Wed, 7 Jun 2017 10:47:27 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:27 +0100 (BST) X-AuditID: cbfec7f2-f797e6d000004438-24-5937cbaf7663 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:30 +0300 Message-id: <1496828798-27548-4-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsWy7djPc7rrT5tHGuxutrKYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKC6blNSczLLUIn27BK6Mf1+3 shXMZat4vOMJWwPjL5YuRg4OCQETidl/Q7oYOYFMMYkL99azdTFycQgJLGWUOLJrOTuE85lR Yu+MXkaIKhOJa1c+sEAkljFKHD+1B8rpZpLonD+PEWQsm4CBxL57tiANIgKSEr+7TjOD2MwC BRIfW1eygNjCAkESreuWMYHYLAKqEkfWP2cFsXkF3CVOPmqHWiYncfLYZLA4p4CHxI+pt5lB dkkIXGeTaLvzB+oFWYlNB5gh6l0kVtz5zQ5hC0u8Or4FypaRuDy5mwWit51RontnJyuEM4FR 4sz0v1BV9hKnbl5lgriUT2LStunMEAt4JTrahCBKPCSWt79khbAdJWb8/wgNr9mMEle6zrBM YJRZwMiwilEktbQ4Nz212FivODG3uDQvXS85P3cTIzA2T/87/mkH49cTVocYBTgYlXh4BXaZ RQqxJpYVV+YeYpTgYFYS4Z141DxSiDclsbIqtSg/vqg0J7X4EKM0B4uSOC/XqWsRQgLpiSWp 2ampBalFMFkmDk6pBsbDQi/vMFux7o87sidsUavQs4Smyd9U703n3bA7bXdP6MElmzzb4poD dkev2lxuWXE2m7FwN1P3TwMlyYyi9Y5HdnF2Ty0oXVHGLtN8J3/Tq6wg3YXnWFrZH7mn/dlz V7F1MpdezMb/jlrzk2/yBoUmfXusLvdmZ7X1/i1rV86/qXyhZvKTiUJKLMUZiYZazEXFiQAS yd5jyQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCLMWRmVeSWpSXmKPExsVy+t/xy7rrT5tHGry8K2wx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUW42GamJKalFCql5yfkpmXnp tkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DL+Pd1K1vBXLaKxzue sDUw/mLpYuTkkBAwkbh25QOULSZx4d56ti5GLg4hgSWMEt3v2xkhnF4miccNnexdjBwcbAIG Evvu2YI0iAhISvzuOs0MYjMLFEicmzyFBaREWCBAonNjJkiYRUBV4sj656wgNq+Au8TJRyAj QXbJSZw8NhkszingIfFj6m2wMUJANbfvnGGawMi7gJFhFaNIamlxbnpusZFecWJucWleul5y fu4mRmCIbjv2c8sOxq53wYcYBTgYlXh4M/aYRQqxJpYVV+YeYpTgYFYS4Z141DxSiDclsbIq tSg/vqg0J7X4EKMp0FETmaVEk/OB8ZNXEm9oYmhuaWhkbGFhbmSkJM479cOVcCGB9MSS1OzU 1ILUIpg+Jg5OqQZG4yWXj1cGMVit7hVsFX3aErC9L0OVf27jKodVTiG+F0QLDpxnS4tsNZik zeaz50jJb4+CfPZYfTnnme5PXia5fKv3V7p9Qyq79LHSku6ouTf8ymbbJhyTFDqqHPWrIDi7 ROn+lbSnsvalis/+nPnPdH3u8WfbJsosCNPxPP+H8erJVK+6A++VWIozEg21mIuKEwEcG/KS ZwIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094727eucas1p2d1063171fa2850fc1d590b286cd5d880 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094727eucas1p2d1063171fa2850fc1d590b286cd5d880 X-RootMTR: 20170607094727eucas1p2d1063171fa2850fc1d590b286cd5d880 References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.11 Subject: [Qemu-devel] [PATCH v8 03/11] migration: fix hardcoded function name in error report 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela --- migration/postcopy-ram.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 10d39a0..8838901 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -71,7 +71,7 @@ static bool ufd_version_check(int ufd, MigrationIncomingS= tate *mis) api_struct.api =3D UFFD_API; api_struct.features =3D 0; if (ioctl(ufd, UFFDIO_API, &api_struct)) { - error_report("postcopy_ram_supported_by_host: UFFDIO_API failed: %= s", + error_report("%s: UFFDIO_API failed: %s", __func__, strerror(errno)); return false; } --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 149682929205333.71570248130661; Wed, 7 Jun 2017 02:54:52 -0700 (PDT) Received: from localhost ([::1]:42343 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXfu-00006A-Dp for importer@patchew.org; Wed, 07 Jun 2017 05:54:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58085) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYv-0001B1-7P for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYr-0000Fu-85 for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:37 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:26023) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYr-0000Ex-22 for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:33 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout4.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6006LS8J58O00@mailout4.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:29 +0100 (BST) Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094728eucas1p25e167bb198565ee32ec0b3f97d92a7b8~FzehSTsgq1381413814eucas1p2I; Wed, 7 Jun 2017 09:47:28 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2.samsung.com (EUCPMTA) with SMTP id D2.5E.04459.0BBC7395; Wed, 7 Jun 2017 10:47:28 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094728eucas1p1984b365dd09f3222b758075e651a5b5d~FzegncEY50264102641eucas1p1E; Wed, 7 Jun 2017 09:47:28 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 6E.22.20206.FABC7395; Wed, 7 Jun 2017 10:47:27 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:27 +0100 (BST) X-AuditID: cbfec7f1-f796e6d00000116b-69-5937cbb065cc From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:31 +0300 Message-id: <1496828798-27548-5-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsWy7djPc7obTptHGvSeUrWYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKC6blNSczLLUIn27BK6M9/tq Cq6pV/ztW8PUwHhOtouRk0NCwESibf95ZghbTOLCvfVsXYxcHEICSxklpj/rY4dwPjNKzL27 lx2mo3XCBkaIxDJGiQUnF7JAON1MEp3z5wFlODjYBAwk9t2zBWkQEZCU+N11GmwFs0CBxMfW lSwgtrBAosSblyeZQGwWAVWJrrVnGEFsXgF3iQ1njrJBLJOTOHlsMiuIzSngIfFj6m1mkF0S AtfZJHZ2vmIF2SUhICux6QDUCy4SF5YtYIWwhSVeHd8CdbSMxOXJ3SwQve2MEt07O1khnAmM Emem/4Wqspc4dfMqE8SlfBKTtk1nhljAK9HRJgRR4iHx9tlSRgjbUWLmiafQkJjNKLH+2Ey2 CYwyCxgZVjGKpJYW56anFhvpFSfmFpfmpesl5+duYgTG5ul/xz/uYHx/wuoQowAHoxIPr8Au s0gh1sSy4srcQ4wSHMxKIrwTj5pHCvGmJFZWpRblxxeV5qQWH2KU5mBREuflOnUtQkggPbEk NTs1tSC1CCbLxMEp1cBo/+lm3+yiMuUlk2YaCmSK88cwP1hafEuER3x/66W4yac8Gr8lXHg2 tV0/7OXSRrtv52dsXdfnuWJW9vt91/x4z03xDJP58itNdi5H40l+k+jn2eX+c7XPd27Y+H7t 4SemD+3eW+/bUyXey8t346DeTCWz3Y/nOO2otZ1c29F8b+5ssZg5whuilViKMxINtZiLihMB yCkuUMkCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCLMWRmVeSWpSXmKPExsVy+t/xy7rrT5tHGuyZam4x9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUW42GamJKalFCql5yfkpmXnp tkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DLeL+vpuCaesXfvjVM DYznZLsYOTkkBEwkWidsYISwxSQu3FvP1sXIxSEksIRRYvXxh0wQTi+TxOOGTvYuRg4ONgED iX33bEEaRAQkJX53nWYGsZkFCiTOTZ7CAmILCyRKvHl5kgnEZhFQlehaewZsAa+Au8SGM0fZ IJbJSZw8NpkVxOYU8JD4MfU22BwhoJrbd84wTWDkXcDIsIpRJLW0ODc9t9hIrzgxt7g0L10v OT93EyMwRLcd+7llB2PXu+BDjAIcjEo8vBl7zCKFWBPLiitzDzFKcDArifBOPGoeKcSbklhZ lVqUH19UmpNafIjRFOioicxSosn5wPjJK4k3NDE0tzQ0MrawMDcyUhLnnfrhSriQQHpiSWp2 ampBahFMHxMHp1QDo0OVlke1PW9iziJJMRGWmP6SMLcDtqotVkefqhpu8JVXl3nrXXB79rMH L/Kf/JrpftG7oq6+xVtGvCA05lSyZ+qp3kXPoxic/8S+1c3oDPmU8Gxnfl/tkTcqFhP55pt4 NC2TbGnj2tN+c7q6s56ju/7DVC7ja5JL3C4k1d66cCpby8DiOr8SS3FGoqEWc1FxIgCFWOsH ZwIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094728eucas1p1984b365dd09f3222b758075e651a5b5d X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094728eucas1p1984b365dd09f3222b758075e651a5b5d X-RootMTR: 20170607094728eucas1p1984b365dd09f3222b758075e651a5b5d References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.14 Subject: [Qemu-devel] [PATCH v8 04/11] migration: split ufd_version_check onto receive/request features part 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This modification is necessary for userfault fd features which are required to be requested from userspace. UFFD_FEATURE_THREAD_ID is a one of such "on demand" feature, which will be introduced in the next patch. QEMU have to use separate userfault file descriptor, due to userfault context has internal state, and after first call of ioctl UFFD_API it changes its state to UFFD_STATE_RUNNING (in case of success), but kernel while handling ioctl UFFD_API expects UFFD_STATE_WAIT_= API. So only one ioctl with UFFD_API is possible per ufd. Signed-off-by: Alexey Perevalov Reviewed-by: Dr. David Alan Gilbert --- migration/postcopy-ram.c | 94 ++++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 88 insertions(+), 6 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 8838901..cbe8f9f 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -63,16 +63,67 @@ struct PostcopyDiscardState { #include #include =20 -static bool ufd_version_check(int ufd, MigrationIncomingState *mis) + +/** + * receive_ufd_features: check userfault fd features, to request only supp= orted + * features in the future. + * + * Returns: true on success + * + * __NR_userfaultfd - should be checked before + * @features: out parameter will contain uffdio_api.features provided by = kernel + * in case of success + */ +static bool receive_ufd_features(uint64_t *features) { - struct uffdio_api api_struct; - uint64_t ioctl_mask; + struct uffdio_api api_struct =3D {0}; + int ufd; + bool ret =3D true; + + /* if we are here __NR_userfaultfd should exists */ + ufd =3D syscall(__NR_userfaultfd, O_CLOEXEC); + if (ufd =3D=3D -1) { + error_report("%s: syscall __NR_userfaultfd failed: %s", __func__, + strerror(errno)); + return false; + } =20 + /* ask features */ api_struct.api =3D UFFD_API; api_struct.features =3D 0; if (ioctl(ufd, UFFDIO_API, &api_struct)) { error_report("%s: UFFDIO_API failed: %s", __func__, strerror(errno)); + ret =3D false; + goto release_ufd; + } + + *features =3D api_struct.features; + +release_ufd: + close(ufd); + return ret; +} + +/** + * request_ufd_features: this function should be called only once on a new= ly + * opened ufd, subsequent calls will lead to error. + * + * Returns: true on succes + * + * @ufd: fd obtained from userfaultfd syscall + * @features: bit mask see UFFD_API_FEATURES + */ +static bool request_ufd_features(int ufd, uint64_t features) +{ + struct uffdio_api api_struct =3D {0}; + uint64_t ioctl_mask; + + api_struct.api =3D UFFD_API; + api_struct.features =3D features; + if (ioctl(ufd, UFFDIO_API, &api_struct)) { + error_report("%s failed: UFFDIO_API failed: %s", __func__, + strerror(errno)); return false; } =20 @@ -84,11 +135,42 @@ static bool ufd_version_check(int ufd, MigrationIncomi= ngState *mis) return false; } =20 + return true; +} + +static bool ufd_check_and_apply(int ufd, MigrationIncomingState *mis) +{ + uint64_t asked_features =3D 0; + static uint64_t supported_features; + + /* + * it's not possible to + * request UFFD_API twice per one fd + * userfault fd features is persistent + */ + if (!supported_features) { + if (!receive_ufd_features(&supported_features)) { + error_report("%s failed", __func__); + return false; + } + } + + /* + * request features, even if asked_features is 0, due to + * kernel expects UFFD_API before UFFDIO_REGISTER, per + * userfault file descriptor + */ + if (!request_ufd_features(ufd, asked_features)) { + error_report("%s failed: features %" PRIu64, __func__, + asked_features); + return false; + } + if (getpagesize() !=3D ram_pagesize_summary()) { bool have_hp =3D false; /* We've got a huge page */ #ifdef UFFD_FEATURE_MISSING_HUGETLBFS - have_hp =3D api_struct.features & UFFD_FEATURE_MISSING_HUGETLBFS; + have_hp =3D supported_features & UFFD_FEATURE_MISSING_HUGETLBFS; #endif if (!have_hp) { error_report("Userfault on this host does not support huge pag= es"); @@ -149,7 +231,7 @@ bool postcopy_ram_supported_by_host(MigrationIncomingSt= ate *mis) } =20 /* Version and features check */ - if (!ufd_version_check(ufd, mis)) { + if (!ufd_check_and_apply(ufd, mis)) { goto out; } =20 @@ -525,7 +607,7 @@ int postcopy_ram_enable_notify(MigrationIncomingState *= mis) * Although the host check already tested the API, we need to * do the check again as an ABI handshake on the new fd. */ - if (!ufd_version_check(mis->userfault_fd, mis)) { + if (!ufd_check_and_apply(mis->userfault_fd, mis)) { return -1; } =20 --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496828983818259.9060126616828; Wed, 7 Jun 2017 02:49:43 -0700 (PDT) Received: from localhost ([::1]:42318 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXaw-0002Qg-70 for importer@patchew.org; Wed, 07 Jun 2017 05:49:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58039) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYt-0001At-Hq for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYp-0000F1-Kk for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:35 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:15626) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYp-0000EQ-Et for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:31 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6006O78J52V30@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:29 +0100 (BST) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094729eucas1p26ff8708ab03df2dc123022b6645d7a62~FzehplsEX1887418874eucas1p2k; Wed, 7 Jun 2017 09:47:29 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1.samsung.com (EUCPMTA) with SMTP id CD.CE.14140.3BBC7395; Wed, 7 Jun 2017 10:47:31 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094728eucas1p228f096ea7eebf7e791392c9193cefec0~Fzeg8GlCC0466904669eucas1p2R; Wed, 7 Jun 2017 09:47:28 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 8E.BB.17452.0BBC7395; Wed, 7 Jun 2017 10:47:28 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:28 +0100 (BST) X-AuditID: cbfec7ef-f796a6d00000373c-2d-5937cbb3cd31 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:32 +0300 Message-id: <1496828798-27548-6-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrIIsWRmVeSWpSXmKPExsWy7djPc7qbT5tHGuzuU7eYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKC6blNSczLLUIn27BK6MSf/S C54IVjzcdpK5gXErXxcjJ4eEgInEmdnzmCBsMYkL99azgdhCAssYJXrWRXUxcgHZnxklXr0+ AlTEAdZwrTkSrubHljiImm4mif23X7KA1LAJGEjsu2cLUiMiICnxu+s0M4jNLFAg8bF1JViJ sICPxJz5ySBhFgFVieapr9hBbF4Bd4ntfx+xQJwjJ3Hy2GRWEJtTwEPix9TbzCCrJASus0nM fr6WGeIcWYlNB5gh6l0kOrfPZIWwhSVeHd/CDmHLSHR2HGSC6G1nlOje2ckK4UxglDgz/S9U lb3EqZtXmSAO5ZOYtG061AJeiY42IQjTQ+JJYxlEtaPEvZbFjBCvz2aUuPpqAdsERpkFjAyr GEVSS4tz01OLDfWKE3OLS/PS9ZLzczcxAiPy9L/j73cwPm0OOcQowMGoxMObsccsUog1say4 MvcQowQHs5II78Sj5pFCvCmJlVWpRfnxRaU5qcWHGKU5WJTEeXlPXYsQEkhPLEnNTk0tSC2C yTJxcEo1MObWnftk+Dj9n4JdXMG34pSOiYc2P5TYN6H8ikqUfVzN58i4s759zE/k3kwSUVqo +uioZvS9PWl7C7/Vv3xbvyNeJSot7kIbV8iN+VnzLsh+u+N+dj+/9fEq+6wsw1VG791Vd3UI dWuG304QbLgk2pQZOkV16SSZg1M3fYjm0t13qEkhX8duhhJLcUaioRZzUXEiAO5V3bnEAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrELMWRmVeSWpSXmKPExsVy+t/xy7obTptHGjS+lLGYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKDebjNTElNQihdS85PyUzLx0 W6XQEDddCyWFvMTcVFulCF3fkCAlhbLEnFIgz8gADTg4B7gHK+nbJbhlTPqXXvBEsOLhtpPM DYxb+boYOTgkBEwkrjVHdjFyApliEhfurWfrYuTiEBJYwiix4Pcedginl0li86LPjCANbAIG Evvu2YI0iAhISvzuOs0MYjMLFEicmzyFBaREWMBHYs78ZJAwi4CqRPPUV+wgNq+Au8T2v49Y IHbJSZw8NpkVxOYU8JD4MfU22BghoJrbd84wTWDkXcDIsIpRJLW0ODc9t9hQrzgxt7g0L10v OT93EyMwPLcd+7l5B+OljcGHGAU4GJV4eAV2mUUKsSaWFVfmHmKU4GBWEuGdeNQ8Uog3JbGy KrUoP76oNCe1+BCjKdBRE5mlRJPzgbGTVxJvaGJobmloZGxhYW5kpCTOW/LhSriQQHpiSWp2 ampBahFMHxMHp1QD44T+8g9Z9+6fejK1eE6oqswD1wWn7x8Iqk5N+PrTnXvt+2bm2Yu/zdJZ mrrBZEK0xbnk3v/LMg6ozLI4lHOne+6JSlkNfmHz4isx81VS9lyo7ZjQYPnjple/bdvmj3yL WlmXHmucmLUwX21FeaNK4PH1lY9Xn/rWK296QK9/zbw091hNic0MvkosxRmJhlrMRcWJAB7V M05lAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094728eucas1p228f096ea7eebf7e791392c9193cefec0 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094728eucas1p228f096ea7eebf7e791392c9193cefec0 X-RootMTR: 20170607094728eucas1p228f096ea7eebf7e791392c9193cefec0 References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.12 Subject: [Qemu-devel] [PATCH v8 05/11] migration: introduce postcopy-blocktime capability 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Right now it could be used on destination side to enable vCPU blocktime calculation for postcopy live migration. vCPU blocktime - it's time since vCPU thread was put into interruptible sleep, till memory page was copied and thread awake. Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela --- include/migration/migration.h | 1 + migration/migration.c | 9 +++++++++ qapi-schema.json | 5 ++++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/include/migration/migration.h b/include/migration/migration.h index 79b5484..2e61df5 100644 --- a/include/migration/migration.h +++ b/include/migration/migration.h @@ -189,6 +189,7 @@ int migrate_compress_level(void); int migrate_compress_threads(void); int migrate_decompress_threads(void); bool migrate_use_events(void); +bool migrate_postcopy_blocktime(void); =20 /* Sending on the return path - generic and then for each message type */ void migrate_send_rp_message(MigrationIncomingState *mis, diff --git a/migration/migration.c b/migration/migration.c index 2a77636..d1cc34f 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -1371,6 +1371,15 @@ bool migrate_zero_blocks(void) return s->enabled_capabilities[MIGRATION_CAPABILITY_ZERO_BLOCKS]; } =20 +bool migrate_postcopy_blocktime(void) +{ + MigrationState *s; + + s =3D migrate_get_current(); + + return s->enabled_capabilities[MIGRATION_CAPABILITY_POSTCOPY_BLOCKTIME= ]; +} + bool migrate_use_compression(void) { MigrationState *s; diff --git a/qapi-schema.json b/qapi-schema.json index 4b50b65..e906953 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -900,12 +900,15 @@ # offers more flexibility. # (Since 2.10) # +# @postcopy-blocktime: Calculate downtime for postcopy live migration +# (since 2.10) +# # Since: 1.2 ## { 'enum': 'MigrationCapability', 'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks', 'compress', 'events', 'postcopy-ram', 'x-colo', 'release-ram', - 'block' ] } + 'block', 'postcopy-blocktime'] } =20 ## # @MigrationCapabilityStatus: --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829057237997.8554353382643; Wed, 7 Jun 2017 02:50:57 -0700 (PDT) Received: from localhost ([::1]:42326 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXc7-0004WV-MS for importer@patchew.org; Wed, 07 Jun 2017 05:50:55 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58037) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYt-0001Aq-DU for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYp-0000F8-Qn for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:35 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:15626) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYp-0000EQ-LE for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:31 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6008FQ8J61630@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:30 +0100 (BST) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094729eucas1p2b162ae008609f30230018a20c3a5d256~FzeiSJ5iJ0825708257eucas1p2K; Wed, 7 Jun 2017 09:47:29 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1.samsung.com (EUCPMTA) with SMTP id 9E.CE.14140.4BBC7395; Wed, 7 Jun 2017 10:47:32 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094729eucas1p119b3d77f7d869eb06c16c9e91215e8cd~FzehsVLPS2189821898eucas1p1b; Wed, 7 Jun 2017 09:47:29 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id CF.22.20206.1BBC7395; Wed, 7 Jun 2017 10:47:29 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:29 +0100 (BST) X-AuditID: cbfec7ef-f796a6d00000373c-2f-5937cbb4b9ab From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:33 +0300 Message-id: <1496828798-27548-7-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsWy7djP87pbTptHGsxeJWwx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUVw2Kak5mWWpRfp2CVwZ/5te sxQs0ag4+O0kWwPjXIUuRk4OCQETidm/TrNA2GISF+6tZ+ti5OIQEljGKDFv6QdmkISQwGdG iafbFWEa3mxoZIErWrVnLjOE080ksXzBWSCHg4NNwEBi3z1bkAYRAUmJ312nwQYxCxRIfGxd CbZNWCBW4tuTqYwgNouAqsTqPz1sIDavgLvEplVTmSGWyUmcPDaZFcTmFPCQ+DH1NtguCYHb bBKb9x5jAdklISArsekAVL2LxLw1txghbGGJV8e3sEPYMhKXJ3ezQPS2M0p07+xkhXAmMEqc mf4Xqspe4tTNq0wQl/JJTNo2nRliAa9ER5sQRImHxMumiVDljhIbj8xlgnh+NqNE//1HTBMY ZRYwMqxiFEktLc5NTy021CtOzC0uzUvXS87P3cQIjM3T/46/38H4tDnkEKMAB6MSD2/GHrNI IdbEsuLK3EOMEhzMSiK8E4+aRwrxpiRWVqUW5ccXleakFh9ilOZgURLn5T11LUJIID2xJDU7 NbUgtQgmy8TBKdXA2H5xw9vIp9+9Q5VOhidOTN3xItHz+6O4c7V6E1bPFeafWWUa9XZdXe2E txbp0dUy7wrClXo21C0K2lL5VUPlQ4z93BmL57LuOv6ktvbLrHmiyTff7b3A31D+03qtdotD jJvna9aEF58KAxr2Gb5xveY87cz5DrtE0+LPO0z2Rs3TMDpvrnY6XYmlOCPRUIu5qDgRAH9V V3bJAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRmVeSWpSXmKPExsVy+t/xy7obT5tHGsw6wWwx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUW42GamJKalFCql5yfkpmXnp tkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DL+N/0mqVgiUbFwW8n 2RoY5yp0MXJySAiYSLzZ0MgCYYtJXLi3nq2LkYtDSGAJo8SRlQ2sEE4vk8Tug9+Yuhg5ONgE DCT23bMFaRARkJT43XWaGcRmFiiQODd5CtggYYFYiW9PpjKC2CwCqhKr//Swgdi8Au4Sm1ZN ZYZYJidx8thkVhCbU8BD4sfU22BxIaCa23fOME1g5F3AyLCKUSS1tDg3PbfYSK84Mbe4NC9d Lzk/dxMjMEi3Hfu5ZQdj17vgQ4wCHIxKPLwZe8wihVgTy4orcw8xSnAwK4nwTjxqHinEm5JY WZValB9fVJqTWnyI0RToqInMUqLJ+cAIyiuJNzQxNLc0NDK2sDA3MlIS55364Uq4kEB6Yklq dmpqQWoRTB8TB6dUA+NSzw07Z17TNLu4rV529pJpwgq+r83u7xCfpa+5tMNZr2pBbViY9u4m Pa2Mc7PeMr3Z2zGjaMOPC/fj75nxcTr9+M2/R/yuVC1zrM6po5mZ9y3VI5c9DVxxIaKZb9fb tHutqeKnkwqMsvb+nvptUeDZ5zxyMix1BXfPLLz1kGmH2gVth8dV/buVWIozEg21mIuKEwHm cW9maAIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094729eucas1p119b3d77f7d869eb06c16c9e91215e8cd X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094729eucas1p119b3d77f7d869eb06c16c9e91215e8cd X-RootMTR: 20170607094729eucas1p119b3d77f7d869eb06c16c9e91215e8cd References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.12 Subject: [Qemu-devel] [PATCH v8 06/11] migration: add postcopy blocktime ctx into MigrationIncomingState 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch adds request to kernel space for UFFD_FEATURE_THREAD_ID, in case when this feature is provided by kernel. PostcopyBlocktimeContext is incapsulated inside postcopy-ram.c, due to it's postcopy only feature. Also it defines PostcopyBlocktimeContext's instance live time. Information from PostcopyBlocktimeContext instance will be provided much after postcopy migration end, instance of PostcopyBlocktimeContext will live till QEMU exit, but part of it (vcpu_addr, page_fault_vcpu_time) used only during calculation, will be released when postcopy ended or failed. To enable postcopy blocktime calculation on destination, need to request proper capabiltiy (Patch for documentation will be at the tail of the patch set). As an example following command enable that capability, assume QEMU was started with -chardev socket,id=3Dcharmonitor,path=3D/var/lib/migrate-vm-monitor.sock option to control it [root@host]#printf "{\"execute\" : \"qmp_capabilities\"}\r\n \ {\"execute\": \"migrate-set-capabilities\" , \"arguments\": { \"capabilities\": [ { \"capability\": \"postcopy-blocktime\", \"state\": true } ] } }" | nc -U /var/lib/migrate-vm-monitor.sock Or just with HMP (qemu) migrate_set_capability postcopy-blocktime on Signed-off-by: Alexey Perevalov --- include/migration/migration.h | 8 ++++++ migration/postcopy-ram.c | 65 +++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 73 insertions(+) diff --git a/include/migration/migration.h b/include/migration/migration.h index 2e61df5..766e802 100644 --- a/include/migration/migration.h +++ b/include/migration/migration.h @@ -49,6 +49,8 @@ enum mig_rp_message_type { MIG_RP_MSG_MAX }; =20 +struct PostcopyBlocktimeContext; + /* State for the incoming migration */ struct MigrationIncomingState { QEMUFile *from_src_file; @@ -86,6 +88,12 @@ struct MigrationIncomingState { /* The coroutine we should enter (back) after failover */ Coroutine *migration_incoming_co; QemuSemaphore colo_incoming_sem; + + /* + * PostcopyBlocktimeContext to keep information for postcopy + * live migration, to calculate vCPU block time + * */ + struct PostcopyBlocktimeContext *blocktime_ctx; }; =20 MigrationIncomingState *migration_incoming_get_current(void); diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index cbe8f9f..ade7f1c 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -63,6 +63,58 @@ struct PostcopyDiscardState { #include #include =20 +typedef struct PostcopyBlocktimeContext { + /* time when page fault initiated per vCPU */ + int64_t *page_fault_vcpu_time; + /* page address per vCPU */ + uint64_t *vcpu_addr; + int64_t total_blocktime; + /* blocktime per vCPU */ + int64_t *vcpu_blocktime; + /* point in time when last page fault was initiated */ + int64_t last_begin; + /* number of vCPU are suspended */ + int smp_cpus_down; + + /* + * Handler for exit event, necessary for + * releasing whole blocktime_ctx + */ + Notifier exit_notifier; + /* + * Handler for postcopy event, necessary for + * releasing unnecessary part of blocktime_ctx + */ + Notifier postcopy_notifier; +} PostcopyBlocktimeContext; + +static void destroy_blocktime_context(struct PostcopyBlocktimeContext *ctx) +{ + g_free(ctx->page_fault_vcpu_time); + g_free(ctx->vcpu_addr); + g_free(ctx->vcpu_blocktime); + g_free(ctx); +} + +static void migration_exit_cb(Notifier *n, void *data) +{ + PostcopyBlocktimeContext *ctx =3D container_of(n, PostcopyBlocktimeCon= text, + exit_notifier); + destroy_blocktime_context(ctx); +} + +static struct PostcopyBlocktimeContext *blocktime_context_new(void) +{ + PostcopyBlocktimeContext *ctx =3D g_new0(PostcopyBlocktimeContext, 1); + ctx->page_fault_vcpu_time =3D g_new0(int64_t, smp_cpus); + ctx->vcpu_addr =3D g_new0(uint64_t, smp_cpus); + ctx->vcpu_blocktime =3D g_new0(int64_t, smp_cpus); + + ctx->exit_notifier.notify =3D migration_exit_cb; + qemu_add_exit_notifier(&ctx->exit_notifier); + add_migration_state_change_notifier(&ctx->postcopy_notifier); + return ctx; +} =20 /** * receive_ufd_features: check userfault fd features, to request only supp= orted @@ -155,6 +207,19 @@ static bool ufd_check_and_apply(int ufd, MigrationInco= mingState *mis) } } =20 +#ifdef UFFD_FEATURE_THREAD_ID + if (migrate_postcopy_blocktime() && mis && + UFFD_FEATURE_THREAD_ID & supported_features) { + /* kernel supports that feature */ + /* don't create blocktime_context if it exists */ + if (!mis->blocktime_ctx) { + mis->blocktime_ctx =3D blocktime_context_new(); + } + + asked_features |=3D UFFD_FEATURE_THREAD_ID; + } +#endif + /* * request features, even if asked_features is 0, due to * kernel expects UFFD_API before UFFDIO_REGISTER, per --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829210060572.0607898976375; Wed, 7 Jun 2017 02:53:30 -0700 (PDT) Received: from localhost ([::1]:42336 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXea-0007QM-Ha for importer@patchew.org; Wed, 07 Jun 2017 05:53:28 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58087) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYv-0001B2-8H for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYr-0000G2-A9 for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:37 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:61296) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYr-0000FL-0W for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:33 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6005PG8J7S330@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:31 +0100 (BST) Received: from eusmges4.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094730eucas1p23cd1e8dc14fb929ab7ef1c9c78395f80~Fzeizj1gd0284202842eucas1p2S; Wed, 7 Jun 2017 09:47:30 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges4.samsung.com (EUCPMTA) with SMTP id AA.47.04729.2BBC7395; Wed, 7 Jun 2017 10:47:30 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094729eucas1p15097f154039365d5e135f92b72aad1bf~FzeiN6tp_0264102641eucas1p1F; Wed, 7 Jun 2017 09:47:29 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 50.32.20206.1BBC7395; Wed, 7 Jun 2017 10:47:29 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:29 +0100 (BST) X-AuditID: cbfec7f4-f79806d000001279-fd-5937cbb2b007 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:34 +0300 Message-id: <1496828798-27548-8-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKIsWRmVeSWpSXmKPExsWy7djP87qbTptHGuxr47eYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKC6blNSczLLUIn27BK6My4s6 mQp+y1c86prD1MD4QqKLkZNDQsBEYtqne6wQtpjEhXvr2UBsIYGljBJLNsVA2J8ZJd7fTIGp f3y7mamLkQsovoxRYnPrBCinm0li+YKzzF2MHBxsAgYS++7ZgjSICEhK/O46zQxiMwsUSHxs XckCYgsL2EvMfvESbBmLgKrEw6/LGUFsXgF3iWt7LzJBLJOTOHlsMthxnAIeEj+m3mYG2SUh cJtN4tSaTlaQXRICshKbDjBD1LtInOjeygJhC0u8Or6FHcKWkbg8uZsForedUaJ7J0gviDOB UeLM9L9QVfYSp25eZYK4lE9i0rbpzBALeCU62oQgSjwkNrUfh4aWo8S1X7OYIZ6fzSixsWM2 ywRGmQWMDKsYRVJLi3PTU4tN9IoTc4tL89L1kvNzNzECI/P0v+NfdjAuPmZ1iFGAg1GJhzdj j1mkEGtiWXFl7iFGCQ5mJRHeiUfNI4V4UxIrq1KL8uOLSnNSiw8xSnOwKInzcp26FiEkkJ5Y kpqdmlqQWgSTZeLglGpgZJlxeJu/8PotVT8K3x2dV7Vfp33t8SVnlMWk/X/NVC7e+z7TJc3n 4Lv1RSJZkRuM2myzhZ+0ZX48ouoYcVjp4KIXO46uPvfV9u2aLd+P7emt28P3Y5GR/UWu/6e/ aC3uLr7UOU3q146PfanHpGWe1sy7rV4m0v47g/XbjR0bIw+oK9qUCXLtv6TEUpyRaKjFXFSc CACC6Ti6yAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRmVeSWpSXmKPExsVy+t/xy7obT5tHGkzrULOYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKDebjNTElNQihdS85PyUzLx0 W6XQEDddCyWFvMTcVFulCF3fkCAlhbLEnFIgz8gADTg4B7gHK+nbJbhlXF7UyVTwW77iUdcc pgbGFxJdjJwcEgImEo9vNzNB2GISF+6tZ+ti5OIQEljCKDHn+ldWCKeXSWL3wW9AVRwcbAIG Evvu2YI0iAhISvzuOs0MYjMLFEicmzyFBcQWFrCXmP3iJRuIzSKgKvHw63JGEJtXwF3i2t6L UMvkJE4em8wKYnMKeEj8mHobbI4QUM3tO2eYJjDyLmBkWMUoklpanJueW2ykV5yYW1yal66X nJ+7iREYpNuO/dyyg7HrXfAhRgEORiUe3ow9ZpFCrIllxZW5hxglOJiVRHgnHjWPFOJNSays Si3Kjy8qzUktPsRoCnTURGYp0eR8YATllcQbmhiaWxoaGVtYmBsZKYnzTv1wJVxIID2xJDU7 NbUgtQimj4mDU6qBUf+NjYiyYk3j8s4pG//NPO6S8yd0vdp1m8+VXywNOw8Vfi6cv3en3afD e6527mtQq32iyd7/pC/Kw3n5MRaGzRsX37xfsOTRKtZ1JpeUn954dvY2y6M0r0txoYc5nOwC Nn3I2NOT8Lbru/DOw6/5SjoOrWRZOE0iVo99rtTE2O8i02vmhK16+kiJpTgj0VCLuag4EQAs 3e58aAIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094729eucas1p15097f154039365d5e135f92b72aad1bf X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094729eucas1p15097f154039365d5e135f92b72aad1bf X-RootMTR: 20170607094729eucas1p15097f154039365d5e135f92b72aad1bf References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.13 Subject: [Qemu-devel] [PATCH v8 07/11] migration: add bitmap for copied page 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch adds ability to track down already copied pages, it's necessary for calculation vCPU block time in postcopy migration feature, maybe for restore after postcopy migration failure. Also it's necessary to solve shared memory issue in postcopy livemigration. Information about copied pages will be transferred to the software virtual bridge (e.g. OVS-VSWITCHD), to avoid fallocate (unmap) for already copied pages. fallocate syscall is required for remmaped shared memory, due to remmaping itself blocks ioctl(UFFDIO_COPY, ioctl in this case will end with EEXIT error (struct page is exists after remmap). Bitmap is placed into RAMBlock as another postcopy/precopy related bitmaps. Helpers are in migration/ram.c, due to in this file is allowing to work with RAMBlock. Signed-off-by: Alexey Perevalov --- include/exec/ram_addr.h | 2 ++ migration/ram.c | 36 ++++++++++++++++++++++++++++++++++++ migration/ram.h | 4 ++++ 3 files changed, 42 insertions(+) diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h index 140efa8..6a3780b 100644 --- a/include/exec/ram_addr.h +++ b/include/exec/ram_addr.h @@ -47,6 +47,8 @@ struct RAMBlock { * of the postcopy phase */ unsigned long *unsentmap; + /* bitmap of already copied pages in postcopy */ + unsigned long *copiedmap; }; =20 static inline bool offset_in_ramblock(RAMBlock *b, ram_addr_t offset) diff --git a/migration/ram.c b/migration/ram.c index f387e9c..a7c0db4 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -149,6 +149,25 @@ out: return ret; } =20 +static unsigned long int get_copied_bit_offset(uint64_t addr, RAMBlock *rb) +{ + uint64_t addr_offset =3D addr - (uint64_t)(uintptr_t)rb->host; + int page_shift =3D find_first_bit((unsigned long *)&rb->page_size, + sizeof(rb->page_size)); + + return addr_offset >> page_shift; +} + +int test_copiedmap_by_addr(uint64_t addr, RAMBlock *rb) +{ + return test_bit(get_copied_bit_offset(addr, rb), rb->copiedmap); +} + +void set_copiedmap_by_addr(uint64_t addr, RAMBlock *rb) +{ + set_bit_atomic(get_copied_bit_offset(addr, rb), rb->copiedmap); +} + /* * An outstanding page request, on the source, having been received * and queued @@ -1449,6 +1468,8 @@ static void ram_migration_cleanup(void *opaque) block->bmap =3D NULL; g_free(block->unsentmap); block->unsentmap =3D NULL; + g_free(block->copiedmap); + block->copiedmap =3D NULL; } =20 XBZRLE_cache_lock(); @@ -2517,6 +2538,14 @@ static int ram_load_postcopy(QEMUFile *f) return ret; } =20 +static unsigned long get_copiedmap_size(RAMBlock *rb) +{ + unsigned long pages; + pages =3D rb->max_length >> find_first_bit((unsigned long *)&rb->page_= size, + sizeof(rb->page_size)); + return pages; +} + static int ram_load(QEMUFile *f, void *opaque, int version_id) { int flags =3D 0, ret =3D 0; @@ -2544,6 +2573,13 @@ static int ram_load(QEMUFile *f, void *opaque, int v= ersion_id) rcu_read_lock(); =20 if (postcopy_running) { + RAMBlock *rb; + RAMBLOCK_FOREACH(rb) { + /* need for destination, bitmap_new calls + * g_try_malloc0 and this function + * Attempts to allocate @n_bytes, initialized to 0'sh */ + rb->copiedmap =3D bitmap_new(get_copiedmap_size(rb)); + } ret =3D ram_load_postcopy(f); } =20 diff --git a/migration/ram.h b/migration/ram.h index c9563d1..1f32824 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -67,4 +67,8 @@ int ram_discard_range(const char *block_name, uint64_t st= art, size_t length); int ram_postcopy_incoming_init(MigrationIncomingState *mis); =20 void ram_handle_compressed(void *host, uint8_t ch, uint64_t size); + +int test_copiedmap_by_addr(uint64_t addr, RAMBlock *rb); +void set_copiedmap_by_addr(uint64_t addr, RAMBlock *rb); + #endif --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496828984063950.3498637571348; Wed, 7 Jun 2017 02:49:44 -0700 (PDT) Received: from localhost ([::1]:42319 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXaw-0002Ql-F8 for importer@patchew.org; Wed, 07 Jun 2017 05:49:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58051) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYt-0001Ay-Va for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYq-0000FF-1d for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:36 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:15626) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYp-0000EQ-RO for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:31 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR600A4Y8J7G930@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:31 +0100 (BST) Received: from eusmges5.samsung.com (unknown [203.254.199.245]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094731eucas1p283660488287e2f6c6582a1e7a67b142b~FzejRyDR_0469104691eucas1p2J; Wed, 7 Jun 2017 09:47:31 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges5.samsung.com (EUCPMTA) with SMTP id A2.6D.25577.2BBC7395; Wed, 7 Jun 2017 10:47:30 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094730eucas1p2126d9850427e7b4af92898b64b7b805a~Fzeiie52K0284202842eucas1p2R; Wed, 7 Jun 2017 09:47:30 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 20.CB.17452.2BBC7395; Wed, 7 Jun 2017 10:47:30 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:30 +0100 (BST) X-AuditID: cbfec7f5-f792f6d0000063e9-90-5937cbb20e6a From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:35 +0300 Message-id: <1496828798-27548-9-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKIsWRmVeSWpSXmKPExsWy7djP87qbTptHGjR36FnMvXuexaJ32z12 iyvtP9kttuz/xm5xvHcHiwOrx5Nrm5k83u+7yubRt2UVYwBzFJdNSmpOZllqkb5dAlfGtb1z WQtOyFWsXfSMvYHxoUgXIweHhICJxK11Gl2MnECmmMSFe+vZuhi5OIQEljJKTG58xAjhfGaU 6Pg6jwWiykTi75/L7BCJZYwSl/9MYoJwupkklj15wAwylk3AQGLfPVuQBhEBSYnfXaeZQWxm gQKJj60rwQYJC7hJ/Fq8nAnEZhFQlVh/+jdYnFfAXeLqnQ1Qy+QkTh6bzApicwp4SPyYepsZ ZJeEwG02icl7X7NDvCArsekAM0S9i8TN38fZIGxhiVfHt7BD2DISnR0HmSB62xklund2skI4 Exglzkz/C1VlL3Hq5lUmiEv5JCZtm84MsYBXoqNNCKLEQ+LctfOsEGFHibYrfBC/z2aUeLr8 CuMERpkFjAyrGEVSS4tz01OLTfWKE3OLS/PS9ZLzczcxAiPz9L/jX3cwLj1mdYhRgINRiYdX YJdZpBBrYllxZe4hRgkOZiUR3olHzSOFeFMSK6tSi/Lji0pzUosPMUpzsCiJ83KduhYhJJCe WJKanZpakFoEk2Xi4JRqYDSs+1zqPTnAo6i+8aOPp+PGdoZeFuObXNsi+HP1NeY0e1u1fmyZ urqr462I/etz6i9YF2w8K+Vxv37WsvOLaueJPt0yz/1Ipt5qteO5uYyrJYrm66xZJfx50qMH 3ebn8x6u9VRRPrg3O//dVm7uUyu53zht3jp3oZZrB0eIeoyz1Wulxk3afUosxRmJhlrMRcWJ AF0z0JvIAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRmVeSWpSXmKPExsVy+t/xy7qbTptHGmy8yW0x9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUW42GamJKalFCql5yfkpmXnp tkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DLuLZ3LmvBCbmKtYue sTcwPhTpYuTkkBAwkfj75zI7hC0mceHeerYuRi4OIYEljBJrD71ggnB6mSR+rrnC3MXIwcEm YCCx754tSIOIgKTE767TzCA2s0CBxLnJU1hAbGEBN4lfi5czgdgsAqoS60//BovzCrhLXL2z gQVimZzEyWOTWUFsTgEPiR9Tb4PNEQKquX3nDNMERt4FjAyrGEVSS4tz03OLDfWKE3OLS/PS 9ZLzczcxAoN027Gfm3cwXtoYfIhRgINRiYdXYJdZpBBrYllxZe4hRgkOZiUR3olHzSOFeFMS K6tSi/Lji0pzUosPMZoCHTWRWUo0OR8YQXkl8YYmhuaWhkbGFhbmRkZK4rwlH66ECwmkJ5ak ZqemFqQWwfQxcXBKNTBythRa/nz1e5HiyUPlhyI9jPn3ymmnqzDMaWhWOxZ1aub7NO0ftzpC U8s8jWv3dvE9vB2j8KGrYnrnutqo42yT6v7azUhR9rOz93Hh8o04+itQcd+OqNqrpwNDHOcG pt7dM4+XZea8G5VO6xa9sDvBXdxtP/N05zGfl2fPfypgSpJ7vrI+d7USS3FGoqEWc1FxIgB1 LPJ5aAIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094730eucas1p2126d9850427e7b4af92898b64b7b805a X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094730eucas1p2126d9850427e7b4af92898b64b7b805a X-RootMTR: 20170607094730eucas1p2126d9850427e7b4af92898b64b7b805a References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.12 Subject: [Qemu-devel] [PATCH v8 08/11] migration: postcopy_place_page factoring out 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Need to mark paged copied as closer as possible place where it tracks down. That will be necessary in futher patch. Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela --- migration/postcopy-ram.c | 13 ++++++++----- migration/postcopy-ram.h | 4 ++-- migration/ram.c | 4 ++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index ade7f1c..62a272a 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -713,9 +713,10 @@ int postcopy_ram_enable_notify(MigrationIncomingState = *mis) * returns 0 on success */ int postcopy_place_page(MigrationIncomingState *mis, void *host, void *fro= m, - size_t pagesize) + RAMBlock *rb) { struct uffdio_copy copy_struct; + size_t pagesize =3D qemu_ram_pagesize(rb); =20 copy_struct.dst =3D (uint64_t)(uintptr_t)host; copy_struct.src =3D (uint64_t)(uintptr_t)from; @@ -744,10 +745,12 @@ int postcopy_place_page(MigrationIncomingState *mis, = void *host, void *from, * returns 0 on success */ int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, - size_t pagesize) + RAMBlock *rb) { + size_t pagesize; trace_postcopy_place_page_zero(host); =20 + pagesize =3D qemu_ram_pagesize(rb); if (pagesize =3D=3D getpagesize()) { struct uffdio_zeropage zero_struct; zero_struct.range.start =3D (uint64_t)(uintptr_t)host; @@ -778,7 +781,7 @@ int postcopy_place_page_zero(MigrationIncomingState *mi= s, void *host, memset(mis->postcopy_tmp_zero_page, '\0', mis->largest_page_si= ze); } return postcopy_place_page(mis, host, mis->postcopy_tmp_zero_page, - pagesize); + rb); } =20 return 0; @@ -841,14 +844,14 @@ int postcopy_ram_enable_notify(MigrationIncomingState= *mis) } =20 int postcopy_place_page(MigrationIncomingState *mis, void *host, void *fro= m, - size_t pagesize) + RAMBlock *rb) { assert(0); return -1; } =20 int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, - size_t pagesize) + RAMBlock *rb) { assert(0); return -1; diff --git a/migration/postcopy-ram.h b/migration/postcopy-ram.h index 587a8b8..77ea0fd 100644 --- a/migration/postcopy-ram.h +++ b/migration/postcopy-ram.h @@ -72,14 +72,14 @@ void postcopy_discard_send_finish(MigrationState *ms, * returns 0 on success */ int postcopy_place_page(MigrationIncomingState *mis, void *host, void *fro= m, - size_t pagesize); + RAMBlock *rb); =20 /* * Place a zero page at (host) atomically * returns 0 on success */ int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, - size_t pagesize); + RAMBlock *rb); =20 /* The current postcopy state is read/set by postcopy_state_get/set * which update it atomically. diff --git a/migration/ram.c b/migration/ram.c index a7c0db4..a791d40 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2524,10 +2524,10 @@ static int ram_load_postcopy(QEMUFile *f) =20 if (all_zero) { ret =3D postcopy_place_page_zero(mis, place_dest, - block->page_size); + block); } else { ret =3D postcopy_place_page(mis, place_dest, - place_source, block->page_size); + place_source, block); } } if (!ret) { --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829135907513.1394412915458; Wed, 7 Jun 2017 02:52:15 -0700 (PDT) Received: from localhost ([::1]:42330 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXdO-0005Zt-AK for importer@patchew.org; Wed, 07 Jun 2017 05:52:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58041) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYt-0001Au-IZ for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYr-0000GE-IJ for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:35 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:61296) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYr-0000FL-Bi for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:33 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6007C98J8X130@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:32 +0100 (BST) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094731eucas1p11a6fa10c39bfb063e8b0fbd2bba8beff~FzejvF_6P1418714187eucas1p12; Wed, 7 Jun 2017 09:47:31 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3.samsung.com (EUCPMTA) with SMTP id 59.FC.17464.3BBC7395; Wed, 7 Jun 2017 10:47:31 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094730eucas1p29b692c0f813d5368d70d999ca8a1f186~FzejJZkWA1380713807eucas1p2A; Wed, 7 Jun 2017 09:47:30 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 80.CB.17452.2BBC7395; Wed, 7 Jun 2017 10:47:30 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:30 +0100 (BST) X-AuditID: cbfec7f2-f797e6d000004438-2e-5937cbb314a3 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:36 +0300 Message-id: <1496828798-27548-10-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsWy7djPc7qbT5tHGnR+47OYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKC6blNSczLLUIn27BK6MZXfO Mxd8cq/Y838/SwPjObMuRk4OCQETiX//m5kgbDGJC/fWs3UxcnEICSxllNg1+z0jhPOZUaJl yi9mmI4JR9ayQiSWMUocPfgdqqWbSWLZkwdAVRwcbAIGEvvu2YI0iAhISvzuOg3WzCxQIPGx dSULiC0s4Cmx6OdcdhCbRUBVYsdjkNWcHLwCHhIdrx6yQSyTkzh5bDIriM0JFP8x9TYzyC4J gdtsEjsbp7CD7JIQkJXYdADqOBeJx8svQ9nCEq+Ob2GHsGUkOjsOMkH0tjNKdO/sZIVwJjBK nJn+F6rKXuLUzatMEJfySUzaNp0ZYgGvREebEITpIdF/Iwui2lHi5P/JTBC/z2aU+LLlLOME RpkFjAyrGEVSS4tz01OLjfWKE3OLS/PS9ZLzczcxAmPz9L/jn3Ywfj1hdYhRgINRiYdXYJdZ pBBrYllxZe4hRgkOZiUR3olHzSOFeFMSK6tSi/Lji0pzUosPMUpzsCiJ83KduhYhJJCeWJKa nZpakFoEk2Xi4JRqYPRL++uX8P7Z4t8T+HyaP18Mn7nPX+2f4LsXObf/PnvCN/dym8HblaeW 2H8WDMjSPuEyY2OM99w/5r27pArlP+q8eRlqzeX/wzPKTVNp6jKT2WK71gjW39zU/FIjocfT fobQw98/us4/T+evF67Vqmmvr+d4VtfMJbT9qJz2Zb4siVOz9p5yvaXEUpyRaKjFXFScCACU tzb1yQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrKLMWRmVeSWpSXmKPExsVy+t/xy7qbTptHGrzbZGwx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUW42GamJKalFCql5yfkpmXnp tkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DLWHbnPHPBJ/eKPf/3 szQwnjPrYuTkkBAwkZhwZC0rhC0mceHeerYuRi4OIYEljBI7n75ngnB6mSR+rrnC3MXIwcEm YCCx754tSIOIgKTE767TzCA2s0CBxLnJU1hAbGEBT4lFP+eyg9gsAqoSOx6DDOXk4BXwkOh4 9ZANYpmcxMljk8EWcwLFf0y9DTZHSMBd4vadM0wTGHkXMDKsYhRJLS3OTc8tNtQrTswtLs1L 10vOz93ECAzSbcd+bt7BeGlj8CFGAQ5GJR5egV1mkUKsiWXFlbmHGCU4mJVEeCceNY8U4k1J rKxKLcqPLyrNSS0+xGgKdNREZinR5HxgBOWVxBuaGJpbGhoZW1iYGxkpifOWfLgSLiSQnliS mp2aWpBaBNPHxMEp1cA4ibV37eTrsWHl/C2+HKdTD4mu/9WZP+kHt6xIwt9Utv9lYvxrM6sL /dImibz2/XwvfeOfEgPV7WF2a4+IXpG54656l6Mjuuhp7rLGmfzPrjL9NWQr47L6XRkanlC9 cOv8K7FpnStTD8zLXaN3OqG28I+TfKjYrUOtL0WXFJ6/4dqw88yJwD9KLMUZiYZazEXFiQAE MLcaaAIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094730eucas1p29b692c0f813d5368d70d999ca8a1f186 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094730eucas1p29b692c0f813d5368d70d999ca8a1f186 X-RootMTR: 20170607094730eucas1p29b692c0f813d5368d70d999ca8a1f186 References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.13 Subject: [Qemu-devel] [PATCH v8 09/11] migration: calculate vCPU blocktime on dst side 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This patch provides blocktime calculation per vCPU, as a summary and as a overlapped value for all vCPUs. This approach was suggested by Peter Xu, as an improvements of previous approch where QEMU kept tree with faulted page address and cpus bi= tmask in it. Now QEMU is keeping array with faulted page address as value and vCPU as index. It helps to find proper vCPU at UFFD_COPY time. Also it keeps list for blocktime per vCPU (could be traced with page_fault_addr) Blocktime will not calculated if postcopy_blocktime field of MigrationIncomingState wasn't initialized. Signed-off-by: Alexey Perevalov --- migration/postcopy-ram.c | 139 +++++++++++++++++++++++++++++++++++++++++++= +++- migration/trace-events | 5 +- 2 files changed, 142 insertions(+), 2 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 62a272a..0ad9f9f 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -27,6 +27,7 @@ #include "ram.h" #include "sysemu/sysemu.h" #include "sysemu/balloon.h" +#include #include "qemu/error-report.h" #include "trace.h" =20 @@ -561,6 +562,133 @@ static int ram_block_enable_notify(const char *block_= name, void *host_addr, return 0; } =20 +static int get_mem_fault_cpu_index(uint32_t pid) +{ + CPUState *cpu_iter; + + CPU_FOREACH(cpu_iter) { + if (cpu_iter->thread_id =3D=3D pid) { + return cpu_iter->cpu_index; + } + } + trace_get_mem_fault_cpu_index(pid); + return -1; +} + +/* + * This function is being called when pagefault occurs. It + * tracks down vCPU blocking time. + * + * @addr: faulted host virtual address + * @ptid: faulted process thread id + * @rb: ramblock appropriate to addr + */ +static void mark_postcopy_blocktime_begin(uint64_t addr, uint32_t ptid, + RAMBlock *rb) +{ + int cpu; + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *dc =3D mis->blocktime_ctx; + int64_t now_ms; + + if (!dc || ptid =3D=3D 0) { + return; + } + cpu =3D get_mem_fault_cpu_index(ptid); + if (cpu < 0) { + return; + } + + now_ms =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIME); + if (dc->vcpu_addr[cpu] =3D=3D 0) { + atomic_inc(&dc->smp_cpus_down); + } + + atomic_xchg__nocheck(&dc->vcpu_addr[cpu], addr); + atomic_xchg__nocheck(&dc->last_begin, now_ms); + atomic_xchg__nocheck(&dc->page_fault_vcpu_time[cpu], now_ms); + + if (test_copiedmap_by_addr(addr, rb)) { + atomic_xchg__nocheck(&dc->vcpu_addr[cpu], 0); + atomic_xchg__nocheck(&dc->page_fault_vcpu_time[cpu], 0); + atomic_sub(&dc->smp_cpus_down, 1); + } + trace_mark_postcopy_blocktime_begin(addr, dc, dc->page_fault_vcpu_time= [cpu], + cpu); +} + +/* + * This function just provide calculated blocktime per cpu and trace it. + * Total blocktime is calculated in mark_postcopy_blocktime_end. + * + * + * Assume we have 3 CPU + * + * S1 E1 S1 E1 + * -----***********------------xxx***************------------------------>= CPU1 + * + * S2 E2 + * ------------****************xxx--------------------------------------->= CPU2 + * + * S3 E3 + * ------------------------****xxx********------------------------------->= CPU3 + * + * We have sequence S1,S2,E1,S3,S1,E2,E3,E1 + * S2,E1 - doesn't match condition due to sequence S1,S2,E1 doesn't includ= e CPU3 + * S3,S1,E2 - sequence includes all CPUs, in this case overlap will be S1,= E2 - + * it's a part of total blocktime. + * S1 - here is last_begin + * Legend of the picture is following: + * * - means blocktime per vCPU + * x - means overlapped blocktime (total blocktime) + * + * @addr: host virtual address + */ +static void mark_postcopy_blocktime_end(uint64_t addr) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *dc =3D mis->blocktime_ctx; + int i, affected_cpu =3D 0; + int64_t now_ms; + bool vcpu_total_blocktime =3D false; + + if (!dc) { + return; + } + + now_ms =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIME); + + /* lookup cpu, to clear it, + * that algorithm looks straighforward, but it's not + * optimal, more optimal algorithm is keeping tree or hash + * where key is address value is a list of */ + for (i =3D 0; i < smp_cpus; i++) { + uint64_t vcpu_blocktime =3D 0; + if (atomic_fetch_add(&dc->vcpu_addr[i], 0) !=3D addr) { + continue; + } + atomic_xchg__nocheck(&dc->vcpu_addr[i], 0); + vcpu_blocktime =3D now_ms - + atomic_fetch_add(&dc->page_fault_vcpu_time[i], 0); + affected_cpu +=3D 1; + /* we need to know is that mark_postcopy_end was due to + * faulted page, another possible case it's prefetched + * page and in that case we shouldn't be here */ + if (!vcpu_total_blocktime && + atomic_fetch_add(&dc->smp_cpus_down, 0) =3D=3D smp_cpus) { + vcpu_total_blocktime =3D true; + } + /* continue cycle, due to one page could affect several vCPUs */ + dc->vcpu_blocktime[i] +=3D vcpu_blocktime; + } + + atomic_sub(&dc->smp_cpus_down, affected_cpu); + if (vcpu_total_blocktime) { + dc->total_blocktime +=3D now_ms - atomic_fetch_add(&dc->last_begin= , 0); + } + trace_mark_postcopy_blocktime_end(addr, dc, dc->total_blocktime); +} + /* * Handle faults detected by the USERFAULT markings */ @@ -638,8 +766,11 @@ static void *postcopy_ram_fault_thread(void *opaque) rb_offset &=3D ~(qemu_ram_pagesize(rb) - 1); trace_postcopy_ram_fault_thread_request(msg.arg.pagefault.address, qemu_ram_get_idstr(rb), - rb_offset); + rb_offset, + msg.arg.pagefault.feat.pti= d); =20 + mark_postcopy_blocktime_begin((uintptr_t)(msg.arg.pagefault.addres= s), + msg.arg.pagefault.feat.ptid, rb); /* * Send the request to the source - we want to request one * of our host page sizes (which is >=3D TPS) @@ -723,6 +854,12 @@ int postcopy_place_page(MigrationIncomingState *mis, v= oid *host, void *from, copy_struct.len =3D pagesize; copy_struct.mode =3D 0; =20 + /* copied page isn't feature of blocktime calculation, + * it's more general entity, so keep it here, + * but gup betwean two following operation could be high, + * and in this case blocktime for such small interval will be lost */ + set_copiedmap_by_addr((uint64_t)(uintptr_t)host, rb); + mark_postcopy_blocktime_end((uint64_t)(uintptr_t)host); /* copy also acks to the kernel waking the stalled thread up * TODO: We can inhibit that ack and only do it if it was requested * which would be slightly cheaper, but we'd have to be careful diff --git a/migration/trace-events b/migration/trace-events index 5b8ccf3..7bdadbb 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -112,6 +112,8 @@ process_incoming_migration_co_end(int ret, int ps) "ret= =3D%d postcopy-state=3D%d" process_incoming_migration_co_postcopy_end_main(void) "" migration_set_incoming_channel(void *ioc, const char *ioctype) "ioc=3D%p i= octype=3D%s" migration_set_outgoing_channel(void *ioc, const char *ioctype, const char = *hostname) "ioc=3D%p ioctype=3D%s hostname=3D%s" +mark_postcopy_blocktime_begin(uint64_t addr, void *dd, int64_t time, int c= pu) "addr 0x%" PRIx64 " dd %p time %" PRId64 " cpu %d" +mark_postcopy_blocktime_end(uint64_t addr, void *dd, int64_t time) "addr 0= x%" PRIx64 " dd %p time %" PRId64 =20 # migration/rdma.c qemu_rdma_accept_incoming_migration(void) "" @@ -188,7 +190,7 @@ postcopy_ram_enable_notify(void) "" postcopy_ram_fault_thread_entry(void) "" postcopy_ram_fault_thread_exit(void) "" postcopy_ram_fault_thread_quit(void) "" -postcopy_ram_fault_thread_request(uint64_t hostaddr, const char *ramblock,= size_t offset) "Request for HVA=3D%" PRIx64 " rb=3D%s offset=3D%zx" +postcopy_ram_fault_thread_request(uint64_t hostaddr, const char *ramblock,= size_t offset, uint32_t pid) "Request for HVA=3D%" PRIx64 " rb=3D%s offset= =3D%zx %u" postcopy_ram_incoming_cleanup_closeuf(void) "" postcopy_ram_incoming_cleanup_entry(void) "" postcopy_ram_incoming_cleanup_exit(void) "" @@ -197,6 +199,7 @@ save_xbzrle_page_skipping(void) "" save_xbzrle_page_overflow(void) "" ram_save_iterate_big_wait(uint64_t milliconds, int iterations) "big wait: = %" PRIu64 " milliseconds, %d iterations" ram_load_complete(int ret, uint64_t seq_iter) "exit_code %d seq iteration = %" PRIu64 +get_mem_fault_cpu_index(uint32_t pid) "pid %u is not vCPU" =20 # migration/exec.c migration_exec_outgoing(const char *cmd) "cmd=3D%s" --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829291072520.8731909758636; Wed, 7 Jun 2017 02:54:51 -0700 (PDT) Received: from localhost ([::1]:42342 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXft-000054-HN for importer@patchew.org; Wed, 07 Jun 2017 05:54:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58104) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYx-0001Bv-0O for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYs-0000Gd-Ia for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:15628) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYs-0000GQ-9x for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:34 -0400 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6007J58J8AG30@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:32 +0100 (BST) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094732eucas1p266cd95b6af5a3671e594b59d9edb9693~FzekXalML0466904669eucas1p2V; Wed, 7 Jun 2017 09:47:32 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges1.samsung.com (EUCPMTA) with SMTP id 7F.CE.14140.6BBC7395; Wed, 7 Jun 2017 10:47:34 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170607094731eucas1p2cbbf439e841b1d72edb374d35d53bea3~FzejwE-5y0466904669eucas1p2U; Wed, 7 Jun 2017 09:47:31 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id E0.CB.17452.3BBC7395; Wed, 7 Jun 2017 10:47:31 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:31 +0100 (BST) X-AuditID: cbfec7ef-f796a6d00000373c-35-5937cbb64ce6 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:37 +0300 Message-id: <1496828798-27548-11-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrGIsWRmVeSWpSXmKPExsWy7djPc7rbTptHGnS+VbSYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKC6blNSczLLUIn27BK6MNy1T GAs2uVS8/3edpYHxmmkXIyeHhICJxIo/z9ggbDGJC/fWA9lcHEICyxgl/nybywLhfGaUWLj0 IjNMx6kNXUxwVZuWXmaEcLqZJCZfWgmU4eBgEzCQ2HfPFqRBREBS4nfXabBmZoECiY+tK1lA bGGBMIknfzaC2SwCqhL3lvwBq+EV8JDoff6aBWKZnMTJY5NZQWxOoPiPqbeZQXZJCFxnk3hz dTPYLgkBWYlNB6COc5HYM+UxlC0s8er4FnYIW0ais+MgE0RvO6NE985OVghnAqPEmel/oars JU7dvMoEcSmfxKRt05khFvBKdLQJQZR4SBxeNIERwnaUeL33INgyIYHZjBK3l3tNYJRZwMiw ilEktbQ4Nz212FCvODG3uDQvXS85P3cTIzA2T/87/n4H49PmkEOMAhyMSjy8GXvMIoVYE8uK K3MPMUpwMCuJ8E48ah4pxJuSWFmVWpQfX1Sak1p8iFGag0VJnJf31LUIIYH0xJLU7NTUgtQi mCwTB6dUA6N+5t/Qb1vcWblemppHXmx4F2FcJyngdoLVZv1tOZV5Koxdl7Sffv6YapX9TPy8 4kWBzIyNoYERofrcrJzegQsFbXbsl5EM/8z8LCfsyvE7d7c9Wf/X1/bRmrf1ywV8GuxCdl8T 3jtdpKl1ZW/9qv4zu1WKnM7P6+G6YpuzRLvyhev+K2/PHVRiKc5INNRiLipOBAAsxu1jyQIA AA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrCLMWRmVeSWpSXmKPExsVy+t/xy7qbT5tHGlxtlrOYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFgdWjyfXNjN5vN93lc2jb8sqxgDmKDebjNTElNQihdS85PyUzLx0 W6XQEDddCyWFvMTcVFulCF3fkCAlhbLEnFIgz8gADTg4B7gHK+nbJbhlvGmZwliwyaXi/b/r LA2M10y7GDk5JARMJE5t6GKCsMUkLtxbz9bFyMUhJLCEUeLvzanMIAkhgV4miWdzE7sYOTjY BAwk9t2zBQmLCEhK/O46DVbCLFAgcW7yFBYQW1ggTOLJn41gNouAqsS9JX/AangFPCR6n79m gdglJ3Hy2GRWEJsTKP5j6m2oVe4St++cYZrAyLuAkWEVo0hqaXFuem6xoV5xYm5xaV66XnJ+ 7iZGYIhuO/Zz8w7GSxuDDzEKcDAq8fAK7DKLFGJNLCuuzD3EKMHBrCTCO/GoeaQQb0piZVVq UX58UWlOavEhRlOgoyYyS4km5wPjJ68k3tDE0NzS0MjYwsLcyEhJnLfkw5VwIYH0xJLU7NTU gtQimD4mDk6pBsb2iQ5S35aLPPGJrZTZuur4rQU3bjgZ8t02yj/DMG3++3Dh5cJGNr5pT8XF 4wtvZXZu2csZ1MJ9fer3WfNfnJ0UobaumP31yYgVVbN2FXN2JM/aefvkpKzDy47o+ktZ+G9W n/D8W3nx18P6kVL2xg+2+f6JZ29VOVNnd3vzle+JuY7JWlvVjpUpsRRnJBpqMRcVJwIAWGDZ jWcCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094731eucas1p2cbbf439e841b1d72edb374d35d53bea3 X-Msg-Generator: CA X-Sender-IP: 182.198.249.179 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094731eucas1p2cbbf439e841b1d72edb374d35d53bea3 X-RootMTR: 20170607094731eucas1p2cbbf439e841b1d72edb374d35d53bea3 References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.12 Subject: [Qemu-devel] [PATCH v8 10/11] migration: add postcopy total blocktime into query-migrate 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Postcopy total blocktime is available on destination side only. But query-migrate was possible only for source. This patch adds ability to call query-migrate on destination. To be able to see postcopy blocktime, need to request postcopy-blocktime capability. The query-migrate command will show following sample result: {"return": "postcopy-vcpu-blocktime": [115, 100], "status": "completed", "postcopy-blocktime": 100 }} postcopy_vcpu_blocktime contains list, where the first item is the first vCPU in QEMU. This patch has a drawback, it combines states of incoming and outgoing migration. Ongoing migration state will overwrite incoming state. Looks like better to separate query-migrate for incoming and outgoing migration or add parameter to indicate type of migration. Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov --- hmp.c | 15 ++++++++++++ include/migration/migration.h | 4 +++ migration/migration.c | 40 +++++++++++++++++++++++++++--- migration/postcopy-ram.c | 57 +++++++++++++++++++++++++++++++++++++++= ++++ migration/trace-events | 1 + qapi-schema.json | 9 ++++++- 6 files changed, 122 insertions(+), 4 deletions(-) diff --git a/hmp.c b/hmp.c index 8c72c58..e0c4fdf 100644 --- a/hmp.c +++ b/hmp.c @@ -262,6 +262,21 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict) info->cpu_throttle_percentage); } =20 + if (info->has_postcopy_blocktime) { + monitor_printf(mon, "postcopy blocktime: %" PRId64 "\n", + info->postcopy_blocktime); + } + + if (info->has_postcopy_vcpu_blocktime) { + Visitor *v; + char *str; + v =3D string_output_visitor_new(false, &str); + visit_type_int64List(v, NULL, &info->postcopy_vcpu_blocktime, NULL= ); + visit_complete(v, &str); + monitor_printf(mon, "postcopy vcpu blocktime: %s\n", str); + g_free(str); + visit_free(v); + } qapi_free_MigrationInfo(info); qapi_free_MigrationCapabilityStatusList(caps); } diff --git a/include/migration/migration.h b/include/migration/migration.h index 766e802..7d20470 100644 --- a/include/migration/migration.h +++ b/include/migration/migration.h @@ -98,6 +98,10 @@ struct MigrationIncomingState { =20 MigrationIncomingState *migration_incoming_get_current(void); void migration_incoming_state_destroy(void); +/* + * Functions to work with blocktime context + */ +void fill_destination_postcopy_migration_info(MigrationInfo *info); =20 struct MigrationState { diff --git a/migration/migration.c b/migration/migration.c index d1cc34f..b80d5b5 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -625,14 +625,15 @@ static void populate_ram_info(MigrationInfo *info, Mi= grationState *s) } } =20 -MigrationInfo *qmp_query_migrate(Error **errp) +static void fill_source_migration_info(MigrationInfo *info) { - MigrationInfo *info =3D g_malloc0(sizeof(*info)); MigrationState *s =3D migrate_get_current(); =20 switch (s->state) { case MIGRATION_STATUS_NONE: /* no migration has happened ever */ + /* do not overwrite destination migration status */ + return; break; case MIGRATION_STATUS_SETUP: info->has_status =3D true; @@ -718,10 +719,43 @@ MigrationInfo *qmp_query_migrate(Error **errp) break; } info->status =3D s->state; +} =20 - return info; +static void fill_destination_migration_info(MigrationInfo *info) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + + switch (mis->state) { + case MIGRATION_STATUS_NONE: + return; + break; + case MIGRATION_STATUS_SETUP: + case MIGRATION_STATUS_CANCELLING: + case MIGRATION_STATUS_CANCELLED: + case MIGRATION_STATUS_ACTIVE: + case MIGRATION_STATUS_POSTCOPY_ACTIVE: + case MIGRATION_STATUS_FAILED: + case MIGRATION_STATUS_COLO: + info->has_status =3D true; + break; + case MIGRATION_STATUS_COMPLETED: + info->has_status =3D true; + fill_destination_postcopy_migration_info(info); + break; + } + info->status =3D mis->state; } =20 +MigrationInfo *qmp_query_migrate(Error **errp) +{ + MigrationInfo *info =3D g_malloc0(sizeof(*info)); + + fill_destination_migration_info(info); + fill_source_migration_info(info); + + return info; + } + void qmp_migrate_set_capabilities(MigrationCapabilityStatusList *params, Error **errp) { diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 0ad9f9f..7f5b402 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -117,6 +117,55 @@ static struct PostcopyBlocktimeContext *blocktime_cont= ext_new(void) return ctx; } =20 +static int64List *get_vcpu_blocktime_list(PostcopyBlocktimeContext *ctx) +{ + int64List *list =3D NULL, *entry =3D NULL; + int i; + + for (i =3D smp_cpus - 1; i >=3D 0; i--) { + entry =3D g_new0(int64List, 1); + entry->value =3D ctx->vcpu_blocktime[i]; + entry->next =3D list; + list =3D entry; + } + + return list; +} + +/* + * This function just populates MigrationInfo from postcopy's + * blocktime context. It will not populate MigrationInfo, + * unless postcopy-blocktime capability was set. + * + * @info: pointer to MigrationInfo to populate + */ +void fill_destination_postcopy_migration_info(MigrationInfo *info) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *bc =3D mis->blocktime_ctx; + + if (!bc) { + return; + } + + info->has_postcopy_blocktime =3D true; + info->postcopy_blocktime =3D bc->total_blocktime; + info->has_postcopy_vcpu_blocktime =3D true; + info->postcopy_vcpu_blocktime =3D get_vcpu_blocktime_list(bc); +} + +static uint64_t get_postcopy_total_blocktime(void) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + PostcopyBlocktimeContext *bc =3D mis->blocktime_ctx; + + if (!bc) { + return 0; + } + + return bc->total_blocktime; +} + /** * receive_ufd_features: check userfault fd features, to request only supp= orted * features in the future. @@ -491,6 +540,9 @@ int postcopy_ram_incoming_cleanup(MigrationIncomingStat= e *mis) munmap(mis->postcopy_tmp_zero_page, mis->largest_page_size); mis->postcopy_tmp_zero_page =3D NULL; } + trace_postcopy_ram_incoming_cleanup_blocktime( + get_postcopy_total_blocktime()); + trace_postcopy_ram_incoming_cleanup_exit(); return 0; } @@ -950,6 +1002,11 @@ void *postcopy_get_tmp_page(MigrationIncomingState *m= is) =20 #else /* No target OS support, stubs just fail */ +void fill_destination_postcopy_migration_info(MigrationInfo *info) +{ + error_report("%s: No OS support", __func__); +} + bool postcopy_ram_supported_by_host(MigrationIncomingState *mis) { error_report("%s: No OS support", __func__); diff --git a/migration/trace-events b/migration/trace-events index 7bdadbb..55a3b6e 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -195,6 +195,7 @@ postcopy_ram_incoming_cleanup_closeuf(void) "" postcopy_ram_incoming_cleanup_entry(void) "" postcopy_ram_incoming_cleanup_exit(void) "" postcopy_ram_incoming_cleanup_join(void) "" +postcopy_ram_incoming_cleanup_blocktime(uint64_t total) "total blocktime %= " PRIu64 save_xbzrle_page_skipping(void) "" save_xbzrle_page_overflow(void) "" ram_save_iterate_big_wait(uint64_t milliconds, int iterations) "big wait: = %" PRIu64 " milliseconds, %d iterations" diff --git a/qapi-schema.json b/qapi-schema.json index e906953..9229bbc 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -712,6 +712,11 @@ # @status is 'failed'. Clients should not attempt to parse the # error strings. (Since 2.7) # +# @postcopy-blocktime: total time when all vCPU were blocked during postco= py +# live migration (Since 2.10) +# +# @postcopy-vcpu-blocktime: list of the postcopy blocktime per vCPU (Since= 2.10) +# # Since: 0.14.0 ## { 'struct': 'MigrationInfo', @@ -723,7 +728,9 @@ '*downtime': 'int', '*setup-time': 'int', '*cpu-throttle-percentage': 'int', - '*error-desc': 'str'} } + '*error-desc': 'str', + '*postcopy-blocktime' : 'int64', + '*postcopy-vcpu-blocktime': ['int64']} } =20 ## # @query-migrate: --=20 1.9.1 From nobody Wed Nov 5 15:55:52 2025 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; 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 1496829362430337.2693708489197; Wed, 7 Jun 2017 02:56:02 -0700 (PDT) Received: from localhost ([::1]:42351 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXh1-0001Ai-SA for importer@patchew.org; Wed, 07 Jun 2017 05:55:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58106) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIXYx-0001DC-RK for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIXYu-0000HW-Cj for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:39 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:61299) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dIXYu-0000H2-6o for qemu-devel@nongnu.org; Wed, 07 Jun 2017 05:47:36 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout3.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OR6008BT8J97530@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 07 Jun 2017 10:47:33 +0100 (BST) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094733eucas1p1a04b88bfdc2fe27b51de95ed79b9d205~FzelSDnJV1413314133eucas1p1A; Wed, 7 Jun 2017 09:47:33 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3.samsung.com (EUCPMTA) with SMTP id B9.FC.17464.4BBC7395; Wed, 7 Jun 2017 10:47:32 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170607094732eucas1p199fb11b4189929a105515f6079415ebe~FzekfPSzC2789527895eucas1p1L; Wed, 7 Jun 2017 09:47:32 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 72.32.20206.4BBC7395; Wed, 7 Jun 2017 10:47:32 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OR600I3B8ILMHB0@eusync1.samsung.com>; Wed, 07 Jun 2017 10:47:32 +0100 (BST) X-AuditID: cbfec7f2-f797e6d000004438-30-5937cbb45d83 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 07 Jun 2017 12:46:38 +0300 Message-id: <1496828798-27548-12-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrKIsWRmVeSWpSXmKPExsWy7djPc7pbTptHGqy6am4x9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUVw2Kak5mWWpRfp2CVwZD07e Zyn4zlEx6/1T9gbGbexdjJwcEgImEg2/3rJA2GISF+6tZ+ti5OIQEljKKHFiZhOU85lRomn1 TtYuRg6wjnXvDSHiyxglHs7fxAjhdDNJ/Fp+mwWkiE3AQGLfPVuQqSICkhK/u04zg9jMAgUS H1tXgm0TFnCVeNF4kgmknEVAVWL1JEuQMK+Ah8SW8xcYIQ6Skzh5bDIriM0JFP8x9TYzyCoJ getsEkd/7WKDuEdWYtMBZoh6F4kJ+zuZIGxhiVfHt0A9KSNxeXI3C0RvO6NE985OVghnAqPE mel/oarsJU7dvMoEcSifxKRt05khFvBKdLQJQZR4SGzf9oINwnaU6NrUxw7x+2xGifOP97BM YJRZwMiwilEktbQ4Nz212FivODG3uDQvXS85P3cTIzAyT/87/mkH49cTVocYBTgYlXh4BXaZ RQqxJpYVV+YeYpTgYFYS4Z141DxSiDclsbIqtSg/vqg0J7X4EKM0B4uSOC/XqWsRQgLpiSWp 2ampBalFMFkmDk6pBkaLxQyRv84eN16w+xoHswZHpveMPoP1RVJ2+a8Z3svstWB+x/xtstS9 ivBE1z2zO/5uCZ+acrza7hk/2+lbT55P7vmyRzlo7afna4v36ryoEJf6JrqTc2Wt7LuNfzp5 nNx1gzhtMmcU9/tPyd6ww3yvcIdMztaC1BX+hYta5R5yfd6/skSi6p0SS3FGoqEWc1FxIgCW V6z3yAIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrELMWRmVeSWpSXmKPExsVy+t/xy7pbTptHGlz9yGwx9+55FovebffY La60/2S32LL/G7vF8d4dLA6sHk+ubWbyeL/vKptH35ZVjAHMUW42GamJKalFCql5yfkpmXnp tkqhIW66FkoKeYm5qbZKEbq+IUFKCmWJOaVAnpEBGnBwDnAPVtK3S3DLeHDyPkvBd46KWe+f sjcwbmPvYuTgkBAwkVj33rCLkRPIFJO4cG89WxcjF4eQwBJGiUdHrjCBJIQEepkk5mzjBqln EzCQ2HfPFiQsIiAp8bvrNDOIzSxQIHFu8hQWEFtYwFXiReNJJpByFgFVidWTLEHCvAIeElvO X2CEWCUncfLYZFYQmxMo/mPqbWaITe4St++cYZrAyLuAkWEVo0hqaXFuem6xkV5xYm5xaV66 XnJ+7iZGYHhuO/Zzyw7GrnfBhxgFOBiVeHgz9phFCrEmlhVX5h5ilOBgVhLhnXjUPFKINyWx siq1KD++qDQntfgQoynQTROZpUST84Gxk1cSb2hiaG5paGRsYWFuZKQkzjv1w5VwIYH0xJLU 7NTUgtQimD4mDk6pBkZ75WLvnW9X7uD1TN947fsjax/bmens9mz9irlJrOpN715r9YVJSrO3 VWv1rOuI1nmQ/O7YajVG6WePtJx9vlh3Hlmjc+mEsJfzuj3WJVWTt4Y6G1nWah0UzameMNW2 vq/xp8qOZ4zZZ9gWuiZ3ezxq3XOoaYcGt9+d8oMm/HvLrHsXrjDYqcRSnJFoqMVcVJwIAP6u O9JlAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170607094732eucas1p199fb11b4189929a105515f6079415ebe X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG+yCvOyEseyghOyekBtTZW5pb3IgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?QWxleGV5IFBlcmV2YWxvdhtTUlItVmlydHVhbGl6YXRpb24g?= =?UTF-8?B?TGFiG1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0NJU0hRG0MxMEdEMDFHRDAxMDE1NA==?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170607094732eucas1p199fb11b4189929a105515f6079415ebe X-RootMTR: 20170607094732eucas1p199fb11b4189929a105515f6079415ebe References: <1496828798-27548-1-git-send-email-a.perevalov@samsung.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 210.118.77.13 Subject: [Qemu-devel] [PATCH v8 11/11] migration: postcopy_blocktime documentation 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: i.maximets@samsung.com, Alexey Perevalov , peterx@redhat.com, dgilbert@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Alexey Perevalov Reviewed-by: Juan Quintela --- docs/migration.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/migration.txt b/docs/migration.txt index 1b940a8..4b625ca 100644 --- a/docs/migration.txt +++ b/docs/migration.txt @@ -402,6 +402,16 @@ will now cause the transition from precopy to postcopy. It can be issued immediately after migration is started or any time later on. Issuing it after the end of a migration is harmless. =20 +Blocktime is a postcopy live migration metric, intended to show +how long the vCPU was in state of interruptable sleep due to pagefault. +This value is calculated on destination side. +To enable postcopy blocktime calculation, enter following command on desti= nation +monitor: + +migrate_set_capability postcopy-blocktime on + +Postcopy blocktime can be retrieved by query-migrate qmp command. + Note: During the postcopy phase, the bandwidth limits set using migrate_set_speed is ignored (to avoid delaying requested pages that the destination is waiting for). --=20 1.9.1