Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752984AbdHXPuR (ORCPT ); Thu, 24 Aug 2017 11:50:17 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45334 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751168AbdHXPuP (ORCPT ); Thu, 24 Aug 2017 11:50:15 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com A8F125277A Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=pbonzini@redhat.com Subject: Re: [PATCH v3 2/5] KVM: MMU: check guest CR3 reserved bits based on its physical address width. To: Yu Zhang , kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org, rkrcmar@redhat.com, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, xiaoguangrong@tencent.com, joro@8bytes.org References: <1503577676-12345-1-git-send-email-yu.c.zhang@linux.intel.com> <1503577676-12345-3-git-send-email-yu.c.zhang@linux.intel.com> <0bce2df3-79ac-599b-19fa-8ebeaff23623@redhat.com> From: Paolo Bonzini Message-ID: <35e285e7-168a-25e6-1053-c005da18c103@redhat.com> Date: Thu, 24 Aug 2017 17:50:10 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Thu, 24 Aug 2017 15:50:15 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 529 Lines: 20 On 24/08/2017 17:23, Yu Zhang wrote: >>> >>> static inline u64 rsvd_bits(int s, int e) >>> { >>> + if (e < s) >>> + return 0; >>> + >>> return ((1ULL << (e - s + 1)) - 1) << s; >>> } >> e = s - 1 is already supported; why do you need e <= s - 2? > > Sorry? I do not quite understand. When will e = s - 1? Is there any case where e < s? I can see that MAXPHYADDR=63 gives rsvd_bits(63, 62), but that works. In practice, MAXPHYADDR will never be 59 even because the PKRU bits are at bits 59..62. Paolo