Received: by 10.223.164.202 with SMTP id h10csp4605727wrb; Wed, 29 Nov 2017 08:56:13 -0800 (PST) X-Google-Smtp-Source: AGs4zMa/uROLIOiatkOYh7bQDddbo7wdSt4ebeN+AIsTsYP7VK0iw8lVS4l1eXROMZTaynzk/C98 X-Received: by 10.99.119.73 with SMTP id s70mr3325688pgc.451.1511974573820; Wed, 29 Nov 2017 08:56:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511974573; cv=none; d=google.com; s=arc-20160816; b=WvAnZt4LReyh8eTzOan0TeCvgk/3jZJxh621MRMaWccYsY+UzT+Bfrn5kpJyJGdcR5 pKWKcyqJ8kTgBWbbHUVkEziI5iLP1WsxwxNA8aLIs8j373iz0lGzJh//puDuV2maTnVJ Kc9PHhcopOquOh5FhaAH4gQ7luA/RsMThUQ+pRuPWtoMeuYZeayC1Ni00ECJ7S1D23EK 0JwxqqKRdUgH7j1xVgy+YEM4R1ai5XUTkk3Qk7CKEFBJZED3aGcHiAg231oECKyX07vJ Vi2R/ZuVoueHFutgOluYuv20hDpgOse4LcNSMwoajwLOh7fcwhBv7dfD5LMClPRBUQvY gyew== 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:cc:to:subject :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:arc-authentication-results; bh=kpALYx4jY/N3mXhHwPqKrDTbPZDE8vlB+7uwcHi/eDs=; b=PX2Pi1kcgdUHbtAxzaijOW/YRMxxNPXv6kIPVaHMKqR9xbsTaXOHCy9qB3R+f3S3aH j2s2/I/d4j3DJEFOOem1E/SaEJJJkOV+q76xFpgIBsnOmyEGoTYXGFOQHzy3Jo03kv4y MROu4Bw1/ILDiJxfch3nAwr81HDnCf0tTAdr0qLiOHHIKhBQg4dDa3eavDmU89P0Wolq iwUcjI6Zq+0lv/McRMOyc8emsMkcGmxWseirwXC5hFL6qfIXdHk0bWpaFrFSMTnqfgLs MQIgqBBnpuaM1pCerH/LkNSq9zWdhrxe+cPGKwzB1uNDGMA8ioFCj0GjFtaf1436PA6R oubA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=dbDyZL94; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i187si1637134pfc.213.2017.11.29.08.56.03; Wed, 29 Nov 2017 08:56:13 -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=@google.com header.s=20161025 header.b=dbDyZL94; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933711AbdK2QzR (ORCPT + 70 others); Wed, 29 Nov 2017 11:55:17 -0500 Received: from mail-io0-f193.google.com ([209.85.223.193]:34760 "EHLO mail-io0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754076AbdK2QzP (ORCPT ); Wed, 29 Nov 2017 11:55:15 -0500 Received: by mail-io0-f193.google.com with SMTP id s19so4408310ioa.1 for ; Wed, 29 Nov 2017 08:55:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=kpALYx4jY/N3mXhHwPqKrDTbPZDE8vlB+7uwcHi/eDs=; b=dbDyZL944TebVj5G6K8zMJgnpyclpfjfWNqYuW1ug0jsvpzEeWAIBEbcM/SXC3Ajok BpKfJbR63MHg2WsQYSMF0bzD7syrwfzLBpJd8cQuvFuHvqsgk2OT8AEDA6FamVQsMtGB B8sm50dfl5m1lBPORRtv3b6smyoqw1d2cajVZSBtDRMK4cNvGf8Z6avIeowPe2wXYKig 0zfg87u9+EBxoTUgvTJ32UDMh1xxdxeWzXnWR5kIClvvgZlC72Iah5F3fXy5sv1P0dHm TmufQDIay2LPzhOw5+iI/1OKhivlAM1J+sBWv6S6P3Et0JavcrXk4T73r7moyEI9B2JA +I5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=kpALYx4jY/N3mXhHwPqKrDTbPZDE8vlB+7uwcHi/eDs=; b=hoqcOMgvtzYW1XNW627B96vQlj8XT/ALtxKC2w8EJj6HJL6HObgGIswVHLC01Z9eBC vl6iaWAfO5B8jED517fsIbuKx5v4TomsQkn59I0tDfnPUdS6FKDUb8IvaKLxTXw8SFMk 4AmVE34GKkDWj2qAwfpBDfN6g2s09U0WEXuB9CLNNZP4qb5GQpFUwdnUC0cfpsvM7I6e MozTxJ1btaTT1bgC6Qx4MDXsckXiVgHxWtrdTWG6fju6ke1WNSlPtMeF01E+VDru7dQj ugz02jkosO41pS+uxq+pEKv+lm/H0H2oiiUUnO2sO7m3NrJ1advcwFaJUsIjWIQo2glh F+mQ== X-Gm-Message-State: AJaThX6lcJY+l93O2Hg2b4p6BNy76djGpeHFNvJTEqTDC81xVNM1Ko6E 24fqHRpzvDkaZJ7cQ0P9Nc6m+iRVymiIUtbXaV6e3A== X-Received: by 10.107.85.5 with SMTP id j5mr4118850iob.296.1511974514507; Wed, 29 Nov 2017 08:55:14 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.68.13 with HTTP; Wed, 29 Nov 2017 08:55:13 -0800 (PST) In-Reply-To: <1511947880-21643-1-git-send-email-wanpeng.li@hotmail.com> References: <1511947880-21643-1-git-send-email-wanpeng.li@hotmail.com> From: Jim Mattson Date: Wed, 29 Nov 2017 08:55:13 -0800 Message-ID: Subject: Re: [PATCH v2] KVM: VMX: Cache IA32_DEBUGCTL in memory To: Wanpeng Li Cc: LKML , kvm list , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Wanpeng Li Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Thanks for doing this! Reviewed-by: Jim Mattson On Wed, Nov 29, 2017 at 1:31 AM, Wanpeng Li wrote: > From: Wanpeng Li > > MSR_IA32_DEBUGCTLMSR is zeroed on VMEXIT, so it is saved/restored > each time during world switch. Jim from Google pointed out that > when running schbench in L2, vmx_vcpu_run will occupy 4% cpu time, > and the 25% of vmx_vcpu_run cpu time is occupied by get_debugctlmsr(). > This patch caches the host IA32_DEBUGCTL MSR and saves/restores > the host IA32_DEBUGCTL msr when guest/host switches to avoid to > save/restore each time during world switch. > > Suggested-by: Jim Mattson > Cc: Paolo Bonzini > Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 > Cc: Jim Mattson > Signed-off-by: Wanpeng Li > --- > v1 -> v2: > * rename to host_debugctlmsr and place it in struct vcpu_struct > * update_debugctlmsr stay in vmx_vcpu_run > > arch/x86/kvm/vmx.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index 8c7e816..d293c29 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -658,6 +658,8 @@ struct vcpu_vmx { > > u32 host_pkru; > > + unsigned long host_debugctlmsr; > + > /* > * Only bits masked by msr_ia32_feature_control_valid_bits can be= set in > * msr_ia32_feature_control. FEATURE_CONTROL_LOCKED is always inc= luded > @@ -2326,6 +2328,7 @@ static void vmx_vcpu_load(struct kvm_vcpu *vcpu, in= t cpu) > > vmx_vcpu_pi_load(vcpu, cpu); > vmx->host_pkru =3D read_pkru(); > + vmx->host_debugctlmsr =3D get_debugctlmsr(); > } > > static void vmx_vcpu_pi_put(struct kvm_vcpu *vcpu) > @@ -9346,7 +9349,7 @@ static void vmx_arm_hv_timer(struct kvm_vcpu *vcpu) > static void __noclone vmx_vcpu_run(struct kvm_vcpu *vcpu) > { > struct vcpu_vmx *vmx =3D to_vmx(vcpu); > - unsigned long debugctlmsr, cr3, cr4; > + unsigned long cr3, cr4; > > /* Record the guest's net vcpu time for enforced NMI injections. = */ > if (unlikely(!enable_vnmi && > @@ -9399,7 +9402,6 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu = *vcpu) > __write_pkru(vcpu->arch.pkru); > > atomic_switch_perf_msrs(vmx); > - debugctlmsr =3D get_debugctlmsr(); > > vmx_arm_hv_timer(vcpu); > > @@ -9510,8 +9512,8 @@ static void __noclone vmx_vcpu_run(struct kvm_vcpu = *vcpu) > ); > > /* MSR_IA32_DEBUGCTLMSR is zeroed on vmexit. Restore it if needed= */ > - if (debugctlmsr) > - update_debugctlmsr(debugctlmsr); > + if (vmx->host_debugctlmsr) > + update_debugctlmsr(vmx->host_debugctlmsr); > > #ifndef CONFIG_X86_64 > /* > -- > 2.7.4 > From 1585392396053902302@xxx Wed Nov 29 09:33:29 +0000 2017 X-GM-THRID: 1585379526281584765 X-Gmail-Labels: Inbox,Category Forums,HistoricalUnread