Re: [PATCH 2/4] KVM: VMX: Add functions to fill VMCSINFO
On 04/11/2012 01:34 PM, zhangyanfei wrote: > 于 2012年04月11日 16:48, Avi Kivity 写道: > > On 04/11/2012 04:50 AM, zhangyanfei wrote: > >> This patch is to implement the feature that at initialization of > >> kvm_intel module, fills VMCSINFO with a VMCS revision identifier, > >> and encoded offsets of VMCS fields. The reason why we put the > >> VMCSINFO processing at the initialization of kvm_intel module > >> is that it's dangerous to rob VMX resources while kvm module is > >> loaded. > > > > Maybe it should be done by a separate module. > > > > If we put vmcsinfo processing at the initialization of kvm_intel module, > as soon as the kvm_intel module is loaded, VMCSINFO is filled. And it is > because vmcsinfo processing is at the initialization of kvm_intel module, > no kvm guests are running, so it will not rob any VMX resources. > > If it is done by a separate module, I am afraid this module may not be > loaded when the kernel needs VMCSINFO. > You can make the module autoload when the vmx cpufeature is detected. But then there is an ordering problem wrt kvm-intel. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/4] KVM: VMX: Add functions to fill VMCSINFO
于 2012年04月11日 16:48, Avi Kivity 写道: > On 04/11/2012 04:50 AM, zhangyanfei wrote: >> This patch is to implement the feature that at initialization of >> kvm_intel module, fills VMCSINFO with a VMCS revision identifier, >> and encoded offsets of VMCS fields. The reason why we put the >> VMCSINFO processing at the initialization of kvm_intel module >> is that it's dangerous to rob VMX resources while kvm module is >> loaded. > > Maybe it should be done by a separate module. > If we put vmcsinfo processing at the initialization of kvm_intel module, as soon as the kvm_intel module is loaded, VMCSINFO is filled. And it is because vmcsinfo processing is at the initialization of kvm_intel module, no kvm guests are running, so it will not rob any VMX resources. If it is done by a separate module, I am afraid this module may not be loaded when the kernel needs VMCSINFO. >> + >> +kvm_cpu_vmxon(__pa(per_cpu(vmxarea, raw_smp_processor_id(; >> +vmcs_load(vmcs); > > Should do this after writing into the vmcs directly (vmcs_load() may > cache some information for vmcs_read()). > Hmm, thanks for pointing this. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 2/4] KVM: VMX: Add functions to fill VMCSINFO
On 04/11/2012 04:50 AM, zhangyanfei wrote: > This patch is to implement the feature that at initialization of > kvm_intel module, fills VMCSINFO with a VMCS revision identifier, > and encoded offsets of VMCS fields. The reason why we put the > VMCSINFO processing at the initialization of kvm_intel module > is that it's dangerous to rob VMX resources while kvm module is > loaded. Maybe it should be done by a separate module. > + > + kvm_cpu_vmxon(__pa(per_cpu(vmxarea, raw_smp_processor_id(; > + vmcs_load(vmcs); Should do this after writing into the vmcs directly (vmcs_load() may cache some information for vmcs_read()). > + > + VMCSINFO_REVISION_ID(vmcs->revision_id); > + > + /* > + * Write encoded offsets into VMCS data for later vmcs_read. > + */ > + for (offset = FIELD_START; offset < vmcs_config.size; > + offset += sizeof(u16)) > + *(u16 *)((char *)vmcs + offset) = ENCODING_OFFSET(offset); This assumes vmcs field contents use the same encoding as vmread/vmwrite. I guess it's a reasonable assumption. -- error compiling committee.c: too many arguments to function -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html