From nobody Fri May 17 10:44:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+108914+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+108914+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1695220408; cv=none; d=zohomail.com; s=zohoarc; b=e22VyR5XZ0hiBGgNu4ynXpczCvPqEk/j+zQhNVbkkkj7gY6hB4sv6GgMe83TOEBM1jMd+I3ORyeqqMW/1YnHuSyhtlhAI/nGo8hvGnLnhoG0JMBRXRh55ytCYlazlUfEYwvKZ8W5ctmOlSEcLq6EwiweQ/xMU5aNqygviiXwRDY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695220408; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=GdxBJYfsPymyqRBImXmuNUV3Iptt2m4eOxS7bo5sujI=; b=gaRls6d9w6MVNGzXuT2IbVJYKcNCfcz98s/RA9tBxG9Z8SG1bu2wwMsqcne5tgnW3M8uR6DJKOIGA45Pbgdr14qHSiyaMgN3xyRtALtj1JnPViPH/AAmnDkWD8qJr/RzxIH/WijNUYXpoXW6sxEeT7ONPcdvxObQwxAlLfrr8Ds= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+108914+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1695220408166833.7807865673915; Wed, 20 Sep 2023 07:33:28 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=E87ZaK1iBw/Wnbi+u3GwyYMucFdFG5VGyHTe5O3jOlg=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1695220407; v=1; b=JSGSWNjMWpINv2L/Bp5Px4HCuiGPAhNKhvhjkKTg/tmUyD2tt/LL8VVM2Gv6QWlJMzKE5kf3 prLf7hQGcVU0qkmf6wYXEIY7V5sQsIDSUQSin5I72lrAy0Gzl571SAHv8Rfc6l3vOJz9IRzaM8N Rz9gaElFjr9HGDvf+JhLro54= X-Received: by 127.0.0.2 with SMTP id RKWyYY1788612xaNPttmQpza; Wed, 20 Sep 2023 07:33:27 -0700 X-Received: from muminek.juszkiewicz.com.pl (muminek.juszkiewicz.com.pl [213.251.184.221]) by mx.groups.io with SMTP id smtpd.web10.41200.1695220406500466815 for ; Wed, 20 Sep 2023 07:33:26 -0700 X-Received: from localhost (localhost [127.0.0.1]) by muminek.juszkiewicz.com.pl (Postfix) with ESMTP id 64E542601CE; Wed, 20 Sep 2023 16:33:24 +0200 (CEST) X-Virus-Scanned: Debian amavis at juszkiewicz.com.pl X-Received: from muminek.juszkiewicz.com.pl ([127.0.0.1]) by localhost (muminek.juszkiewicz.com.pl [127.0.0.1]) (amavis, port 10024) with ESMTP id vzWNfZPBowQa; Wed, 20 Sep 2023 16:33:22 +0200 (CEST) X-Received: from applejack.lan (83.11.3.58.ipv4.supernova.orange.pl [83.11.3.58]) by muminek.juszkiewicz.com.pl (Postfix) with ESMTPSA id E085C260662; Wed, 20 Sep 2023 16:33:21 +0200 (CEST) From: "Marcin Juszkiewicz" To: devel@edk2.groups.io Cc: Leif Lindholm , Ard Biesheuvel , Graeme Gregory , Marcin Juszkiewicz Subject: [edk2-devel] [PATCH edk2-platforms 1/2] Silicon/SbsaQemu: move IORT structures to header file Date: Wed, 20 Sep 2023 16:33:17 +0200 Message-ID: <20230920143318.430456-2-marcin.juszkiewicz@linaro.org> In-Reply-To: <20230920143318.430456-1-marcin.juszkiewicz@linaro.org> References: <20230920143318.430456-1-marcin.juszkiewicz@linaro.org> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,marcin.juszkiewicz@linaro.org List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: DREJHsEBu1QFLEXpZMvqYGL9x1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1695220409442100005 Content-Type: text/plain; charset="utf-8" There are more and more things in SbsaQemuAcpiDxe.c file which should be elsewhere. Signed-off-by: Marcin Juszkiewicz Reviewed-by: Leif Lindholm --- .../Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.h | 37 +++++++++++++++++++ .../Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c | 24 +----------- 2 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuA= cpiDxe.h diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.= h b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.h new file mode 100644 index 000000000000..f13ee3f738c2 --- /dev/null +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.h @@ -0,0 +1,37 @@ +/** @file +* This file is an ACPI driver for the Qemu SBSA platform. +* +* Copyright (c) Linaro Ltd. All rights reserved. +* +* SPDX-License-Identifier: BSD-2-Clause-Patent +* +**/ + +#ifndef SBSAQEMU_ACPI_DXE_H +#define SBSAQEMU_ACPI_DXE_H + +typedef struct { + EFI_ACPI_6_0_IO_REMAPPING_ITS_NODE Node; + UINT32 Identifiers; +} SBSA_EFI_ACPI_6_0_IO_REMAPPING_ITS_NODE; + +typedef struct +{ + EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE SmmuNode; + EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE SmmuIdMap; +} SBSA_EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE; + +typedef struct +{ + EFI_ACPI_6_0_IO_REMAPPING_RC_NODE RcNode; + EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE RcIdMap; +} SBSA_EFI_ACPI_6_0_IO_REMAPPING_RC_NODE; + +typedef struct { + EFI_ACPI_6_0_IO_REMAPPING_TABLE Iort; + SBSA_EFI_ACPI_6_0_IO_REMAPPING_ITS_NODE ItsNode; + SBSA_EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE SmmuNode; + SBSA_EFI_ACPI_6_0_IO_REMAPPING_RC_NODE RcNode; +} SBSA_IO_REMAPPING_STRUCTURE; + +#endif diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.= c b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c index 3bc25a6e3540..e52256616936 100644 --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c @@ -21,32 +21,10 @@ #include #include #include +#include "SbsaQemuAcpiDxe.h" =20 #pragma pack(1) =20 -typedef struct { - EFI_ACPI_6_0_IO_REMAPPING_ITS_NODE Node; - UINT32 Identifiers; -} SBSA_EFI_ACPI_6_0_IO_REMAPPING_ITS_NODE; - -typedef struct -{ - EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE SmmuNode; - EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE SmmuIdMap; -} SBSA_EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE; - -typedef struct -{ - EFI_ACPI_6_0_IO_REMAPPING_RC_NODE RcNode; - EFI_ACPI_6_0_IO_REMAPPING_ID_TABLE RcIdMap; -} SBSA_EFI_ACPI_6_0_IO_REMAPPING_RC_NODE; - -typedef struct { - EFI_ACPI_6_0_IO_REMAPPING_TABLE Iort; - SBSA_EFI_ACPI_6_0_IO_REMAPPING_ITS_NODE ItsNode; - SBSA_EFI_ACPI_6_0_IO_REMAPPING_SMMU3_NODE SmmuNode; - SBSA_EFI_ACPI_6_0_IO_REMAPPING_RC_NODE RcNode; -} SBSA_IO_REMAPPING_STRUCTURE; =20 static UINTN GicItsBase; =20 --=20 2.41.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108914): https://edk2.groups.io/g/devel/message/108914 Mute This Topic: https://groups.io/mt/101479612/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Fri May 17 10:44:20 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+108915+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+108915+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=linaro.org ARC-Seal: i=1; a=rsa-sha256; t=1695220408; cv=none; d=zohomail.com; s=zohoarc; b=jOTCfbrAnIvCFxhQ0HJdWJQ2TKAaZTIfAB77shYLp41GQa+1DZWs0aEIUwPhcn70SGuEhxAuWU/zSBDo+kTSHgi/ThdeU98uZ98qYbLz64wBMDRA8IS+rnJZLXBAyd6/S67N+bzTPDt9qMjWZwqgDiJFK9y1gZfYMVr+ZJRMewM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1695220408; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=VN7mln1Zy8O9Fs5XZeVxqdZjWwA1V6AWgKHiIVKfvXo=; b=DYX+G5QWeyPZmCrtT54cg2laW4OBFpg37ORxHphLhjFpYddTdciHZ2jS5RdN4LOzBTsGMXy08D1MrnfWCIbGzzICe20Gks9Qv0T3AwhP9zm82po2g1TkT3u9D+AyDXT+WxiFFdMlTTqefAFrI8EVanefG3AeyZ03agzLD7oAf8g= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+108915+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1695220408925293.117586632379; Wed, 20 Sep 2023 07:33:28 -0700 (PDT) Return-Path: DKIM-Signature: a=rsa-sha256; bh=2V2RQBC3o68NA8BNMGV+dCyvJY1oCqlCY48QQygBrqQ=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1695220408; v=1; b=qNhEgJaWG3AuJ3S18zsIjcA4Q02sunF6/JllRIa6q7DKzQuOZR/5Nw+7lpPtumIFhFlUpj7M qNe6i2G2C9Gwu8gs9IrS7UuBbPg3w8SxXMzwvc/5QtxZgAzRT7QN3GJYDXui2agnMI5dWLLAW9N t41xZ6Tc0Hus14cqHxqZyOnM= X-Received: by 127.0.0.2 with SMTP id cKaPYY1788612xGe7wj74d62; Wed, 20 Sep 2023 07:33:28 -0700 X-Received: from muminek.juszkiewicz.com.pl (muminek.juszkiewicz.com.pl [213.251.184.221]) by mx.groups.io with SMTP id smtpd.web10.41201.1695220407575210980 for ; Wed, 20 Sep 2023 07:33:28 -0700 X-Received: from localhost (localhost [127.0.0.1]) by muminek.juszkiewicz.com.pl (Postfix) with ESMTP id 5A065260662; Wed, 20 Sep 2023 16:33:25 +0200 (CEST) X-Virus-Scanned: Debian amavis at juszkiewicz.com.pl X-Received: from muminek.juszkiewicz.com.pl ([127.0.0.1]) by localhost (muminek.juszkiewicz.com.pl [127.0.0.1]) (amavis, port 10024) with ESMTP id YZTDsWlLv9zl; Wed, 20 Sep 2023 16:33:23 +0200 (CEST) X-Received: from applejack.lan (83.11.3.58.ipv4.supernova.orange.pl [83.11.3.58]) by muminek.juszkiewicz.com.pl (Postfix) with ESMTPSA id 19278260933; Wed, 20 Sep 2023 16:33:22 +0200 (CEST) From: "Marcin Juszkiewicz" To: devel@edk2.groups.io Cc: Leif Lindholm , Ard Biesheuvel , Graeme Gregory , Marcin Juszkiewicz Subject: [edk2-devel] [PATCH edk2-platforms 2/2] Silicon/SbsaQemu: generate GTDT from C Date: Wed, 20 Sep 2023 16:33:18 +0200 Message-ID: <20230920143318.430456-3-marcin.juszkiewicz@linaro.org> In-Reply-To: <20230920143318.430456-1-marcin.juszkiewicz@linaro.org> References: <20230920143318.430456-1-marcin.juszkiewicz@linaro.org> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,marcin.juszkiewicz@linaro.org List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: CIlBkhH1sjRh4BjA9miYGNSbx1787277AA= Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1695220409469100006 Content-Type: text/plain; charset="utf-8" We need to have some conditional code while generating GTDT due to adding non-secure EL2 virtual timer. Signed-off-by: Marcin Juszkiewicz Reviewed-by: Leif Lindholm --- .../Qemu/SbsaQemu/AcpiTables/AcpiTables.inf | 1 - .../SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf | 6 + .../Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.h | 29 +++++ .../Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c | 101 +++++++++++++++++ Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc | 107 ------------------ 5 files changed, 136 insertions(+), 108 deletions(-) delete mode 100644 Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf b/Silicon/Qemu= /SbsaQemu/AcpiTables/AcpiTables.inf index 97021f7971c7..61ff3dff3356 100644 --- a/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf +++ b/Silicon/Qemu/SbsaQemu/AcpiTables/AcpiTables.inf @@ -19,7 +19,6 @@ [Sources] Dbg2.aslc Dsdt.asl Fadt.aslc - Gtdt.aslc Mcfg.aslc Spcr.aslc =20 diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.= inf b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf index 14d760b36400..19f186f4310c 100644 --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.inf @@ -68,3 +68,9 @@ [FixedPcd] gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemTableId gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemRevision + + gArmTokenSpaceGuid.PcdArmArchTimerSecIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerHypIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerVirtIntrNum + gArmTokenSpaceGuid.PcdArmArchTimerHypVirtIntrNum diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.= h b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.h index f13ee3f738c2..7c9074b10960 100644 --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.h +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.h @@ -34,4 +34,33 @@ typedef struct { SBSA_EFI_ACPI_6_0_IO_REMAPPING_RC_NODE RcNode; } SBSA_IO_REMAPPING_STRUCTURE; =20 +typedef struct { + EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE mGtdt; + EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE mGwdt; +} GENERIC_TIMER_DESCRIPTION_TABLES; + +#ifndef SYSTEM_TIMER_BASE_ADDRESS + #define SYSTEM_TIMER_BASE_ADDRESS MAX_ADDRESS +#endif + +#define GTDT_TIMER_LEVEL_TRIGGERED 0 +#define GTDT_TIMER_ACTIVE_LOW EFI_ACPI_6_3_GTDT_TIMER_FLAG_TIMER_INT= ERRUPT_POLARITY +#define GTDT_TIMER_ALWAYS_ON EFI_ACPI_6_3_GTDT_TIMER_FLAG_ALWAYS_ON= _CAPABILITY + +#define GTDT_GTIMER_FLAGS (GTDT_TIMER_ACTIVE_LOW | \ + GTDT_TIMER_LEVEL_TRIGGERED | \ + GTDT_TIMER_ALWAYS_ON) + +#define SBSA_PLATFORM_WATCHDOG_COUNT 1 +#define SBSA_PLATFORM_TIMER_COUNT (SBSA_PLATFORM_WATCHDOG_COUNT) + +#define SBSAQEMU_WDT_REFRESH_FRAME_BASE 0x50010000 +#define SBSAQEMU_WDT_CONTROL_FRAME_BASE 0x50011000 +#define SBSAQEMU_WDT_IRQ 48 + +#define GTDT_WDTIMER_LEVEL_TRIGGERED 0 +#define GTDT_WDTIMER_ACTIVE_HIGH 0 + +#define GTDT_WDTIMER_FLAGS (GTDT_WDTIMER_ACTIVE_HIGH | GTDT_WDTIM= ER_LEVEL_TRIGGERED) + #endif diff --git a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.= c b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c index e52256616936..1f10214e264b 100644 --- a/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c +++ b/Silicon/Qemu/SbsaQemu/Drivers/SbsaQemuAcpiDxe/SbsaQemuAcpiDxe.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -586,6 +587,101 @@ AddPpttTable ( return Status; } =20 +/* + * A function that adds the GTDT ACPI table. + */ +EFI_STATUS +AddGtdtTable ( + IN EFI_ACPI_TABLE_PROTOCOL *AcpiTable + ) +{ + EFI_STATUS Status; + UINTN TableHandle; + UINT32 TableSize; + EFI_PHYSICAL_ADDRESS PageAddress; + UINT8 *New; + + TableSize =3D sizeof (EFI_ACPI_6_5_GENERIC_TIMER_DESCRIPTION_TABLE) + + sizeof (EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE); + + Status =3D gBS->AllocatePages ( + AllocateAnyPages, + EfiACPIReclaimMemory, + EFI_SIZE_TO_PAGES (TableSize), + &PageAddress + ); + + if (EFI_ERROR(Status)) { + DEBUG ((DEBUG_ERROR, "Failed to allocate pages for GTDT table\n")); + return EFI_OUT_OF_RESOURCES; + } + + EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE Gtdt =3D { + + SBSAQEMU_ACPI_HEADER ( + EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, + GENERIC_TIMER_DESCRIPTION_TABLES, + EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION), + + SYSTEM_TIMER_BASE_ADDRESS, // UINT64 PhysicalAdd= ress + 0, // UINT32 Reserved + FixedPcdGet32 (PcdArmArchTimerSecIntrNum), // UINT32 SecurePL1Ti= merGSIV + GTDT_GTIMER_FLAGS, // UINT32 SecurePL1Ti= merFlags + FixedPcdGet32 (PcdArmArchTimerIntrNum), // UINT32 NonSecurePL= 1TimerGSIV + GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL= 1TimerFlags + FixedPcdGet32 (PcdArmArchTimerVirtIntrNum), // UINT32 VirtualTime= rGSIV + GTDT_GTIMER_FLAGS, // UINT32 VirtualTime= rFlags + FixedPcdGet32 (PcdArmArchTimerHypIntrNum), // UINT32 NonSecurePL= 2TimerGSIV + GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL= 2TimerFlags + MAX_ADDRESS, // UINT64 CntReadBase= PhysicalAddress + SBSA_PLATFORM_TIMER_COUNT, // UINT32 PlatformTim= erCount + sizeof(EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE), + // UINT32 PlatformTim= erOffset + FixedPcdGet32 (PcdArmArchTimerHypVirtIntrNum),// UINT32 VirtualPL2T= imerGSIV + GTDT_GTIMER_FLAGS // UINT32 VirtualPL2T= imerFlags + }; + + // Non-secure EL2 virtual timer requires VHE support (v8.1+) + if (! ArmHasVhe()) { + Gtdt.VirtualPL2TimerGSIV =3D 0; + Gtdt.VirtualPL2TimerFlags =3D 0; + } + + EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE Gwdt =3D { + EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG, + sizeof(EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE), + EFI_ACPI_RESERVED_WORD, + SBSAQEMU_WDT_REFRESH_FRAME_BASE, + SBSAQEMU_WDT_CONTROL_FRAME_BASE, + SBSAQEMU_WDT_IRQ, + GTDT_WDTIMER_FLAGS + }; + + New =3D (UINT8 *)(UINTN) PageAddress; + ZeroMem (New, TableSize); + + CopyMem (New, &Gtdt, sizeof (EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABL= E)); + New +=3D sizeof (EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE); + + CopyMem (New, &Gwdt, sizeof (EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STR= UCTURE)); + New +=3D sizeof (EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE); + + // Perform Checksum + AcpiPlatformChecksum ((UINT8*) PageAddress, TableSize); + + Status =3D AcpiTable->InstallAcpiTable ( + AcpiTable, + (EFI_ACPI_COMMON_HEADER *)PageAddress, + TableSize, + &TableHandle + ); + if (EFI_ERROR(Status)) { + DEBUG ((DEBUG_ERROR, "Failed to install GTDT table\n")); + } + + return Status; +} + EFI_STATUS EFIAPI InitializeSbsaQemuAcpiDxe ( @@ -637,5 +733,10 @@ InitializeSbsaQemuAcpiDxe ( DEBUG ((DEBUG_ERROR, "Failed to add PPTT table\n")); } =20 + Status =3D AddGtdtTable (AcpiTable); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed to add GTDT table\n")); + } + return EFI_SUCCESS; } diff --git a/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc b/Silicon/Qemu/Sbsa= Qemu/AcpiTables/Gtdt.aslc deleted file mode 100644 index ba145aff6413..000000000000 --- a/Silicon/Qemu/SbsaQemu/AcpiTables/Gtdt.aslc +++ /dev/null @@ -1,107 +0,0 @@ -/** @file -* Generic Timer Description Table (GTDT) -* -* Copyrignt (c) 2020, Linaro Limited. All rights reserved. -* -* SPDX-License-Identifier: BSD-2-Clause-Patent -**/ - -#include -#include -#include -#include - -#define GTDT_GLOBAL_FLAGS_MAPPED EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY= _MAPPED_BLOCK_PRESENT -#define GTDT_GLOBAL_FLAGS_NOT_MAPPED 0 -#define GTDT_GLOBAL_FLAGS_EDGE EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERR= UPT_MODE -#define GTDT_GLOBAL_FLAGS_LEVEL 0 - -// Note: We could have a build flag that switches between memory mapped/no= n-memory mapped timer -#ifdef SYSTEM_TIMER_BASE_ADDRESS - #define GTDT_GLOBAL_FLAGS (GTDT_GLOBAL_FLAGS_MAPPED | GTDT_G= LOBAL_FLAGS_LEVEL) -#else - #define GTDT_GLOBAL_FLAGS (GTDT_GLOBAL_FLAGS_NOT_MAPPED | GT= DT_GLOBAL_FLAGS_LEVEL) - #define SYSTEM_TIMER_BASE_ADDRESS 0xFFFFFFFFFFFFFFFF -#endif - -#define GTDT_TIMER_EDGE_TRIGGERED EFI_ACPI_6_3_GTDT_TIMER_FLAG_TIMER_INT= ERRUPT_MODE -#define GTDT_TIMER_LEVEL_TRIGGERED 0 -#define GTDT_TIMER_ACTIVE_LOW EFI_ACPI_6_3_GTDT_TIMER_FLAG_TIMER_INT= ERRUPT_POLARITY -#define GTDT_TIMER_ACTIVE_HIGH 0 -#define GTDT_TIMER_ALWAYS_ON EFI_ACPI_6_3_GTDT_TIMER_FLAG_ALWAYS_ON= _CAPABILITY - -#define GTDT_GTIMER_FLAGS (GTDT_TIMER_ACTIVE_LOW | \ - GTDT_TIMER_LEVEL_TRIGGERED | \ - GTDT_TIMER_ALWAYS_ON) - -#define SBSA_PLATFORM_WATCHDOG_COUNT 1 -#define SBSA_PLATFORM_TIMER_COUNT (SBSA_PLATFORM_WATCHDOG_COUNT) - -#define SBSAQEMU_WDT_REFRESH_FRAME_BASE 0x50010000 -#define SBSAQEMU_WDT_CONTROL_FRAME_BASE 0x50011000 -#define SBSAQEMU_WDT_IRQ 48 - -#define GTDT_WDTIMER_EDGE_TRIGGERED EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCH= DOG_FLAG_TIMER_INTERRUPT_MODE -#define GTDT_WDTIMER_LEVEL_TRIGGERED 0 -#define GTDT_WDTIMER_ACTIVE_LOW EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCH= DOG_FLAG_TIMER_INTERRUPT_POLARITY -#define GTDT_WDTIMER_ACTIVE_HIGH 0 - -#define GTDT_WDTIMER_FLAGS (GTDT_WDTIMER_ACTIVE_HIGH | GTDT_WDTIM= ER_LEVEL_TRIGGERED) - -#define EFI_ACPI_6_3_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT( \ - RefreshFramePhysicalAddress, ControlFramePhysicalAddress, \ - WatchdogTimerGSIV, WatchdogTimerFlags) \ - { \ - EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG, \ - sizeof(EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE), \ - EFI_ACPI_RESERVED_WORD, \ - RefreshFramePhysicalAddress, \ - ControlFramePhysicalAddress, \ - WatchdogTimerGSIV, \ - WatchdogTimerFlags \ - } - - #pragma pack (1) - - typedef struct { - EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE Gtdt; - EFI_ACPI_6_3_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE Gwdt; - } GENERIC_TIMER_DESCRIPTION_TABLES; - - #pragma pack () - - GENERIC_TIMER_DESCRIPTION_TABLES Gtdt =3D { - { - SBSAQEMU_ACPI_HEADER( - EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, - GENERIC_TIMER_DESCRIPTION_TABLES, - EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION - ), - SYSTEM_TIMER_BASE_ADDRESS, // UINT64 PhysicalAdd= ress - 0, // UINT32 Reserved - FixedPcdGet32 (PcdArmArchTimerSecIntrNum), // UINT32 SecurePL1Ti= merGSIV - GTDT_GTIMER_FLAGS, // UINT32 SecurePL1Ti= merFlags - FixedPcdGet32 (PcdArmArchTimerIntrNum), // UINT32 NonSecurePL= 1TimerGSIV - GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL= 1TimerFlags - FixedPcdGet32 (PcdArmArchTimerVirtIntrNum), // UINT32 VirtualTime= rGSIV - GTDT_GTIMER_FLAGS, // UINT32 VirtualTime= rFlags - FixedPcdGet32 (PcdArmArchTimerHypIntrNum), // UINT32 NonSecurePL= 2TimerGSIV - GTDT_GTIMER_FLAGS, // UINT32 NonSecurePL= 2TimerFlags - 0xFFFFFFFFFFFFFFFF, // UINT64 CntReadBase= PhysicalAddress - SBSA_PLATFORM_TIMER_COUNT, // UINT32 PlatformTim= erCount - sizeof(EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE), - // UINT32 PlatformTim= erOffset - 0, // UINT32 VirtualPL2T= imerGSIV - 0 // UINT32 VirtualPL2T= imerFlags - }, - EFI_ACPI_6_3_SBSA_GENERIC_WATCHDOG_STRUCTURE_INIT( - SBSAQEMU_WDT_REFRESH_FRAME_BASE, - SBSAQEMU_WDT_CONTROL_FRAME_BASE, - SBSAQEMU_WDT_IRQ, - GTDT_WDTIMER_FLAGS - ) - }; - -// Reference the table being generated to prevent the optimizer from remov= ing the -// data structure from the executable -VOID* CONST ReferenceAcpiTable =3D &Gtdt; --=20 2.41.0 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#108915): https://edk2.groups.io/g/devel/message/108915 Mute This Topic: https://groups.io/mt/101479615/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-