From mboxrd@z Thu Jan 1 00:00:00 1970 From: Avi Kivity Subject: Re: [PATCH 01/15] KVM: PPC: Make register read/write wrappers always work Date: Mon, 08 Mar 2010 15:50:42 +0200 Message-ID: <4B9500B2.7030708@redhat.com> References: <1267807842-3751-1-git-send-email-agraf@suse.de> <1267807842-3751-2-git-send-email-agraf@suse.de> <4B94FE41.1040904@redhat.com> <4B94FF56.9060200@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: kvm-ppc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Alexander Graf Return-path: In-Reply-To: <4B94FF56.9060200-l3A5Bk7waGM@public.gmane.org> Sender: kvm-ppc-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: kvm.vger.kernel.org On 03/08/2010 03:44 PM, Alexander Graf wrote: > Avi Kivity wrote: > >> On 03/05/2010 06:50 PM, Alexander Graf wrote: >> >>> We have wrappers to do for example gpr read/write accesses with, >>> because the contents of registers could be either in the PACA >>> or in the VCPU struct. >>> >>> There's nothing that says we have to have the guest vcpu loaded >>> when using these wrappers though, so let's introduce a flag that >>> tells us whether we're inside a vcpu_load context. >>> >>> >>> >> On x86 we always access registers within vcpu_load() context. That >> simplifies things. Does this not apply here? >> >> Even so, sometimes guest registers are present on the cpu, and >> sometimes in shadow variables (for example, msrs might be loaded or >> not). The approach here is to always unload and access the variable >> data. See for example vmx_set_msr() calling vmx_load_host_state() >> before accessing msrs. >> >> Seems like this could reduce the if () tree? >> > Well - it would probably render this particular patch void. In fact, I > think it is already useless thanks to the other "always do vcpu_load" patch. > > As far as the already existing if goes, we can't really get rid of that. > I want to be fast in the instruction emulation. Copying around the > registers won't help there. > So do it the other way around. Always load the registers (of course, do nothing if already loaded) and then access them in just one way. I assume during emulation the registers will always be loaded? -- error compiling committee.c: too many arguments to function