Received: by 10.223.164.202 with SMTP id h10csp272317wrb; Wed, 29 Nov 2017 22:02:08 -0800 (PST) X-Google-Smtp-Source: AGs4zMaY6rG1vCDdpJROsApQJ4IrHpzTmdUp+GXFUViqB/IF7jTAg4LGzs0fEZQSHH9FvEkKeILd X-Received: by 10.84.132.66 with SMTP id 60mr1446800ple.281.1512021728389; Wed, 29 Nov 2017 22:02:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512021728; cv=none; d=google.com; s=arc-20160816; b=0Y8tlGxc7x5bOWWmZlTsd/HBkTQ+OKIqodNlHtWka9ZYQrR98TGPEfw3k1JMWw2qGF RZ0O5aFEn+EAHYGCpnhwk60q9gvwG9JlLIqXbrOoUxcx4P6drQ68vjOk5aT+9D8jdn/r vTT3tdnQ3OC7OsKGlz3V69PeU2c26UD5Gr8H7LMgywMfc6f/jdcm+/v/BY2er4u0ei1K PBNnBnWMwI0tM8FYv2WOvQCu3hAmrOCzKBD/Zu/1tm/hDsXLmYW9eaGgczWMlP6nusAR IX+o124JoyMTRfLU6Y5MSuyXncJDsCwzG+0E3MoWWXasjlnH70jkzEbwo3JvjT2uGsQO aMTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=FA3JM6m5TU5utTKA/dKK8QCxMcN9V7TEBQBVt4aBHXo=; b=oIbrAdLT/EU9Bo7bpWvVraex2O5E0TDLf6VT7+5TDfZ7nYc4VeyaZbbIX5hjGTQx2s F0U6Wslg4OyOrfwBkU3ri+u9uyKDcSR5pmgwQGIioN2Vx/o+BrDZ3C9pSxBcRdRxAivr NSiFfNMvzbrizBjA0nCwnmk9YvKBNG0fJ3k7B6/PS3JJ7lH8Ja+SeED7Ej3peIII+W4X zaDmM3uoSRY9TdXLfi1wKgipxqns7Nq6zGUs8KN2XCWb34SkFpcmF46TSVGZpsqJ+UUW qzzYli6TN5jB0fujTYi74rzTk+t1yEO4NBhhwVDg2cL/0pVVI8vbtTVFBz2QdY7UkTSr pkrA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=WZ7StbmA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1si2545069plk.258.2017.11.29.22.01.54; Wed, 29 Nov 2017 22:02:08 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=WZ7StbmA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753030AbdK3GBe (ORCPT + 99 others); Thu, 30 Nov 2017 01:01:34 -0500 Received: from mail-pg0-f65.google.com ([74.125.83.65]:33818 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752672AbdK3GBa (ORCPT ); Thu, 30 Nov 2017 01:01:30 -0500 Received: by mail-pg0-f65.google.com with SMTP id j4so2601997pgp.1; Wed, 29 Nov 2017 22:01:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=FA3JM6m5TU5utTKA/dKK8QCxMcN9V7TEBQBVt4aBHXo=; b=WZ7StbmAS/Rt2qkCgupOmvVR8M3lHfGARu2g/APLp23/5RP8ehkJeadEaH1lrJukgQ 1h6CLY8MCUnWZN2/ksPizHHTOQoV7Dx0+ZMsNY7xrXga/XNVXTXSp+hEXypdp90RZwdF PN0DyF5jCik1i6FOApNdEVdPzcHQNtrNzWCAA0JUdWwCSKno6XfLeluHcbm41/Fgo6JB eVZF/g9wYxZ/w0GTHhnuc+AI92LJQ0g1nzNOURU0pRRzwrVJomDBb4PIOoBzVMT2TAOZ 2hfXkUCc0US0Kf2cmTW5Xem/4HhFwAZEMJgaRurDNjE1m1/rDQt6dOB6YB118972VFNt tfTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=FA3JM6m5TU5utTKA/dKK8QCxMcN9V7TEBQBVt4aBHXo=; b=SJySifNoukBSkmYU4o9gmOLvQyoISlk/Fg2wuXbu8a012DSSNsmVlq2lE81jYA1L9M 2uTil6qFSQ0t/flrENg2x6ayMUyX7m5bjIVFuwLSXgx0xDb3TUmf2JWZEdZQbmxkG1hl Ty8aJSLj4dfv/ESNXnQAXnvlw2zYM5YdCOxJ4R3NkyjizooY4Ige9GiQzcW1RxGvcOdg 6CTbVOD3ydpdxDjafoXKQfr6NScx3JTeU9Yegk6df0jr/gyXbQ1ByJhTso1IfAMATO0/ 4RiVDGRMPNz+yPhXK/k0XoeeUCM0fJhfm38618gyHiNOcQKydpXRp0NTnTXWRNqcvCQM j6Dw== X-Gm-Message-State: AJaThX5rhXECPlMvsQfc48jjxE9YRCcJDGAlPXww9t76UytuWALMhVmn juo8o+0YoP07gCpLCv+GjmXt6w== X-Received: by 10.99.170.77 with SMTP id x13mr1374752pgo.117.1512021689639; Wed, 29 Nov 2017 22:01:29 -0800 (PST) Received: from localhost ([203.205.141.123]) by smtp.gmail.com with ESMTPSA id f15sm5161379pgu.83.2017.11.29.22.01.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Nov 2017 22:01:29 -0800 (PST) From: Wanpeng Li X-Google-Original-From: Wanpeng Li To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org Cc: Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Peter Zijlstra , Wanpeng Li Subject: [PATCH v7 4/4] KVM: X86: Add flush_on_enter before guest enter Date: Wed, 29 Nov 2017 22:01:14 -0800 Message-Id: <1512021674-9880-5-git-send-email-wanpeng.li@hotmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1512021674-9880-1-git-send-email-wanpeng.li@hotmail.com> References: <1512021674-9880-1-git-send-email-wanpeng.li@hotmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Wanpeng Li PV-Flush guest would indicate to flush on enter, flush the TLB before entering the guest. Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Peter Zijlstra Signed-off-by: Wanpeng Li --- arch/x86/kvm/cpuid.c | 3 ++- arch/x86/kvm/x86.c | 21 ++++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index b943711..8834898 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -601,7 +601,8 @@ static inline int __do_cpuid_ent(struct kvm_cpuid_entry2 *entry, u32 function, (1 << KVM_FEATURE_ASYNC_PF) | (1 << KVM_FEATURE_PV_EOI) | (1 << KVM_FEATURE_CLOCKSOURCE_STABLE_BIT) | - (1 << KVM_FEATURE_PV_UNHALT); + (1 << KVM_FEATURE_PV_UNHALT) | + (1 << KVM_FEATURE_PV_TLB_FLUSH); if (sched_info_on()) entry->eax |= (1 << KVM_FEATURE_STEAL_TIME); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index c279530..94c23ae 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2121,6 +2121,12 @@ static void kvmclock_reset(struct kvm_vcpu *vcpu) vcpu->arch.pv_time_enabled = false; } +static void kvm_vcpu_flush_tlb(struct kvm_vcpu *vcpu, bool invalidate_gpa) +{ + ++vcpu->stat.tlb_flush; + kvm_x86_ops->tlb_flush(vcpu, invalidate_gpa); +} + static void record_steal_time(struct kvm_vcpu *vcpu) { if (!(vcpu->arch.st.msr_val & KVM_MSR_ENABLED)) @@ -2130,7 +2136,14 @@ static void record_steal_time(struct kvm_vcpu *vcpu) &vcpu->arch.st.steal, sizeof(struct kvm_steal_time)))) return; - vcpu->arch.st.steal.preempted = KVM_VCPU_NOT_PREEMPTED; + if (xchg(&vcpu->arch.st.steal.preempted, KVM_VCPU_NOT_PREEMPTED) == + (KVM_VCPU_SHOULD_FLUSH | KVM_VCPU_PREEMPTED)) { + /* + * Do TLB_FLUSH before entering the guest, its passed + * the stage of request checking + */ + kvm_vcpu_flush_tlb(vcpu, false); + } if (vcpu->arch.st.steal.version & 1) vcpu->arch.st.steal.version += 1; /* first time write, random junk */ @@ -6775,12 +6788,6 @@ static void vcpu_scan_ioapic(struct kvm_vcpu *vcpu) kvm_x86_ops->load_eoi_exitmap(vcpu, eoi_exit_bitmap); } -static void kvm_vcpu_flush_tlb(struct kvm_vcpu *vcpu, bool invalidate_gpa) -{ - ++vcpu->stat.tlb_flush; - kvm_x86_ops->tlb_flush(vcpu, invalidate_gpa); -} - void kvm_vcpu_reload_apic_access_page(struct kvm_vcpu *vcpu) { struct page *page = NULL; -- 2.7.4 From 1584318282773795532@xxx Fri Nov 17 13:00:55 +0000 2017 X-GM-THRID: 1584318282773795532 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread