From patchwork Thu Feb 6 11:31:41 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anup Patel X-Patchwork-Id: 24250 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-oa0-f71.google.com (mail-oa0-f71.google.com [209.85.219.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id A80DE20445 for ; Thu, 6 Feb 2014 11:33:11 +0000 (UTC) Received: by mail-oa0-f71.google.com with SMTP id g12sf9158864oah.6 for ; Thu, 06 Feb 2014 03:33:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :list-post:list-help:list-archive:list-unsubscribe; bh=GlZmPxbj8SYGMpXVL1ZDKc2RmQcWbvtgD6KVCzO1yFg=; b=M5D40Vq8hmoYxRxceR/hbDq3/jyxi+Fxl+KAUDtGnmGPcAbTicIaTE9DBn6CS9kxP6 L5ZK4cZaMhVE1y5WQmvZWTzmg/9CfIJN1Uq/XxOMeyV23dz83/ELIf2Qxll9DMP5E8GS 3ljC/A2LOp886V+ZhNZvn4LhggPdn35L4blYhP8VKsh4o4FZjiCfl3w9lMUoGHglBmzv ruE0QTXyUd5sno9YwvFXjlCIstfOGH/YtOm7dow63crrCg8fiN7PG7ujxJeyvpm4ETzi oB5uElyh2jpY2YgJpiNBCA7j3ID83bf9aqoB8GC8VBC4cLmoLVuGxV0sykKyP2Kyoj8K +GRw== X-Gm-Message-State: ALoCoQlMMnA+TatOkoZAuECEysvGAHkiECCxouf9aGoSe4Yc/nDPw6t1IX+Kf3a+3xD6Boy8GmfS X-Received: by 10.183.3.36 with SMTP id bt4mr3256856obd.29.1391686390726; Thu, 06 Feb 2014 03:33:10 -0800 (PST) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.102.244 with SMTP id w107ls504283qge.26.gmail; Thu, 06 Feb 2014 03:33:10 -0800 (PST) X-Received: by 10.220.139.136 with SMTP id e8mr70663vcu.34.1391686390513; Thu, 06 Feb 2014 03:33:10 -0800 (PST) Received: from mail-ve0-f182.google.com (mail-ve0-f182.google.com [209.85.128.182]) by mx.google.com with ESMTPS id b7si163264vej.70.2014.02.06.03.33.10 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 06 Feb 2014 03:33:10 -0800 (PST) Received-SPF: neutral (google.com: 209.85.128.182 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.128.182; Received: by mail-ve0-f182.google.com with SMTP id jy13so1362022veb.41 for ; Thu, 06 Feb 2014 03:33:10 -0800 (PST) X-Received: by 10.52.89.230 with SMTP id br6mr4624696vdb.20.1391686390421; Thu, 06 Feb 2014 03:33:10 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patches@linaro.org Received: by 10.220.174.196 with SMTP id u4csp5288vcz; Thu, 6 Feb 2014 03:33:09 -0800 (PST) X-Received: by 10.68.170.66 with SMTP id ak2mr11849343pbc.5.1391686389462; Thu, 06 Feb 2014 03:33:09 -0800 (PST) Received: from mail-pa0-f44.google.com (mail-pa0-f44.google.com [209.85.220.44]) by mx.google.com with ESMTPS id ds4si812820pbb.139.2014.02.06.03.33.09 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 06 Feb 2014 03:33:09 -0800 (PST) Received-SPF: neutral (google.com: 209.85.220.44 is neither permitted nor denied by best guess record for domain of anup.patel@linaro.org) client-ip=209.85.220.44; Received: by mail-pa0-f44.google.com with SMTP id kq14so1571347pab.3 for ; Thu, 06 Feb 2014 03:33:09 -0800 (PST) X-Received: by 10.67.3.68 with SMTP id bu4mr34639pad.144.1391686389040; Thu, 06 Feb 2014 03:33:09 -0800 (PST) Received: from pnqlab006.amcc.com ([182.73.239.130]) by mx.google.com with ESMTPSA id yd4sm2594758pbc.13.2014.02.06.03.33.04 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 06 Feb 2014 03:33:08 -0800 (PST) From: Anup Patel To: kvmarm@lists.cs.columbia.edu Cc: linux-arm-kernel@lists.infradead.org, linaro-kernel@lists.linaro.org, patches@linaro.org, patches@apm.com, Marc Zyngier , Christoffer Dall , Mark Rutland , Pranavkumar Sawargaonkar , Anup Patel Subject: [PATCH v4 09/10] ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 Date: Thu, 6 Feb 2014 17:01:41 +0530 Message-Id: <1391686302-19451-10-git-send-email-anup.patel@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1391686302-19451-1-git-send-email-anup.patel@linaro.org> References: <1391686302-19451-1-git-send-email-anup.patel@linaro.org> X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: anup.patel@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.128.182 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Precedence: list Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org List-ID: X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , 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 Signed-off-by: Pranavkumar Sawargaonkar Reviewed-by: Christoffer Dall --- 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) { 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: