Currently, KVM ARM/ARM64 only provides in-kernel emulation of Power State
and Coordination Interface (PSCI) v0.1.
This patchset aims at providing newer PSCI v0.2 for KVM ARM/ARM64 VCPUs
such that it does not break current KVM ARM/ARM64 ABI.
The user space tools (i.e. QEMU or KVMTOOL) will have to explicitly enable
KVM_ARM_VCPU_PSCI_0_2 feature using KVM_ARM_VCPU_INIT ioctl for providing
PSCI v0.2 to VCPUs.
Changlog:
V5:
- Have separate last patch to advertise KVM_CAP_ARM_PSCI_0_2
- Use kvm_psci_version() in kvm_psci_vcpu_on()
- Return ALREADY_ON for PSCI v0.2 CPU_ON if VCPU is not paused
- Remove per-VCPU suspend context
- As-per PSCI v0.2 spec, only current CPU can suspend itself
V4:
- Implement all mandatory functions required by PSCI v0.2
V3:
- Make KVM_ARM_VCPU_PSCI_0_2 feature experiementatl for now so that
it fails for user space till all mandatory PSCI v0.2 functions are
emulated by KVM ARM/ARM64
- Have separate patch for making KVM_ARM_VCPU_PSCI_0_2 feature available
to user space. This patch can be defferred for now
V2:
- Don't rename PSCI return values KVM_PSCI_RET_NI and KVM_PSCI_RET_INVAL
- Added kvm_psci_version() to get PSCI version available to VCPU
- Fixed grammer in Documentation/virtual/kvm/api.txt
V1:
- Initial RFC PATCH
Anup Patel (11):
KVM: Add capability to advertise PSCI v0.2 support
ARM/ARM64: KVM: Add base for PSCI v0.2 emulation
KVM: Documentation: Add info regarding KVM_ARM_VCPU_PSCI_0_2 feature
ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible
KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header
ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET
ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO
ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related
functions
ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2
ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND
ARM/ARM64: KVM: Advertise KVM_CAP_ARM_PSCI_0_2 to user space
Documentation/virtual/kvm/api.txt | 17 +++
arch/arm/include/asm/kvm_host.h | 2 +-
arch/arm/include/asm/kvm_psci.h | 6 +-
arch/arm/include/uapi/asm/kvm.h | 35 +++++-
arch/arm/kvm/arm.c | 1 +
arch/arm/kvm/handle_exit.c | 10 +-
arch/arm/kvm/psci.c | 220 ++++++++++++++++++++++++++++++++++---
arch/arm64/include/asm/kvm_host.h | 2 +-
arch/arm64/include/asm/kvm_psci.h | 6 +-
arch/arm64/include/uapi/asm/kvm.h | 35 +++++-
arch/arm64/kvm/handle_exit.c | 10 +-
include/uapi/linux/kvm.h | 9 ++
12 files changed, 326 insertions(+), 27 deletions(-)
--
1.7.9.5
Add loop to prevent return from machine_power_off if
pm_power_off is null or does not halt the system.
This caused a panic during hibernation testing on Kirkwood
Openblocks A6 board.
Signed-off-by: Sebastian Capella <sebastian.capella(a)linaro.org>
Reported-by: Ezequiel Garcia <ezequiel.garcia(a)free-electrons.com>
Cc: Len Brown <len.brown(a)intel.com>
Cc: Pavel Machek <pavel(a)ucw.cz>
Cc: "Rafael J. Wysocki" <rjw(a)rjwysocki.net>
---
arch/arm/kernel/process.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index f58b723..6ffdc2c 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -217,6 +217,8 @@ void machine_power_off(void)
if (pm_power_off)
pm_power_off();
+ while (1)
+ cpu_relax();
}
/*
--
1.7.9.5
-- resend for correct linaro kernel ML, sorry!
Hi, all,
According to card 1213 https://cards.linaro.org/browse/CARD-1213, LSK need
backport thermal framework DT support. The feature summary is here:
https://lkml.org/lkml/2014/1/23/680
The LSK git tree: git://git.linaro.org/kernel/linux-linaro-stable.git
It should be equal to stable tree on this feature base.
Thanks for Broonie's comments! I remove few trivial bug fix patches, and
drop omap DT changes. The test passed build testing.
Any comments are appreciated!
Thanks
Alex
[PATCH 01/10] thermal: allow registering without .get_temp
[PATCH 02/10] thermal: hwmon: move hwmon support to single file
[PATCH 03/10] drivers: thermal: make usage of CONFIG_THERMAL_HWMON
[PATCH 04/10] thermal: introduce device tree parser
[PATCH 05/10] thermal: core: introduce
[PATCH 06/10] thermal: cpu_cooling: introduce
[PATCH 07/10] hwmon: lm75: expose to thermal fw via DT nodes
[PATCH 08/10] hwmon: tmp102: expose to thermal fw via DT nodes
[PATCH 09/10] MAINTAINERS: add thermal bindings entry in thermal
[PATCH 10/10] thermal: debug: add debug statement for core and
pm_wq work queue is used for runtime suspend/resume work, these
functions are not bound to run on specific CPUs. Having unbounded
type will reduce the waiting time.
Signed-off-by: Sanjay Singh Rawat <sanjay.rawat(a)linaro.org>
---
Need to test on a full runtime supported hardware
---
kernel/power/main.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/power/main.c b/kernel/power/main.c
index 1d1bf63..8212528 100644
--- a/kernel/power/main.c
+++ b/kernel/power/main.c
@@ -622,7 +622,7 @@ EXPORT_SYMBOL_GPL(pm_wq);
static int __init pm_start_workqueue(void)
{
- pm_wq = alloc_workqueue("pm", WQ_FREEZABLE, 0);
+ pm_wq = alloc_workqueue("pm", WQ_FREEZABLE | WQ_UNBOUND, 0);
return pm_wq ? 0 : -ENOMEM;
}
--
1.7.10.4