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.web10.732.1631797518787489702 for ; Thu, 16 Sep 2021 06:05:19 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=mxZo+71e; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: ray.ni@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10108"; a="244936908" X-IronPort-AV: E=Sophos;i="5.85,298,1624345200"; d="scan'208";a="244936908" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Sep 2021 06:05:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.85,298,1624345200"; d="scan'208";a="651541529" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by orsmga005.jf.intel.com with ESMTP; 16 Sep 2021 06:05:17 -0700 Received: from fmsmsx608.amr.corp.intel.com (10.18.126.88) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 16 Sep 2021 06:05:17 -0700 Received: from fmsmsx604.amr.corp.intel.com (10.18.126.84) by fmsmsx608.amr.corp.intel.com (10.18.126.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12; Thu, 16 Sep 2021 06:05:17 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.12 via Frontend Transport; Thu, 16 Sep 2021 06:05:17 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.12; Thu, 16 Sep 2021 06:05:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kSq++rlMVDDCA2ArNr+r79ye1bKypKnKMjs7oDVoUSSjrUUylfGQ/yFLOjhYlRfor8y5jp2q1VkolZG4VfUra9hRyDHKg7NkNQRouPhiB2Zbv2dS7ofPlAB40ckxeMKPFm2zHeIX9o4iiB1pmUYpcSdl0ZFjXGrSf3pJdewg4975XyKf5qJ0w9Zgcbebia+mfCBRYjSxytn3tnng0Eit42ZqkyqJH+b8I0AfY92LHQpqF+tguSjKm7XAmRYdT9OC0hl0QnrBYfps9pyvXhrDMiVgc/MRwU9l4rpEdcwfLfqcTPOmAmpsnxIxXEcgn+unLcyUmPEeHnSEga4bncsIRg== 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; bh=NRbgatEnIu7WP3KIHqsO6xmLz2J5mekmKHISy5TzF14=; b=dWgEofr+yPmVPER/mi8DCO/zCkdq0wqMf2StnIq4CStxuvtLaSC2e585rEZQc4jyItZI0hBzYeuroSZJALDNHCYpDdjsDQ3Nm5KaCZ4hfDH6HkfkwvCzhxI/lhKru9Z5GVc1iYrKwkc8UBrLsvdrQ2RTdIgPWeWvTEKJrnLKybdWnomWyn1HehQASqu3JNA2mf5+NTHoYkzsKcR8qAKJkXaLEkYrCSYJwBOuvo6jrqwlQGFlGoDQaMrNnCci/vUN+1KdoVz98dtZoRFsg43OYVTzV0gTPQTNsEQ8LwJi84ZE0pDY8nje0SRebwK+VSp2ZUzi336yakTtvSgcwtF7BA== 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=NRbgatEnIu7WP3KIHqsO6xmLz2J5mekmKHISy5TzF14=; b=mxZo+71eYRI6gOA6Gtu6E5jyeDIeIDjbiOcA32X/pqacMA/pFoL5JWT4HKWxg0yINFntV3+fP1tfJt4rnX4F1ZxNHe5ILgB1Yk4aMHJfUn7VML3JirwD8o8a3g/AkyLVzAQWz8ssUxUcT0f/6Wdm9TkTVY5/OSncILgAW/CX3kw= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by MW3PR11MB4587.namprd11.prod.outlook.com (2603:10b6:303:58::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.14; Thu, 16 Sep 2021 13:05:13 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::50ce:c9a3:ab37:9fac]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::50ce:c9a3:ab37:9fac%9]) with mapi id 15.20.4500.019; Thu, 16 Sep 2021 13:05:13 +0000 From: "Ni, Ray" To: "Lou, Yun" , "devel@edk2.groups.io" CC: "Dong, Eric" , Laszlo Ersek , "Kumar, Rahul1" Subject: Re: [PATCH v2 2/2] UefiCpuPkg: Prevent from re-initializing CPU features during S3 resume Thread-Topic: [PATCH v2 2/2] UefiCpuPkg: Prevent from re-initializing CPU features during S3 resume Thread-Index: AQHXqt0SFzhZk0zwEU2rhyhn4Ne2pKumoTLQ Date: Thu, 16 Sep 2021 13:05:12 +0000 Message-ID: References: <20210916092712.4340-1-yun.lou@intel.com> <20210916092712.4340-2-yun.lou@intel.com> In-Reply-To: <20210916092712.4340-2-yun.lou@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: cbef8266-3044-430a-a5a3-08d979129ed2 x-ms-traffictypediagnostic: MW3PR11MB4587: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HyWOU3y3utQ1XPR2wzFSW4QoKNmRN5AVU0dUuOUcDBK4rvFUmJ7oDbopfzO6V6SF/WV1TxGUhNyLWLjZfFTrfi6RBLBTUoldkVCLcvF9HbIbzWyPETW4JThNSS6wckkjuoMNgb8kqB/OJ6hr210sJBJfzhR2VQu507kJErZ+b1RMJ0bwlhDp6DpnwM0gNtjLhe7rEVewzgxuAxJZ27vSdOYN0lZsdC7YE8FkRqWVpEAfR4BgK27zSGq9OTUXf4qmYc3kLFBhFifd/+Vhac2z54mmCUPU0OPV1ns2QoDrX5FIiAfh7Aog+vEiA64DN5O08TnkdW75ibxrBOVwDAmWVtTh7fM+Du7SqxTcq+vFbgc5oYvaqKIZct4ZXXl7dEpfZdAULZC/vdfVtEikfgfaEquUMqDyCo6+Q8gdsla9OmRRXZk5ewB0wzOaiGZ+bgg27AgWniKS0IPUjQ3iibkBuuaeZwWWQqnDEjuXmET7tXRpIOCHMt+kvad2vtt7cU0wOVxjZzsxeYAHk80gSgv/1GccqRlu1QFtRpb39pHSZUterqbikzYccYXYfeaMJkKXe8Yjph+qT+bzUdBq8qFjILCqKf3sVMGiWLTU5oVOLqlXYoZW8Uya1PWcKBKvCVmMWgcXmtzSu3D4RvQa7sFdcqVK2SN1IBk1CD0RjNEpLjtXb1wKxCE+HUlgkAfaj4sAr88c5COHaauixkvLGlFIu3jqQs/zvoYjPacxGR1ygq0QdgnlfWJapLE+QPWLixJzQ++EGmY6eNLk8Z9+N+dJPNKRvOGk8foKgjYnEHF1JCwhIvtWZUUK0Ak5O1S/uE2GPz1mhDhmTgDb18J+6OuBWQ== 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)(396003)(136003)(376002)(366004)(39860400002)(346002)(122000001)(38100700002)(9686003)(71200400001)(19627235002)(966005)(8936002)(55016002)(5660300002)(2906002)(53546011)(7696005)(6506007)(8676002)(66476007)(26005)(38070700005)(478600001)(66446008)(76116006)(186003)(66946007)(66556008)(83380400001)(64756008)(110136005)(86362001)(4326008)(54906003)(107886003)(33656002)(316002)(52536014);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?hO/y2MZgXr0tvNmBrbjxwDGYkb3VEXhHRp155oTTYpmsKcq8v+1NdecuSM7d?= =?us-ascii?Q?s+QdTLd656F0v4BF/WEtBKV8x30ZkBffq71PvKZgImswKYfXWJqXQ5manrPi?= =?us-ascii?Q?+Ko7MV9Tn+Ac9nGn/wEbSQcVGHkmBaXa1YRo74fZT5di7gZlo3FpEn139Rdq?= =?us-ascii?Q?jr0q+uRF9AUaA/ZARliNw3NkziiZRw8p4ThwyC4hucNpkAPlaC/9ckJTzMyh?= =?us-ascii?Q?EiY63bGPwkkmPdfZubekBCTNHexYS91K1GUBOj0a/RcmwWZZFaro7eXcDbpS?= =?us-ascii?Q?MmjAjAbRdyUXYLwOulYTLzF30X/fseMKjcVXqiP3SUy9BfwpoARC635w1jeD?= =?us-ascii?Q?kaqNmkGYtPs62yEzogSJTosjjb94tv1puo69toRvp7mmv/lIXsmGIn3yPmbN?= =?us-ascii?Q?eZoZmIRdBnzZ3cOw0QeWBwgTdyGrLkdGrUoaB3ntVn2TZeNASE1k/Wtg4QoY?= =?us-ascii?Q?RaH2/IC5gBFwnxWzX2e4y2gVHooXH30MNz6v3uLdeNkIBv1yF9015fQdWQxW?= =?us-ascii?Q?jyYzRG+HR9xoOzPFXF/HhsLF/C7EjOapXD+KzJYXAS+6GHUjOhF8eqoG7x5N?= =?us-ascii?Q?WTYcgwFejJ6z5jL+eBAzdaIlierL2rRa5Rs4etqzJwbyYI1/xF0p4wp5kCY2?= =?us-ascii?Q?aXG0gwkkS1ko7F9VdI2knM26uKXK+0ydzJwvBxoz2vIob/DzDzC2TOD77JDh?= =?us-ascii?Q?KmhqpncEGyqVI48S18B7RyrHb2TUxn21gfBvDeMZUOafPdzKP+ytx/qIuqzA?= =?us-ascii?Q?BzGiQ4MRQyjK5SeooWWo+7J6q5cfXT/3cfLrfOIcd/w67One3zBEl9/ZVE5b?= =?us-ascii?Q?FIhiOyr25tfZp/8kxD1p0OXfQDIjx3Px2KowJymnt17/OzXHrN3Al5Kl6suS?= =?us-ascii?Q?yn3V8l42Ix71cigzK7deXdsARKktxyM38ZvcdqmnUX+Hit+NvvTIL9NZgsnw?= =?us-ascii?Q?9uEGbqjJqaKQOeDNzYPuSaZDVcWiBBpzQh0TN1M0ozH21NvToOHL+z+ez1a7?= =?us-ascii?Q?bHmaq4jASWRoMPcwfLY4i4WqrVg0CEvnc+jcSuyBPEDAkAMuSoTdxzK3psag?= =?us-ascii?Q?boty4wkqvwiiA0wLJ3rgQQwFsaYih4ObmJ0Hit8+7I5L9iw/C0NgONyBEnPb?= =?us-ascii?Q?y/7LBHMMZdlvx6pkuYeIZSYptRMqW0z2lwKQNGZ0B3tAsYAp/X1r0EAyHxXk?= =?us-ascii?Q?JAFpPeKIiLW27UnBDctA9Wsmp2Zdgo+lRv4p5Evo6GRH/JODWsQF/aMdjKX5?= =?us-ascii?Q?xReb11z6ucjt7W/1lAoRbbyIjNKtYyxuFgKoYt3AZomqjnKhlpM1Wk8nskOx?= =?us-ascii?Q?ta5xHpyNef3TwXL4n9U6k5j5?= 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: cbef8266-3044-430a-a5a3-08d979129ed2 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Sep 2021 13:05:12.8930 (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: 4FMB2/zkwDD3nsXrCdkkkoWYxVRvRetikVhsGgHKu9neANTdULsc9btiHFTW3yRJdvrMA+RSi+uaCRTXCkMDFw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4587 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 Reviewed-by: Ray Ni > -----Original Message----- > From: Lou, Yun > Sent: Thursday, September 16, 2021 5:27 PM > To: devel@edk2.groups.io > Cc: Lou, Yun ; Ni, Ray ; Dong, Eric = ; Laszlo Ersek > ; Kumar, Rahul1 > Subject: [PATCH v2 2/2] UefiCpuPkg: Prevent from re-initializing CPU feat= ures during S3 resume >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3621 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3631 >=20 > Current CPU feature initialization design: > During normal boot, CpuFeaturesPei module (inside FSP) initializes the > CPU features. During S3 boot, CpuFeaturesPei module does nothing, and > CpuSmm driver (in SMRAM) initializes CPU features instead. >=20 > This code change prevents CpuSmm driver from re-initializing CPU > features during S3 resume if CpuFeaturesPei module has done the same > initialization. >=20 > In addition, EDK2 contains DxeIpl PEIM that calls S3RestoreConfig2 PPI > during S3 boot and this PPI eventually calls CpuSmm driver (in SMRAM) to > initialize the CPU features, so "EDK2 + FSP" does not have the CPU > feature initialization issue during S3 boot. But "coreboot" does not > contain DxeIpl PEIM and the issue appears, unless > "PcdCpuFeaturesInitOnS3Resume" is set to TRUE. >=20 > Signed-off-by: Jason Lou > Cc: Ray Ni > Cc: Eric Dong > Cc: Laszlo Ersek > Cc: Rahul Kumar > --- > UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c | 34 ++++++++++++-------- > UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf | 3 +- > 2 files changed, 23 insertions(+), 14 deletions(-) >=20 > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c b/UefiCpuPkg/PiSmmCpuDxeSm= m/CpuS3.c > index 2873cba083..2496abb392 100644 > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c > @@ -1152,23 +1152,31 @@ GetAcpiCpuData ( > mAcpiCpuData.ApMachineCheckHandlerBase =3D (EFI_PHYSICAL_ADDRESS)(UINT= N)MachineCheckHandlerForAp; >=20 >=20 >=20 > ZeroMem (&mAcpiCpuData.CpuFeatureInitData, sizeof (CPU_FEATURE_INIT_DA= TA)); >=20 > - CopyCpuFeatureInitDatatoSmram (&mAcpiCpuData.CpuFeatureInitData, &Acpi= CpuData->CpuFeatureInitData); >=20 >=20 >=20 > - CpuStatus =3D &mAcpiCpuData.CpuFeatureInitData.CpuStatus; >=20 > + if (!PcdGetBool (PcdCpuFeaturesInitOnS3Resume)) { >=20 > + // >=20 > + // If the CPU features will not be initialized by CpuFeaturesPei mod= ule during >=20 > + // next ACPI S3 resume, copy the CPU features initialization data in= to SMRAM, >=20 > + // which will be consumed in SmmRestoreCpu during next S3 resume. >=20 > + // >=20 > + CopyCpuFeatureInitDatatoSmram (&mAcpiCpuData.CpuFeatureInitData, &Ac= piCpuData->CpuFeatureInitData); >=20 >=20 >=20 > - mCpuFlags.CoreSemaphoreCount =3D AllocateZeroPool ( >=20 > - sizeof (UINT32) * CpuStatus->PackageC= ount * >=20 > - CpuStatus->MaxCoreCount * CpuStatus->= MaxThreadCount >=20 > - ); >=20 > - ASSERT (mCpuFlags.CoreSemaphoreCount !=3D NULL); >=20 > + CpuStatus =3D &mAcpiCpuData.CpuFeatureInitData.CpuStatus; >=20 >=20 >=20 > - mCpuFlags.PackageSemaphoreCount =3D AllocateZeroPool ( >=20 > - sizeof (UINT32) * CpuStatus->Packa= geCount * >=20 > - CpuStatus->MaxCoreCount * CpuStatu= s->MaxThreadCount >=20 > - ); >=20 > - ASSERT (mCpuFlags.PackageSemaphoreCount !=3D NULL); >=20 > + mCpuFlags.CoreSemaphoreCount =3D AllocateZeroPool ( >=20 > + sizeof (UINT32) * CpuStatus->Packag= eCount * >=20 > + CpuStatus->MaxCoreCount * CpuStatus= ->MaxThreadCount >=20 > + ); >=20 > + ASSERT (mCpuFlags.CoreSemaphoreCount !=3D NULL); >=20 >=20 >=20 > - InitializeSpinLock((SPIN_LOCK*) &mCpuFlags.MemoryMappedLock); >=20 > + mCpuFlags.PackageSemaphoreCount =3D AllocateZeroPool ( >=20 > + sizeof (UINT32) * CpuStatus->Pac= kageCount * >=20 > + CpuStatus->MaxCoreCount * CpuSta= tus->MaxThreadCount >=20 > + ); >=20 > + ASSERT (mCpuFlags.PackageSemaphoreCount !=3D NULL); >=20 > + >=20 > + InitializeSpinLock((SPIN_LOCK*) &mCpuFlags.MemoryMappedLock); >=20 > + } >=20 > } >=20 >=20 >=20 > /** >=20 > diff --git a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf b/UefiCpuPkg/Pi= SmmCpuDxeSmm/PiSmmCpuDxeSmm.inf > index 76b1462996..0e88071c70 100644 > --- a/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf > +++ b/UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.inf > @@ -4,7 +4,7 @@ > # This SMM driver performs SMM initialization, deploy SMM Entry Vector, >=20 > # provides CPU specific services in SMM. >=20 > # >=20 > -# Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.
>=20 > +# Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.
>=20 > # Copyright (c) 2017, AMD Incorporated. All rights reserved.
>=20 > # >=20 > # SPDX-License-Identifier: BSD-2-Clause-Patent >=20 > @@ -134,6 +134,7 @@ > gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmCodeAccessCheckEnable ## CO= NSUMES >=20 > gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmSyncMode ## CO= NSUMES >=20 > gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmShadowStackSize ## SO= METIMES_CONSUMES >=20 > + gUefiCpuPkgTokenSpaceGuid.PcdCpuFeaturesInitOnS3Resume ## CO= NSUMES >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdAcpiS3Enable ## CO= NSUMES >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask = ## CONSUMES >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdNullPointerDetectionPropertyMask = ## CONSUMES >=20 > -- > 2.28.0.windows.1