Re: [RFC PATCH v12 10/11] arm64: add mechanism to let user choose which counter to return

From: Marc Zyngier
Date: Mon May 25 2020 - 11:28:26 EST

On 2020-05-25 15:18, Jianyong Wu wrote:
Hi Marc,

-----Original Message-----
From: Marc Zyngier <maz@xxxxxxxxxx>
Sent: Monday, May 25, 2020 5:17 PM
To: Richard Cochran <richardcochran@xxxxxxxxx>; Jianyong Wu
Cc: netdev@xxxxxxxxxxxxxxx;; john.stultz@xxxxxxxxxx;
tglx@xxxxxxxxxxxxx; pbonzini@xxxxxxxxxx; sean.j.christopherson@xxxxxxxxx;
Mark Rutland <Mark.Rutland@xxxxxxx>; will@xxxxxxxxxx; Suzuki Poulose
<Suzuki.Poulose@xxxxxxx>; Steven Price <Steven.Price@xxxxxxx>; linux-
kernel@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx;
kvmarm@xxxxxxxxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; Steve Capper
<Steve.Capper@xxxxxxx>; Kaly Xin <Kaly.Xin@xxxxxxx>; Justin He
<Justin.He@xxxxxxx>; Wei Chen <Wei.Chen@xxxxxxx>; nd <nd@xxxxxxx>
Subject: Re: [RFC PATCH v12 10/11] arm64: add mechanism to let user
choose which counter to return

On 2020-05-24 03:11, Richard Cochran wrote:
> On Fri, May 22, 2020 at 04:37:23PM +0800, Jianyong Wu wrote:
>> In general, vm inside will use virtual counter compered with host use
>> phyical counter. But in some special scenarios, like nested
>> virtualization, phyical counter maybe used by vm. A interface added
>> in ptp_kvm driver to offer a mechanism to let user choose which
>> counter should be return from host.
> Sounds like you have two time sources, one for normal guest, and one
> for nested. Why not simply offer the correct one to user space
> automatically? If that cannot be done, then just offer two PHC
> devices with descriptive names.

There is no such thing as a distinction between nested or non-nested.
Both counters are available to the guest at all times, and said guest can
choose whichever it wants to use. So the hypervisor (KVM) has to support
both counters as a reference.

It's great that we can decide which counter to return in guest kernel.
So we can abandon these code, including patch 9/11 and 10/11, that
expose the interface to userspace to do the decision.

For a Linux guest, we always know which reference we're using (the virtual
counter). So it is pointless to expose the choice to userspace at all.

So, we should throw these code of deciding counter type in linux
driver away and just keep the hypercall service of providing both
virtual counter and physical counter in linux to server non-linux
Am I right?

Exactly. We control Linux, and so far nothing is using the physical
counter directly. It is only using the virtual counter.
On the other side, this is *only* Linux. Other operating systems
will need to pick the reference clock that matches their own.
If one day we change Linux to use the physical counter, we'll
have to do the same thing.

Jazz is not dead. It just smells funny...