Re: [RFC PATCH v3 4/6] psci: Add hvc call service for ptp_kvm.

From: Paolo Bonzini
Date: Wed Oct 09 2019 - 05:13:42 EST


On 09/10/19 10:18, Jianyong Wu (Arm Technology China) wrote:
> Hi Paolo,
>
>> -----Original Message-----
>> From: Paolo Bonzini <pbonzini@xxxxxxxxxx>
>> Sent: Wednesday, October 9, 2019 2:36 PM
>> To: Jianyong Wu (Arm Technology China) <Jianyong.Wu@xxxxxxx>; Marc
>> Zyngier <maz@xxxxxxxxxx>; netdev@xxxxxxxxxxxxxxx; yangbo.lu@xxxxxxx;
>> john.stultz@xxxxxxxxxx; tglx@xxxxxxxxxxxxx; sean.j.christopherson@xxxxxxxxx;
>> richardcochran@xxxxxxxxx; Mark Rutland <Mark.Rutland@xxxxxxx>; Will
>> Deacon <Will.Deacon@xxxxxxx>; Suzuki Poulose
>> <Suzuki.Poulose@xxxxxxx>
>> Cc: linux-kernel@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; Steve Capper
>> <Steve.Capper@xxxxxxx>; Kaly Xin (Arm Technology China)
>> <Kaly.Xin@xxxxxxx>; Justin He (Arm Technology China)
>> <Justin.He@xxxxxxx>; nd <nd@xxxxxxx>; linux-arm-
>> kernel@xxxxxxxxxxxxxxxxxxx
>> Subject: Re: [RFC PATCH v3 4/6] psci: Add hvc call service for ptp_kvm.
>>
>> On 09/10/19 07:21, Jianyong Wu (Arm Technology China) wrote:
>>> As ptp_kvm clock has fixed to arm arch system counter in patch set v4,
>>> we need check if the current clocksource is system counter when return
>>> clock cycle in host, so a helper needed to return the current
>>> clocksource. Could I add this helper in next patch set?
>>
>> You don't need a helper. You need to return the ARM arch counter
>> clocksource in the struct system_counterval_t that you return.
>> get_device_system_crosststamp will then check that the clocksource
>> matches the active one.
>
> We must ensure both of the host and guest using the same clocksource.
> get_device_system_crosststamp will check the clocksource of guest and we also need check
> the clocksource in host, and struct type can't be transferred from host to guest using arm hypercall.
> now we lack of a mechanism to check the current clocksource. I think this will be useful if we add one.

Got it---yes, I think adding a struct clocksource to struct
system_time_snapshot would make sense. Then the hypercall can just use
ktime_get_snapshot and fail if the clocksource is not the ARM arch counter.

John (Stultz), does that sound good to you? The context is that
Jianyong would like to add a hypercall that returns a (cycles,
nanoseconds) pair to the guest. On x86 we're relying on the vclock_mode
field that is already there for the vDSO, but being able to just use
ktime_get_snapshot would be much nicer.

Paolo