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 1497544695232937.0101799164469; Thu, 15 Jun 2017 09:38:15 -0700 (PDT) Received: from localhost ([::1]:55053 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLXmd-0000dO-Ex for importer@patchew.org; Thu, 15 Jun 2017 12:38:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47857) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLXl9-00087G-TA for qemu-devel@nongnu.org; Thu, 15 Jun 2017 12:36:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dLXl5-0001ZT-1m for qemu-devel@nongnu.org; Thu, 15 Jun 2017 12:36:39 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:18573) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dLXl4-0001XX-Or for qemu-devel@nongnu.org; Thu, 15 Jun 2017 12:36:34 -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 <0ORL00GSTKSVO040@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Thu, 15 Jun 2017 17:36:31 +0100 (BST) Received: from eusmges1.samsung.com (unknown [203.254.199.239]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170615163630eucas1p2f5171632a3f32ddaed8c0b86d337e947~IWN73x6I60098200982eucas1p27; Thu, 15 Jun 2017 16:36:30 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges1.samsung.com (EUCPMTA) with SMTP id F2.05.14140.197B2495; Thu, 15 Jun 2017 17:36:33 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170615163630eucas1p1f7fc8849597e8402e1c537769f4255d6~IWN7TjVfD1514815148eucas1p1X; Thu, 15 Jun 2017 16:36:30 +0000 (GMT) Received: from eusync2.samsung.com ( [203.254.199.212]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id CA.C2.20206.D87B2495; Thu, 15 Jun 2017 17:36:29 +0100 (BST) Received: from aperevalov-ubuntu.rnd.samsung.ru ([106.109.129.199]) by eusync2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0ORL009RKKSLTR30@eusync2.samsung.com>; Thu, 15 Jun 2017 17:36:29 +0100 (BST) X-AuditID: cbfec7ef-f796a6d00000373c-0a-5942b7917647 From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Thu, 15 Jun 2017 19:36:14 +0300 Message-id: <1497544575-18628-3-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1497544575-18628-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrNIsWRmVeSWpSXmKPExsWy7djP87oTtztFGkx/w2Yx9+55FovebffY La60/2S32LL/G7vF8d4dLBZ3tvQxObB5PLm2mcnj/b6rbB59W1YxBjBHcdmkpOZklqUW6dsl cGUs753MWHBAouL0n++MDYwXhLoYOTgkBEwkdnyI6WLkBDLFJC7cW88GYgsJLGOU2DJHo4uR C8j+zCix/85rFogiE4mlmz6yQCSAil5ufwjldDNJrFq0nB1kKpuAgcS+e7YgDSICkhK/u04z g9QwC7QySrT3PWIGSQgLuEssOriGFcRmEVCVeP3nHNgGXqD46pXbobbJSZw8NhmshlPAQ+Lh gj42kEESArfZJJrPHGGBeEFWYtMBZoh6F4neo18YIWxhiVfHt7BD2DISlyd3s0D0tjNKdO/s ZIVwJjBKnJn+F6rKXuLUzatMIDazAJ/EpG3TmSEW8Ep0tAlBlHhIdHzZzARhO0p0TF/JBvH9 bEaJ9c9aWCcwyixgZFjFKJJaWpybnlpsqFecmFtcmpeul5yfu4kRGKWn/x1/v4PxaXPIIUYB DkYlHl6FBqdIIdbEsuLK3EOMEhzMSiK8U+cAhXhTEiurUovy44tKc1KLDzFKc7AoifPynroW ISSQnliSmp2aWpBaBJNl4uCUamCcEV7b59YifDmw1aggYlHs8cxu1gwB3XdCOx+at2a+UZI4 vund432hy19NNb8v02aR3G09R0Dvp+rq8+zH8lWmvvhj27HTvyqgpiLhF/9mljfeexu6w87O sn0+86PiKZYbLzK358VZzo5U7tkZ+cLA1Wvdy6+Puw9dYn2tbCW3sK1n5Yl0/b1KLMUZiYZa zEXFiQC1dy+jzgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRmVeSWpSXmKPExsVy+t/xK7q9250iDdr+mVvMvXuexaJ32z12 iyvtP9kttuz/xm5xvHcHi8WdLX1MDmweT65tZvJ4v+8qm0ffllWMAcxRbjYZqYkpqUUKqXnJ +SmZeem2SqEhbroWSgp5ibmptkoRur4hQUoKZYk5pUCekQEacHAOcA9W0rdLcMtY3juZseCA RMXpP98ZGxgvCHUxcnJICJhILN30kQXCFpO4cG89G4gtJLCEUWLPlvIuRi4gu5dJ4u/X68xd jBwcbAIGEvvu2YLUiAhISvzuOs0MUsMs0Moo8aRxFjtIQljAXWLRwTWsIDaLgKrE6z/nwBbw AsVXr9wOtUxO4uSxyWA1nAIeEg8X9EEtdpd4P3Mh2wRG3gWMDKsYRVJLi3PTc4uN9IoTc4tL 89L1kvNzNzECw3XbsZ9bdjB2vQs+xCjAwajEw1vR5BQpxJpYVlyZe4hRgoNZSYR36hygEG9K YmVValF+fFFpTmrxIUZToKMmMkuJJucDYymvJN7QxNDc0tDI2MLC3MhISZx36ocr4UIC6Ykl qdmpqQWpRTB9TBycUg2MuSo12/iNd+97KnLBPkq3++iyLLffG4r4f7zbJW+feP/krR9Hl67/ tyDK9al//oxZ+9LsDz17yH15TZpuLI+iVVmdXdHPmwnMLJ/sLYWWCx05ka3zZJv+tnDp5Kbq jaG/5JaK/FCbef+XREDVvINar5jP3VU5pvbtXoloSfrsJcwHXqx5dv+wvhJLcUaioRZzUXEi AKCNMiRtAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170615163630eucas1p1f7fc8849597e8402e1c537769f4255d6 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: 20170615163630eucas1p1f7fc8849597e8402e1c537769f4255d6 X-RootMTR: 20170615163630eucas1p1f7fc8849597e8402e1c537769f4255d6 References: <1497544575-18628-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 v2 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: i.maximets@samsung.com, dgilbert@redhat.com, Alexey Perevalov , peterx@redhat.com, quintela@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" Just for placing auxilary operations inside helper, auxilary operations like: track received pages, notify about copying operation in futher patches. Signed-off-by: Alexey Perevalov Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Peter Xu --- migration/postcopy-ram.c | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 743ca6c..38a429a 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -561,6 +561,26 @@ 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); + } + return 0; +} + /* * Place a host page (from) at (host) atomically * returns 0 on success @@ -568,20 +588,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); @@ -605,12 +619,7 @@ int postcopy_place_page_zero(MigrationIncomingState *m= is, void *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; - 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, 0, getpagesize())= ) { int e =3D errno; error_report("%s: %s zero host: %p", __func__, strerror(e), host); --=20 1.9.1