于 2012年11月14日 05:22, Marcelo Tosatti 写道: > On Thu, Nov 01, 2012 at 01:55:04PM +0800, zhangyanfei wrote: >> 于 2012年10月31日 17:01, Hatayama, Daisuke 写道: >>> >>> >>>> -----Original Message----- >>>> From: kexec-bounces@xxxxxxxxxxxxxxxxxxx >>>> [mailto:kexec-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of zhangyanfei >>>> Sent: Wednesday, October 31, 2012 12:34 PM >>>> To: x86@xxxxxxxxxx; kexec@xxxxxxxxxxxxxxxxxxx; Avi Kivity; Marcelo >>>> Tosatti >>>> Cc: linux-kernel@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx >>>> Subject: [PATCH v3 2/2] KVM: make crash_clear_loaded_vmcss valid when >>>> loading kvm_intel module >>>> >>>> Signed-off-by: Zhang Yanfei <zhangyanfei@xxxxxxxxxxxxxx> >>> >>> [...] >>> >>>> @@ -7230,6 +7231,10 @@ static int __init vmx_init(void) >>>> if (r) >>>> goto out3; >>>> >>>> +#ifdef CONFIG_KEXEC >>>> + crash_clear_loaded_vmcss = vmclear_local_loaded_vmcss; >>>> +#endif >>>> + >>> >>> Assignment here cannot cover the case where NMI is initiated after VMX is on in kvm_init and before vmclear_local_loaded_vmcss is assigned, though rare but can happen. >>> >> >> By saying "VMX is on in kvm init", you mean kvm_init enables the VMX feature in the logical processor? >> No, only there is a vcpu to be created, kvm will enable the VMX feature. >> >> I think there is no difference with this assignment before or after kvm_init because the vmcs linked >> list must be empty before vmx_init is finished. > > The list is not initialized before hardware_enable(), though. Should > move the assignment after that. > > Also, it is possible that the loaded_vmcss_on_cpu list is being modified > _while_ crash executes say via NMI, correct? If that is the case, better > flag that the list is under manipulation so the vmclear can be skipped. > Thanks for your comments. In the new patchset, I didn't move the crash_clear_loaded_vmcss assignment. I added a new percpu variable vmclear_skipped to indicate everything: 1. Before the loaded_vmcss_on_cpu list is initialized, vmclear_skipped is 1 and this means if the machine crashes and doing kdump, crash_clear_loaded_vmcss still will not be called. 2. If the loaded_vmcss_on_cpu list is under manipulation, vmclear_skipped is set to 1 and after the manipulation is finished, the variable is set to 0. 3. After all loaded vmcss are vmcleared, vmclear_skipped is set to 1. So we needn't repeat to vmclear loaded vmcss in kdump path. Please refer to the new version of the patchset I sent. If you have any suggestions, that'll be helpful. Thanks Zhang -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html