Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933982AbbHDNPr (ORCPT ); Tue, 4 Aug 2015 09:15:47 -0400 Received: from mga14.intel.com ([192.55.52.115]:22643 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933232AbbHDNPo (ORCPT ); Tue, 4 Aug 2015 09:15:44 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.15,608,1432623600"; d="scan'208";a="535796215" Subject: Re: [PATCH 6/9] KVM: MMU: introduce the framework to check reserved bits on sptes To: Paolo Bonzini References: <1438685961-8107-1-git-send-email-guangrong.xiao@linux.intel.com> <1438685961-8107-7-git-send-email-guangrong.xiao@linux.intel.com> <55C0AC9C.6070606@redhat.com> Cc: gleb@kernel.org, mtosatti@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org From: Xiao Guangrong Message-ID: <55C0B9B1.9070504@linux.intel.com> Date: Tue, 4 Aug 2015 21:10:09 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 MIME-Version: 1.0 In-Reply-To: <55C0AC9C.6070606@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1609 Lines: 52 On 08/04/2015 08:14 PM, Paolo Bonzini wrote: > > > On 04/08/2015 12:59, Xiao Guangrong wrote: >> +/* >> + * the page table on host is the shadow page table for the page >> + * table in guest or amd nested guest, its mmu features completely >> + * follow the features in guest. >> + */ >> +void >> +reset_shadow_rsvds_bits_mask(struct kvm_vcpu *vcpu, struct kvm_mmu *context) >> +{ >> + __reset_rsvds_bits_mask(vcpu, &context->shadow_rsvd_check, >> + boot_cpu_data.x86_phys_bits, >> + context->shadow_root_level, context->nx, > > This should be cpu_has_nx, I think. cpu_has_nx() checks the feature on host CPU, however, this is the shadow page table which completely follow guest's features. E.g, if guest does not execution-protect the physical page, then KVM does not do it either. > >> + guest_cpuid_has_gbpages(vcpu), > > This should be cpu_has_gbpages. E.g, if guest does not use 1G page size, it's also not used in shadow page table. > >> is_pse(vcpu)); > > This should be cpu_has_pse. E.g, guest does no use 4M page size, then KVM does not use it either. BTW, cpu_pse only hurts 32 bit page table which is not used by shadow page table (32 PAE and 64 Long mode are used in shadow page). Only tdp only follows host CPU's features, KVM does not use NX to protect the page, so i always mark it as false in reset_tdp_shadow_rsvds_bits_mask(). -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/