On 2013/11/30 18:54, Gleb Natapov wrote: > On Sat, Nov 30, 2013 at 01:59:24AM +0800, Wang Hui wrote: >> After applying Paolo's patch, vpmu's data was migrated correctly. >> https://patchwork.kernel.org/patch/2850813/ >> >> But when I wrote a test module to make IA32_PMC1 to count the event of unhalted >> cpu-cycles, after migration the value of IA32_PMC1 never grows up again. I found >> that after migration perf_event was created exactly, but when it was created, >> "current" is qemu's main thread which won't enter no-root mode, so the count of >> perf_event will never increase. >> >> I have tried pid in the struct of kvm_vcpu to get the vcpu thread's task_struct, >> but after migration when create perf_event, pid is pointed to qemu's main thread >> but not vcpu thread because of the pid switching in vcpu_load. I don't understand >> this very well, I think vcpu is created in qemu_kvm_cpu_thread_fn, which is the >> vcpu thread, use the pid of current is enough, why switch is needed? >> > > Because the fact that thread that creates vcpu is the one that will > "run" the vcpu is QEMU implementation detail. Other userspace may create > all vcpus in one thread and then handle each one to a dedicated thread. Your > code will not work for such userspace. You need to use pid and reprogram all mmu > counters when it changes. > Thank you Gleb, my thought was too simple, I will try pid. -- 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