Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1351615

[PATCH 7/9] KVM: MMU: coalesce more page zapping in mmu_sync_children

Path csiph.com!weretis.net!feeder4.news.weretis.net!newsfeed.CARNet.hr!news.spin.it!bofh.it!news.nic.it!robomod
From Paolo Bonzini <pbonzini@redhat.com>
Newsgroups linux.kernel
Subject [PATCH 7/9] KVM: MMU: coalesce more page zapping in mmu_sync_children
Date Mon, 07 Mar 2016 15:20:01 +0100
Message-ID <ra4aR-3TP-1@gated-at.bofh.it> (permalink)
References <ra4aR-3TP-3@gated-at.bofh.it>
X-Original-To linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=xd4795vHBK3rs2Y7rNU9lBjm1oMI38Jkv0rGFM0MsAA=; b=YF5+UIs/YLD3SRgUnGT4tWuSeTIlEIuUu7CufLVutDgkPnwb0VTOSHyR3vJXbAFPjd 8eP/UbrZ4Bou9jauru/+zV2CZuAqQjOKbVMwtqBR/7HVL6bzPRkHoQLKekqugr1u2N35 dNpp1R6tPE479YCP/MVykuy55UlCug+vZ6qFwl/W+EsOl6COZVEzhaNLYsSLedhLFy06 GO9fdm+WbAos2qGViKJESR8boUFRi3Uk/CD3TryxQqsOVCELsWi/K6bqJIL8ZTzFu4RX W2loDnGIEIzm7RjI/5qvhu+BdWmtB+0187+gziP1RG9uflTn1y4WadAbVQrx4HOscTI9 eO3g==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=xd4795vHBK3rs2Y7rNU9lBjm1oMI38Jkv0rGFM0MsAA=; b=ISxgohZTXY9+EX+gQgGGqrCfCmVUMEFI0I5LCQM7FmFew+3pU1ORXiETSjkjaUT9uY ln4TgJOdUFJ7TGSQPYKaAgyn9pTg3c2PJSo7szoRXYrpzu602wA9/cgTwKI0niD7150K LcxswUytmFoIjRiN0sJ/aGe0vep1MCn/fR42HVQpXW73mQiAJ1zLoK2ztMXhrqMcsFv0 zDVAw0hL43oPzcHevFGLmvkLLzGHSSi87iVSSV/Jnei3ZBU2RruaBh5UCsb/dNEQnMtj 6DmegwpqyVPGQuY1nOdjc8OPeF8jYGlDgMrzm/PUtUdDTwdVJ1XE3LeyqYln58KZRU3i uJlg==
X-Gm-Message-State AD7BkJKJbtT9YoimECXuNjm4GR/qyFlxa7gAfdcWGfVx4XYz0sb5xSx/dk9t2LpL5K5ieg==
X-Received by 10.194.103.104 with SMTP id fv8mr26548125wjb.64.1457360167768; Mon, 07 Mar 2016 06:16:07 -0800 (PST)
X-Mailer git-send-email 1.8.3.1
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 51
Organization linux.* mail to news gateway
X-Original-Cc Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>, Xiao Guangrong <guangrong.xiao@linux.intel.com>
X-Original-Date Mon, 7 Mar 2016 15:15:53 +0100
X-Original-Message-ID <1457360155-9610-9-git-send-email-pbonzini@redhat.com>
X-Original-References <1457360155-9610-1-git-send-email-pbonzini@redhat.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1351615

Show key headers only | View raw


mmu_sync_children can only process up to 16 pages at a time.  Check
if we need to reschedule, and do not bother zapping the pages until
that happens.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 arch/x86/kvm/mmu.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 1dbef19867e4..2463de0b935c 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2059,24 +2059,31 @@ static void mmu_sync_children(struct kvm_vcpu *vcpu,
 	struct mmu_page_path parents;
 	struct kvm_mmu_pages pages;
 	LIST_HEAD(invalid_list);
+	bool flush = false;
 
 	while (mmu_unsync_walk(parent, &pages)) {
 		bool protected = false;
-		bool flush = false;
 
 		for_each_sp(pages, sp, parents, i)
 			protected |= rmap_write_protect(vcpu, sp->gfn);
 
-		if (protected)
+		if (protected) {
 			kvm_flush_remote_tlbs(vcpu->kvm);
+			flush = false;
+		}
 
 		for_each_sp(pages, sp, parents, i) {
 			flush |= kvm_sync_page(vcpu, sp, &invalid_list);
 			mmu_pages_clear_parents(&parents);
 		}
-		kvm_mmu_flush_or_zap(vcpu, &invalid_list, false, flush);
-		cond_resched_lock(&vcpu->kvm->mmu_lock);
+		if (need_resched() || spin_needbreak(&vcpu->kvm->mmu_lock)) {
+			kvm_mmu_flush_or_zap(vcpu, &invalid_list, false, flush);
+			cond_resched_lock(&vcpu->kvm->mmu_lock);
+			flush = false;
+		}
 	}
+
+	kvm_mmu_flush_or_zap(vcpu, &invalid_list, false, flush);
 }
 
 static void __clear_sp_write_flooding_count(struct kvm_mmu_page *sp)
-- 
1.8.3.1

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH 7/9] KVM: MMU: coalesce more page zapping in mmu_sync_children Paolo Bonzini <pbonzini@redhat.com> - 2016-03-07 15:20 +0100

csiph-web