Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1351615
| 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
[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