mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
arm/arm64: KVM: Fix PSCI affinity info return value for non valid cores
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 <a.spyridakis@virtualopensystems.com> Signed-off-by: Alvise Rigo <a.rigo@virtualopensystems.com> Acked-by: Mark Rutland <mark.rutland@arm.com> Reviewed-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
This commit is contained in:
parent
857d1a9730
commit
0c0672922d
1 changed files with 8 additions and 4 deletions
|
@ -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)
|
static unsigned long kvm_psci_vcpu_affinity_info(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
int i;
|
int i, matching_cpus = 0;
|
||||||
unsigned long mpidr;
|
unsigned long mpidr;
|
||||||
unsigned long target_affinity;
|
unsigned long target_affinity;
|
||||||
unsigned long target_affinity_mask;
|
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) {
|
kvm_for_each_vcpu(i, tmp, kvm) {
|
||||||
mpidr = kvm_vcpu_get_mpidr_aff(tmp);
|
mpidr = kvm_vcpu_get_mpidr_aff(tmp);
|
||||||
if (((mpidr & target_affinity_mask) == target_affinity) &&
|
if ((mpidr & target_affinity_mask) == target_affinity) {
|
||||||
!tmp->arch.pause) {
|
matching_cpus++;
|
||||||
return PSCI_0_2_AFFINITY_LEVEL_ON;
|
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;
|
return PSCI_0_2_AFFINITY_LEVEL_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue