diff options
author | Steven Price <steven.price@arm.com> | 2019-10-21 18:28:23 +0300 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2019-10-21 21:20:31 +0300 |
commit | e0685fa228fdaf386f82ac0d64b2d6f3e0ddd588 (patch) | |
tree | 82a0c4c7b00b1ba16518c7be5dbf58640e154f28 /arch/arm64/include/asm/paravirt.h | |
parent | ce4d5ca2b9dd5d85944eb93c1bbf9eb11b7a907d (diff) | |
download | linux-e0685fa228fdaf386f82ac0d64b2d6f3e0ddd588.tar.xz |
arm64: Retrieve stolen time as paravirtualized guest
Enable paravirtualization features when running under a hypervisor
supporting the PV_TIME_ST hypercall.
For each (v)CPU, we ask the hypervisor for the location of a shared
page which the hypervisor will use to report stolen time to us. We set
pv_time_ops to the stolen time function which simply reads the stolen
value from the shared page for a VCPU. We guarantee single-copy
atomicity using READ_ONCE which means we can also read the stolen
time for another VCPU than the currently running one while it is
potentially being updated by the hypervisor.
Signed-off-by: Steven Price <steven.price@arm.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to 'arch/arm64/include/asm/paravirt.h')
-rw-r--r-- | arch/arm64/include/asm/paravirt.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/paravirt.h b/arch/arm64/include/asm/paravirt.h index 799d9dd6f7cc..cf3a0fd7c1a7 100644 --- a/arch/arm64/include/asm/paravirt.h +++ b/arch/arm64/include/asm/paravirt.h @@ -21,6 +21,13 @@ static inline u64 paravirt_steal_clock(int cpu) { return pv_ops.time.steal_clock(cpu); } -#endif + +int __init pv_time_init(void); + +#else + +#define pv_time_init() do {} while (0) + +#endif // CONFIG_PARAVIRT #endif |