Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp534197pxf; Thu, 25 Mar 2021 08:52:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzW0XhM/pig6J6dKfeizyex3O9zIKoDQBcT3sl/MW0cKBr+Gn6VwGRk3MNGJZYyUPWmspue X-Received: by 2002:a17:906:6703:: with SMTP id a3mr10073013ejp.240.1616687527608; Thu, 25 Mar 2021 08:52:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616687527; cv=none; d=google.com; s=arc-20160816; b=YTQ3BXPs6gAr3nEFUvFvBvUQUJ7hPHnbZiD4joMR89nkAsV40S51M88jzlpTUybEIz cn4k6KEt5PYoQ7piS5nUL/Abw+tbH2b/qZPj+AbIwt6ujHDnWBMn2jjDoQyIcglHGA1A NZtm/JZ1MgD/Buk212pw+uVXQhpAfHRTAROky4gEg9rGGEGWM2Y2hc7136nuzn78Xnez rZemj/IO/n+xUMcWkomwKi/F12lKz9WqQjW22YbZlYtty9/YyZrl2iOO3p7S9VmGKuvb uZXNlPG2QFQHgbbcZQUzd09J5rGXIylGK7l7e1xXD8/jFxV22UUd8xz4b0OQqY4R2Lpo P9Qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=+lt5248YpMtf4xb83RL4Cd0DB6PM3CB7sU5dXZjCKCg=; b=HaH6JqEJE7NEZXafXu7+Y0groAggJHWYUAvl68zC5mL1mgEU9yoJBlEMy17YoHQCzL PXuaw9iEDldgXgPeDS/Tq3Yedn+YOQNiNI7oYF4lRZWND43rEWPvzzpA+70P27U+/MKy mpNMt6YpBV64TNaGOqVkaIAaDk53SNX2WI7WxGN0iowyhrVCLKdjxaxMfM+u7b0zF3rf eXAPUWJJ8zsvSOkAlo7A347uKVNwFGitJWZoTAuJzrj8GHU31MDwTH5lBMCgcSA/6iXO HJmOUG5nHv1AVu8p7u3UGMsOjoJW8/I79FZt57JZoASGs9ieoFYjxK92PZsSww1FLNbY 2DlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=H7MhmTlD; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id l17si4370191eda.91.2021.03.25.08.51.43; Thu, 25 Mar 2021 08:52:07 -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=@google.com header.s=20161025 header.b=H7MhmTlD; 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=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231208AbhCYPty (ORCPT + 99 others); Thu, 25 Mar 2021 11:49:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230229AbhCYPtW (ORCPT ); Thu, 25 Mar 2021 11:49:22 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DFA2C06174A for ; Thu, 25 Mar 2021 08:49:22 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id h3so2451183pfr.12 for ; Thu, 25 Mar 2021 08:49:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=+lt5248YpMtf4xb83RL4Cd0DB6PM3CB7sU5dXZjCKCg=; b=H7MhmTlD65xIev+aJ32j6Bto7F/9TwLWCXxVg0nspUvRLHREsXHuICULh01gli1BuV Pa8ULuYRVVIs68flsZwdtqVHvVAHyCKsUGAMvWsI5sm5K/XCE9qQb2JKW1t83ORYZjnt 6WOVccT0+PoHp5as8mGLacMQar3FDl7RQ5GZ2p3O40OCzY+yhRmTu5jWo0peD4ZN22qK fcM0oHqFLDsJQKOHuYLULG2QJzxIDf/4jfJnrIX2xq/ZvpwUMRq8ZUb48x7QN5ysvCdU sBoulpcmnapJVCuqsIKC9oiospjjecMUWhgLQtcha9viPRlwP9hUv/72uJu7rHzq0wgd 9k5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=+lt5248YpMtf4xb83RL4Cd0DB6PM3CB7sU5dXZjCKCg=; b=GNyOWoZKsQ7hKKMlmo7RlwN/+ygzUcJ8uLKD9U0sY11do9WPqEhUAszIqzfswhYf/W WAvqy/VrQxVBuLZ94rCFmlNM3XsUeqQw9ImD2GGcXfaV1BP8m09/0lj+zCzWjzzyVDjS zA4L6eAZRGdgjw3hIZV0nPR395ZXyV1vo25lZm0urmpzEl7Di1zzT9YkuiEJDjRhuL7o bf1zkO56VP+kEKwjyv2gFNoOq3YoHq7NuCOhsuso9ZoJ6kVmdCkSKOkxnsQQdDPPcR+c qD10BkIs5Pd7vEzp6uQL2uGlfQaGMnFJmY1MdHM3535N+owaLeHHze08kHmMtKInzJsc zTUA== X-Gm-Message-State: AOAM530kPCrZZEIHljIGcz7hRqoz0/YUvh85ivZxdE7q6OqLrh6OJ7C2 BBPSN+xpeXEM8LAFIM+FrFqdWw== X-Received: by 2002:a63:3689:: with SMTP id d131mr5251886pga.261.1616687361920; Thu, 25 Mar 2021 08:49:21 -0700 (PDT) Received: from google.com (240.111.247.35.bc.googleusercontent.com. [35.247.111.240]) by smtp.gmail.com with ESMTPSA id x19sm6334521pfi.220.2021.03.25.08.49.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Mar 2021 08:49:21 -0700 (PDT) Date: Thu, 25 Mar 2021 15:49:17 +0000 From: Sean Christopherson To: Haiwei Li Cc: LKML , kvm list , Paolo Bonzini , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , Haiwei Li Subject: Re: [PATCH] KVM: VMX: Check the corresponding bits according to the intel sdm Message-ID: References: <20210323023726.28343-1-lihaiwei.kernel@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 25, 2021, Haiwei Li wrote: > On Tue, Mar 23, 2021 at 10:37 AM wrote: > > > > From: Haiwei Li > > > > According to IA-32 SDM Vol.3D "A.1 BASIC VMX INFORMATION", two inspections > > are missing. > > * Bit 31 is always 0. Earlier versions of this manual specified that the > > VMCS revision identifier was a 32-bit field in bits 31:0 of this MSR. For > > all processors produced prior to this change, bit 31 of this MSR was read > > as 0. > > * The values of bits 47:45 and bits 63:57 are reserved and are read as 0. > > > > Signed-off-by: Haiwei Li > > --- > > arch/x86/kvm/vmx/vmx.c | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > > index 32cf828..0d6d13c 100644 > > --- a/arch/x86/kvm/vmx/vmx.c > > +++ b/arch/x86/kvm/vmx/vmx.c > > @@ -2577,6 +2577,20 @@ static __init int setup_vmcs_config(struct vmcs_config *vmcs_conf, > > > > rdmsr(MSR_IA32_VMX_BASIC, vmx_msr_low, vmx_msr_high); > > > > + /* > > + * IA-32 SDM Vol 3D: Bit 31 is always 0. > > + * For all earlier processors, bit 31 of this MSR was read as 0. > > + */ > > + if (vmx_msr_low & (1u<<31)) > > + return -EIO; > > Drop this code as Jim said. > > > + > > + /* > > + * IA-32 SDM Vol 3D: bits 47:45 and bits 63:57 are reserved and are read > > + * as 0. > > + */ > > + if (vmx_msr_high & 0xfe00e000) > > + return -EIO; > > Is this ok? Can we pick up the part? :) No. "Reserved and are read as 0" does not guarantee the bits will always be reserved. There are very few bits used for feature enumeration in x86 that are guaranteed to be '0' for all eternity. The whole point of reserving bits in registers is so that the CPU vendor, Intel in this case, can introduce new features and enumerate them to software without colliding with existing features or breaking software. E.g. if Intel adds a new feature and uses any of these bits to enumerate the feature, this check would prevent KVM from loading on CPUs that support the feature.