From nobody Sat May 4 21:54:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linux.intel.com ARC-Seal: i=1; a=rsa-sha256; t=1565052513; cv=none; d=zoho.com; s=zohoarc; b=c4IA7BhphMhb+CGrmTDSaFyBtVS2afTx9ON0T0CYSYCpCS7oxb2KCOGbIK4PIw5WJl7YelXasnUGLRbCyrYcQR9U/SoTJaHoXuBuilUZzW7IbuVIcT8C1xsU8Ri776qH0wgmqJ/WRjlVKD/Q3SSCjuKHVQ79LKyg51xxqQFicJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565052513; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=ppOgW0LF4zdBePM3bnbV4l47OSiruK/fhuJg+Snr7Ds=; b=btuwL9N1yCiB1T9z2bNXz7IRVSsG8sClZoL5Unwo7Oj26YW5+eSo3Lx96CIsQLkVXszgxl6lJE5BlpSuY6YTqmH2vl5JMtruf1SKNOxqymNJjVG/aI7vSDzd3mfAF8N9ppx7xayfsxcG3eKptO8eDfSQTLtBWwaikjxrg0RoOt4= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565052513224462.07979926803785; Mon, 5 Aug 2019 17:48:33 -0700 (PDT) Received: from localhost ([::1]:57874 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1huneH-0000QS-Iu for importer@patchew.org; Mon, 05 Aug 2019 20:48:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39758) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hundM-0007wJ-K6 for qemu-devel@nongnu.org; Mon, 05 Aug 2019 20:47:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hundL-0002KL-KC for qemu-devel@nongnu.org; Mon, 05 Aug 2019 20:47:24 -0400 Received: from mga03.intel.com ([134.134.136.65]:38671) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hundL-0002Jy-Cw for qemu-devel@nongnu.org; Mon, 05 Aug 2019 20:47:23 -0400 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Aug 2019 17:47:22 -0700 Received: from richard.sh.intel.com (HELO localhost) ([10.239.159.54]) by fmsmga002.fm.intel.com with ESMTP; 05 Aug 2019 17:47:21 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,350,1559545200"; d="scan'208";a="202637806" From: Wei Yang To: qemu-devel@nongnu.org Date: Tue, 6 Aug 2019 08:46:47 +0800 Message-Id: <20190806004648.8659-2-richardw.yang@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190806004648.8659-1-richardw.yang@linux.intel.com> References: <20190806004648.8659-1-richardw.yang@linux.intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 134.134.136.65 Subject: [Qemu-devel] [PATCH 1/2] migration/postcopy: simplify calculation of run_start and fixup_start_addr X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Wei Yang , dgilbert@redhat.com, quintela@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The purpose of the calculation is to find a HostPage which is partially dirty. * fixup_start_addr points to the start of the HostPage to discard * run_start points to the next HostPage to check While in the middle stage, there would two cases for run_start: * aligned with HostPage means this is not partially dirty * not aligned means this is partially dirty When it is aligned, no work and calculation is necessary. run_start already points to the start of next HostPage and is ready to continue. When it is not aligned, the calculation could be simplified with: * fixup_start_addr =3D QEMU_ALIGN_DOWN(run_start, host_ratio) * run_start =3D QEMU_ALIGN_UP(run_start, host_ratio) By doing so, run_start always points to the next HostPage to check. fixup_start_addr always points to the HostPage to discard. Signed-off-by: Wei Yang Reviewed-by: Dr. David Alan Gilbert --- migration/ram.c | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index c9585487ac..d86661a015 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2956,7 +2956,6 @@ static void postcopy_chunk_hostpages_pass(MigrationSt= ate *ms, bool unsent_pass, } =20 while (run_start < pages) { - unsigned long fixup_start_addr; unsigned long host_offset; =20 /* @@ -2964,45 +2963,26 @@ static void postcopy_chunk_hostpages_pass(Migration= State *ms, bool unsent_pass, * page, then we need to fixup this host page. */ host_offset =3D run_start % host_ratio; - if (host_offset) { - fixup_start_addr =3D run_start - host_offset; - /* - * This host page has gone, the next loop iteration starts - * from after the fixup - */ - run_start =3D fixup_start_addr + host_ratio; - } else { + if (!host_offset) { /* Find the end of this run */ - unsigned long run_end; if (unsent_pass) { - run_end =3D find_next_bit(unsentmap, pages, run_start + 1); + run_start =3D find_next_bit(unsentmap, pages, run_start + = 1); } else { - run_end =3D find_next_zero_bit(bitmap, pages, run_start + = 1); + run_start =3D find_next_zero_bit(bitmap, pages, run_start = + 1); } /* * If the end isn't at the start of a host page, then the * run doesn't finish at the end of a host page * and we need to discard. */ - host_offset =3D run_end % host_ratio; - if (host_offset) { - fixup_start_addr =3D run_end - host_offset; - /* - * This host page has gone, the next loop iteration starts - * from after the fixup - */ - run_start =3D fixup_start_addr + host_ratio; - } else { - /* - * No discards on this iteration, next loop starts from - * next sent/dirty page - */ - run_start =3D run_end + 1; - } + host_offset =3D run_start % host_ratio; } =20 if (host_offset) { unsigned long page; + unsigned long fixup_start_addr =3D QEMU_ALIGN_DOWN(run_start, + host_ratio); + run_start =3D QEMU_ALIGN_UP(run_start, host_ratio); =20 /* Tell the destination to discard this page */ if (unsent_pass || !test_bit(fixup_start_addr, unsentmap)) { --=20 2.17.1 From nobody Sat May 4 21:54:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linux.intel.com ARC-Seal: i=1; a=rsa-sha256; t=1565052549; cv=none; d=zoho.com; s=zohoarc; b=M7ZW108KAVgKKXQVbf6RO2RHIMwyGLBwyj/1W87x6TuuiHaZheJfc+DyISnnLdYLhkrokVvNilfSv58f0j1lJFhUMAB46JmLyNKOFMwPjaa/v1hVq3uneTkpHpPK0BqVFzD9Row0Wvyf/rWMjtNOUERaMHAl3IsavWwuA7p5AMc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1565052549; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=iuNceiLkhagTKLQcgx0Tfe3Qnkryyyca31zwjcNCYDc=; b=mTrt8eE76/KPHLcPtelxD/apbf/h1N49CbxZarlty4N7it73TlX4yBzBGuz6cpLWs3r3XKs91RQYB0F3MDMHqv+W5Dmr7/NyzbwxMuTyaw1DwCRVhC6yP3PMicX1wlVmQ5kgWre5OumO0VuQIXJAE++kZyrBJJJglpZwm+Ti33g= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1565052549192950.5829904437159; Mon, 5 Aug 2019 17:49:09 -0700 (PDT) Received: from localhost ([::1]:57884 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hunf1-0001hJ-Ov for importer@patchew.org; Mon, 05 Aug 2019 20:49:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39775) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hundO-0007wU-Du for qemu-devel@nongnu.org; Mon, 05 Aug 2019 20:47:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hundN-0002LA-Ed for qemu-devel@nongnu.org; Mon, 05 Aug 2019 20:47:26 -0400 Received: from mga03.intel.com ([134.134.136.65]:38677) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hundM-0002Kk-Tw for qemu-devel@nongnu.org; Mon, 05 Aug 2019 20:47:25 -0400 Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Aug 2019 17:47:23 -0700 Received: from richard.sh.intel.com (HELO localhost) ([10.239.159.54]) by fmsmga002.fm.intel.com with ESMTP; 05 Aug 2019 17:47:23 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,350,1559545200"; d="scan'208";a="202637815" From: Wei Yang To: qemu-devel@nongnu.org Date: Tue, 6 Aug 2019 08:46:48 +0800 Message-Id: <20190806004648.8659-3-richardw.yang@linux.intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190806004648.8659-1-richardw.yang@linux.intel.com> References: <20190806004648.8659-1-richardw.yang@linux.intel.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 134.134.136.65 Subject: [Qemu-devel] [PATCH 2/2] migration/postcopy: use QEMU_IS_ALIGNED to replace host_offset X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Wei Yang , dgilbert@redhat.com, quintela@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Use QEMU_IS_ALIGNED for the check, it would be more consistent with other align calculations. Signed-off-by: Wei Yang Reviewed-by: Dr. David Alan Gilbert --- migration/ram.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/migration/ram.c b/migration/ram.c index d86661a015..dfbf71c580 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -2956,14 +2956,12 @@ static void postcopy_chunk_hostpages_pass(Migration= State *ms, bool unsent_pass, } =20 while (run_start < pages) { - unsigned long host_offset; =20 /* * If the start of this run of pages is in the middle of a host * page, then we need to fixup this host page. */ - host_offset =3D run_start % host_ratio; - if (!host_offset) { + if (QEMU_IS_ALIGNED(run_start, host_ratio)) { /* Find the end of this run */ if (unsent_pass) { run_start =3D find_next_bit(unsentmap, pages, run_start + = 1); @@ -2975,10 +2973,9 @@ static void postcopy_chunk_hostpages_pass(MigrationS= tate *ms, bool unsent_pass, * run doesn't finish at the end of a host page * and we need to discard. */ - host_offset =3D run_start % host_ratio; } =20 - if (host_offset) { + if (!QEMU_IS_ALIGNED(run_start, host_ratio)) { unsigned long page; unsigned long fixup_start_addr =3D QEMU_ALIGN_DOWN(run_start, host_ratio); --=20 2.17.1