Received: by 2002:a4a:311b:0:0:0:0:0 with SMTP id k27-v6csp4800533ooa; Tue, 14 Aug 2018 10:43:51 -0700 (PDT) X-Google-Smtp-Source: AA+uWPzCjNJ6gFl8iOwweIjvTu2Nn4vPjI/oHEA74IGBOrrrHpPHHYxn5It6NXBwVPpll46ze2B2 X-Received: by 2002:a63:fc0a:: with SMTP id j10-v6mr21964336pgi.1.1534268631835; Tue, 14 Aug 2018 10:43:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534268631; cv=none; d=google.com; s=arc-20160816; b=aL3l1T2vtntQxefIreNYKu+Gl2qkzS22f1nVa9oUaAZ3ScxxUVjmev6VPyjMIHH1EC 8UxWoOmvOeXUsiO9lJ5k3UZ+PBCSQnkIlInGf8Nm65wdQ1HANPLlal1TYNrVIGqMMMWg P76TFB9NVyXU71UZt228CSeuaXckCTegAgyjeNaRXWKCorGgDxXfpjmu0nQlYhof8KN+ CNYxLp9j33gwG27clo6kf8sMRIFSRKWdAjNDI3/5fGunebCJ7XGW7zrTaUt7DCtMWQLy NBMcMBAuDxxu0nuEICGSo/9Om9CfFQP3SNxRT7xAEe8gdYzqISXPJTMz1C13Yl0wXGAk F6eQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=8vErX/aPizsnkNrjioRQQ+/ujPqOic8pSIq5wCksUVw=; b=g/xvqVrSApAMeZncxnWsB5pTWKBI8NnOpoAzGcKOx76+g/BEOa6u8LjpD3sj6Vx7dS fPtpEpC1DT3kw7cXQSmeCP3u3Ltu2drI2Tx5hFFEYdXAVMVvWZz6K+KyAvFn9/TrkdNs aQ3GeQlSA+joDMvi3IrRGa3P6zdaWxHXPxPKoKo6YyHfQAP06GECyqxlZNoFAHeo3KfJ MbUrnW8I8bkSuYB3dL4aqXMr8j8CqWLDTc6X1eMOovdGcUsT+QCUShmqGHQuE6fLQ7Co SKDoz7CfFVIEvCPSh1jP49PTZB6w05YoElUcpxOaAfyGyW7d46oacsmENEe5oI5ShSqS r5eg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z18-v6si21574368pfl.209.2018.08.14.10.43.36; Tue, 14 Aug 2018 10:43:51 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390419AbeHNUar (ORCPT + 99 others); Tue, 14 Aug 2018 16:30:47 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:59672 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388923AbeHNUaq (ORCPT ); Tue, 14 Aug 2018 16:30:46 -0400 Received: from localhost (unknown [194.244.16.108]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 63D02AF3; Tue, 14 Aug 2018 17:42:35 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Konrad Rzeszutek Wilk , Thomas Gleixner , David Woodhouse Subject: [PATCH 4.9 064/107] x86/KVM/VMX: Add find_msr() helper function Date: Tue, 14 Aug 2018 19:17:27 +0200 Message-Id: <20180814171524.876043377@linuxfoundation.org> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20180814171520.883143803@linuxfoundation.org> References: <20180814171520.883143803@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 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 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Konrad Rzeszutek Wilk commit ca83b4a7f2d068da79a029d323024aa45decb250 upstream .. to help find the MSR on either the guest or host MSR list. Signed-off-by: Konrad Rzeszutek Wilk Signed-off-by: Thomas Gleixner Signed-off-by: David Woodhouse Signed-off-by: Greg Kroah-Hartman --- arch/x86/kvm/vmx.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c @@ -1975,9 +1975,20 @@ static void clear_atomic_switch_msr_spec vm_exit_controls_clearbit(vmx, exit); } +static int find_msr(struct vmx_msrs *m, unsigned int msr) +{ + unsigned int i; + + for (i = 0; i < m->nr; ++i) { + if (m->val[i].index == msr) + return i; + } + return -ENOENT; +} + static void clear_atomic_switch_msr(struct vcpu_vmx *vmx, unsigned msr) { - unsigned i; + int i; struct msr_autoload *m = &vmx->msr_autoload; switch (msr) { @@ -1998,11 +2009,8 @@ static void clear_atomic_switch_msr(stru } break; } - for (i = 0; i < m->guest.nr; ++i) - if (m->guest.val[i].index == msr) - break; - - if (i == m->guest.nr) + i = find_msr(&m->guest, msr); + if (i < 0) return; --m->guest.nr; --m->host.nr; @@ -2026,7 +2034,7 @@ static void add_atomic_switch_msr_specia static void add_atomic_switch_msr(struct vcpu_vmx *vmx, unsigned msr, u64 guest_val, u64 host_val) { - unsigned i; + int i; struct msr_autoload *m = &vmx->msr_autoload; switch (msr) { @@ -2061,16 +2069,13 @@ static void add_atomic_switch_msr(struct wrmsrl(MSR_IA32_PEBS_ENABLE, 0); } - for (i = 0; i < m->guest.nr; ++i) - if (m->guest.val[i].index == msr) - break; - + i = find_msr(&m->guest, msr); if (i == NR_AUTOLOAD_MSRS) { printk_once(KERN_WARNING "Not enough msr switch entries. " "Can't add msr %x\n", msr); return; - } else if (i == m->guest.nr) { - ++m->guest.nr; + } else if (i < 0) { + i = m->guest.nr++; ++m->host.nr; vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, m->guest.nr); vmcs_write32(VM_EXIT_MSR_LOAD_COUNT, m->host.nr);