[PATCH v5 11/13] KVM: arm64: Provide userspace access to the physical counter offset

Oliver Upton oupton at google.com
Fri Jul 30 09:48:31 PDT 2021


On Fri, Jul 30, 2021 at 9:18 AM Marc Zyngier <maz at kernel.org> wrote:
> You want the ARM FVP model, or maybe even the Foundation model. It has
> support all the way to ARMv8.7 apparently. I personally use the FVP,
> get in touch offline and I'll help you with the setup.
>
> In general, I tend to trust the ARM models a lot more than QEMU for
> the quality of the emulation. You can tune it in some bizarre way
> (the cache modelling is terrifying), and it will definitely do all
> kind of crazy reordering and speculation.

Awesome, thanks. I'll give this a try.

>
> >
> > > I really dislike the fallback to !vhe here. I'd rather you
> > > special-case the emulated ptimer in the VHE case:
> > >
> > >         if (has_vhe()) {
> > >                 map->direct_vtimer = vcpu_vtimer(vcpu);
> > >                 if (!timer_get_offset(vcpu_ptimer(vcpu)))
> > >                         map->direct_ptimer = vcpu_ptimer(vcpu);
> > >                         map->emul_ptimer = NULL;
> > >                 } else {
> > >                         map->direct_ptimer = NULL;
> > >                         map->emul_ptimer = vcpu_ptimer(vcpu);
> > >                 }
> > >         } else {
> >
> > Ack.
> >
> > > and you can drop the timer_emulation_required() helper which doesn't
> > > serve any purpose.
> >
> > Especially if I add ECV to this series, I'd prefer to carry it than
> > open-code the check for CNTPOFF && !ECV in get_timer_map(). Do you
> > concur? I can tighten it to ptimer_emulation_required() and avoid
> > taking an arch_timer context if you prefer.
>
> Sure, whatever you prefer. I'm not set on one way or another, but in
> the above case, it was clearly easier to get rid of the helper.

Agreed, it made sense to prune before.

> There has been a trap, so that already was a context synchronisation
> event. but it would be pretty common for the counter to be speculated
> way early, when entering EL2. That's not the end of the world, but
> that's not an accurate emulation. You'd want it to be as close as
> possible to the reentry point into the guest.

Cool, I'll add the barrier to kick the can closer to guest entry.

--
Thanks,
Oliver



More information about the linux-arm-kernel mailing list