From nobody Tue Feb 10 06:26:06 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.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 1498654481838355.6294998254763; Wed, 28 Jun 2017 05:54:41 -0700 (PDT) Received: from localhost ([::1]:33210 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dQCUQ-0007SG-K4 for importer@patchew.org; Wed, 28 Jun 2017 08:54:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48358) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dQCSV-0005or-0X for qemu-devel@nongnu.org; Wed, 28 Jun 2017 08:52:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dQCSQ-00031s-BO for qemu-devel@nongnu.org; Wed, 28 Jun 2017 08:52:39 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:21553) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dQCSQ-00031C-3b for qemu-devel@nongnu.org; Wed, 28 Jun 2017 08:52:34 -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 <0OS900EAXD3KI100@mailout3.w1.samsung.com> for qemu-devel@nongnu.org; Wed, 28 Jun 2017 13:52:32 +0100 (BST) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170628125231eucas1p2fa0bbe241b92738472fe794ff5bb1542~MSjFhu-S71015310153eucas1p2w; Wed, 28 Jun 2017 12:52:31 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges3.samsung.com (EUCPMTA) with SMTP id 09.AC.17464.F86A3595; Wed, 28 Jun 2017 13:52:31 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170628125231eucas1p1bf1ee6e6bb79cf84b82e97cbf26a2dc4~MSjE53euJ2523325233eucas1p1_; Wed, 28 Jun 2017 12:52:31 +0000 (GMT) Received: from eusync2.samsung.com ( [203.254.199.212]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 9E.13.17452.F86A3595; Wed, 28 Jun 2017 13:52:31 +0100 (BST) Received: from minion.rnd.samsung.ru ([106.109.131.134]) by eusync2.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OS900J3VD2QR510@eusync2.samsung.com>; Wed, 28 Jun 2017 13:52:31 +0100 (BST) X-AuditID: cbfec7f2-f797e6d000004438-3c-5953a68f8dcc From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Wed, 28 Jun 2017 08:49:31 -0400 Message-id: <1498654172-26570-3-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.8.3.1 In-reply-to: <1498654172-26570-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrNIsWRmVeSWpSXmKPExsWy7djP87r9y4IjDV6817KYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFos7W/qYHNg8nlzbzOTxft9VNo++LasYA5ijuGxSUnMyy1KL9O0S uDL+3y4tuCtZ0briGHMD41PhLkZODgkBE4lnbz8zQdhiEhfurWfrYuTiEBJYyihxcPI/Jgjn M6PEyVVL2WE6Xrz+zwZiCwksY5Q49DYKoqiBSeLelBlACQ4ONgEDiX33bEFqRAQkJX53nWYG qWEWaGWUaO97xAySEBZwl7hwfxkriM0ioCrxY+ERFhCbFyi+Z8NOVohlChJTHr4Hq+cU8JA4 vGABK8ggCYHbbBLPL9wDWyYhICux6QAzRL2LxKf+W4wQtrDEq+NboI6WkejsOMgE0dvOKNG9 sxNq0ARGiTPT/0JV2UucunkVHBjMAnwSk7ZNZ4ZYwCvR0SYEUeIh0fXxJtRxjhL9p48zQ3w/ m1Fi8ZrnjBMYZRYwMqxiFEktLc5NTy021itOzC0uzUvXS87P3cQIjNLT/45/2sH49YTVIUYB DkYlHt4AoeBIIdbEsuLK3EOMEhzMSiK8rQuBQrwpiZVVqUX58UWlOanFhxilOViUxHm5Tl2L EBJITyxJzU5NLUgtgskycXBKNTBul5vC7aImaletfq14R86HCtuPBvdXuLf/zXnZ3J1mMt+t YIdTUHrhN7ULnKKXlvQbqaw6vmP5BZ8b6jfEC04KWM2/kfVpmgFrQIZ0wNsnk1+8ivdK+rti lYNCQLns/8VBn5s8cv6YGm0JSVu28jRfzZJ7OcdEuL9sy79VlGZ/Zv3dWqXyKk0lluKMREMt 5qLiRADd837IzgIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRmVeSWpSXmKPExsVy+t/xK7r9y4IjDS6sEbCYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFos7W/qYHNg8nlzbzOTxft9VNo++LasYA5ij3GwyUhNTUosUUvOS 81My89JtlUJD3HQtlBTyEnNTbZUidH1DgpQUyhJzSoE8IwM04OAc4B6spG+X4Jbx/3ZpwV3J itYVx5gbGJ8KdzFyckgImEi8eP2fDcIWk7hwbz2QzcUhJLCEUWLNxGVMEE4Tk0T//0NADgcH m4CBxL57tiANIgKSEr+7TjOD1DALtDJKPGmcxQ6SEBZwl7hwfxkriM0ioCrxY+ERFhCbFyi+ Z8NOVohtChJTHr5nBrE5BTwkDi9YABYXAqp5vucW4wRG3gWMDKsYRVJLi3PTc4sN9YoTc4tL 89L1kvNzNzECw3XbsZ+bdzBe2hh8iFGAg1GJh3eFSHCkEGtiWXFl7iFGCQ5mJRHe1oVAId6U xMqq1KL8+KLSnNTiQ4ymQEdNZJYSTc4HxlJeSbyhiaG5paGRsYWFuZGRkjhvyYcr4UIC6Ykl qdmpqQWpRTB9TBycUg2Mfl3pbP0ad24tFuUv33g98u15jZbCrhNJISur514w/+xex9HINy/8 dM2mu5JMcqEbbgrrm3TOTxB84nDq1Z2r69Omzq3IXH9tv+j2w9dV/royJmZPFSi52Ckcatne ePTUk8yGe3b6Siu/KvOybGPpfnD3z771y9VKBE//+dLuJXHw58dOsTUWSizFGYmGWsxFxYkA /0JziW0CAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170628125231eucas1p1bf1ee6e6bb79cf84b82e97cbf26a2dc4 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: 20170628125231eucas1p1bf1ee6e6bb79cf84b82e97cbf26a2dc4 X-RootMTR: 20170628125231eucas1p1bf1ee6e6bb79cf84b82e97cbf26a2dc4 References: <1498654172-26570-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 v6 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. 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 dae41b5..293db97 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -561,6 +561,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 @@ -568,20 +587,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); @@ -603,12 +616,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.8.3.1