From: christoffer.dall@linaro.org (Christoffer Dall)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 09/10] ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2
Date: Sun, 16 Mar 2014 20:41:21 -0700 [thread overview]
Message-ID: <20140317034121.GJ20648@cbox> (raw)
In-Reply-To: <1391686302-19451-10-git-send-email-anup.patel@linaro.org>
On Thu, Feb 06, 2014 at 05:01:41PM +0530, Anup Patel wrote:
> As-per PSCI v0.2, the source CPU provides physical address of
> "entry point" and "context id" for starting a target CPU.
>
> Current emulation of CPU_ON function does not consider physical
> address of "context id" hence 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>
> ---
> arch/arm/kvm/psci.c | 11 ++++++++---
> 1 file changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/kvm/psci.c b/arch/arm/kvm/psci.c
> index 75447a3..675866e 100644
> --- a/arch/arm/kvm/psci.c
> +++ b/arch/arm/kvm/psci.c
> @@ -32,12 +32,14 @@ static void kvm_psci_vcpu_off(struct kvm_vcpu *vcpu)
> vcpu->arch.pause = true;
> }
>
> -static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
> +static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu,
> + int psci_version)
I thought this would be what you have kvm_psci_version() for?
> {
> struct kvm *kvm = source_vcpu->kvm;
> 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;
> @@ -62,6 +64,7 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
> return KVM_PSCI_RET_INVAL;
>
> target_pc = *vcpu_reg(source_vcpu, 2);
> + context_id = *vcpu_reg(source_vcpu, 3);
>
> kvm_reset_vcpu(vcpu);
>
> @@ -76,6 +79,8 @@ static unsigned long kvm_psci_vcpu_on(struct kvm_vcpu *source_vcpu)
> kvm_vcpu_set_be(vcpu);
>
> *vcpu_pc(vcpu) = target_pc;
> + if (psci_version != KVM_ARM_PSCI_0_1)
> + *vcpu_reg(vcpu, 0) = context_id;
> vcpu->arch.pause = false;
> smp_mb(); /* Make sure the above is visible */
>
> @@ -180,7 +185,7 @@ static int kvm_psci_0_2_call(struct kvm_vcpu *vcpu)
> break;
> case KVM_PSCI_0_2_FN_CPU_ON:
> case KVM_PSCI_0_2_FN64_CPU_ON:
> - val = kvm_psci_vcpu_on(vcpu);
> + val = kvm_psci_vcpu_on(vcpu, KVM_ARM_PSCI_0_2);
> break;
> case KVM_PSCI_0_2_FN_AFFINITY_INFO:
> case KVM_PSCI_0_2_FN64_AFFINITY_INFO:
> @@ -234,7 +239,7 @@ static int kvm_psci_0_1_call(struct kvm_vcpu *vcpu)
> val = KVM_PSCI_RET_SUCCESS;
> break;
> case KVM_PSCI_FN_CPU_ON:
> - val = kvm_psci_vcpu_on(vcpu);
> + val = kvm_psci_vcpu_on(vcpu, KVM_ARM_PSCI_0_1);
> break;
> case KVM_PSCI_FN_CPU_SUSPEND:
> case KVM_PSCI_FN_MIGRATE:
> --
> 1.7.9.5
>
otherwise:
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
next prev parent reply other threads:[~2014-03-17 3:41 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-06 11:31 [PATCH v4 00/10] In-kernel PSCI v0.2 emulation for KVM ARM/ARM64 Anup Patel
2014-02-06 11:31 ` [PATCH v4 01/10] KVM: Add capability to advertise PSCI v0.2 support Anup Patel
2014-03-17 3:39 ` Christoffer Dall
2014-02-06 11:31 ` [PATCH v4 02/10] ARM/ARM64: KVM: Add base for PSCI v0.2 emulation Anup Patel
2014-02-07 8:28 ` Jungseok Lee
2014-02-07 8:36 ` Anup Patel
2014-02-07 9:07 ` Jungseok Lee
2014-02-07 9:26 ` Anup Patel
2014-02-07 23:37 ` Jungseok Lee
2014-02-07 23:42 ` Jungseok Lee
2014-03-14 22:57 ` Christoffer Dall
2014-03-17 3:40 ` Christoffer Dall
2014-03-17 6:14 ` Anup Patel
2014-03-19 13:22 ` Rob Herring
2014-02-06 11:31 ` [PATCH v4 03/10] KVM: Documentation: Add info regarding KVM_ARM_VCPU_PSCI_0_2 feature Anup Patel
2014-03-17 3:40 ` Christoffer Dall
2014-02-06 11:31 ` [PATCH v4 04/10] ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible Anup Patel
2014-03-17 3:40 ` Christoffer Dall
2014-02-06 11:31 ` [PATCH v4 05/10] KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header Anup Patel
2014-03-17 3:40 ` Christoffer Dall
2014-02-06 11:31 ` [PATCH v4 06/10] ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET Anup Patel
2014-03-17 3:40 ` Christoffer Dall
2014-02-06 11:31 ` [PATCH v4 07/10] ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO Anup Patel
2014-03-17 3:41 ` Christoffer Dall
2014-02-06 11:31 ` [PATCH v4 08/10] ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related functions Anup Patel
2014-03-17 3:41 ` Christoffer Dall
2014-03-17 6:16 ` Anup Patel
2014-02-06 11:31 ` [PATCH v4 09/10] ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 Anup Patel
2014-03-17 3:41 ` Christoffer Dall [this message]
2014-03-17 6:17 ` Anup Patel
2014-02-06 11:31 ` [PATCH v4 10/10] ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND Anup Patel
2014-03-17 3:41 ` Christoffer Dall
2014-03-17 6:54 ` Anup Patel
2014-03-17 11:28 ` Mark Rutland
2014-03-17 17:49 ` Christoffer Dall
2014-03-17 3:39 ` [PATCH v4 00/10] In-kernel PSCI v0.2 emulation for KVM ARM/ARM64 Christoffer Dall
2014-03-17 6:11 ` Anup Patel
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=20140317034121.GJ20648@cbox \
--to=christoffer.dall@linaro.org \
--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.