xref: /linux/Documentation/virt/kvm/arm/ptp_kvm.rst (revision f4b0c4b508364fde023e4f7b9f23f7e38c663dfe)
1.. SPDX-License-Identifier: GPL-2.0
2
3PTP_KVM support for arm/arm64
4=============================
5
6PTP_KVM is used for high precision time sync between host and guests.
7It relies on transferring the wall clock and counter value from the
8host to the guest using a KVM-specific hypercall.
9
10``ARM_SMCCC_VENDOR_HYP_KVM_PTP_FUNC_ID``
11----------------------------------------
12
13Retrieve current time information for the specific counter. There are no
14endianness restrictions.
15
16+---------------------+-------------------------------------------------------+
17| Presence:           | Optional                                              |
18+---------------------+-------------------------------------------------------+
19| Calling convention: | HVC32                                                 |
20+---------------------+----------+--------------------------------------------+
21| Function ID:        | (uint32) | 0x86000001                                 |
22+---------------------+----------+----+---------------------------------------+
23| Arguments:          | (uint32) | R1 | ``KVM_PTP_VIRT_COUNTER (0)``          |
24|                     |          |    +---------------------------------------+
25|                     |          |    | ``KVM_PTP_PHYS_COUNTER (1)``          |
26+---------------------+----------+----+---------------------------------------+
27| Return Values:      | (int32)  | R0 | ``NOT_SUPPORTED (-1)`` on error, else |
28|                     |          |    | upper 32 bits of wall clock time      |
29|                     +----------+----+---------------------------------------+
30|                     | (uint32) | R1 | Lower 32 bits of wall clock time      |
31|                     +----------+----+---------------------------------------+
32|                     | (uint32) | R2 | Upper 32 bits of counter              |
33|                     +----------+----+---------------------------------------+
34|                     | (uint32) | R3 | Lower 32 bits of counter              |
35+---------------------+----------+----+---------------------------------------+
36