From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <bounce+27952+118838+7686176+12367111@groups.io>
Received: from mail05.groups.io (mail05.groups.io [45.79.224.7])
	by spool.mail.gandi.net (Postfix) with ESMTPS id 1B45E740035
	for <rebecca@openfw.io>; Mon, 13 May 2024 02:08:04 +0000 (UTC)
DKIM-Signature: a=rsa-sha256; bh=pf5yHQi0LwyIS0mxo4dPkePdX4ATu4188a64XkNcs3I=;
 c=relaxed/simple; d=groups.io;
 h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:msip_labels:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type;
 s=20240206; t=1715566083; v=1;
 b=v05G1sU/PJfaHiaSVDl+fEXY3V08q/OJNdUvaXIj99Ke/1AXO6YZIYWyQDHljASZ6UUikOT6
 hejgWvR8xFyLgMSTqeqNS/SC8WhkZ8ow0UHhaNrH6CW3HSij2Ke+2YjlOIITmVVfXtfXpa0ZptW
 ObR1Ne5HG/LM3TXTBVN4ZZKhNumiSsr4wdy31Og7mWL5R/x2xcBQdxZp/Sh84BdwcQuGuc4ckya
 LqL9m5eDBDWhvnStTSwHGe7Gz3mG+XNqvOEwPuM0znTSzIkJs5BaIueLNifMprtlPvV0twugxG6
 ry6U2LDCPnCn80xzcvY8qEiEwj5N2FMMnvg24CCMdEvkw==
X-Received: by 127.0.0.2 with SMTP id t2jsYY7687511x35pWB5qAVS; Sun, 12 May 2024 19:08:03 -0700
X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17])
 by mx.groups.io with SMTP id smtpd.web10.50850.1715566078031890372
 for <devel@edk2.groups.io>;
 Sun, 12 May 2024 19:07:58 -0700
X-CSE-ConnectionGUID: kv+woBmTTtGKH0VCtvpT7g==
X-CSE-MsgGUID: kQcAIpbsR5GXH1VSx++1nQ==
X-IronPort-AV: E=McAfee;i="6600,9927,11071"; a="11618412"
X-IronPort-AV: E=Sophos;i="6.08,157,1712646000"; 
   d="scan'208,217";a="11618412"
X-Received: from fmviesa004.fm.intel.com ([10.60.135.144])
  by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2024 19:07:58 -0700
X-CSE-ConnectionGUID: 3fx8oxkZT3qzTe+2XppUog==
X-CSE-MsgGUID: qZ/Zxp38TK62CyBa5oPhyA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.08,157,1712646000"; 
   d="scan'208,217";a="34744150"
X-Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14])
  by fmviesa004.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 12 May 2024 19:07:57 -0700
X-Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by
 ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2507.35; Sun, 12 May 2024 19:07:56 -0700
X-Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by
 orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id
 15.1.2507.35 via Frontend Transport; Sun, 12 May 2024 19:07:56 -0700
