Received: by 2002:ac0:aa62:0:0:0:0:0 with SMTP id w31-v6csp2768153ima; Mon, 22 Oct 2018 15:51:34 -0700 (PDT) X-Google-Smtp-Source: ACcGV60qq1zrhFdg9eb4/mlxTSHZisgDNNdIe/347nQgbOZcEpgfwBtv5PpNKdp3JCYN95odDSo3 X-Received: by 2002:a17:902:70c3:: with SMTP id l3-v6mr47814054plt.125.1540248694721; Mon, 22 Oct 2018 15:51:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1540248694; cv=none; d=google.com; s=arc-20160816; b=LpihgaJCHtlofLxiutrzSmzpHryOgp3YF/mSkEVVttnVBKth8/WiVYn1HYh/EUjwgz 1Bre5tN1bcBPkrUPpYPm43ATmH9yKQkbxwBPxN4t0QwzblK+pqVQP7MxHNCuEVIN6xfZ NLI7c+JP8Um/g798nUPTS1SDPRSEuiWxlgL4sZqPyZKbaxN4PlgJf4dNO9X9z3b+Il5p xkrE1Zl/8fmb4NMMDCTRsQmY9QDnPw83/89TEjK7JpzY2sI+d+SW5SbcDUvEJEhb8Azq AzAC5sH147jbScKJn9L+kStVzTi/8gkwYJxt6suu9wrNgXFE5IRgtJDYq7pV6vpNWP/1 LRog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature; bh=ib2UcmGTPXQPxuj5+v3hHcVygVb/GMm0sygsdffu/s8=; b=rSbV25TNJqKf2woa8YLZvKui/GzLsAAxKBsI+vZ6cXME8xxDnxtfBA5BOmjb75jyNP IthYwRt4fXGvOu2oiBbTfbiJ5LuaXpy0zKzVrsfJoaz+3qyBBy7fiXi9wezmIx6QcNCQ DNW4ayfMx5WFuUCcgteLvd7jZ9ZP5MV+W1akuki4U1jznSoS6Q+1utcvttxy36RAfoWU y1Dj5UqZar/3g05fdxzKnDaYfR3tip2rUEFvvs6WURwLvoPz48LaMNNsSyd85l23b/oz 6+RnwYSxaN7xlByTS56i6GQXGH3n+af3ep5RZuzGtQfmiqEshAo7mS05R1ruHlDDI/9h vr2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=oe3BjouC; 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 93-v6si35772126plb.87.2018.10.22.15.51.18; Mon, 22 Oct 2018 15:51:34 -0700 (PDT) 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=oe3BjouC; 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 S1729553AbeJWGCz (ORCPT + 99 others); Tue, 23 Oct 2018 02:02:55 -0400 Received: from mail-ot1-f66.google.com ([209.85.210.66]:33420 "EHLO mail-ot1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728334AbeJWGCz (ORCPT ); Tue, 23 Oct 2018 02:02:55 -0400 Received: by mail-ot1-f66.google.com with SMTP id q50so41661514otd.0 for ; Mon, 22 Oct 2018 14:42:36 -0700 (PDT) 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; bh=ib2UcmGTPXQPxuj5+v3hHcVygVb/GMm0sygsdffu/s8=; b=oe3BjouCTUrtHZ2FtL9O5reLIX7f2Ql6XW2DxGbjFIDS3Osf6YdW9wgBwD3mbUBrFs ym6JbKCNbCIpEiTKW9LrCydsaXJ/e39yqUfGH2+tip9Sf6rZLEt7U2sEadzzYAfgbgZg idXbElkJXozNxql3FZu/9Tp6Q1pVyWOk2qH52XV28+EBI8LkvSJod78X3Qo4RyuOdlLF GMbcghnfEuWH5UiJBCRmLHLCYyrzK7IungHe9GWmwP/gw+iTYNJmJK3ZPeazMzy3tsH9 GrFLMOLOT46ATuBMTTXW9CTeJ6KL+N7zsdmcnIaN7zoZRUbGgtm843UPgnQOcCfv2kIV wrBA== 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; bh=ib2UcmGTPXQPxuj5+v3hHcVygVb/GMm0sygsdffu/s8=; b=r3aWjxwMSshm2cxYcPInqpAtRH6GszJGwCK5embDgY7UXCi7bfR1aTZHVAkUc1AHYx r4QT1X8vV3BsakyxIwj6WiZblsA2LHX1oBXAlFEfzjuLKYtOQcK0oHuATnhRk9ycoJQe GiKP5dOd8YaAm6mcS3ZyFMU9RCXB3KEsScjw10DO2hWgqSiZTzqQTpBP/nMYa+l1M/JW FQ/E+bemQ1y/FNPNoJSougaKO4dszaGpSXTpbr9GPVqQ/+AlzfVO+5SyVT03S6CFmo55 hhkDRXpJdJ5YzfiPQvUZOP1mgj+Z6XDW5uSBEH41dqfo8iXu/Yt2/iNnmsfhNeagvtOB GHsA== X-Gm-Message-State: ABuFfoi44kRSLpM3VKyCnyTmZyCkKLH7ejF4rzBQHH2l9rroTHA9DoXG yIeT27EdlIhUCHT8EblRCOPWnkjRUbmkZBBg9l1Lfg== X-Received: by 2002:a9d:da2:: with SMTP id 31mr27721571ots.246.1540244556427; Mon, 22 Oct 2018 14:42:36 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:ac9:2ac9:0:0:0:0:0 with HTTP; Mon, 22 Oct 2018 14:42:35 -0700 (PDT) In-Reply-To: <1540074145-31285-7-git-send-email-karahmed@amazon.de> References: <1540074145-31285-1-git-send-email-karahmed@amazon.de> <1540074145-31285-7-git-send-email-karahmed@amazon.de> From: Jim Mattson Date: Mon, 22 Oct 2018 14:42:35 -0700 Message-ID: Subject: Re: [PATCH v3 06/13] KVM/nVMX: Use kvm_vcpu_map when mapping the L1 MSR bitmap To: KarimAllah Ahmed Cc: kvm list , LKML , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Oct 20, 2018 at 3:22 PM, KarimAllah Ahmed wrote: > Use kvm_vcpu_map when mapping the L1 MSR bitmap since using > kvm_vcpu_gpa_to_page() and kmap() will only work for guest memory that has > a "struct page". > > Signed-off-by: KarimAllah Ahmed > --- > v1 -> v2: > - Do not change the lifecycle of the mapping (pbonzini) > --- > arch/x86/kvm/vmx.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c > index d857401..5b15ca2 100644 > --- a/arch/x86/kvm/vmx.c > +++ b/arch/x86/kvm/vmx.c > @@ -847,6 +847,9 @@ struct nested_vmx { > struct page *apic_access_page; > struct page *virtual_apic_page; > struct page *pi_desc_page; > + > + struct kvm_host_map msr_bitmap_map; > + > struct pi_desc *pi_desc; > bool pi_pending; > u16 posted_intr_nv; > @@ -11546,9 +11549,10 @@ static inline bool nested_vmx_prepare_msr_bitmap(struct kvm_vcpu *vcpu, > struct vmcs12 *vmcs12) > { > int msr; > - struct page *page; > unsigned long *msr_bitmap_l1; > unsigned long *msr_bitmap_l0 = to_vmx(vcpu)->nested.vmcs02.msr_bitmap; > + struct kvm_host_map *map = &to_vmx(vcpu)->nested.msr_bitmap_map; > + > /* > * pred_cmd & spec_ctrl are trying to verify two things: > * > @@ -11574,11 +11578,10 @@ static inline bool nested_vmx_prepare_msr_bitmap(struct kvm_vcpu *vcpu, > !pred_cmd && !spec_ctrl) > return false; > > - page = kvm_vcpu_gpa_to_page(vcpu, vmcs12->msr_bitmap); > - if (is_error_page(page)) > + if (kvm_vcpu_map(vcpu, gpa_to_gfn(vmcs12->msr_bitmap), map)) Isn't this the sort of high frequency operation that should not use the new API? > return false; > > - msr_bitmap_l1 = (unsigned long *)kmap(page); > + msr_bitmap_l1 = (unsigned long *)map->hva; > if (nested_cpu_has_apic_reg_virt(vmcs12)) { > /* > * L0 need not intercept reads for MSRs between 0x800 and 0x8ff, it > @@ -11626,8 +11629,7 @@ static inline bool nested_vmx_prepare_msr_bitmap(struct kvm_vcpu *vcpu, > MSR_IA32_PRED_CMD, > MSR_TYPE_W); > > - kunmap(page); > - kvm_release_page_clean(page); > + kvm_vcpu_unmap(&to_vmx(vcpu)->nested.msr_bitmap_map); > > return true; > } > -- > 2.7.4 >