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=ox00FHfk; spf=pass (domain: arm.com, ip: 40.107.7.58, mailfrom: krzysztof.koch@arm.com) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (EUR04-HE1-obe.outbound.protection.outlook.com [40.107.7.58]) by groups.io with SMTP; Thu, 20 Jun 2019 07:54:19 -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=5m5YT4kYplWsXH2+LzMoqe+9VcwFei6rmTyJ8Gx+6M4=; b=ox00FHfkLPXanW1G6jTko3+dAzWamAazGm7nJcW37TEyUMVFIoOy0yr78cVY+HQMoZVNl+FLYU53QbfHR+44Enz5n6so014XqIMKk3Rs3Ba3P7EFZF1LrKWE6xKDrVUYAhK/Eyb+KzgeWVLruozh8qLTI39vm+zPvnMXDvIZwxc= Received: from VE1PR08MB4783.eurprd08.prod.outlook.com (10.255.114.16) by VE1PR08MB4672.eurprd08.prod.outlook.com (10.255.115.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1987.12; Thu, 20 Jun 2019 14:54:16 +0000 Received: from VE1PR08MB4783.eurprd08.prod.outlook.com ([fe80::9554:1492:6d83:be6b]) by VE1PR08MB4783.eurprd08.prod.outlook.com ([fe80::9554:1492:6d83:be6b%4]) with mapi id 15.20.1987.014; Thu, 20 Jun 2019 14:54:16 +0000 From: "Krzysztof Koch" To: "devel@edk2.groups.io" , "jaben.carsey@intel.com" , "Ni, Ray" , "Gao, Zhichao" CC: Sami Mujawar , nd Subject: Re: [edk2-devel] [PATCH v1 2/2] ShellPkg: acpiview: Update SRAT parser to ACPI 6.3 Thread-Topic: [edk2-devel] [PATCH v1 2/2] ShellPkg: acpiview: Update SRAT parser to ACPI 6.3 Thread-Index: AQHVIWF3h8tpIC93+Uy5XWaTprRXI6akrOlg Date: Thu, 20 Jun 2019 14:54:16 +0000 Message-ID: References: <20190612141046.30168-1-krzysztof.koch@arm.com> <20190612141046.30168-3-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: 3808894a-bf94-486d-a3c9-6bee57d75bfd.0 x-checkrecipientchecked: true authentication-results: spf=none (sender IP is ) smtp.mailfrom=Krzysztof.Koch@arm.com; x-originating-ip: [217.140.106.52] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b7fd6a17-787a-4b0a-b6fa-08d6f58f2a94 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:VE1PR08MB4672; x-ms-traffictypediagnostic: VE1PR08MB4672: x-ms-exchange-purlcount: 4 nodisclaimer: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-forefront-prvs: 0074BBE012 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(366004)(39850400004)(396003)(346002)(376002)(13464003)(189003)(199004)(7736002)(66476007)(102836004)(8676002)(15650500001)(186003)(9686003)(86362001)(71190400001)(66066001)(3846002)(6116002)(446003)(55016002)(26005)(73956011)(2906002)(6436002)(68736007)(11346002)(229853002)(6306002)(52536014)(66556008)(71200400001)(486006)(476003)(8936002)(966005)(53936002)(14454004)(33656002)(5660300002)(19627235002)(6506007)(53546011)(4326008)(53946003)(2501003)(64756008)(14444005)(6246003)(76116006)(81166006)(74316002)(30864003)(72206003)(99286004)(305945005)(76176011)(81156014)(66946007)(7696005)(256004)(66446008)(316002)(25786009)(478600001)(110136005)(54906003);DIR:OUT;SFP:1101;SCL:1;SRVR:VE1PR08MB4672;H:VE1PR08MB4783.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A: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: 8s7fORHW0vwG9KIQ6FtXaiCvfqDLQZcfoJZ5jAEd76JPVlnT5srMRywdQbDpL2jxZaVY1forCPWKpZNzvCusQqAEmgC7HNuSvmwK/0lu+I5VvFdi9bd11G0rLuA2Eo/zHuM+eaPKLID3gIgfPv0jQViIotoOyNSZnJjBYA7lL8LQ0JxAyrKwT+4bUu7oPBdfwn9xQniX3KgCVUbvPrKKveFUH+LTEbOQipGnhtlAO0s0j1OQj4//CkSdfAzHb8k2wsFP5StnJnO2vVtW/37D+4x4V8WPAFbDboDCXBbMQgrGxM3m70O5xbfp0flTbm7D1kZEmvADqqAFgUtRyYJTXcYIe6M7c0BGo4qXz0KxZcZ8uGZLZfZMXzpA4BZhheg7t5Rz+Y2JCObtkGlcLmsulkvqabrb3pDMtuK4eRq+4wE= MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: b7fd6a17-787a-4b0a-b6fa-08d6f58f2a94 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jun 2019 14:54:16.1882 (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: Krzysztof.Koch@arm.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4672 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi, Is there any way I can help to get this patch merged upstream? Kind regards, Krzysztof -----Original Message----- From: devel@edk2.groups.io On Behalf Of Carsey, Jab= en via Groups.Io Sent: Wednesday, June 12, 2019 21:58 To: devel@edk2.groups.io; Krzysztof Koch Cc: Ni, Ray ; Gao, Zhichao ; Kinn= ey, Michael D ; Gao, Liming ; Sami Mujawar ; Matteo Carlini ; Stephanie Hughes-Fitt ; nd Subject: Re: [edk2-devel] [PATCH v1 2/2] ShellPkg: acpiview: Update SRAT p= arser to ACPI 6.3 Reviewed-by: Jaben Carsey I don't have access to a platform with ACPI 6.3 to do a test. Can someone= do a test and respond with tested-by if possible? > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of=20 > Krzysztof Koch > Sent: Wednesday, June 12, 2019 7:11 AM > To: devel@edk2.groups.io > Cc: Carsey, Jaben ; Ni, Ray=20 > ; Gao, Zhichao ; Kinney,=20 > Michael D ; Gao, Liming=20 > ; Sami.Mujawar@arm.com; Matteo.Carlini@arm.com;=20 > Stephanie.Hughes- Fitt@arm.com; nd@arm.com > Subject: [edk2-devel] [PATCH v1 2/2] ShellPkg: acpiview: Update SRAT=20 > parser to ACPI 6.3 > Importance: High >=20 > Add support for parsing revision 3 of System Resource Affinity Table=20 > (SRAT). >=20 > Decode and dump the new Generic Initiator Affinity Structure. >=20 > Validate the Device Handle Type field inside the Generic Initiator=20 > Affinity Structure. >=20 > Signed-off-by: Krzysztof Koch > --- >=20 > Changes can be seen at: > https://github.com/KrzysztofKoch1/edk2/tree/582_acpiview_6_3_srat_v1 >=20 > Notes: > v1: > - dump and validate the Generic Initiator Affinity Struct=20 > [Krzysztof] >=20 > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c = | 35 > ++- > ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h = | 16 ++ > > ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser.c= =20 > | > 256 +++++++++++++++++++- > 3 files changed, 299 insertions(+), 8 deletions(-) >=20 > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > index > b5965507b498b9fa9bc4d3124b2285f509004c4f..60523936732f901317ee93d03f > e06df1403f3695 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > @@ -1,7 +1,7 @@ > /** @file > ACPI parser >=20 > - Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. > + Copyright (c) 2016 - 2019, ARM Limited. All rights reserved. > SPDX-License-Identifier: BSD-2-Clause-Patent **/ >=20 > @@ -401,6 +401,39 @@ Dump8Chars ( > ); > } >=20 > +/** > + This function traces 12 characters which can be optionally > + formated using the format string if specified. > + > + If no format string is specified the Format must be NULL. > + > + @param [in] Format Optional format string for tracing the data. > + @param [in] Ptr Pointer to the start of the buffer. > +**/ > +VOID > +EFIAPI > +Dump12Chars ( > + IN CONST CHAR16* Format OPTIONAL, > + IN UINT8* Ptr > + ) > +{ > + Print ( > + (Format !=3D NULL) ? Format : L"%c%c%c%c%c%c%c%c%c%c%c%c", > + Ptr[0], > + Ptr[1], > + Ptr[2], > + Ptr[3], > + Ptr[4], > + Ptr[5], > + Ptr[6], > + Ptr[7], > + Ptr[8], > + Ptr[9], > + Ptr[10], > + Ptr[11] > + ); > +} > + > /** > This function indents and prints the ACPI table Field Name. >=20 > diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > index > 7657892d9fd2e2e14c6578611ff0cf1b6f6cd750..5b23ab6fa9bd2f87e034728787 > 2685a2f74622f3 100644 > --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > @@ -184,6 +184,22 @@ Dump8Chars ( > IN UINT8* Ptr > ); >=20 > +/** > + This function traces 12 characters which can be optionally > + formated using the format string if specified. > + > + If no format string is specified the Format must be NULL. > + > + @param [in] Format Optional format string for tracing the data. > + @param [in] Ptr Pointer to the start of the buffer. > +**/ > +VOID > +EFIAPI > +Dump12Chars ( > + IN CONST CHAR16* Format OPTIONAL, > + IN UINT8* Ptr > + ); > + > /** > This function indents and prints the ACPI table Field Name. >=20 > diff --git > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser > .c=20 > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser > .c > index > 075ff2a141a82b522e8aaedb7ad79249aaf5eaac..8c268a11454d13c9e278691d6 > 19a580c4c14c08e 100644 > --- > a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser > .c > +++ > b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser > .c > @@ -1,11 +1,11 @@ > /** @file > SRAT table parser >=20 > - Copyright (c) 2016 - 2018, ARM Limited. All rights reserved. > + Copyright (c) 2016 - 2019, ARM Limited. All rights reserved. > 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 > #include > @@ -17,6 +17,7 @@ > // Local Variables > STATIC CONST UINT8* SratRAType; > STATIC CONST UINT8* SratRALength; > +STATIC CONST UINT8* SratDeviceHandleType; > STATIC ACPI_DESCRIPTION_HEADER_INFO AcpiHdrInfo; >=20 > /** > @@ -34,6 +35,51 @@ ValidateSratReserved ( > IN VOID* Context > ); >=20 > +/** > + This function validates the Device Handle Type field in the Generic= =20 > +Initiator > + Affinity Structure. > + > + @param [in] Ptr Pointer to the start of the field data. > + @param [in] Context Pointer to context specific information e.g. this > + could be a pointer to the ACPI table header. > +**/ > +STATIC > +VOID > +EFIAPI > +ValidateSratDeviceHandleType ( > + IN UINT8* Ptr, > + IN VOID* Context > + ); > + > +/** > + This function traces the Device Handle field inside Generic=20 > +Initiator > + Affinity Structure. > + > + @param [in] Format Format string for tracing the data. > + @param [in] Ptr Pointer to the start of the buffer. > +**/ > +STATIC > +VOID > +EFIAPI > +DumpSratDeviceHandle ( > + IN CONST CHAR16* Format, > + IN UINT8* Ptr > + ); > + > +/** > + This function traces the PCI BDF Number field inside Device Handle=20 > +- PCI > + > + @param [in] Format Format string for tracing the data. > + @param [in] Ptr Pointer to the start of the buffer. > +**/ > +STATIC > +VOID > +EFIAPI > +DumpSratPciBdfNumber ( > + IN CONST CHAR16* Format, > + IN UINT8* Ptr > + ); > + > /** > This function traces the APIC Proximity Domain field. >=20 > @@ -90,6 +136,41 @@ STATIC CONST ACPI_PARSER=20 > SratGicITSAffinityParser[] =3D { > {L"ITS Id", 4, 8, L"0x%x", NULL, NULL, NULL, NULL}, }; >=20 > +/** > + An ACPI_PARSER array describing the Generic Initiator Affinity=20 > +Structure **/ STATIC CONST ACPI_PARSER=20 > +SratGenericInitiatorAffinityParser[] =3D { > + {L"Type", 1, 0, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Length", 1, 1, L"0x%x", NULL, NULL, NULL, NULL}, > + > + {L"Reserved", 1, 2, L"0x%x", NULL, NULL, NULL, NULL}, {L"Device=20 > + Handle Type", 1, 3, L"%d", NULL, > (VOID**)&SratDeviceHandleType, > + ValidateSratDeviceHandleType, NULL}, {L"Proximity Domain", 4, 4,=20 > + L"0x%x", NULL, NULL, NULL, NULL}, {L"Device Handle", 16, 8, L"%s",=20 > + DumpSratDeviceHandle, NULL, NULL, > NULL}, > + {L"Flags", 4, 24, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Reserved", 4, 28, L"0x%x", NULL, NULL, NULL, NULL} }; > + > +/** > + An ACPI_PARSER array describing the Device Handle - ACPI **/ STATIC= =20 > +CONST ACPI_PARSER SratDeviceHandleAcpiParser[] =3D { > + {L"ACPI_HID", 8, 0, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"ACPI_UID", 4, 8, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"Reserved", 4, 12, L"0x%x", NULL, NULL, NULL, NULL} }; > + > +/** > + An ACPI_PARSER array describing the Device Handle - PCI **/ STATIC=20 > +CONST ACPI_PARSER SratDeviceHandlePciParser[] =3D { > + {L"PCI Segment", 2, 0, L"0x%x", NULL, NULL, NULL, NULL}, > + {L"PCI BDF Number", 2, 2, NULL, DumpSratPciBdfNumber, NULL, NULL, > NULL}, > + {L"Reserved", 12, 4, L"%x %x %x %x - %x %x %x %x - %x %x %x %x", > Dump12Chars, > + NULL, NULL, NULL} > +}; > + > /** > An ACPI_PARSER array describing the Memory Affinity structure. > **/ > @@ -159,6 +240,148 @@ ValidateSratReserved ( > } > } >=20 > +/** > + This function validates the Device Handle Type field in the Generic= =20 > +Initiator > + Affinity Structure. > + > + @param [in] Ptr Pointer to the start of the field data. > + @param [in] Context Pointer to context specific information e.g. this > + could be a pointer to the ACPI table header. > +**/ > +STATIC > +VOID > +EFIAPI > +ValidateSratDeviceHandleType ( > + IN UINT8* Ptr, > + IN VOID* Context > + ) > +{ > + UINT8 DeviceHandleType; > + > + DeviceHandleType =3D *Ptr; > + > + if (DeviceHandleType > EFI_ACPI_6_3_PCI_DEVICE_HANDLE) { > + IncrementErrorCount (); > + Print ( > + L"\nERROR: Invalid Device Handle Type: %d. Must be between 0=20 > + and > %d.", > + DeviceHandleType, > + EFI_ACPI_6_3_PCI_DEVICE_HANDLE > + ); > + } > +} > + > +/** > + This function traces the Device Handle field inside Generic=20 > +Initiator > + Affinity Structure. > + > + @param [in] Format Format string for tracing the data. > + @param [in] Ptr Pointer to the start of the buffer. > +**/ > +STATIC > +VOID > +EFIAPI > +DumpSratDeviceHandle ( > + IN CONST CHAR16* Format, > + IN UINT8* Ptr > + ) > +{ > + if (SratDeviceHandleType =3D=3D NULL) { > + IncrementErrorCount (); > + Print (L"\nERROR: Device Handle Type read incorrectly.\n"); > + return; > + } > + > + Print (L"\n"); > + > + if (*SratDeviceHandleType =3D=3D EFI_ACPI_6_3_ACPI_DEVICE_HANDLE) { > + ParseAcpi ( > + TRUE, > + 2, > + NULL, > + Ptr, > + sizeof (EFI_ACPI_6_3_DEVICE_HANDLE_ACPI), > + PARSER_PARAMS (SratDeviceHandleAcpiParser) > + ); > + } else if (*SratDeviceHandleType =3D=3D EFI_ACPI_6_3_PCI_DEVICE_HANDL= E) { > + ParseAcpi ( > + TRUE, > + 2, > + NULL, > + Ptr, > + sizeof (EFI_ACPI_6_3_DEVICE_HANDLE_PCI), > + PARSER_PARAMS (SratDeviceHandlePciParser) > + ); > + } > +} > + > +/** > + This function traces the PCI BDF Number field inside Device Handle=20 > +- PCI > + > + @param [in] Format Format string for tracing the data. > + @param [in] Ptr Pointer to the start of the buffer. > +**/ > +STATIC > +VOID > +EFIAPI > +DumpSratPciBdfNumber ( > + IN CONST CHAR16* Format, > + IN UINT8* Ptr > + ) > +{ > + CHAR16 Buffer[OUTPUT_FIELD_COLUMN_WIDTH]; > + > + Print (L"\n"); > + > + /* > + The PCI BDF Number subfields are printed in the order specified=20 > + in the > ACPI > + specification. The format of the 16-bit PCI BDF Number field is as = follows: > + > + +-----+------+------+ > + |DEV | FUNC | BUS | > + +-----+------+------+ > + |15:11| 10:8 | 7:0 | > + +-----+------+------+ > + */ > + > + // Print PCI Bus Number (Bits 7:0 of Byte 2) UnicodeSPrint ( > + Buffer, > + sizeof (Buffer), > + L"PCI Bus Number" > + ); > + PrintFieldName (4, Buffer); > + Print ( > + L"0x%x\n", > + *Ptr > + ); > + > + Ptr++; > + > + // Print PCI Device Number (Bits 7:3 of Byte 3) UnicodeSPrint ( > + Buffer, > + sizeof (Buffer), > + L"PCI Device Number" > + ); > + PrintFieldName (4, Buffer); > + Print ( > + L"0x%x\n", > + (*Ptr & (BIT7 | BIT6 | BIT5 | BIT4 | BIT3)) >> 3 > + ); > + > + // PCI Function Number (Bits 2:0 of Byte 3) > + UnicodeSPrint ( > + Buffer, > + sizeof (Buffer), > + L"PCI Function Number" > + ); > + PrintFieldName (4, Buffer); > + Print ( > + L"0x%x\n", > + *Ptr & (BIT2 | BIT1 | BIT0) > + ); > +} > + > /** > This function traces the APIC Proximity Domain field. >=20 > @@ -211,6 +434,7 @@ ParseAcpiSrat ( > UINT8* ResourcePtr; > UINT32 GicCAffinityIndex; > UINT32 GicITSAffinityIndex; > + UINT32 GenericInitiatorAffinityIndex; > UINT32 MemoryAffinityIndex; > UINT32 ApicSapicAffinityIndex; > UINT32 X2ApicAffinityIndex; > @@ -218,6 +442,7 @@ ParseAcpiSrat ( >=20 > GicCAffinityIndex =3D 0; > GicITSAffinityIndex =3D 0; > + GenericInitiatorAffinityIndex =3D 0; > MemoryAffinityIndex =3D 0; > ApicSapicAffinityIndex =3D 0; > X2ApicAffinityIndex =3D 0; > @@ -247,7 +472,7 @@ ParseAcpiSrat ( > ); >=20 > switch (*SratRAType) { > - case EFI_ACPI_6_2_GICC_AFFINITY: > + case EFI_ACPI_6_3_GICC_AFFINITY: > AsciiSPrint ( > Buffer, > sizeof (Buffer), > @@ -264,7 +489,7 @@ ParseAcpiSrat ( > ); > break; >=20 > - case EFI_ACPI_6_2_GIC_ITS_AFFINITY: > + case EFI_ACPI_6_3_GIC_ITS_AFFINITY: > AsciiSPrint ( > Buffer, > sizeof (Buffer), > @@ -281,7 +506,24 @@ ParseAcpiSrat ( > ); > break; >=20 > - case EFI_ACPI_6_2_MEMORY_AFFINITY: > + case EFI_ACPI_6_3_GENERIC_INITIATOR_AFFINITY: > + AsciiSPrint ( > + Buffer, > + sizeof (Buffer), > + "Generic Initiator Affinity Structure [%d]", > + GenericInitiatorAffinityIndex++ > + ); > + ParseAcpi ( > + TRUE, > + 2, > + Buffer, > + ResourcePtr, > + *SratRALength, > + PARSER_PARAMS (SratGenericInitiatorAffinityParser) > + ); > + break; > + > + case EFI_ACPI_6_3_MEMORY_AFFINITY: > AsciiSPrint ( > Buffer, > sizeof (Buffer), > @@ -298,7 +540,7 @@ ParseAcpiSrat ( > ); > break; >=20 > - case EFI_ACPI_6_2_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY: > + case EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY: > AsciiSPrint ( > Buffer, > sizeof (Buffer), > @@ -315,7 +557,7 @@ ParseAcpiSrat ( > ); > break; >=20 > - case EFI_ACPI_6_2_PROCESSOR_LOCAL_X2APIC_AFFINITY: > + case EFI_ACPI_6_3_PROCESSOR_LOCAL_X2APIC_AFFINITY: > AsciiSPrint ( > Buffer, > sizeof (Buffer), > -- > 'Guid(CE165669-3EF3-493F-B85D-6190EE5B9759)' >=20 >=20 >=20 >=20