From nobody Mon Feb 9 08:56:51 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; 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=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1655931237; cv=none; d=zohomail.com; s=zohoarc; b=B6jr8nYXpg71aqARVYhKeZek75RSIolrZA8Fd1X4i7k3B+UnBH4/MJUHAeRMOSxxd0x4UHDvq6dNK69PrEwCCpsKxLi6kH1709cPAJJfTZTLK7mqOUjl48uZMG30cqA89fu1wmh3tfEuwJdVLhdJZ+1ItyA20IXA4p0HpEHHRRo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1655931237; h=Content-Type:Content-Transfer-Encoding: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=3btWgwqdjZi9Z7WYTcj4UpiN3YkzVWNlwPq6/1+kKWg=; b=X+uWd3sUOwkeXwtQCR35UO+HTVc5KO1DoIkQazuC8rfAkVLQXik5Aj1gAf+ki5gU9Tz61qKTQw1Ni4zrn3Xa32TmHH2EOFmKDIEeUL/TiOUDOSOSymi2bQNCXX9k4kU6hpk4KUqyt43vqtXm1DGcupsjtFWeybsMpst992ki1fA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; 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 1655931237432305.35629442959896; Wed, 22 Jun 2022 13:53:57 -0700 (PDT) Received: from localhost ([::1]:54962 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o47MJ-0002Er-Q7 for importer@patchew.org; Wed, 22 Jun 2022 16:53:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:49226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o47IJ-0002iq-3r for qemu-devel@nongnu.org; Wed, 22 Jun 2022 16:49:47 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]:49929) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o47IH-0004Hg-Ht for qemu-devel@nongnu.org; Wed, 22 Jun 2022 16:49:46 -0400 Received: from mail-io1-f70.google.com (mail-io1-f70.google.com [209.85.166.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-327-BHpkWfhXOkeDw2zYupgAAA-1; Wed, 22 Jun 2022 16:49:43 -0400 Received: by mail-io1-f70.google.com with SMTP id n20-20020a6b7214000000b00669cae33d00so9773789ioc.17 for ; Wed, 22 Jun 2022 13:49:43 -0700 (PDT) Received: from localhost.localdomain (cpec09435e3e0ee-cmc09435e3e0ec.cpe.net.cable.rogers.com. [99.241.198.116]) by smtp.gmail.com with ESMTPSA id b44-20020a0295af000000b0032b3a7817a7sm8920323jai.107.2022.06.22.13.49.39 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Wed, 22 Jun 2022 13:49:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1655930985; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3btWgwqdjZi9Z7WYTcj4UpiN3YkzVWNlwPq6/1+kKWg=; b=A3IxJ4lVpEnLDDaNsmAPAJ4dUEi5hgiDkRdSqUpWapVQMfIf69fx9P55JKvH+Ck3ZWFntw fG5yBy2of9W4ZDNxOEF29tQQB973hM8kvIn5OmTgu2F9khgZT+H61VPOpmlE812yniSh7R R7as3afWgFG5U5FYY6FIdVhlMEmi++M= X-MC-Unique: BHpkWfhXOkeDw2zYupgAAA-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3btWgwqdjZi9Z7WYTcj4UpiN3YkzVWNlwPq6/1+kKWg=; b=GiFrAr8g5pYMddG+YQH7Kqt1MoRqb32uyvTCXlBsUKDmZpwwmyLQcCN5Hg45MhpsHB V3L3V3KXv/aqSOc9hM9x5d4dCZ+PLI1oyhPO88KpZzEH/7YQTIOineYllo7DESaqiJXr DUnf3Iku24+yuRKSaXF7w4bvVmuThFUBDZdVWnay8/qZzMsjYmHX542eNzhfAykV2B4w /5oVViMtS7LErzgimp9Avx5aBWfF0qJDX6QHJaM/OszW3GBfPnVwDuIWx0S1yewoByHJ djHVnRH6fAbfdoUblGIXi0k9AtrfbX9IBhqmRBpUxyG+auKtQhrBQZAUfukOubW2KsjA zzlw== X-Gm-Message-State: AJIora/xcbriK8AmaIhvEWvAZzcX+l919xCsca9DRc5+k2PqUA0zZcHd XGdi38kDosiDXlO4sOeL/yYyBtkdBramoJHetxF7lCR6jfN99K1FOAdIW+DCbz89I4InITG0JF4 PDcHz4M2eP5ibLESynmB2B7JlbUPP2hVJVsVtt6otU5tl8dX/pAlR1CUonrNzQc7m X-Received: by 2002:a05:6e02:1aa7:b0:2d3:dce1:400c with SMTP id l7-20020a056e021aa700b002d3dce1400cmr3128375ilv.94.1655930982641; Wed, 22 Jun 2022 13:49:42 -0700 (PDT) X-Google-Smtp-Source: AGRyM1s5lfyQUw92SD1KbTgfl+niAM+ywsToUfUNmgCthH/Cda1zGAqo22ILsqlXSMbyRbQUSf7xYg== X-Received: by 2002:a05:6e02:1aa7:b0:2d3:dce1:400c with SMTP id l7-20020a056e021aa700b002d3dce1400cmr3128358ilv.94.1655930982352; Wed, 22 Jun 2022 13:49:42 -0700 (PDT) From: Peter Xu To: qemu-devel@nongnu.org Cc: "Daniel P . Berrange" , peterx@redhat.com, Leonardo Bras Soares Passos , Manish Mishra , "Dr . David Alan Gilbert" , Juan Quintela Subject: [PATCH v8 07/15] migration: Add property x-postcopy-preempt-break-huge Date: Wed, 22 Jun 2022 16:49:12 -0400 Message-Id: <20220622204920.79061-8-peterx@redhat.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220622204920.79061-1-peterx@redhat.com> References: <20220622204920.79061-1-peterx@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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=170.10.129.124; envelope-from=peterx@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -28 X-Spam_score: -2.9 X-Spam_bar: -- X-Spam_report: (-2.9 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, 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" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1655931238608100001 Content-Type: text/plain; charset="utf-8" Add a property field that can conditionally disable the "break sending huge page" behavior in postcopy preemption. By default it's enabled. It should only be used for debugging purposes, and we should never remove the "x-" prefix. Reviewed-by: Dr. David Alan Gilbert Reviewed-by: Manish Mishra Signed-off-by: Peter Xu --- migration/migration.c | 2 ++ migration/migration.h | 7 +++++++ migration/ram.c | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index 5d113bd5cc..e10f0400ef 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -4362,6 +4362,8 @@ static Property migration_properties[] =3D { DEFINE_PROP_SIZE("announce-step", MigrationState, parameters.announce_step, DEFAULT_MIGRATE_ANNOUNCE_STEP), + DEFINE_PROP_BOOL("x-postcopy-preempt-break-huge", MigrationState, + postcopy_preempt_break_huge, true), =20 /* Migration capabilities */ DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE), diff --git a/migration/migration.h b/migration/migration.h index ae4ffd3454..cdad8aceaa 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -340,6 +340,13 @@ struct MigrationState { bool send_configuration; /* Whether we send section footer during migration */ bool send_section_footer; + /* + * Whether we allow break sending huge pages when postcopy preempt is + * enabled. When disabled, we won't interrupt precopy within sending a + * host huge page, which is the old behavior of vanilla postcopy. + * NOTE: this parameter is ignored if postcopy preempt is not enabled. + */ + bool postcopy_preempt_break_huge; =20 /* Needed by postcopy-pause state */ QemuSemaphore postcopy_pause_sem; diff --git a/migration/ram.c b/migration/ram.c index 65b08c4edb..7cbe9c310d 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2266,11 +2266,18 @@ static int ram_save_target_page(RAMState *rs, PageS= earchStatus *pss) =20 static bool postcopy_needs_preempt(RAMState *rs, PageSearchStatus *pss) { + MigrationState *ms =3D migrate_get_current(); + /* Not enabled eager preempt? Then never do that. */ if (!migrate_postcopy_preempt()) { return false; } =20 + /* If the user explicitly disabled breaking of huge page, skip */ + if (!ms->postcopy_preempt_break_huge) { + return false; + } + /* If the ramblock we're sending is a small page? Never bother. */ if (qemu_ram_pagesize(pss->block) =3D=3D TARGET_PAGE_SIZE) { return false; --=20 2.32.0