From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=+R4/R/jX; spf=pass (domain: arm.com, ip: 40.107.15.42, mailfrom: sami.mujawar@arm.com) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (EUR01-DB5-obe.outbound.protection.outlook.com [40.107.15.42]) by groups.io with SMTP; Mon, 10 Jun 2019 13:28:27 -0700 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=wXA8wiogh3SkeyJhJLfYVnxuE/zpAL8pdyUaWHo8A5s=; b=+R4/R/jXYdTBQVh0ZH2EzK/EECKb4tB/UppiJ/6Bb2MflDS8l/kUMGMQV0CdLdxdJnMT6KXYS9tzNUcJAiEEe53GsvANhRjE3AV8JPmphrH/zT+t6DwOsuJMUYJ1mMYJnzxXmDseY+ZpNaTvOvxeD3zG8mdgxWXGpYuyCH2U5yI= Received: from DB6PR0802MB2375.eurprd08.prod.outlook.com (10.172.228.142) by DB6PR0802MB2470.eurprd08.prod.outlook.com (10.172.251.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.17; Mon, 10 Jun 2019 20:28:24 +0000 Received: from DB6PR0802MB2375.eurprd08.prod.outlook.com ([fe80::a46c:aa3a:17bf:7909]) by DB6PR0802MB2375.eurprd08.prod.outlook.com ([fe80::a46c:aa3a:17bf:7909%3]) with mapi id 15.20.1965.017; Mon, 10 Jun 2019 20:28:24 +0000 From: "Sami Mujawar" To: "devel@edk2.groups.io" CC: nd Subject: Re: [PATCH v1 1/1] DynamicTablesPkg: Add ACPI 6.3 SPE support to MADT generator Thread-Topic: [PATCH v1 1/1] DynamicTablesPkg: Add ACPI 6.3 SPE support to MADT generator Thread-Index: AQHVC/cNu6wvrbktWEyLqFcXr0WFu6aVebXwgAAEXFA= Date: Mon, 10 Jun 2019 20:28:24 +0000 Message-ID: References: <20190516145245.32572-1-krzysztof.koch@arm.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 22cb1963-23fa-443d-b0ba-18ba3b57f066.1 x-checkrecipientchecked: true authentication-results: spf=none (sender IP is ) smtp.mailfrom=Sami.Mujawar@arm.com; x-originating-ip: [217.140.106.54] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0d3d1129-eca2-455d-c244-08d6ede22fe6 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB6PR0802MB2470; x-ms-traffictypediagnostic: DB6PR0802MB2470: x-ms-exchange-purlcount: 1 nodisclaimer: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0064B3273C x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(376002)(366004)(396003)(346002)(39860400002)(136003)(13464003)(199004)(189003)(6436002)(55016002)(5640700003)(3846002)(2940100002)(6306002)(316002)(76176011)(74316002)(2906002)(5660300002)(9686003)(229853002)(30864003)(52536014)(6116002)(8936002)(71190400001)(33656002)(68736007)(2351001)(2501003)(71200400001)(81156014)(73956011)(66946007)(26005)(81166006)(64756008)(7696005)(6246003)(66556008)(99286004)(256004)(66446008)(76116006)(1730700003)(53936002)(8676002)(478600001)(66476007)(86362001)(4326008)(305945005)(53546011)(6506007)(6916009)(14454004)(25786009)(7736002)(102836004)(11346002)(186003)(72206003)(486006)(476003)(66066001)(446003)(966005);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR0802MB2470;H:DB6PR0802MB2375.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: /Yu5kIMwzSye/ZeJYuJP3mQcfY+70H//pl7SPVO5N6xUjD4h3ztPNinNyeLZX8LgO1b7AyKnk121m1dwNY45dg2jLLAbo4rw4zOut5zXB/UEqLnBMJqkajSWbKnUyAVSVqC5164+CkWzUomY4/95ytad9g+xKhvcUS0zQwSwM4fkwCzwny+gi+Gsh6GAhQiWlD7081ZENkNPbSLOAz+XW/BMRkj+DqMAtPaBqAyDFYlBB+ICwnsYBnXFZrgaqxZeEv9pqred8l0TVpaJhd9alWVYBOl4LoWyCBcNLiYj7nwS2iXkbZOaT0nA+g0r1mFyFHRdpN95MAINJzats0MFagpyWo6IbHCwQWWlhCTqUeH0lGkWVy6cS9AqTrORv3Cb4jc2A9wXkzDKWy5b4QBC+OodHr6AVBnigffs6pc2kRg= MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d3d1129-eca2-455d-c244-08d6ede22fe6 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Jun 2019 20:28:24.0817 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Sami.Mujawar@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2470 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Pushed as ccc97f6df415..5506701f7984 -----Original Message----- From: Sami Mujawar=20 Sent: 10 June 2019 09:13 PM To: devel@edk2.groups.io Cc: nd Subject: RE: [PATCH v1 1/1] DynamicTablesPkg: Add ACPI 6.3 SPE support to M= ADT generator Reviewed-by: Sami Mujawar -----Original Message----- From: Krzysztof Koch Sent: 16 May 2019 03:53 PM To: devel@edk2.groups.io Cc: leif.lindholm@linaro.org; Sami Mujawar ; Alexei F= edorov ; Matteo Carlini ; S= tephanie Hughes-Fitt ; nd Subject: [PATCH v1 1/1] DynamicTablesPkg: Add ACPI 6.3 SPE support to MADT = generator The Dynamic Tables Framework now supports generating Multiple APIC Descript= ion Table (MADT) revision 5 for ARM platforms while maintaining backward-co= mpatibility with ACPI 6.2. The relevant change is the enablement of the Statistical Profiling Extensio= n (SPE). Signed-off-by: Krzysztof Koch --- Changes can be seen at: https://github.com/KrzysztofKoch1/edk2/tree/476_mad= t_add_spe_v1 Notes: v1: - Add support for SPE in MADT generator [Krzysztof] DynamicTablesPkg/Include/ArmNameSpaceObjects.h | 7 ++ DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/MadtGenerator.c | 105 +++= ++++++++--------- 2 files changed, 66 insertions(+), 46 deletions(-) diff --git a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h b/DynamicTables= Pkg/Include/ArmNameSpaceObjects.h index bf70dc76cea044b9a8e8eb529d2ddbf892bafd58..d9dcca12db68d16d3ddb73553ec= d2383358832e7 100644 --- a/DynamicTablesPkg/Include/ArmNameSpaceObjects.h +++ b/DynamicTablesPkg/Include/ArmNameSpaceObjects.h @@ -155,6 +155,13 @@ typedef struct CmArmGicCInfo { ACPI Specification. */ UINT8 ProcessorPowerEfficiencyClass; + + /** 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; } CM_ARM_GICC_INFO; =20 /** A structure that describes the diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/MadtGenerator= .c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/MadtGenerator.c index ab9734fb31480f1b653227d1d56abf60bb04f98a..3945d18d76915938081a5ef36fc= 9e50261ea3a0a 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/MadtGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiMadtLibArm/MadtGenerator.c @@ -5,7 +5,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent =20 @par Reference(s): - - ACPI 6.2 Specification - Errata A, September 2017 + - ACPI 6.3 Specification - January 2019 =20 **/ =20 @@ -82,25 +82,27 @@ GET_OBJECT_LIST ( ); =20 /** This function updates the GIC CPU Interface Information in the - EFI_ACPI_6_2_GIC_STRUCTURE structure. + EFI_ACPI_6_3_GIC_STRUCTURE structure. =20 - @param [in] Gicc Pointer to GIC CPU Interface structure. - @param [in] GicCInfo Pointer to the GIC CPU Interface Information. + @param [in] Gicc Pointer to GIC CPU Interface structure. + @param [in] GicCInfo Pointer to the GIC CPU Interface Information. + @param [in] MadtRev MADT table revision. **/ STATIC VOID AddGICC ( - IN EFI_ACPI_6_2_GIC_STRUCTURE * CONST Gicc, - IN CONST CM_ARM_GICC_INFO * CONST GicCInfo + IN EFI_ACPI_6_3_GIC_STRUCTURE * CONST Gicc, + IN CONST CM_ARM_GICC_INFO * CONST GicCInfo, + IN CONST UINT8 MadtRev ) { ASSERT (Gicc !=3D NULL); ASSERT (GicCInfo !=3D NULL); =20 // UINT8 Type - Gicc->Type =3D EFI_ACPI_6_2_GIC; + Gicc->Type =3D EFI_ACPI_6_3_GIC; // UINT8 Length - Gicc->Length =3D sizeof (EFI_ACPI_6_2_GIC_STRUCTURE); + Gicc->Length =3D sizeof (EFI_ACPI_6_3_GIC_STRUCTURE); // UINT16 Reserved Gicc->Reserved =3D EFI_ACPI_RESERVED_WORD; =20 @@ -134,10 +136,18 @@ AddGICC ( // UINT8 ProcessorPowerEfficiencyClass Gicc->ProcessorPowerEfficiencyClass =3D GicCInfo->ProcessorPowerEfficiencyClass; - // UINT8 Reserved2[3] - Gicc->Reserved2[0] =3D EFI_ACPI_RESERVED_BYTE; - Gicc->Reserved2[1] =3D EFI_ACPI_RESERVED_BYTE; - Gicc->Reserved2[2] =3D EFI_ACPI_RESERVED_BYTE; + // UINT8 Reserved2 + Gicc->Reserved2 =3D EFI_ACPI_RESERVED_BYTE; + + // UINT16 SpeOverflowInterrupt + if (MadtRev > EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION) { + Gicc->SpeOverflowInterrupt =3D GicCInfo->SpeOverflowInterrupt; }=20 + else { + // Setting SpeOverflowInterrupt to 0 ensures backward compatibility wi= th + // ACPI 6.2 by also clearing the Reserved2[1] and Reserved2[2] fields + // in EFI_ACPI_6_2_GIC_STRUCTURE. + Gicc->SpeOverflowInterrupt =3D 0; + } } =20 /** Add the GIC CPU Interface Information to the MADT Table. @@ -147,20 +157,22 @@ AddGICC ( @param [in] GicCInfo Pointer to the GIC CPU Information list. @param [in] GicCCount Count of GIC CPU Interfaces. + @param [in] MadtRev MADT table revision. **/ STATIC VOID AddGICCList ( - IN EFI_ACPI_6_2_GIC_STRUCTURE * Gicc, + IN EFI_ACPI_6_3_GIC_STRUCTURE * Gicc, IN CONST CM_ARM_GICC_INFO * GicCInfo, - IN UINT32 GicCCount + IN UINT32 GicCCount, + IN CONST UINT8 MadtRev ) { ASSERT (Gicc !=3D NULL); ASSERT (GicCInfo !=3D NULL); =20 while (GicCCount-- !=3D 0) { - AddGICC (Gicc++, GicCInfo++); + AddGICC (Gicc++, GicCInfo++, MadtRev); } } =20 @@ -172,7 +184,7 @@ AddGICCList ( STATIC VOID AddGICD ( - EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE * CONST Gicd, + EFI_ACPI_6_3_GIC_DISTRIBUTOR_STRUCTURE * CONST Gicd, CONST CM_ARM_GICD_INFO * CONST GicDInfo ) { @@ -180,9 +192,9 @@ AddGICD ( ASSERT (GicDInfo !=3D NULL); =20 // UINT8 Type - Gicd->Type =3D EFI_ACPI_6_2_GICD; + Gicd->Type =3D EFI_ACPI_6_3_GICD; // UINT8 Length - Gicd->Length =3D sizeof (EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE); + Gicd->Length =3D sizeof (EFI_ACPI_6_3_GIC_DISTRIBUTOR_STRUCTURE); // UINT16 Reserved Gicd->Reserved1 =3D EFI_ACPI_RESERVED_WORD; // UINT32 Identifier @@ -209,15 +221,15 @@ AddGICD ( STATIC VOID AddGICMsiFrame ( - IN EFI_ACPI_6_2_GIC_MSI_FRAME_STRUCTURE * CONST GicMsiFrame, + IN EFI_ACPI_6_3_GIC_MSI_FRAME_STRUCTURE * CONST GicMsiFrame, IN CONST CM_ARM_GIC_MSI_FRAME_INFO * CONST GicMsiFrameInfo ) { ASSERT (GicMsiFrame !=3D NULL); ASSERT (GicMsiFrameInfo !=3D NULL); =20 - GicMsiFrame->Type =3D EFI_ACPI_6_2_GIC_MSI_FRAME; - GicMsiFrame->Length =3D sizeof (EFI_ACPI_6_2_GIC_MSI_FRAME_STRUCTURE); + GicMsiFrame->Type =3D EFI_ACPI_6_3_GIC_MSI_FRAME; GicMsiFrame->Length=20 + =3D sizeof (EFI_ACPI_6_3_GIC_MSI_FRAME_STRUCTURE); GicMsiFrame->Reserved1 =3D EFI_ACPI_RESERVED_WORD; GicMsiFrame->GicMsiFrameId =3D GicMsiFrameInfo->GicMsiFrameId; GicMsiFrame->PhysicalBaseAddress =3D GicMsiFrameInfo->PhysicalBaseAddres= s; @@ -236,7 +248,7 @@ AddGICMsiFrame ( STATIC VOID AddGICMsiFrameInfoList ( - IN EFI_ACPI_6_2_GIC_MSI_FRAME_STRUCTURE * GicMsiFrame, + IN EFI_ACPI_6_3_GIC_MSI_FRAME_STRUCTURE * GicMsiFrame, IN CONST CM_ARM_GIC_MSI_FRAME_INFO * GicMsiFrameInfo, IN UINT32 GicMsiFrameCount ) @@ -257,15 +269,15 @@ AddGICMsiFrameInfoList ( STATIC VOID AddGICRedistr= ibutor ( - IN EFI_ACPI_6_2_GICR_STRUCTURE * CONST Gicr, + IN EFI_ACPI_6_3_GICR_STRUCTURE * CONST Gicr, IN CONST CM_ARM_GIC_REDIST_INFO * CONST GicRedisributorInfo ) { ASSERT (Gicr !=3D NULL); ASSERT (GicRedisributorInfo !=3D NULL); =20 - Gicr->Type =3D EFI_ACPI_6_2_GICR; - Gicr->Length =3D sizeof (EFI_ACPI_6_2_GICR_STRUCTURE); + Gicr->Type =3D EFI_ACPI_6_3_GICR; + Gicr->Length =3D sizeof (EFI_ACPI_6_3_GICR_STRUCTURE); Gicr->Reserved =3D EFI_ACPI_RESERVED_WORD; Gicr->DiscoveryRangeBaseAddress =3D GicRedisributorInfo->DiscoveryRangeBaseAddress; @@ -281,7 +293,7 @@ AddGICRedistributor ( STATIC VOID AddGICRedistributo= rList ( - IN EFI_ACPI_6_2_GICR_STRUCTURE * Gicr, + IN EFI_ACPI_6_3_GICR_STRUCTURE * Gicr, IN CONST CM_ARM_GIC_REDIST_INFO * GicRInfo, IN UINT32 GicRCount ) @@ -302,15 +314,15 @@ AddGICRedistributorList ( STATIC VOID AddGICInterr= uptTranslationService ( - IN EFI_ACPI_6_2_GIC_ITS_STRUCTURE * CONST GicIts, + IN EFI_ACPI_6_3_GIC_ITS_STRUCTURE * CONST GicIts, IN CONST CM_ARM_GIC_ITS_INFO * CONST GicItsInfo ) { ASSERT (GicIts !=3D NULL); ASSERT (GicItsInfo !=3D NULL); =20 - GicIts->Type =3D EFI_ACPI_6_2_GIC_ITS; - GicIts->Length =3D sizeof (EFI_ACPI_6_2_GIC_ITS_STRUCTURE); + GicIts->Type =3D EFI_ACPI_6_3_GIC_ITS; + GicIts->Length =3D sizeof (EFI_ACPI_6_3_GIC_ITS_STRUCTURE); GicIts->Reserved =3D EFI_ACPI_RESERVED_WORD; GicIts->GicItsId =3D GicItsInfo->GicItsId; GicIts->PhysicalBaseAddress =3D GicItsInfo->PhysicalBaseAddress; @@ -327= ,7 +339,7 @@ AddGICInterruptTranslationService ( STATIC VOID AddGICItsLi= st ( - IN EFI_ACPI_6_2_GIC_ITS_STRUCTURE * GicIts, + IN EFI_ACPI_6_3_GIC_ITS_STRUCTURE * GicIts, IN CONST CM_ARM_GIC_ITS_INFO * GicItsInfo, IN UINT32 GicItsCount ) @@ -390,7 +402,7 @@ BuildMadtTable ( UINT32 GicRedistOffset; UINT32 GicItsOffset; =20 - EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER * Madt; + EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER * Madt; =20 ASSERT (This !=3D NULL); ASSERT (AcpiTableInfo !=3D NULL); @@ -521,22 +533,22 @@ BuildMadtTable ( goto error_handler; } =20 - TableSize =3D sizeof (EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADE= R); + TableSize =3D sizeof + (EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER); =20 GicCOffset =3D TableSize; - TableSize +=3D (sizeof (EFI_ACPI_6_2_GIC_STRUCTURE) * GicCCount); + TableSize +=3D (sizeof (EFI_ACPI_6_3_GIC_STRUCTURE) * GicCCount); =20 GicDOffset =3D TableSize; - TableSize +=3D (sizeof (EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE) * GicDCo= unt); + TableSize +=3D (sizeof (EFI_ACPI_6_3_GIC_DISTRIBUTOR_STRUCTURE) *=20 + GicDCount); =20 GicMSIOffset =3D TableSize; - TableSize +=3D (sizeof (EFI_ACPI_6_2_GIC_MSI_FRAME_STRUCTURE) * GicMSICo= unt); + TableSize +=3D (sizeof (EFI_ACPI_6_3_GIC_MSI_FRAME_STRUCTURE) *=20 + GicMSICount); =20 GicRedistOffset =3D TableSize; - TableSize +=3D (sizeof (EFI_ACPI_6_2_GICR_STRUCTURE) * GicRedistCount); + TableSize +=3D (sizeof (EFI_ACPI_6_3_GICR_STRUCTURE) * GicRedistCount); =20 GicItsOffset =3D TableSize; - TableSize +=3D (sizeof (EFI_ACPI_6_2_GIC_ITS_STRUCTURE) * GicItsCount); + TableSize +=3D (sizeof (EFI_ACPI_6_3_GIC_ITS_STRUCTURE) * GicItsCount); =20 // Allocate the Buffer for MADT table *Table =3D (EFI_ACPI_DESCRIPTION_HEADER*)AllocateZeroPool (TableSize); @= @ -552,7 +564,7 @@ BuildMadtTable ( goto error_handler; } =20 - Madt =3D (EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER*)*Table; + Madt =3D (EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER*)*Table; =20 DEBUG (( DEBUG_INFO, @@ -578,19 +590,20 @@ BuildMadtTable ( } =20 AddGICCList ( - (EFI_ACPI_6_2_GIC_STRUCTURE*)((UINT8*)Madt + GicCOffset), + (EFI_ACPI_6_3_GIC_STRUCTURE*)((UINT8*)Madt + GicCOffset), GicCInfo, - GicCCount + GicCCount, + Madt->Header.Revision ); =20 AddGICD ( - (EFI_ACPI_6_2_GIC_DISTRIBUTOR_STRUCTURE*)((UINT8*)Madt + GicDOffset), + (EFI_ACPI_6_3_GIC_DISTRIBUTOR_STRUCTURE*)((UINT8*)Madt +=20 + GicDOffset), GicDInfo ); =20 if (GicMSICount !=3D 0) { AddGICMsiFrameInfoList ( - (EFI_ACPI_6_2_GIC_MSI_FRAME_STRUCTURE*)((UINT8*)Madt + GicMSIOffset)= , + (EFI_ACPI_6_3_GIC_MSI_FRAME_STRUCTURE*)((UINT8*)Madt +=20 + GicMSIOffset), GicMSIInfo, GicMSICount ); @@ -598,7 +611,7 @@ BuildMadtTable ( =20 if (GicRedistCount !=3D 0) { AddGICRedistributorList ( - (EFI_ACPI_6_2_GICR_STRUCTURE*)((UINT8*)Madt + GicRedistOffset), + (EFI_ACPI_6_3_GICR_STRUCTURE*)((UINT8*)Madt + GicRedistOffset), GicRedistInfo, GicRedistCount ); @@ -606,7 +619,7 @@ BuildMadtTable ( =20 if (GicItsCount !=3D 0) { AddGICItsList ( - (EFI_ACPI_6_2_GIC_ITS_STRUCTURE*)((UINT8*)Madt + GicItsOffset), + (EFI_ACPI_6_3_GIC_ITS_STRUCTURE*)((UINT8*)Madt + GicItsOffset), GicItsInfo, GicItsCount ); @@ -673,9 +686,9 @@ ACPI_TABLE_GENERATOR MadtGenerator =3D { // Generator Description L"ACPI.STD.MADT.GENERATOR", // ACPI Table Signature - EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, + EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, // ACPI Table Revision supported by this Generator - EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION, + EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION, // Minimum supported ACPI Table Revision EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION, // Creator ID -- 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)'