This series adds support for stolen time functionality. Patch #1 moves the vCPU structure initialisation before the target->init() call to allow early access to the kvm structure from the vCPU during target->init(). Patch #2 modifies the memory layout in arm-common/kvm-arch.h and adds a new MMIO device PVTIME after the RTC region. A new flag is added in kvm-config.h that will be used to control [enable/disable] the pvtime functionality. Stolen time is enabled by default when the host supports KVM_CAP_STEAL_TIME. Patch #3 adds a new command line argument to disable the stolen time functionality(by default is enabled). Changelog since v10: - set the return value to -errno on failed exit path from 'kvm_cpu__setup_pvtime' Changelog since v9: - use the `attr` field for the 'struct kvm_device_attr' initialisation with KVM_ARM_VCPU_PVTIME_IPA instead of the `addr` field Changelog since v8: - fix an error caused by kvm_cpu__teardown_pvtime() not beeing defined for aarch32 - cleanup the pvtime setup by removing the flag 'is_failed_cfg' and drop the 'pvtime_data_priv' definition - add missing Review-by tag The patch has been tested on qemu-system-aarch64. Sebastian Ene (3): aarch64: Populate the vCPU struct before target->init() aarch64: Add stolen time support Add --no-pvtime command line argument Makefile | 1 + arm/aarch32/include/kvm/kvm-cpu-arch.h | 5 ++ arm/aarch64/arm-cpu.c | 2 +- arm/aarch64/include/kvm/kvm-cpu-arch.h | 2 + arm/aarch64/pvtime.c | 98 ++++++++++++++++++++++++++ arm/include/arm-common/kvm-arch.h | 6 +- arm/kvm-cpu.c | 15 ++-- builtin-run.c | 2 + include/kvm/kvm-config.h | 1 + 9 files changed, 123 insertions(+), 9 deletions(-) create mode 100644 arm/aarch64/pvtime.c -- 2.35.1.723.g4982287a31-goog