From patchwork Thu May 22 11:18:05 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pranavkumar Sawargaonkar X-Patchwork-Id: 351440 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 8E0CD140083 for ; Thu, 22 May 2014 21:22:10 +1000 (EST) Received: from localhost ([::1]:36748 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnR4Z-0007Ej-LY for incoming@patchwork.ozlabs.org; Thu, 22 May 2014 07:22:07 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50364) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnR27-0002sJ-CE for qemu-devel@nongnu.org; Thu, 22 May 2014 07:19:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WnR20-0005K7-RT for qemu-devel@nongnu.org; Thu, 22 May 2014 07:19:35 -0400 Received: from mail-pa0-f54.google.com ([209.85.220.54]:47649) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WnR20-0005Ju-N4 for qemu-devel@nongnu.org; Thu, 22 May 2014 07:19:28 -0400 Received: by mail-pa0-f54.google.com with SMTP id bj1so2388806pad.41 for ; Thu, 22 May 2014 04:19:28 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FxtT68/5hL1vlyz8Kg2ce8tWqrkn7rrAI3tRZH7vxJQ=; b=WnoeGo1N2cNXSPljkY8I6332qQChNWX2d9DndcQ0Ew72ndAHZMScZf7F81gdEnmtYf ZoVKbcKnEjKGoosuciOUjfN8q26xg/4kmlp7ug9WjNEa/Y9lN/VHBlUs0FWDFI+oKNyO 4t592AkeL9QoQxMrloQupOqbjoujrkP5dGEghjTIRZ4KGfa5KqIhW+bViTrNC2edzzND fPeOvez7KVgLzuAD4Ve0Amg1UNvi9jQX5UXR6f3zE0lqhdOaR8YFt4o9dslncDewI7cR BTdWEWC/ZGFjVS46uS7L89nAePc0MRGQmB5ilh9typDzB+LwJVwluXfduwWhH1ryqiK5 3NVA== X-Gm-Message-State: ALoCoQnXDXMxVSsyR3bsqwvMduwbdcl2VKE3dxFS/RgQJz5QzbAsip0uy+aMFqc1/PsrbjuXbQTf X-Received: by 10.66.139.168 with SMTP id qz8mr66046658pab.3.1400757567995; Thu, 22 May 2014 04:19:27 -0700 (PDT) Received: from pnqlab006.amcc.com ([182.73.239.130]) by mx.google.com with ESMTPSA id xr9sm118782087pab.5.2014.05.22.04.19.24 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 22 May 2014 04:19:27 -0700 (PDT) From: Pranavkumar Sawargaonkar To: qemu-devel@nongnu.org Date: Thu, 22 May 2014 16:48:05 +0530 Message-Id: <1400757486-2860-8-git-send-email-pranavkumar@linaro.org> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1400757486-2860-1-git-send-email-pranavkumar@linaro.org> References: <1400757486-2860-1-git-send-email-pranavkumar@linaro.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.220.54 Cc: peter.maydell@linaro.org, Anup Patel , patches@apm.com, robherring2@gmail.com, kvmarm@lists.cs.columbia.edu, christoffer.dall@linaro.org, Pranavkumar Sawargaonkar Subject: [Qemu-devel] [PATCH V6 7/8] target-arm: Introduce per-CPU field for PSCI version X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org We require to know the PSCI version available to given CPU at potentially many places. Currently, we need to know PSCI version when generating DTB for virt machine. This patch introduce per-CPU 32bit field representing the PSCI version available to the CPU. The encoding of this 32bit field is same as described in PSCI v0.2 spec. Signed-off-by: Pranavkumar Sawargaonkar Signed-off-by: Anup Patel Reviewed-by: Peter Maydell --- target-arm/cpu-qom.h | 6 ++++++ target-arm/cpu.c | 1 + target-arm/kvm32.c | 1 + target-arm/kvm64.c | 1 + 4 files changed, 9 insertions(+) diff --git a/target-arm/cpu-qom.h b/target-arm/cpu-qom.h index 2bd7df8..eaee944 100644 --- a/target-arm/cpu-qom.h +++ b/target-arm/cpu-qom.h @@ -94,6 +94,12 @@ typedef struct ARMCPU { /* 'compatible' string for this CPU for Linux device trees */ const char *dtb_compatible; + /* PSCI version for this CPU + * Bits[31:16] = Major Version + * Bits[15:0] = Minor Version + */ + uint32_t psci_version; + /* Should CPU start in PSCI powered-off state? */ bool start_powered_off; diff --git a/target-arm/cpu.c b/target-arm/cpu.c index 6c6f2b3..589f34d 100644 --- a/target-arm/cpu.c +++ b/target-arm/cpu.c @@ -260,6 +260,7 @@ static void arm_cpu_initfn(Object *obj) * picky DTB consumer will also provide a helpful error message. */ cpu->dtb_compatible = "qemu,unknown"; + cpu->psci_version = 1; /* By default assume PSCI v0.1 */ cpu->kvm_target = QEMU_KVM_ARM_TARGET_NONE; if (tcg_enabled() && !inited) { diff --git a/target-arm/kvm32.c b/target-arm/kvm32.c index 52d626c..068af7d 100644 --- a/target-arm/kvm32.c +++ b/target-arm/kvm32.c @@ -184,6 +184,7 @@ int kvm_arch_init_vcpu(CPUState *cs) cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_POWER_OFF; } if (kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PSCI_0_2)) { + cpu->psci_version = 2; cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PSCI_0_2; } diff --git a/target-arm/kvm64.c b/target-arm/kvm64.c index feeac4a..2634baf 100644 --- a/target-arm/kvm64.c +++ b/target-arm/kvm64.c @@ -92,6 +92,7 @@ int kvm_arch_init_vcpu(CPUState *cs) cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_POWER_OFF; } if (kvm_check_extension(cs->kvm_state, KVM_CAP_ARM_PSCI_0_2)) { + cpu->psci_version = 2; cpu->kvm_init_features[0] |= 1 << KVM_ARM_VCPU_PSCI_0_2; }