From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [PATCH 4/5] VMX: Validate capability MSRs Date: Mon, 16 Jun 2014 13:00:28 +0200 Message-ID: <539ECE4C.9020604@redhat.com> References: <6a1106d8fefb4c808cdacc2a0632a5a55bd825b6.1402842281.git.jan.kiszka@web.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm , Bandan Das To: Jan Kiszka Return-path: Received: from mx1.redhat.com ([209.132.183.28]:57931 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750914AbaFPLAd (ORCPT ); Mon, 16 Jun 2014 07:00:33 -0400 In-Reply-To: <6a1106d8fefb4c808cdacc2a0632a5a55bd825b6.1402842281.git.jan.kiszka@web.de> Sender: kvm-owner@vger.kernel.org List-ID: Il 15/06/2014 16:24, Jan Kiszka ha scritto: > + for (n = 0; n < ARRAY_SIZE(vmx_ctl_msr); n++) { > + val = rdmsr(vmx_ctl_msr[n].index); > + default1 = vmx_ctl_msr[n].default1; > + ok = (val & default1) == default1 && > + ((((u32)val) ^ (val >> 32)) & ~(val >> 32)) == 0; Ouch, this can sure be make this more readable. Please unify these: union vmx_ctrl_pin { u64 val; struct { u32 set, clr; }; }; union vmx_ctrl_cpu { u64 val; struct { u32 set, clr; }; }; union vmx_ctrl_exit { u64 val; struct { u32 set, clr; }; }; union vmx_ctrl_ent { u64 val; struct { u32 set, clr; }; }; into a single "union vmx_ctl_msr", and use this union for val and true_val as well. Paolo > + if (ok && basic.ctrl) { > + true_val = rdmsr(vmx_ctl_msr[n].true_index); > + ok = (val >> 32) == (true_val >> 32) && > + ((u32)(val ^ true_val) & ~default1) == 0; > + } > + report(vmx_ctl_msr[n].name, ok);