From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935942AbdIYOZD (ORCPT ); Mon, 25 Sep 2017 10:25:03 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55374 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933355AbdIYOZB (ORCPT ); Mon, 25 Sep 2017 10:25:01 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 9950C12988C Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=pbonzini@redhat.com Subject: Re: [PATCH v1 1/4] KVM/vmx: re-write the msr auto switch feature To: Wei Wang , virtualization@lists.linux-foundation.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, mst@redhat.com, rkrcmar@redhat.com, ak@linux.intel.com, mingo@redhat.com References: <1506314696-4632-1-git-send-email-wei.w.wang@intel.com> <1506314696-4632-2-git-send-email-wei.w.wang@intel.com> <7f9d54dd-546a-548f-5425-e4151e09fbdc@redhat.com> <59C8FE6E.7070503@intel.com> From: Paolo Bonzini Message-ID: Date: Mon, 25 Sep 2017 16:24:53 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: <59C8FE6E.7070503@intel.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Mon, 25 Sep 2017 14:25:01 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 25/09/2017 15:02, Wei Wang wrote: > On 09/25/2017 07:54 PM, Paolo Bonzini wrote: >> On 25/09/2017 06:44, Wei Wang wrote: >>>   +static void update_msr_autoload_count_max(void) >>> +{ >>> +    u64 vmx_msr; >>> +    int n; >>> + >>> +    /* >>> +     * According to the Intel SDM, if Bits 27:25 of >>> MSR_IA32_VMX_MISC is >>> +     * n, then (n + 1) * 512 is the recommended max number of MSRs >>> to be >>> +     * included in the VMExit and VMEntry MSR auto switch list. >>> +     */ >>> +    rdmsrl(MSR_IA32_VMX_MISC, vmx_msr); >>> +    n = ((vmx_msr & 0xe000000) >> 25) + 1; >>> +    msr_autoload_count_max = n * KVM_VMX_DEFAULT_MSR_AUTO_LOAD_COUNT; >>> +} >>> + >> >> Any reasons to do this if it's unlikely that we'll ever update more than >> 512 MSRs? >> >> Paolo > > It isn't a must to allocate memory for 512 MSRs, but I think it would > be good to allocate memory at least for 128 MSRs, because on skylake > we have 32 triplets of MSRs (FROM/TO/INFO), which are 96 in total > already. > > The disadvantage is that developers would need to manually calculate > and change the number carefully when they need to add new MSRs for > auto switching in the future. So, if consuming a little bit more > memory isn't a concern, I think we can directly allocate memory based > on what's recommended by the hardware. Sure. I was just thinking that it's unnecessary to actually use VMX_MISC; sticking to one-page allocations is nicer. Paolo