From nobody Mon May 6 23:03:17 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1494929463584464.45363731269924; Tue, 16 May 2017 03:11:03 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 480EF21A16EE5; Tue, 16 May 2017 03:11:02 -0700 (PDT) Received: from cam-smtp0.cambridge.arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 4F34721A16EDA for ; Tue, 16 May 2017 03:11:00 -0700 (PDT) Received: from E111747.Emea.Arm.com (e111747.emea.arm.com [10.1.29.116]) by cam-smtp0.cambridge.arm.com (8.13.8/8.13.8) with ESMTP id v4GAAovx015526; Tue, 16 May 2017 11:10:53 +0100 X-Original-To: edk2-devel@ml01.01.org From: evan.lloyd@arm.com To: edk2-devel@ml01.01.org Date: Tue, 16 May 2017 11:10:44 +0100 Message-Id: <20170516101045.14288-2-evan.lloyd@arm.com> X-Mailer: git-send-email 2.12.2 In-Reply-To: <20170516101045.14288-1-evan.lloyd@arm.com> References: <20170516101045.14288-1-evan.lloyd@arm.com> Subject: [edk2] [PATCH 1/2] ArmPkg: Add CNTHCTL_EL2 support functions X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ryan Harkin , Leif Lindholm , Ard Biesheuvel MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Sami Mujawar Added helper functions for reading and writing the CNTHCTL_EL2 register. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Sami Mujawar Signed-off-by: Evan Lloyd Reviewed-by: Leif Lindholm --- ArmPkg/Include/Chipset/AArch64.h | 12 +++++++++++- ArmPkg/Library/ArmLib/AArch64/AArch64Support.S | 10 ++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ArmPkg/Include/Chipset/AArch64.h b/ArmPkg/Include/Chipset/AArc= h64.h index cebfc5da426a44bb97505ed9c1da3b2b2e35a0cc..76c2cc735ef3196273b28c7a804= 048d8e1f6d123 100644 --- a/ArmPkg/Include/Chipset/AArch64.h +++ b/ArmPkg/Include/Chipset/AArch64.h @@ -1,7 +1,7 @@ /** @file =20 Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
- Copyright (c) 2011 - 2015, ARM Ltd. All rights reserved.
+ Copyright (c) 2011 - 2017, ARM Ltd. All rights reserved.
=20 This program and the accompanying materials are licensed and made available under the terms and conditions of the BS= D License @@ -235,4 +235,14 @@ ArmWriteCptr ( IN UINT64 Cptr ); =20 +UINT32 +ArmReadCntHctl ( + VOID + ); + +VOID +ArmWriteCntHctl ( + IN UINT32 CntHctl + ); + #endif // __AARCH64_H__ diff --git a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S b/ArmPkg/Librar= y/ArmLib/AArch64/AArch64Support.S index 6e8074a4868979d2fa3b850e1e588862179f829a..dde6a756528f3abf1bd5a142448= e42122a9bd8fa 100644 --- a/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S +++ b/ArmPkg/Library/ArmLib/AArch64/AArch64Support.S @@ -480,4 +480,14 @@ ASM_FUNC(ArmReadCurrentEL) mrs x0, CurrentEL ret =20 +// UINT32 ArmReadCntHctl(VOID) +ASM_FUNC(ArmReadCntHctl) + mrs x0, cnthctl_el2 + ret + +// VOID ArmWriteCntHctl(UINT32 CntHctl) +ASM_FUNC(ArmWriteCntHctl) + msr cnthctl_el2, x0 + ret + ASM_FUNCTION_REMOVE_IF_UNREFERENCED --=20 Guid("CE165669-3EF3-493F-B85D-6190EE5B9759") _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel From nobody Mon May 6 23:03:17 2024 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org; Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 14949294693091004.4845200689983; Tue, 16 May 2017 03:11:09 -0700 (PDT) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 7C0E721A16EE9; Tue, 16 May 2017 03:11:03 -0700 (PDT) Received: from cam-smtp0.cambridge.arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6C43E21A16EE7 for ; Tue, 16 May 2017 03:11:02 -0700 (PDT) Received: from E111747.Emea.Arm.com (e111747.emea.arm.com [10.1.29.116]) by cam-smtp0.cambridge.arm.com (8.13.8/8.13.8) with ESMTP id v4GAAow0015526; Tue, 16 May 2017 11:10:56 +0100 X-Original-To: edk2-devel@ml01.01.org From: evan.lloyd@arm.com To: edk2-devel@ml01.01.org Date: Tue, 16 May 2017 11:10:45 +0100 Message-Id: <20170516101045.14288-3-evan.lloyd@arm.com> X-Mailer: git-send-email 2.12.2 In-Reply-To: <20170516101045.14288-1-evan.lloyd@arm.com> References: <20170516101045.14288-1-evan.lloyd@arm.com> Subject: [edk2] [PATCH 2/2] ArmPlatformPkg: Timer access for non-secure EL1/0 X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Ryan Harkin , nd@arm.com, Leif Lindholm , Ard Biesheuvel MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" From: Sami Mujawar According to Section 2.3.6 of the "UEFI Specification 2.6 Errata A"; the primary CPU must be configured such that 'Timer access must be provided to non-secure EL1 and EL0 by setting bits EL1PCTEN and EL1PCEN in register CNTHCTL_EL2.' This commit adds this missing set-up to the PrePi and PrePeiCore modules. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Sami Mujawar Signed-off-by: Evan Lloyd Reviewed-by: Leif Lindholm --- ArmPlatformPkg/PrePi/AArch64/ArchPrePi.c | 9 ++++++++- ArmPlatformPkg/PrePeiCore/AArch64/Helper.S | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/ArmPlatformPkg/PrePi/AArch64/ArchPrePi.c b/ArmPlatformPkg/PreP= i/AArch64/ArchPrePi.c index 217986107e44185c2c6e11ca8a417fad659cde2f..4da590805aaae4016952c0e5e9c= e90c1897e37c4 100644 --- a/ArmPlatformPkg/PrePi/AArch64/ArchPrePi.c +++ b/ArmPlatformPkg/PrePi/AArch64/ArchPrePi.c @@ -1,6 +1,6 @@ /** @file * -* Copyright (c) 2011-2013, ARM Limited. All rights reserved. +* Copyright (c) 2011-2017, ARM Limited. All rights reserved. * * This program and the accompanying materials * are licensed and made available under the terms and conditions of the B= SD License @@ -29,5 +29,12 @@ ArchInitialize ( if (ArmReadCurrentEL () =3D=3D AARCH64_EL2) { // Trap General Exceptions. All exceptions that would be routed to EL1= are routed to EL2 ArmWriteHcr (ARM_HCR_TGE); + + /* Enable Timer access for non-secure EL1 and EL0 + The cnthctl_el2 register bits are architecturally + UNKNOWN on reset. + Disable event stream as it is not in use at this stage + */ + ArmWriteCntHctl (CNTHCTL_EL2_EL1PCTEN | CNTHCTL_EL2_EL1PCEN); } } diff --git a/ArmPlatformPkg/PrePeiCore/AArch64/Helper.S b/ArmPlatformPkg/Pr= ePeiCore/AArch64/Helper.S index 5f35484b1259f8b85c370de2cde945db2b799c13..b4f35b7ff5d389ecf61c025f85b= b6cf8fcce793d 100644 --- a/ArmPlatformPkg/PrePeiCore/AArch64/Helper.S +++ b/ArmPlatformPkg/PrePeiCore/AArch64/Helper.S @@ -1,5 +1,5 @@ #=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D -# Copyright (c) 2011-2013, ARM Limited. All rights reserved. +# Copyright (c) 2011-2017, ARM Limited. All rights reserved. # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the B= SD License @@ -36,6 +36,13 @@ ASM_FUNC(SetupExceptionLevel2) =20 msr cptr_el2, xzr // Disable copro traps to EL2 =20 + // Enable Timer access for non-secure EL1 and EL0 + // The cnthctl_el2 register bits are architecturally + // UNKNOWN on reset. + // Disable event stream as it is not in use at this stage + mov x0, #(CNTHCTL_EL2_EL1PCTEN | CNTHCTL_EL2_EL1PCEN) + msr cnthctl_el2, x0 + ret =20 ASM_FUNCTION_REMOVE_IF_UNREFERENCED --=20 Guid("CE165669-3EF3-493F-B85D-6190EE5B9759") _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel