Patch "ARM: kvm: psci: fix handling of unimplemented functions" has been added to the 4.1-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ARM: kvm: psci: fix handling of unimplemented functions
to the 4.1-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
arm-kvm-psci-fix-handling-of-unimplemented-functions.patch
and it can be found in the queue-4.1 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
e2d997366dc5b6c9d14035867f73957f93e7578cMon Sep 17 00:00:00 2001
From: Lorenzo Pieralisi <[email protected]>
Date: Wed, 10 Jun 2015 15:19:24 +0100
Subject: ARM: kvm: psci: fix handling of unimplemented functions
From: Lorenzo Pieralisi <[email protected]>
commit e2d997366dc5b6c9d14035867f73957f93e7578c upstream.
According to the PSCI specification and the SMC/HVC calling convention, PSCI function_ids that are not implemented must return NOT_SUPPORTED as return value.
Current KVM implementation takes an unhandled PSCI function_id as an error and injects an undefined instruction into the guest if PSCI implementation is called with a function_id that is not handled by the resident PSCI version (ie it is not implemented), which is not the behaviour expected by a guest when calling a PSCI function_id that is not implemented.
This patch fixes this issue by returning NOT_SUPPORTED whenever the kvm PSCI call is executed for a function_id that is not implemented by the PSCI kvm layer.
--- arch/arm/kvm/psci.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-)
arch/arm/kvm/psci.c +3 -13
@@ -230,10 +230,6 @@ static int kvm_psci_0_2_call(struct kvm_case PSCI_0_2_FN64_AFFINITY_INFO : val =kvm_psci_vcpu_affinity_info (vcpu);break ; -case PSCI_0_2_FN_MIGRATE : -case PSCI_0_2_FN64_MIGRATE : - val =PSCI_RET_NOT_SUPPORTED ; -break ;case PSCI_0_2_FN_MIGRATE_INFO_TYPE :/* * Trusted OS is MP hence does not require migration
@@ -242,10 +238,6 @@ static int kvm_psci_0_2_call(struct kvm_*/ val =PSCI_0_2_TOS_MP ;break ; -case PSCI_0_2_FN_MIGRATE_INFO_UP_CPU : -case PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU : - val =PSCI_RET_NOT_SUPPORTED ; -break ;case PSCI_0_2_FN_SYSTEM_OFF :kvm_psci_system_off (vcpu);/*
@@ -271,7 +263,8 @@ static int kvm_psci_0_2_call(struct kvm_ ret =0 ;break ;default : -return -EINVAL ; + val =PSCI_RET_NOT_SUPPORTED ; +break ; } *vcpu_reg (vcpu,0 ) = val;
@@ -291,12 +284,9 @@ static int kvm_psci_0_1_call(struct kvm_case KVM_PSCI_FN_CPU_ON : val =kvm_psci_vcpu_on (vcpu);break ; -case KVM_PSCI_FN_CPU_SUSPEND : -case KVM_PSCI_FN_MIGRATE : +default : val =PSCI_RET_NOT_SUPPORTED ;break ; -default : -return -EINVAL ; } *vcpu_reg (vcpu,0 ) = val;
Patches currently in stable-queue which might be from [email protected] are
queue-4.1/arm-kvm-psci-fix-handling-of-unimplemented-functions.patch