aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kvm/psci.c
diff options
context:
space:
mode:
authorAnup Patel <anup.patel@linaro.org>2014-04-29 01:54:22 -0400
committerChristoffer Dall <christoffer.dall@linaro.org>2014-04-30 07:18:58 -0400
commitbab0b43012a8ad64877fa46134370a7f5c6ce861 (patch)
tree0eb4f4565fa89c80f0180cb1dcc5b8dffc922f60 /arch/arm/kvm/psci.c
parente6bc13c8a70eabc6a39098ccedf6129c734e3db3 (diff)
ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related functions
This patch adds emulation of PSCI v0.2 MIGRATE, MIGRATE_INFO_TYPE, and MIGRATE_INFO_UP_CPU function calls for KVM ARM/ARM64. KVM ARM/ARM64 being a hypervisor (and not a Trusted OS), we cannot provide this functions hence we emulate these functions in following way: 1. MIGRATE - Returns "Not Supported" 2. MIGRATE_INFO_TYPE - Return 2 i.e. Trusted OS is not present 3. MIGRATE_INFO_UP_CPU - Returns "Not Supported" Signed-off-by: Anup Patel <anup.patel@linaro.org> Signed-off-by: Pranavkumar Sawargaonkar <pranavkumar@linaro.org> Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org> Acked-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Diffstat (limited to 'arch/arm/kvm/psci.c')
-rw-r--r--arch/arm/kvm/psci.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/arch/arm/kvm/psci.c b/arch/arm/kvm/psci.c
index 3b6a0cf25c7d..cce901a510fa 100644
--- a/arch/arm/kvm/psci.c
+++ b/arch/arm/kvm/psci.c
@@ -182,6 +182,22 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
182 case PSCI_0_2_FN64_AFFINITY_INFO: 182 case PSCI_0_2_FN64_AFFINITY_INFO:
183 val = kvm_psci_vcpu_affinity_info(vcpu); 183 val = kvm_psci_vcpu_affinity_info(vcpu);
184 break; 184 break;
185 case PSCI_0_2_FN_MIGRATE:
186 case PSCI_0_2_FN64_MIGRATE:
187 val = PSCI_RET_NOT_SUPPORTED;
188 break;
189 case PSCI_0_2_FN_MIGRATE_INFO_TYPE:
190 /*
191 * Trusted OS is MP hence does not require migration
192 * or
193 * Trusted OS is not present
194 */
195 val = PSCI_0_2_TOS_MP;
196 break;
197 case PSCI_0_2_FN_MIGRATE_INFO_UP_CPU:
198 case PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU:
199 val = PSCI_RET_NOT_SUPPORTED;
200 break;
185 case PSCI_0_2_FN_SYSTEM_OFF: 201 case PSCI_0_2_FN_SYSTEM_OFF:
186 kvm_psci_system_off(vcpu); 202 kvm_psci_system_off(vcpu);
187 /* 203 /*
@@ -207,12 +223,7 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
207 ret = 0; 223 ret = 0;
208 break; 224 break;
209 case PSCI_0_2_FN_CPU_SUSPEND: 225 case PSCI_0_2_FN_CPU_SUSPEND:
210 case PSCI_0_2_FN_MIGRATE:
211 case PSCI_0_2_FN_MIGRATE_INFO_TYPE:
212 case PSCI_0_2_FN_MIGRATE_INFO_UP_CPU:
213 case PSCI_0_2_FN64_CPU_SUSPEND: 226 case PSCI_0_2_FN64_CPU_SUSPEND:
214 case PSCI_0_2_FN64_MIGRATE:
215 case PSCI_0_2_FN64_MIGRATE_INFO_UP_CPU:
216 val = PSCI_RET_NOT_SUPPORTED; 227 val = PSCI_RET_NOT_SUPPORTED;
217 break; 228 break;
218 default: 229 default: