Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1423469AbdD0WuM (ORCPT ); Thu, 27 Apr 2017 18:50:12 -0400 Received: from mga11.intel.com ([192.55.52.93]:10169 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423450AbdD0WuC (ORCPT ); Thu, 27 Apr 2017 18:50:02 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.37,386,1488873600"; d="scan'208";a="961946189" Message-ID: <1493333398.74182.10.camel@ranerica-desktop> Subject: Re: [v6 PATCH 03/21] x86/mpx: Do not use R/EBP as base in the SIB byte with Mod = 0 From: Ricardo Neri To: Borislav Petkov Cc: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Andrew Morton , Brian Gerst , Chris Metcalf , Dave Hansen , Paolo Bonzini , Masami Hiramatsu , Huang Rui , Jiri Slaby , Jonathan Corbet , "Michael S. Tsirkin" , Paul Gortmaker , Vlastimil Babka , Chen Yucong , Alexandre Julliard , Stas Sergeev , Fenghua Yu , "Ravi V. Shankar" , Shuah Khan , linux-kernel@vger.kernel.org, x86@kernel.org, linux-msdos@vger.kernel.org, wine-devel@winehq.org, Adam Buchbinder , Colin Ian King , Lorenzo Stoakes , Qiaowei Ren , Nathan Howard , Adan Hawthorn , Joe Perches Date: Thu, 27 Apr 2017 15:49:58 -0700 In-Reply-To: <20170426080542.pannewbvzeqn5kj6@pd.tnic> References: <20170308003254.27833-1-ricardo.neri-calderon@linux.intel.com> <20170308003254.27833-4-ricardo.neri-calderon@linux.intel.com> <20170411220816.2u3o72qnwcwq7jzc@pd.tnic> <1493172260.36058.26.camel@ranerica-desktop> <20170426080542.pannewbvzeqn5kj6@pd.tnic> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1530 Lines: 40 On Wed, 2017-04-26 at 10:05 +0200, Borislav Petkov wrote: > On Tue, Apr 25, 2017 at 07:04:20PM -0700, Ricardo Neri wrote: > > For the specific case of ModRM.mod being 0, I feel I need to clarify > > that REX.B is not decoded and if SIB.base is %r13 the base is also 0. > > Well, that all doesn't matter. The rule is this: > > ModRM.mod == 00b and ModRM.r/m == 101b -> effective address: disp32 > > See Table 2-2. "32-Bit Addressing Forms with the ModR/M Byte" in the SDM. You are right. This summarizes the rule. Then I will shorten the comment. > > So the base register is not used. How that base register is specified > then doesn't matter (undecoded REX bits or not). > > > This comment adds clarity because REX.X is decoded when determining > > SIB.index. > > Well, that's a different thing. The REX bits participating in the SIB > fields don't matter about this particular case. We only want to say that > we're returning a disp32 without a base register and the comment should > keep it simple without extraneous information. > > I know, you want to mention what Table 2-5. "Special Cases of REX > Encodings" says but we should avoid unnecessary content in the comment. > People who want details can stare at the manuals - the comment should > only document what that particular case is. > > Btw, you could write it even better: > > if (!X86_MODRM_MOD(insn->modrm.value) && X86_MODRM_RM(insn->modrm.value) == 5) > > and then it is basically a 1:1 copy of the rule from Table 2-2. It is! Thanks and BR, Ricardo