From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR03-VE1-obe.outbound.protection.outlook.com (EUR03-VE1-obe.outbound.protection.outlook.com [40.107.5.85]) by mx.groups.io with SMTP id smtpd.web12.10275.1663250440467151818 for ; Thu, 15 Sep 2022 07:00:41 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=GM6SCTtq; spf=pass (domain: arm.com, ip: 40.107.5.85, mailfrom: sami.mujawar@arm.com) ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Qlu6V5VtSUHktj/x8XVl85ml44Zuc9dbBsYVNlWWH13+u84WVR8+fAZAnMejRwP7ez3ckrHrbjP1yB5nI4L4ObFUKP8q/98uTMRtRr3iRWDPWW40mC8fASpnynkMV2tcIr9uwWCKCRzZLX1z2IfiG3JglMz5fZENTeVRQg/sC3gLAH1VaIs6tVTGM+STpm2/NtACm+lI9gx6zPnmAKI04NhaAtjsxTj/YhZBF66JrrsDoXLGWb9HtWzElzqAoI4wFrRmmKUxrXBcrpHlg5vRtkNzj/KkSYWliS/7qrvfsdDHrbxpj6Ycz90Z17D7gOl8WEgT/iy7iSX94xnSUSY5jw== ARC-Message-Signature: i=2; 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=j2Q4RPgwuTnytHzrtRabZ9LlYz6SRSDxKNjZQs5g7mw=; b=cz9z6CX1KqxP4onAYMmFKKpFI1eND9Ei/fZhz/rNYDnuSal7QvYV/4FwEIRuix6s39nFaq8Mdj3h8LVfVA4aT0bWcspJO99pD9WpPy10anFtuFFa7MEax7B4dHUdabJIHCY5NC5EP3krF65FingHTZRudFw6ooM/rvgRjcYSbG74snep6x5f6nxu10soWiXjZj/N/HEj9Qf/1PUQ31Er0vSg/+y6Jj3YqVfmfKSwrNCoHsahglr0KK38NsYGcQrGnOdjyavGm9/nwGU2Mjb+UN4ynpmnDJPyMnlQCW5sr4P83FUt8r4pC+lm6+V1+f+xX1lnXXILc115m6AtCY8veg== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=edk2.groups.io smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j2Q4RPgwuTnytHzrtRabZ9LlYz6SRSDxKNjZQs5g7mw=; b=GM6SCTtqiVqSxZJw8MHy0Yv+/A8CtlnvbRttn8DvQiSIOUXd7QSdtiY85tUHpGtw/H5eNlsa6g43KZ1nEhGrR68JObwz5OtBvEByQaS5rFeYP+6dq20lFl1ZbajvFOx7EqWb/foJnT/ZyXJ0Ylh8DqCI/nAIhX+4oRLwlukDXWI= Received: from AS9PR04CA0162.eurprd04.prod.outlook.com (2603:10a6:20b:530::22) by AS8PR08MB8468.eurprd08.prod.outlook.com (2603:10a6:20b:566::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Thu, 15 Sep 2022 14:00:36 +0000 Received: from AM7EUR03FT008.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:530:cafe::bf) by AS9PR04CA0162.outlook.office365.com (2603:10a6:20b:530::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22 via Frontend Transport; Thu, 15 Sep 2022 14:00:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT008.mail.protection.outlook.com (100.127.141.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.12 via Frontend Transport; Thu, 15 Sep 2022 14:00:36 +0000 Received: ("Tessian outbound 88978e6d60db:v124"); Thu, 15 Sep 2022 14:00:36 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 1eb48aafcc8035b4 X-CR-MTA-TID: 64aa7808 Received: from b5d86ce8e547.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 2473F0EC-006E-440D-98DC-073C28F0688F.1; Thu, 15 Sep 2022 14:00:25 +0000 Received: from EUR02-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id b5d86ce8e547.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 15 Sep 2022 14:00:25 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=m7vQOyDn0simk+AdoFf0cAMMvRZEtpF04B4qDPWJ4BJktoPl3kFdpFOxruwx8jBnvnYe9BW/IRJhm0z3q6FHQ7/CZpfyONixoXGQ2bGOn5c+780gSLnEMZhjZSsVVjDLN7G6azNpnxImdo/LBG4M5qlxvMEYUk6qh0jNolCOEZusor1lFqxy3wDSqL15wL2ZId1xyBFLAAD2UTgyrYdTVARSXr6dqxeZ6VJHRHafeq1WV8zt/2sp6KQjgAPJA+S+586Lfxae4Lizyyb8LiNFFOjCvJ5OOpOTreV5obm5/UDmq0nNTNOdNnir9zSxy0i4e/es5Gi1sdDgU5yNYQrcig== 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=j2Q4RPgwuTnytHzrtRabZ9LlYz6SRSDxKNjZQs5g7mw=; b=eSUvVLMPiasmqaK24VEyZZ5yORcKFnYXEwjSxDNkVU1VKwAyq/3t5aEe8BFmfgUpOX7jlvxHZ3wbZvvx7MmcSlh8oZwsoQn5VkKEEkFFqB4LxOMNFencnxtxIazK1I6DIm5M2XPHHbsauPPauT9Y8NtSq+G31c/TDIWwENe72guaaJnvE5SjDjpUbYxudVqin7h5QU3CVcNPz+/PSVFXq6Tgfw9yYujeLGUZlnsZkztc5zEowCsxcAG/s20X3sd2XFXlZ6uaR4GIrnxSss4rVrjrGRW/oPhF3pBdzlhZHCo7Z6Pbn39rJPAK1ve2QGwetkZACh5Jj1KJLK2v7Ikq2w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=j2Q4RPgwuTnytHzrtRabZ9LlYz6SRSDxKNjZQs5g7mw=; b=GM6SCTtqiVqSxZJw8MHy0Yv+/A8CtlnvbRttn8DvQiSIOUXd7QSdtiY85tUHpGtw/H5eNlsa6g43KZ1nEhGrR68JObwz5OtBvEByQaS5rFeYP+6dq20lFl1ZbajvFOx7EqWb/foJnT/ZyXJ0Ylh8DqCI/nAIhX+4oRLwlukDXWI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) by GV1PR08MB7940.eurprd08.prod.outlook.com (2603:10a6:150:9f::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Thu, 15 Sep 2022 14:00:22 +0000 Received: from AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::b480:677a:ac9b:8f24]) by AS8PR08MB6806.eurprd08.prod.outlook.com ([fe80::b480:677a:ac9b:8f24%7]) with mapi id 15.20.5612.022; Thu, 15 Sep 2022 14:00:22 +0000 Message-ID: <7176ba33-1534-c76d-bcef-44ee4e89c70e@arm.com> Date: Thu, 15 Sep 2022 15:00:20 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [PATCH v2 1/3] DynamicTablesPkg: Add CM_ARM_CPC_INFO object To: Jeff Brasen , devel@edk2.groups.io CC: ardb+tianocore@kernel.org, Alexei.Fedorov@arm.com, pierre.gondois@arm.com, "nd@arm.com" References: <562f833e95d7bbb6769094f17bd980cb9e8909ba.1663191097.git.jbrasen@nvidia.com> From: "Sami Mujawar" In-Reply-To: <562f833e95d7bbb6769094f17bd980cb9e8909ba.1663191097.git.jbrasen@nvidia.com> X-ClientProxiedBy: LO2P265CA0008.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:62::20) To AS8PR08MB6806.eurprd08.prod.outlook.com (2603:10a6:20b:39b::12) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: AS8PR08MB6806:EE_|GV1PR08MB7940:EE_|AM7EUR03FT008:EE_|AS8PR08MB8468:EE_ X-MS-Office365-Filtering-Correlation-Id: 77037fef-7af0-40a5-e7fc-08da9722aa18 X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: RB7h4ULrbIIDEuDO0alNBV4TD1z+wLBiB5unmD9xyTX+eq1DspAA+sKMF+dczk1NkKboY48e/tM+IxrqulRkZ+ER1HguYpcV74aIYVbFhSHX9SJyfFu8OhcWlStLKLpw75zHd2qIJ4R6lUpZ5Y8Rza1eETK6V3RYCXrLBV1l9nr4PPa+P1Dx27HnVN7gQ1+mjLCHo1nJq9V1fZzHjfLZhEFpoMIGSCKhvdCsHq4swEWUDOP0XpwGYU4LiaXk0UrrCpF55Cl05hvOdtJj2MHTbo0jRzQ/KIRLSrG4jXTR3VWeZvTiCyE3j2coxn6BwIYamVZYznqPkgqRZECk5bWtRIoROrGtgvcDXnMRbKItTi++lYMfNd3CVhWrjC8ofgbHYrGfTTYn8BkGCp9VXpbHAtR2CyxHEgNj3ig7JMcDZqtiup0FTxVctOIPeopsqDI/2vhWchzWil3GOIU52202a+uORf4OztnMa2tPqGOlyf2Evgyjcb5BzUNPennvnY9dZ9WIv92cu9AuY1/U1opYMPH5HR6nqqanwlUx5JoI6qV+PXZDaL6UnCgN8wiGcnY2niKbhbU6EW8fzueQ6819DMSzMk6jhieyPXIbZNLPpwARSuV6/HBae5gGU19miQr7nM4Ajwc+APSHD0sU+GG46CEmVFKRn2dEmWsZvHuW3tgFiveH7FzGZxqENzqeJM59XHxm/edxkon13GuAPcKDlUMfytLi9D9Rklruzim80h3QICgqIVN95gJN261f2JQOjHGXUGydL9gz6WVb/dGwaaSJ6lhWFMmo09KFyGm9s7o= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS8PR08MB6806.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(346002)(396003)(136003)(376002)(451199015)(83380400001)(41300700001)(8936002)(31686004)(6512007)(26005)(36756003)(478600001)(38100700002)(2906002)(30864003)(316002)(2616005)(6506007)(31696002)(44832011)(4326008)(186003)(53546011)(6486002)(66946007)(86362001)(5660300002)(66476007)(8676002)(66556008)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV1PR08MB7940 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT008.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1e390256-55b9-4167-eb80-08da9722a158 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UeX2hXzhUqkMysUxbYnq7J5GrKZhcgRyedDB5ay+bkZvi/rb//1zX8UXrf53QGwInLWQDeXKb0Gh293pYbQSRTB0YxPreVNKll9BUPHenisIHzQaYE23Ij2fi3zxuyFTjDLJrhgr84nku9OVhR9+WVDfOdcnyvS8pYAUIuZskmyn9J6yKL8+/voNezZ7hQ+fZ/01Z16zf3lqKJR3RdCCK1tKUb/Q8aGkeAgVUlmWKpqpgmQq8Y17cq8ETKDcEcP/m2y9q1On3zS+OpxjLRm5l7xXeB7jvOy4iSrVS87VA4LTpEvOtFT/traR6qmkrXqXHwAZq7ZUcHO/INHO4ZTaW1/kvQLHCY5ChL4ziAbPPUANJUG4Xks37E7mtUF90XUUlmgoT/ZU3s/hlWCmWPV9u7wbH+E/KRdJ1lr9hTi4jihmQ2caQbqcmh5hd8gOdr/Wrwj1PfQGt7g1Opmu9ZRvJe3REiIUmBd10o17O/I5p/6ZfJ4JeMyWFchHQPUvwseNHbynEUBzi7J0tWzC0EOOerLdGS374yqoknG7IIt8I363zumttgyrZk6tb9nHXAgrH0rvlvLxztjQIAgtLMsbn+JI1wshLycJbe93xtFAI/l42ZSKdk9wPmc9KyNzGYxS34GcfxdQ2keiHVhNqXDfR5zcXjHTQ+tEeu6Ceu6EKlfYm29JsQfpSdVTcWvEgStmebf2dFgiUaziVb7/l+2BYRQC7FENoY5i95j9G1kB5B1nMF/nm/kioUJqsxbiHYKFtJSZQTO+QBGg5dP6yBBSv0nIuIejR7iyvM9UPiT94NvmLXy9MSkRlWL5pTzCOJPV X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(396003)(136003)(376002)(451199015)(46966006)(36840700001)(40470700004)(83380400001)(82310400005)(41300700001)(47076005)(8936002)(31686004)(6512007)(26005)(36756003)(478600001)(40460700003)(2906002)(356005)(82740400003)(30864003)(316002)(36860700001)(2616005)(336012)(6506007)(31696002)(44832011)(4326008)(81166007)(186003)(53546011)(6486002)(86362001)(5660300002)(70206006)(70586007)(40480700001)(8676002)(43740500002);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2022 14:00:36.4162 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 77037fef-7af0-40a5-e7fc-08da9722aa18 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM7EUR03FT008.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB8468 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi Jeff, Apologies for the delay in providing feedback. I was half way through=20 your patch series when you sent the v3. For this patch please fine my feedbakc inline marked [SAMI].=C2=A0 I believ= e=20 some of these still apply for v3. I will provide review feedback for the v3 series shortly. Regards, Sami Mujawar On 14/09/2022 10:34 pm, Jeff Brasen wrote: > Introduce the CM_ARM_CPC_INFO CmObj in the ArmNameSpaceObjects. > > This allows to describe CPC information, as described in ACPI 6.4, > > s8.4.7.1 "_CPC (Continuous Performance Control)". > > > > Signed-off-by: Jeff Brasen > > --- > > .../Include/ArmNameSpaceObjects.h | 148 ++++++++++++++++-- > > .../ConfigurationManagerObjectParser.c | 79 ++++++++++ > > 2 files changed, 210 insertions(+), 17 deletions(-) > > > > diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTabl= esPkg/Include/ArmNameSpaceObjects.h > > index 102e0f96be..d76cc08e14 100644 > > --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h > > +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h > > @@ -63,6 +63,7 @@ typedef enum ArmObjectID { > > EArmObjPciInterruptMapInfo, ///< 39 - Pci Interrupt Map Info > > EArmObjRmr, ///< 40 - Reserved Memory Range = Node > > EArmObjMemoryRangeDescriptor, ///< 41 - Memory Range Descripto= r > > + EArmObjCpcInfo, ///< 42 - Continuous Performance = Control Info > > EArmObjMax > > } EARM_OBJECT_ID; > > =20 > > @@ -97,99 +98,105 @@ typedef struct CmArmPowerManagementProfileInfo { > > */ > > typedef struct CmArmGicCInfo { > > /// The GIC CPU Interface number. > > - UINT32 CPUInterfaceNumber; > > + UINT32 CPUInterfaceNumber; > > =20 > > /** The ACPI Processor UID. This must match the > > _UID of the CPU Device object information described > > in the DSDT/SSDT for the CPU. > > */ > > - UINT32 AcpiProcessorUid; > > + UINT32 AcpiProcessorUid; > > =20 > > /** The flags field as described by the GICC structure > > in the ACPI Specification. > > */ > > - UINT32 Flags; > > + UINT32 Flags; > > =20 > > /** The parking protocol version field as described by > > the GICC structure in the ACPI Specification. > > */ > > - UINT32 ParkingProtocolVersion; > > + UINT32 ParkingProtocolVersion; > > =20 > > /** The Performance Interrupt field as described by > > the GICC structure in the ACPI Specification. > > */ > > - UINT32 PerformanceInterruptGsiv; > > + UINT32 PerformanceInterruptGsiv; > > =20 > > /** The CPU Parked address field as described by > > the GICC structure in the ACPI Specification. > > */ > > - UINT64 ParkedAddress; > > + UINT64 ParkedAddress; > > =20 > > /** The base address for the GIC CPU Interface > > as described by the GICC structure in the > > ACPI Specification. > > */ > > - UINT64 PhysicalBaseAddress; > > + UINT64 PhysicalBaseAddress; > > =20 > > /** The base address for GICV interface > > as described by the GICC structure in the > > ACPI Specification. > > */ > > - UINT64 GICV; > > + UINT64 GICV; > > =20 > > /** The base address for GICH interface > > as described by the GICC structure in the > > ACPI Specification. > > */ > > - UINT64 GICH; > > + UINT64 GICH; > > =20 > > /** The GICV maintenance interrupt > > as described by the GICC structure in the > > ACPI Specification. > > */ > > - UINT32 VGICMaintenanceInterrupt; > > + UINT32 VGICMaintenanceInterrupt; > > =20 > > /** The base address for GICR interface > > as described by the GICC structure in the > > ACPI Specification. > > */ > > - UINT64 GICRBaseAddress; > > + UINT64 GICRBaseAddress; > > =20 > > /** The MPIDR for the CPU > > as described by the GICC structure in the > > ACPI Specification. > > */ > > - UINT64 MPIDR; > > + UINT64 MPIDR; > > =20 > > /** The Processor Power Efficiency class > > as described by the GICC structure in the > > ACPI Specification. > > */ > > - UINT8 ProcessorPowerEfficiencyClass; > > + UINT8 ProcessorPowerEfficiencyClass; > > =20 > > /** Statistical Profiling Extension buffer overflow GSIV. Zero if > > unsupported by this processor. This field was introduced in > > ACPI 6.3 (MADT revision 5) and is therefore ignored when > > generating MADT revision 4 or lower. > > */ > > - UINT16 SpeOverflowInterrupt; > > + UINT16 SpeOverflowInterrupt; > > =20 > > /** The proximity domain to which the logical processor belongs. > > This field is used to populate the GICC affinity structure > > in the SRAT table. > > */ > > - UINT32 ProximityDomain; > > + UINT32 ProximityDomain; > > =20 > > /** The clock domain to which the logical processor belongs. > > This field is used to populate the GICC affinity structure > > in the SRAT table. > > */ > > - UINT32 ClockDomain; > > + UINT32 ClockDomain; > > =20 > > /** The GICC Affinity flags field as described by the GICC Affinity s= tructure > > in the SRAT table. > > */ > > - UINT32 AffinityFlags; > > + UINT32 AffinityFlags; > > + > > + /** Optional field: Reference Token for the Cpc info of this processor= . > > + Token identifying a CM_ARM_OBJ_REF structure, itself referencing > > + CM_ARM_CPC_INFO objects. > > + */ > > + CM_OBJECT_TOKEN CpcToken; > > } CM_ARM_GICC_INFO; > > =20 > > /** A structure that describes the > > @@ -1070,6 +1077,113 @@ typedef struct CmArmRmrDescriptor { > > UINT64 Length; > > } CM_ARM_MEMORY_RANGE_DESCRIPTOR; > > =20 > > +/** A structure that describes the Cpc information. > > + > > + Continuous Performance Control is described in DSDT/SSDT and associate= d > > + to cpus/clusters in the cpu topology. > > + > > + Unsupported Optional registers should be encoded with NULL resource > > + Register {(SystemMemory, 0, 0, 0, 0)} > > + > > + For values that support Integer or Buffer, integer will be used > > + if buffer is NULL resource. > > + If resource is not NULL then Integer must be 0 > > + > > + Cf. ACPI 6.4, s8.4.7.1 _CPC (Continuous Performance Control) > > + > > + ID: EArmObjCpcInfo > > +*/ > > +typedef struct CmArmCpcInfo { > > + /// The revision number of the _CPC package format. > > + UINT32 Revision; > > + > > + /// Indicates the highest level of performance the processor > > + /// is theoretically capable of achieving. > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE HighestPerformanceBuffer; > > + UINT32 HighestPerformanceInteger; > > + > > + /// Indicates the highest sustained performance level of the processor= . > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalPerformanceBuffer; > > + UINT32 NominalPerformanceInteger; > > + > > + /// Indicates the lowest performance level of the processor with non-l= inear power savings. > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestNonlinearPerformanceBu= ffer; > > + UINT32 LowestNonlinearPerformanceIn= teger; > > + > > + /// Indicates the lowest performance level of the processor.. > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestPerformanceBuffer; > > + UINT32 LowestPerformanceInteger; > > + > > + /// Guaranteed Performance Register Buffer. > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE GuaranteedPerformanceRegiste= r; > > + > > + /// Desired Performance Register Buffer. > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DesiredPerformanceRegister; > > + > > + /// Minimum Performance Register Buffer. > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MinimumPerformanceRegister; > > + > > + /// Maximum Performance Register Buffer. > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE MaximumPerformanceRegister; > > + > > + /// Performance Reduction Tolerance Register. > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceReductionToleranc= eRegister; > > + > > + /// Time Window Register. > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE TimeWindowRegister; > > + > > + /// Counter Wraparound Time > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CounterWraparoundTimeBuffer; > > + UINT32 CounterWraparoundTimeInteger= ; > > + > > + /// Reference Performance Counter Register > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceCounterR= egister; > > + > > + /// Delivered Performance Counter Register > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE DeliveredPerformanceCounterR= egister; > > + > > + /// Performance Limited Register > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE PerformanceLimitedRegister; > > + > > + /// CPPC EnableRegister > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE CPPCEnableRegister; > > + > > + /// Autonomous Selection Enable > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousSelectionEnableBuf= fer; > > + UINT32 AutonomousSelectionEnableInt= eger; > > + > > + /// AutonomousActivity-WindowRegister > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE AutonomousActivityWindowRegi= ster; > > + > > + /// EnergyPerformance-PreferenceRegister > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE EnergyPerformancePreferenceR= egister; > > + > > + /// Reference Performance > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE ReferencePerformanceBuffer; > > + UINT32 ReferencePerformanceInteger; > > + > > + /// Lowest Frequency > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE LowestFrequencyBuffer; > > + UINT32 LowestFrequencyInteger; > > + > > + /// Nominal Frequency > > + /// Optional > > + EFI_ACPI_6_4_GENERIC_ADDRESS_STRUCTURE NominalFrequencyBuffer; > > + UINT32 NominalFrequencyInteger; > > +} CM_ARM_CPC_INFO; > > + > > #pragma pack() > > =20 > > #endif // ARM_NAMESPACE_OBJECTS_H_ > > diff --git a/DynamicTablesPkg/Library/Common/TableHelperLib/Configuration= ManagerObjectParser.c b/DynamicTablesPkg/Library/Common/TableHelperLib/Conf= igurationManagerObjectParser.c > > index c1b21d24a4..e2c608443b 100644 > > --- a/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManager= ObjectParser.c > > +++ b/DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManager= ObjectParser.c > > @@ -423,6 +423,83 @@ STATIC CONST CM_OBJ_PARSER CmPciInterruptMapInfoPar= ser[] =3D { > > ARRAY_SIZE (CmArmGenericInterruptParser) }, > > }; > > =20 > > +/** A parser for EArmObjCpcInfo. > > +*/ > > +STATIC CONST CM_OBJ_PARSER CmArmCpcInfoParser[] =3D { [SAMI] I think the Revision field is missing here. > > + { "HighestPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "HighestPerformanceInteger", 4, = "0x%llx", NULL }, [SAMI] Since this field is 32bit, I think the format specifier should be=20 "0x%x". Same applies to the other format specifiers below. > > + { "NominalPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "NominalPerformanceInteger", 4, = "0x%llx", NULL }, > > + { "LowestNonlinearPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "LowestNonlinearPerformanceInteger", 4, = "0x%llx", NULL }, > > + { "LowestPerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "LowestPerformanceInteger", 4, = "0x%llx", NULL }, > > + { "GuaranteedPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "DesiredPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "MinimumPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "MaximumPerformanceRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "PerformanceReductionToleranceRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "TimeWindowRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "CounterWraparoundTimeBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "CounterWraparoundTimeInteger", 4, = "0x%llx", NULL }, > > + { "ReferencePerformanceCounterRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "DeliveredPerformanceCounterRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "PerformanceLimitedRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "CPPCEnableRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "AutonomousSelectionEnableBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "AutonomousSelectionEnableInteger", 4, = "0x%llx", NULL }, > > + { "AutonomousActivityWindowRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "EnergyPerformancePreferenceRegister", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "ReferencePerformanceBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "ReferencePerformanceInteger", 4, = "0x%llx", NULL }, > > + { "LowestFrequencyBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "LowestFrequencyInteger", 4, = "0x%llx", NULL }, > > + { "NominalFrequencyBuffer", sizeof (EFI_ACPI_6_3_GENERI= C_ADDRESS_STRUCTURE), > > + NULL, NULL, AcpiGenericAddressParser, > > + ARRAY_SIZE (AcpiGenericAddressParser) }, > > + { "NominalFrequencyInteger", 4, = "0x%llx", NULL }, > > +}; > > + > > /** A parser for Arm namespace objects. > > */ > > STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectParser[] =3D { > > @@ -501,6 +578,8 @@ STATIC CONST CM_OBJ_PARSER_ARRAY ArmNamespaceObjectP= arser[] =3D { > > ARRAY_SIZE (CmArmPciAddressMapInfoParser) }, > > { "EArmObjPciInterruptMapInfo", CmPciInterruptMapInfoParser, > > ARRAY_SIZE (CmPciInterruptMapInfoParser) }, > > + { "EArmObjCpcInfo", CmArmCpcInfoParser, > > + ARRAY_SIZE (CmArmCpcInfoParser) }, > > { "EArmObjMax", NULL, = 0 }, > > }; > > =20 >