Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp6615432ybf; Fri, 6 Mar 2020 01:04:15 -0800 (PST) X-Google-Smtp-Source: ADFU+vtq3QxOD3YGYjX35EmJaNPbueQmcrMavf46ZTPHmbl8TEFYiJSdrdvMs/NH0VE6ES/2TuIS X-Received: by 2002:aca:330b:: with SMTP id z11mr1794650oiz.96.1583485455529; Fri, 06 Mar 2020 01:04:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583485455; cv=none; d=google.com; s=arc-20160816; b=gRwkBwxzX341a7Ds+tGh5EjoTQ/61jhytcAytYu6MmqzNlVocBaX9nsDplQ17wWo2V skcj1q0wo/tPVvrXhbGpWKUsUnsljl+ddqbM7F5sy4eTw9JlDPPpgkn92Nqw5qfOyhDV g5IWU3YuRGWUraW4TpZHcrjrDdtjHgtK965MnCOD5AaHG7cv9kt7GixMmJa7Zt+cJxS+ k32/QO4uDNbFCwciY9ZW+jcRa8NPPxHMere6ZL7Wer8EZK4eLPYssvTcm/+D7++jVcxv hLvQlWJGlLSrtk/eFTKHap2OnitaLZoJeXonnOCuim8njeomhbp0g9Xbsg3rCMu8I5D2 EdiA== 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 :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature; bh=r6hHlu4u9pl0gr61Q0hqOcfTBLsfleChBZw4ki+HhSs=; b=t64RjLqMIn/DVggExsEZOVRmjX/EXQnC7QRUr36x2Ni1FXgjxRntRNGT9oGjs9H/Vv s1kjP9jo0VmVIYGXWACEF1qcfC6WQwFq10p1tmznaMWQFto6D7pUhrkLAyGskDxoifZQ IntmA+OMti3fwuCripo6JVJQJctaq9WF2ZiLABXV46jowFvXb9NoUKyuBogrDmrf2zUz 4ib0W6xqyierTtrqNwUdaSRJ4yTD/K65GwPtnhnagu5LOy5qIT6ILb4211Q+dSmqDa5j 74Oqd6HnTfGbQnqPjyNZNPNXTOArJ3M+cb5px/C/D2Uf9x4RsnbfOYSb3kiskh/2ZioE UaGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=hIMd7g9E; 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=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l14si1022894ots.115.2020.03.06.01.04.03; Fri, 06 Mar 2020 01:04:15 -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=@redhat.com header.s=mimecast20190719 header.b=hIMd7g9E; 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=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726299AbgCFJDn (ORCPT + 99 others); Fri, 6 Mar 2020 04:03:43 -0500 Received: from us-smtp-1.mimecast.com ([207.211.31.81]:36949 "EHLO us-smtp-delivery-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726025AbgCFJDn (ORCPT ); Fri, 6 Mar 2020 04:03:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583485422; 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=r6hHlu4u9pl0gr61Q0hqOcfTBLsfleChBZw4ki+HhSs=; b=hIMd7g9EAM5NflZCGSNIiP5ipNk234D4ro5J3DxdtU06XAUZuYyC3hrmwdHttv+MvK3qBO IoPgmHWInHgLL8Ihcc+On2WOOEsmtJAtyaKyf96hEGJRfl5H6eswf7QYgi8CTR/XsrFlxR nt5zVLD/ZUzjJ+bEd7YzNyMYUtlaxM4= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-97-qKHIxJqZOFi_uU3Lm9Ox9Q-1; Fri, 06 Mar 2020 04:03:40 -0500 X-MC-Unique: qKHIxJqZOFi_uU3Lm9Ox9Q-1 Received: by mail-wm1-f69.google.com with SMTP id w12so381640wmc.3 for ; Fri, 06 Mar 2020 01:03:40 -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=r6hHlu4u9pl0gr61Q0hqOcfTBLsfleChBZw4ki+HhSs=; b=krzuEMTOd5OVSIT1dOjvg9DKs7zkgPivWw4o0IRjceYCVFcQ0hNCoWS0+IoAgJ+yPv pMO3JZF1fenUQrUk7RvKBgFNQJUsYvv0/iLQXOAhrcjH+hgTSgy6AuvUholT5CuOtzEd VVRtQUuqFo3KOYXE9FSjLhT5g79yEfNtyQDCxL1h57IGDX44Xv/43usDySP6xA8A0JB+ kfmnZaKtIrrY9dk4gjv4mNvESIybEYWStPOIFo0NMmSNxAIQKoMXrjwZe0qBNYUTHtpw Bhx6G++ypVeQ1Z8A8e9iWU0+hxecWspSZiGdJjVx9u94i17r18W4v/jUPN8oIsYC07LT f57w== X-Gm-Message-State: ANhLgQ2M9MrzM2MmzqST1fBPRdnki6a1HylnrzLWYORLH4q8d7/dJB+f yIUDmF8DkdFdbh2jVPwIdQVsx92PEBYBCX9u7WZ5pR/8nur8n4EjmvpcdBZDqoCvN15/PqCsVUz 3jM8MGiZ8REx52PaZFG3wxTNj X-Received: by 2002:a7b:cc04:: with SMTP id f4mr2844683wmh.134.1583485419347; Fri, 06 Mar 2020 01:03:39 -0800 (PST) X-Received: by 2002:a7b:cc04:: with SMTP id f4mr2844629wmh.134.1583485418812; Fri, 06 Mar 2020 01:03:38 -0800 (PST) Received: from ?IPv6:2001:b07:6468:f312:b99a:4374:773d:f32e? ([2001:b07:6468:f312:b99a:4374:773d:f32e]) by smtp.gmail.com with ESMTPSA id v131sm13743426wme.23.2020.03.06.01.03.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 06 Mar 2020 01:03:38 -0800 (PST) Subject: Re: [PATCH v2 4/7] KVM: x86: Fix CPUID range checks for Hypervisor and Centaur classes To: Sean Christopherson , Jim Mattson Cc: Vitaly Kuznetsov , Wanpeng Li , Joerg Roedel , kvm list , LKML , Pu Wen References: <20200305013437.8578-1-sean.j.christopherson@intel.com> <20200305013437.8578-5-sean.j.christopherson@intel.com> <20200305192532.GN11500@linux.intel.com> <20200305215149.GS11500@linux.intel.com> From: Paolo Bonzini Message-ID: <5567edf6-a04c-5810-8ed5-78a0db14b202@redhat.com> Date: Fri, 6 Mar 2020 10:03:37 +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: <20200305215149.GS11500@linux.intel.com> Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/03/20 22:51, Sean Christopherson wrote: >> Ah. So cross-vendor CPUID specifications are not supported? > Cross-vendor CPUID is sort of allowed? E.g. this plays nice with creating > a Centaur CPU on an Intel platform. My interpretation of GET_SUPPORTED... > is that KVM won't prevent enumerating what you want in CPUID, but it only > promises to correctly support select leafs. But in practice does this change anything? If the vendor is not Centaur it's unlikely that there is a 0xc0000000 leaf. The 0x80000000 bound is certainly not going to be at 0xc0000000 or beyond, and likewise to 0xc0000000 bound is not going to be at 0xd0000000 or beyond. So I'm not sure if anything is lost from this simplification: diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index ed5e0bda672c..f43a8875c126 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -963,8 +963,7 @@ static bool cpuid_function_in_range(struct kvm_vcpu *vcpu, u32 function) if (function >= 0x40000000 && function <= 0x4fffffff) class = kvm_find_cpuid_entry(vcpu, function & 0xffffff00, 0); - else if (function >= 0xc0000000 && function <= 0xcfffffff && - is_guest_vendor_centaur(basic->ebx, basic->ecx, basic->edx)) + else if (function >= 0xc0000000) class = kvm_find_cpuid_entry(vcpu, 0xc0000000, 0); else class = kvm_find_cpuid_entry(vcpu, function & 0x80000000, 0); diff --git a/arch/x86/kvm/kvm_emulate.h b/arch/x86/kvm/kvm_emulate.h index 12ddfa493bae..3cb50eda606d 100644 --- a/arch/x86/kvm/kvm_emulate.h +++ b/arch/x86/kvm/kvm_emulate.h @@ -424,13 +424,6 @@ static inline bool is_guest_vendor_hygon(u32 ebx, u32 ecx, u32 edx) edx == X86EMUL_CPUID_VENDOR_HygonGenuine_edx; } -static inline bool is_guest_vendor_centaur(u32 ebx, u32 ecx, u32 edx) -{ - return ebx == X86EMUL_CPUID_VENDOR_CentaurHauls_ebx && - ecx == X86EMUL_CPUID_VENDOR_CentaurHauls_ecx && - edx == X86EMUL_CPUID_VENDOR_CentaurHauls_edx; -} - enum x86_intercept_stage { X86_ICTP_NONE = 0, /* Allow zero-init to not match anything */ X86_ICPT_PRE_EXCEPT,