On 2/8/21 1:54 PM, Philippe Mathieu-Daudé wrote:
> On 2/8/21 1:50 PM, Claudio Fontana wrote:
>> On 2/5/21 9:14 PM, Richard Henderson wrote:
>>> On 2/4/21 6:39 AM, Claudio Fontana wrote:
>>>> @@ -6725,10 +6722,8 @@ static void x86_cpu_initfn(Object *obj)
>>>> x86_cpu_load_model(cpu, xcc->model);
>>>> }
>>>>
>>>> - /* if required, do the accelerator-specific cpu initialization */
>>>> - if (cc->accel_cpu) {
>>>> - cc->accel_cpu->cpu_instance_init(CPU(obj));
>>>> - }
>>>> + /* if required, do accelerator-specific cpu initializations */
>>>> + accel_cpu_instance_init(CPU(obj));
>>>> }
>>>
>>> Why is this only done for x86?
>>>
>>>
>>> r~
>>>
>>
>> It makes sense to include the other architectures.
>>
>> As the next step I would like to apply this to ARM, but to me it makes sense
>> to first complete Philippe's series,
>> which reshuffles things so that TCG-only / KVM-only builds are both possible
>> and error-free:
>>
>> https://www.mail-archive.com/[email protected]/msg777627.html
>
> TBH this series is very unlikely to be merged before yours,
> so go ahead... (eventually you can cherry-pick what you need
> from it).
>
Hi Philippe, Peter,
I am working on ARM right now,
splitting things between user/system, tcg/kvm.
One difficulty I found in particular is with the ARM PMU code.
Currently the PMU code is mixed in with the TCG helpers, in target/arm/helper.c.
Now, with KVM we should be using the KVM PMU, but still the KVM code currently
calls pmu_init and registers the timer:
In target/arm/cpu.c initialization we see:
"
if (arm_feature(env, ARM_FEATURE_PMU)) {
pmu_init(cpu);
if (!kvm_enabled()) {
arm_register_pre_el_change_hook(cpu, &pmu_pre_el_change, 0);
arm_register_el_change_hook(cpu, &pmu_post_el_change, 0);
}
#ifndef CONFIG_USER_ONLY
cpu->pmu_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, arm_pmu_timer_cb,
cpu);
#endif
"
Now, even for KVM, pmu_init is called and the cpu->pmu_timer is registered,
but I don't see arm_pmu_timer_cb triggering.
Is the pmu_timer really necessary also for KVM builds, or should it actually be
TCG-only?
Could you share your hints on which parts of the PMU code in helper.c should
actually be shared if any?
Thanks a lot,
Claudio