From nobody Wed Feb 11 02:07:13 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; 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 1500533706504643.8163273871698; Wed, 19 Jul 2017 23:55:06 -0700 (PDT) Received: from localhost ([::1]:36336 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dY5MX-0006TO-8C for importer@patchew.org; Thu, 20 Jul 2017 02:55:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41309) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dY5KU-0004K3-8K for qemu-devel@nongnu.org; Thu, 20 Jul 2017 02:53:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dY5KR-0005L6-5R for qemu-devel@nongnu.org; Thu, 20 Jul 2017 02:52:58 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:12130) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dY5KQ-0005JO-W8 for qemu-devel@nongnu.org; Thu, 20 Jul 2017 02:52:55 -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 <0OTD00MX3N429Q50@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Thu, 20 Jul 2017 07:52:50 +0100 (BST) Received: from eusmges4.samsung.com (unknown [203.254.199.244]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170720065249eucas1p217586d2a03f58247221cbf287df71da8~S91TV16u72443224432eucas1p2a; Thu, 20 Jul 2017 06:52:49 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges4.samsung.com (EUCPMTA) with SMTP id F1.D9.04729.14350795; Thu, 20 Jul 2017 07:52:49 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170720065248eucas1p1641d5e3f9f3d6cc3849f9345006d3bb6~S91Sd4ChV1110711107eucas1p1U; Thu, 20 Jul 2017 06:52:48 +0000 (GMT) Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 1F.9D.20206.04350795; Thu, 20 Jul 2017 07:52:48 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync4.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OTD005THN3STW10@eusync4.samsung.com>; Thu, 20 Jul 2017 07:52:48 +0100 (BST) X-AuditID: cbfec7f4-f79806d000001279-18-597053411e4c From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Thu, 20 Jul 2017 09:52:33 +0300 Message-id: <1500533554-5779-3-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1500533554-5779-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRmVeSWpSXmKPExsWy7djP87qOwQWRBttniFrMvXuexaJ32z12 i2mfb7NbXGn/yW6xZf83dovjvTtYLO5s6WNyYPd4cm0zk8f7fVfZPPq2rGIMYI7isklJzcks Sy3St0vgyli1bzt7wW3JiiuH9jE1MD4W7mLk5JAQMJG4v+EOO4QtJnHh3no2EFtIYCmjxM5J 6l2MXED2Z0aJC3MOs8E0XDk0lREisYxR4susq2wQTjeTxJ4P25i7GDk42AQMJPbdswVpEBGQ lPjddZoZpIZZYCGjRMO830wgCWEBd4mW3//BbBYBVYmF6/+C2bwCbhIN916xQGyTkzh5bDIr iM0JVL/sxxGwQRICz9kk1l9azAiyTEJAVmLTAWaIeheJ/xOeQ70jLPHq+BYoW0bi8uRuFoje dkaJ7p2drBDOBEaJM9P/QlXZS5y6eRXsCmYBPolJ26YzQyzglehoE4Io8ZBYtLGHEcJ2lNj5 cg0zxPezGCUOdk1jn8Aos4CRYRWjSGppcW56arGJXnFibnFpXrpecn7uJkZgxJ7+d/zLDsbF x6wOMQpwMCrx8Fpk5EcKsSaWFVfmHmKU4GBWEuGVDSyIFOJNSaysSi3Kjy8qzUktPsQozcGi JM7LdepahJBAemJJanZqakFqEUyWiYNTqoEx19pi16EJuRqGufe33ubV6s7fm2Q8L2X3vjcC splh1S/3OL04+8huff3iTY1GZ19MjbxRK9pjeP4GX2hetdXP4wumqj2IOfQjLClEyfZdP/Ob k9k1vkfXlwVebna3Fitl7Jd6WnI58NWcvP+TZGI2Xj2akdS+drZn+hUmqRe/HucYdBuq2l1T YinOSDTUYi4qTgQAgPxb+NQCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPLMWRmVeSWpSXmKPExsVy+t/xa7oOwQWRBn3bJC3m3j3PYtG77R67 xbTPt9ktrrT/ZLfYsv8bu8Xx3h0sFne29DE5sHs8ubaZyeP9vqtsHn1bVjEGMEe52WSkJqak Fimk5iXnp2TmpdsqhYa46VooKeQl5qbaKkXo+oYEKSmUJeaUAnlGBmjAwTnAPVhJ3y7BLWPV vu3sBbclK64c2sfUwPhYuIuRk0NCwETiyqGpjBC2mMSFe+vZQGwhgSWMEusmyHUxcgHZvUwS C/s7WLsYOTjYBAwk9t2zBakREZCU+N11mhmkhllgIaPEu+VPmEASwgLuEi2//4PZLAKqEgvX /wWzeQXcJBruvWKBWCYncfLYZFYQmxOoftmPI8wQi90kNhxazjKBkXcBI8MqRpHU0uLc9Nxi I73ixNzi0rx0veT83E2MwMDdduznlh2MXe+CDzEKcDAq8fBaZORHCrEmlhVX5h5ilOBgVhLh lQ0siBTiTUmsrEotyo8vKs1JLT7EaAp01ERmKdHkfGBU5ZXEG5oYmlsaGhlbWJgbGSmJ8079 cCVcSCA9sSQ1OzW1ILUIpo+Jg1OqgbHorNqlsgXB/ALi/J/7Xez61y6zPLhz/qwJTifT9uz2 YukQ5igUPHfk6D7DJatnHz1wqidt7rH0lb+PPBYW4xOw8ebM031YaJofUaHZd1xTUMFF37St ZPpX9ZP/Xlb6PvBVNH8WLfzzQYbMHlvh6nvbPsrEPq1ZrXN08oOUw//OyflfN/O8VKvEUpyR aKjFXFScCACOHumGcgIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170720065248eucas1p1641d5e3f9f3d6cc3849f9345006d3bb6 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: 20170720065248eucas1p1641d5e3f9f3d6cc3849f9345006d3bb6 X-RootMTR: 20170720065248eucas1p1641d5e3f9f3d6cc3849f9345006d3bb6 References: <1500533554-5779-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 2/3] migration: introduce qemu_ufd_copy_ioctl helper 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: heetae82.ahn@samsung.com, quintela@redhat.com, dgilbert@redhat.com, peterx@redhat.com, Alexey Perevalov , i.maximets@samsung.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" Just for placing auxilary operations inside helper, auxilary operations like: track received pages, notify about copying operation in futher patches. Reviewed-by: Juan Quintela Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Peter Xu Signed-off-by: Alexey Perevalov --- migration/postcopy-ram.c | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 996e64d..be497bb 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -559,6 +559,25 @@ int postcopy_ram_enable_notify(MigrationIncomingState = *mis) return 0; } =20 +static int qemu_ufd_copy_ioctl(int userfault_fd, void *host_addr, + void *from_addr, uint64_t pagesize) +{ + if (from_addr) { + struct uffdio_copy copy_struct; + copy_struct.dst =3D (uint64_t)(uintptr_t)host_addr; + copy_struct.src =3D (uint64_t)(uintptr_t)from_addr; + copy_struct.len =3D pagesize; + copy_struct.mode =3D 0; + return ioctl(userfault_fd, UFFDIO_COPY, ©_struct); + } else { + struct uffdio_zeropage zero_struct; + zero_struct.range.start =3D (uint64_t)(uintptr_t)host_addr; + zero_struct.range.len =3D pagesize; + zero_struct.mode =3D 0; + return ioctl(userfault_fd, UFFDIO_ZEROPAGE, &zero_struct); + } +} + /* * Place a host page (from) at (host) atomically * returns 0 on success @@ -566,20 +585,14 @@ int postcopy_ram_enable_notify(MigrationIncomingState= *mis) int postcopy_place_page(MigrationIncomingState *mis, void *host, void *fro= m, 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; - copy_struct.len =3D pagesize; - copy_struct.mode =3D 0; - /* 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 * of the order of updating our page state. */ - if (ioctl(mis->userfault_fd, UFFDIO_COPY, ©_struct)) { + if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, from, pagesize)) { int e =3D errno; error_report("%s: %s copy host: %p from: %p (size: %zd)", __func__, strerror(e), host, from, pagesize); @@ -601,12 +614,7 @@ int postcopy_place_page_zero(MigrationIncomingState *m= is, void *host, trace_postcopy_place_page_zero(host); =20 if (qemu_ram_pagesize(rb) =3D=3D getpagesize()) { - struct uffdio_zeropage zero_struct; - zero_struct.range.start =3D (uint64_t)(uintptr_t)host; - zero_struct.range.len =3D getpagesize(); - zero_struct.mode =3D 0; - - if (ioctl(mis->userfault_fd, UFFDIO_ZEROPAGE, &zero_struct)) { + if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, NULL, getpagesize= ())) { int e =3D errno; error_report("%s: %s zero host: %p", __func__, strerror(e), host); --=20 1.9.1