arm64: Retrieve stolen time as paravirtualized guest
authorSteven Price <steven.price@arm.com>
Mon, 21 Oct 2019 15:28:23 +0000 (16:28 +0100)
committerMarc Zyngier <maz@kernel.org>
Mon, 21 Oct 2019 18:20:31 +0000 (19:20 +0100)
commite0685fa228fdaf386f82ac0d64b2d6f3e0ddd588
tree82a0c4c7b00b1ba16518c7be5dbf58640e154f28
parentce4d5ca2b9dd5d85944eb93c1bbf9eb11b7a907d
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>
Documentation/admin-guide/kernel-parameters.txt
arch/arm64/include/asm/paravirt.h
arch/arm64/kernel/paravirt.c
arch/arm64/kernel/time.c
include/linux/cpuhotplug.h