From nobody Fri May 17 09:01:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; 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; arc=pass (i=1 dmarc=pass fromdomain=intel.com); dmarc=pass(p=none dis=none) header.from=intel.com ARC-Seal: i=2; a=rsa-sha256; t=1712247984; cv=pass; d=zohomail.com; s=zohoarc; b=nuE4d6WbWAgV6CJoUixTcYaR2ybpKq/mBRog4G5p8BEXE2gx1R8BIYyunO4Vth7vWepYQtECgVI6kx8uuX9Gx2piIVtJSt7bmhzfLARf83dGCi2HDUNkfTdCL9Q1DS1Qft4TnLXY9yOpj1GafrN9AQ4U5CieO+PAbFZIWVuOBBk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1712247984; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=G46pofK+y2DaYRLOyQ7j28NSTmyKrbx4hCJOYdhVBpM=; b=ge5dabue4PnHxedjUobCDQu2BlPCp9eqEQulrHiA9/tSX7ctNk8nxVXQpmFh67pNg1Zb3ilF4Osit3RVW08mVciIbXLhr3wak0rOxMUpp2ANAS4Gu4jIyOKxTOKbPg78uslTelGgJka/oKt745YykBfS6vjcmm5kNrjC8En6INU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass header.i=@intel.com; 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; arc=pass (i=1 dmarc=pass fromdomain=intel.com); 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 171224798465387.92678548927688; Thu, 4 Apr 2024 09:26:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rsPu3-0002Rv-AI; Thu, 04 Apr 2024 12:25:27 -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 1rsPu1-0002Qg-Ne for qemu-devel@nongnu.org; Thu, 04 Apr 2024 12:25:25 -0400 Received: from mgamail.intel.com ([192.198.163.9]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rsPty-00069r-NG for qemu-devel@nongnu.org; Thu, 04 Apr 2024 12:25:25 -0400 Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Apr 2024 09:25:19 -0700 Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by fmviesa008.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 04 Apr 2024 09:25:18 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 4 Apr 2024 09:25:18 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 4 Apr 2024 09:25:17 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 4 Apr 2024 09:25:17 -0700 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.40) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 4 Apr 2024 09:25:15 -0700 Received: from DS0PR11MB6373.namprd11.prod.outlook.com (2603:10b6:8:cb::20) by CH3PR11MB8239.namprd11.prod.outlook.com (2603:10b6:610:156::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Thu, 4 Apr 2024 16:25:13 +0000 Received: from DS0PR11MB6373.namprd11.prod.outlook.com ([fe80::55de:b95:2c83:7e6c]) by DS0PR11MB6373.namprd11.prod.outlook.com ([fe80::55de:b95:2c83:7e6c%7]) with mapi id 15.20.7452.019; Thu, 4 Apr 2024 16:25:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1712247923; x=1743783923; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=G46pofK+y2DaYRLOyQ7j28NSTmyKrbx4hCJOYdhVBpM=; b=gUrN7QXlO+3U5DeFBjBAOcFDK1EQJya2kzwfQOJeYoM30ww8Pqc6cvNw 248bbgnUrYTPLLHOHKym3sJjyUHkGHSKTAe6s4AWUJiEWYKA2z7SNMaX2 dYb2MDaGiV3JS/dAjv/VOLHLl0Fval+g0aBp5ahCUzDFAYUKYbgkIMVno ZKNPft12ma3OTAPHIxNvt9sdSOL79OFhN3TEd2VGRuiRSUEkppswgTBhH n+5rtA38pxUeP5JWTFtOgXdTqISS5YApj1d/jnG1uxbnnsgmc9VW+tq5x WDWSUaW8aJYYf1MPB61TvD8+cVXg7aJiTaoNaAG0uO6extzNPYbvYK6Q5 Q==; X-CSE-ConnectionGUID: W3kjhipZSralfLi0K4XwRQ== X-CSE-MsgGUID: M2KpMjXoTyijW7ADBfOcjg== X-IronPort-AV: E=McAfee;i="6600,9927,11034"; a="18281648" X-IronPort-AV: E=Sophos;i="6.07,179,1708416000"; d="scan'208";a="18281648" X-CSE-ConnectionGUID: OxeSITyhRVGL6f7cws5YTQ== X-CSE-MsgGUID: pbMbT0m6TsOMMgh56BXC3w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,179,1708416000"; d="scan'208";a="18942704" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PQaTxiL+vcfzs3IqVnrPoPlpJq/kU1wXPqnvY3PFWlOsEFYdV54WIHvS8YAvun+nXcphPm3u2rPgifnMawKsuWrk2whXSaUEeVVSPICyLQuieHjIGc4+gXvQWJltZMUZhjLETMXTzzsHxEImCVhBvK3nZDsG3fEmp/uVIGyqpAZzzhnuPxyUfTTwHiPHIeFwW9ToqJNr8chYRUGWjkN1bufYV8MmuBcxsECvJcIKbrf7BuDB34uunaZKKZMQN/KJk22PD6W5W9PmMnlcyFAIletb/HAVVwFtiE1VyC1XZVMfOrAiWnX8Im6avt6cwG6WxyPF2e9PloP3J49+Q/4vwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=G46pofK+y2DaYRLOyQ7j28NSTmyKrbx4hCJOYdhVBpM=; b=NGHuVa+77PRe16TT7iXZaJE1mQdN6F+ekT8eRyWZghSF9OCK2xz6FA3ZeZQO+W5d2t3bPmPMKGRWUM9SXz98TDhJjdW+xawyQTp1XfMLcWgFl8huSP7u6wzySFO9RsqHo3FcVn8mdwHKyXQyGemutPWw3Cz6Gz35T6QX+HlJzrlwxkqxGa1Zlkc25uPUbQYOHYX9+wt/cRZWtaQXbkr/yUds2LW86Z/pVgcyOiXhuwRX3WDRJDIqrqUmiz5g32pBspZLB+uM49a+pNpaHcTl3WUZYgHI/+y09AMGZycS4Oz4fZAzXCiLpWlUv19QuCjFlQa+UmNTnyDkZ3I6qQin1A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none From: "Wang, Wei W" To: Peter Xu CC: "Wang, Lei4" , "farosas@suse.de" , "qemu-devel@nongnu.org" Subject: RE: [PATCH v1] migration/postcopy: ensure preempt channel is ready before loading states Thread-Topic: [PATCH v1] migration/postcopy: ensure preempt channel is ready before loading states Thread-Index: AQHahne59xUzBSmQ9kKgviWy8nsalrFYJxAAgAAU2RA= Date: Thu, 4 Apr 2024 16:25:13 +0000 Message-ID: References: <20240404100550.17777-1-wei.w.wang@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS0PR11MB6373:EE_|CH3PR11MB8239:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Yj4lLaG49/mB3BOo28LuRF5b4HixRCxRr1QF6po27NT2dqBI7bpMrpkuUVxASFmFXtqBuvFXolTAmBcMzUd6/Lra5n/Vz6vhjOwBpDODG52UfFMWBg53zvrMzSQ7tnqCjNugcTqNvZsLmBOAkG1qnWUqdpp2hJe6uEVgjXalMMPeJVJFUTy2xbm8hx9bNUp21QspU0LAEqLBzG2Tsx744IhGJWB5yhLUW766dD9TXtxkP0NpkZPpkJTleVd3MnVye1oz5YFD06S9TI1BPUIIvGxMJm6UHcknr2cdyxi+IZtFIqb0VRnmEI1oYhSTmwIJBLf4pqPPPjuB/rCLyOArg6HzPumFLiguHnal8m7GWvypsVX1dNNUKsXj8p15xyMVm2pisnarWt6fjx3JnXe7hH16NjHxv6T+AW+Hy+RSzFbW8y4Ro4WI0E8Da9VsF+ioMGXSRfilA9pn+xcQx9LOHVvdSfjpyG7jnCgy64wwIea1q4kt1f7BMgRoSaPbGalIQtIJKFYrqjXADSlkIg6/48xW/e7LRJcbDaHrMkDwkFq8wUw4DtYHDp/ToC5FO1XLmc9mboLDUVwkm/f2DZbQEaiw+izQVfeSgKnZJMyEiHI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB6373.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?K1hJbTAwc3ZsMktRQ3NFYWQ3MUZtZmhaRjFvUWNhMHZBMTdqQnRBeXhpRU1u?= =?utf-8?B?NlRoNEtpajFSWEFLOS9jeWJlYXpxYmtMVmlJa0ExWklhQ0Y4QS8zcHlIQnY0?= =?utf-8?B?Q2pIMklwbWF6dk01NzA3RkdQbGwraVAyclRvSXo4VHovZXhkN2pCemhzWUpq?= =?utf-8?B?ckdTQXpGVnA4a1V1RjMxbDdPSGhSVnpyNFZncVJnZjZJU3duNEhqKzZhbFo2?= =?utf-8?B?L3ZMbXpjcEo5WFVOVGtQQTkxZ01aY2FDc1Zhdm0xRWVISWFFOXFZL0EvUVhv?= =?utf-8?B?SFVITUc4UHhsbDF0MkVqa3k0NkZzTEdiN1AzcmVDcDVRNDhUTmkrNDBvYlla?= =?utf-8?B?ZkoraUhCdlpBUXJnN2h1dWZaVDRKZEVxdUNaWW9ZYWdHQUhaVzBIUVpMbmFp?= =?utf-8?B?MGtQc3ZvR3B4c3c0bU5QSzJmaEJuRXhIa2s2OWxoUUhVVm5JQXQyd01IY21n?= =?utf-8?B?eHc5NTVmamJ6Q0VPQUd1TmJ0QmJua3lEVExzMERjWGNLbEo2eDNGaC9wSWNH?= =?utf-8?B?aGxoZVd3QTBqSC9PL1dBOWxaMVhsMHBUczU0Kys1a0hJeCtza2NkT1BvRERa?= =?utf-8?B?ajhYQWdBN3ZnVGxDOWdZOGdpUE5NdGRrbEpTZGcyMmd5RnlhNnlXTVJ6eWVj?= =?utf-8?B?NFh2ZElibEE5cHdXTENJNjY3U05BekgvWkp4em9ScWNLVzk2TlBJbThPN2g1?= =?utf-8?B?ck1vV2RRUFo2NEFWSGV0aUpjRk5tNW9GTHd2Y0o1NkxHZWRmMXdWZDJSVita?= =?utf-8?B?cTQ3NWVXb3dtUzRLdktubGVDMWJsMEVNNnlaYXVaZVNYeEZpVHdEcncyakdi?= =?utf-8?B?dnFLRUlwNEFhRDFNNnZadmFWdlo3YjhQZkl6U2lvTGhTTXlYczZudEtWWUE0?= =?utf-8?B?cEw2eTdxK2lOdXZ5cU9EQzlDaHJxNTYwSC9vVHhmZUFjWTBsK1U0TkpLakxv?= =?utf-8?B?TnJQWVo5ZTZoRXNwRTFrc1dWS2lYQnAza3NPbTFjQTRZckljWjROb0NOc05j?= =?utf-8?B?RWxDMGJlTktxWXdNcFRRbGZSTWhvSG12VU5iRHVTRUV6d3gyNWtLdGNqZm5m?= =?utf-8?B?c014cnliZ2NTUW95MUg1UVJIbE9kZWN4Y25iMGFjaGgzMHduVHRvTU84eTNa?= =?utf-8?B?ZmVrbUVpbXU0WElTMUI0WGtaWWlsZ3JmamoyWUdzdTg0ZWUxNkovTDF5K0Fw?= =?utf-8?B?WG42c2s3c3NxNHRiMnJ3V2RlQkxjT2w2QitHekdQclZpNmhhR0VEdmdRK3E3?= =?utf-8?B?QkYxV1BXaEphanBCVlh2QmMvblkvVVB1TjhiM1U3SWx4MVZNRlMxRGtKcTZG?= =?utf-8?B?UVp3b25OSjZJdE5pVWxaaWZCVHArRWpsL1YrVVhUUXRDV00wSklrQXVEYVhW?= =?utf-8?B?RGV1YXFzU3BzREMrOHhZWXorS1pPeHMzcmthWjJoUFliRCtJOEk5eFFHdWoz?= =?utf-8?B?K0VFcFZhQmFVNkNTSzcvblhFMDFJTXZmSU9Tb2pPNlZKaEZzeER0S0Vrb0JM?= =?utf-8?B?dUIrUHZNRElJbmJBNlB3ZWh2L2lobWtzb0ZVa3U4NitJMEE1aGZiYnI3ajR5?= =?utf-8?B?RzFCSVFBSTdYWUdNdzVtWGdmVU1mV3luL21aVHZKZlBHSnFvREVXc2g1OGNF?= =?utf-8?B?U25DN0NLei9rVGNOSkVuVFMyOFdKSDRGUXhMUG1mcVpZekhEZnh0TjlUVDFw?= =?utf-8?B?eHVJTU51ZkRuL3VwS2ZvanBBRWR6WGJYVDRlME03SkdPN3oyWU12cC9qTENy?= =?utf-8?B?SWdYTER0TkVBUnhYRWYwMnRRRDZKSGxWT1JpUkdwZnVOaVZKVXpQajNhVUo0?= =?utf-8?B?K2ltMTVCdVR0VTVzT3F5TVhNRFJrSnNiV3V1TnV4Q1M5U2gwZFErc1l0dDU5?= =?utf-8?B?TGtCNERCOGFPdmI3blR6T2lmZHRQZXRLR0VmOHI2RElSM1hCNWpxdDkxY0Nw?= =?utf-8?B?NTM2RzhzVnVrL0YyYkVlRllnUE5rV2JqRmRaWFlybHhQUmZWTU9rWlZJZGdB?= =?utf-8?B?MEZwLzBndGs4dzliczMxTDV6SG5qdlZPRU53c2JzbDlQVHNlb2k3YUlwaWhE?= =?utf-8?B?RHFsU1cxczJzdVZNRVZ5cjJYRlNZTkpZVU1FZUlSYWUxbmFGQnZ5OSszOHFB?= =?utf-8?Q?UjNVQCTpO+dUzuwlFfsMgfePQ?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB6373.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb3ab510-59e2-405a-ca35-08dc54c3ce28 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Apr 2024 16:25:13.3771 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4X/+9abwYz2Jzf5+cfO+o8lOgbkqVHSKidSG8LAKsBSpUtgVlv7sFgj8ODT2iBYRzU4OtCK/UFbtKxkDwbDD/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB8239 X-OriginatorOrg: intel.com 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=192.198.163.9; envelope-from=wei.w.wang@intel.com; helo=mgamail.intel.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, 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 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-ZohoMail-DKIM: pass (identity @intel.com) X-ZM-MESSAGEID: 1712247985337100001 On Thursday, April 4, 2024 10:12 PM, Peter Xu wrote: > On Thu, Apr 04, 2024 at 06:05:50PM +0800, Wei Wang wrote: > > Before loading the guest states, ensure that the preempt channel has > > been ready to use, as some of the states (e.g. via virtio_load) might > > trigger page faults that will be handled through the preempt channel. > > So yield to the main thread in the case that the channel create event > > has been dispatched. > > > > Originally-by: Lei Wang > > Link: > > https://lore.kernel.org/all/9aa5d1be-7801-40dd-83fd-f7e041ced249@intel > > .com/T/ > > Suggested-by: Peter Xu > > Signed-off-by: Lei Wang > > Signed-off-by: Wei Wang > > --- > > migration/savevm.c | 17 +++++++++++++++++ > > 1 file changed, 17 insertions(+) > > > > diff --git a/migration/savevm.c b/migration/savevm.c index > > 388d7af7cd..fbc9f2bdd4 100644 > > --- a/migration/savevm.c > > +++ b/migration/savevm.c > > @@ -2342,6 +2342,23 @@ static int > > loadvm_handle_cmd_packaged(MigrationIncomingState *mis) > > > > QEMUFile *packf =3D qemu_file_new_input(QIO_CHANNEL(bioc)); > > > > + /* > > + * Before loading the guest states, ensure that the preempt channe= l has > > + * been ready to use, as some of the states (e.g. via virtio_load)= might > > + * trigger page faults that will be handled through the preempt ch= annel. > > + * So yield to the main thread in the case that the channel create= event > > + * has been dispatched. > > + */ > > + do { > > + if (!migrate_postcopy_preempt() || !qemu_in_coroutine() || > > + mis->postcopy_qemufile_dst) { > > + break; > > + } > > + > > + aio_co_schedule(qemu_get_current_aio_context(), > qemu_coroutine_self()); > > + qemu_coroutine_yield(); > > + } while (!qemu_sem_timedwait(&mis->postcopy_qemufile_dst_done, > > + 1)); >=20 > I think we need s/!// here, so the same mistake I made? I think we need = to > rework the retval of qemu_sem_timedwait() at some point later.. No. qemu_sem_timedwait returns false when timeout, which means sem isn=E2= =80=99t posted yet. So it needs to go back to the loop. (the patch was tested) >=20 > Besides, this patch kept the sem_wait() in postcopy_preempt_thread() so it > will wait() on this sem again. If this qemu_sem_timedwait() accidentally > consumed the sem count then I think the other thread can hang forever? I can get the issue you mentioned, and seems better to be placed before the= creation of the preempt thread. Then we probably don=E2=80=99t need to wait_sem in the = preempt thread, as the channel is guaranteed to be ready when it runs? Update will be: diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c index eccff499cb..5a70ce4f23 100644 --- a/migration/postcopy-ram.c +++ b/migration/postcopy-ram.c @@ -1254,6 +1254,15 @@ int postcopy_ram_incoming_setup(MigrationIncomingSta= te *mis) } if (migrate_postcopy_preempt()) { + do { + if (!migrate_postcopy_preempt() || !qemu_in_coroutine() || + mis->postcopy_qemufile_dst) { + break; + } + aio_co_schedule(qemu_get_current_aio_context(), qemu_coroutine= _self()); + qemu_coroutine_yield(); + } while (!qemu_sem_timedwait(&mis->postcopy_qemufile_dst_done, 1)); + /* * This thread needs to be created after the temp pages because * it'll fetch RAM_CHANNEL_POSTCOPY PostcopyTmpPage immediately. @@ -1743,12 +1752,6 @@ void *postcopy_preempt_thread(void *opaque) qemu_sem_post(&mis->thread_sync_sem); - /* - * The preempt channel is established in asynchronous way. Wait - * for its completion. - */ - qemu_sem_wait(&mis->postcopy_qemufile_dst_done);