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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html