From nobody Mon May 6 11:40:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; 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 1493183291453325.9173297480655; Tue, 25 Apr 2017 22:08:11 -0700 (PDT) Received: from localhost ([::1]:52644 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FBQ-00033L-Lf for importer@patchew.org; Wed, 26 Apr 2017 01:08:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60662) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FA2-0001xU-HA for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3F9x-0002ty-Ib for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:42 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:32442) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3F9x-0002tk-C8 for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:37 -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 <0OP00065M3IYHU80@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 26 Apr 2017 06:06:34 +0100 (BST) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170426050633eucas1p29712e9be941a9a2b093e33f710f0fb2b~42jP9kNXK0498304983eucas1p2N; Wed, 26 Apr 2017 05:06:33 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3.samsung.com (EUCPMTA) with SMTP id 6D.D1.17464.9DA20095; Wed, 26 Apr 2017 06:06:33 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170426050632eucas1p11fb353bd5801ae238a9adf55dcd0ea09~42jPYlhFO2694526945eucas1p1y; Wed, 26 Apr 2017 05:06:32 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id E0.F7.20206.3FA20095; Wed, 26 Apr 2017 06:06:59 +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 <0OP000MTF3IPGF20@eusync1.samsung.com>; Wed, 26 Apr 2017 06:06:32 +0100 (BST) X-AuditID: cbfec7f2-f797e6d000004438-58-59002ad930e6 From: Alexey Perevalov To: dgilbert@redhat.com Date: Wed, 26 Apr 2017 08:06:15 +0300 Message-id: <1493183181-21962-2-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1493183181-21962-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrAIsWRmVeSWpSXmKPExsWy7djPc7o3tRgiDXp/MVnMvXuexaJ32z12 ixObDjJbXGn/yW6xZf83dovjvTtYHNg8DrxYyO7x5NpmJo/3+66yefRtWcUYwBLFZZOSmpNZ llqkb5fAlbG6eRFzwVL2iqtnzjI2MH5l7WLk4JAQMJG4s0Sri5ETyBSTuHBvPVsXIxeHkMBS Ron/vcvZIZzPjBK7Ji9hhKgykVjw6AMLRGIZo8SBT5ehnG4miW0rnrCAjGUTMJDYd88WpEFE QFzi3b4GdhCbWaBAYuenHWwgtrBAkMSxmxvB4iwCqhIHH18Ei/MKuEtcenKfBWKZnMTJY5NZ QWxOAQ+J9evfMIPskhB4ziax5FEHO8QLshKbDjBD1LtI/F/+hR3CFpZ4dXwLlC0jcXlyNwtE bzujRPfOTlYIZwKjxJnpf6Gq7CVO3bzKBHEpn8SkbdOZIRbwSnS0CUGUAB3x6R8ThO0oMXPy QUaI52czSrw73844gVFmASPDKkaR1NLi3PTUYmO94sTc4tK8dL3k/NxNjMB4Pf3v+KcdjF9P WB1iFOBgVOLhDfD4HyHEmlhWXJl7iFGCg1lJhDdcgyFSiDclsbIqtSg/vqg0J7X4EKM0B4uS OC/XqWsRQgLpiSWp2ampBalFMFkmDk6pBsZTm9vL7T0YJtbrXJ+wetI1IbnI+J7wbdmlsTOj pretTem6V7rk5Pul7os97PPmPL3DKHxUfZZg0fUledbT9LP+HTmv4cBfs/3H61+yUcUaB7JX 6st4huyMV+LwOKeyTGKCUOHSH9d4l0RtWrLFLV03YOH/TYs+10v7V29/oqts0jnl6KS1VY1K LMUZiYZazEXFiQALfBb10wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPLMWRmVeSWpSXmKPExsVy+t/xy7qftRgiDdp+sFjMvXuexaJ32z12 ixObDjJbXGn/yW6xZf83dovjvTtYHNg8DrxYyO7x5NpmJo/3+66yefRtWcUYwBLlZpORmpiS WqSQmpecn5KZl26rFBripmuhpJCXmJtqqxSh6xsSpKRQlphTCuQZGaABB+cA92AlfbsEt4zV zYuYC5ayV1w9c5axgfEraxcjJ4eEgInEgkcfWCBsMYkL99azdTFycQgJLGGUWNp/mgnC6WWS eDO1nb2LkYODTcBAYt89W5AGEQFxiXf7GthBbGaBAomzi/czgtjCAgES7Z07wBawCKhKHHx8 kQ3E5hVwl7j05D7UMjmJk8cmg9VwCnhIrF//hhnEFgKqmXN1GesERt4FjAyrGEVSS4tz03OL jfSKE3OLS/PS9ZLzczcxAgN327GfW3Ywdr0LPsQowMGoxMMb4PE/Qog1say4MvcQowQHs5II b7gGQ6QQb0piZVVqUX58UWlOavEhRlOgoyYyS4km5wOjKq8k3tDE0NzS0MjYwsLcyEhJnHfq hyvhQgLpiSWp2ampBalFMH1MHJxSDYxsmk1C32YKlYn8EvywZ4vY9aAY6Yd5f4vzl99eVfTo Zuf+ai6uVCWVOO39UvKdtntVGtYvv8v2spnbbf+1veuvPrkv+sLPWNM2dMPtM93i/zskektb f4ZPra5R/tSvvuzV87WHnktdbOqxOTmndd21dYu/Jby3rfJaGBpotCkgyf+l8Mf1D14qsRRn JBpqMRcVJwIAsGw0AXICAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170426050632eucas1p11fb353bd5801ae238a9adf55dcd0ea09 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: 20170426050632eucas1p11fb353bd5801ae238a9adf55dcd0ea09 X-RootMTR: 20170426050632eucas1p11fb353bd5801ae238a9adf55dcd0ea09 References: <1493183181-21962-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 V3 1/6] 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, qemu-devel@nongnu.org, a.perevalov@samsung.com, peterx@redhat.com, f4bug@amsat.org 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 | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-headers/linux/userfaultfd.h b/linux-headers/linux/userfa= ultfd.h index 2ed5dc3..e7c8898 100644 --- a/linux-headers/linux/userfaultfd.h +++ b/linux-headers/linux/userfaultfd.h @@ -77,6 +77,9 @@ struct uffd_msg { struct { __u64 flags; __u64 address; + union { + __u32 ptid; + } feat; } pagefault; =20 struct { @@ -158,6 +161,8 @@ struct uffdio_api { #define UFFD_FEATURE_EVENT_MADVDONTNEED (1<<3) #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 Mon May 6 11:40:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; 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 1493183464653832.8661188970113; Tue, 25 Apr 2017 22:11:04 -0700 (PDT) Received: from localhost ([::1]:52661 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FEF-000592-Iw for importer@patchew.org; Wed, 26 Apr 2017 01:11:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60671) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FA2-0001xY-Ot for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3F9x-0002uM-Rh for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:42 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:23505) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3F9x-0002tp-Jy for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:37 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OP00098W3IYT000@mailout1.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 26 Apr 2017 06:06:34 +0100 (BST) Received: from eusmges4.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170426050634eucas1p14f5e5bdea1802ff5cdb78667b28e56f9~42jQ0vgqu2695226952eucas1p1m; Wed, 26 Apr 2017 05:06:34 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges4.samsung.com (EUCPMTA) with SMTP id C5.F1.04729.9DA20095; Wed, 26 Apr 2017 06:06:33 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170426050633eucas1p131e8089df08fbd540d24b2d2a960012c~42jPwhdw02695226952eucas1p1l; Wed, 26 Apr 2017 05:06:33 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id F9.E5.17452.F5B20095; Wed, 26 Apr 2017 06:08:47 +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 <0OP000MTF3IPGF20@eusync1.samsung.com>; Wed, 26 Apr 2017 06:06:33 +0100 (BST) X-AuditID: cbfec7f4-f79806d000001279-ef-59002ad99252 From: Alexey Perevalov To: dgilbert@redhat.com Date: Wed, 26 Apr 2017 08:06:16 +0300 Message-id: <1493183181-21962-3-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1493183181-21962-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrAIsWRmVeSWpSXmKPExsWy7djPc7o3tRgiDdZ1W1vMvXuexaJ32z12 ixObDjJbXGn/yW6xZf83dovjvTtYHNg8DrxYyO7x5NpmJo/3+66yefRtWcUYwBLFZZOSmpNZ llqkb5fAldHScp69YItsxZRXP9kaGJeJdzFyckgImEica/nOBmGLSVy4tx7I5uIQEljKKHF7 0QFmCOczo0Trg03sMB2v9jYxQiSWMUr0vtzACuF0M0ncWTwLKMPBwSZgILHvni1Ig4iAuMS7 fQ1gzcwCBRI7P+0AWyEs0Mkocbi1kx2knkVAVeLs9AKQGl4Bd4k9ux+xQCyTkzh5bDIriM0p 4CGxfv0bZoj4czaJlm9mIK0SArISmw5AhV0k2pbfh7KFJV4d3wJ1s4xEZ8dBJpC1EgLtjBLd OztZIZwJjBJnpv+FqrKXOHXzKhPEoXwSk7ZNZ4ZYwCvR0SYEUeIh8W3CNkYI21Hi192t0OCa zShx8949lgmMMgsYGVYxiqSWFuempxab6BUn5haX5qXrJefnbmIExuvpf8e/7GBcfMzqEKMA B6MSD+8Kr/8RQqyJZcWVuYcYJTiYlUR4wzUYIoV4UxIrq1KL8uOLSnNSiw8xSnOwKInzcp26 FiEkkJ5YkpqdmlqQWgSTZeLglGpgzMu0Npo113yh1fVbSVu0dMMtmKYfrZHalb369GmtzQtm lNxj+xDxXXGhveLfzos7WXo/2Ir+rPjkFtWweZ7lv/yTB4+0LjXifsG9X+5n19qme0efr6w6 ya0suFOk9VHo9vlLKuY9SvtrK+XI2mgdHTq1ulTHS5p7p0XZ67mNezOXF0xRDRa/psRSnJFo qMVcVJwIADMDvT7TAgAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPLMWRmVeSWpSXmKPExsVy+t/xy7rx2gyRBm826FjMvXuexaJ32z12 ixObDjJbXGn/yW6xZf83dovjvTtYHNg8DrxYyO7x5NpmJo/3+66yefRtWcUYwBLlZpORmpiS WqSQmpecn5KZl26rFBripmuhpJCXmJtqqxSh6xsSpKRQlphTCuQZGaABB+cA92AlfbsEt4yW lvPsBVtkK6a8+snWwLhMvIuRk0NCwETi1d4mRghbTOLCvfVsXYxcHEICSxgllja9hXJ6mSSm 333E3sXIwcEmYCCx754tSIOIgLjEu30N7CA2s0CBxNnF+xlB6oUFOhklDrd2gtWzCKhKnJ1e AFLDK+AusWf3IxaIZXISJ49NZgWxOQU8JNavf8MMYgsB1cy5uox1AiPvAkaGVYwiqaXFuem5 xYZ6xYm5xaV56XrJ+bmbGIGBu+3Yz807GC9tDD7EKMDBqMTDG+DxP0KINbGsuDL3EKMEB7OS CG+4BkOkEG9KYmVValF+fFFpTmrxIUZToJsmMkuJJucDoyqvJN7QxNDc0tDI2MLC3MhISZy3 5MOVcCGB9MSS1OzU1ILUIpg+Jg5OqQZGxZD3f3RLAxMvP5ySJL/MSWJW3vq0S3KJNzr8m7Ms pqTZebLLK80UkW/lWhhwTn6+976bhsGZC742+cnb61x/K+Jfs7oxkatK1PoU+++m5DtPpE8c /WPFef7wtKDpVRuPa2ZHTrQNuaKfv3nqlcwTvWy7v5xf+u7H1OfeFsKNtyov32A/ffi1Ektx RqKhFnNRcSIA2or6r3ICAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170426050633eucas1p131e8089df08fbd540d24b2d2a960012c 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: 20170426050633eucas1p131e8089df08fbd540d24b2d2a960012c X-RootMTR: 20170426050633eucas1p131e8089df08fbd540d24b2d2a960012c References: <1493183181-21962-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 V3 2/6] migration: pass ptr to MigrationIncomingState into migration ufd_version_check & postcopy_ram_supported_by_host 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, qemu-devel@nongnu.org, a.perevalov@samsung.com, peterx@redhat.com, f4bug@amsat.org 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 --- include/migration/postcopy-ram.h | 2 +- migration/migration.c | 2 +- migration/postcopy-ram.c | 10 +++++----- migration/savevm.c | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/migration/postcopy-ram.h b/include/migration/postcopy-= ram.h index 8e036b9..809f6db 100644 --- a/include/migration/postcopy-ram.h +++ b/include/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/migration.c b/migration/migration.c index ad4036f..79f6425 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -802,7 +802,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(NULL)) { /* 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 dc80dbb..dcf2ed1 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -60,7 +60,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; @@ -113,7 +113,7 @@ static int test_range_shared(const char *block_name, vo= id *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; @@ -136,7 +136,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 @@ -515,7 +515,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 @@ -653,7 +653,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/savevm.c b/migration/savevm.c index 3b19a4a..f01e418 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1360,7 +1360,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 Mon May 6 11:40:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; 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 1493183291258332.2482964914185; Tue, 25 Apr 2017 22:08:11 -0700 (PDT) Received: from localhost ([::1]:52646 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FBS-00034l-3r for importer@patchew.org; Wed, 26 Apr 2017 01:08:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60666) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FA2-0001xW-Je for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3F9x-0002uG-QG for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:42 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:12916) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3F9x-0002tg-Kb for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:37 -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 <0OP00034F3IZ0S00@mailout4.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 26 Apr 2017 06:06:35 +0100 (BST) Received: from eusmges5.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170426050634eucas1p1055a3607560ce7be1c96806bf985a8af~42jRXp0Uo2460624606eucas1p1g; Wed, 26 Apr 2017 05:06:34 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges5.samsung.com (EUCPMTA) with SMTP id BB.70.25577.ADA20095; Wed, 26 Apr 2017 06:06:34 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170426050633eucas1p2f0c7756e8762fb70d1e1e045095eb3a2~42jQkZVId0153101531eucas1p2g; Wed, 26 Apr 2017 05:06:33 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 51.F7.20206.4FA20095; Wed, 26 Apr 2017 06:07:00 +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 <0OP000MTF3IPGF20@eusync1.samsung.com>; Wed, 26 Apr 2017 06:06:33 +0100 (BST) X-AuditID: cbfec7f5-f792f6d0000063e9-52-59002ada818b From: Alexey Perevalov To: dgilbert@redhat.com Date: Wed, 26 Apr 2017 08:06:17 +0300 Message-id: <1493183181-21962-4-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1493183181-21962-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPIsWRmVeSWpSXmKPExsWy7djPc7q3tBgiDZa+VrSYe/c8i0Xvtnvs Fic2HWS2uNL+k91iy/5v7BbHe3ewOLB5HHixkN3jybXNTB7v911l8+jbsooxgCWKyyYlNSez LLVI3y6BK6Njw1v2gtsyFY8WxzQwfhftYuTkkBAwkZjYeI0JwhaTuHBvPVsXIxeHkMBSRonL D6YxQTifGSUaVt5kh+l4umM9M0RiGaPEgvWr2CGcbiaJO4tnMXYxcnCwCRhI7LtnC9IgIiAu 8W5fA1gzs0CBxM5PO9hAbGGBeImNp74xgtgsAqoSn/a9AIvzCrhLnDv6mBlimZzEyWOTWUFs TgEPifXr34AtlhB4zCaxpuMPG8guCQFZiU0HoOpdJDrnHoSyhSVeHd8CdbSMxOXJ3SwQve2M Et07O1khnAmMEmem/4Wqspc4dfMqE8SlfBKTtk1nhljAK9HRJgRR4gEMiQ0sELajxL1fm8CW CQnMZpT41KE9gVFmASPDKkaR1NLi3PTUYlO94sTc4tK8dL3k/NxNjMBoPf3v+NcdjEuPWR1i FOBgVOLhDfD4HyHEmlhWXJl7iFGCg1lJhDdcgyFSiDclsbIqtSg/vqg0J7X4EKM0B4uSOC/X qWsRQgLpiSWp2ampBalFMFkmDk6pBsbizR/CWZhLngfOERCbO3/W39J3revaPH11l1juPFS3 uX4D9++LZo4ia2ZoyO802vGtU7xU+0qKyZsfcq9q1Gfv/aYa5blHdgvzAlWnVTP04wJfBf3n E17i9nh3eODOJmXHqhMNzz/Ub+7QYnr14c7RAtkZ6h/9fvnOEPCfzLxN+d+abasu1csosRRn JBpqMRcVJwIAanIlfNICAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrHLMWRmVeSWpSXmKPExsVy+t/xy7pftBgiDRZvFrWYe/c8i0Xvtnvs Fic2HWS2uNL+k91iy/5v7BbHe3ewOLB5HHixkN3jybXNTB7v911l8+jbsooxgCXKzSYjNTEl tUghNS85PyUzL91WKTTETddCSSEvMTfVVilC1zckSEmhLDGnFMgzMkADDs4B7sFK+nYJbhkd G96yF9yWqXi0OKaB8btoFyMnh4SAicTTHeuZIWwxiQv31rN1MXJxCAksYZRofL6XCcLpZZKY fvcRexcjBwebgIHEvnu2IA0iAuIS7/Y1sIPYzAIFEmcX72cEsYUF4iVufXnNBmKzCKhKfNr3 AszmFXCXOHf0MdQyOYmTxyazgticAh4S69e/AYsLAdXMubqMdQIj7wJGhlWMIqmlxbnpucVG esWJucWleel6yfm5mxiBYbvt2M8tOxi73gUfYhTgYFTi4Q3w+B8hxJpYVlyZe4hRgoNZSYQ3 XIMhUog3JbGyKrUoP76oNCe1+BCjKdBRE5mlRJPzgTGVVxJvaGJobmloZGxhYW5kpCTOO/XD lXAhgfTEktTs1NSC1CKYPiYOTqkGxnKb7k3bv/w+YdXz41o+w5bjF8VXvFihYn/L3+/lLreb G9z0tl3MZDzb/V1Ct/eH2nG7gryG6KiHh73a5k9zC7f6tOFG40aPGXHbys+xbP3/kqN7sXi6 lU9f6ZH6w3Ze7+8vcd5SwZbTa1FlqOhvoZz+O7zjjgyPHufbLT9Cru1x3FHgbce4R4mlOCPR UIu5qDgRADWyUiJxAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170426050633eucas1p2f0c7756e8762fb70d1e1e045095eb3a2 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: 20170426050633eucas1p2f0c7756e8762fb70d1e1e045095eb3a2 X-RootMTR: 20170426050633eucas1p2f0c7756e8762fb70d1e1e045095eb3a2 References: <1493183181-21962-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 V3 3/6] 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, qemu-devel@nongnu.org, a.perevalov@samsung.com, peterx@redhat.com, f4bug@amsat.org 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 need 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 --- migration/postcopy-ram.c | 68 ++++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index dcf2ed1..55b5243 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -60,15 +60,51 @@ struct PostcopyDiscardState { #include #include =20 -static bool ufd_version_check(int ufd, MigrationIncomingState *mis) + +/* + * Check userfault fd features, to request only supported features in + * future. + * __NR_userfaultfd - should be checked before + * Return obtained features + */ +static bool receive_ufd_features(__u64 *features) { - struct uffdio_api api_struct; - uint64_t ioctl_mask; + struct uffdio_api api_struct =3D {0}; + int ufd; + bool ret =3D true; =20 + /* if we are here __NR_userfaultfd should exists */ + ufd =3D syscall(__NR_userfaultfd, O_CLOEXEC); + if (ufd =3D=3D -1) { + return false; + } + + /* ask features */ 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("receive_ufd_features: UFFDIO_API failed: %s", + strerror(errno)); + ret =3D false; + goto release_ufd; + } + + *features =3D api_struct.features; + +release_ufd: + close(ufd); + return ret; +} + +static bool request_ufd_features(int ufd, __u64 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("request_ufd_features: UFFDIO_API failed: %s", strerror(errno)); return false; } @@ -81,11 +117,33 @@ static bool ufd_version_check(int ufd, MigrationIncomi= ngState *mis) return false; } =20 + return true; +} + +static bool ufd_version_check(int ufd, MigrationIncomingState *mis) +{ + __u64 new_features =3D 0; + + /* ask features */ + __u64 supported_features; + + if (!receive_ufd_features(&supported_features)) { + error_report("ufd_version_check failed"); + return false; + } + + /* request features */ + if (new_features && !request_ufd_features(ufd, new_features)) { + error_report("ufd_version_check failed: features %" PRIu64, + (uint64_t)new_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"); --=20 1.9.1 From nobody Mon May 6 11:40:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; 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 1493183524362615.34536166802; Tue, 25 Apr 2017 22:12:04 -0700 (PDT) Received: from localhost ([::1]:52663 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FFD-0005ep-6s for importer@patchew.org; Wed, 26 Apr 2017 01:12:03 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60665) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FA2-0001xV-J3 for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3F9x-0002uA-Oh for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:42 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:32442) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3F9x-0002tk-Ih for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:37 -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 <0OP000A5S3IZEN00@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 26 Apr 2017 06:06:35 +0100 (BST) Received: from eusmges4.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170426050635eucas1p2ca17145986dfb14acd12ff97c35d1db5~42jRnPDMF0498304983eucas1p2P; Wed, 26 Apr 2017 05:06:35 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges4.samsung.com (EUCPMTA) with SMTP id 36.F1.04729.ADA20095; Wed, 26 Apr 2017 06:06:34 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170426050634eucas1p1a1c95d312025c99453a185084b75396a~42jQ8GFAE2511225112eucas1p1H; Wed, 26 Apr 2017 05:06:34 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 6A.E5.17452.06B20095; Wed, 26 Apr 2017 06:08:48 +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 <0OP000MTF3IPGF20@eusync1.samsung.com>; Wed, 26 Apr 2017 06:06:34 +0100 (BST) X-AuditID: cbfec7f4-f79806d000001279-f1-59002ada9cd4 From: Alexey Perevalov To: dgilbert@redhat.com Date: Wed, 26 Apr 2017 08:06:18 +0300 Message-id: <1493183181-21962-5-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1493183181-21962-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPIsWRmVeSWpSXmKPExsWy7djPc7q3tBgiDXa8NbSYe/c8i0Xvtnvs Fic2HWS2uNL+k91iy/5v7BbHe3ewOLB5HHixkN3jybXNTB7v911l8+jbsooxgCWKyyYlNSez LLVI3y6BK2PKhm62gn9yFYemPmdpYHwr0cXIwSEhYCLxZKJrFyMnkCkmceHeerYuRi4OIYGl jBKPPt9nhHA+M0pc6rrOClFlIvF2zn4WiMQyRomT3zqgnG4miVlr9rOBjGUTMJDYd88WpEFE QFzi3b4GdhCbWaBAYuenHWwgtrBAuMScpz/A4iwCqhLnluwGs3kF3CXWH9nCDrFMTuLksclg izkFPCTWr3/DDBF/ziax9Zo6xAeyEpsOQIVdJLp+/oe6U1ji1XGYMTISnR0HmUDOlBBoZ5To 3tnJCuFMYJQ4M/0vVJW9xKmbV5kgDuWTmLRtOjPEAl6JjjYhiBIPid3db5kgbEeJBV9Ws0P8 PptR4svtSewTGGUWMDKsYhRJLS3OTU8tNtErTswtLs1L10vOz93ECIzW0/+Of9nBuPiY1SFG AQ5GJR7eFV7/I4RYE8uKK3MPMUpwMCuJ8IZrMEQK8aYkVlalFuXHF5XmpBYfYpTmYFES5+U6 dS1CSCA9sSQ1OzW1ILUIJsvEwSnVwLjq3qxgY/Vj83aZ1kVVlAm2+jPeXDVhlnWKs2iDdvR3 K+1Zl4pbI+5tvNo/4ftkhaeV4r8v6MjrNu3ftfbe7svTeH7mntzYtVG77u/byaIt93cxnIo8 7az+/Zrq9M9bHD7/nP36juKO5V3q69s0eZUs3upIr11k6xwfPjvz9aRVn7gW2Pv38G5SYinO SDTUYi4qTgQAipEXUtICAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPLMWRmVeSWpSXmKPExsVy+t/xy7oJ2gyRBlde2FjMvXuexaJ32z12 ixObDjJbXGn/yW6xZf83dovjvTtYHNg8DrxYyO7x5NpmJo/3+66yefRtWcUYwBLlZpORmpiS WqSQmpecn5KZl26rFBripmuhpJCXmJtqqxSh6xsSpKRQlphTCuQZGaABB+cA92AlfbsEt4wp G7rZCv7JVRya+pylgfGtRBcjJ4eEgInE2zn7WSBsMYkL99azdTFycQgJLGGUmNzZyQrh9DJJ rDuznrmLkYODTcBAYt89W5AGEQFxiXf7GthBbGaBAomzi/czgtjCAuESc57+AIuzCKhKnFuy G8zmFXCXWH9kCzvEMjmJk8cms4LYnAIeEuvXv2EGsYWAauZcXcY6gZF3ASPDKkaR1NLi3PTc YkO94sTc4tK8dL3k/NxNjMDA3Xbs5+YdjJc2Bh9iFOBgVOLhDfD4HyHEmlhWXJl7iFGCg1lJ hDdcgyFSiDclsbIqtSg/vqg0J7X4EKMp0FETmaVEk/OBUZVXEm9oYmhuaWhkbGFhbmSkJM5b 8uFKuJBAemJJanZqakFqEUwfEwenVAPjHHntWI2Nvyy2ZWcs6Z8b3jexaYuM1MXELbUfDQ5c yVR29DMrWJuxaZV50+98QTcJn5o7ra/TltdPvPdwnkUQRzNP/VRl3fV/j5v6BT5OVzBmK5WZ VcbF9vD+pGXMhZ/4Zu7T91IwrnKfF/E0jEH8W/6MjG85fusbnzmGrTJc29O3jpfb4qkSS3FG oqEWc1FxIgC9i7FicgIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170426050634eucas1p1a1c95d312025c99453a185084b75396a 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: 20170426050634eucas1p1a1c95d312025c99453a185084b75396a X-RootMTR: 20170426050634eucas1p1a1c95d312025c99453a185084b75396a References: <1493183181-21962-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 V3 4/6] migration: add postcopy downtime into MigrationIncommingState 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, qemu-devel@nongnu.org, a.perevalov@samsung.com, peterx@redhat.com, f4bug@amsat.org 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 add request to kernel space for UFFD_FEATURE_THREAD_ID, in case when this feature is provided by kernel. DowntimeContext is incapsulated inside migration.c. Signed-off-by: Alexey Perevalov --- include/migration/migration.h | 12 ++++++++++++ migration/migration.c | 33 +++++++++++++++++++++++++++++++++ migration/postcopy-ram.c | 8 ++++++++ 3 files changed, 53 insertions(+) diff --git a/include/migration/migration.h b/include/migration/migration.h index 5720c88..b1759f7 100644 --- a/include/migration/migration.h +++ b/include/migration/migration.h @@ -83,6 +83,8 @@ typedef enum { POSTCOPY_INCOMING_END } PostcopyState; =20 +struct DowntimeContext; + /* State for the incoming migration */ struct MigrationIncomingState { QEMUFile *from_src_file; @@ -123,10 +125,20 @@ struct MigrationIncomingState { =20 /* See savevm.c */ LoadStateEntry_Head loadvm_handlers; + + /* + * DowntimeContext to keep information for postcopy + * live migration, to calculate downtime + * */ + struct DowntimeContext *downtime_ctx; }; =20 MigrationIncomingState *migration_incoming_get_current(void); void migration_incoming_state_destroy(void); +/* + * Functions to work with downtime context + */ +struct DowntimeContext *downtime_context_new(void); =20 /* * An outstanding page request, on the source, having been received diff --git a/migration/migration.c b/migration/migration.c index 79f6425..0309c2b 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -77,6 +77,18 @@ static NotifierList migration_state_notifiers =3D =20 static bool deferred_incoming; =20 +typedef struct DowntimeContext { + /* time when page fault initiated per vCPU */ + int64_t *page_fault_vcpu_time; + /* page address per vCPU */ + uint64_t *vcpu_addr; + int64_t total_downtime; + /* downtime per vCPU */ + int64_t *vcpu_downtime; + /* point in time when last page fault was initiated */ + int64_t last_begin; +} DowntimeContext; + /* * Current state of incoming postcopy; note this is not part of * MigrationIncomingState since it's state is used during cleanup @@ -117,6 +129,23 @@ MigrationState *migrate_get_current(void) return ¤t_migration; } =20 +struct DowntimeContext *downtime_context_new(void) +{ + DowntimeContext *ctx =3D g_new0(DowntimeContext, 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_downtime =3D g_new0(int64_t, smp_cpus); + return ctx; +} + +static void destroy_downtime_context(struct DowntimeContext *ctx) +{ + g_free(ctx->page_fault_vcpu_time); + g_free(ctx->vcpu_addr); + g_free(ctx->vcpu_downtime); + g_free(ctx); +} + MigrationIncomingState *migration_incoming_get_current(void) { static bool once; @@ -139,6 +168,10 @@ void migration_incoming_state_destroy(void) =20 qemu_event_destroy(&mis->main_thread_load_event); loadvm_free_handlers(mis); + if (mis->downtime_ctx) { + destroy_downtime_context(mis->downtime_ctx); + mis->downtime_ctx =3D NULL; + } } =20 =20 diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 55b5243..ce1ea5d 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -132,6 +132,14 @@ static bool ufd_version_check(int ufd, MigrationIncomi= ngState *mis) return false; } =20 +#ifdef UFFD_FEATURE_THREAD_ID + if (mis && UFFD_FEATURE_THREAD_ID & supported_features) { + /* kernel supports that feature */ + mis->downtime_ctx =3D downtime_context_new(); + new_features |=3D UFFD_FEATURE_THREAD_ID; + } +#endif + /* request features */ if (new_features && !request_ufd_features(ufd, new_features)) { error_report("ufd_version_check failed: features %" PRIu64, --=20 1.9.1 From nobody Mon May 6 11:40:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; 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 1493183392667111.12853673061545; Tue, 25 Apr 2017 22:09:52 -0700 (PDT) Received: from localhost ([::1]:52652 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FD5-0004KP-IS for importer@patchew.org; Wed, 26 Apr 2017 01:09:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60699) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FA4-0001yA-Uw for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3FA0-0002un-1I for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:44 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:61479) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3F9z-0002uY-OX for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:39 -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 <0OP000D0C3J04W00@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 26 Apr 2017 06:06:36 +0100 (BST) Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170426050635eucas1p255c80421feb9f79004576643d126e8c9~42jSPDh-K0950809508eucas1p2h; Wed, 26 Apr 2017 05:06:35 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2.samsung.com (EUCPMTA) with SMTP id 8F.F0.04459.BDA20095; Wed, 26 Apr 2017 06:06:35 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170426050634eucas1p1971853fa140d2832d002ce8bd3c2b24d~42jRiUimX2331323313eucas1p11; Wed, 26 Apr 2017 05:06:34 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id DA.E5.17452.16B20095; Wed, 26 Apr 2017 06:08:49 +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 <0OP000MTF3IPGF20@eusync1.samsung.com>; Wed, 26 Apr 2017 06:06:34 +0100 (BST) X-AuditID: cbfec7f1-f796e6d00000116b-d6-59002adbe233 From: Alexey Perevalov To: dgilbert@redhat.com Date: Wed, 26 Apr 2017 08:06:19 +0300 Message-id: <1493183181-21962-6-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1493183181-21962-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPIsWRmVeSWpSXmKPExsWy7djP87q3tRgiDbZul7WYe/c8i0Xvtnvs Fic2HWS2uNL+k91iy/5v7BbHe3ewOLB5HHixkN3jybXNTB7v911l8+jbsooxgCWKyyYlNSez LLVI3y6BK+P36SesBQtdK3a0rGRtYDxo2sXIySEhYCKxaNFmdghbTOLCvfVsXYxcHEICSxkl +mfcYIdwPjNKfJrQwgTTsXnaXyaIxDJGiWe7lkK1dDNJzFqzH8jh4GATMJDYd88WpEFEQFzi 3b4GsBXMAgUSOz/tYAOxhQUcJXpOdrKA2CwCqhJPen+wgrTyCrhLtP60hdglJ3Hy2GRWEJtT wENi/fo3zCCrJASes0nsX3OHCaReQkBWYtMBZoh6F4kZcy+yQdjCEq+Ob4H6TEais+MgE0Rv O6NE985OVghnAqPEmel/oarsJU7dvMoEcSifxKRt05khFvBKdLQJQZR4SNz4/xEaEI4SHWtW gS0WEpjNKLH/UvUERpkFjAyrGEVSS4tz01OLjfSKE3OLS/PS9ZLzczcxAqP19L/jH3cwvj9h dYhRgINRiYc3wON/hBBrYllxZe4hRgkOZiUR3nANhkgh3pTEyqrUovz4otKc1OJDjNIcLEri vFynrkUICaQnlqRmp6YWpBbBZJk4OKUaGKVeCOSkb2A12Cf71O16JUvkHv1zl7TFnWQ6F9os j7PsWTwhfH+HZpRV9Md7of11hyY5bv3t57PYzuTZUc5fkrLJx10t9YQFWf/u9Smasj31tnjZ Y9Z9r5x5q7or51mymrc0Sm0Qyt9kGHonn+ctZ7jAq/pmQ91XTTZfbZzlLlQ91ZR6sGCPEktx RqKhFnNRcSIAXJSootICAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrHLMWRmVeSWpSXmKPExsVy+t/xy7qJ2gyRBg/fqFnMvXuexaJ32z12 ixObDjJbXGn/yW6xZf83dovjvTtYHNg8DrxYyO7x5NpmJo/3+66yefRtWcUYwBLlZpORmpiS WqSQmpecn5KZl26rFBripmuhpJCXmJtqqxSh6xsSpKRQlphTCuQZGaABB+cA92AlfbsEt4zf p5+wFix0rdjRspK1gfGgaRcjJ4eEgInE5ml/mSBsMYkL99azdTFycQgJLGGUeNE6gwXC6WWS WHdmPXMXIwcHm4CBxL57tiANIgLiEu/2NbCD2MwCBRJnF+9nBLGFBRwlek52soDYLAKqEk96 f7CCtPIKuEu0/rSF2CUncfLYZFYQm1PAQ2L9+jfMILYQUMmcq8tYJzDyLmBkWMUoklpanJue W2yoV5yYW1yal66XnJ+7iREYttuO/dy8g/HSxuBDjAIcjEo8vAEe/yOEWBPLiitzDzFKcDAr ifCGazBECvGmJFZWpRblxxeV5qQWH2I0BbppIrOUaHI+MKbySuINTQzNLQ2NjC0szI2MlMR5 Sz5cCRcSSE8sSc1OTS1ILYLpY+LglGpgFJnpdvdjOn9lXcmE3snvws80rGmpjRFhe/ope0vI PPPHpxZW6592uNA12UH7zeldpoW1LSZs2d08LtGpPMcOtT67t8be96GkRN3Oi6HhnYJzCyd8 7G/rmb1wsrfukRcR75KXu+V2Vpgun1eRE70152gGi6Bs4NanvDfSxRtVU7eekGvdXPpfiaU4 I9FQi7moOBEAOpwwkHECAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170426050634eucas1p1971853fa140d2832d002ce8bd3c2b24d 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: 20170426050634eucas1p1971853fa140d2832d002ce8bd3c2b24d X-RootMTR: 20170426050634eucas1p1971853fa140d2832d002ce8bd3c2b24d References: <1493183181-21962-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 V3 5/6] migration: calculate downtime 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, qemu-devel@nongnu.org, a.perevalov@samsung.com, peterx@redhat.com, f4bug@amsat.org 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 downtime 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 downtime per vCPU (could be traced with page_fault_addr) For more details see comments for get_postcopy_total_downtime implementation. Downtime will not calculated if postcopy_downtime field of MigrationIncomingState wasn't initialized. Signed-off-by: Alexey Perevalov --- include/migration/migration.h | 3 ++ migration/migration.c | 103 ++++++++++++++++++++++++++++++++++++++= ++++ migration/postcopy-ram.c | 20 +++++++- migration/trace-events | 6 ++- 4 files changed, 130 insertions(+), 2 deletions(-) diff --git a/include/migration/migration.h b/include/migration/migration.h index b1759f7..137405b 100644 --- a/include/migration/migration.h +++ b/include/migration/migration.h @@ -139,6 +139,9 @@ void migration_incoming_state_destroy(void); * Functions to work with downtime context */ struct DowntimeContext *downtime_context_new(void); +void mark_postcopy_downtime_begin(uint64_t addr, int cpu); +void mark_postcopy_downtime_end(uint64_t addr); +uint64_t get_postcopy_total_downtime(void); =20 /* * An outstanding page request, on the source, having been received diff --git a/migration/migration.c b/migration/migration.c index 0309c2b..b559dfe 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -2150,3 +2150,106 @@ PostcopyState postcopy_state_set(PostcopyState new_= state) return atomic_xchg(&incoming_postcopy_state, new_state); } =20 +void mark_postcopy_downtime_begin(uint64_t addr, int cpu) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + DowntimeContext *dc; + if (!mis->downtime_ctx || cpu < 0) { + return; + } + dc =3D mis->downtime_ctx; + dc->vcpu_addr[cpu] =3D addr; + dc->last_begin =3D dc->page_fault_vcpu_time[cpu] =3D + qemu_clock_get_ms(QEMU_CLOCK_REALTIME); + + trace_mark_postcopy_downtime_begin(addr, dc, dc->page_fault_vcpu_time[= cpu], + cpu); +} + +void mark_postcopy_downtime_end(uint64_t addr) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + DowntimeContext *dc; + int i; + bool all_vcpu_down =3D true; + int64_t now; + + if (!mis->downtime_ctx) { + return; + } + dc =3D mis->downtime_ctx; + now =3D qemu_clock_get_ms(QEMU_CLOCK_REALTIME); + + /* check all vCPU down, + * QEMU has bitmap.h, but even with bitmap_and + * will be a cycle */ + for (i =3D 0; i < smp_cpus; i++) { + if (dc->vcpu_addr[i]) { + continue; + } + all_vcpu_down =3D false; + break; + } + + if (all_vcpu_down) { + dc->total_downtime +=3D now - dc->last_begin; + } + + /* lookup cpu, to clear it */ + for (i =3D 0; i < smp_cpus; i++) { + uint64_t vcpu_downtime; + + if (dc->vcpu_addr[i] !=3D addr) { + continue; + } + + vcpu_downtime =3D now - dc->page_fault_vcpu_time[i]; + + dc->vcpu_addr[i] =3D 0; + dc->vcpu_downtime[i] +=3D vcpu_downtime; + } + + trace_mark_postcopy_downtime_end(addr, dc, dc->total_downtime); +} + +/* + * This function just provide calculated before downtime per cpu and trace= it. + * Total downtime is calculated in mark_postcopy_downtime_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 downtime. + * S1 - here is last_begin + * Legend of the picture is following: + * * - means downtime per vCPU + * x - means overlapped downtime (total downtime) + */ +uint64_t get_postcopy_total_downtime(void) +{ + MigrationIncomingState *mis =3D migration_incoming_get_current(); + + if (!mis->downtime_ctx) { + return 0; + } + + if (trace_event_get_state(TRACE_DOWNTIME_PER_CPU)) { + int i; + for (i =3D 0; i < smp_cpus; i++) { + trace_downtime_per_cpu(i, mis->downtime_ctx->vcpu_downtime[i]); + } + } + return mis->downtime_ctx->total_downtime; +} diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index ce1ea5d..03c2be7 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -23,6 +23,7 @@ #include "migration/postcopy-ram.h" #include "sysemu/sysemu.h" #include "sysemu/balloon.h" +#include #include "qemu/error-report.h" #include "trace.h" =20 @@ -470,6 +471,19 @@ static int ram_block_enable_notify(const char *block_n= ame, 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; +} + /* * Handle faults detected by the USERFAULT markings */ @@ -547,8 +561,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_downtime_begin((uintptr_t)(msg.arg.pagefault.address= ), + get_mem_fault_cpu_index(msg.arg.pagefault.feat.pt= id)); /* * Send the request to the source - we want to request one * of our host page sizes (which is >=3D TPS) @@ -643,6 +660,7 @@ int postcopy_place_page(MigrationIncomingState *mis, vo= id *host, void *from, =20 return -e; } + mark_postcopy_downtime_end((uint64_t)host); =20 trace_postcopy_place_page(host); return 0; diff --git a/migration/trace-events b/migration/trace-events index 7372ce2..19e7dc5 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -110,6 +110,9 @@ 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_downtime_begin(uint64_t addr, void *dd, int64_t time, int cp= u) "addr 0x%" PRIx64 " dd %p time %" PRId64 " cpu %d" +mark_postcopy_downtime_end(uint64_t addr, void *dd, int64_t time) "addr 0x= %" PRIx64 " dd %p time %" PRId64 +downtime_per_cpu(int cpu_index, int64_t downtime) "downtime cpu[%d]=3D%" P= RId64 =20 # migration/rdma.c qemu_rdma_accept_incoming_migration(void) "" @@ -186,7 +189,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) "" @@ -195,6 +198,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 Mon May 6 11:40:28 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; 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 1493183392663944.5806808441404; Tue, 25 Apr 2017 22:09:52 -0700 (PDT) Received: from localhost ([::1]:52651 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FD5-0004K5-H8 for importer@patchew.org; Wed, 26 Apr 2017 01:09:51 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60661) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d3FA2-0001xT-Gu for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d3F9x-0002uS-UZ for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:42 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:32442) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d3F9x-0002tk-P6 for qemu-devel@nongnu.org; Wed, 26 Apr 2017 01:06:37 -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 <0OP00073M3J17280@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 26 Apr 2017 06:06:37 +0100 (BST) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170426050636eucas1p185ff15942f05ceb03af7e75f3de2c0c6~42jTGL59j2331323313eucas1p12; Wed, 26 Apr 2017 05:06:36 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1.samsung.com (EUCPMTA) with SMTP id 83.80.14140.FDA20095; Wed, 26 Apr 2017 06:06:39 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170426050635eucas1p2084a21b1deaaa891c278bbb610eb421a~42jSU3Kxa0950409504eucas1p2X; Wed, 26 Apr 2017 05:06:35 +0000 (GMT) Received: from eusync1.samsung.com ( [203.254.199.211]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 24.F7.20206.6FA20095; Wed, 26 Apr 2017 06:07:02 +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 <0OP000MTF3IPGF20@eusync1.samsung.com>; Wed, 26 Apr 2017 06:06:35 +0100 (BST) X-AuditID: cbfec7ef-f796a6d00000373c-80-59002adf2879 From: Alexey Perevalov To: dgilbert@redhat.com Date: Wed, 26 Apr 2017 08:06:20 +0300 Message-id: <1493183181-21962-7-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1493183181-21962-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrAIsWRmVeSWpSXmKPExsWy7djP87r3tRgiDVbt5rWYe/c8i0Xvtnvs Fic2HWS2uNL+k91iy/5v7BbHe3ewOLB5HHixkN3jybXNTB7v911l8+jbsooxgCWKyyYlNSez LLVI3y6BK+PnhwksBce5Kw6+ucTcwPiHs4uRk0NCwERixemdjBC2mMSFe+vZuhi5OIQEljFK nFl0jh3C+cwosXvOPBaYjmULToPZYFVzX9RDFHUzSSzcPIG5i5GDg03AQGLfPVuQGhEBcYl3 +xrYQWxmgQKJnZ92sIHYwgIOEo3Pm1hBbBYBVYm+6bPAruAVcJe4f/Mi1C45iZPHJoPVcAp4 SKxf/4YZZJeEwGM2iRnbv7GD7JIQkJXYdIAZot5FovfXW1YIW1ji1fEt7BC2jMTlyd0sEL3t jBLdOztZIZwJQG9O/wtVZS9x6uZVJohL+SQmbZvODLGAV6KjTQiixEPi9pvpUAscJXo2zGSE eH42o0THhjVMExhlFjAyrGIUSS0tzk1PLTbUK07MLS7NS9dLzs/dxAiM19P/jr/fwfi0OeQQ owAHoxIPb4DH/wgh1sSy4srcQ4wSHMxKIrzhGgyRQrwpiZVVqUX58UWlOanFhxilOViUxHl5 T12LEBJITyxJzU5NLUgtgskycXBKNTCmy/1Nq9Wcd07uyOMLs8MqrwRkLbUK/exlXhMs0XLF knv2lJLPG9NCdsZuPPdC+unGLZOXZk9SuKhwfvkMiwWRQnnSV4t+SP1Oueun63Oo0n2x9Mcn kufYff82H/KQmH9X9Pix06H/802dTPWqtkSz6DMUvuU8p+W9P4KFy7ku0ok9YknkyytKLMUZ iYZazEXFiQCADc+p0wIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrHLMWRmVeSWpSXmKPExsVy+t/xy7rftBgiDW5c47OYe/c8i0Xvtnvs Fic2HWS2uNL+k91iy/5v7BbHe3ewOLB5HHixkN3jybXNTB7v911l8+jbsooxgCXKzSYjNTEl tUghNS85PyUzL91WKTTETddCSSEvMTfVVilC1zckSEmhLDGnFMgzMkADDs4B7sFK+nYJbhk/ P0xgKTjOXXHwzSXmBsY/nF2MnBwSAiYSyxacZoGwxSQu3FvP1sXIxSEksIRRYuqU2YwgCSGB XiaJllNlXYwcHGwCBhL77tmChEUExCXe7WtgB7GZBQokzi7eD1YuLOAg0fi8iRXEZhFQleib PgsszivgLnH/5kWoXXISJ49NBqvhFPCQWL/+DTPEKneJOVeXsU5g5F3AyLCKUSS1tDg3PbfY SK84Mbe4NC9dLzk/dxMjMGy3Hfu5ZQdj17vgQ4wCHIxKPLwBHv8jhFgTy4orcw8xSnAwK4nw hmswRArxpiRWVqUW5ccXleakFh9iNAU6aiKzlGhyPjCm8kriDU0MzS0NjYwtLMyNjJTEead+ uBIuJJCeWJKanZpakFoE08fEwSnVwOj0bFsF98tH6yNiz2myMNas+nHGNCGFa4pQhNwCx4gr tUYOhkq3BUvfHQkyuX9tWnpPc+1NVqvQ++usp3bktpppTfsVctZw0tX3AZwvuTK3B92x83E+ rSlyUC0zs9l+xV3em6orlzP+2/twhl7cVYkgnh3JKfK5eb2Ba8UM7k97UZ/3VPn7HCWW4oxE Qy3mouJEANOsWeFxAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170426050635eucas1p2084a21b1deaaa891c278bbb610eb421a 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: 20170426050635eucas1p2084a21b1deaaa891c278bbb610eb421a X-RootMTR: 20170426050635eucas1p2084a21b1deaaa891c278bbb610eb421a References: <1493183181-21962-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 V3 6/6] migration: trace postcopy total downtime 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, qemu-devel@nongnu.org, a.perevalov@samsung.com, peterx@redhat.com, f4bug@amsat.org 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" It's not possible to transmit it back to source host, due to RP protocol is not expandable. Signed-off-by: Alexey Perevalov --- migration/postcopy-ram.c | 2 ++ migration/trace-events | 1 + 2 files changed, 3 insertions(+) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 03c2be7..46a42d4 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -390,6 +390,8 @@ int postcopy_ram_incoming_cleanup(MigrationIncomingStat= e *mis) } =20 postcopy_state_set(POSTCOPY_INCOMING_END); + /* here should be downtime receiving back operation */ + trace_postcopy_ram_incoming_cleanup_downtime(get_postcopy_total_downti= me()); migrate_send_rp_shut(mis, qemu_file_get_error(mis->from_src_file) !=3D= 0); =20 if (mis->postcopy_tmp_page) { diff --git a/migration/trace-events b/migration/trace-events index 19e7dc5..25521d4 100644 --- a/migration/trace-events +++ b/migration/trace-events @@ -194,6 +194,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_downtime(uint64_t total) "total downtime %" = 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" --=20 1.9.1