From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web11.2541.1574222455337249816 for ; Tue, 19 Nov 2019 20:00:55 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: zhichao.gao@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Nov 2019 20:00:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,220,1571727600"; d="scan'208";a="231793240" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga004.fm.intel.com with ESMTP; 19 Nov 2019 20:00:54 -0800 Received: from fmsmsx115.amr.corp.intel.com (10.18.116.19) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 19 Nov 2019 20:00:54 -0800 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx115.amr.corp.intel.com (10.18.116.19) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 19 Nov 2019 20:00:54 -0800 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.213]) by shsmsx102.ccr.corp.intel.com ([169.254.2.108]) with mapi id 14.03.0439.000; Wed, 20 Nov 2019 12:00:51 +0800 From: "Gao, Zhichao" To: "Gao, Liming" , "devel@edk2.groups.io" , "krzysztof.koch@arm.com" , Sami Mujawar CC: "Ni, Ray" , Matteo Carlini , nd Subject: Re: [edk2-devel] [PATCH v2 1/1] ShellPkg: acpiview: Update SRAT parser to ACPI 6.3 Thread-Topic: [edk2-devel] [PATCH v2 1/1] ShellPkg: acpiview: Update SRAT parser to ACPI 6.3 Thread-Index: AQHVmWccOJfIcKFhXEuHGLdIrK9JM6eQLWgAgAHjkwCAAAXLAIAAnu+AgADDfWA= Date: Wed, 20 Nov 2019 04:00:50 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B878A52@SHSMSX101.ccr.corp.intel.com> References: <20191112143937.68588-1-krzysztof.koch@arm.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E5437A2@SHSMSX104.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E543AA0@SHSMSX104.ccr.corp.intel.com> In-Reply-To: <4A89E2EF3DFEDB4C8BFDE51014F606A14E543AA0@SHSMSX104.ccr.corp.intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiN2RlYmMyZGEtMzYyZi00NmQ3LWJlODktMGIxYzUzNzU2YTIzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiXC8xNTNBNUhvR1h5VjVSUXlzT3RzWjZQdWpxUE9YalhnK3VHRnAxUWpTQWc2RG51b0M0eWRQR3RxR0p4Q2ZJM0sifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: zhichao.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable The patch fixed the rebase issue before. Before, one patch aimed to remove = the redundant forward declaration. That cause the rebase error. But this pa= tch add it back for ValidateSratReserved function. I'd like the format to b= e aligned. Thanks, Zhichao > -----Original Message----- > From: Gao, Liming > Sent: Wednesday, November 20, 2019 5:43 AM > To: devel@edk2.groups.io; krzysztof.koch@arm.com; Sami Mujawar > > Cc: Ni, Ray ; Gao, Zhichao ; > Matteo Carlini ; nd ; Gao, Liming > > Subject: RE: [edk2-devel] [PATCH v2 1/1] ShellPkg: acpiview: Update SRAT= parser > to ACPI 6.3 >=20 > So, this patch passes the review before the soft feature freeze. If it g= ets Tested- > By before hard feature freeze, will it plan to catch 201911 stable tag? >=20 > Thanks > Liming > >-----Original Message----- > >From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of > >Krzysztof Koch > >Sent: Tuesday, November 19, 2019 10:44 PM > >To: Gao, Liming ; devel@edk2.groups.io; Sami > >Mujawar > >Cc: Ni, Ray ; Gao, Zhichao ; > >Matteo Carlini ; nd > >Subject: Re: [edk2-devel] [PATCH v2 1/1] ShellPkg: acpiview: Update > >SRAT parser to ACPI 6.3 > > > >Hi Liming, > > > >This is a feature support. This patch is a rebased version of a > >reviewed patch that was pending to be merged due to a lack of 'tested-b= y', see: > >https://edk2.groups.io/g/devel/message/42297?p=3D,,,20,0,0,0::Created,,= Kr > >zys > >ztof+Koch+SRAT,20,2,0,32042587 > >https://edk2.groups.io/g/devel/message/42665?p=3D,,,20,0,0,0::Created,,= We > >+c > >an+review+for+your+code+change.+And+for+our+personal+point%2C+the+ > >change+is+OK.,20,2,0,32042696 > > > >Kind regards, > >Krzysztof > > > > > >-----Original Message----- > >From: Gao, Liming > >Sent: Tuesday, November 19, 2019 14:24 > >To: devel@edk2.groups.io; Sami Mujawar ; > >Krzysztof Koch > >Cc: Ni, Ray ; Gao, Zhichao ; > >Matteo Carlini ; nd > >Subject: RE: [edk2-devel] [PATCH v2 1/1] ShellPkg: acpiview: Update > >SRAT parser to ACPI 6.3 > > > >Krzysztof: > > Does this patch plan to catch to edk2 201911 stable tag? This change > >is like a feature support. But, it doesn't pass review before soft feat= ure freeze. > > > >Thanks > >Liming > >> -----Original Message----- > >> From: devel@edk2.groups.io On Behalf Of Sami > >> Mujawar > >> Sent: Monday, November 18, 2019 5:33 PM > >> To: Krzysztof Koch ; devel@edk2.groups.io > >> Cc: Ni, Ray ; Gao, Zhichao ; > >> Matteo Carlini ; nd > >> Subject: Re: [edk2-devel] [PATCH v2 1/1] ShellPkg: acpiview: Update > >> SRAT parser to ACPI 6.3 > >> > >> Reviewed-by: Sami Mujawar > >> > >> Regards, > >> > >> Sami Mujawar > >> -----Original Message----- > >> From: Krzysztof Koch > >> Sent: 12 November 2019 02:40 PM > >> To: devel@edk2.groups.io > >> Cc: ray.ni@intel.com; zhichao.gao@intel.com; Matteo Carlini > >> ; Sami Mujawar ; nd > >> > >> Subject: [PATCH v2 1/1] ShellPkg: acpiview: Update SRAT parser to > >> ACPI > >> 6.3 > >> > >> Add support for parsing revision 3 of System Resource Affinity Table = (SRAT). > >> > >> Decode and dump the new Generic Initiator Affinity Structure. > >> > >> Validate the Device Handle Type field inside the Generic Initiator > >> Affinity > >Structure. > >> > >> Signed-off-by: Krzysztof Koch > >> --- > >> > >> The changes can be seen at > >> https://github.com/KrzysztofKoch1/edk2/tree/582_acpiview_6_3_srat_v2 > >> > >> Notes: > >> v2: > >> - rebase on latest master [Krzysztof] > >> > >> Readme.md = | 4 +- > >> ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c = | 33 > >+++ > >> ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h = | 16 + > >> > >> ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParser. > >> c > >> | 313 ++++++++++++++++++-- > >> 4 files changed, 343 insertions(+), 23 deletions(-) > >> > >> diff --git a/Readme.md b/Readme.md > >> index > >> > >acbcca88d3c62d392e6f94b1ad7de2d8627e3a38..594f16b20756ab78987fef4fe > ac > >2 > >> e439743d5b4a 100644 > >> --- a/Readme.md > >> +++ b/Readme.md > >> @@ -17,7 +17,7 @@ for the UEFI and PI specifications from www.uefi.or= g. > >> > >> Windows > >> VS2019 > >> - edk2-ci > >> + master > >> > >> >ci/_build/latest?definitionId=3D32&branchName=3Dmaster"> > >> >> src=3D"https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Win= do > >> w s%20VS2019%20CI?branchName=3Dmaster"/> > >> @@ -34,7 +34,7 @@ for the UEFI and PI specifications from www.uefi.or= g. > >> > >> Ubuntu > >> GCC > >> - edk2-ci > >> + master > >> > >> >ci/_build/latest?definitionId=3D31&branchName=3Dmaster"> > >> >> src=3D"https://dev.azure.com/tianocore/edk2-ci/_apis/build/status/Ubu= nt > >> u %20GCC5%20CI?branchName=3Dmaster"/> > >> diff --git > >> a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > >> b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > >> index > >> > >a569c3c55406ab58536834e56ce9701f7edeffee..2b2ecb93cef9ee28b752e7bf2 > d > >92 > >> 0b059dbf7d6b 100644 > >> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > >> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c > >> @@ -405,6 +405,39 @@ Dump8Chars ( > >> ); > >> } > >> > >> +/** > >> + 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. > >> > >> diff --git > >> a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > >> b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > >> index > >> > >20ca358bddfa5953bfb1d1bebaebbf3079eaba01..0dc721bd2cc59538432d4a9c > a > >b6c > >> 21728cc77d33 100644 > >> --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > >> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.h > >> @@ -184,6 +184,22 @@ Dump8Chars ( > >> IN UINT8* Ptr > >> ); > >> > >> +/** > >> + 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. > >> > >> diff --git > >> a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParse > >> r > >> .c > >> b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParse > >> r > >> .c index > >> > >a8aa420487bb6bf29fc38221d0b221573c64b8b3..d60476eb748e022f45d231e2 > 4c > >32 > >> b2b53e29bbd7 100644 > >> --- > >> a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratParse > >> r > >> .c > >> +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Srat/SratP > >> +++ a > >> +++ rs > >> +++ er.c > >> @@ -5,7 +5,7 @@ > >> SPDX-License-Identifier: BSD-2-Clause-Patent > >> > >> @par Reference(s): > >> - - ACPI 6.2 Specification - Errata A, September 2017 > >> + - ACPI 6.3 Specification - January 2019 > >> **/ > >> > >> #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; > >> > >> /** > >> @@ -32,13 +33,52 @@ EFIAPI > >> ValidateSratReserved ( > >> IN UINT8* Ptr, > >> IN VOID* Context > >> - ) > >> -{ > >> - if (*(UINT32*)Ptr !=3D 1) { > >> - IncrementErrorCount (); > >> - Print (L"\nERROR: Reserved should be 1 for backward compatibilit= y.\n"); > >> - } > >> -} > >> + ); > >> + > >> +/** > >> + This function validates the Device Handle Type field in the > >> +Generic Initiator > >> + Affinity Structure. > >> + > >> + @param [in] Ptr Pointer to the start of the field data. > >> + @param [in] Context Pointer to context specific information e.g. t= his > >> + 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 > >> +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 > >> +- 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. > >> @@ -52,14 +92,7 @@ EFIAPI > >> DumpSratApicProximity ( > >> IN CONST CHAR16* Format, > >> IN UINT8* Ptr > >> - ) > >> -{ > >> - UINT32 ProximityDomain; > >> - > >> - ProximityDomain =3D Ptr[0] | (Ptr[1] << 8) | (Ptr[2] << 16); > >> - > >> - Print (Format, ProximityDomain); > >> -} > >> + ); > >> > >> /** > >> An ACPI_PARSER array describing the SRAT Table. > >> @@ -103,6 +136,41 @@ STATIC CONST ACPI_PARSER > >SratGicITSAffinityParser[] =3D { > >> {L"ITS Id", 4, 8, L"0x%x", NULL, NULL, NULL, NULL}, }; > >> > >> +/** > >> + An ACPI_PARSER array describing the Generic Initiator Affinity > >> +Structure **/ STATIC CONST ACPI_PARSER > >> +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 > >> + Handle Type", 1, 3, L"%d", NULL, > >(VOID**)&SratDeviceHandleType, > >> + ValidateSratDeviceHandleType, NULL}, > >> + {L"Proximity Domain", 4, 4, L"0x%x", NULL, NULL, NULL, NULL}, > >> + {L"Device Handle", 16, 8, L"%s", 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 CONST ACPI_PARSER SratDeviceHandleAcpiParser[] =3D { > >> + {L"ACPI_HID", 8, 0, L"0x%lx", 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 > >> +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. > >> **/ > >> @@ -152,6 +220,190 @@ STATIC CONST ACPI_PARSER > >SratX2ApciAffinityParser[] =3D { > >> {L"Reserved", 4, 20, L"0x%x", NULL, NULL, NULL, NULL} }; > >> > >> +/** > >> + This function validates the Reserved field in the SRAT table heade= r. > >> + > >> + @param [in] Ptr Pointer to the start of the field data. > >> + @param [in] Context Pointer to context specific information e.g. t= his > >> + could be a pointer to the ACPI table header. > >> +**/ > >> +STATIC > >> +VOID > >> +EFIAPI > >> +ValidateSratReserved ( > >> + IN UINT8* Ptr, > >> + IN VOID* Context > >> + ) > >> +{ > >> + if (*(UINT32*)Ptr !=3D 1) { > >> + IncrementErrorCount (); > >> + Print (L"\nERROR: Reserved should be 1 for backward > >> +compatibility.\n"); > >> + } > >> +} > >> + > >> +/** > >> + This function validates the Device Handle Type field in the > >> +Generic Initiator > >> + Affinity Structure. > >> + > >> + @param [in] Ptr Pointer to the start of the field data. > >> + @param [in] Context Pointer to context specific information e.g. t= his > >> + 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 > >and %d.", > >> + DeviceHandleType, > >> + EFI_ACPI_6_3_PCI_DEVICE_HANDLE > >> + ); > >> + } > >> +} > >> + > >> +/** > >> + This function traces the Device Handle field inside Generic > >> +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_HANDLE) > >{ > >> + 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 > >> +- 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 > >> + 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. > >> + > >> + @param [in] Format Format string for tracing the data. > >> + @param [in] Ptr Pointer to the start of the buffer. > >> +**/ > >> +STATIC > >> +VOID > >> +EFIAPI > >> +DumpSratApicProximity ( > >> + IN CONST CHAR16* Format, > >> + IN UINT8* Ptr > >> + ) > >> +{ > >> + UINT32 ProximityDomain; > >> + > >> + ProximityDomain =3D Ptr[0] | (Ptr[1] << 8) | (Ptr[2] << 16); > >> + > >> + Print (Format, ProximityDomain); > >> +} > >> + > >> /** > >> This function parses the ACPI SRAT table. > >> When trace is enabled this function parses the SRAT table and @@ > >> -183,6 > >+435,7 @@ ParseAcpiSrat ( > >> UINT8* ResourcePtr; > >> UINT32 GicCAffinityIndex; > >> UINT32 GicITSAffinityIndex; > >> + UINT32 GenericInitiatorAffinityIndex; > >> UINT32 MemoryAffinityIndex; > >> UINT32 ApicSapicAffinityIndex; > >> UINT32 X2ApicAffinityIndex; > >> @@ -190,6 +443,7 @@ ParseAcpiSrat ( > >> > >> GicCAffinityIndex =3D 0; > >> GicITSAffinityIndex =3D 0; > >> + GenericInitiatorAffinityIndex =3D 0; > >> MemoryAffinityIndex =3D 0; > >> ApicSapicAffinityIndex =3D 0; > >> X2ApicAffinityIndex =3D 0; > >> @@ -232,7 +486,7 @@ ParseAcpiSrat ( > >> } > >> > >> switch (*SratRAType) { > >> - case EFI_ACPI_6_2_GICC_AFFINITY: > >> + case EFI_ACPI_6_3_GICC_AFFINITY: > >> AsciiSPrint ( > >> Buffer, > >> sizeof (Buffer), > >> @@ -249,7 +503,7 @@ ParseAcpiSrat ( > >> ); > >> break; > >> > >> - case EFI_ACPI_6_2_GIC_ITS_AFFINITY: > >> + case EFI_ACPI_6_3_GIC_ITS_AFFINITY: > >> AsciiSPrint ( > >> Buffer, > >> sizeof (Buffer), > >> @@ -266,7 +520,24 @@ ParseAcpiSrat ( > >> ); > >> break; > >> > >> - 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), > >> @@ -283,7 +554,7 @@ ParseAcpiSrat ( > >> ); > >> break; > >> > >> - case EFI_ACPI_6_2_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY: > >> + case EFI_ACPI_6_3_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY: > >> AsciiSPrint ( > >> Buffer, > >> sizeof (Buffer), > >> @@ -300,7 +571,7 @@ ParseAcpiSrat ( > >> ); > >> break; > >> > >> - 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)' > >> > >> > >> > >> > > > > > >