Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp353593pxj; Thu, 3 Jun 2021 08:17:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwnfcw1kO6S7QEstWcV//wI3PXFWCDDh8yt3iT2w/I4D1hYUoghjWx8F4ur19DE7zjDpXJS X-Received: by 2002:a50:bec1:: with SMTP id e1mr43925edk.116.1622733459141; Thu, 03 Jun 2021 08:17:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622733459; cv=none; d=google.com; s=arc-20160816; b=OSjoLJnOzWD6l8l322UJzIhuXtImHPkYm5BUTkg0xBdF6Ain9IJA5aG7VlSOR0LFQx 5syk/dSBiLQ6Z5sTjP+mpICASbSRx/J2Ft99VxXzvQlSZFoNhvjsH1+ZLZSHgq6ZzZ2I iS7Z+xFA8dae3iLcmTgTtYcbPl13ls0eRSkadSa0RISchz46xQcUh8rB78lJjO8/oRFE 1FcLlGbJ0Vhc89WhEDzgfEI/NlYLUVqLsKhEGJXtHT6yO+DRGvqP5Y5wjU3hZI6b2rq1 UGRg/HE6jiogz2s/VdxX+xA39T2FSWMG3gAXQSyH9gwmzTnawnJ4+E9MQrK8s+BfgArG K5Gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:dkim-filter; bh=O3R7ws0U1fc7rrTaS2RFaXACmChpTZ3DpIk2uE0vGg8=; b=EfYJKeBmNnXketbHDODk+K0Wa7joyf9fnAdk4XHF/Y3nvvlW8rRt5WI5IMpQfpm0O7 fsGwPDHXCgNyBFriZ20ViSM8tHatrtLUTXtTxQ87siLeCgaY1woSM7v/BdQ6l+ZvrhTt NKhLL68y1rBn6iXiuZpxkuIoNPdrGVI/Rw/AwW6rxHH8eml6e6986qAg5ovqCaezK3KL jxFMtxQdOxgvtXGxLDSnvXKhJRekrr0KbncP6cTWcEAl2OYVt5R2zVam0I0CFcAeumea /mqhumGoq4nR4tFCN3tGQZmW9/OVdSrLN6wobXsj6VptHaFpVrO/UlboHr0bR36rpk82 Io1g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=l8n2qhBE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m10si2530163ejn.656.2021.06.03.08.17.12; Thu, 03 Jun 2021 08:17:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.microsoft.com header.s=default header.b=l8n2qhBE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.microsoft.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231961AbhFCPQi (ORCPT + 99 others); Thu, 3 Jun 2021 11:16:38 -0400 Received: from linux.microsoft.com ([13.77.154.182]:45620 "EHLO linux.microsoft.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231899AbhFCPQf (ORCPT ); Thu, 3 Jun 2021 11:16:35 -0400 Received: from viremana-dev.fwjladdvyuiujdukmejncen4mf.xx.internal.cloudapp.net (unknown [13.66.132.26]) by linux.microsoft.com (Postfix) with ESMTPSA id CE37020B7188; Thu, 3 Jun 2021 08:14:50 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com CE37020B7188 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1622733290; bh=O3R7ws0U1fc7rrTaS2RFaXACmChpTZ3DpIk2uE0vGg8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=l8n2qhBE+IghZbV6I9D9skkltxgYO602PDn1sHiYTYlxYto/RwPzkGHTUHc5GLkJb TJH1e3/r6frNWDbPH2Qm2QHq5USEg+SbiHGClri1Mi4vqNwJ0exe0f6VWPMksvHUu3 xikff++r0duXkS6PvuXkELZIwI/iLJ29qPmjQweM= From: Vineeth Pillai To: Lan Tianyu , Michael Kelley , Paolo Bonzini , Sean Christopherson , Vitaly Kuznetsov , Tom Lendacky , Wanpeng Li , Jim Mattson , Joerg Roedel , Wei Liu , Stephen Hemminger , Haiyang Zhang Cc: Vineeth Pillai , "H. Peter Anvin" , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "K. Y. Srinivasan" , x86@kernel.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-hyperv@vger.kernel.org Subject: [PATCH v5 1/7] hyperv: Detect Nested virtualization support for SVM Date: Thu, 3 Jun 2021 15:14:34 +0000 Message-Id: <43b25ff21cd2d9a51582033c9bdd895afefac056.1622730232.git.viremana@linux.microsoft.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Previously, to detect nested virtualization enlightenment support, we were using HV_X64_ENLIGHTENED_VMCS_RECOMMENDED feature bit of HYPERV_CPUID_ENLIGHTMENT_INFO.EAX CPUID as docuemented in TLFS: "Bit 14: Recommend a nested hypervisor using the enlightened VMCS interface. Also indicates that additional nested enlightenments may be available (see leaf 0x4000000A)". Enlightened VMCS, however, is an Intel only feature so the above detection method doesn't work for AMD. So, use the HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS.EAX CPUID information ("The maximum input value for hypervisor CPUID information.") and this works for both AMD and Intel. Signed-off-by: Vineeth Pillai --- arch/x86/kernel/cpu/mshyperv.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c index 22f13343b5da..c268c2730048 100644 --- a/arch/x86/kernel/cpu/mshyperv.c +++ b/arch/x86/kernel/cpu/mshyperv.c @@ -252,6 +252,7 @@ static void __init hv_smp_prepare_cpus(unsigned int max_cpus) static void __init ms_hyperv_init_platform(void) { + int hv_max_functions_eax; int hv_host_info_eax; int hv_host_info_ebx; int hv_host_info_ecx; @@ -269,6 +270,8 @@ static void __init ms_hyperv_init_platform(void) ms_hyperv.misc_features = cpuid_edx(HYPERV_CPUID_FEATURES); ms_hyperv.hints = cpuid_eax(HYPERV_CPUID_ENLIGHTMENT_INFO); + hv_max_functions_eax = cpuid_eax(HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS); + pr_info("Hyper-V: privilege flags low 0x%x, high 0x%x, hints 0x%x, misc 0x%x\n", ms_hyperv.features, ms_hyperv.priv_high, ms_hyperv.hints, ms_hyperv.misc_features); @@ -298,8 +301,7 @@ static void __init ms_hyperv_init_platform(void) /* * Extract host information. */ - if (cpuid_eax(HYPERV_CPUID_VENDOR_AND_MAX_FUNCTIONS) >= - HYPERV_CPUID_VERSION) { + if (hv_max_functions_eax >= HYPERV_CPUID_VERSION) { hv_host_info_eax = cpuid_eax(HYPERV_CPUID_VERSION); hv_host_info_ebx = cpuid_ebx(HYPERV_CPUID_VERSION); hv_host_info_ecx = cpuid_ecx(HYPERV_CPUID_VERSION); @@ -325,9 +327,11 @@ static void __init ms_hyperv_init_platform(void) ms_hyperv.isolation_config_a, ms_hyperv.isolation_config_b); } - if (ms_hyperv.hints & HV_X64_ENLIGHTENED_VMCS_RECOMMENDED) { + if (hv_max_functions_eax >= HYPERV_CPUID_NESTED_FEATURES) { ms_hyperv.nested_features = cpuid_eax(HYPERV_CPUID_NESTED_FEATURES); + pr_info("Hyper-V: Nested features: 0x%x\n", + ms_hyperv.nested_features); } /* -- 2.25.1