From nobody Sun May 19 02:38:03 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+76991+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+76991+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1624457227; cv=none; d=zohomail.com; s=zohoarc; b=JCawtg8UR0mh5qSDkQJ8d46ZRK5F/FulR5SfqrJUtCFv18+sjqcMCk/TuWGcEvrSJXCPUhYdLZQZaUaBslm7pmS7d1h7JhOHpwPdjGd+tXiuzfn7P+CvNTmAjEQ0+GpxcjCU3xMEwlFevx7b3M3psukFY/8Ly694Gnlr2r2w+gk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624457227; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=Io8qu4txOtAyauqHMkOIluRVle4uw0XMZ5pCg2F2xQA=; b=MUbdgQiyeRd8Wk3YoWL74CsMII2IuLVCDEvpXVnBESm4wjsOLv3SCd22j/OPHIY+6JLcMrF0cd/4fOzXuGd8xLzszAiIHRKxz5BQ0cziJhqptW5QfCwwU7f/NAi2jbFV1+J8NGydYWuoY2V0UMrRv93emY5Y+Bb2/U5E3rK2ySg= 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+76991+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 1624457227381309.4616316863619; Wed, 23 Jun 2021 07:07:07 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id uFeAYY1788612x8iZyJyaDmG; Wed, 23 Jun 2021 07:07:07 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web08.7986.1624457221436293700 for ; Wed, 23 Jun 2021 07:07:01 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 047EF1063; Wed, 23 Jun 2021 07:07:01 -0700 (PDT) X-Received: from e120189.arm.com (unknown [10.57.78.245]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 25A493F718; Wed, 23 Jun 2021 07:06:58 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io, Sami Mujawar , Laszlo Ersek Cc: Ard Biesheuvel , Leif Lindholm , Akanksha Jain , Alexandru Elisei Subject: [edk2-devel] [PATCH v1 1/5] ArmVirtPkg: Add cspell exceptions Date: Wed, 23 Jun 2021 15:06:36 +0100 Message-Id: <20210623140640.16754-2-Pierre.Gondois@arm.com> In-Reply-To: <20210623140640.16754-1-Pierre.Gondois@arm.com> References: <20210623140640.16754-1-Pierre.Gondois@arm.com> Precedence: Bulk List-Unsubscribe: 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,pierre.gondois@arm.com X-Gm-Message-State: w53ljpFNLPNSWjt0k4W8XOvfx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1624457227; bh=wh1aso37e3VnMTFqQ2+z65r1Kw6tM8tu0/+00Yqk28U=; h=Cc:Date:From:Reply-To:Subject:To; b=DW6lZWwMTfby0YcyaItOvvwHK4YE7khBlueGvOh926iua5ifOetzZGznQ9uUkQH3wW3 YEwRpDu3pxak/i9CcJm7FCi24ZvKHmlyWlXjpLDAWF2tyk/M6ZzK6QXhMNhLhV98vBAWk 5Oe9pGt7feB8cVUgRn2zixtYS1yEbq7ZqWo= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Pierre Gondois The cpsell tool checks for unknown words in the upstream CI. Add some new words to the list of exceptions. Signed-off-by: Pierre Gondois Reviewed-by: Laszlo Ersek --- ArmVirtPkg/ArmVirtPkg.ci.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ArmVirtPkg/ArmVirtPkg.ci.yaml b/ArmVirtPkg/ArmVirtPkg.ci.yaml index 5f427e57233e..e3f30d69e89a 100644 --- a/ArmVirtPkg/ArmVirtPkg.ci.yaml +++ b/ArmVirtPkg/ArmVirtPkg.ci.yaml @@ -47,6 +47,7 @@ "MdePkg/MdePkg.dec", "MdeModulePkg/MdeModulePkg.dec", "ArmVirtPkg/ArmVirtPkg.dec", + "DynamicTablesPkg/DynamicTablesPkg.dec", "NetworkPkg/NetworkPkg.dec", "ArmPkg/ArmPkg.dec", "OvmfPkg/OvmfPkg.dec", @@ -97,6 +98,8 @@ "AuditOnly": False, # Fails right now with over 270 erro= rs "IgnoreFiles": [], # use gitignore syntax to ignore erro= rs in matching files "ExtendWords": [ + "armltd", + "ssdts", "setjump", "plong", "lparam", --=20 2.17.1 -=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 (#76991): https://edk2.groups.io/g/devel/message/76991 Mute This Topic: https://groups.io/mt/83738485/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 Sun May 19 02:38:03 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+76992+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+76992+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1624457229; cv=none; d=zohomail.com; s=zohoarc; b=d8S14uw5yF8yreyLAoLWkl6Re9cqpHchxGYNOWcEkNXYerd3QrQjS5eYFusxreMKthSV4H6QYvqO0qHGPQYNTi4yVeA8VVCOXWrfk0qAnGQQb7lkpvvbckeav6NhR3OvK4qa48LjkmAEehnjBO9S714H/ZB1jTz6vX43UX1JXgA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624457229; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=ZjFqxyCbLINPKmBqM3e+3Dyq/ijxBna2BDx4/FNr2Ek=; b=JwboN9hh0FBqmpqAN+MuHebpa9oGo/zxm05ILvfLL68TdHz6AEYvE1yw5T4mnmcVl7NuVnN640iQHHzuZ9yV5BxIs3yrlG614T+fAiWNgSjR1AIcGbJgYdW9l9hNk9sQZ45ai2rOp2yUqwRXwzNJJ8sqLIbF5CH0TE3sqNVwpJ0= 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+76992+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 1624457229516780.5795168118444; Wed, 23 Jun 2021 07:07:09 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id ChQSYY1788612xRFfJIHK6RF; Wed, 23 Jun 2021 07:07:09 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.8214.1624457223581400717 for ; Wed, 23 Jun 2021 07:07:03 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 329BBED1; Wed, 23 Jun 2021 07:07:03 -0700 (PDT) X-Received: from e120189.arm.com (unknown [10.57.78.245]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 63A283F718; Wed, 23 Jun 2021 07:07:01 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io, Sami Mujawar , Laszlo Ersek Cc: Ard Biesheuvel , Leif Lindholm , Akanksha Jain , Alexandru Elisei Subject: [edk2-devel] [PATCH v1 2/5] ArmVirtPkg: Add DSDT ACPI table for Kvmtool firmware Date: Wed, 23 Jun 2021 15:06:37 +0100 Message-Id: <20210623140640.16754-3-Pierre.Gondois@arm.com> In-Reply-To: <20210623140640.16754-1-Pierre.Gondois@arm.com> References: <20210623140640.16754-1-Pierre.Gondois@arm.com> Precedence: Bulk List-Unsubscribe: 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,pierre.gondois@arm.com X-Gm-Message-State: ENrZH3tT0HvKGAVgXGmSKmRPx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1624457229; bh=bVuZBXQbTEBkthlf0UuEYFWkS1Jv4080LhjFwAypJSU=; h=Cc:Date:From:Reply-To:Subject:To; b=pc4DRKEKWsUyFTbVsHonunc8D2J91XmBxCNb+rbkGdjQfm2Pef0Bo6Kn4MgMNMQztg2 O0usuzPIsk8/lWwN+xkBl5EVPEsSsYSqZtdGVxtxyFZ2/ITjhrU0exdYOymX7daDvfqCR MlXzl2uHilJUTvm3UiAfHnjiwK37EHmpSVU= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sami Mujawar Most ACPI tables for Kvmtool firmware are dynamically generated. The AML code is also generated at runtime for most components in appropriate SSDTs. Although there may not be much to describe in the DSDT, the DSDT table is mandatory. Therefore, add an empty stub for DSDT. Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois Reviewed-by: Laszlo Ersek --- .../KvmtoolCfgMgrDxe/AslTables/Dsdt.asl | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 ArmVirtPkg/KvmtoolCfgMgrDxe/AslTables/Dsdt.asl diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/AslTables/Dsdt.asl b/ArmVirtPkg/Kv= mtoolCfgMgrDxe/AslTables/Dsdt.asl new file mode 100644 index 000000000000..8467d1ede4ec --- /dev/null +++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/AslTables/Dsdt.asl @@ -0,0 +1,19 @@ +/** @file + Differentiated System Description Table Fields (DSDT) + + Copyright (c) 2021, ARM Ltd. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +DefinitionBlock ("DsdtTable.aml", "DSDT", 1, "ARMLTD", "ARM-KVMT", 1) { + Scope (_SB) { + // Most ACPI tables for Kvmtool firmware are + // dynamically generated. The AML code is also + // generated at runtime for most components in + // appropriate SSDTs. + // Although there may not be much to describe + // in the DSDT, the DSDT table is mandatory. + // Therefore, add an empty stub for DSDT. + } // Scope (_SB) +} --=20 2.17.1 -=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 (#76992): https://edk2.groups.io/g/devel/message/76992 Mute This Topic: https://groups.io/mt/83738488/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 Sun May 19 02:38:03 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+76993+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+76993+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1624457227; cv=none; d=zohomail.com; s=zohoarc; b=IOuHcGz6cfK8ZSKEODgRgjN3wypzRFks7wvQgzfNIrqsEd55Qlmp4U3xDXasogL5J51rTWpXdbAE7xQ/ZiEY89hP4csc0J4XAEIoeAU6OGeCiFIY4UHSV7H0Tycr07P//HNkBvGAsoPkCIrIUZUT4nbD4UHvHCBUqnEMadcg/98= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624457227; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=V504JYcqxDDLlGeymkMtsA3D66QsTRZAPqVyP8WGSZI=; b=OrpReI+2+8rZPddRxPM7ioXcXIArESZH4D4R1MdSkrLk8QlupzjfXsFDehxscohXEX1+s2KMKJZnrdlfEpFQCMZl5yhGm+rhDHYrjLdtgCVfkuHOue0BbKCs7hv8pxB5gFZZs86KWpuXQuHVcSJExTT2riPxmKeqH4stkqhIsLQ= 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+76993+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 1624457227534484.7875910555314; Wed, 23 Jun 2021 07:07:07 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id IQwUYY1788612x4L1Eshfeor; Wed, 23 Jun 2021 07:07:06 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web12.8128.1624457225914713829 for ; Wed, 23 Jun 2021 07:07:06 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 78ACCED1; Wed, 23 Jun 2021 07:07:05 -0700 (PDT) X-Received: from e120189.arm.com (unknown [10.57.78.245]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 894423F718; Wed, 23 Jun 2021 07:07:03 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io, Sami Mujawar , Laszlo Ersek Cc: Ard Biesheuvel , Leif Lindholm , Akanksha Jain , Alexandru Elisei Subject: [edk2-devel] [PATCH v1 3/5] ArmVirtPkg: Add Configuration Manager for Kvmtool firmware Date: Wed, 23 Jun 2021 15:06:38 +0100 Message-Id: <20210623140640.16754-4-Pierre.Gondois@arm.com> In-Reply-To: <20210623140640.16754-1-Pierre.Gondois@arm.com> References: <20210623140640.16754-1-Pierre.Gondois@arm.com> Precedence: Bulk List-Unsubscribe: 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,pierre.gondois@arm.com X-Gm-Message-State: LF9vkNHEjs2lN49PTEm1YCFAx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1624457226; bh=DZKV+eGgHFv4LLVhpNd8LAaYGrlmC9IOSDhk0wSqLfU=; h=Cc:Date:From:Reply-To:Subject:To; b=VmB3ocJdgPq+K9lroMlM2Pgi6PevBXvVOoNONM5+58QKjiNl3d8QEAvGRHJk63470Kh d8ICa+PAWulWrj5KSZswj72nksCkVQ15b31tIO5mTCzV7BPkGuNzFtPrKJZHe3X0PmS1N FjeuCHdzXEE5cwlO2o/+zoFOcM2BmDhyOxQ= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sami Mujawar Add Configuration Manager to enable ACPI tables for Kvmtool firmware. The Configuration Manager for Kvmtool uses the DT Hardware Information Parser module (FdtHwInfoParser) to parse the DT provided by Kvmtool. The FdtHwInfoParser parses the DT and invokes the callback function HW_INFO_ADD_OBJECT to add the Configuration Manager objects to the Platform Information repository. The information for some Configuration Manager objects may not be available in the DT. Such objects are initialised locally by the Configuration Manager. Support for the following ACPI tables is provided: - DBG2 - DSDT (Empty stub) - FADT - GTDT - MADT - SPCR - SSDT (Cpu Hierarchy) - SSDT (Pcie bus) Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois Acked-by: Laszlo Ersek --- ArmVirtPkg/ArmVirtKvmTool.dsc | 3 + .../KvmtoolCfgMgrDxe/ConfigurationManager.c | 948 ++++++++++++++++++ .../KvmtoolCfgMgrDxe/ConfigurationManager.h | 94 ++ .../ConfigurationManagerDxe.inf | 58 ++ 4 files changed, 1103 insertions(+) create mode 100644 ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c create mode 100644 ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h create mode 100644 ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManagerDxe.inf diff --git a/ArmVirtPkg/ArmVirtKvmTool.dsc b/ArmVirtPkg/ArmVirtKvmTool.dsc index 3bd1cc72a1eb..920880796ac2 100644 --- a/ArmVirtPkg/ArmVirtKvmTool.dsc +++ b/ArmVirtPkg/ArmVirtKvmTool.dsc @@ -71,6 +71,9 @@ [LibraryClasses.common] PlatformHookLib|ArmVirtPkg/Library/Fdt16550SerialPortHookLib/Fdt16550Ser= ialPortHookLib.inf SerialPortLib|MdeModulePkg/Library/BaseSerialPortLib16550/BaseSerialPort= Lib16550.inf =20 + HwInfoParserLib|DynamicTablesPkg/Library/FdtHwInfoParserLib/FdtHwInfoPar= serLib.inf + DynamicPlatRepoLib|DynamicTablesPkg/Library/Common/DynamicPlatRepoLib/Dy= namicPlatRepoLib.inf + [LibraryClasses.common.SEC, LibraryClasses.common.PEI_CORE, LibraryClasses= .common.PEIM] PciExpressLib|MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf PlatformHookLib|ArmVirtPkg/Library/Fdt16550SerialPortHookLib/EarlyFdt165= 50SerialPortHookLib.inf diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c b/ArmVirtPk= g/KvmtoolCfgMgrDxe/ConfigurationManager.c new file mode 100644 index 000000000000..07b8b403dd4a --- /dev/null +++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.c @@ -0,0 +1,948 @@ +/** @file + Configuration Manager Dxe + + Copyright (c) 2021, Arm Limited. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Glossary: + - Cm or CM - Configuration Manager + - Obj or OBJ - Object +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ConfigurationManager.h" + +/** The platform configuration repository information. +*/ +STATIC +EDKII_PLATFORM_REPOSITORY_INFO KvmtoolPlatRepositoryInfo =3D { + /// Configuration Manager information + { CONFIGURATION_MANAGER_REVISION, CFG_MGR_OEM_ID }, + + // ACPI Table List + { + // FADT Table + { + EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_REVISION, + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdFadt), + NULL + }, + // GTDT Table + { + EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION, + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdGtdt), + NULL + }, + // MADT Table + { + EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION, + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdMadt), + NULL + }, + // SPCR Table + { + EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION, + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdSpcr), + NULL + }, + // DSDT Table + { + EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, + 0, // Unused + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdDsdt), + (EFI_ACPI_DESCRIPTION_HEADER*)dsdt_aml_code + }, + // SSDT Cpu Hierarchy Table + { + EFI_ACPI_6_3_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, + 0, // Unused + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdSsdtCpuTopology), + NULL + }, + // DBG2 Table + { + EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE, + EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION, + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdDbg2), + NULL + }, + // PCI MCFG Table + { + EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDR= ESS_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION, + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdMcfg), + NULL + }, + // SSDT table describing the PCI root complex + { + EFI_ACPI_6_3_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, + 0, // Unused + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdSsdtPciExpress), + NULL + }, + // IORT Table + { + EFI_ACPI_6_3_IO_REMAPPING_TABLE_SIGNATURE, + EFI_ACPI_IO_REMAPPING_TABLE_REVISION, + CREATE_STD_ACPI_TABLE_GEN_ID (EStdAcpiTableIdIort), + NULL + }, + }, + + // Power management profile information + { EFI_ACPI_6_3_PM_PROFILE_ENTERPRISE_SERVER }, // PowerManagement Pro= file + + // ITS group node + { + // Reference token for this Iort node + REFERENCE_TOKEN (ItsGroupInfo), + // The number of ITS identifiers in the ITS node. + 1, + // Reference token for the ITS identifier array + REFERENCE_TOKEN (ItsIdentifierArray) + }, + // ITS identifier array + { + { + // The ITS Identifier + 0 + } + }, + + // Root Complex node info + { + // Reference token for this Iort node + REFERENCE_TOKEN (RootComplexInfo), + // Number of ID mappings + 1, + // Reference token for the ID mapping array + REFERENCE_TOKEN (DeviceIdMapping[0]), + + // Memory access properties : Cache coherent attributes + EFI_ACPI_IORT_MEM_ACCESS_PROP_CCA, + // Memory access properties : Allocation hints + 0, + // Memory access properties : Memory access flags + 0, + // ATS attributes + EFI_ACPI_IORT_ROOT_COMPLEX_ATS_UNSUPPORTED, + // PCI segment number + 0 + }, + + // Array of Device ID mappings + { + /* RootComplex -> ITS Group + */ + // Device ID mapping for Root complex node + { + // Input base + 0x0, + // Number of input IDs + 0x0000FFFF, + // Output Base + 0x0, + // Output reference + REFERENCE_TOKEN (ItsGroupInfo), + // Flags + 0 + }, + }, +}; + +/** A helper function for returning the Configuration Manager Objects. + + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Object Pointer to the Object(s). + @param [in] ObjectSize Total size of the Object(s). + @param [in] ObjectCount Number of Objects. + @param [in, out] CmObjectDesc Pointer to the Configuration Manager Ob= ject + descriptor describing the requested Obj= ect. + + @retval EFI_SUCCESS Success. +**/ +STATIC +EFI_STATUS +EFIAPI +HandleCmObject ( + IN CONST CM_OBJECT_ID CmObjectId, + IN VOID * Object, + IN CONST UINTN ObjectSize, + IN CONST UINTN ObjectCount, + IN OUT CM_OBJ_DESCRIPTOR * CONST CmObjectDesc + ) +{ + CmObjectDesc->ObjectId =3D CmObjectId; + CmObjectDesc->Size =3D ObjectSize; + CmObjectDesc->Data =3D (VOID*)Object; + CmObjectDesc->Count =3D ObjectCount; + DEBUG (( + DEBUG_INFO, + "INFO: CmObjectId =3D %x, Ptr =3D 0x%p, Size =3D %d, Count =3D %d\n", + CmObjectId, + CmObjectDesc->Data, + CmObjectDesc->Size, + CmObjectDesc->Count + )); + return EFI_SUCCESS; +} + +/** A helper function for returning the Configuration Manager Objects that + match the token. + + @param [in] This Pointer to the Configuration Manager Pro= tocol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Object Pointer to the Object(s). + @param [in] ObjectSize Total size of the Object(s). + @param [in] ObjectCount Number of Objects. + @param [in] Token A token identifying the object. + @param [in] HandlerProc A handler function to search the object + referenced by the token. + @param [in, out] CmObjectDesc Pointer to the Configuration Manager Obj= ect + descriptor describing the requested Obje= ct. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +STATIC +EFI_STATUS +EFIAPI +HandleCmObjectRefByToken ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN VOID * Object, + IN CONST UINTN ObjectSize, + IN CONST UINTN ObjectCount, + IN CONST CM_OBJECT_TOKEN Token, + IN CONST CM_OBJECT_HANDLER_PROC HandlerProc, + IN OUT CM_OBJ_DESCRIPTOR * CONST CmObjectDesc + ) +{ + EFI_STATUS Status; + CmObjectDesc->ObjectId =3D CmObjectId; + if (Token =3D=3D CM_NULL_TOKEN) { + CmObjectDesc->Size =3D ObjectSize; + CmObjectDesc->Data =3D (VOID*)Object; + CmObjectDesc->Count =3D ObjectCount; + Status =3D EFI_SUCCESS; + } else { + Status =3D HandlerProc (This, CmObjectId, Token, CmObjectDesc); + } + + DEBUG (( + DEBUG_INFO, + "INFO: Token =3D 0x%p, CmObjectId =3D %x, Ptr =3D 0x%p, Size =3D %d, C= ount =3D %d\n", + (VOID*)Token, + CmObjectId, + CmObjectDesc->Data, + CmObjectDesc->Size, + CmObjectDesc->Count + )); + return Status; +} + +/** Return an ITS identifier array. + + @param [in] This Pointer to the Configuration Manager Protocol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token A token for identifying the object + @param [out] CmObject Pointer to the Configuration Manager Object + descriptor describing the requested Object. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +EFI_STATUS +EFIAPI +GetItsIdentifierArray ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token, + OUT CM_OBJ_DESCRIPTOR * CONST CmObject + ) +{ + EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; + + if ((This =3D=3D NULL) || (CmObject =3D=3D NULL)) { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + PlatformRepo =3D This->PlatRepoInfo; + + if (Token !=3D (CM_OBJECT_TOKEN)&PlatformRepo->ItsIdentifierArray) { + return EFI_NOT_FOUND; + } + + CmObject->ObjectId =3D CmObjectId; + CmObject->Size =3D sizeof (PlatformRepo->ItsIdentifierArray); + CmObject->Data =3D (VOID*)&PlatformRepo->ItsIdentifierArray; + CmObject->Count =3D ARRAY_SIZE (PlatformRepo->ItsIdentifierArray); + return EFI_SUCCESS; +} + +/** Return a device Id mapping array. + + @param [in] This Pointer to the Configuration Manager Protocol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token A token for identifying the object + @param [out] CmObject Pointer to the Configuration Manager Object + descriptor describing the requested Object. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +EFI_STATUS +EFIAPI +GetDeviceIdMappingArray ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token, + OUT CM_OBJ_DESCRIPTOR * CONST CmObject + ) +{ + EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; + + if ((This =3D=3D NULL) || (CmObject =3D=3D NULL)) { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + PlatformRepo =3D This->PlatRepoInfo; + + if (Token !=3D (CM_OBJECT_TOKEN)&PlatformRepo->DeviceIdMapping[0]) { + return EFI_NOT_FOUND; + } + + CmObject->ObjectId =3D CmObjectId; + CmObject->Size =3D sizeof (CM_ARM_ID_MAPPING); + CmObject->Data =3D (VOID*)Token; + CmObject->Count =3D 1; + return EFI_SUCCESS; +} + +/** Function pointer called by the parser to add information. + + Callback function that the parser can use to add new + CmObj. This function must copy the CmObj data and not rely on + the parser preserving the CmObj memory. + This function is responsible of the Token allocation. + + @param [in] ParserHandle A handle to the parser instance. + @param [in] Context A pointer to the caller's context provided in + HwInfoParserInit (). + @param [in] CmObjDesc CM_OBJ_DESCRIPTOR containing the CmObj(s) to= add. + @param [out] Token If provided and success, contain the token + generated for the CmObj. + + @retval EFI_SUCCESS The function completed successfully. + @retval EFI_INVALID_PARAMETER Invalid parameter. +**/ +STATIC +EFI_STATUS +EFIAPI +HwInfoAdd ( + IN HW_INFO_PARSER_HANDLE ParserHandle, + IN VOID * Context, + IN CONST CM_OBJ_DESCRIPTOR * CmObjDesc, + OUT CM_OBJECT_TOKEN * Token OPTIONAL + ) +{ + EFI_STATUS Status; + EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; + + if ((ParserHandle =3D=3D NULL) || + (Context =3D=3D NULL) || + (CmObjDesc =3D=3D NULL)) { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + PlatformRepo =3D (EDKII_PLATFORM_REPOSITORY_INFO*)Context; + +#ifndef MDEPKG_NDEBUG + // Print the received objects. + ParseCmObjDesc (CmObjDesc); +#endif + + Status =3D DynPlatRepoAddObject ( + PlatformRepo->DynamicPlatformRepo, + CmObjDesc, + Token + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + } + return Status; +} + +/** Cleanup the platform configuration repository. + + @param [in] This Pointer to the Configuration Manager Protocol. + + @retval EFI_SUCCESS Success + @retval EFI_INVALID_PARAMETER A parameter is invalid. +**/ +STATIC +EFI_STATUS +EFIAPI +CleanupPlatformRepository ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This + ) +{ + EFI_STATUS Status; + EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; + + if (This =3D=3D NULL) { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + PlatformRepo =3D This->PlatRepoInfo; + + // Shutdown the dynamic repo and free all objects. + Status =3D DynamicPlatRepoShutdown (PlatformRepo->DynamicPlatformRepo); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + // Shutdown parser. + Status =3D HwInfoParserShutdown (PlatformRepo->FdtParserHandle); + if (EFI_ERROR (Status)) { + ASSERT (0); + } + return Status; +} + +/** Initialize the platform configuration repository. + + @param [in] This Pointer to the Configuration Manager Protocol. + + @retval EFI_SUCCESS Success + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_OUT_OF_RESOURCES An allocation has failed. +**/ +STATIC +EFI_STATUS +EFIAPI +InitializePlatformRepository ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This + ) +{ + EFI_STATUS Status; + EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; + VOID * Hob; + + if (This =3D=3D NULL) { + ASSERT (0); + return EFI_INVALID_PARAMETER; + } + + Hob =3D GetFirstGuidHob (&gFdtHobGuid); + if (Hob =3D=3D NULL || GET_GUID_HOB_DATA_SIZE (Hob) !=3D sizeof (UINT64)= ) { + ASSERT (0); + return EFI_NOT_FOUND; + } + + PlatformRepo =3D This->PlatRepoInfo; + PlatformRepo->FdtBase =3D (VOID *)*(UINTN*)GET_GUID_HOB_DATA (Hob); + + // Initialise the dynamic platform repository. + Status =3D DynamicPlatRepoInit (&PlatformRepo->DynamicPlatformRepo); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + // Initialise the FDT parser + Status =3D HwInfoParserInit ( + PlatformRepo->FdtBase, + PlatformRepo, + HwInfoAdd, + &PlatformRepo->FdtParserHandle + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler; + } + + Status =3D HwInfoParse (PlatformRepo->FdtParserHandle); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler; + } + + Status =3D DynamicPlatRepoFinalise (PlatformRepo->DynamicPlatformRepo); + if (EFI_ERROR (Status)) { + ASSERT (0); + goto error_handler; + } + + return EFI_SUCCESS; + +error_handler: + CleanupPlatformRepository (This); + return Status; +} + +/** Return a standard namespace object. + + @param [in] This Pointer to the Configuration Manager Protoc= ol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token An optional token identifying the object. If + unused this must be CM_NULL_TOKEN. + @param [in, out] CmObject Pointer to the Configuration Manager Object + descriptor describing the requested Object. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +EFI_STATUS +EFIAPI +GetStandardNameSpaceObject ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token OPTIONAL, + IN OUT CM_OBJ_DESCRIPTOR * CONST CmObject + ) +{ + EFI_STATUS Status; + EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; + UINTN AcpiTableCount; + CM_OBJ_DESCRIPTOR CmObjDesc; + + if ((This =3D=3D NULL) || (CmObject =3D=3D NULL)) { + ASSERT (This !=3D NULL); + ASSERT (CmObject !=3D NULL); + return EFI_INVALID_PARAMETER; + } + + Status =3D EFI_NOT_FOUND; + PlatformRepo =3D This->PlatRepoInfo; + + switch (GET_CM_OBJECT_ID (CmObjectId)) { + case EStdObjCfgMgrInfo: + Status =3D HandleCmObject ( + CmObjectId, + &PlatformRepo->CmInfo, + sizeof (PlatformRepo->CmInfo), + 1, + CmObject + ); + break; + + case EStdObjAcpiTableList: + AcpiTableCount =3D ARRAY_SIZE (PlatformRepo->CmAcpiTableList); + + // Get Pci config space information. + Status =3D DynamicPlatRepoGetObject ( + PlatformRepo->DynamicPlatformRepo, + CREATE_CM_ARM_OBJECT_ID (EArmObjPciConfigSpaceInfo), + CM_NULL_TOKEN, + &CmObjDesc + ); + if (Status =3D=3D EFI_NOT_FOUND) { + // The last 3 tables are for PCIe. If PCIe information is not + // present, Kvmtool was launched without the PCIe option. + // Therefore, reduce the table count by 3. + AcpiTableCount -=3D 3; + } else if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + // Get the Gic version. + Status =3D DynamicPlatRepoGetObject ( + PlatformRepo->DynamicPlatformRepo, + CREATE_CM_ARM_OBJECT_ID (EArmObjGicDInfo), + CM_NULL_TOKEN, + &CmObjDesc + ); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + if (((CM_ARM_GICD_INFO*)CmObjDesc.Data)->GicVersion < 3) { + // IORT is only required for GicV3/4 + AcpiTableCount -=3D 1; + } + + Status =3D HandleCmObject ( + CmObjectId, + PlatformRepo->CmAcpiTableList, + (sizeof (PlatformRepo->CmAcpiTableList[0]) * AcpiTableCou= nt), + AcpiTableCount, + CmObject + ); + break; + + default: { + Status =3D EFI_NOT_FOUND; + DEBUG (( + DEBUG_ERROR, + "ERROR: Object 0x%x. Status =3D %r\n", + CmObjectId, + Status + )); + break; + } + } + + return Status; +} + +/** Return an ARM namespace object. + + @param [in] This Pointer to the Configuration Manager Protoc= ol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token An optional token identifying the object. If + unused this must be CM_NULL_TOKEN. + @param [in, out] CmObject Pointer to the Configuration Manager Object + descriptor describing the requested Object. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +EFI_STATUS +EFIAPI +GetArmNameSpaceObject ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token OPTIONAL, + IN OUT CM_OBJ_DESCRIPTOR * CONST CmObject + ) +{ + EFI_STATUS Status; + EDKII_PLATFORM_REPOSITORY_INFO * PlatformRepo; + + if ((This =3D=3D NULL) || (CmObject =3D=3D NULL)) { + ASSERT (This !=3D NULL); + ASSERT (CmObject !=3D NULL); + return EFI_INVALID_PARAMETER; + } + + Status =3D EFI_NOT_FOUND; + PlatformRepo =3D This->PlatRepoInfo; + + // First check among the static objects. + switch (GET_CM_OBJECT_ID (CmObjectId)) { + case EArmObjPowerManagementProfileInfo: + Status =3D HandleCmObject ( + CmObjectId, + &PlatformRepo->PmProfileInfo, + sizeof (PlatformRepo->PmProfileInfo), + 1, + CmObject + ); + break; + + case EArmObjItsGroup: + Status =3D HandleCmObject ( + CmObjectId, + &PlatformRepo->ItsGroupInfo, + sizeof (PlatformRepo->ItsGroupInfo), + 1, + CmObject + ); + break; + + case EArmObjGicItsIdentifierArray: + Status =3D HandleCmObjectRefByToken ( + This, + CmObjectId, + PlatformRepo->ItsIdentifierArray, + sizeof (PlatformRepo->ItsIdentifierArray), + ARRAY_SIZE (PlatformRepo->ItsIdentifierArray), + Token, + GetItsIdentifierArray, + CmObject + ); + break; + + case EArmObjRootComplex: + Status =3D HandleCmObject ( + CmObjectId, + &PlatformRepo->RootComplexInfo, + sizeof (PlatformRepo->RootComplexInfo), + 1, + CmObject + ); + break; + + case EArmObjIdMappingArray: + Status =3D HandleCmObjectRefByToken ( + This, + CmObjectId, + PlatformRepo->DeviceIdMapping, + sizeof (PlatformRepo->DeviceIdMapping), + ARRAY_SIZE (PlatformRepo->DeviceIdMapping), + Token, + GetDeviceIdMappingArray, + CmObject + ); + break; + + default: + // No match found among the static objects. + // Check the dynamic objects. + Status =3D DynamicPlatRepoGetObject ( + PlatformRepo->DynamicPlatformRepo, + CmObjectId, + Token, + CmObject + ); + break; + } // switch + + if (Status =3D=3D EFI_NOT_FOUND) { + DEBUG (( + DEBUG_INFO, + "INFO: Object 0x%x. Status =3D %r\n", + CmObjectId, + Status + )); + } else { + ASSERT_EFI_ERROR (Status); + } + + return Status; +} + +/** Return an OEM namespace object. + + @param [in] This Pointer to the Configuration Manager Protoc= ol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token An optional token identifying the object. If + unused this must be CM_NULL_TOKEN. + @param [in, out] CmObject Pointer to the Configuration Manager Object + descriptor describing the requested Object. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +EFI_STATUS +EFIAPI +GetOemNameSpaceObject ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token OPTIONAL, + IN OUT CM_OBJ_DESCRIPTOR * CONST CmObject + ) +{ + EFI_STATUS Status; + + Status =3D EFI_SUCCESS; + if ((This =3D=3D NULL) || (CmObject =3D=3D NULL)) { + ASSERT (This !=3D NULL); + ASSERT (CmObject !=3D NULL); + return EFI_INVALID_PARAMETER; + } + + switch (GET_CM_OBJECT_ID (CmObjectId)) { + default: { + Status =3D EFI_NOT_FOUND; + DEBUG (( + DEBUG_ERROR, + "ERROR: Object 0x%x. Status =3D %r\n", + CmObjectId, + Status + )); + break; + } + } + + return Status; +} + +/** The GetObject function defines the interface implemented by the + Configuration Manager Protocol for returning the Configuration + Manager Objects. + + @param [in] This Pointer to the Configuration Manager Protoc= ol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token An optional token identifying the object. If + unused this must be CM_NULL_TOKEN. + @param [in, out] CmObject Pointer to the Configuration Manager Object + descriptor describing the requested Object. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +EFI_STATUS +EFIAPI +ArmKvmtoolPlatformGetObject ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token OPTIONAL, + IN OUT CM_OBJ_DESCRIPTOR * CONST CmObject + ) +{ + EFI_STATUS Status; + + if ((This =3D=3D NULL) || (CmObject =3D=3D NULL)) { + ASSERT (This !=3D NULL); + ASSERT (CmObject !=3D NULL); + return EFI_INVALID_PARAMETER; + } + + switch (GET_CM_NAMESPACE_ID (CmObjectId)) { + case EObjNameSpaceStandard: + Status =3D GetStandardNameSpaceObject (This, CmObjectId, Token, CmOb= ject); + break; + case EObjNameSpaceArm: + Status =3D GetArmNameSpaceObject (This, CmObjectId, Token, CmObject); + break; + case EObjNameSpaceOem: + Status =3D GetOemNameSpaceObject (This, CmObjectId, Token, CmObject); + break; + default: { + Status =3D EFI_INVALID_PARAMETER; + DEBUG (( + DEBUG_ERROR, + "ERROR: Unknown Namespace Object =3D 0x%x. Status =3D %r\n", + CmObjectId, + Status + )); + break; + } + } + + return Status; +} + +/** The SetObject function defines the interface implemented by the + Configuration Manager Protocol for updating the Configuration + Manager Objects. + + @param [in] This Pointer to the Configuration Manager Protoc= ol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token An optional token identifying the object. If + unused this must be CM_NULL_TOKEN. + @param [in] CmObject Pointer to the Configuration Manager Object + descriptor describing the Object. + + @retval EFI_UNSUPPORTED This operation is not supported. +**/ +EFI_STATUS +EFIAPI +ArmKvmtoolPlatformSetObject ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token OPTIONAL, + IN CM_OBJ_DESCRIPTOR * CONST CmObject + ) +{ + return EFI_UNSUPPORTED; +} + +/** A structure describing the configuration manager protocol interface. +*/ +STATIC +CONST +EDKII_CONFIGURATION_MANAGER_PROTOCOL KvmtoolPlatformConfigManagerProtocol = =3D { + CREATE_REVISION(1,0), + ArmKvmtoolPlatformGetObject, + ArmKvmtoolPlatformSetObject, + &KvmtoolPlatRepositoryInfo +}; + +/** + Entrypoint of Configuration Manager Dxe. + + @param ImageHandle + @param SystemTable + + @return EFI_SUCCESS + @return EFI_LOAD_ERROR + @return EFI_OUT_OF_RESOURCES +**/ +EFI_STATUS +EFIAPI +ConfigurationManagerDxeInitialize ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE * SystemTable + ) +{ + EFI_STATUS Status; + + if (PcdGetBool (PcdForceNoAcpi)) { + // Use DT and not ACPI. + return EFI_SUCCESS; + } + + Status =3D gBS->InstallProtocolInterface ( + &ImageHandle, + &gEdkiiConfigurationManagerProtocolGuid, + EFI_NATIVE_INTERFACE, + (VOID*)&KvmtoolPlatformConfigManagerProtocol + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "ERROR: Failed to get Install Configuration Manager Protocol." \ + " Status =3D %r\n", + Status + )); + goto error_handler; + } + + Status =3D InitializePlatformRepository ( + &KvmtoolPlatformConfigManagerProtocol + ); + if (EFI_ERROR (Status)) { + DEBUG (( + DEBUG_ERROR, + "ERROR: Failed to initialize the Platform Configuration Repository."= \ + " Status =3D %r\n", + Status + )); + } + +error_handler: + return Status; +} + +/** + Unload function for this image. + + @param ImageHandle Handle for the image of this driver. + + @retval EFI_SUCCESS Driver unloaded successfully. + @return other Driver can not unloaded. +**/ +EFI_STATUS +EFIAPI +ConfigurationManagerDxeUnloadImage ( + IN EFI_HANDLE ImageHandle + ) +{ + return CleanupPlatformRepository (&KvmtoolPlatformConfigManagerProtocol); +} diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h b/ArmVirtPk= g/KvmtoolCfgMgrDxe/ConfigurationManager.h new file mode 100644 index 000000000000..94cfca3b7671 --- /dev/null +++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManager.h @@ -0,0 +1,94 @@ +/** @file + + Copyright (c) 2021, Arm Limited. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Glossary: + - Cm or CM - Configuration Manager + - Obj or OBJ - Object +**/ + +#ifndef CONFIGURATION_MANAGER_H_ +#define CONFIGURATION_MANAGER_H_ + +/** C array containing the compiled AML template. + This symbol is defined in the auto generated C file + containing the AML bytecode array. +*/ +extern CHAR8 dsdt_aml_code[]; + +/** The configuration manager version. +*/ +#define CONFIGURATION_MANAGER_REVISION CREATE_REVISION (1, 0) + +/** The OEM ID +*/ +#define CFG_MGR_OEM_ID { 'A', 'R', 'M', 'L', 'T', 'D' } + +/** A function that prepares Configuration Manager Objects for returning. + + @param [in] This Pointer to the Configuration Manager Protocol. + @param [in] CmObjectId The Configuration Manager Object ID. + @param [in] Token A token for identifying the object. + @param [out] CmObject Pointer to the Configuration Manager Object + descriptor describing the requested Object. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_NOT_FOUND The required object information is not fou= nd. +**/ +typedef EFI_STATUS (*CM_OBJECT_HANDLER_PROC) ( + IN CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL * CONST This, + IN CONST CM_OBJECT_ID CmObjectId, + IN CONST CM_OBJECT_TOKEN Token, + IN OUT CM_OBJ_DESCRIPTOR * CONST CmObject + ); + +/** A helper macro for mapping a reference token. +*/ +#define REFERENCE_TOKEN(Field) \ + (CM_OBJECT_TOKEN)((UINT8*)&KvmtoolPlatRepositoryInfo + \ + OFFSET_OF (EDKII_PLATFORM_REPOSITORY_INFO, Field)) + +/** The number of ACPI tables to install +*/ +#define PLAT_ACPI_TABLE_COUNT 10 + +/** A structure describing the platform configuration + manager repository information +*/ +typedef struct PlatformRepositoryInfo { + /// Configuration Manager Information. + CM_STD_OBJ_CONFIGURATION_MANAGER_INFO CmInfo; + + /// List of ACPI tables + CM_STD_OBJ_ACPI_TABLE_INFO CmAcpiTableList[PLAT_ACPI_TABLE_CO= UNT]; + + /// Power management profile information + CM_ARM_POWER_MANAGEMENT_PROFILE_INFO PmProfileInfo; + + /// ITS Group node + CM_ARM_ITS_GROUP_NODE ItsGroupInfo; + + /// ITS Identifier array + CM_ARM_ITS_IDENTIFIER ItsIdentifierArray[1]; + + /// PCI Root complex node + CM_ARM_ROOT_COMPLEX_NODE RootComplexInfo; + + /// Array of DeviceID mapping + CM_ARM_ID_MAPPING DeviceIdMapping[1]; + + /// Dynamic platform repository. + /// CmObj created by parsing the Kvmtool device tree are stored here. + DYNAMIC_PLATFORM_REPOSITORY_INFO * DynamicPlatformRepo; + + /// Base address of the FDT. + VOID * FdtBase; + + /// A handle to the FDT HwInfoParser. + HW_INFO_PARSER_HANDLE FdtParserHandle; +} EDKII_PLATFORM_REPOSITORY_INFO; + +#endif // CONFIGURATION_MANAGER_H_ diff --git a/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManagerDxe.inf b/ArmV= irtPkg/KvmtoolCfgMgrDxe/ConfigurationManagerDxe.inf new file mode 100644 index 000000000000..9f0bf72fce2d --- /dev/null +++ b/ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManagerDxe.inf @@ -0,0 +1,58 @@ +## @file +# Configuration Manager Dxe +# +# Copyright (c) 2021, Arm Limited. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION =3D 0x0001001B + BASE_NAME =3D ConfigurationManagerDxe + FILE_GUID =3D 3C80D366-510C-4154-BB3A-E12439AD337C + MODULE_TYPE =3D DXE_DRIVER + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D ConfigurationManagerDxeInitialize + UNLOAD_IMAGE =3D ConfigurationManagerDxeUnloadImage + +# +# The following information is for reference only and not required by the = build tools. +# +# VALID_ARCHITECTURES =3D ARM AARCH64 +# + +[Sources] + AslTables/Dsdt.asl + ConfigurationManager.c + ConfigurationManager.h + ConfigurationManagerDxe.inf + +[Packages] + ArmVirtPkg/ArmVirtPkg.dec + DynamicTablesPkg/DynamicTablesPkg.dec + EmbeddedPkg/EmbeddedPkg.dec + MdePkg/MdePkg.dec + +[LibraryClasses] + DynamicPlatRepoLib + HobLib + HwInfoParserLib + PrintLib + TableHelperLib + UefiBootServicesTableLib + UefiDriverEntryPoint + UefiRuntimeServicesTableLib + +[Protocols] + gEdkiiConfigurationManagerProtocolGuid + +[Guids] + gFdtHobGuid + +[FixedPcd] + +[Pcd] + gArmVirtTokenSpaceGuid.PcdForceNoAcpi + +[Depex] + TRUE --=20 2.17.1 -=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 (#76993): https://edk2.groups.io/g/devel/message/76993 Mute This Topic: https://groups.io/mt/83738489/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 Sun May 19 02:38:03 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+76994+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+76994+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1624457236; cv=none; d=zohomail.com; s=zohoarc; b=QM3eyw5C8Quh88THRMNI0EtfUW61FtdGrY/iRQZpkvC+8YxCcVUO89V/hwEB4mudCZ4Q9MbvkouDClttO1B5ilG30ZC1ATD7RV5XiNIubNAkOXfttUwRtnkIomCQLeTCilVQWSxejWkc7+tE0EpKQQTfZ9EUds7usY3vgh67ClQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624457236; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=VH21a5qgiXNh6r2dKWJI777CArZc2y1Zdct4oJoedVQ=; b=GnE4gZqCIsPFRiJ4LXWTztuJQfQJ5CSg/N8/uSg1K1i4N6wJnV1lTfKyFgr/XZxdxWylLS0T265KjfAaC12PQD92YXxzGJ/QcGuLd6+TUccl73X+Fv4pxRynlhj60St2Ucf9H/fnaZ9o0NHNpgEfGKSZweOFmYBY8UEPqvja480= 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+76994+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 1624457236321211.35128915287987; Wed, 23 Jun 2021 07:07:16 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id Cc5JYY1788612xZqzYE3ffFU; Wed, 23 Jun 2021 07:07:16 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web09.8216.1624457228070923675 for ; Wed, 23 Jun 2021 07:07:08 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id ACC1FED1; Wed, 23 Jun 2021 07:07:07 -0700 (PDT) X-Received: from e120189.arm.com (unknown [10.57.78.245]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id BA5A23F718; Wed, 23 Jun 2021 07:07:05 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io, Sami Mujawar , Laszlo Ersek Cc: Ard Biesheuvel , Leif Lindholm , Akanksha Jain , Alexandru Elisei Subject: [edk2-devel] [PATCH v1 4/5] ArmVirtPkg: Enable ACPI support for Kvmtool Date: Wed, 23 Jun 2021 15:06:39 +0100 Message-Id: <20210623140640.16754-5-Pierre.Gondois@arm.com> In-Reply-To: <20210623140640.16754-1-Pierre.Gondois@arm.com> References: <20210623140640.16754-1-Pierre.Gondois@arm.com> Precedence: Bulk List-Unsubscribe: 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,pierre.gondois@arm.com X-Gm-Message-State: ZKin7MNCmQlwyyKU7JwQBzdOx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1624457236; bh=jEmRG3RBRx7KDn7J5zJ4QQylnDYt8roPr24WCYHhD9I=; h=Cc:Date:From:Reply-To:Subject:To; b=pB0oHtIknlfPeZUk3NYMX7aZEymgcDMfbmlJcRZfnWOX9f4JWc+Js3Mb5Kus/EALNxm l9OVXfFmz2amQzVnpxxLwnCS8JKcIq0j9JFXR9WdUQvYuLXjnxw6UsOYlzfVLKp1/ZMRE YueJ6B/TUpEPYCDlzSHoy1NF7PNAMGhTjGk= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sami Mujawar A Configuration Manager that uses the Dynamic Tables framework to generate ACPI tables for Kvmtool Guests has been provided. This Configuration Manager uses the FdtHwInfoParser module to parse the Kvmtool Device Tree and generate the required Configuration Manager objects for generating the ACPI tables. Therefore, enable ACPI table generation for Kvmtool. Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois Acked-by: Laszlo Ersek --- ArmVirtPkg/ArmVirtKvmTool.dsc | 15 +++++++++++++-- ArmVirtPkg/ArmVirtKvmTool.fdf | 11 +++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ArmVirtPkg/ArmVirtKvmTool.dsc b/ArmVirtPkg/ArmVirtKvmTool.dsc index 920880796ac2..b02324312f18 100644 --- a/ArmVirtPkg/ArmVirtKvmTool.dsc +++ b/ArmVirtPkg/ArmVirtKvmTool.dsc @@ -28,6 +28,7 @@ [Defines] FLASH_DEFINITION =3D ArmVirtPkg/ArmVirtKvmTool.fdf =20 !include ArmVirtPkg/ArmVirt.dsc.inc +!include DynamicTablesPkg/DynamicTables.dsc.inc =20 !include MdePkg/MdeLibs.dsc.inc =20 @@ -144,6 +145,11 @@ [PcdsFixedAtBuild.common] # gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize|16 =20 + # + # ACPI Table Version + # + gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiExposedTableVersions|0x20 + [PcdsPatchableInModule.common] # # This will be overridden in the code @@ -198,8 +204,8 @@ [PcdsDynamicDefault.common] gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoHorizontalResolution|640 gEfiMdeModulePkgTokenSpaceGuid.PcdSetupVideoVerticalResolution|480 =20 - ## Force DTB - gArmVirtTokenSpaceGuid.PcdForceNoAcpi|TRUE + ## Set default option to ACPI + gArmVirtTokenSpaceGuid.PcdForceNoAcpi|FALSE =20 # Setup Flash storage variables gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0 @@ -356,3 +362,8 @@ [Components.common] } OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf OvmfPkg/Virtio10Dxe/Virtio10.inf + # + # ACPI Support + # + MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf + ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManagerDxe.inf diff --git a/ArmVirtPkg/ArmVirtKvmTool.fdf b/ArmVirtPkg/ArmVirtKvmTool.fdf index 076155199905..5ba4c579f050 100644 --- a/ArmVirtPkg/ArmVirtKvmTool.fdf +++ b/ArmVirtPkg/ArmVirtKvmTool.fdf @@ -204,6 +204,17 @@ [FV.FvMain] INF OvmfPkg/VirtioPciDeviceDxe/VirtioPciDeviceDxe.inf INF OvmfPkg/Virtio10Dxe/Virtio10.inf =20 + # + # ACPI Support + # + INF MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe.inf + # + # Dynamic Table fdf + # + !include DynamicTablesPkg/DynamicTables.fdf.inc + + INF ArmVirtPkg/KvmtoolCfgMgrDxe/ConfigurationManagerDxe.inf + # # TianoCore logo (splash screen) # --=20 2.17.1 -=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 (#76994): https://edk2.groups.io/g/devel/message/76994 Mute This Topic: https://groups.io/mt/83738490/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 Sun May 19 02:38:03 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+76995+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+76995+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=arm.com ARC-Seal: i=1; a=rsa-sha256; t=1624457235; cv=none; d=zohomail.com; s=zohoarc; b=guUx1bdU/Q0U9NAZ4pxjHMT2fS+W5mr52Z9t4MgpSYH0PlI9KDAwyv8SCKkQfobZjdWeHJhfxHedyznF3H2IEuDMHETwUmKWtczynaSHpJ+1ZB7zVMg71vQBskrkUlACT5+AP6Jq8Y7B4I27Yg0nyF88sA828PXO/xfv1KeLj7E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624457235; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=KI8wpKSTabrJyCGIKD6X9ihimZi8evNYzdQdBg6gF3Y=; b=ZZX9jKWTbfp6URu5NVVutxQ7Ynp/8TQExQWJOCyiV0cmUa3KsldWH7dsUDO3d8ADdJb3IsqjnyDFO11yf7Ht+7SIjXz4Qj5O2sObZtCD1Fh7Medt/3ydXU5OE7vql4IO1IAjw7WNk1mQ59G19ZuNM5ny+/626I9CnNxKWnW2Zx8= 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+76995+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 1624457235957521.1558838941485; Wed, 23 Jun 2021 07:07:15 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 8XRaYY1788612xE6ctSBs12E; Wed, 23 Jun 2021 07:07:10 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.8075.1624457229873773369 for ; Wed, 23 Jun 2021 07:07:10 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 637701063; Wed, 23 Jun 2021 07:07:09 -0700 (PDT) X-Received: from e120189.arm.com (unknown [10.57.78.245]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id EC5EE3F718; Wed, 23 Jun 2021 07:07:07 -0700 (PDT) From: "PierreGondois" To: devel@edk2.groups.io, Sami Mujawar , Laszlo Ersek Cc: Ard Biesheuvel , Leif Lindholm , Akanksha Jain , Alexandru Elisei Subject: [edk2-devel] [PATCH v1 5/5] ArmVirtPkg: Enable Acpiview for ArmVirtPkg Date: Wed, 23 Jun 2021 15:06:40 +0100 Message-Id: <20210623140640.16754-6-Pierre.Gondois@arm.com> In-Reply-To: <20210623140640.16754-1-Pierre.Gondois@arm.com> References: <20210623140640.16754-1-Pierre.Gondois@arm.com> Precedence: Bulk List-Unsubscribe: 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,pierre.gondois@arm.com X-Gm-Message-State: PiM0cpKGAw9dJ917n6ENubgbx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1624457230; bh=Z/wTDZTohTYR6MmPJRaoZX370zzuXK9MPcW6Ne2+9qA=; h=Cc:Date:From:Reply-To:Subject:To; b=g2/JlHUzIDqUQrB81Sl4wLQX/db32BMKgRi6oT8ChbVY5uremAd9c87tf4pe+zqnV/G G6S1a+WXefITTdWpJsuHhlmWy4JM6563A3Gd47beHhcpwKp9XEgmW6TzWdZg7DzO25CeK 9dLnQiEfwskDbu+U4at7hYdDc9JnnETsHy8= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Sami Mujawar Acpiview is a command line tool allowing to display, dump, or check installed ACPI tables. Add the tool to ArmVirt platforms. Signed-off-by: Sami Mujawar Signed-off-by: Pierre Gondois Acked-by: Laszlo Ersek --- ArmVirtPkg/ArmVirt.dsc.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc index d9abadbe708c..269ac4990a6c 100644 --- a/ArmVirtPkg/ArmVirt.dsc.inc +++ b/ArmVirtPkg/ArmVirt.dsc.inc @@ -1,5 +1,5 @@ # -# Copyright (c) 2011-2015, ARM Limited. All rights reserved. +# Copyright (c) 2011-2021, Arm Limited. All rights reserved. # Copyright (c) 2014, Linaro Limited. All rights reserved. # Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved. # Copyright (c) Microsoft Corporation. @@ -398,6 +398,7 @@ [Components.common] NULL|ShellPkg/Library/UefiShellLevel3CommandsLib/UefiShellLevel3Comm= andsLib.inf NULL|ShellPkg/Library/UefiShellDriver1CommandsLib/UefiShellDriver1Co= mmandsLib.inf NULL|ShellPkg/Library/UefiShellDebug1CommandsLib/UefiShellDebug1Comm= andsLib.inf + NULL|ShellPkg/Library/UefiShellAcpiViewCommandLib/UefiShellAcpiViewC= ommandLib.inf NULL|ShellPkg/Library/UefiShellInstall1CommandsLib/UefiShellInstall1= CommandsLib.inf NULL|ShellPkg/Library/UefiShellNetwork1CommandsLib/UefiShellNetwork1= CommandsLib.inf !if $(NETWORK_IP6_ENABLE) =3D=3D TRUE --=20 2.17.1 -=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 (#76995): https://edk2.groups.io/g/devel/message/76995 Mute This Topic: https://groups.io/mt/83738491/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-