From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Spyridakis Subject: [PATCH] KVM: arm/arm64: Fix PSCI affinity info return value for non valid cores Date: Fri, 4 Sep 2015 17:06:24 +0200 Message-ID: <1441379184-16749-1-git-send-email-a.spyridakis@virtualopensystems.com> Cc: marc.zyngier@arm.com, christoffer.dall@linaro.org, a.rigo@virtualopensystems.com, Alexander Spyridakis To: kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org Return-path: Received: from mail-wi0-f178.google.com ([209.85.212.178]:37480 "EHLO mail-wi0-f178.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755310AbbIDPGm (ORCPT ); Fri, 4 Sep 2015 11:06:42 -0400 Received: by wicfx3 with SMTP id fx3so21064872wic.0 for ; Fri, 04 Sep 2015 08:06:41 -0700 (PDT) Sender: kvm-owner@vger.kernel.org List-ID: If a guest requests the affinity info for a non-existing vCPU we need to properly return an error, instead of erroneously reporting an off state. Signed-off-by: Alexander Spyridakis Signed-off-by: Alvise Rigo --- arch/arm/kvm/psci.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/arch/arm/kvm/psci.c b/arch/arm/kvm/psci.c index 4b94b51..ad6f642 100644 --- a/arch/arm/kvm/psci.c +++ b/arch/arm/kvm/psci.c @@ -126,7 +126,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu) static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu) { - int i; + int i, matching_cpus = 0; unsigned long mpidr; unsigned long target_affinity; unsigned long target_affinity_mask; @@ -151,12 +151,16 @@ static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu) */ kvm_for_each_vcpu(i, tmp, kvm) { mpidr = kvm_vcpu_get_mpidr_aff(tmp); - if (((mpidr & target_affinity_mask) == target_affinity) && - !tmp->arch.pause) { - return PSCI_0_2_AFFINITY_LEVEL_ON; + if ((mpidr & target_affinity_mask) == target_affinity) { + matching_cpus++; + if (!tmp->arch.pause) + return PSCI_0_2_AFFINITY_LEVEL_ON; } } + if (!matching_cpus) + return PSCI_RET_INVALID_PARAMS; + return PSCI_0_2_AFFINITY_LEVEL_OFF; } -- 2.5.1