Re: [PATCH 00/12] arm64: Paravirtualized time support
From: Andrew Jones <hidden>
Date: 2018-12-03 13:26:13
Also in:
kvmarm
On Wed, Nov 28, 2018 at 02:45:15PM +0000, Steven Price wrote:
This series add support for paravirtualized time for Arm64 guests and KVM hosts following the specification in Arm's document DEN 0057A: https://developer.arm.com/docs/den0057/a
Hi Steven, As that specification is still a draft, then I guess this series is an RFC. I just wanted to point that out, as I believe that tag should be used in future postings until the spec is approved. Regarding the spec, my understanding from kvm forum was that there was still a need to explain why kvmclock, or an extension to kvmclock, is insufficient. If there hasn't been anything written up about that yet, would you mind doing so?
It implements support for Live Physical Time (LPT) which provides the guest with a method to derive a stable counter of time during which the guest is executing even when the guest is being migrated between hosts with different physical counter frequencies.
Intel has TSC scaling. Is there any reason Arm is proposing a PV solution instead of adding a similar virt extension? Thanks, drew
It also implements support for stolen time, allowing the guest to identify time when it is forcibly not executing. Patch 1 provides some documentation Patches 2-4, 8 and 11 provide some refactoring of existing code Patch 5 implements the new PV_FEATURES discovery mechanism Patches 6-7 implement live physical time Patches 9-10 implement stolen time Patch 12 adds the 'PV_TIME' device for user space to enable the features Christoffer Dall (2): KVM: arm/arm64: Factor out hypercall handling from PSCI code KVM: Export mark_page_dirty_in_slot Steven Price (10): KVM: arm64: Document PV-time interface arm/arm64: Provide a wrapper for SMCCC 1.1 calls arm/arm64: Make use of the SMCCC 1.1 wrapper KVM: arm64: Implement PV_FEATURES call KVM: arm64: Support Live Physical Time reporting clocksource: arm_arch_timer: Use paravirtualized LPT KVM: arm64: Support stolen time reporting via shared page arm64: Retrieve stolen time as paravirtualized guest KVM: Allow kvm_device_ops to be const KVM: arm64: Provide a PV_TIME device to user space Documentation/virtual/kvm/arm/pvtime.txt | 169 ++++++++++++++ arch/arm/kvm/Makefile | 2 +- arch/arm/kvm/handle_exit.c | 2 +- arch/arm/mm/proc-v7-bugs.c | 46 ++-- arch/arm64/include/asm/arch_timer.h | 32 ++- arch/arm64/include/asm/kvm_host.h | 16 ++ arch/arm64/include/asm/kvm_mmu.h | 2 + arch/arm64/include/asm/pvclock-abi.h | 32 +++ arch/arm64/include/uapi/asm/kvm.h | 8 + arch/arm64/kernel/Makefile | 1 + arch/arm64/kernel/cpu_errata.c | 47 +--- arch/arm64/kernel/cpuinfo.c | 2 +- arch/arm64/kernel/kvm.c | 156 +++++++++++++ arch/arm64/kvm/Kconfig | 1 + arch/arm64/kvm/Makefile | 2 + arch/arm64/kvm/handle_exit.c | 4 +- drivers/clocksource/arm_arch_timer.c | 176 ++++++++++++++- include/kvm/arm_arch_timer.h | 2 + include/kvm/arm_hypercalls.h | 44 ++++ include/kvm/arm_psci.h | 2 +- include/kvm/arm_pv.h | 28 +++ include/linux/arm-smccc.h | 45 ++++ include/linux/cpuhotplug.h | 1 + include/linux/kvm_host.h | 5 +- include/linux/kvm_types.h | 2 + include/uapi/linux/kvm.h | 2 + virt/kvm/arm/arm.c | 25 +- virt/kvm/arm/hypercalls.c | 276 +++++++++++++++++++++++ virt/kvm/arm/mmu.c | 44 ++++ virt/kvm/arm/psci.c | 76 +------ virt/kvm/arm/pvtime.c | 243 ++++++++++++++++++++ virt/kvm/kvm_main.c | 12 +- 32 files changed, 1348 insertions(+), 157 deletions(-) create mode 100644 Documentation/virtual/kvm/arm/pvtime.txt create mode 100644 arch/arm64/include/asm/pvclock-abi.h create mode 100644 arch/arm64/kernel/kvm.c create mode 100644 include/kvm/arm_hypercalls.h create mode 100644 include/kvm/arm_pv.h create mode 100644 virt/kvm/arm/hypercalls.c create mode 100644 virt/kvm/arm/pvtime.c -- 2.19.2 _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel