Re: [PATCH v15 8/9] doc: add ptp_kvm introduction for arm64 support

Marc Zyngier
2020-11-23T10:58:38Z

On 2020-11-11 06:22, Jianyong Wu wrote:
> PTP_KVM implementation depends on hypercall using SMCCC. So we
> introduce a new SMCCC service ID. This doc explains how does the
> ID define and how does PTP_KVM works on arm/arm64.
>
> Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
> ---
> Documentation/virt/kvm/api.rst | 9 +++++++
> Documentation/virt/kvm/arm/index.rst | 1 +
> Documentation/virt/kvm/arm/ptp_kvm.rst | 29 +++++++++++++++++++++
> Documentation/virt/kvm/timekeeping.rst | 35 ++++++++++++++++++++++++++
> 4 files changed, 74 insertions(+)
> create mode 100644 Documentation/virt/kvm/arm/ptp_kvm.rst
>
> diff --git a/Documentation/virt/kvm/api.rst
> b/Documentation/virt/kvm/api.rst
> index 36d5f1f3c6dd..9843dbcbf770 100644
> --- a/Documentation/virt/kvm/api.rst
> +++ b/Documentation/virt/kvm/api.rst
> @@ -6391,3 +6391,12 @@ When enabled, KVM will disable paravirtual
> features provided to the
> guest according to the bits in the KVM_CPUID_FEATURES CPUID leaf
> (0x40000001). Otherwise, a guest may use the paravirtual features
> regardless of what has actually been exposed through the CPUID leaf.
> +
> +8.27 KVM_CAP_PTP_KVM
> +--------------------
> +
> +:Architectures: arm64
> +
> +This capability indicates that KVM virtual PTP service is supported in
> host.
> +It must company with the implementation of KVM virtual PTP service in
> host
> +so VMM can probe if there is the service in host by checking this
> capability.
> diff --git a/Documentation/virt/kvm/arm/index.rst
> b/Documentation/virt/kvm/arm/index.rst
> index 3e2b2aba90fc..78a9b670aafe 100644
> --- a/Documentation/virt/kvm/arm/index.rst
> +++ b/Documentation/virt/kvm/arm/index.rst
> @@ -10,3 +10,4 @@ ARM
> hyp-abi
> psci
> pvtime
> + ptp_kvm
> diff --git a/Documentation/virt/kvm/arm/ptp_kvm.rst
> b/Documentation/virt/kvm/arm/ptp_kvm.rst
> new file mode 100644
> index 000000000000..bb1e6cfefe44
> --- /dev/null
> +++ b/Documentation/virt/kvm/arm/ptp_kvm.rst
> @@ -0,0 +1,29 @@
> +.. SPDX-License-Identifier: GPL-2.0
> +
> +PTP_KVM support for arm/arm64
> +=============================
> +
> +PTP_KVM is used for time sync between guest and host in a high
> precision.
> +It needs to get the wall time and counter value from the host and
> transfer these
> +to guest via hypercall service. So one more hypercall service has been
> added.
> +
> +This new SMCCC hypercall is defined as:
> +
> +* ARM_SMCCC_HYP_KVM_PTP_FUNC_ID: 0x86000001
> +
> +As both 32 and 64-bits ptp_kvm client should be supported, we choose
> SMC32/HVC32
> +calling convention.
> +
> +ARM_SMCCC_HYP_KVM_PTP_FUNC_ID:
> +
> + ============= ========== ==========
> + Function ID: (uint32) 0x86000001
> + Arguments: (uint32) ARM_PTP_PHY_COUNTER(1) or
> ARM_PTP_VIRT_COUNTER(0)
> + which indicate acquiring physical
> counter or
> + virtual counter respectively.
> + return value: (uint32) NOT_SUPPORTED(-1) or val0 and val1
> represent
> + wall clock time and val2 and val3
> represent
> + counter cycle.

This needs a lot more description:

- Which word contains what part of the data (upper/lower part of the
64bit data)
- The endianness of the data returned

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