From nobody Mon Feb 9 07:38:19 2026 Delivered-To: importer@patchew.org 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+91001+1787277+3901457@groups.io; arc=fail (BodyHash is different from the expected one) Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1656693155619395.73228067665184; Fri, 1 Jul 2022 09:32:35 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id UW8iYY1788612xU2ZTHlr4eN; Fri, 01 Jul 2022 09:32:35 -0700 X-Received: from NAM02-BN1-obe.outbound.protection.outlook.com (NAM02-BN1-obe.outbound.protection.outlook.com [40.107.212.82]) by mx.groups.io with SMTP id smtpd.web11.40540.1656693154500182170 for ; Fri, 01 Jul 2022 09:32:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k35hZyMUc0GXTWLUJQ/MG78XXcTKgUu/zUlvHc+X9w3on42Mi0np/gZAUBv4hZrMyheuwSE9GYGYdnc9Hyl0Md8QuBeimC962BQSxCyX2lKO2a+ZqPeZji3EZOunZB6IUIcpLBJ1AlzfndZQeCLVoUyHvKhkuMxlOiHXmGGx30EQzpA+mL8xD9qv4lEhTtfnv+uDcyZcGuifFAc5ZU1s0qOhQZ/AeD05cR3TbGZm3+CZktk/zlE6jqVT9nYZwX3+TTYOSudOfCHfKpF/wg6E0X6U63IsONyRpQGnwH5LZuFg44ONCrfXNkZE+xevuUFFWQ6zyTWFuepTwbQ23wwEFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=w9vnDwnGqBX0B3yN5/sswxZp7K1ZEKIJrI3XBoKzEsk=; b=WhmxKihsJ5oJsN506KY5CxTVVQRR/oHcT6R5oawsPh0kct/oYzDibudg+1eFeb4Mrck8IwMSKjJ65c3iQbO0lJaEdnvVwT7jWh2dTxriHV7DsjRsn1NjSmLn2Msd4tf9JSgnXGMOufGF9T7eK5+43/JbgbhmPs90yTKvELJnnYa9LDPtdR7OUcFgUPPPFKqJUQ8zYaaPMQpCkn6jChGmM9uzbfrscpb9iTe2/buZPPiLH/lZP1fP4pu10ylimtiK2tXnxLygcRbvrHrIMHjEKevioy8H568O1irmjfRVakNWQstzvZvh3q9+3yykgCJWeM5/G6XRmL+4mZUr6F37VQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.235) smtp.rcpttodomain=arm.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none X-Received: from MW4PR04CA0186.namprd04.prod.outlook.com (2603:10b6:303:86::11) by MWHPR12MB1582.namprd12.prod.outlook.com (2603:10b6:301:10::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.15; Fri, 1 Jul 2022 16:32:31 +0000 X-Received: from CO1NAM11FT017.eop-nam11.prod.protection.outlook.com (2603:10b6:303:86:cafe::14) by MW4PR04CA0186.outlook.office365.com (2603:10b6:303:86::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.15 via Frontend Transport; Fri, 1 Jul 2022 16:32:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.235) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; 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+91001+1787277+3901457@groups.io; helo=mail02.groups.io; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 12.22.5.235 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.235; helo=mail.nvidia.com; pr=C X-Received: from mail.nvidia.com (12.22.5.235) by CO1NAM11FT017.mail.protection.outlook.com (10.13.175.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5395.14 via Frontend Transport; Fri, 1 Jul 2022 16:32:30 +0000 X-Received: from drhqmail202.nvidia.com (10.126.190.181) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Fri, 1 Jul 2022 16:32:30 +0000 X-Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail202.nvidia.com (10.126.190.181) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.26; Fri, 1 Jul 2022 09:32:29 -0700 X-Received: from perses.nvidia.com (10.127.8.13) by mail.nvidia.com (10.126.190.182) with Microsoft SMTP Server id 15.2.986.26 via Frontend Transport; Fri, 1 Jul 2022 09:32:29 -0700 From: "Jeff Brasen via groups.io" To: CC: , , , Jeff Brasen Subject: [edk2-devel] [PATCH v2 4/4] DynamicTablesPkg: AcpiSsdtPcieLibArm: Add support for override protocol Date: Fri, 1 Jul 2022 10:32:37 -0600 Message-ID: <4f14ba2221eeaeb00ca75f33016d9216a9aef635.1656693003.git.jbrasen@nvidia.com> In-Reply-To: References: MIME-Version: 1.0 X-NVConfidentiality: public X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 304e5c5f-db26-4c6a-a00b-08da5b7f4b43 X-MS-TrafficTypeDiagnostic: MWHPR12MB1582:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Message-Info: sbDoPxVjM2POinDUzc/JOxn674pFQlO40HWZI76BykQuVTsscs9D94//rWWW8M38PsqgOg/cz+u3ouEPoFlLLTp8qkECdd6pRkZiQyQGaS0bvu/1IR5BRu9cNHxlwNPRYzdJ8mKq+fXxsw7tuEiDOtUjHGLUFpztINMn0AgvpJwgGm3Cu1q1an0uRcRD+PB386ODYXslh3P7sIkBrUao+q0TAe7mv/U8mXevSidgObwslhNjdEc2lvL214XXzKcZTOkycTWbocY5cdWGwuuwlctN6SmRIO1jiBgh12OeEne1abUfDCfYKjZAm1SDrs5mVDRQ2PVU4mhO/nUQcriVbG8zqfz2JstDjKubpKexDom/xbNsyqnWg1/8CzUWGLGKAZl+aDYX8SFDt1DasgBEFTwux9Ukz5FcNUXRPxTDxEjYZ1MBF8TP2JrG3SH8FaNO4mGaJfic6r45wPXfU8JTBCMNdgM5HUOyJWeVRxjgqe3PNlDnVH4dDU+f5jb4rwzCWk1iNLpadQLirwrEvNH+ryG6WBrZ+LN98Y2ekXtCvJfDXTYdTpCfRcSKCdIoRsGVM4I2aEDJon2fXlO6G2GQewMvn9ndF+UB5OoyAAUtbAU8grDsIvhFCoLs0hFZzzqIOZoyfbNTqPBfTRyGO8UABuuqM6RvAaWUghv66xMwGlgMOIu5TblSFlyA/WMOgyWslmXbVNzqgwcyLoHkeUy5fi0BYsNfIhkL0sHmpxK7hsfuYumgatvHWrR9Sh2jMs1bYvYWks6LMgoCTJeQI0eUslJ3UuIZQuppNSPR+YX9X2HfeZFpkAJP1W+gjv4hMMBvHMR6Y4gKkB5MDgw0dW1zYkU36uXAukkKzum+VM1Nlzj9FBbOUxSy5xrgLKQPiiof X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2022 16:32:30.6950 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 304e5c5f-db26-4c6a-a00b-08da5b7f4b43 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a;Ip=[12.22.5.235];Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT017.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1582 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,jbrasen@nvidia.com X-Gm-Message-State: 9aicToQfGeGY64WtEAFTXuqzx1787277AA= Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1656693155; bh=hmtVCwzA+JaZIfucDCeGemzn8M7gEYMZAA5MtYzwpAY=; h=CC:Content-Type:Date:From:Reply-To:Subject:To; b=j6jC3JmOtQs0rACamI/pfeRXUV6ZZ9NN3RomXUQjEL88KK3EZ6QqOe1HLON9k5HON2b P+Mbb3azOaAAodZmuvP09CxvuptqL2Fk19Pqhtl88SqofCTh/gjWpgR9N+RIs9ggh2YyZ HlFH1NRQky4DcSoU0xtBKfpJv9ao/m8RjhM= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1656693156356100017 Content-Type: text/plain; charset="utf-8" Some platfoms may want to modify the ACPI table created. Add support for protocol that can provide an alternative implementation. Signed-off-by: Jeff Brasen --- DynamicTablesPkg/DynamicTablesPkg.dec | 3 + .../Protocol/SsdtPcieOverrideProtocol.h | 63 +++++++++++++++++++ .../AcpiSsdtPcieLibArm/SsdtPcieGenerator.c | 31 ++++++++- .../Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.inf | 4 ++ 4 files changed, 98 insertions(+), 3 deletions(-) create mode 100644 DynamicTablesPkg/Include/Protocol/SsdtPcieOverrideProto= col.h diff --git a/DynamicTablesPkg/DynamicTablesPkg.dec b/DynamicTablesPkg/Dynam= icTablesPkg.dec index a890a048be..bb66bdaf14 100644 --- a/DynamicTablesPkg/DynamicTablesPkg.dec +++ b/DynamicTablesPkg/DynamicTablesPkg.dec @@ -43,6 +43,9 @@ # Dynamic Table Factory Protocol GUID gEdkiiDynamicTableFactoryProtocolGuid =3D { 0x91d1e327, 0xfe5a, 0x49b8, = { 0xab, 0x65, 0xe, 0xce, 0x2d, 0xdb, 0x45, 0xec } } =20 + # Protocol to override PCI SSDT table generation + gEdkiiDynamicTableSsdtPcieOverrideProtocolGuid =3D { 0x962e8b44, 0x23b3,= 0x41da, { 0x9f, 0x36, 0xca, 0xde, 0x68, 0x49, 0xfb, 0xf6 } } + [PcdsFixedAtBuild] =20 # Maximum number of Custom ACPI Generators diff --git a/DynamicTablesPkg/Include/Protocol/SsdtPcieOverrideProtocol.h b= /DynamicTablesPkg/Include/Protocol/SsdtPcieOverrideProtocol.h new file mode 100644 index 0000000000..29568a0159 --- /dev/null +++ b/DynamicTablesPkg/Include/Protocol/SsdtPcieOverrideProtocol.h @@ -0,0 +1,63 @@ +/** @file + + Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef SSDT_PCIE_OVERRIDE_PROTOCOL_H_ +#define SSDT_PCIE_OVERRIDE_PROTOCOL_H_ + +#include +#include + +/** This macro defines the SSDT PCI Override Protocol GUID. + + GUID: {D85A4835-5A82-4894-AC02-706F43D5978E} +*/ +#define EDKII_SSDT_PCI_OVERRIDE_PROTOCOL_GUID \ + { 0x962e8b44, 0x23b3, 0x41da, \ + { 0x9f, 0x36, 0xca, 0xde, 0x68, 0x49, 0xfb, 0xf6 } \ + }; + +/** + Forward declarations: +*/ +typedef struct SsdtOverridePciProtocol EDKII_SSDT_PCI_OVERRIDE_PROTOCOL; + +/** The UpdateTable function allows the override protocol to update the + * PCIe SSDT table prior to being created. + + @param [in] This Pointer to the SSDT PCI Override Protocol. + @param [in] PciInfo The PCIe configuration info for this node. + @param [in] Uid UID that was selected for this PCIe node. + @param [in, out] PciNode Pointer to the PCI node of this ACPI table. + + @retval EFI_SUCCESS Success. + @retval EFI_INVALID_PARAMETER A parameter is invalid. + @retval EFI_DEVICE_ERROR Failed to update the table. +**/ +typedef +EFI_STATUS +(EFIAPI *EDKII_SSDT_PCI_OVERRIDE_PROTOCOL_UPDATE_TABLE)( + IN CONST EDKII_SSDT_PCI_OVERRIDE_PROTOCOL *CONST This, + IN CONST CM_ARM_PCI_CONFIG_SPACE_INFO *PciInfo, + IN UINT32 Uid, + IN OUT AML_ROOT_NODE_HANDLE *PciNode + ); + +/** The EDKII_CONFIGURATION_MANAGER_PROTOCOL structure describes the + Configuration Manager Protocol interface. +*/ +typedef struct SsdtOverridePciProtocol { + /** The interface used to update the ACPI table for PCI. + */ + EDKII_SSDT_PCI_OVERRIDE_PROTOCOL_UPDATE_TABLE UpdateTable; +} EDKII_SSDT_PCI_OVERRIDE_PROTOCOL; + +/** The SSDT PCI Override Protocol GUID. +*/ +extern EFI_GUID gEdkiiDynamicTableSsdtPcieOverrideProtocolGuid; + +#endif // SSDT_PCIE_OVERRIDE_PROTOCOL_H_ diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieG= enerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieG= enerator.c index 9f785ca5ac..46e0a98b98 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerato= r.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieGenerato= r.c @@ -20,6 +20,7 @@ #include #include #include +#include #include =20 // Module specific include files. @@ -30,6 +31,7 @@ #include #include #include +#include =20 #include "SsdtPcieGenerator.h" =20 @@ -804,9 +806,10 @@ GeneratePciDevice ( { EFI_STATUS Status; =20 - CHAR8 AslName[AML_NAME_SEG_SIZE + 1]; - AML_OBJECT_NODE_HANDLE ScopeNode; - AML_OBJECT_NODE_HANDLE PciNode; + CHAR8 AslName[AML_NAME_SEG_SIZE + 1]; + AML_OBJECT_NODE_HANDLE ScopeNode; + AML_OBJECT_NODE_HANDLE PciNode; + EDKII_SSDT_PCI_OVERRIDE_PROTOCOL *OverrideProtocol; =20 ASSERT (Generator !=3D NULL); ASSERT (CfgMgrProtocol !=3D NULL); @@ -866,6 +869,28 @@ GeneratePciDevice ( =20 // Add the template _OSC method. Status =3D AddOscMethod (PciNode); + if (EFI_ERROR (Status)) { + ASSERT (0); + return Status; + } + + Status =3D gBS->LocateProtocol ( + &gEdkiiDynamicTableSsdtPcieOverrideProtocolGuid, + NULL, + (VOID **)&OverrideProtocol + ); + if (!EFI_ERROR (Status)) { + Status =3D OverrideProtocol->UpdateTable ( + OverrideProtocol, + PciInfo, + Uid, + PciNode + ); + } else { + // Not an error if override protocol is not found + Status =3D EFI_SUCCESS; + } + ASSERT_EFI_ERROR (Status); return Status; } diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieL= ibArm.inf b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLi= bArm.inf index 431e32a777..8e916f15e9 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.i= nf +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiSsdtPcieLibArm/SsdtPcieLibArm.i= nf @@ -30,6 +30,10 @@ AcpiHelperLib AmlLib BaseLib + UefiBootServicesTableLib =20 [Pcd] gEdkiiDynamicTablesPkgTokenSpaceGuid.PcdPciUseSegmentAsUid + +[Protocols] + gEdkiiDynamicTableSsdtPcieOverrideProtocolGuid --=20 2.25.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 (#91001): https://edk2.groups.io/g/devel/message/91001 Mute This Topic: https://groups.io/mt/92113683/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-