From patchwork Fri Jun 16 19:08:38 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Perevalov X-Patchwork-Id: 777102 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wq90k2BHXz9s03 for ; Sat, 17 Jun 2017 05:09:42 +1000 (AEST) Received: from localhost ([::1]:60425 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLwcl-0004kH-Rv for incoming@patchwork.ozlabs.org; Fri, 16 Jun 2017 15:09:39 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48337) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dLwcB-0004jQ-3s for qemu-devel@nongnu.org; Fri, 16 Jun 2017 15:09:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dLwc6-0004YW-4G for qemu-devel@nongnu.org; Fri, 16 Jun 2017 15:09:03 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:20666) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dLwc5-0004VF-Se for qemu-devel@nongnu.org; Fri, 16 Jun 2017 15:08:58 -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 <0ORN00H68MIUOA20@mailout4.w1.samsung.com> for qemu-devel@nongnu.org; Fri, 16 Jun 2017 20:08:54 +0100 (BST) Received: from eusmges2.samsung.com (unknown [203.254.199.241]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20170616190853eucas1p10ba46998314baeda7338db7449d3a4b6~Ir8QwGZ1L1675516755eucas1p1D; Fri, 16 Jun 2017 19:08:53 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges2.samsung.com (EUCPMTA) with SMTP id BE.85.04459.4CC24495; Fri, 16 Jun 2017 20:08:53 +0100 (BST) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eucas1p2.samsung.com (KnoxPortal) with ESMTP id 20170616190851eucas1p2eb00f5002343887e7201fda49214e048~Ir8PF2qf30511005110eucas1p2w; Fri, 16 Jun 2017 19:08:51 +0000 (GMT) X-AuditID: cbfec7f1-f796e6d00000116b-c0-59442cc4185b Received: from eusync4.samsung.com ( [203.254.199.214]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 27.8C.17452.3CC24495; Fri, 16 Jun 2017 20:08:51 +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 <0ORN00D34MIKUY80@eusync4.samsung.com>; Fri, 16 Jun 2017 20:08:51 +0100 (BST) From: Alexey Perevalov To: qemu-devel@nongnu.org Date: Fri, 16 Jun 2017 22:08:38 +0300 Message-id: <1497640120-10729-2-git-send-email-a.perevalov@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: <1497640120-10729-1-git-send-email-a.perevalov@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrFIsWRmVeSWpSXmKPExsWy7djPc7pHdVwiDQ7KWcy9e57FonfbPXaL K+0/2S227P/GbnG8dweLxZ0tfUwObB5Prm1m8ni/7yqbR9+WVYwBzFFcNimpOZllqUX6dglc GR++bmUumKBQ0di1hbmBsV+si5GTQ0LARGLBm41sELaYxIV764FsLg4hgaWMEm//b2OGcD4z Sjxf95ENpuPGmdWsEIlljBInXmyFaulmktjVsoipi5GDg03AQGLfPVuQBhEBSYnfXafBJjEL tDJKtPc9YgZJCAu4SMzZu5kdxGYRUJW42nGRBcTmFXCX6Dq2gQVim5zEyWOTWUFsTgEPieZr l9kh4vfZJDZvsgDZJSEgK7HpADOE6SIx/xlUhbDEq+NboGwZic6Og0wgJ0gItDNKdO/sZIVw JjBKnJn+F6rKXuLUzatMIDazAJ/EpG3ToYbySnS0CUGUeEh031wBdZqjxOV/R6EhNJtR4vS0 fywTGGUWMDKsYhRJLS3OTU8tNtIrTswtLs1L10vOz93ECIzR0/+Of9zB+P6E1SFGAQ5GJR5e htvOkUKsiWXFlbmHGCU4mJVEeBeyuUQK8aYkVlalFuXHF5XmpBYfYpTmYFES5+U6dS1CSCA9 sSQ1OzW1ILUIJsvEwSnVwKhmufvH8nkH/7J/qinu/V5wfevzoC/H77dIz7Q5Y3c0pzjfdIPT beuHpVmTdSfHPPALTfrkt2WP8OyA/sVM3prnvqrPZb2RML1r2wVW83Vsv/7bng+v/t+RzCOg ZWH+4kfC0rc+1zaox6xmasuKivN7wh7WN5WLx55Llul26Fet+5UqWx7UOymxFGckGmoxFxUn AgBL1oVQzQIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRmVeSWpSXmKPExsVy+t/xa7qHdVwiDS5ukLaYe/c8i0Xvtnvs Flfaf7JbbNn/jd3ieO8OFos7W/qYHNg8nlzbzOTxft9VNo++LasYA5ij3GwyUhNTUosUUvOS 81My89JtlUJD3HQtlBTyEnNTbZUidH1DgpQUyhJzSoE8IwM04OAc4B6spG+X4Jbx4etW5oIJ ChWNXVuYGxj7xboYOTkkBEwkbpxZzQphi0lcuLeerYuRi0NIYAmjxP7NP8ASQgK9TBJ/P9h3 MXJwsAkYSOy7ZwsSFhGQlPjddZoZpJ5ZoJVR4knjLHaQhLCAi8ScvZvBbBYBVYmrHRdZQGxe AXeJrmMbWCCWyUmcPDYZbD6ngIdE87XL7BC73CWW9j1knsDIu4CRYRWjSGppcW56brGhXnFi bnFpXrpecn7uJkZguG479nPzDsZLG4MPMQpwMCrx8DLcdo4UYk0sK67MPcQowcGsJMK7kM0l Uog3JbGyKrUoP76oNCe1+BCjKdBRE5mlRJPzgbGUVxJvaGJobmloZGxhYW5kpCTOW/LhSriQ QHpiSWp2ampBahFMHxMHp1QDo9rRu+arHxo9V0ipPdh6piLx9u6eqRsTE/j7i97LHtuTxWej 9UXQ5ZpVTHahYUqLv6Shbc+5NWutF+4rEFw2xSmVU3a+8EqXrRlvZoVI+gnZWv2TeP/00bvr 3+wUS4+GGq/sEWY9pLu3b7q35vc9KR+PLJsWo77sv0fuM+2arLm/oxksRUVmK7EUZyQaajEX FScCACjswd5tAgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170616190851eucas1p2eb00f5002343887e7201fda49214e048 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: 20170616190851eucas1p2eb00f5002343887e7201fda49214e048 X-RootMTR: 20170616190851eucas1p2eb00f5002343887e7201fda49214e048 References: <1497640120-10729-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 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+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" 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: Dr. David Alan Gilbert Reviewed-by: Peter Xu Reviewed-by: Juan Quintela Signed-off-by: Alexey Perevalov --- migration/postcopy-ram.c | 13 +++++++------ migration/postcopy-ram.h | 4 ++-- migration/ram.c | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index c8c4500..dae41b5 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 *from, - size_t pagesize) + RAMBlock *rb) { struct uffdio_copy copy_struct; + size_t pagesize = qemu_ram_pagesize(rb); copy_struct.dst = (uint64_t)(uintptr_t)host; copy_struct.src = (uint64_t)(uintptr_t)from; @@ -597,11 +598,11 @@ 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) { trace_postcopy_place_page_zero(host); - if (pagesize == getpagesize()) { + if (qemu_ram_pagesize(rb) == getpagesize()) { struct uffdio_zeropage zero_struct; zero_struct.range.start = (uint64_t)(uintptr_t)host; zero_struct.range.len = getpagesize(); @@ -631,7 +632,7 @@ int postcopy_place_page_zero(MigrationIncomingState *mis, void *host, memset(mis->postcopy_tmp_zero_page, '\0', mis->largest_page_size); } return postcopy_place_page(mis, host, mis->postcopy_tmp_zero_page, - pagesize); + rb); } return 0; @@ -694,14 +695,14 @@ int postcopy_ram_enable_notify(MigrationIncomingState *mis) } int postcopy_place_page(MigrationIncomingState *mis, void *host, void *from, - size_t pagesize) + RAMBlock *rb) { assert(0); return -1; } 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 *from, - size_t pagesize); + RAMBlock *rb); /* * 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); /* 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) if (all_zero) { ret = postcopy_place_page_zero(mis, place_dest, - block->page_size); + block); } else { ret = postcopy_place_page(mis, place_dest, - place_source, block->page_size); + place_source, block); } } if (!ret) {