From nobody Sat May 11 14:27:26 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1683573104; cv=none; d=zohomail.com; s=zohoarc; b=T9eVGFE9yVK/t+2htcngDwkAzs6vRElNpZcFfd1Qhugc6g0E9lFtJ9jjNJYhwE1NF71ejdYua1y+dN6Y06Q4vpr6/FFRRmvcw2UZtxObXD6Fcuj9Wa4EMCBPTjXXJgCuQclsjnW1QoW/9vY3FYChEOMMWa6AbjP6GKmPLqxnQ7c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683573104; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=kwQWZR7RcJY8JDkUc0KheUMhNrSEH0NoxtY/BOtvc8c=; b=B1yX29jJtl4PJiyZvJvLh47WgFx9YSgOQXDMrgRX459T+N9qfsBdiST4p1CC+NhbFSp2FVn2C9aeINRXcHO7HCS8pOL09m28AS7aTr8YLLShktVHy+onhQ3wkXIuM8+E/7DF0iaRYPwHbz3dbDi8vIzZr6xBQ4uHXJ4JpvuwNxE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1683573104379376.6777959170613; Mon, 8 May 2023 12:11:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pw6GD-0007Dm-4a; Mon, 08 May 2023 15:11:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GA-0007DP-Sx for qemu-devel@nongnu.org; Mon, 08 May 2023 15:10:58 -0400 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6G9-0003wa-9e for qemu-devel@nongnu.org; Mon, 08 May 2023 15:10:58 -0400 Received: from gecko.fritz.box ([82.207.254.98]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MmQYX-1qdzeG1VPV-00i9XW; Mon, 08 May 2023 21:10:53 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1683573053; i=lukasstraub2@web.de; bh=cMt5vCpBN0KI8tnXhcVX0yiidCI3Z21rKwnl39vBX5Y=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=GkQgUkAvffQ7bxKLlkVxZF3QBT/RGaL3L9SU8kNSWEwNw1BOHZB+JTqcb34XJyksd 5iWiGE6/f/yZdEYhvdcYmb4W3cmgl1xBjUViIiCIn8dYs0PVvl8AO7IsjigfVgoIeD 44+fTST/ch7qBRUbfQlxAZolJR05ftEK6Kr+d54vytRdgG0OrPPkumi5jrvlr94hUZ tf6xig5G/wqPaR8VCCpW7FNlHQCnKKCMNq+nUQLPJKPu6Cpr8geLEYxsP0v3XGhQcm VkO+0Ogng2G36MPgnS3cVBMEGcPJbeFGZOTPfibPlOeHM8/EYoihmn6XF3f2b42bPR obxzFbKH/uEDQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Date: Mon, 8 May 2023 21:10:52 +0200 From: Lukas Straub To: qemu-devel Cc: Juan Quintela , Peter Xu , Leonardo Bras Subject: [PATCH v2 1/6] ram: Add public helper to set colo bitmap Message-ID: <22d83cb428f37929563155531bfb69fd8953cc61.1683572883.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/4mtroUHt4rRU9=7jUnQwy8r"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:f8gZ6rAjohk1tekSySYhZYJEOk1esAs1lE+fHTyjAwHTB23PUZ6 beDmN45RSfzoOnjfbZ0bzmChkvaVcUs/0w0O+ciz2+ZnPzlY3LisFCyxZDNVF7w8/d0yJqG ptXt8pXfhFLpDw1YTWlh8YhuUYHobu68nZQP01yRbjmCjJfW7CdtiuvonbFlDF0XJOSi9QW WrtuTkTZ8nr3aYb7NXX7g== UI-OutboundReport: notjunk:1;M01:P0:tjVevSqgFc4=;/20tj7JIfVqY7VRglN5qVovrMJJ Xl7xz9OF9cQ3wkSkTl84oOwOx1m3hFEvV0L7OU/VyZt9OxLQZCSUFgGI+8FIyS73gBhkFZbgK J/rhZ8yV+4xqcJ2zX8Y7/Jtp9yQGUd54HoInQmPnlVKSUvanJQI6DAjjMkHVidJdCZS5q9ic7 h7/HdzTW7Tu1RIS20sZw1OMnCrWn16WcR/Goutf8G0R6Xc1OM4j5Tv5b3ZcMDFhAMrTcymmDV FLs2j9tYDsu2+JG2FfylBZ5NIP6MDsLnod9Z3gZA7xQEUvDJvtfMyG6A6zYJzhil2WcjzwU+B X8Kw8f4x8emZZ0JSxAPOWxg1sXGSOdh9iesojJFpvA5lGIFlA5Za3bCvRzvyXlimp6TPpIsND QgNZ9mTDxYYZ4k8ZwNlBIHZDI80lzBe0MgWWfREfJ8OYBn7TklI1IW8bCmRPu9NjgT4/Lum3z Mwtk13YVx4NwZh+CQG5EH1eHx/GN4JRdQOEd0gYWZ2CdK+WfBFAneKdNoOiJaTdaHijWuiaij B0oKe/Ml240xOpx05RBI0v4ecukgsWflwqPt6FaPCM4Gi7VoL10RoV3IDce+FdOaELfbLwpmh Oc09yGlTYdrgfSUcnamqv9QPjGCTyI+azLw5MYy1Jv/NwpiY+a22P2LvVl+vxgSli5YBb/Nze n6rCCAN3THxQdBZaORcc8vPCqeJGxondyxaC0YGAqp0BwPzoN58rz7DRTybIcxSJjbfl6CkSD qTsyeDaoxVSlGezWd7wtw72UE/bIkkOl8zLOZUxEpnOKGWidG+JruKSjW1YPo+HJyzr1ryciM JvTx93stT9JWqjylbiLMzjPUh9qG2ecp60uwBK6HS3/EstMxEuUS3o1WsaIGpbMBHKqVm90nr w/7fmiQL0IrVJu5FHEJ6S5z/1pquze3BkitIIvzmgXUTdiLJKDUWViwyE83aYC5xQrTFQQuFE QS3y/Pkf7we9I84jeHvAx4jpG48= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1683573106165100003 --Sig_/4mtroUHt4rRU9=7jUnQwy8r Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The overhead of the mutex in non-multifd mode is negligible, because in that case its just the single thread taking the mutex. This will be used in the next commits to add colo support to multifd. Signed-off-by: Lukas Straub Reviewed-by: Juan Quintela --- migration/ram.c | 17 ++++++++++++++--- migration/ram.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index 5e7bf20ca5..2d3fd2112a 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3633,6 +3633,18 @@ static ram_addr_t host_page_offset_from_ram_block_of= fset(RAMBlock *block, return ((uintptr_t)block->host + offset) & (block->page_size - 1); } =20 +void colo_record_bitmap(RAMBlock *block, ram_addr_t *normal, uint normal_n= um) +{ + qemu_mutex_lock(&ram_state->bitmap_mutex); + for (int i =3D 0; i < normal_num; i++) { + ram_addr_t offset =3D normal[i]; + ram_state->migration_dirty_pages +=3D !test_and_set_bit( + offset >> TARGET_PAGE_BITS, + block->bmap); + } + qemu_mutex_unlock(&ram_state->bitmap_mutex); +} + static inline void *colo_cache_from_block_offset(RAMBlock *block, ram_addr_t offset, bool record_bitmap) { @@ -3650,9 +3662,8 @@ static inline void *colo_cache_from_block_offset(RAMB= lock *block, * It help us to decide which pages in ram cache should be flushed * into VM's RAM later. */ - if (record_bitmap && - !test_and_set_bit(offset >> TARGET_PAGE_BITS, block->bmap)) { - ram_state->migration_dirty_pages++; + if (record_bitmap) { + colo_record_bitmap(block, &offset, 1); } return block->colo_cache + offset; } diff --git a/migration/ram.h b/migration/ram.h index 6fffbeb5f1..887d1fbae6 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -82,6 +82,7 @@ int colo_init_ram_cache(void); void colo_flush_ram_cache(void); void colo_release_ram_cache(void); void colo_incoming_start_dirty_log(void); +void colo_record_bitmap(RAMBlock *block, ram_addr_t *normal, uint normal_n= um); =20 /* Background snapshot */ bool ram_write_tracking_available(void); --=20 2.39.2 --Sig_/4mtroUHt4rRU9=7jUnQwy8r Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmRZSTwACgkQNasLKJxd slhe0A//QB9PypC8Gn4YVbzpNf2OClRb2TMAkZopKV7OaDNt9ZGAl0mw8EV+bv1G GQkEnKLUz1fum16cZAvp0TZk10G2/sxSoDIAyi2gajBeSN4IMfSqBpYvDltCBWgR 6yiYdD2508yR1V60bDdq8qvSXWPuiw5xK6y7oaK1Pvp756mkDQh+czF7YimDmg0b dkuZ3HKiQ/F5n3EnX+i9cR1cxFaKlugeU1lF17IvId+wfJtBoTO6Z3wQ1Nn05SQ+ 6lIQ79bWeb2/Tw/ZhET75w2z/wf0tLvDHk2Usek2+3dO4CDmeq92Bk553i70+LKM 2gckkXia/Q6Yb7b6TYcsOq7RD9itgqFOTeREt93TTWrqVBt1Zs3aokdwl4C52Kii T9nCDLVXH0keFIzdtQ5hT3aJPLVSqWYjhpMfaaGyDy1hfBoFfGd+HmRqag4kZkCc mr8K7oHCvodN2M2I0dq8Bj9hJJ2kIEShwuBGgJ2TgNRa/mLEUFS64vWdQzzTDLH/ HmGYRzM9CLC1E84bR8DiWIq6XiXN6bhx84h1b59Bu/6dAXKgQPQfl5ElqKaWUCRM Ae7va4pUx0Ulkmo1AMZYbNqQaeiV2NgiMji8ddWH8QGHQFaXvHivSyDy52uZRxYv NGfKnqPsqNMQB6mBGrxzcWpSN5gvxtB6Zw4N3lffJBuElb5ANSs= =BZg/ -----END PGP SIGNATURE----- --Sig_/4mtroUHt4rRU9=7jUnQwy8r-- From nobody Sat May 11 14:27:26 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1683573105; cv=none; d=zohomail.com; s=zohoarc; b=KkUG23f8r5dTjTZx3irpZGEHLzIwrSC2r6cAqqd2xwkH/ncsPpY+kAku31aEmO4eLkYXBRBiTLSu43vIgWAZxPpdI+xgs8DBMy619221WOBzLRgAI+jsk6RMtX1cMLsmmTuSAccfEqzC21ISZLEzRLEMrXRzHb06qg6UBfuVovI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683573105; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=K+P3azbhK/SLmLOzoUkA02UE8wzeujYXIitIZHBzrrE=; b=Rhvrm7KLwMSa6oYYTQpuimV8d429/47J6T5goKS8KmqnBbvZV7WlNG34jnTa8SXRl8wmhjJUUdxxsTQd0BW/Q28vwsQWgUef1l8GLjBg3coqzzX8SKViTYsIk8IjMuQDdGKjGweG2d6CMbz9FGQWAiX6/2nZeLh3hb/vmCzhyJM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1683573105686868.8831365425577; Mon, 8 May 2023 12:11:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pw6GH-0007ER-MB; Mon, 08 May 2023 15:11:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GF-0007E7-06 for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:03 -0400 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GD-00041A-EH for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:02 -0400 Received: from gecko.fritz.box ([82.207.254.98]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MUCz1-1pnXff3d3b-00RIQj; Mon, 08 May 2023 21:10:56 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1683573057; i=lukasstraub2@web.de; bh=0QH53IRgOPhT49cv5vsdm5gVQIKWEzSU5q9yPGwkZWk=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=ltRJdQoTuEKMo+tbTwvlbVE1gpc1B73hee6jZImk1QF0rr1Fvqp+R7rpNn/+s4ZEh 7fIfmHt2VpKDTje+kADEUZZDuZCmpKQvEUE/oEKJRI2ADkbkTa29VbzPWjmYl35VEx a/thCBW3dZQAlUpKfux3e0Xnnp3h4Dwq9P7zO69IwxiPsP9+Ebr+uig6NdrYopPbYS aQjGyKomnHE4GV7qA99ckpkvFAvaHIAESyYqMzDf15wSSIokUnnD8aZn26HHA8yUxx 0vX/+vg4Wm7zEHyL4HaT5GvEwxeS66FVMZPFsz+1RxVGIBlHF13kHrI4jojBuZ2/0L QXX7wtK1/4HAA== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Date: Mon, 8 May 2023 21:10:55 +0200 From: Lukas Straub To: qemu-devel Cc: Juan Quintela , Peter Xu , Leonardo Bras Subject: [PATCH v2 2/6] ram: Let colo_flush_ram_cache take the bitmap_mutex Message-ID: <35cb23ba854151d38a31e3a5c8a1020e4283cb4a.1683572883.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/9xKn0ey7D/FG6=z_YqRWPBz"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:Jdr5G3n2E6kpeS4hvyaa7eCAvWjLD1iXSr+vQ3RGLXYjjc3EBN3 DWXtQtj17JMQjEKdAcQqsT8gFq3WbNY8lhLFicRRCOiVP0hCQ1PyWgJKL/y2jXcnvQsJ34r b06JuauNTh2+zYmcrQ59mmjNvDbB/6vNVtbvkye7H90mKhmUznpEhleXDrVC0/iH6cjS9n5 7nn5HT0kgvPZ2XPPiuMZA== UI-OutboundReport: notjunk:1;M01:P0:Ul7hvAOpr4Q=;ivephjLNZcFV353pSwe2W7VMcYW vKNiUGHxT8OoXIdAjYchjAnpaJIhom9mulM1DF4ASJugDiDgjqtzY1ZO2wIOKa5iGCSugolQw aULxRvhrmPXv5cu2+6Gp2mBzzc8GOM0LWKpmffVBSohE6maHlyGjK/3CPEqHSvIpr7pPC7QoN PlRHgwxzCget1VHGX/r/aZ0XxqrsFZIHozOqZXkWcQJMINBQsji+0CZ6XCQOlxzu20oWILNlE fNxZwaRm3bFg+B+VNzFMvaxWtzbXyDVxVYJjY/ho0jVbnpCLNybnZjS8HunWpMa459P3PNraX sS9nF8HZHOt/dcjM0F3x8fCghvcK8goORN1rY1WycipUCfmQOZZX7Q+eCBdVtZ9nKfEc5twjf b/eXTspJ7/DYpvTrvMZYxFKjLBl7tmDnAJlH0CoAIYRQfG0Eihx3U+Ss01eTMEEH0Da+mrNm/ EbOxbVzpZtI9ejDwB/V/0VpStPty8YSgEx+FA5k52fagq99/YhBU+v1N4OXVVWP3Szx8GMilo 2YtNE69jB8PvmKRUr+MU7tGadaci7Gm2u7jJJcnm7F0y26imY3Ggo6l09hEptezp0T5INdMjN ThhghTNLxv9vDfxv5usHxfzswO6ksgfAv80Mu5cnpXGSOIUSqRUgO1210J3CZQw3CIwjxGtUq 0kt+Fe+WMAlLcoOCV3F5vB8oGUbd4Ppvv5RmRYKF43Cpx/pjmtujEOBzAbAve80SxziWIXrZy +b/hvX0VjzBKu2AYS1fTI0a4SI5plmAM7tR0Y5i+otr3CJivJvhx08hj/33wjCyKroLwlX29T 1noTVNB+b5OohDd2V+ehp2qVLFQFf7NrFFirPhTW+Xjaxy+fKYvrG64I0de4UJD9zMKx2Dlbl Oh9+9jwQuwy4Ner4/jNnJTr7+xTk+y+xnqfAIu9WnvTYG9JsWp95vhEj5m/BwsH20yN/VuiDf Eve+C+ArLSUphu+EA1mRMe9Wb/4= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1683573107322100007 --Sig_/9xKn0ey7D/FG6=z_YqRWPBz Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is not required, colo_flush_ram_cache does not run concurrently with the multifd threads since the cache is only flushed after everything has been received. But it makes me more comfortable. This will be used in the next commits to add colo support to multifd. Signed-off-by: Lukas Straub Reviewed-by: Juan Quintela --- migration/ram.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migration/ram.c b/migration/ram.c index 2d3fd2112a..f9e7aeda12 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -4230,6 +4230,7 @@ void colo_flush_ram_cache(void) unsigned long offset =3D 0; =20 memory_global_dirty_log_sync(); + qemu_mutex_lock(&ram_state->bitmap_mutex); WITH_RCU_READ_LOCK_GUARD() { RAMBLOCK_FOREACH_NOT_IGNORED(block) { ramblock_sync_dirty_bitmap(ram_state, block); @@ -4264,6 +4265,7 @@ void colo_flush_ram_cache(void) } } } + qemu_mutex_unlock(&ram_state->bitmap_mutex); trace_colo_flush_ram_cache_end(); } =20 --=20 2.39.2 --Sig_/9xKn0ey7D/FG6=z_YqRWPBz Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmRZST8ACgkQNasLKJxd sli26w//Qn2WyISkF8paMAQI1WXkMumAzTKKa7efk2c8V8I0N3GpdsCjm8q2paMP bCEqX7A+TCTy3esAuA/fAM27SBbqieegpxcuTNLYHlGw13sX9FCiBRADfAUc6eMD Cj9KsEY+yWgfpE//yE2BEkbssI+LahEfGhVuuyNHLWa9RlXeOWewikKssy2dPFYC 73jrSzTJ4t2abn6owZymPQyWK+y8C/XOQn2CmnplLFiIjFm5mYmewKtp3asfnomo 359gnw7EPV+KO/w7zU2Sy5Qje+30CmULa4VUj6+DAb7VrBvqMmNVqDeBQAgv8qzQ V2RUrDS1w53IxlbEj+aXqNIECiuxavAlc3OYe/zcuBZ99BIWdkpGzAuM06UAP6HI tTmg5Ct3vvh5XTCnRptl1aDvwQ8oVbXbbFh+O1HdH3t4uJLkZXGeyT3Q5q8vgJkU gedTWho6zu9qpIo8EnNDJhowxh48rSWeEwRrP9rv8CyT5JpoE+l6nzaPNedQb0VM 9f6C9cC+JGKOTAp/W8gkT80lBHqsuzzZy4fPA7BdA2si3Tw51C5tgTu3nZrw9x+b vCRhuJhn24W0GNjYG/EU6d/mcHgyh4yntOxZfxcDXiPamQiiEcogs0Tv/8yv1Oja skkRQ7NHUyGBzVYQ6NFDXAbNwe+vKXu3za9s0KjRssSl7HcBsl4= =nk4m -----END PGP SIGNATURE----- --Sig_/9xKn0ey7D/FG6=z_YqRWPBz-- From nobody Sat May 11 14:27:26 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1683573139; cv=none; d=zohomail.com; s=zohoarc; b=hK2FpH+8BCnrHpr5huQDqhBYZNjvdsWXMXjaSoyBsP7JVJLY/S4mhrgGvFAa2wUS7erR2W2IEYZY2i76YJCsaO+b2HcSnfIAIZadFwwjwHkBHuuI6hGRvU3IzsfrkMVO6fAwbx/VxYAgCEk3+sAJoe3E1dkuG0WWOxPwrLEswQU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683573139; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ztdFxrpYlVK0aHWfu0worpdiJaYf74+1x6tMb1xUcpk=; b=XfsrQRk8BWyhAd4ZyM1KA0gVoL+R9N0kSmsR7dXmvPlt+X3afiK7q24j9kv2PfXB8HS0fMecoRq0ybAjBkUIJ6hr3Xtev1ftzh0totxECl7lok1nByYMytQZK/AG74emZ6T1tMl+9kP6acwV4hDeCxc+++1Q9FEU2bUH01SX1lA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1683573139761965.8705014291425; Mon, 8 May 2023 12:12:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pw6GO-0007GD-VO; Mon, 08 May 2023 15:11:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GM-0007Fc-TR for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:10 -0400 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GI-00043e-2z for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:10 -0400 Received: from gecko.fritz.box ([82.207.254.98]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MV2KQ-1povFT1JPK-00S7IC; Mon, 08 May 2023 21:11:01 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1683573061; i=lukasstraub2@web.de; bh=RMPaB96clX712MJVaf16l7dBlsMK+Puiiaf/vcCDJIw=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=K287YoeBj1St36rKkXvZ7A0eKGLaFOtlyk1vVLaSAjZPUZdfrWljGef2ybaJy6S4J 39CzJxny799tPoiGMZjqwnvuyw47PCncJRwumHCOpLwT2qloUhN2cqYIi2/BAusFFN p5nk83MfEF3dGZQopKEAHO6+4CxqSoFcRKQnvhj4Wy9vszxQYUr7DHH9maBLmr7NC5 mERlu77r4ZwklbJb5QfJ9EvMOa1AeCizjaHadTujlQuDUevvTTyMu4NEx4c4Lujm07 0KTHbqEEpAMSuBXitcW7JDtKoUzGNO8IjFLJsD1/ALUdNMN/b1lQPTsrg7JFrOjRDr g7cERqDEVDn+g== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Date: Mon, 8 May 2023 21:11:00 +0200 From: Lukas Straub To: qemu-devel Cc: Juan Quintela , Peter Xu , Leonardo Bras Subject: [PATCH v2 3/6] multifd: Introduce multifd-internal.h Message-ID: <613b971dbdd71a7719667ae3fd607b8542afefe2.1683572883.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/PcMPtxVuBfCBIDCEEech__b"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:eWpObQv2KgCUZM1/uuYwN/9RChh6RUHRoQmw9NDk5ps753hZySC 05NoM1g0JbfJCk98yWjquxRuxVB6I9bHDmXbcKQ1eZ92JSddE0uz8/KVr7L8onx9xJT87LV 7to8nnX3Its6+J/jprcfgWOcrlAz+4BFtRDif1mGa1oZpRVtToKxoh39jMRDwopCeMmc9GH 1lfHz4j0QFHID0Gn2j9cg== UI-OutboundReport: notjunk:1;M01:P0:GaatC1caZas=;roL9yCczVF7we35eoBYUugV46cM FU4LxnOwT14HkTvQCRjrPuzwBwTuZ3jlic6N6miMSFdlJrhuxZpRDNpgfpMwl1oZkFywGLG+S /Qcam6WtlD0Co54xre46yWzP6pjVAj6n++yKyZWf6ViVa7rP5iJL3N//hKDmj3iNfRNSqeydN Zzw1EgnTl0AuQPX4QoxDU9KhGuxe9MIGNgv4IxqjP9S1/8Trt0kogXQHdf/AqjsXafX8cgf9P hhWtmZinercDqkhnZn4mCaMNs8hvXmXwHn66/aXhzcVMntJJb8YyIURH1lME6HRP9+o7VdxSI Q8K8krXskxkmd/hjkKHXkmee2NZ0YUsFYIoXYOWGLa5BxcNq2SRby23FpH/npNV71OD4lv5ag HNZyP9wHVu2nkDvJdpD8rYzlD0K8omgjKNx8/xOnH8x7Qfed2pETc3pYOGCsKTPT2C/IbCCpB ax2FW0IH4e6f6m7/zOBcZgC+oCzqJ4A5ljNXkcsrQXsjnG+4IldMceezeSBMl14v4F32clMxn zzUBsXPVlfiwuTesZBObajLVb137ItbVuvATZfWtv/660BMu727yBUyUA8BVxnxS2SCjMnLCh xPslMcbIA5zcoHVWwCWxX+m/7R4RVY1SCnqWLnT/XQH2N9dbbkvQees57tKxwq+0AhnZ3hojB lUmnoDBuh4hb5EbGts/9d7UxVnW5Ms/0AALzR0XxBFiVedJVBk/VotNJ39Ez766eUxhybq8B/ kRe32MFb9Cn9JyIIiLLNIQNW7KNyrMHj2PD0BjeqCuf5utoO84VeaYVrjY6LwX/r6/t66Gd/6 qsl5SBGKxQ3ehwIPmcBUoyPwTc7LCDjhuXPy2e79wJ6nnPEF2TONAYYoajP3YSeupoE2g//YZ QJyXrHrCoI8vz1w0+64a622G/N7ksJTl+P/KLTeBKyc5C3P6F6bEQJcbxlPI7tdVFieJez0mT v12Ww/gP4QCSmlwGq3Op0fPsbV8= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIM_INVALID=0.1, DKIM_SIGNED=0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1683573140289100006 --Sig_/PcMPtxVuBfCBIDCEEech__b Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Introduce multifd-internal.h so code that would normally go into multifd.c can go into an extra file. This way, multifd.c hopefully won't grow to 4000 lines like ram.c This will be used in the next commits to add colo support to multifd. Signed-off-by: Lukas Straub --- migration/multifd-internal.h | 34 ++++++++++++++++++++++++++++++++++ migration/multifd.c | 15 ++++----------- 2 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 migration/multifd-internal.h diff --git a/migration/multifd-internal.h b/migration/multifd-internal.h new file mode 100644 index 0000000000..6eeaa028e7 --- /dev/null +++ b/migration/multifd-internal.h @@ -0,0 +1,34 @@ +/* + * Internal Multifd header + * + * Copyright (c) 2019-2020 Red Hat Inc + * + * Authors: + * Juan Quintela + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#ifdef QEMU_MIGRATION_MULTIFD_INTERNAL_H +#error Only include this header directly +#endif +#define QEMU_MIGRATION_MULTIFD_INTERNAL_H + +#ifndef MULTIFD_INTERNAL +#error This header is internal to multifd +#endif + +struct MultiFDRecvState { + MultiFDRecvParams *params; + /* number of created threads */ + int count; + /* syncs main thread and channels */ + QemuSemaphore sem_sync; + /* global number of generated multifd packets */ + uint64_t packet_num; + /* multifd ops */ + MultiFDMethods *ops; +}; + +extern struct MultiFDRecvState *multifd_recv_state; diff --git a/migration/multifd.c b/migration/multifd.c index 4e71c19292..f6bad69b6c 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -31,6 +31,9 @@ #include "io/channel-socket.h" #include "yank_functions.h" =20 +#define MULTIFD_INTERNAL +#include "multifd-internal.h" + /* Multiple fd's */ =20 #define MULTIFD_MAGIC 0x11223344U @@ -967,17 +970,7 @@ int multifd_save_setup(Error **errp) return 0; } =20 -struct { - MultiFDRecvParams *params; - /* number of created threads */ - int count; - /* syncs main thread and channels */ - QemuSemaphore sem_sync; - /* global number of generated multifd packets */ - uint64_t packet_num; - /* multifd ops */ - MultiFDMethods *ops; -} *multifd_recv_state; +struct MultiFDRecvState *multifd_recv_state; =20 static void multifd_recv_terminate_threads(Error *err) { --=20 2.39.2 --Sig_/PcMPtxVuBfCBIDCEEech__b Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmRZSUQACgkQNasLKJxd sliE7g//fJtRadI8lcD68K3JYmkdggUNsuElcFJNiZor/xkTHyCKfUN+63UUfX77 VD/l8Ehz9XR2wdqOAs7RWwio7kWQFZXIf2KKa1hbmDMQdcoNRQH9smXMdwXVhuxu Cw0KTDk0fx5QvZQZ+eVOA5u7uwgXzTy7jy5w0EilBEb9RyUMIwqUC787mpoujt2O JXzdqEZwd6+4s0WZCKAr2AAPt80fqtQDL/sujXJVKprnaMcmQRcP5XJde1yTgicE bbx6FgT3xnNiTEMgQqU4yrqECxHsf8vW0OjwC36l7jVIr3B3A5L1tOS9NYmILSV/ lAZLfrn4w1orr70qIdjwgq4eYoJFBI8MbgizifLM8CHrZZFLHctrLyY2afcZNGw+ OaXi7bWOohQFDCT2yrjBHmwt/A/ptrHzelhGbpG1sTUE9q78XX1yJQJofMbGYV8R u9tLOiKbg08PGpI9g2FbTI5IjZOVQyNR8vv8jURyepImx64IEJYFDTqa8eeQf/No T9O+2QJJqAVvp0xKpCngeP9kb+nqz7aIpLD9HQM2JQ3qSCQYgTZyW7ZdSY5RX0XC tRdNuthQ4sxHAriFZOS5FAbeUx6NNwcaoa1AJsnpV3rFfFSOpDSPR0AyknIpOA6n MhHVpEG/5VSq8aWQoz4nDxcG/tZjQ5Gp9eyPGiCBoU1/b8/6U20= =yYQq -----END PGP SIGNATURE----- --Sig_/PcMPtxVuBfCBIDCEEech__b-- From nobody Sat May 11 14:27:26 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1683573139; cv=none; d=zohomail.com; s=zohoarc; b=D1zYV7VEaBZ05LCkHgymUXS+3dKCm4IZFUROBsf22Ml9YI3/z5DCgODV2zf4itniM3ma5vAF41wDwXedrGM9zWNw+6Wvo550aT66m8TNsuUpPHF/Q3JCu8UMawmKkV2dWe6ZkUsxcsxOMtGAehn5zCXbeKAsZwLwyg5Kfu4Ys+c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683573139; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=S4LNG8gwfQrt2wTkOvH96J8UcWU6I9UkQJY0JjByjyY=; b=nNdMGuphFV04ab2AeRaeU+lssy8YXzJNAvGvx4dy6b3lMhxcWCiCJqUVVKyRT4VPefZNkmuv36vKJrrpxB7P6SdveJdO2AUUeDx54AdpfBCu5YOV5LsAzfUlfVFjKv0hhULZI+vkpqoAx2oQQfVvoiXUbnlzMX+nW+/q3IqX+rs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1683573139053396.93081992077236; Mon, 8 May 2023 12:12:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pw6GP-0007GV-VZ; Mon, 08 May 2023 15:11:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GO-0007G2-JA for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:12 -0400 Received: from mout.web.de ([212.227.15.3]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GK-000448-Sn for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:12 -0400 Received: from gecko.fritz.box ([82.207.254.98]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MQPdl-1pZm1Z3WG9-00MOik; Mon, 08 May 2023 21:11:04 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1683573065; i=lukasstraub2@web.de; bh=RLJxB0vqXLDgxgpf3+7W0iM4sU9TCrsn1WfbSjL6Mi0=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=QWZUdqWKtV7i4AMWQJdYHGBjrXgEWiECHS1f8OSxaZY0WFKDgMx7zdH/WBnPUSblq bU53pFV+WjJDuVeFbGuCgqBmIy+2/gL9vzdrSxpLuO+0VyF1M5/lTzyBQr/9HnwjSe U6U2dutZPEgifVZ5qWWZFPwHMm564+qKp9ybsZiy+5g8ee0pPhks8kuU3iQnBgR28B /gqb8gTq88ScYqmGkBU8JbJZTJPLORaWiv2U+O5XRdTpKzIIdkoDONeRiHplXiC905 MjExn2ck/3kIlrmNcXFX7L9ykAdNhnH3qamcTq0JWW0Nv5XCu7NKOvbG828bP5DoOp pfjWuHFfjCJuQ== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Date: Mon, 8 May 2023 21:11:03 +0200 From: Lukas Straub To: qemu-devel Cc: Juan Quintela , Peter Xu , Leonardo Bras Subject: [PATCH v2 4/6] multifd: Introduce a overridable revc_pages method Message-ID: <276b19d89a054aadce0eb69269e114e164a1da9d.1683572883.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/UeWA3fgZuKPZcG=B0RQutvm"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:YaOgXu2wN4wgyqsCGz9e4iTpGRW8VX0oW7tmdfsbX67UA2ho9cC 7rPqRKWedt+Pp4oss4OjsKhVltNfHo2ko9NZZGJ6vORTE9Mxek80hxQIlw0+4g9cEUQYOjc hDxTFxFtcCHXfvV9rIKSNGBwLSKNar9vU+Whajh2lTr9aQqZmaEiq7UP9AG33ethOEHYU4H /uWHkVmv3i5p5Hxm98+tg== UI-OutboundReport: notjunk:1;M01:P0:Zt8udie3o9k=;JGCM98op9+j6EnrL3tpRwl42VLN r1yHWoqtJgrsfesLiZ5kIfINMp6NR/55x1AkR8JdTSDJuniVi8Z10dPvu/RbFh/8ap2iXuc7Y B0TYqGJMhaBzKQqOsswOVZmV2+RiFUBQxgY8KATiRb6r430P4nZFt8D0j6JJPNKlq/vWEP/XB /YkIAyZtZu5p1ZV/tI0pjeRtRlRNJpYRKhUU+oF/mYtyqkuf/VV9tk+qyEq4PKZZ9YTIZN77D AIbNxVByykq0bRUfymUWHgd9ZLopS+qUGoX7Q/qS/6Eg3SHILa/EjqDajiKBLrTuzpYKjMUKF xRtU3SCbVUMz00rP36i0/KvCcD2jcdz68/MjedPpWM73edHrPZcDl+v/cNBObpaO7rHB/3/Oh KHXvGcSn3XFfhoZ4zzyWHqpXVsvV3E6sZ3VVraMBc8zkVIMCgzp2lzgZ4yV45tHO/85FDryXF 3TuKmWHNOqnTlDBbLPJ8c4zijJEQhV31MFlP1HQsd5Sk8z1QdonhnB415EbjxpKv+UIcnRy7G us6lzoGf5dpCn5bkmKlZWM0/MHHfbmN+a/VLwx4SsWub6iUIKesjBU4+QW4k1vZUqdlceaEjI TE1upyxr1RDXsGhsJdszebgsM2gg0JeNFhkGgCXGeDRFf15S+t2IgfE1G3I7ZJ+QpT/x1ZMUY WVxsx23NthAHcewBAMXon4xCLHojuqaDb3lu0eUgpuFLczTC2Q6cW/iGpFojYDj6BG+2UiBu7 9YQWVxZVCj8ICNxyVcxLIMH77Jxic6AnpwGpQ0PpUUjm8O4ox0kJ5ZYIuCnmEXmG/76mPryNO yJB4xQexlogacIKJxf3QWvkCYxr39PbUiSnAS52fdb78KOB/ZHBMbFw2qS8+hop/OhvCH0fBO NXiHwpNE4TIMrDutE14LnPeUqPl6VB7zPK28TmbJGOT6wWcj86Xkh7IWonvJU6Wj/hF4QiZTu a23SKWQp+RM3ZxP1mOeRUgBN/6U= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.3; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1683573139702100003 --Sig_/UeWA3fgZuKPZcG=B0RQutvm Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This allows to override the behaviour around recv_pages. Think of it like a "multifd_colo" child class of multifd. This will be used in the next commits to add colo support to multifd. Signed-off-by: Lukas Straub --- migration/meson.build | 1 + migration/multifd-colo.c | 39 +++++++++++++++++++++++++++++ migration/multifd-internal.h | 5 ++++ migration/multifd.c | 48 ++++++++++++++++++++++++++++-------- 4 files changed, 83 insertions(+), 10 deletions(-) create mode 100644 migration/multifd-colo.c diff --git a/migration/meson.build b/migration/meson.build index da1897fadf..22ab6c6d73 100644 --- a/migration/meson.build +++ b/migration/meson.build @@ -23,6 +23,7 @@ softmmu_ss.add(files( 'migration.c', 'multifd.c', 'multifd-zlib.c', + 'multifd-colo.c', 'options.c', 'postcopy-ram.c', 'savevm.c', diff --git a/migration/multifd-colo.c b/migration/multifd-colo.c new file mode 100644 index 0000000000..c035d15e87 --- /dev/null +++ b/migration/multifd-colo.c @@ -0,0 +1,39 @@ +/* + * multifd colo implementation + * + * Copyright (c) Lukas Straub + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" +#include "exec/target_page.h" +#include "exec/ramblock.h" +#include "qemu/error-report.h" +#include "qapi/error.h" +#include "ram.h" +#include "multifd.h" +#include "io/channel-socket.h" + +#define MULTIFD_INTERNAL +#include "multifd-internal.h" + +static int multifd_colo_recv_pages(MultiFDRecvParams *p, Error **errp) +{ + return multifd_recv_state->ops->recv_pages(p, errp); +} + +int multifd_colo_load_setup(Error **errp) +{ + int ret; + + ret =3D _multifd_load_setup(errp); + if (ret) { + return ret; + } + + multifd_recv_state->recv_pages =3D multifd_colo_recv_pages; + + return 0; +} diff --git a/migration/multifd-internal.h b/migration/multifd-internal.h index 6eeaa028e7..82357f1d88 100644 --- a/migration/multifd-internal.h +++ b/migration/multifd-internal.h @@ -29,6 +29,11 @@ struct MultiFDRecvState { uint64_t packet_num; /* multifd ops */ MultiFDMethods *ops; + /* overridable recv method */ + int (*recv_pages)(MultiFDRecvParams *p, Error **errp); }; =20 extern struct MultiFDRecvState *multifd_recv_state; + +int _multifd_load_setup(Error **errp); +int multifd_colo_load_setup(Error **errp); diff --git a/migration/multifd.c b/migration/multifd.c index f6bad69b6c..fb5e8859de 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -1126,7 +1126,7 @@ static void *multifd_recv_thread(void *opaque) qemu_mutex_unlock(&p->mutex); =20 if (p->normal_num) { - ret =3D multifd_recv_state->ops->recv_pages(p, &local_err); + ret =3D multifd_recv_state->recv_pages(p, &local_err); if (ret !=3D 0) { break; } @@ -1152,20 +1152,12 @@ static void *multifd_recv_thread(void *opaque) return NULL; } =20 -int multifd_load_setup(Error **errp) +int _multifd_load_setup(Error **errp) { int thread_count; uint32_t page_count =3D MULTIFD_PACKET_SIZE / qemu_target_page_size(); uint8_t i; =20 - /* - * Return successfully if multiFD recv state is already initialised - * or multiFD is not enabled. - */ - if (multifd_recv_state || !migrate_multifd()) { - return 0; - } - thread_count =3D migrate_multifd_channels(); multifd_recv_state =3D g_malloc0(sizeof(*multifd_recv_state)); multifd_recv_state->params =3D g_new0(MultiFDRecvParams, thread_count); @@ -1204,6 +1196,42 @@ int multifd_load_setup(Error **errp) return 0; } =20 +static int multifd_normal_recv_pages(MultiFDRecvParams *p, Error **errp) +{ + return multifd_recv_state->ops->recv_pages(p, errp); +} + +static int multifd_normal_load_setup(Error **errp) +{ + int ret; + + ret =3D _multifd_load_setup(errp); + if (ret) { + return ret; + } + + multifd_recv_state->recv_pages =3D multifd_normal_recv_pages; + + return 0; +} + +int multifd_load_setup(Error **errp) +{ + /* + * Return successfully if multiFD recv state is already initialised + * or multiFD is not enabled. + */ + if (multifd_recv_state || !migrate_multifd()) { + return 0; + } + + if (migrate_colo()) { + return multifd_colo_load_setup(errp); + } else { + return multifd_normal_load_setup(errp); + } +} + bool multifd_recv_all_channels_created(void) { int thread_count =3D migrate_multifd_channels(); --=20 2.39.2 --Sig_/UeWA3fgZuKPZcG=B0RQutvm Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmRZSUcACgkQNasLKJxd slilxQ//efkShKHosDryk+HwQgdBgyUOhP0XBaYnnWAFuNXUzvMIZph2mCAGe32e Cu6TaytuzfZSkWrcy2sprl2SjjH3IxkimLlMU0RJYUsMbkjfqK/DTw2worgSCvIq LPX09N1w/rVTDcA6XVvJ3lFIggbljJkT0NpVRidvhio7j4OsE5WRVPlv/JsI01yi xPOqSKKZw4OS+G2pgw+v7/Oq/fEu+eQ2iwN+xdyyU9oUgP6x7+mygYbXDru6/Zlo D1UTFN4DTohdHu45AEBFyphhjQfhXFJ0dQG4gWF5opBHOjcy/eNyeojVbaM0Nvnq fScKSE8+CCwpFLsrl2wAEW6sfQndWDtJARTTahkjwg38nUeZ0Z6IOYcQ0XfJ4Fss kX0dKVrUEHVYyhiJW0hRggxLw00a6FBMppotACWOCQJnBc4jZdHXWghzQw/SIWJH OlUt+/UQLjffqlx2+vNAUMbf0GAcnCCEXccf94fN4ylUfnRhaE2J147UFpRyyckF RmY3qGPg4Xbj9M90nopWsKwcGtDqnAEsAf/h/5leyRRlW54CIJyw39mIXAZ9+9xJ Y83HZ/wZJRsqQ9k3fm+JdFh1wiqCZ/zJC/Lul/0Q6+21uXOPIRYuGYJcTF9kIpCO ZAY6Z9+vcPnTHoBBFpZVKKxmK5yHF3aRHMjzhvJklLrdIZBvEZA= =k+0A -----END PGP SIGNATURE----- --Sig_/UeWA3fgZuKPZcG=B0RQutvm-- From nobody Sat May 11 14:27:26 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1683573122; cv=none; d=zohomail.com; s=zohoarc; b=cIeOxcXcql3UXwdTlD2z/3xNvdOwfygIVlmb25p7GxyWfT7c3Y+jn/1MngVm8M/RkZgOEqgxwsooiH2jiH8yobSAFOwEjZdGSAmZVoeSFeRRh8XhDZN8sttDzQoktX1oc+P/uWxqe+OiaYThxCBo8C0R2YY6a79SGauZ2iPhNV0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683573122; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=yFzqNV1dVTNHcNMfKWIGU6DMxEz4xnXhDpKxvl547MI=; b=dbN83+/1aLmzk8P3p8TG9L0PxeZu5sz8s89PsxS0guHMNxMz+c42qXxBusZv+kOYmBM49uKRBHZfPRYfAma4jOy/rjC02prmSgXhDsjkZxko4z0fa96KmkQ73aB3AsWqBDj1gF7ZQD7lqn3rPGbUGSiJdPu5UWonxHIa847evcE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1683573122501456.76878950467085; Mon, 8 May 2023 12:12:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pw6GR-0007H3-II; Mon, 08 May 2023 15:11:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GQ-0007GZ-JP for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:14 -0400 Received: from mout.web.de ([212.227.15.4]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GO-00044l-QI for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:14 -0400 Received: from gecko.fritz.box ([82.207.254.98]) by smtp.web.de (mrweb005 [213.165.67.108]) with ESMTPSA (Nemesis) id 1Meler-1qWGQT1Og1-00akKA; Mon, 08 May 2023 21:11:08 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1683573068; i=lukasstraub2@web.de; bh=VWfgn0vy+usTipXAMejAs4Eb46fij7bBgTFx5TjexRE=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=tEwfCMx3IUVsT0B9KaIq3NhKJxjCPNdZeD6nZGkh8IBON5B2Bc60mcX/8JT0it7dx ZJ1y4UENRV3+qImGvArCfDXvYcZDmihOyWx5+93wnpJTHWHtkJUcchhIvoTmdsTL+d 3EvSr/T/jBQWsRs5r4yhbBn6k7R0RFE0pF15h8KlHGVx4vCk2JKpj5l5UhWCjkdt0k 7mUPBBtMjNfylRuTjy69ySuFRMCCV5qTnGEKma5emFfACaGgF8QoPSiIQ/211iUVPH I2pGw6CXj5anYhq9x2ItY6CB+mnDMb5Z7tGUoleAvympktS8XEMjlFdCDHtuJvJe8o jGpQooMc9BEuw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Date: Mon, 8 May 2023 21:11:07 +0200 From: Lukas Straub To: qemu-devel Cc: Juan Quintela , Peter Xu , Leonardo Bras Subject: [PATCH v2 5/6] multifd: Add the ramblock to MultiFDRecvParams Message-ID: <88135197411df1a71d7832962b39abf60faf0021.1683572883.git.lukasstraub2@web.de> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/czZiEh3yIoLeq01A_wqV/KE"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:Kk4+CG4/VqX2tK8marXR1eUJOk5ILk4a9QF77yNcA1RYqFNsdc8 PDt+PQ7Ms/B9rdfoWdoqRzD6G6WfYhqrn0N7fQCqrnk+GQo4HzZjbQsPVTWzw1EQs6/eb+p 3aSHgrRpb8Z2pp6QXMk6+5C+CxJoJ1L6sNPHOcN3Ycgyk+6tAvrmIQ4tLsujmtLcss38RlU sqqZCsSFh8cciC38h557Q== UI-OutboundReport: notjunk:1;M01:P0:ms2Gc0sDEoA=;lgzm1hrbRIA0pCFVeUedHGG0Sjt QFTtAvsj2GVUSAXBnD7fVbNin2XTPEEgR74CITUDb2D8FhvuKPGFn+RcjfseBiS1AuHwkDTlt 2EP6dzzYhkrRVlOJMMcP3u3Jp/xnWQDtsIYas/Z+l+vYrdRTfcdXQE31+iREpf9HCxXO0x9T9 hHXfh3UUlOv9y07JLUXFWa31QCFUia0Wo/VqAXHx0dgvUJk35AOj05fWXdp8wsWW5uf/Pi0DD kmKk3UQJ1TRO84RoJ/Tj5IVnoxHQbX8bF1RjIeM6BH9NFaB0KZ3NcwzuStpvb5B4Q8BwAgEY9 red2+VRKcIDKfKPBVvfM/b3NUxzOOJ0ezFmzVbuzkjGcMYh7iwo7lEj0hL5uBZEuoMDGgAjKb 06bCaX842QzerW3GyUhRjSAHMzQmdhy6vqzRGbsA0IG46xcmMbiD2dJMEIkjtBZoGwzlFhF8t aGLUyZnb043fj/g0qrPVsvrkzs8YtKV6AdTqylc/gVKPEYsrNFozYsLXKb51E+1kbDhLntUHO WSOmPKdK39Ydiw+i1UqYcOksGfO701KRab/RwXHI0XHSWQnOJgACvRDvzavk8PP0IuUwCj7wU 6XAAwudS7vc1g6cAl7960gaSTSdkBSTBbJ3d/GvkRKiURa1lRjU3TedgTSq/g9Pc3mVbMXQYG pJ6lLaD7n0kSLk5gYZSufqYJkJHkl6ggl0xSlSj0XF1MIiLOfj1zS3Bl1yn5yq45l1J2ql5+k 2pFP7sF6lmjs1aodgKypcMrDqSRukQhMuEdMW4chDOIXewZmKrswiVtwPTUz6Bnvikxoo9Fxy Byf9S9Y+DZub7c16qsvf2owTETwVqN5eMRtJRQadRDCKaGkMW4xv28UGG6MCNYIq0wowUDuCZ 2DLsp6VEG+zXdFfZKKWqkPbTlwksG0hpqeLx1cjBpgQ26MX2JG4CUxvuKQ2qoaYBU2cUfSAgZ Gr/wgLovn8sJzCmFZnb/gFA772w= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.4; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1683573123401100003 --Sig_/czZiEh3yIoLeq01A_wqV/KE Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This will be used in the next commits to add colo support to multifd. Signed-off-by: Lukas Straub Reviewed-by: Juan Quintela --- migration/multifd.c | 11 +++++------ migration/multifd.h | 2 ++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/migration/multifd.c b/migration/multifd.c index fb5e8859de..fddbf86596 100644 --- a/migration/multifd.c +++ b/migration/multifd.c @@ -284,7 +284,6 @@ static void multifd_send_fill_packet(MultiFDSendParams = *p) static int multifd_recv_unfill_packet(MultiFDRecvParams *p, Error **errp) { MultiFDPacket_t *packet =3D p->packet; - RAMBlock *block; int i; =20 packet->magic =3D be32_to_cpu(packet->magic); @@ -334,21 +333,21 @@ static int multifd_recv_unfill_packet(MultiFDRecvPara= ms *p, Error **errp) =20 /* make sure that ramblock is 0 terminated */ packet->ramblock[255] =3D 0; - block =3D qemu_ram_block_by_name(packet->ramblock); - if (!block) { + p->block =3D qemu_ram_block_by_name(packet->ramblock); + if (!p->block) { error_setg(errp, "multifd: unknown ram block %s", packet->ramblock); return -1; } =20 - p->host =3D block->host; + p->host =3D p->block->host; for (i =3D 0; i < p->normal_num; i++) { uint64_t offset =3D be64_to_cpu(packet->offset[i]); =20 - if (offset > (block->used_length - p->page_size)) { + if (offset > (p->block->used_length - p->page_size)) { error_setg(errp, "multifd: offset too long %" PRIu64 " (max " RAM_ADDR_FMT ")", - offset, block->used_length); + offset, p->block->used_length); return -1; } p->normal[i] =3D offset; diff --git a/migration/multifd.h b/migration/multifd.h index 7cfc265148..a835643b48 100644 --- a/migration/multifd.h +++ b/migration/multifd.h @@ -175,6 +175,8 @@ typedef struct { uint32_t next_packet_size; /* packets sent through this channel */ uint64_t num_packets; + /* ramblock */ + RAMBlock *block; /* ramblock host address */ uint8_t *host; /* non zero pages recv through this channel */ --=20 2.39.2 --Sig_/czZiEh3yIoLeq01A_wqV/KE Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmRZSUsACgkQNasLKJxd slhUcw//RWjSIMAfb4IVZF+CZzHnaMap5yCUr12nbilXGZD/HqXvyAOlR9RKJKi+ 09yhZcgJy4yBc7BTQ6LetRmCU9QtyasD0a88euSIvF/B/oiLywPKYXPU5Gb5YPZL CDKrd8eE20ewP8YYRFQKvdAMcuI7c9yKgrj9dtvBdfud3UXUqqYgMm++73+lhzqC TJHGrh4jllkQxP6BbVLKqrLAqhsQs2NbbqR6J5XA09igTyP0ROqAUgO3wcU4Cw1M gCQW65W6TWnyuPzvapxEsa4qqPIvsrZtjwAdcXrPHgRnHNg4rZBEpjQZUf7DeUm/ os44nBSaJoNJJ/Si9hehLzS2C4uygcmFqjaeyXFiRSo9qVM6JNqx3nUlFhXkfrVa kfxThOpIgK0iYeJW7Gz3qyt1pT1/KK2FW9aoiqsM6ge+1vIEnYq0f2LY50vx0cnV 2+5om9UVGWQB6j5bSbtYgPq0ti6pdoVd9U/FisWNGQQorZPBtjEF3sKARXyYTKmw CqfKo3gpeJxFQwv0gzCDfUqmAPbiHstDIn4IXdOUuAf2HOvK0Tk0dF3MqeEUrXNx qphDfX+0EVSK7YVQm0Ok6ScSH5X53wzQSUdOiYnIEhGtGt/4zL0rGkwvcjg64Wlr K1WdurK6dRLVMUl45LguCaLe/kLtLh897WDUsoauDumft5UOJA0= =hbb4 -----END PGP SIGNATURE----- --Sig_/czZiEh3yIoLeq01A_wqV/KE-- From nobody Sat May 11 14:27:26 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=web.de ARC-Seal: i=1; a=rsa-sha256; t=1683573194; cv=none; d=zohomail.com; s=zohoarc; b=SFL3PVa5Lcqvn+GSn4AIub2xbboPEHmOd2urVw5Y8ZfQ9viVzAQpPcauX9XdUEOdRA47u292Ss3/7vPlWi9m1V3HiHZtFc3oa8z7bCEcIryObn2G298pRj8VwdVIcU3TMk/xk8Knviiqpwyn99DeRniZO5k0Ow60aIqKbK0xYP4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1683573194; h=Content-Type:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=te114PWwrDdrMvj5w6Gdw+JBfnvBoIh+vQwkRfwlAT0=; b=UV4Tl7ImdpnuQgcFgecR0fLZVDE/rMul5DW/fuukdRxuyD737kPdDglfFzmCikHImlsS0yLWhrxPvWM6AOjQgQ462GkVMPkt0/W2Vn501s7KKhLDDFjkjTmRZpx1f7xWqZe1xbp6YAK58AkSQjrXk50s7roy86/RCoA1U7xOBdA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=lukasstraub2@web.de; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1683573194019877.5051056980991; Mon, 8 May 2023 12:13:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pw6GZ-0007Ia-CN; Mon, 08 May 2023 15:11:23 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GX-0007I3-BI for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:21 -0400 Received: from mout.web.de ([212.227.15.14]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pw6GS-00045s-Ju for qemu-devel@nongnu.org; Mon, 08 May 2023 15:11:21 -0400 Received: from gecko.fritz.box ([82.207.254.98]) by smtp.web.de (mrweb006 [213.165.67.108]) with ESMTPSA (Nemesis) id 1MlsKF-1qeXts3Toh-00ihe4; Mon, 08 May 2023 21:11:11 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1683573072; i=lukasstraub2@web.de; bh=A+4cqBKUkLELvquPN55Hz1t4Aq7uehn7miNGhcLw8AM=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=JaagfLx+dhi3P4EFrTzTCzZ/3GP02J1ywngevFzIK/aPZyyQ+p1Zx371KGZyOVKcq SbCfPUNwXX+poz0VgMW9Y3EqD1qlrPoEFLrZvhQvaFyQkTgIsPzLQXo2AS6HOFUbyC NZ4xhBQil7lGPXFkyotVsp5PDSM+Jk4DMAiLA5Pnl9Z+vArzOyfC4bJCL7Z9r+EwF6 /79ou6SPPOp+QeRJXAY/vz434K2sS5k2crGAdxPCNP9+bGQW6yvc18ceuheAdemvvF 1JNHgLmBcEYFQcDkDhcOT1gQP7RHi9YlTd9mrPmxOJn9eGocK1JlhuLl+XHPFQUG3g xJdeRrkyEK0og== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Date: Mon, 8 May 2023 21:11:10 +0200 From: Lukas Straub To: qemu-devel Cc: Juan Quintela , Peter Xu , Leonardo Bras Subject: [PATCH v2 6/6] multifd: Add colo support Message-ID: In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/9ndu9.uhWeGrNAt+3=/4YVC"; protocol="application/pgp-signature"; micalg=pgp-sha256 X-Provags-ID: V03:K1:Gr0zXIk2hmORKG6JrlenkUOIlyHVLlag+e350nwznqhB3Klxxz9 9Xv7v0ONf+pDH5xd8HoMUbsDAbR2kDmZwTjSIvBHofXxJMGauEhyIDUvQz0qV7KH4Zl4pvp dl574WeOtxmnBcHWuhbA9/tbYfkPudWB7h5/AlJNnVpVAcyf69MohWsx0NEbtnD9a8jRVBk U6qpJLtWauX087FJyyp+A== UI-OutboundReport: notjunk:1;M01:P0:MB0m002iubo=;qWENqjIyDLqaZKYrRoqqtWau0NQ kB/pVa4dpo7Iluk9z4mbuanCmekQMn28tbDixmIncVHYGH7ZAYwMXWm3kF8MlL6hFfqHPtXFR wCO7QAzxTI1z/tZ8mmmTUvwXHEZzABynZO2Jj91G2Zueb4gA829etxwr6B54HuZ24k0J8kEuh 5P9tOwMV9EaqZLOr8VLQ7fpHG2JNlOkyJIKPaTjUogVDVsFCgnKOGZtUdGda0F3WziEuLH0aF nJJ+m00Xpepor9Nx4qhTthawbLpLyyMYxhYVA58Jq6iaAnHRPi+NtObNC3JZjY2G7d6LPribp y3VzU9dsZnXph0ggmRQEW3YR3KCcKgixg7IKE5qknEyzgElosAKa8t0r1j6xqaMCxYnEEGE8/ bT184yW0b+8qfWAELT3/F+87iBefaY0TSlbcWfO2Iz2A9KYQe4aFJrRqQQEOE2j1yb/VP6lpB nLN955wO/L3Q8oNvUB8SkmtfWEW5NATbG0dmCiSJhaJ/E+V6GVRYfe8SV3JeFqLKWfFry8uiX dANs3P1jbIBSsEsvd/0E7aozxoWCP3mdgs/bBPWAYUDwybErXlS0H461UhzJs0xOBzFoEjqMK DxbNZpwQ/iRKrAMF6KWKuTabRJLFVxdPN5X87tXEobltQvHY2Xgxt4BxvDU64p17P5athBSKm GJANpI/uYtHQ3+3XAmwPA3xRtL7sLgtcKDFIAH62s3ueKNeJBzXBTQpbqyiKRHHVYvH5yD21K f5OGDwPGAP8LF2KbwT1BI/iPdyXG8G536Eu7LlRHiD+S0maOA9Dtsa3ZTLTZWmEaDB5L6WJ2U 96tngDwqlK7RFrNxaQVSq8TPFrwMU8NDSCBY3eJAoYB4KW6AR//Ow3ZWxlrjJPnklk2bA8Qvn DJshN6j9FKNgG19ks+TR7enq1WOr4Pm5EvTwgWi/4cTBZiICENJftMugmOaxrZrLmborgQ//C EEWLiJRJv5n+KxPe7TTjK3u9BKY= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=212.227.15.14; envelope-from=lukasstraub2@web.de; helo=mout.web.de X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-Zoho-Virus-Status: 1 X-ZohoMail-DKIM: pass (identity lukasstraub2@web.de) X-ZM-MESSAGEID: 1683573194522100001 --Sig_/9ndu9.uhWeGrNAt+3=/4YVC Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Like in the normal ram_load() path, put the received pages into the colo cache and mark the pages in the bitmap so that they will be flushed to the guest later. Signed-off-by: Lukas Straub --- migration/multifd-colo.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/migration/multifd-colo.c b/migration/multifd-colo.c index c035d15e87..305a1b7000 100644 --- a/migration/multifd-colo.c +++ b/migration/multifd-colo.c @@ -15,13 +15,41 @@ #include "ram.h" #include "multifd.h" #include "io/channel-socket.h" +#include "migration/colo.h" =20 #define MULTIFD_INTERNAL #include "multifd-internal.h" =20 static int multifd_colo_recv_pages(MultiFDRecvParams *p, Error **errp) { - return multifd_recv_state->ops->recv_pages(p, errp); + int ret =3D 0; + + /* + * While we're still in precopy mode, we copy received pages to both g= uest + * and cache. No need to set dirty bits, since guest and cache memory = are + * in sync. + */ + if (migration_incoming_in_colo_state()) { + colo_record_bitmap(p->block, p->normal, p->normal_num); + } + + p->host =3D p->block->colo_cache; + ret =3D multifd_recv_state->ops->recv_pages(p, errp); + if (ret !=3D 0) { + p->host =3D p->block->host; + return ret; + } + + if (!migration_incoming_in_colo_state()) { + for (int i =3D 0; i < p->normal_num; i++) { + void *guest =3D p->block->host + p->normal[i]; + void *cache =3D p->host + p->normal[i]; + memcpy(guest, cache, p->page_size); + } + } + + p->host =3D p->block->host; + return ret; } =20 int multifd_colo_load_setup(Error **errp) --=20 2.39.2 --Sig_/9ndu9.uhWeGrNAt+3=/4YVC Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEEg/qxWKDZuPtyYo+kNasLKJxdslgFAmRZSU4ACgkQNasLKJxd sliiWw/+P92gOXbzjwQciSQve/mzaknYtnY66AGqJLAf02JWMafBDw2oR2mYRLtj FDRVFetVcSlgvyYOFTPrAX/aCXnjgjhNPtfX+mstCTBb4fUotKFQbNQLdhFpnGyr 8K4lipSyIaFR6NYWlKDEjrjD37irIJiclksOBNZASTFlcovCH1xUbhJrxCbDZPEv tUNvRCEFNQukqs6++jvzkQjCzke3mhoonHEoactRMLhHRKFktPAzkoxfUDzRCaSa /5x+AMkCwkwBCqfMZn+2j2nUyWgOy5NQZul2NxJGXmJb2faIi69kOlbJByf2Kmz/ YOYKY2n7cnFfuddu4MtqLOh0kUsOvvL1AOG1kSP1EFeRUDfaQfaR8feY6/NFEBYN RbOdRO1U3CiuW9sZ/9c3vi9WTj6bk9fFrgz4UmPOKDeJTEOCFZOanoKzOp/Nq0Sv w/nOreZ/IbtZFIbOswIWd4vLFFd6SU/VXsrWhDvE+fBQTd0keyiErx4x2tHHKBiv 7GVAz36Z/QvoiYOAXBSStgj/T4FkawaHrovw7wx4HTXVvBzQrmC0EWca7ypS7QiO fMDJ/btxySJ+/LQyG/WFXC3d6BTvqSGrxvQJ8p66fQRDdCAY+cr102fryLsp3Jre NpC+cSoN6x2CML4l4ZfnfjNbgRBHKeI+eiYgFc2EsGJwDapzEdU= =34q1 -----END PGP SIGNATURE----- --Sig_/9ndu9.uhWeGrNAt+3=/4YVC--