Received: by 10.223.185.116 with SMTP id b49csp5711722wrg; Tue, 27 Feb 2018 19:36:06 -0800 (PST) X-Google-Smtp-Source: AG47ELvkcPTqBVSM/VmKlTyrnL7jwTRJ4YLnhBklAzVLud1L4j9ti5VPa13meW3PLoqoWTav4mhN X-Received: by 2002:a17:902:b482:: with SMTP id y2-v6mr12759410plr.49.1519788965982; Tue, 27 Feb 2018 19:36:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1519788965; cv=none; d=google.com; s=arc-20160816; b=Jz92MWqLwQMoxPW+r0xHLiWtvrIE2A4D0LwFuLmvQN4J9IO0b/QWSSn9Q6NUdNZtJY LN2iEaAMP3OdzwyIxf2rOMc+9GQOsbYVCLt5RAdcr2KPIoOvuvgiGoXpgVRc2RsP1WYH 1esCiMhP7zbluYVE72SuT07uqkgVR24/neHntOHAf4MUC1SS8ohYRBPthAQFl4rjnm9h RzBcIufB+lMOOOtm+KxJ3dG/VY3/ryQM2ChBOee3MnmwsUvpl0Dz/cY4oXbgu0kalLJr GSvTM2P/oxJRpgtGM6+0iIh05o4EqSC60Aj4JXmPSUuyNmjqVyOF9gYwVU/yTtQBqC5C gpgQ== 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 :message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=MA0qOqmJsPS2H7YD3S5NSSg2FEZMb+zSlnuv/RH6djw=; b=bI5DQyKHvgQd9K7a+rhxf0N6jDzjKxNaMg9EH4zFHWU1KBnYK4WPh4KvAtUJhDPBfB 8i3dNX04eVa229lfN7zb2+N+xYjNkOzZ3mGuH8GC2dhQ7lAnoYXzyP9sAOEfk0LFFPDJ Le9h5xS9o8FPqHaYTnmWRfVWb9MJ3wOOqfnzhjoiLs4OalwCi4gd0wc9GHtmGOlCYrM9 yPFcV6JSuxBXcjToq8KtCmMmsJdeMtcc401YJWp/w4eeARnAg3eQXZcFjcnXVIfwWiyL JDr/GQoZAG1HJf0Y1bfQsYy9fVRhfd783EXnkVYhfUdvIlv5PQzSxTD3yig2bytsFs+u f6Rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=YmvlUW1h; 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=QUARANTINE 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 y8si423556pgp.602.2018.02.27.19.35.51; Tue, 27 Feb 2018 19:36:05 -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=YmvlUW1h; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751943AbeB1Dem (ORCPT + 99 others); Tue, 27 Feb 2018 22:34:42 -0500 Received: from mail-pl0-f66.google.com ([209.85.160.66]:45038 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751682AbeB1Del (ORCPT ); Tue, 27 Feb 2018 22:34:41 -0500 Received: by mail-pl0-f66.google.com with SMTP id w21-v6so727411plp.11; Tue, 27 Feb 2018 19:34:41 -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:mime-version :content-transfer-encoding; bh=MA0qOqmJsPS2H7YD3S5NSSg2FEZMb+zSlnuv/RH6djw=; b=YmvlUW1h0ohC+fwfBfzsARcyMHch42dBSfwuGo2t1aon5KnD3xmOHSyivHrrGTy+3s Yc29+KywTOO2guMoWLNxxAwi9Y0jKH4z8sLZ185TyFHvSiTx4nKxRSmwewsXHyJOlNky hc/d37Dq8wpF2UeedwX8sNWKM/AnypOtL8RSb9+XCbMDzfCkAOl17K1FDQ7SF9NoeHKu 4maDdM4xBbUg0Eyw1vUx9vKPuaIZ4HVU3nGS/wNULEbQHna37enrT3ZYn0oZngVu1i8d oLCVsjUQpFhEqGnJDkWfTTT1ha5VShYsgdz+A6gh3LJX40b9zsIv1SFBmIHCknKYs1cN cYzA== 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:mime-version :content-transfer-encoding; bh=MA0qOqmJsPS2H7YD3S5NSSg2FEZMb+zSlnuv/RH6djw=; b=n/Vqr3GIpvqgvhasDVGLAnLL+j0MORfN9gI0xdYUtYVaZATR/lGOzTMuExCqheetAV 0L+Go9/tFvYwSmRzYonexQHdsa5ltCljegcp1IAJYpoKFPxgz7O0UalMQ108hCPW8s5n JV7rl1jTJ0kvnkzm7pOOhmIzzrDnbwkQwqUuMS6IRsAJoxhzp6CRDAN7ro3LKud0gLUy 9mKzpNImNrbajERaFMYn+TsBMD+y1vXNMTchV8oMitDO5pRy54YGHLXaabwTFVR8bHM/ b9XNwiL/frDN7P0CN1Gl64wDx1q+2NdGFG5HLqk/YUxqWgA4vG6nqlRmcMfVn2sRP7be iK6w== X-Gm-Message-State: APf1xPCX8cp2w7Xz/UI+kCpCEv6NmXDKH//AheKmlmVisuW+HUGCpa2A qrArAqmemDgV/N+brOOTS9Codw== X-Received: by 2002:a17:902:6985:: with SMTP id l5-v6mr16952465plk.14.1519788880542; Tue, 27 Feb 2018 19:34:40 -0800 (PST) Received: from localhost.localdomain ([203.205.141.123]) by smtp.googlemail.com with ESMTPSA id o5sm848319pfh.51.2018.02.27.19.34.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 27 Feb 2018 19:34:39 -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?= , Liran Alon , Nadav Amit , Borislav Petkov , Tom Lendacky Subject: [PATCH v5 1/2] KVM: X86: Introduce kvm_get_msr_feature() Date: Wed, 28 Feb 2018 11:34:33 +0800 Message-Id: <1519788874-16561-1-git-send-email-wanpengli@tencent.com> X-Mailer: git-send-email 2.7.4 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 Introduce kvm_get_msr_feature() to handle the msrs which are supported by different vendors and sharing the same emulation logic. Cc: Paolo Bonzini Cc: Radim Krčmář Cc: Liran Alon Cc: Nadav Amit Cc: Borislav Petkov Cc: Tom Lendacky Signed-off-by: Wanpeng Li --- arch/x86/kvm/x86.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index d4985a9..efc8554 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -1062,13 +1062,25 @@ static u32 msr_based_features[] = { static unsigned int num_msr_based_features; +static int kvm_get_msr_feature(struct kvm_msr_entry *msr) +{ + switch (msr->index) { + default: + if (kvm_x86_ops->get_msr_feature(msr)) + return 1; + } + return 0; +} + static int do_get_msr_feature(struct kvm_vcpu *vcpu, unsigned index, u64 *data) { struct kvm_msr_entry msr; + int r; msr.index = index; - if (kvm_x86_ops->get_msr_feature(&msr)) - return 1; + r = kvm_get_msr_feature(&msr); + if (r) + return r; *data = msr.data; @@ -4538,7 +4550,7 @@ static void kvm_init_msr_list(void) struct kvm_msr_entry msr; msr.index = msr_based_features[i]; - if (kvm_x86_ops->get_msr_feature(&msr)) + if (kvm_get_msr_feature(&msr)) continue; if (j < i) -- 2.7.4