From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 088B9C3F2D1 for ; Tue, 3 Mar 2020 14:59:24 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D36F120828 for ; Tue, 3 Mar 2020 14:59:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="EkYGi/Lz" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729556AbgCCO7V (ORCPT ); Tue, 3 Mar 2020 09:59:21 -0500 Received: from us-smtp-2.mimecast.com ([205.139.110.61]:41698 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726766AbgCCO7U (ORCPT ); Tue, 3 Mar 2020 09:59:20 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583247559; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Q3INcNmfvd0keaFFtSvq7kLrMBsEvlegDlXL3LDjJtw=; b=EkYGi/Lz6IwyKMUHm/arpMCGRnYzpEJc1+RORYLgOP9UheVQJGmVnVXlc3T8DuHPcdMh2z VYEFVWQLNkrShCuAM2AoKJPzLJhY9/zgKvXX5XwubRTjwkJAtFSlDcNE36FQoWYmDFPL91 gYXA1mEk8lklbQsdzXDPkioj+8DHTHw= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-478-bv_NlLNPMC2e5SvblASUDQ-1; Tue, 03 Mar 2020 09:59:17 -0500 X-MC-Unique: bv_NlLNPMC2e5SvblASUDQ-1 Received: by mail-wr1-f70.google.com with SMTP id m18so1304506wro.22 for ; Tue, 03 Mar 2020 06:59:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=Q3INcNmfvd0keaFFtSvq7kLrMBsEvlegDlXL3LDjJtw=; b=G8FqkDHG8mFsPI1dJrsJrAFecRfXwCvSBYmtlyfi0gBtVSQCI7SNfR7mNlGoWwSswn GgLuDa9xfs6mDUh2EOCRsVt478R5YICCP93Hq7+Qox7QMy9lRGYfH6V8E/3T6Dk5ELit D1AH5v21hdB03DV9i6273JYeiHHczYzBXR1Fr0SPJulCa5QOELxbdBRDKev7Ks9A7gz9 Ceg/gYIJ1xpQcIuh4ZnXD0CN1wryjSq2BSpSl9L+FjCoMu2+jXr1UOcxqkYZxpiJt/Ze 2/BJUdu0cxjFhwZUrhO792YTKP45Uz5h8u5EJKcUbkGV7EQc8iGKVcc7PO0l6o4D0nsc s+FA== X-Gm-Message-State: ANhLgQ3tTmmgQBfkEPovXUTn4atoU07m18mkXOgx2P2dilfRpN79eOvU XXaeG78zO1C1+YJqGM8JEUCJL59Hgi/JDbhlhbCASHIBON2VI8VorFdWYs5JIi6yN4LP6CRhrih HrGHBUZ8IdrYy X-Received: by 2002:a05:600c:217:: with SMTP id 23mr3142876wmi.32.1583247556403; Tue, 03 Mar 2020 06:59:16 -0800 (PST) X-Google-Smtp-Source: ADFU+vt1RLURtABBn8aSSBG+jqW4QAi/m+dn0RH1ZEcCXqdMzBZSlAaAyddA7kBq72kciM4FXajzwQ== X-Received: by 2002:a05:600c:217:: with SMTP id 23mr3142865wmi.32.1583247556134; Tue, 03 Mar 2020 06:59:16 -0800 (PST) Received: from [192.168.178.40] ([151.20.254.94]) by smtp.gmail.com with ESMTPSA id 12sm4252542wmo.30.2020.03.03.06.59.15 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 03 Mar 2020 06:59:15 -0800 (PST) Subject: Re: [PATCH v2 36/66] KVM: x86: Handle GBPAGE CPUID adjustment for EPT in VMX code To: Sean Christopherson Cc: Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li References: <20200302235709.27467-1-sean.j.christopherson@intel.com> <20200302235709.27467-37-sean.j.christopherson@intel.com> From: Paolo Bonzini Message-ID: <90df7276-e586-9082-3d80-6b45e0fb4670@redhat.com> Date: Tue, 3 Mar 2020 15:59:14 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 MIME-Version: 1.0 In-Reply-To: <20200302235709.27467-37-sean.j.christopherson@intel.com> Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org On 03/03/20 00:56, Sean Christopherson wrote: > Move the clearing of the GBPAGE CPUID bit into VMX to eliminate an > instance of the undesirable "unsigned f_* = *_supported ? F(*) : 0" > pattern in the common CPUID handling code, and to pave the way toward > eliminating ->get_lpage_level(). > > No functional change intended. And no functional change is done indeed but there is a preexisting bug that should be fixed. cpu_has_vmx_ept_1g_page() has no relationship to whether 1GB pages should be marked as supported in CPUID. This has no ill effect because we're only clearing the bit, but it results in 1GB pages not being available when EPT is disabled (even though they are actually supported thanks to shadowing). The right fix should be this: diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 84b9a488a443..8bbba8eb4ce5 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -416,8 +416,7 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function) int r, i, max_idx; unsigned f_nx = is_efer_nx() ? F(NX) : 0; #ifdef CONFIG_X86_64 - unsigned f_gbpages = (kvm_x86_ops->get_lpage_level() == PT_PDPE_LEVEL) - ? F(GBPAGES) : 0; + unsigned f_gbpages = F(GBPAGES); unsigned f_lm = F(LM); #else unsigned f_gbpages = 0; @@ -691,6 +690,8 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function) case 0x80000001: entry->edx &= kvm_cpuid_8000_0001_edx_x86_features; cpuid_entry_mask(entry, CPUID_8000_0001_EDX); + if (!tdp_enabled) + cpuid_entry_set(entry, X86_FEATURE_GBPAGES); entry->ecx &= kvm_cpuid_8000_0001_ecx_x86_features; cpuid_entry_mask(entry, CPUID_8000_0001_ECX); break; Paolo