All of lore.kernel.org
 help / color / mirror / Atom feed
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v9 10/12] ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2
Date: Tue, 15 Apr 2014 13:10:09 +0100	[thread overview]
Message-ID: <87d2giztcu.fsf@approximate.cambridge.arm.com> (raw)
In-Reply-To: <1397542455-354-11-git-send-email-anup.patel@linaro.org> (Anup Patel's message of "Tue, 15 Apr 2014 07:14:13 +0100")

On Tue, Apr 15 2014 at  7:14:13 am BST, Anup Patel <anup.patel@linaro.org> wrote:
> As-per PSCI v0.2, the source CPU provides physical address of
> "entry point" and "context id" for starting a target CPU. Also,
> if target CPU is already running then we should return ALREADY_ON.
>
> Current emulation of CPU_ON function does not consider physical
> address of "context id" and returns INVALID_PARAMETERS if target
> CPU is already running.
>
> This patch updates kvm_psci_vcpu_on() such that it works for both
> PSCI v0.1 and PSCI v0.2.
>
> 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>

> ---
>  arch/arm/kvm/psci.c |   15 ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git a/arch/arm/kvm/psci.c b/arch/arm/kvm/psci.c
> index 1af0016..f59f09d 100644
> --- a/arch/arm/kvm/psci.c
> +++ b/arch/arm/kvm/psci.c
> @@ -48,6 +48,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
>  	struct kvm_vcpu *vcpu = NULL, *tmp;
>  	wait_queue_head_t *wq;
>  	unsigned long cpu_id;
> +	unsigned long context_id;
>  	unsigned long mpidr;
>  	phys_addr_t target_pc;
>  	int i;
> @@ -68,10 +69,17 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
>  	 * Make sure the caller requested a valid CPU and that the CPU is
>  	 * turned off.
>  	 */
> -	if (!vcpu || !vcpu->arch.pause)
> +	if (!vcpu)
>  		return PSCI_RET_INVALID_PARAMS;
> +	if (!vcpu->arch.pause) {
> +		if (kvm_psci_version(source_vcpu) != KVM_ARM_PSCI_0_1)
> +			return PSCI_RET_ALREADY_ON;
> +		else
> +			return PSCI_RET_INVALID_PARAMS;
> +	}
>  
>  	target_pc = *vcpu_reg(source_vcpu, 2);
> +	context_id = *vcpu_reg(source_vcpu, 3);
>  
>  	kvm_reset_vcpu(vcpu);
>  
> @@ -86,6 +94,11 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
>  		kvm_vcpu_set_be(vcpu);
>  
>  	*vcpu_pc(vcpu) = target_pc;
> +	/*
> +	 * NOTE: We always update r0 (or x0) because for PSCI v0.1
> +	 * the general puspose registers are undefined upon CPU_ON.
> +	 */
> +	*vcpu_reg(vcpu, 0) = context_id;
>  	vcpu->arch.pause = false;
>  	smp_mb();		/* Make sure the above is visible */

-- 
Jazz is not dead. It just smells funny.

  reply	other threads:[~2014-04-15 12:10 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-15  6:14 [PATCH v9 00/12] In-kernel PSCI v0.2 emulation for KVM ARM/ARM64 Anup Patel
2014-04-15  6:14 ` [PATCH v9 01/12] KVM: Add capability to advertise PSCI v0.2 support Anup Patel
2014-04-15  9:49   ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 02/12] ARM/ARM64: KVM: Add common header for PSCI related defines Anup Patel
2014-04-15 10:06   ` Marc Zyngier
2014-04-15 11:10     ` Anup Patel
2014-04-15 12:18       ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 03/12] ARM/ARM64: KVM: Add base for PSCI v0.2 emulation Anup Patel
2014-04-15 10:19   ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 04/12] KVM: Documentation: Add info regarding KVM_ARM_VCPU_PSCI_0_2 feature Anup Patel
2014-04-15 10:20   ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 05/12] ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible Anup Patel
2014-04-15 10:21   ` Marc Zyngier
2014-04-15 11:13     ` Anup Patel
2014-04-15 12:23       ` Marc Zyngier
2014-04-15 13:07         ` Peter Maydell
2014-04-15  6:14 ` [PATCH v9 06/12] KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header Anup Patel
2014-04-15 10:25   ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 07/12] ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET Anup Patel
2014-04-15 10:34   ` Marc Zyngier
2014-04-15 11:26     ` Anup Patel
2014-04-15 12:28       ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 08/12] ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO Anup Patel
2014-04-15 10:55   ` Marc Zyngier
2014-04-15 11:15     ` Anup Patel
2014-04-15  6:14 ` [PATCH v9 09/12] ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related functions Anup Patel
2014-04-15 12:05   ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 10/12] ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 Anup Patel
2014-04-15 12:10   ` Marc Zyngier [this message]
2014-04-15  6:14 ` [PATCH v9 11/12] ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND Anup Patel
2014-04-15 12:14   ` Marc Zyngier
2014-04-15  6:14 ` [PATCH v9 12/12] ARM/ARM64: KVM: Advertise KVM_CAP_ARM_PSCI_0_2 to user space Anup Patel
2014-04-15 12:16   ` Marc Zyngier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87d2giztcu.fsf@approximate.cambridge.arm.com \
    --to=marc.zyngier@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.