From nobody Wed Nov 5 13:48:12 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 1497544696376339.7061571776169; Thu, 15 Jun 2017 09:38:16 -0700 (PDT) Received: from localhost ([::1]:55054 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLXmg-0000ff-VO for importer@patchew.org; Thu, 15 Jun 2017 12:38:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47859) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLXlA-00087e-97 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-0001ZZ-2f for qemu-devel@nongnu.org; Thu, 15 Jun 2017 12:36:40 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:40100) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dLXl4-0001Xq-RH for qemu-devel@nongnu.org; Thu, 15 Jun 2017 12:36:35 -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 <0ORL00548KSU2D20@mailout4.w1.samsung.com> for qemu-devel@nongnu.org; Thu, 15 Jun 2017 17:36:30 +0100 (BST) Received: from eusmges3.samsung.com (unknown [203.254.199.242]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170615163629eucas1p2f1c28e5fd776c2b6cb46d2ca1cdf8985~IWN7EoPuI1661516615eucas1p2i; Thu, 15 Jun 2017 16:36:29 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3.samsung.com (EUCPMTA) with SMTP id 4C.45.17464.D87B2495; Thu, 15 Jun 2017 17:36:29 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170615163629eucas1p1f0abc79e0d893f6b442a380630821e5d~IWN6gfWeK1514815148eucas1p1U; Thu, 15 Jun 2017 16:36:29 +0000 (GMT) Received: from eusync2.samsung.com ( [203.254.199.212]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 94.8A.17452.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: cbfec7f2-f797e6d000004438-54-5942b78dbc0e From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Thu, 15 Jun 2017 19:36:13 +0300 Message-id: <1497544575-18628-2-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+NgFtrDIsWRmVeSWpSXmKPExsWy7djPc7q9250iDd70aFjMvXuexaJ32z12 iyvtP9kttuz/xm5xvHcHi8WdLX1MDmweT65tZvJ4v+8qm0ffllWMAcxRXDYpqTmZZalF+nYJ XBkzb55jLWiUrzi0vYGlgXGyaBcjJ4eEgInE3PebmSFsMYkL99azgdhCAksZJVY0l3cxcgHZ nxklXv44zATT0H1tCTNEYhmjxNyLGxkhnG4miVWLlrN3MXJwsAkYSOy7ZwvSICIgKfG76zRY A7NAK6NEe98jsHXCAi4S7RfPgdksAqoSxxc+YQWxeQXcJebNbmCB2CYncfLYZLA4p4CHxMMF fWwggyQE7rNJTH70kBlkmYSArMSmA1AvuEgcWTeFFcIWlnh1fAs7hC0j0dlxkAmit51Rontn JyuEM4FR4sz0v1BV9hKnbl4F+5NZgE9i0rbpUAt4JTrahCBKgI6Y3gW1zFFi0rrDLBDfz2aU uLNwBusERpkFjAyrGEVSS4tz01OLjfWKE3OLS/PS9ZLzczcxAuP09L/jn3Ywfj1hdYhRgINR iYdXocEpUog1say4MvcQowQHs5II79Q5QCHelMTKqtSi/Pii0pzU4kOM0hwsSuK8XKeuRQgJ pCeWpGanphakFsFkmTg4pRoYGfjKNE+L/cvfvvNQbfmBiwUaPfvVJ7ru6Ddbn1B9cp6ajcaL 32XpM0TyZ2773j/Hc7JspLzW+Z1zeDyzvfs+lR4omX55i3eM2Xa3TpsVb1nPWqxZt6+47+mD MJGjy7/x2XsUWojZ/9+lGPzkdNat6Q2ZlW8EJQMfXkmwznBtfnjQYV1UxFc1JZbijERDLeai 4kQAn17Ywc8CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrNLMWRmVeSWpSXmKPExsVy+t/xK7q9250iDbp/CVjMvXuexaJ32z12 iyvtP9kttuz/xm5xvHcHi8WdLX1MDmweT65tZvJ4v+8qm0ffllWMAcxRbjYZqYkpqUUKqXnJ +SmZeem2SqEhbroWSgp5ibmptkoRur4hQUoKZYk5pUCekQEacHAOcA9W0rdLcMuYefMca0Gj fMWh7Q0sDYyTRbsYOTkkBEwkuq8tYYawxSQu3FvP1sXIxSEksIRR4v3TCUwQTi+TxN+v14Gq ODjYBAwk9t2zBWkQEZCU+N11mhmkhlmglVHiSeMsdpCEsICLRPvFc2BTWQRUJY4vfMIKYvMK uEvMm93AArFNTuLksclgcU4BD4mHC/rYQGwhoJr3MxeyTWDkXcDIsIpRJLW0ODc9t9hQrzgx t7g0L10vOT93EyMwYLcd+7l5B+OljcGHGAU4GJV4eBUanCKFWBPLiitzDzFKcDArifBOnQMU 4k1JrKxKLcqPLyrNSS0+xGgKdNREZinR5HxgNOWVxBuaGJpbGhoZW1iYGxkpifOWfLgSLiSQ nliSmp2aWpBaBNPHxMEp1cAY29794VbFN5O4wBbTHbsNjzJaRa+O2HRyxgfhaV+iDqXtWyr9 bNE0zm6/yUwcG/yWVp08MouPM+IIz71Q9cL29k/32Pkb5u9VVu+7ZH7oZ/rlq2vvzCq9KvFW xG5F7PGu2U+XqBX4fNvL/JunRul/mdg7m8e3v15q5XBqZffcsyhMKXfXOQsrJZbijERDLeai 4kQAU/hC5G4CAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170615163629eucas1p1f0abc79e0d893f6b442a380630821e5d 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: 20170615163629eucas1p1f0abc79e0d893f6b442a380630821e5d X-RootMTR: 20170615163629eucas1p1f0abc79e0d893f6b442a380630821e5d 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.14 Subject: [Qemu-devel] [PATCH v2 1/3] 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, 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" Need to mark copied pages as closer as possible to the place where it tracks down. That will be necessary in futher patch. Reviewed-by: Juan Quintela Signed-off-by: Alexey Perevalov Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Peter Xu --- 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 c8c4500..743ca6c 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -566,9 +566,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; @@ -597,10 +598,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; @@ -631,7 +634,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; @@ -694,14 +697,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 52d51e8..78a3591 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 8dbdfdb..f50479d 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2465,10 +2465,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 13:48:12 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 From nobody Wed Nov 5 13:48:12 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 1497544842848689.2058182390458; Thu, 15 Jun 2017 09:40:42 -0700 (PDT) Received: from localhost ([::1]:55068 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLXp3-00035C-J6 for importer@patchew.org; Thu, 15 Jun 2017 12:40:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLXl9-00087D-S6 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-0001ZN-09 for qemu-devel@nongnu.org; Thu, 15 Jun 2017 12:36:39 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:31501) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dLXl4-0001Xf-Nj for qemu-devel@nongnu.org; Thu, 15 Jun 2017 12:36: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 <0ORL00GVDKSVDC40@mailout2.w1.samsung.com> for qemu-devel@nongnu.org; Thu, 15 Jun 2017 17:36:31 +0100 (BST) Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170615163631eucas1p1332d7368ed12eb790b9d037940498f88~IWN8o3fXm1514815148eucas1p1a; Thu, 15 Jun 2017 16:36:31 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2.samsung.com (EUCPMTA) with SMTP id 7B.E2.04459.F87B2495; Thu, 15 Jun 2017 17:36:31 +0100 (BST) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170615163630eucas1p24f8f92a8acc7e408849696645f9557f2~IWN76ZEYz1661516615eucas1p2k; 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 3B.C2.20206.E87B2495; Thu, 15 Jun 2017 17:36:30 +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:30 +0100 (BST) X-AuditID: cbfec7f1-f796e6d00000116b-60-5942b78fcace From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Thu, 15 Jun 2017 19:36:15 +0300 Message-id: <1497544575-18628-4-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+NgFtrDIsWRmVeSWpSXmKPExsWy7djP87r9250iDdbdELGYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFos7W/qYHNg8nlzbzOTxft9VNo++LasYA5ijuGxSUnMyy1KL9O0S uDIaLvxnK7iuU3Fszj32Bsbpyl2MnBwSAiYSHz7OZISwxSQu3FvPBmILCSxllFgzSaOLkQvI /swocXTyKTaYhl3XFzFDJJYxSqxed48Nwulmkji9to+pi5GDg03AQGLfPVuQBhEBSYnfXafB GpgFWhkl2vseMYMkhAXsJRq+zGIFsVkEVCXa//8Es3kF3CWmvf7LDrFNTuLksclgcU4BD4mH C/rAlkkI3GeT2Ne8nB1kmYSArMSmA8wQ9S4SGw6cZ4WwhSVeHd8CNUdG4vLkbhaI3nZGie6d nawQzgRGiTPTYbbZS5y6eZUJxGYW4JOYtG06M8QCXomONiGIEg+JpqctTBC2o8T2B8eZIL6f zSjRt3U66wRGmQWMDKsYRVJLi3PTU4uN9IoTc4tL89L1kvNzNzEC4/T0v+MfdzC+P2F1iFGA g1GJh1ehwSlSiDWxrLgy9xCjBAezkgjv1DlAId6UxMqq1KL8+KLSnNTiQ4zSHCxK4rxcp65F CAmkJ5akZqemFqQWwWSZODilGhiz7u5cvz7x/bto6f6i+Sc40vsnbbM+G9N61kpdUIHzgrRO EofYMsmjxeo7572+Yh6j1SLgFPkornPFDdMjTY6LVr8JfHpX+lzltvuWMil1l3OdsuaqfDt+ +d4V1UrDlWzt3O5ea2ZaGP6YKHh8ikKv91dza6tVfN6SG1tW5jfM/sFic/fAHRMlluKMREMt 5qLiRAC8SV7pzwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRmVeSWpSXmKPExsVy+t/xK7p9250iDfZdVrKYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFos7W/qYHNg8nlzbzOTxft9VNo++LasYA5ij3GwyUhNTUosUUvOS 81My89JtlUJD3HQtlBTyEnNTbZUidH1DgpQUyhJzSoE8IwM04OAc4B6spG+X4JbRcOE/W8F1 nYpjc+6xNzBOV+5i5OSQEDCR2HV9ETOELSZx4d56ti5GLg4hgSWMEjNXLWYHSQgJ9DJJzF6r 0MXIwcEmYCCx754tSFhEQFLid9dpZpB6ZoFWRoknjbPA6oUF7CUavsxiBbFZBFQl2v//BLN5 Bdwlpr3+yw6xTE7i5LHJYHFOAQ+Jhwv62CB2uUu8n7mQbQIj7wJGhlWMIqmlxbnpucVGesWJ ucWleel6yfm5mxiB4brt2M8tOxi73gUfYhTgYFTi4a1ocooUYk0sK67MPcQowcGsJMI7dQ5Q iDclsbIqtSg/vqg0J7X4EKMp0FETmaVEk/OBsZRXEm9oYmhuaWhkbGFhbmSkJM479cOVcCGB 9MSS1OzU1ILUIpg+Jg5OqQZG6dBd0w6JtAds+DXzsvO75z1vDNc+qZjqtfKbUf3h3WdctscV Zm3b1F8nYRq7e5ZImfF8m5C2BtupUi+Ev8hbWqatYrcqf7d9C0/l/4MBWyT+vX+yQ8gq+6dg 3swtl+4demqj3Fy4zn3qwyVf+t/MaHllEPns8saDpjf2e88s2SShaZMl9jWuT4mlOCPRUIu5 qDgRANzr/QltAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170615163630eucas1p24f8f92a8acc7e408849696645f9557f2 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: 20170615163630eucas1p24f8f92a8acc7e408849696645f9557f2 X-RootMTR: 20170615163630eucas1p24f8f92a8acc7e408849696645f9557f2 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.12 Subject: [Qemu-devel] [PATCH v2 3/3] migration: add bitmap for received 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, 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" This patch adds ability to track down already received 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 received pages will be transferred to the software virtual bridge (e.g. OVS-VSWITCHD), to avoid fallocate (unmap) for already received 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. Signed-off-by: Alexey Perevalov Reviewed-by: Dr. David Alan Gilbert --- include/exec/ram_addr.h | 2 ++ migration/postcopy-ram.c | 11 ++++++++--- migration/ram.c | 33 +++++++++++++++++++++++++++++++++ migration/ram.h | 5 +++++ migration/savevm.c | 1 + 5 files changed, 49 insertions(+), 3 deletions(-) diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h index 140efa8..c2c1dfe 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 received pages in postcopy */ + unsigned long *receivedmap; }; =20 static inline bool offset_in_ramblock(RAMBlock *b, ram_addr_t offset) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index 38a429a..5ac3ed2 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -562,8 +562,13 @@ int postcopy_ram_enable_notify(MigrationIncomingState = *mis) } =20 static int qemu_ufd_copy_ioctl(int userfault_fd, void *host_addr, - void *from_addr, uint64_t pagesize) + void *from_addr, uint64_t pagesize, RAMBlock *rb) { + /* received 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_receivedmap_by_addr(host_addr, rb); if (from_addr) { struct uffdio_copy copy_struct; copy_struct.dst =3D (uint64_t)(uintptr_t)host_addr; @@ -595,7 +600,7 @@ int postcopy_place_page(MigrationIncomingState *mis, vo= id *host, void *from, * which would be slightly cheaper, but we'd have to be careful * of the order of updating our page state. */ - if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, from, pagesize)) { + if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, from, pagesize, rb)) { int e =3D errno; error_report("%s: %s copy host: %p from: %p (size: %zd)", __func__, strerror(e), host, from, pagesize); @@ -619,7 +624,7 @@ int postcopy_place_page_zero(MigrationIncomingState *mi= s, void *host, =20 pagesize =3D qemu_ram_pagesize(rb); if (pagesize =3D=3D getpagesize()) { - if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, 0, getpagesize())= ) { + if (qemu_ufd_copy_ioctl(mis->userfault_fd, host, 0, getpagesize(),= rb)) { int e =3D errno; error_report("%s: %s zero host: %p", __func__, strerror(e), host); diff --git a/migration/ram.c b/migration/ram.c index f50479d..f5ea3c2 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -151,6 +151,34 @@ out: return ret; } =20 +void init_receivedmap(void) +{ + RAMBlock *rb; + + RAMBLOCK_FOREACH(rb) { + unsigned long pages; + pages =3D rb->max_length >> TARGET_PAGE_BITS; + rb->receivedmap =3D bitmap_new(pages); + } +} + +static unsigned long int get_received_bit_offset(void *host_addr, RAMBlock= *rb) +{ + uint64_t host_addr_offset =3D (uint64_t)(uintptr_t)(host_addr + - (void *)rb->host); + return host_addr_offset >> TARGET_PAGE_BITS; +} + +int test_receivedmap_by_addr(void *host_addr, RAMBlock *rb) +{ + return test_bit(get_received_bit_offset(host_addr, rb), rb->receivedma= p); +} + +void set_receivedmap_by_addr(void *host_addr, RAMBlock *rb) +{ + set_bit_atomic(get_received_bit_offset(host_addr, rb), rb->receivedmap= ); +} + /* * An outstanding page request, on the source, having been received * and queued @@ -2324,8 +2352,13 @@ static int ram_load_setup(QEMUFile *f, void *opaque) =20 static int ram_load_cleanup(void *opaque) { + RAMBlock *rb; xbzrle_load_cleanup(); compress_threads_load_cleanup(); + + RAMBLOCK_FOREACH(rb) { + g_free(rb->receivedmap); + } return 0; } =20 diff --git a/migration/ram.h b/migration/ram.h index c081fde..7048ff9 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -52,4 +52,9 @@ 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); + +void init_receivedmap(void); +int test_receivedmap_by_addr(void *host_addr, RAMBlock *rb); +void set_receivedmap_by_addr(void *host_addr, RAMBlock *rb); + #endif diff --git a/migration/savevm.c b/migration/savevm.c index 31158da..668d3bb 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -1372,6 +1372,7 @@ static int loadvm_postcopy_handle_advise(MigrationInc= omingState *mis) return -1; } =20 + init_receivedmap(); remote_pagesize_summary =3D qemu_get_be64(mis->from_src_file); local_pagesize_summary =3D ram_pagesize_summary(); =20 --=20 1.9.1