From mboxrd@z Thu Jan 1 00:00:00 1970 From: Keir Fraser Subject: Re: [PATCH 06/16] vmx: nest: handling VMX instruction exits Date: Wed, 15 Sep 2010 09:15:16 +0100 Message-ID: References: <1A42CE6F5F474C41B63392A5F80372B22A8C2219@shsmsx501.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1A42CE6F5F474C41B63392A5F80372B22A8C2219@shsmsx501.ccr.corp.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Dong, Eddie" , "He, Qing" Cc: Tim Deegan , "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On 15/09/2010 08:56, "Dong, Eddie" wrote: >> that the partial decode from vmexit reason saves you much at all, and >> you might as well go the whole hog and do full decode. I don't see >> much saving from a hacky middle-ground. > > So how about we reuse some functions in x86 emulate like this one? Ah, well, now I look at your patch 06/16 properly, I think it's clear and self-contained as it is. Your private enumerations within nest.c simply serve to document the format of the decoded instruction provided to you via fields in the VMCS. I wouldn't be inclined to change it at all, unless Tim really has strong objections about it. It's not like you're defining namespaces for new abstractions you have conjured from thin air -- they correspond directly to a hardware-defined decode format. Defining enumerations on top of that is *good*, imo. I would take 06/16 as it stands. -- Keir > static enum x86_segment > decode_segment(uint8_t modrm_reg) > { > switch ( modrm_reg ) > { > case 0: return x86_seg_es; > case 1: return x86_seg_cs; > case 2: return x86_seg_ss; > case 3: return x86_seg_ds; > case 4: return x86_seg_fs; > case 5: return x86_seg_gs; > default: break; > } > return decode_segment_failed; > } > > Thx, Eddie