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.web12.34521.1630000305183280285 for ; Thu, 26 Aug 2021 10:51:45 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=xia4/7kQ; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: ray.ni@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10088"; a="240008799" X-IronPort-AV: E=Sophos;i="5.84,354,1620716400"; d="scan'208";a="240008799" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Aug 2021 10:51:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,354,1620716400"; d="scan'208";a="426229193" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga006.jf.intel.com with ESMTP; 26 Aug 2021 10:51:19 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Thu, 26 Aug 2021 10:51:19 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Thu, 26 Aug 2021 10:51:19 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10 via Frontend Transport; Thu, 26 Aug 2021 10:51:18 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.173) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Thu, 26 Aug 2021 10:51:18 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fRJA5wV+XTj7veLVvgthfxttvYZj2hyej4MHmngZT3bsfJj2FdgQ7yBDhbabMlDQE9dMH7YTMG91IQrInuElfmdl9JzUgPk7HuhYr5N+DQVk2Z2aWsEgPBMFmShKh8pWFLm2uV/CGqTG3QRXIrm4QvSFUIush12Us6yqDF7np1zfxKtxnykuCGzAAfdyJssVmJunUsdLSYY5Eha22Vv7kp+BOXl5RcfUhMuhaV8risbNCehd2xdkXH6FeJ3hMBO8VYOJOR/EMbbthKx29wuR1NkMJ3RtERmEqn/iJEa03mGvhNMRY+T5kdq0urm9CmEIcrgJwSUOsb3HBVJA82yT8g== 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-SenderADCheck; bh=lRKKFX0QX73F2bz6JeeUNsNhHQMZIiHalKEJ6Wuq0gg=; b=YAU1FGCDQwapfoSPKkrvz9Lv5JMv3QLSWVSF+mR7RerkbZVGoD6jto81W2Phpuv59QxDxtL6ZRsmfffnbX/FJ2MrFjgJ3FKvnKmjjrJLuzuk2LfXKp/yuDO2v5BEJRU3PuDOFzYecRa+X9BLWBWPCHxySRO0C3XmfYlZSOAsJnYK93BAQj5oglDWN1F5rJq4nVxTW7NMuXpHxx88Sq53Ry0k5f8mg2vDqk8by8N5N1oqk+y/CSoEq3Fe9LvsXeVp/EOKHpeQ8P52vuBtRK7rulfQ3M0TpCcEcF4wqtnDNTnDNXWqH084l/XjyTimUBGJ7xexeFMRvFdbadxAFvPd3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lRKKFX0QX73F2bz6JeeUNsNhHQMZIiHalKEJ6Wuq0gg=; b=xia4/7kQUeWQTbqXi+PIJT8u/5lJb1o4+uWO9HbJnW6KujN24j1rou6+FKeGtI5PwKHIKNoUcv84U1PCLCE8jt8xrIsKqYg0LAFq8NUWyhYC3Xaxk3nvrHHMRflhQDnTlhqRTUXv7Y6C8DCqiV0MrxDMHkFh/X+sn6opxGOo7mI= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by MW3PR11MB4697.namprd11.prod.outlook.com (2603:10b6:303:2c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.22; Thu, 26 Aug 2021 17:51:17 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::c98d:a1f9:48a8:8865]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::c98d:a1f9:48a8:8865%6]) with mapi id 15.20.4436.025; Thu, 26 Aug 2021 17:51:17 +0000 From: "Ni, Ray" To: "Lin, JackX" , "devel@edk2.groups.io" CC: "Chiu, Chasel" , "Dong, Eric" , "Yao, Jiewen" , "Chaganty, Rangasai V" , "Kuo, Donald" , "Kumar, Chandana C" Subject: Re: [edk2-platforms: PATCH V9] Platform/Intel: Correct CPU APIC IDs Thread-Topic: [edk2-platforms: PATCH V9] Platform/Intel: Correct CPU APIC IDs Thread-Index: AQHXlbG2HN6RM647b0G9DyAeDNfmIauGGSyQ Date: Thu, 26 Aug 2021 17:51:16 +0000 Message-ID: References: <20210820105338.606-1-JackX.Lin@intel.com> In-Reply-To: <20210820105338.606-1-JackX.Lin@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.100.41 dlp-reaction: no-action dlp-product: dlpe-windows authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 15dd2d91-e38a-442b-a1b2-08d968ba1acf x-ms-traffictypediagnostic: MW3PR11MB4697: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 86Oxw9TbY9DFmSxL7goIM0uhg9IXGfgIXdv0OW6MNKGLV4wc7dL6JEXLFQvhaZEiMfPPTlFhLMKPDCTT2XM+Fdkm0riTkii2XRdvyR+0X3g4RWaZqoTvVV/tFZGAR9kh99LIkK2YKblBFKq3TD8l9cce7PelqSqr5hbDvU1PF1VQgOUk5jmpZBG4025Y+cbk5142T91N/LxSQT07GBL7JfmkQHYOvMSMzAJfmfLKKYjzddOYqSjYvVP102168hDQbofaw/7ictYmaPQJb9cjZ+cmW6CaG7od4jfNPVz1TVTcXq3damizkxUgnBYeZmXgCqOdQM7oj3QAw6QTKTjnsz+FyhMI2OmoaSPGdBFXSoL6VvGrWNsvFXCcjzgoRbbrBDCega4cq4hv3kkJcpIwmnAgMK0KE4Ib64GYf4hkCMmNebFmlRi/ZdFlrVEknFkZ6ROp4qL0+e23JUXIbodDD9OAAC18TtuYW+cj8vXTZ6DhP/Urc7iFCldPJ7dHfO71sITZlDIeZYbivinYtKkyb/7NvuxiV9dW+0MBFGBC8HRymHtaaGcaUipybhZDkcPV/RpL+Yhm0Xpo91gUCzPpfSitHULNrtek/D+/IQqawo4GfZQZu9/AfMxOtQ2mpqTY2RM+LGTst09LO/RePPDjJAO4xVGQPznRbs+NoLv7Q1eCT4IKD9hFZ1kLBvhOA2rye9yWzirMhnSZP4sKOIHH+sbcQ3z4o0dYJJdz4DfSLk4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4930.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(6506007)(66476007)(26005)(86362001)(76116006)(19627235002)(5660300002)(7696005)(66556008)(30864003)(316002)(66446008)(64756008)(54906003)(508600001)(8676002)(107886003)(71200400001)(55016002)(66946007)(122000001)(9686003)(8936002)(83380400001)(2906002)(38100700002)(38070700005)(33656002)(186003)(4326008)(52536014)(110136005)(579004)(44824005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?dURFVtFcdcyVEJYwNrSQlXTVMol8zIXyu+yzapoS8ENNpPoxyo2nghMZZYbK?= =?us-ascii?Q?96I/tECDQiYcHPakpDHjlqCa8VmC8IBBfJcJGwZ7r10m45qvir+WVP0MJnWx?= =?us-ascii?Q?401eairfyhqfH69RDErBETtY81zhfckNIZ/h2awIDFD2vEjqAB8XWY3xGffO?= =?us-ascii?Q?yEYEY3soETA+IFMqjARfqNzepbmRuBRMtTYR74tXpd7VltXwrcSVdcmvJ9ue?= =?us-ascii?Q?gvT+HtKXcGgiC534hYf2z3F4enpfXHQEeYf/kylXIN52rp22bvqGHwqKjvCG?= =?us-ascii?Q?jNeu40LVT58NcRv9G53r/Ei9LuN2koWjADw7jx9r17ygEBrIkZ3f956T6dOd?= =?us-ascii?Q?F8a3PhXGEytfN3P4DbEmXDzgxB5c47lXAoWNUxHN49WiVmuoYLW+MVyDpzr4?= =?us-ascii?Q?MkMEbYe6B93nZTZ9Zn6ZG20XabDZlRWzPr8c8yWEBaj5iA7sc9fP062qkZ6W?= =?us-ascii?Q?krMlfyQ74OT1n2OolHeR4WopoU09Pw1wldSWle/IfMwVT5DHK5kMJq+nkwP2?= =?us-ascii?Q?s0V8qeLojyf+YgV9ieXKLdxo46KyDCqPJ2pM9Y49URxNBJpMQr6mql7RcbPS?= =?us-ascii?Q?RNcCPWpq0VHme+3RZeZbKiuRuPVGrdVzpmAu/dmaClcUHa2a4NyTZ/abgPax?= =?us-ascii?Q?yQckFoj0ZT6HA5lUKirGLPHju6dJKX3wCMX7/Ju7XMYlNyxKKFof+MVaox8Y?= =?us-ascii?Q?hY4SyoWMLj5GGdZE9ApCY56vhr6bsvSRaOYeZ28++mgcZvIj3hBiH0+ybf7X?= =?us-ascii?Q?bTmK4dhuxdVted/W2dxi+1OXhGpX/aJR7wycEs0XsaYIc21ck+tgOkZZg1Vn?= =?us-ascii?Q?vHUaRXzTyN4MjiEyh2W76GIKmy2A3x3D/7ujya5IxdFnv2YBDwdtdo1rlGU2?= =?us-ascii?Q?GuGNg9eM/MV9ONTfRsFUvwHqlpZMpaX+i+egaLi/H65WhMvW4EUvcsX5WFKN?= =?us-ascii?Q?6MXh6V4nqQ3C+m1yYbFHIb7o5WAe469hjhv7pRfbMlzGGTk3UdnKddnl4qUS?= =?us-ascii?Q?r6MMOzFLFW2f3y34CBSZzhSPRUZs3UgF38sqM3uA0Ycr4rGvKTk3gbOvkE7z?= =?us-ascii?Q?FYzdi89ycPuPaejxE/PkNixNPqylH3IbbazROcA9h1+xm9ldKQFMMhrvyFTj?= =?us-ascii?Q?eDMGadQICCbGN1MIqGlRY2evypcOuPFiDniPbmEwb/MxNZJ5ERG7XIEICp1v?= =?us-ascii?Q?nxiK3LUVfzQciQB++P8YXrJYrbMM602d5tjeoFnbHjyRDkCydC3WkE5k1An0?= =?us-ascii?Q?hTAlUshOgzFVFYrSOzfELOZEr94Fkp9OdK6wIXRejqaakrHnWVLkcPKW8Db7?= =?us-ascii?Q?Z8ZWmpVJPIWAYSrB6B9brWbd?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4930.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 15dd2d91-e38a-442b-a1b2-08d968ba1acf X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Aug 2021 17:51:16.6453 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: j9uKLf/RcCj2Z2w29MOQTGIH6Gqo0OCGfxs0M2LTALUwz/EINtYsi9jOnCuR41JbKT5y/tK11MWHdEIVLKOwJg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4697 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > + // > + // 5. Re-assigen AcpiProcessorId for AcpiProcessorUId uses purpose. > + // > + for (Socket =3D 0; Socket < MAX_SOCKET; Socket++) { > + for (CurrProcessor =3D 0, Index =3D 0; CurrProcessor < mNumberOfCpus= ; CurrProcessor++) { > + if (mCpuApicIdOrderTable[CurrProcessor].Flags && (mCpuApicIdOrderT= able[CurrProcessor].SocketNum =3D=3D Socket)) { > + mCpuApicIdOrderTable[CurrProcessor].AcpiProcessorId =3D (Process= orInfoBuffer.Location.Package << mNumOfBitShift) + > Index; > + Index++; > } > } > + } 1. I think you need to change above code to as below? UINTN IndexInSocket[MAX_SOCKET]; ZeroMem (IndexInSocket, sizeof (IndexInSocket)); for (Socket =3D 0; Socket < MAX_SOCKET; Socket++) { for (CurrProcessor =3D 0, Index =3D 0; CurrProcessor < mNumberOfCpus; Cur= rProcessor++) { if (mCpuApicIdOrderTable[CurrProcessor].Flags && (mCpuApicIdOrderTable= [CurrProcessor].SocketNum =3D=3D Socket)) { mCpuApicIdOrderTable[CurrProcessor].AcpiProcessorId =3D (ProcessorI= nfoBuffer.Location.Package << mNumOfBitShift) + IndexInSocket[Socket]; IndexInSocket[Socket]++; } } 2. Can you separate the code refinement change (looks like most of the chan= ges below) in a separate patch? (No more comments) >=20 > - //keep for debug purpose > - DEBUG ((EFI_D_ERROR, "APIC ID Order Table ReOrdered\n")); > - DebugDisplayReOrderTable(); > + //keep for debug purpose > + DEBUG ((DEBUG_INFO, "APIC ID Order Table ReOrdered\n")); > + DebugDisplayReOrderTable (mCpuApicIdOrderTable); >=20 > - mCpuOrderSorted =3D TRUE; > - } > + mCpuOrderSorted =3D TRUE; >=20 > return Status; > } > @@ -602,11 +493,11 @@ InitializeMadtHeader ( > } >=20 > Status =3D InitializeHeader ( > - &MadtHeader->Header, > - EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, > - EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION, > - 0 > - ); > + &MadtHeader->Header, > + EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, > + EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION, > + 0 > + ); > if (EFI_ERROR (Status)) { > return Status; > } > @@ -784,11 +675,11 @@ BuildAcpiTable ( > // Allocate the memory needed for the table. > // > Status =3D AllocateTable ( > - TableSpecificHdrLength, > - Structures, > - StructureCount, > - &InternalTable > - ); > + TableSpecificHdrLength, > + Structures, > + StructureCount, > + &InternalTable > + ); > if (EFI_ERROR (Status)) { > return Status; > } > @@ -871,18 +762,22 @@ InstallMadtFromScratch ( > NewMadtTable =3D NULL; > MaxMadtStructCount =3D 0; >=20 > - DetectApicIdMap(); > + mCpuApicIdOrderTable =3D AllocateZeroPool (mNumberOfCpus * sizeof (EFI= _CPU_ID_ORDER_MAP)); > + if (mCpuApicIdOrderTable =3D=3D NULL) { > + DEBUG ((DEBUG_ERROR, "Could not allocate mCpuApicIdOrderTable struct= ure pointer array\n")); > + return EFI_OUT_OF_RESOURCES; > + } >=20 > // Call for Local APIC ID Reorder > Status =3D SortCpuLocalApicInTable (); > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "SortCpuLocalApicInTable failed: %r\n", Status)= ); > + DEBUG ((DEBUG_ERROR, "SortCpuLocalApicInTable failed: %r\n", Status)= ); > goto Done; > } >=20 > MaxMadtStructCount =3D (UINT32) ( > - MAX_CPU_NUM + // processor local APIC structures > - MAX_CPU_NUM + // processor local x2APIC structures > + mNumberOfCpus + // processor local APIC structures > + mNumberOfCpus + // processor local x2APIC structures > 1 + PcdGet8(PcdPcIoApicCount) + // I/O APIC structures > 2 + // interrupt source override structures > 1 + // local APIC NMI structures > @@ -906,11 +801,11 @@ InstallMadtFromScratch ( > // > Status =3D InitializeMadtHeader (&MadtTableHeader); > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "InitializeMadtHeader failed: %r\n", Status)); > + DEBUG ((DEBUG_ERROR, "InitializeMadtHeader failed: %r\n", Status)); > goto Done; > } >=20 > - DEBUG ((EFI_D_INFO, "Number of CPUs detected =3D %d \n", mNumberOfCPUs= )); > + DEBUG ((DEBUG_INFO, "Number of CPUs detected =3D %d \n", mNumberOfCpus= )); >=20 > // > // Build Processor Local APIC Structures and Processor Local X2APIC St= ructures > @@ -923,7 +818,7 @@ InstallMadtFromScratch ( > ProcLocalX2ApicStruct.Reserved[0] =3D 0; > ProcLocalX2ApicStruct.Reserved[1] =3D 0; >=20 > - for (Index =3D 0; Index < MAX_CPU_NUM; Index++) { > + for (Index =3D 0; Index < mNumberOfCpus; Index++) { > // > // If x2APIC mode is not enabled, and if it is possible to express t= he > // APIC ID as a UINT8, use a processor local APIC structure. Otherwi= se, > @@ -936,10 +831,10 @@ InstallMadtFromScratch ( >=20 > ASSERT (MadtStructsIndex < MaxMadtStructCount); > Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &ProcLocalApicStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &ProcLocalApicStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > } else if (mCpuApicIdOrderTable[Index].ApicId !=3D 0xFFFFFFFF) { > ProcLocalX2ApicStruct.Flags =3D (UINT8) mCpuApicIdOrder= Table[Index].Flags; > ProcLocalX2ApicStruct.X2ApicId =3D mCpuApicIdOrderTable[In= dex].ApicId; > @@ -947,13 +842,13 @@ InstallMadtFromScratch ( >=20 > ASSERT (MadtStructsIndex < MaxMadtStructCount); > Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &ProcLocalX2ApicStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &ProcLocalX2ApicStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > } > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "CopyMadtStructure (local APIC/x2APIC) failed= : %r\n", Status)); > + DEBUG ((DEBUG_ERROR, "CopyMadtStructure (local APIC/x2APIC) failed= : %r\n", Status)); > goto Done; > } > } > @@ -965,44 +860,44 @@ InstallMadtFromScratch ( > IoApicStruct.Length =3D sizeof (EFI_ACPI_4_0_IO_APIC_STRUCTURE); > IoApicStruct.Reserved =3D 0; >=20 > - PcIoApicEnable =3D PcdGet32(PcdPcIoApicEnable); > + PcIoApicEnable =3D PcdGet32 (PcdPcIoApicEnable); >=20 > - if (FixedPcdGet32(PcdMaxCpuSocketCount) <=3D 4) { > + if (FixedPcdGet32 (PcdMaxCpuSocketCount) <=3D 4) { > IoApicStruct.IoApicId =3D PcdGet8(PcdIoApicId); > IoApicStruct.IoApicAddress =3D PcdGet32(PcdIoApicAddress= ); > IoApicStruct.GlobalSystemInterruptBase =3D 0; > ASSERT (MadtStructsIndex < MaxMadtStructCount); > Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &IoApicStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &IoApicStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n", = Status)); > + DEBUG ((DEBUG_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n", = Status)); > goto Done; > } > } >=20 > for (PcIoApicIndex =3D 0; PcIoApicIndex < PcdGet8(PcdPcIoApicCount); P= cIoApicIndex++) { > - PcIoApicMask =3D (1 << PcIoApicIndex); > - if ((PcIoApicEnable & PcIoApicMask) =3D=3D 0) { > - continue; > - } > + PcIoApicMask =3D (1 << PcIoApicIndex); > + if ((PcIoApicEnable & PcIoApicMask) =3D=3D 0) { > + continue; > + } >=20 > - IoApicStruct.IoApicId =3D (UINT8)(PcdGet8(PcdPcIo= ApicIdBase) + PcIoApicIndex); > - IoApicStruct.IoApicAddress =3D CurrentIoApicAddress; > - CurrentIoApicAddress =3D (CurrentIoApicAddress &= 0xFFFF8000) + 0x8000; > - IoApicStruct.GlobalSystemInterruptBase =3D (UINT32)(24 + (PcIoApic= Index * 8)); > - ASSERT (MadtStructsIndex < MaxMadtStructCount); > - Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &IoApicStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > - if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n"= , Status)); > - goto Done; > - } > + IoApicStruct.IoApicId =3D (UINT8)(PcdGet8(PcdPcIoAp= icIdBase) + PcIoApicIndex); > + IoApicStruct.IoApicAddress =3D CurrentIoApicAddress; > + CurrentIoApicAddress =3D (CurrentIoApicAddress & 0= xFFFF8000) + 0x8000; > + IoApicStruct.GlobalSystemInterruptBase =3D (UINT32)(24 + (PcIoApicIn= dex * 8)); > + ASSERT (MadtStructsIndex < MaxMadtStructCount); > + Status =3D CopyStructure ( > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &IoApicStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "CopyMadtStructure (I/O APIC) failed: %r\n", = Status)); > + goto Done; > + } > } >=20 > // > @@ -1021,12 +916,12 @@ InstallMadtFromScratch ( >=20 > ASSERT (MadtStructsIndex < MaxMadtStructCount); > Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &IntSrcOverrideStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &IntSrcOverrideStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "CopyMadtStructure (IRQ2 source override) faile= d: %r\n", Status)); > + DEBUG ((DEBUG_ERROR, "CopyMadtStructure (IRQ2 source override) faile= d: %r\n", Status)); > goto Done; > } >=20 > @@ -1040,12 +935,12 @@ InstallMadtFromScratch ( >=20 > ASSERT (MadtStructsIndex < MaxMadtStructCount); > Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &IntSrcOverrideStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &IntSrcOverrideStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "CopyMadtStructure (IRQ9 source override) faile= d: %r\n", Status)); > + DEBUG ((DEBUG_ERROR, "CopyMadtStructure (IRQ9 source override) faile= d: %r\n", Status)); > goto Done; > } >=20 > @@ -1060,12 +955,12 @@ InstallMadtFromScratch ( >=20 > ASSERT (MadtStructsIndex < MaxMadtStructCount); > Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &LocalApciNmiStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &LocalApciNmiStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "CopyMadtStructure (APIC NMI) failed: %r\n", St= atus)); > + DEBUG ((DEBUG_ERROR, "CopyMadtStructure (APIC NMI) failed: %r\n", St= atus)); > goto Done; > } >=20 > @@ -1084,10 +979,10 @@ InstallMadtFromScratch ( >=20 > ASSERT (MadtStructsIndex < MaxMadtStructCount); > Status =3D CopyStructure ( > - &MadtTableHeader.Header, > - (STRUCTURE_HEADER *) &LocalX2ApicNmiStruct, > - &MadtStructs[MadtStructsIndex++] > - ); > + &MadtTableHeader.Header, > + (STRUCTURE_HEADER *) &LocalX2ApicNmiStruct, > + &MadtStructs[MadtStructsIndex++] > + ); > if (EFI_ERROR (Status)) { > DEBUG ((DEBUG_ERROR, "CopyMadtStructure (x2APIC NMI) failed: %r\n"= , Status)); > goto Done; > @@ -1098,14 +993,14 @@ InstallMadtFromScratch ( > // Build Madt Structure from the Madt Header and collection of pointer= s in MadtStructs[] > // > Status =3D BuildAcpiTable ( > - (EFI_ACPI_DESCRIPTION_HEADER *) &MadtTableHeader, > - sizeof (EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER), > - MadtStructs, > - MadtStructsIndex, > - (UINT8 **)&NewMadtTable > - ); > + (EFI_ACPI_DESCRIPTION_HEADER *) &MadtTableHeader, > + sizeof (EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER= ), > + MadtStructs, > + MadtStructsIndex, > + (UINT8 **) &NewMadtTable > + ); > if (EFI_ERROR (Status)) { > - DEBUG ((EFI_D_ERROR, "BuildAcpiTable failed: %r\n", Status)); > + DEBUG ((DEBUG_ERROR, "BuildAcpiTable failed: %r\n", Status)); > goto Done; > } >=20 > @@ -1113,11 +1008,11 @@ InstallMadtFromScratch ( > // Publish Madt Structure to ACPI > // > Status =3D mAcpiTable->InstallAcpiTable ( > - mAcpiTable, > - NewMadtTable, > - NewMadtTable->Header.Length, > - &TableHandle > - ); > + mAcpiTable, > + NewMadtTable, > + NewMadtTable->Header.Length, > + &TableHandle > + ); >=20 > Done: > // > @@ -1136,6 +1031,10 @@ Done: > FreePool (NewMadtTable); > } >=20 > + if (mCpuApicIdOrderTable !=3D NULL) { > + FreePool (mCpuApicIdOrderTable); > + } > + > return Status; > } >=20 > @@ -1155,8 +1054,8 @@ InstallMcfgFromScratch ( > PciSegmentInfo =3D GetPciSegmentInfo (&SegmentCount); >=20 > McfgTable =3D AllocateZeroPool ( > - sizeof(EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS= _TABLE_HEADER) + > - > sizeof(EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_SPACE_BASE_ADDRESS_A= LLOCATION_STRUCTURE) * > SegmentCount > + sizeof (EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRES= S_TABLE_HEADER) + > + sizeof > (EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_SPACE_BASE_ADDRESS_ALLOCAT= ION_STRUCTURE) * > SegmentCount > ); > if (McfgTable =3D=3D NULL) { > DEBUG ((DEBUG_ERROR, "Could not allocate MCFG structure\n")); > @@ -1164,11 +1063,11 @@ InstallMcfgFromScratch ( > } >=20 > Status =3D InitializeHeader ( > - &McfgTable->Header, > - > EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_D= ESCRIPTION_TABLE_SIGNATURE, > - EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REVISION, > - 0 > - ); > + &McfgTable->Header, > + > EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_D= ESCRIPTION_TABLE_SIGNATURE, > + EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_REV= ISION, > + 0 > + ); > if (EFI_ERROR (Status)) { > return Status; > } > @@ -1192,11 +1091,11 @@ InstallMcfgFromScratch ( > // Publish Madt Structure to ACPI > // > Status =3D mAcpiTable->InstallAcpiTable ( > - mAcpiTable, > - McfgTable, > - McfgTable->Header.Length, > - &TableHandle > - ); > + mAcpiTable, > + McfgTable, > + McfgTable->Header.Length, > + &TableHandle > + ); >=20 > return Status; > } > @@ -1280,7 +1179,7 @@ PlatformUpdateTables ( > switch (Table->Signature) { >=20 > case EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE: > - ASSERT(FALSE); > + ASSERT (FALSE); > break; >=20 > case EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE: > @@ -1324,9 +1223,9 @@ PlatformUpdateTables ( > FadtHeader->XGpe1Blk.AccessSize =3D 0; > } >=20 > - DEBUG(( EFI_D_ERROR, "ACPI FADT table @ address 0x%x\n", Table )); > - DEBUG(( EFI_D_ERROR, " IaPcBootArch 0x%x\n", FadtHeader->IaPcBootAr= ch )); > - DEBUG(( EFI_D_ERROR, " Flags 0x%x\n", FadtHeader->Flags )); > + DEBUG ((DEBUG_INFO, "ACPI FADT table @ address 0x%x\n", Table)); > + DEBUG ((DEBUG_INFO, " IaPcBootArch 0x%x\n", FadtHeader->IaPcBootArc= h)); > + DEBUG ((DEBUG_INFO, " Flags 0x%x\n", FadtHeader->Flags)); > break; >=20 > case EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE: > @@ -1346,12 +1245,12 @@ PlatformUpdateTables ( > HpetBlockId.Bits.VendorId =3D HpetCapabilities.Bits.VendorId; > HpetTable->EventTimerBlockId =3D HpetBlockId.Uint32; > HpetTable->MainCounterMinimumClockTickInPeriodicMode =3D (UINT16)Hpe= tCapabilities.Bits.CounterClockPeriod; > - DEBUG(( EFI_D_ERROR, "ACPI HPET table @ address 0x%x\n", Table )); > - DEBUG(( EFI_D_ERROR, " HPET base 0x%x\n", PcdGet32 (PcdHpetBaseAddr= ess) )); > + DEBUG ((DEBUG_INFO, "ACPI HPET table @ address 0x%x\n", Table)); > + DEBUG ((DEBUG_INFO, " HPET base 0x%x\n", PcdGet32 (PcdHpetBaseAddre= ss))); > break; >=20 > case > EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_D= ESCRIPTION_TABLE_SIGNATURE: > - ASSERT(FALSE); > + ASSERT (FALSE); > break; >=20 > default: > @@ -1403,8 +1302,8 @@ IsHardwareChange ( > // pFADT->XDsdt > // > HWChangeSize =3D HandleCount + 1; > - HWChange =3D AllocateZeroPool( sizeof(UINT32) * HWChangeSize ); > - ASSERT( HWChange !=3D NULL ); > + HWChange =3D AllocateZeroPool (sizeof(UINT32) * HWChangeSize); > + ASSERT(HWChange !=3D NULL); >=20 > if (HWChange =3D=3D NULL) return; >=20 > @@ -1445,14 +1344,14 @@ IsHardwareChange ( > // Calculate CRC value with HWChange data. > // > Status =3D gBS->CalculateCrc32(HWChange, HWChangeSize, &CRC); > - DEBUG((DEBUG_INFO, "CRC =3D %x and Status =3D %r\n", CRC, Status)); > + DEBUG ((DEBUG_INFO, "CRC =3D %x and Status =3D %r\n", CRC, Status)); >=20 > // > // Set HardwareSignature value based on CRC value. > // > FacsPtr =3D (EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *)(UINTN)pFA= DT->FirmwareCtrl; > FacsPtr->HardwareSignature =3D CRC; > - FreePool( HWChange ); > + FreePool (HWChange); > } >=20 > VOID > @@ -1475,17 +1374,16 @@ UpdateLocalTable ( >=20 > if (Version !=3D EFI_ACPI_TABLE_VERSION_NONE) { > Status =3D mAcpiTable->InstallAcpiTable ( > - mAcpiTable, > - CurrentTable, > - CurrentTable->Length, > - &TableHandle > - ); > + mAcpiTable, > + CurrentTable, > + CurrentTable->Length, > + &TableHandle > + ); > ASSERT_EFI_ERROR (Status); > } > } > } >=20 > - > VOID > EFIAPI > AcpiEndOfDxeEvent ( > @@ -1493,16 +1391,14 @@ AcpiEndOfDxeEvent ( > VOID *ParentImageHandle > ) > { > - > if (Event !=3D NULL) { > - gBS->CloseEvent(Event); > + gBS->CloseEvent (Event); > } >=20 > - > // > // Calculate Hardware Signature value based on current platform config= urations > // > - IsHardwareChange(); > + IsHardwareChange (); > } >=20 > /** > @@ -1526,7 +1422,6 @@ InstallAcpiPlatform ( > EFI_STATUS Status; > EFI_EVENT EndOfDxeEvent; >=20 > - > Status =3D gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOI= D **)&mMpService); > ASSERT_EFI_ERROR (Status); >=20 > @@ -1550,19 +1445,19 @@ InstallAcpiPlatform ( > // Determine the number of processors > // > mMpService->GetNumberOfProcessors ( > - mMpService, > - &mNumberOfCPUs, > - &mNumberOfEnabledCPUs > - ); > - ASSERT (mNumberOfCPUs <=3D MAX_CPU_NUM && mNumberOfEnabledCPUs >=3D 1)= ; > - DEBUG ((DEBUG_INFO, "mNumberOfCPUs - %d\n", mNumberOfCPUs)); > + mMpService, > + &mNumberOfCpus, > + &mNumberOfEnabledCPUs > + ); > + > + DEBUG ((DEBUG_INFO, "mNumberOfCpus - %d\n", mNumberOfCpus)); > DEBUG ((DEBUG_INFO, "mNumberOfEnabledCPUs - %d\n", mNumberOfEnabledCPU= s)); >=20 > DEBUG ((DEBUG_INFO, "mX2ApicEnabled - 0x%x\n", mX2ApicEnabled)); > DEBUG ((DEBUG_INFO, "mForceX2ApicId - 0x%x\n", mForceX2ApicId)); >=20 > // support up to 64 threads/socket > - AsmCpuidEx(CPUID_EXTENDED_TOPOLOGY, 1, &mNumOfBitShift, NULL, NULL, NU= LL); > + AsmCpuidEx (CPUID_EXTENDED_TOPOLOGY, 1, &mNumOfBitShift, NULL, NULL, N= ULL); > mNumOfBitShift &=3D 0x1F; > DEBUG ((DEBUG_INFO, "mNumOfBitShift - 0x%x\n", mNumOfBitShift)); >=20 > diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h > b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h > index bd11f9e988..61f7470f80 100644 > --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h > +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.h > @@ -1,7 +1,7 @@ > /** @file > This is an implementation of the ACPI platform driver. >=20 > -Copyright (c) 2017, Intel Corporation. All rights reserved.
> +Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.
> SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > **/ > @@ -35,6 +35,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include > #include > #include > +#include > +#include >=20 > #include > #include > diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.i= nf > b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf > index 5d9c8cab50..95f6656af0 100644 > --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf > +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf > @@ -1,7 +1,7 @@ > ### @file > # Component information file for AcpiPlatform module > # > -# Copyright (c) 2017, Intel Corporation. All rights reserved.
> +# Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.
> # > # SPDX-License-Identifier: BSD-2-Clause-Patent > # > @@ -43,6 +43,8 @@ > PciSegmentInfoLib > AslUpdateLib > BoardAcpiTableLib > + SortLib > + LocalApicLib >=20 > [Pcd] > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiDefaultOemId > -- > 2.32.0.windows.2