X-Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101)
 by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server
 (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.1.2507.35; Sun, 12 May 2024 19:07:56 -0700
X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com (2603:10b6:208:470::14)
 by MN2PR11MB4584.namprd11.prod.outlook.com (2603:10b6:208:264::16) with
 Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Mon, 13 May
 2024 02:07:55 +0000
X-Received: from MN6PR11MB8244.namprd11.prod.outlook.com
 ([fe80::41a4:c775:32e6:76a8]) by MN6PR11MB8244.namprd11.prod.outlook.com
 ([fe80::41a4:c775:32e6:76a8%4]) with mapi id 15.20.7544.052; Mon, 13 May 2024
 02:07:55 +0000
From: "Ni, Ray" <ray.ni@intel.com>
To: "Tan, Dun" <dun.tan@intel.com>, "devel@edk2.groups.io"
	<devel@edk2.groups.io>
CC: "Kumar, Rahul R" <rahul.r.kumar@intel.com>, Gerd Hoffmann
	<kraxel@redhat.com>, "Wu, Jiaxin" <jiaxin.wu@intel.com>
Subject: Re: [edk2-devel] [PATCH 05/18] UefiCpuPkg: LoadMtrrData for all cpu in S3Resume
Thread-Topic: [PATCH 05/18] UefiCpuPkg: LoadMtrrData for all cpu in S3Resume
Thread-Index: AQHaosIayM+Ka1fksEuLHkTDbrjGabGUbykr
Date: Mon, 13 May 2024 02:07:55 +0000
Message-ID: <MN6PR11MB824436428804D42D95EE29A78CE22@MN6PR11MB8244.namprd11.prod.outlook.com>
References: <20240510100827.1903-1-dun.tan@intel.com>
 <20240510100827.1903-6-dun.tan@intel.com>
In-Reply-To: <20240510100827.1903-6-dun.tan@intel.com>
Accept-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
msip_labels: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: MN6PR11MB8244:EE_|MN2PR11MB4584:EE_
x-ms-office365-filtering-correlation-id: a1cbef84-d67b-4d90-7477-08dc72f180b6
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam-message-info: =?us-ascii?Q?AQNJM8IIEdUFmIIeu6R1X7KjCTo1OKe/FBm7t1gUaRtgUSzjWmNr43VIl9Ki?=
 =?us-ascii?Q?40l1ZXfdVFyqBvVG3PJj6nBT573ma2ZllS4lvmgfn8ZSQBlwxDlTFl8Glxty?=
 =?us-ascii?Q?1GZd3vWKNNmWYV3556j+k1aJBNRE6qY3zb4p3o72sFV8jrbNJfyhhb7UBJWT?=
 =?us-ascii?Q?5OM39xWp8lGu+CFeJopA/btfDHat5/mA39dL3BUdQxsTyvhUwkFvtzF+FHNb?=
 =?us-ascii?Q?NGRNW+o2B+Gzm/lJBWWGlge533zRjc39Eh+vjLiOum6bDXhlebl7lFY5HUc/?=
 =?us-ascii?Q?+vIh/8KyaDMwGayGNy5a7gG9I2gUP1ZNxcxoC1LsPtBYE1NYVXnWzhSa/A+O?=
 =?us-ascii?Q?xUmVkt00cX/hNO2lasDFKKVI2MBqfpff+04ylhPSvM8Np5016cC01aVanHme?=
 =?us-ascii?Q?ZwMJyeGcH+9v3izmQrNOPGSQCPEWXYPqaG0pouEoHJYxMxCOAbOd1Y+dRbhZ?=
 =?us-ascii?Q?2Uytf5Qf8wuUUN5F5XYWcSPZZeJeRAYuN93NRKuNl++ihjXkzvSghAyje3jI?=
 =?us-ascii?Q?F1gSmd8ZzNiwAe5Rr4+QFLNQI+nXWZWJXAuxRP9d98lu0UHJlePe91/X8fuk?=
 =?us-ascii?Q?cpsNGyWIieUqYBovpLirKqWwUnVMxAJF1x/E7k5Z4t5CEMi5wGp2uram4YBi?=
 =?us-ascii?Q?rZOST4w6yzOd3NmJsgMmUhJW8C0bRNifvungBJXBRfEM5l4mQyid1PEkO0hn?=
 =?us-ascii?Q?ufeC0g+zRN7t5WMbItSGxscGRsYrPX8IE1e6AL2ynaAxrnPKDtIJf+7VqTcm?=
 =?us-ascii?Q?CPszEMDkmu4Tw+th9sTGLGE8kwuHH2ghD+Y249IluBEsipD8ZdzbG5dVo0t/?=
 =?us-ascii?Q?tTlUU6AvOo5q+8BrhFoHnHhC5W7Z/GGPhshIFUu3iyFVTRPJrhk7XHQjviKi?=
 =?us-ascii?Q?1u9mrpcaGgl9XQLjQBEdbxy2nC3eriDKgLjO473OfDTTAO29gBPaTBk9pCYh?=
 =?us-ascii?Q?4sxFzZfSWLnjAzRZ2TWv5SC3ClK9EWGxNNdsjGl/FuHjPDVxQtMezXzrBKE+?=
 =?us-ascii?Q?UhJHV016ER/hUJvLbDF4T0RKDc2wSvKhjWXHLR+cT2rDt1l3CFd3lUoXESU5?=
 =?us-ascii?Q?3LSyqoeWdy32Eoo6YmZG6H3aOzsWbh+DO5tVQtic5YU3GV1HQDCrUmxmZhMQ?=
 =?us-ascii?Q?YSRINPIvFeZvPSb82YIKyMOFKbTXb24dZRs279Lsa6sSrQ7g+6e9rTjQ2TUh?=
 =?us-ascii?Q?q9f7YRIgTc+wk6Vc1t5erzcobyOqDpceFJlUYwH6XxIosxOL/D+pi/kSoeX8?=
 =?us-ascii?Q?1OYcUlvegF5K5oWuQljperNZYqxqheb6xD0yAk4ez8LHgZzvbeqOYQWtmQUX?=
 =?us-ascii?Q?G/YWVvqLd2QWyG+M6ofqNrGedpMumX6IOFyQumfXa0zSuw=3D=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?FeT7uBBgAEc47x1KppgH0WfHZ5DG3ckW7Dn7iDKc9ttMeW5tTD1XJqwD2eIN?=
 =?us-ascii?Q?xGMynrANowpcIlTzm8V09iVGoJkKA7pXvFuTVFdrXG0TVrDkzx1/jJNQ++LX?=
 =?us-ascii?Q?uXb2fMH6b0er5sCMoCWfygXmJk3N4G2Ook5qscsm3TAhKDsVwlxlzyNLjGii?=
 =?us-ascii?Q?HDT4DKuVK+cV0RamjbHz78aNpWHkKmR4gMPE+PZGbWQITtP28MrctK72M5pi?=
 =?us-ascii?Q?oHZCivZIrcZ2z4T1wi0hi95QeAMsijeXo4I8/DQsKBjF1E/8eRs52kAlyOiu?=
 =?us-ascii?Q?XwBS8nW3GfsxTRb+/yanfBPWifWh5UY4S7VmuZsiThb/spvwFFUWc6KFOTHb?=
 =?us-ascii?Q?SP0iFIW+joaDUZg+Bms6lKr764qreCfFP3llegpVlR/PxCiCv4aVTJVZvQbM?=
 =?us-ascii?Q?5wtzuO+KtvGWHlMUcTA4qJvMAQduBT4Ad3GnM9AeL6dIP2dy/zUNEw35SMuI?=
 =?us-ascii?Q?BVHYFr1buBh+tQiAfWKmF3T2Ef4EOuVUaezfS+Aur3zpMslq3+TomB0Ay9Ys?=
 =?us-ascii?Q?qu8hBHmGb8uio2fqDBDKzdpvyIQmV3FbS3LYK1hLkmwJoh0FIWF8vy9UjOX4?=
 =?us-ascii?Q?MqkAB6JAYtrR2whMo6wJ7VA2a+uVClKqlhRA9JN7e+nZ4gjhzhsqA6oUlmzZ?=
 =?us-ascii?Q?8OoxMaWQx8wRHeg2roIlf+6bfdaWrVaElN3aHacqeOXZ0hSt06RGTzkbORKQ?=
 =?us-ascii?Q?QwD5bAfzGyK/ayOy8L8QIM7FCiCUejjcqzJ64vLMfD590wEoF1z5EEfLOj5G?=
 =?us-ascii?Q?66P7CiRVJG0MmFpIhAGXrmqQAxSPQkz2O79BIksh0bmv5CNRsVmYk8JY0M16?=
 =?us-ascii?Q?UOOmTZDtH5a6OUivsQ8rWO5ZDavlwMbwwkWsiaUmU/uvFbKkbJ61mrQnWm03?=
 =?us-ascii?Q?D220FJZ7qr772o3qJELCJFQgXZwVJz+HM/2IBrQQw5ODD9+BMnH0n2JMFGoO?=
 =?us-ascii?Q?CXZy5n0GvtH1bkv+IZ7bbseQGDTZORCzVALZg24cvzP5b2Qkev7CpPY6aeY+?=
 =?us-ascii?Q?4vhQDagXwGI22ngRcDsZkzN56NSTau5ntAoouDDPq5Z1mS6t/YyZ7Pf7wnSm?=
 =?us-ascii?Q?+9lb41Jlvzd3zQj3zbXDFSBoqzXbUr5yfMP9oicK1eed61K8oJvKk1tCJlQO?=
 =?us-ascii?Q?vR3x2Z2rT8LK7mYcXBXPzRDvlVH0aQQ0l9DK9gVmB4vEjAfApjIbDtmsudLC?=
 =?us-ascii?Q?idb9frr44DdZg4bEojaIsFyPccoBLxqdHRfDPuGijXlaucuxMrSix/M8NbRc?=
 =?us-ascii?Q?veq3OZYXSOfBAGHkKO9B8ScIXkpmVoGkoYhc+/WO+5CiukI+u1HgXQrN2QDN?=
 =?us-ascii?Q?WwSzU0fk4EL3cRUgLJCCYbXdTG14TB/ydPfw2nz9nji+bvufdyZjbzLXNgLb?=
 =?us-ascii?Q?Qb1lKCt2Eqb5IVvUizbCwhGUtWU5xXVqTHDChMt0bqzUcsrkPZ3ACnWo05Yz?=
 =?us-ascii?Q?uHW5jyDN0tPOVCpPyqDoXVGYAUhe3JDbcj3pDyQrncbfkvls7bWlQjx8+Lm/?=
 =?us-ascii?Q?ds0GiIVmHGWARgT7eWRUzJGMKsgmwtSJVRYWL+vZfBvU8/I9aoVmkJCBgNw6?=
 =?us-ascii?Q?kBjdgWKV/CA2NvINBLg=3D?=
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: MN6PR11MB8244.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a1cbef84-d67b-4d90-7477-08dc72f180b6
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 May 2024 02:07:55.1498
 (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: 62YMA3nbWz0yh7Kj4Yn8VYjhBgEpIPDDuhbssnXwLn9wulE1XKXayxl7VxmByTz2JhKuBqgwE/MAU1E1+b7QFg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4584
X-OriginatorOrg: intel.com
Precedence: Bulk
List-Subscribe: <mailto:devel+subscribe@edk2.groups.io>
List-Help: <mailto:devel+help@edk2.groups.io>
Sender: devel@edk2.groups.io
List-Id: <devel.edk2.groups.io>
Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io
Resent-Date: Sun, 12 May 2024 19:07:58 -0700
Resent-From: ray.ni@intel.com
Reply-To: devel@edk2.groups.io,ray.ni@intel.com
List-Unsubscribe-Post: List-Unsubscribe=One-Click
List-Unsubscribe: <https://edk2.groups.io/g/devel/leave/12367111/7686176/1913456212/plugh>
X-Gm-Message-State: VrYtumpNLvFxe5IRPIFwWGUHx7686176AA=
Content-Language: en-US
Content-Type: multipart/alternative;
	boundary="_000_MN6PR11MB824436428804D42D95EE29A78CE22MN6PR11MB8244namp_"
X-GND-Status: LEGIT
Authentication-Results: spool.mail.gandi.net;
	dkim=pass header.d=groups.io header.s=20240206 header.b="v05G1sU/";
	dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none);
	spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io

--_000_MN6PR11MB824436428804D42D95EE29A78CE22MN6PR11MB8244namp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Reviewed-by: Ray Ni <ray.ni@intel.com>



Thanks,
Ray
________________________________
From: Tan, Dun <dun.tan@intel.com>
Sent: Friday, May 10, 2024 18:08
To: devel@edk2.groups.io <devel@edk2.groups.io>
Cc: Ni, Ray <ray.ni@intel.com>; Kumar, Rahul R <rahul.r.kumar@intel.com>; G=
erd Hoffmann <kraxel@redhat.com>; Wu, Jiaxin <jiaxin.wu@intel.com>
Subject: [PATCH 05/18] UefiCpuPkg: LoadMtrrData for all cpu in S3Resume

In this commit, S3Resume.c wakeup all Aps to run
LoadMtrrData for all cpu before transfer to CpuS3.c
in smm cpu driver. The MtrrSetting table can be restored
by gEdkiiS3MtrrSettingGuid which is saved by lockbox in
PEI phase. This can avoid waking up APs in CpuS3.c.

Signed-off-by: Dun Tan <dun.tan@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Jiaxin Wu <jiaxin.wu@intel.com>
---
 UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c       | 49 +++++++++++++=
++++++++++++++++++++++++++++++++++++
 UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf |  2 ++
 2 files changed, 51 insertions(+)

diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c b/UefiCpuPkg=
/Universal/Acpi/S3Resume2Pei/S3Resume.c
index 4cf676fb3e..3e85eab28f 100644
--- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
+++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c
@@ -39,6 +39,7 @@
 #include <Library/DebugAgentLib.h>
 #include <Library/LocalApicLib.h>
 #include <Library/ReportStatusCodeLib.h>
+#include <Library/MtrrLib.h>

 #include <Library/HobLib.h>
 #include <Library/LockBoxLib.h>
@@ -938,6 +939,20 @@ S3ResumeExecuteBootScript (
   CpuDeadLoop ();
 }

+/**
+  Sync up the MTRR values for all processors.
+
+  @param[in] MtrrTable  Address of MTRR setting.
+**/
+VOID
+EFIAPI
+LoadMtrrData (
+  IN VOID  *MtrrTable
+  )
+{
+  MtrrSetAllMtrrs (MtrrTable);
+}
+
 /**
   Restores the platform to its preboot configuration for an S3 resume and
   jumps to the OS waking vector.
@@ -990,6 +1005,7 @@ S3RestoreConfig2 (
   BOOLEAN                        InterruptStatus;
   IA32_CR0                       Cr0;
   EDKII_PEI_MP_SERVICES2_PPI     *MpService2Ppi;
+  MTRR_SETTINGS                  MtrrTable;

   TempAcpiS3Context                 =3D 0;
   TempEfiBootScriptExecutorVariable =3D 0;
@@ -1082,6 +1098,39 @@ S3RestoreConfig2 (
       Status =3D SmmAccess->Open ((EFI_PEI_SERVICES **)GetPeiServicesTable=
Pointer (), SmmAccess, Index);
     }

+    //
+    // Get MP Services2 Ppi to pass it to Smm S3.
+    //
+    Status =3D PeiServicesLocatePpi (
+               &gEdkiiPeiMpServices2PpiGuid,
+               0,
+               NULL,
+               (VOID **)&MpService2Ppi
+               );
+    ASSERT_EFI_ERROR (Status);
+
+    //
+    // Restore MTRR setting
+    //
+    VarSize =3D sizeof (MTRR_SETTINGS);
+    Status  =3D RestoreLockBox (
+                &gEdkiiS3MtrrSettingGuid,
+                &MtrrTable,
+                &VarSize
+                );
+    ASSERT_EFI_ERROR (Status);
+
+    //
+    // Sync up the MTRR values for all processors.
+    //
+    Status =3D MpService2Ppi->StartupAllCPUs (
+                              MpService2Ppi,
+                              (EFI_AP_PROCEDURE)LoadMtrrData,
+                              0,
+                              (VOID *)&MtrrTable
+                              );
+    ASSERT_EFI_ERROR (Status);
+
     SmramDescriptor  =3D (EFI_SMRAM_DESCRIPTOR *)GET_GUID_HOB_DATA (GuidHo=
b);
     SmmS3ResumeState =3D (SMM_S3_RESUME_STATE *)(UINTN)SmramDescriptor->Cp=
uStart;

diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf b/Uefi=
CpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
index 9c9b6f3db3..890c588aa8 100644
--- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
+++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf
@@ -67,6 +67,7 @@
   LocalApicLib
   ReportStatusCodeLib
   LockBoxLib
+  MtrrLib

 [Guids]
   gEfiBootScriptExecutorVariableGuid            ## SOMETIMES_CONSUMES ## U=
NDEFINED # LockBox
@@ -79,6 +80,7 @@
   ## SOMETIMES_PRODUCES ## UNDEFINED # Install PPI
   ## SOMETIMES_CONSUMES ## UNDEFINED # Used to do smm communication
   gEdkiiS3SmmInitDoneGuid
+  gEdkiiS3MtrrSettingGuid

 [Ppis]
   gEfiPeiS3Resume2PpiGuid                       ## PRODUCES
--
2.31.1.windows.1



-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#118838): https://edk2.groups.io/g/devel/message/118838
Mute This Topic: https://groups.io/mt/106018126/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-



--_000_MN6PR11MB824436428804D42D95EE29A78CE22MN6PR11MB8244namp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<style type=3D"text/css" style=3D"display:none;"> P {margin-top:0;margin-bo=
ttom:0;} </style>
</head>
<body dir=3D"ltr">
<div class=3D"elementToProof" style=3D"margin: 0px; font-family: Aptos, Apt=
os_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-=
size: 11pt; color: rgb(0, 0, 0);">
Reviewed-by: Ray Ni &lt;ray.ni@intel.com&gt;</div>
<div style=3D"margin: 0px; font-family: Aptos, Aptos_EmbeddedFont, Aptos_MS=
FontService, Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0,=
 0, 0);">
<br>
<br>
</div>
<div class=3D"elementToProof" style=3D"font-family: Aptos, Aptos_EmbeddedFo=
nt, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 11pt; c=
olor: rgb(0, 0, 0);">
<br>
</div>
<div id=3D"Signature">
<div style=3D"font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, =
Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Thanks,</div>
<div style=3D"font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, =
Calibri, Helvetica, sans-serif; font-size: 11pt; color: rgb(0, 0, 0);">
Ray</div>
</div>
<div id=3D"appendonsend"></div>
<hr style=3D"display:inline-block;width:98%" tabindex=3D"-1">
<div id=3D"divRplyFwdMsg" dir=3D"ltr"><font face=3D"Calibri, sans-serif" st=
yle=3D"font-size:11pt" color=3D"#000000"><b>From:</b> Tan, Dun &lt;dun.tan@=
intel.com&gt;<br>
<b>Sent:</b> Friday, May 10, 2024 18:08<br>
<b>To:</b> devel@edk2.groups.io &lt;devel@edk2.groups.io&gt;<br>
<b>Cc:</b> Ni, Ray &lt;ray.ni@intel.com&gt;; Kumar, Rahul R &lt;rahul.r.kum=
ar@intel.com&gt;; Gerd Hoffmann &lt;kraxel@redhat.com&gt;; Wu, Jiaxin &lt;j=
iaxin.wu@intel.com&gt;<br>
<b>Subject:</b> [PATCH 05/18] UefiCpuPkg: LoadMtrrData for all cpu in S3Res=
ume</font>
<div>&nbsp;</div>
</div>
<div class=3D"BodyFragment"><font size=3D"2"><span style=3D"font-size:11pt;=
">
<div class=3D"PlainText">In this commit, S3Resume.c wakeup all Aps to run<b=
r>
LoadMtrrData for all cpu before transfer to CpuS3.c<br>
in smm cpu driver. The MtrrSetting table can be restored<br>
by gEdkiiS3MtrrSettingGuid which is saved by lockbox in<br>
PEI phase. This can avoid waking up APs in CpuS3.c.<br>
<br>
Signed-off-by: Dun Tan &lt;dun.tan@intel.com&gt;<br>
Cc: Ray Ni &lt;ray.ni@intel.com&gt;<br>
Cc: Rahul Kumar &lt;rahul1.kumar@intel.com&gt;<br>
Cc: Gerd Hoffmann &lt;kraxel@redhat.com&gt;<br>
Cc: Jiaxin Wu &lt;jiaxin.wu@intel.com&gt;<br>
---<br>
&nbsp;UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp; | 49 +++++++++++++++++++++++++++++++++++++++++++++++++<br>
&nbsp;UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf |&nbsp; 2 ++<=
br>
&nbsp;2 files changed, 51 insertions(+)<br>
<br>
diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c b/UefiCpuPkg=
/Universal/Acpi/S3Resume2Pei/S3Resume.c<br>
index 4cf676fb3e..3e85eab28f 100644<br>
--- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c<br>
+++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c<br>
@@ -39,6 +39,7 @@<br>
&nbsp;#include &lt;Library/DebugAgentLib.h&gt;<br>
&nbsp;#include &lt;Library/LocalApicLib.h&gt;<br>
&nbsp;#include &lt;Library/ReportStatusCodeLib.h&gt;<br>
+#include &lt;Library/MtrrLib.h&gt;<br>
&nbsp;<br>
&nbsp;#include &lt;Library/HobLib.h&gt;<br>
&nbsp;#include &lt;Library/LockBoxLib.h&gt;<br>
@@ -938,6 +939,20 @@ S3ResumeExecuteBootScript (<br>
&nbsp;&nbsp; CpuDeadLoop ();<br>
&nbsp;}<br>
&nbsp;<br>
+/**<br>
+&nbsp; Sync up the MTRR values for all processors.<br>
+<br>
+&nbsp; @param[in] MtrrTable&nbsp; Address of MTRR setting.<br>
+**/<br>
+VOID<br>
+EFIAPI<br>
+LoadMtrrData (<br>
+&nbsp; IN VOID&nbsp; *MtrrTable<br>
+&nbsp; )<br>
+{<br>
+&nbsp; MtrrSetAllMtrrs (MtrrTable);<br>
+}<br>
+<br>
&nbsp;/**<br>
&nbsp;&nbsp; Restores the platform to its preboot configuration for an S3 r=
esume and<br>
&nbsp;&nbsp; jumps to the OS waking vector.<br>
@@ -990,6 +1005,7 @@ S3RestoreConfig2 (<br>
&nbsp;&nbsp; BOOLEAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp; InterruptStatus;<br>
&nbsp;&nbsp; IA32_CR0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp; Cr0;<br>
&nbsp;&nbsp; EDKII_PEI_MP_SERVICES2_PPI&nbsp;&nbsp;&nbsp;&nbsp; *MpService2=
Ppi;<br>
+&nbsp; MTRR_SETTINGS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MtrrTable;<br>
&nbsp;<br>
&nbsp;&nbsp; TempAcpiS3Context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =3D 0;<br>
&nbsp;&nbsp; TempEfiBootScriptExecutorVariable =3D 0;<br>
@@ -1082,6 +1098,39 @@ S3RestoreConfig2 (<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Status =3D SmmAccess-&gt;Open ((EFI_PE=
I_SERVICES **)GetPeiServicesTablePointer (), SmmAccess, Index);<br>
&nbsp;&nbsp;&nbsp;&nbsp; }<br>
&nbsp;<br>
+&nbsp;&nbsp;&nbsp; //<br>
+&nbsp;&nbsp;&nbsp; // Get MP Services2 Ppi to pass it to Smm S3.<br>
+&nbsp;&nbsp;&nbsp; //<br>
+&nbsp;&nbsp;&nbsp; Status =3D PeiServicesLocatePpi (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; &amp;gEdkiiPeiMpServices2PpiGuid,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; 0,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; NULL,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; (VOID **)&amp;MpService2Ppi<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp; );<br>
+&nbsp;&nbsp;&nbsp; ASSERT_EFI_ERROR (Status);<br>
+<br>
+&nbsp;&nbsp;&nbsp; //<br>
+&nbsp;&nbsp;&nbsp; // Restore MTRR setting<br>
+&nbsp;&nbsp;&nbsp; //<br>
+&nbsp;&nbsp;&nbsp; VarSize =3D sizeof (MTRR_SETTINGS);<br>
+&nbsp;&nbsp;&nbsp; Status&nbsp; =3D RestoreLockBox (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp; &amp;gEdkiiS3MtrrSettingGuid,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp; &amp;MtrrTable,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp; &amp;VarSize<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp; );<br>
+&nbsp;&nbsp;&nbsp; ASSERT_EFI_ERROR (Status);<br>
+<br>
+&nbsp;&nbsp;&nbsp; //<br>
+&nbsp;&nbsp;&nbsp; // Sync up the MTRR values for all processors.<br>
+&nbsp;&nbsp;&nbsp; //<br>
+&nbsp;&nbsp;&nbsp; Status =3D MpService2Ppi-&gt;StartupAllCPUs (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; MpService2Ppi,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; (EFI_AP_PROCEDURE)LoadMtrrData,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; 0,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; (VOID *)&amp;MtrrTable<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
;&nbsp;&nbsp;&nbsp;&nbsp; );<br>
+&nbsp;&nbsp;&nbsp; ASSERT_EFI_ERROR (Status);<br>
+<br>
&nbsp;&nbsp;&nbsp;&nbsp; SmramDescriptor&nbsp; =3D (EFI_SMRAM_DESCRIPTOR *)=
GET_GUID_HOB_DATA (GuidHob);<br>
&nbsp;&nbsp;&nbsp;&nbsp; SmmS3ResumeState =3D (SMM_S3_RESUME_STATE *)(UINTN=
)SmramDescriptor-&gt;CpuStart;<br>
&nbsp;<br>
diff --git a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf b/Uefi=
CpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf<br>
index 9c9b6f3db3..890c588aa8 100644<br>
--- a/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf<br>
+++ b/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf<br>
@@ -67,6 +67,7 @@<br>
&nbsp;&nbsp; LocalApicLib<br>
&nbsp;&nbsp; ReportStatusCodeLib<br>
&nbsp;&nbsp; LockBoxLib<br>
+&nbsp; MtrrLib<br>
&nbsp;<br>
&nbsp;[Guids]<br>
&nbsp;&nbsp; gEfiBootScriptExecutorVariableGuid&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ## SOMETIMES_CONSUMES ## UNDEFINED #=
 LockBox<br>
@@ -79,6 +80,7 @@<br>
&nbsp;&nbsp; ## SOMETIMES_PRODUCES ## UNDEFINED # Install PPI<br>
&nbsp;&nbsp; ## SOMETIMES_CONSUMES ## UNDEFINED # Used to do smm communicat=
ion<br>
&nbsp;&nbsp; gEdkiiS3SmmInitDoneGuid<br>
+&nbsp; gEdkiiS3MtrrSettingGuid<br>
&nbsp;<br>
&nbsp;[Ppis]<br>
&nbsp;&nbsp; gEfiPeiS3Resume2PpiGuid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp; ## PRODUCES<br>
-- <br>
2.31.1.windows.1<br>
<br>
</div>
</span></font></div>
</body>
</html>


<div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div>
<hr>


Groups.io Links:<p>


 =20
    You receive all messages sent to this group.
 =20
 =20


<p>
<a target=3D"_blank" href=3D"https://edk2.groups.io/g/devel/message/118838"=
>View/Reply Online (#118838)</a> |


 =20

|

  <a target=3D"_blank" href=3D"https://groups.io/mt/106018126/7686176">Mute=
 This Topic</a>


| <a href=3D"https://edk2.groups.io/g/devel/post">New Topic</a>

<br>




<a href=3D"https://edk2.groups.io/g/devel/editsub/7686176">Your Subscriptio=
n</a> |
<a href=3D"mailto:devel+owner@edk2.groups.io">Contact Group Owner</a> |

<a href=3D"https://edk2.groups.io/g/devel/unsub">Unsubscribe</a>

 [rebecca@openfw.io]<br>
<div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div>


--_000_MN6PR11MB824436428804D42D95EE29A78CE22MN6PR11MB8244namp_--