From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.31048.1599191298364029245 for ; Thu, 03 Sep 2020 20:48:18 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=SoyLmpgk; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: jiewen.yao@intel.com) IronPort-SDR: 5u5Z7ul9BFhsBQ36fdF7ikj17Sn+0Lgc0ouRAgMSkR32pVZwjq9jIw0XnUnxvIYsWXa7kWbN6l qzMJuuHq1/jg== X-IronPort-AV: E=McAfee;i="6000,8403,9733"; a="157696859" X-IronPort-AV: E=Sophos;i="5.76,388,1592895600"; d="scan'208";a="157696859" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Sep 2020 20:48:17 -0700 IronPort-SDR: 3SFoFxwrhI2oAjT0GR1Isz+QMYisSPvUFkgLhQ5ZJ6hFRzwA+ikqW9ooTFfEcrQLO2YDHxF54n XmHuaOLyzuYw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,388,1592895600"; d="scan'208";a="376090458" Received: from fmsmsx606.amr.corp.intel.com ([10.18.126.86]) by orsmga001.jf.intel.com with ESMTP; 03 Sep 2020 20:48:16 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 3 Sep 2020 20:48:16 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 3 Sep 2020 20:48:16 -0700 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.41) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Thu, 3 Sep 2020 20:48:15 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MsgudfCs4vYQCUwbQl2W73K5UsgD0su1SHzOdQnI6B5Z1dEAlL0Y4wUaWUxxAvpLPC5K8nrrY16KELfRm4Z0S1KOIBxDXMeMvIw6qDhFJCL6We4nx3Ab7QJpR1NGRT89lxA/w0mV8NiProqjjctNB1S9d97gSwnJ8rYSRajl9DPxHANogOIMWGcRXWFsi6vlDxeC8faJKSaWbDsDxe+H/WZs/kyRlcKL5ApPF06vS4iiwG9GQjLUhr8muGgBdFVssI+ZEVLpcwRovAcXGqUx05W+lakwuSTIV/J4+ANMZMCLhwaCT+vXxND5ml5bwDy4pW8dcLbfIJu0WaZciMTzpg== 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=S59xbN6HhlbU738cgRNeFVurAWVpnNbhjps6M72+hRM=; b=TiSRV3NhzyBXTPN3jUtLuYyx6oOmux8ttPjwkUA7mc8jRA1SBGEfDwr2juAndF6XKVO0eEnYW3o2vuCR0Fix0UGss45dVLgR7+IDAmfjWWCXjM2BfHFY3xgjHEeC+Rzj8vjSNMQBANiUGJiqYmS/qMugv9N6a7Zouj3IiuZbbsqCqydDNdURDCuI1KUfgOh90sAGmckHcipkdGB8KjCzByBreadX8PhOkfWbp+vnOhVavu9/eAt9ztpZ2U4yPL15noGqIKd9kCnw37Z3znPllsUQwpvXNuvjeZwVdV9AeM5jt43Eale0hiuRV7W/P4ucniw+DMG4C4d6XiM4DXenVw== 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=S59xbN6HhlbU738cgRNeFVurAWVpnNbhjps6M72+hRM=; b=SoyLmpgk9BvInqTIdX1ZN3IjwDfNKvjQFkqXUT2GLqIfe2CVSGbx5Og8YpXosnAqyU70CLvv4Hjuo+yYPaF0/Id2WGgOoms4hoX1AXDDpae9yb80f4e718u4b/5HJbd4PeKnHwyrvyWoc7XTOzruc7bfBTXIV6snh1TiP59iEHI= Received: from CY4PR11MB1288.namprd11.prod.outlook.com (2603:10b6:903:23::8) by CY4PR11MB1733.namprd11.prod.outlook.com (2603:10b6:903:11e::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.15; Fri, 4 Sep 2020 03:48:13 +0000 Received: from CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::163:9209:a92d:812]) by CY4PR11MB1288.namprd11.prod.outlook.com ([fe80::163:9209:a92d:812%6]) with mapi id 15.20.3348.016; Fri, 4 Sep 2020 03:48:13 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "Dong, Eric" CC: "Ni, Ray" , Laszlo Ersek Subject: Re: [edk2-devel] [PATCH v3] UefiCpuPkg/MpInitLib: Add check for Cr3/GDT/IDT. Thread-Topic: [edk2-devel] [PATCH v3] UefiCpuPkg/MpInitLib: Add check for Cr3/GDT/IDT. Thread-Index: AQHWgl4FXUOlegeRCkirGblrYO6MoalX1zrg Date: Fri, 4 Sep 2020 03:48:13 +0000 Message-ID: References: <20200904015156.1273-1-eric.dong@intel.com> In-Reply-To: <20200904015156.1273-1-eric.dong@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.202] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: df4eb1ac-a82f-42de-e30b-08d850855989 x-ms-traffictypediagnostic: CY4PR11MB1733: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:256; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kKbAq7i60MW3jhfXHgSOpZ7hldauNujqNzKh540b8/riyi6MZ5dCYr0fI3r9J1wmGw5FyPm+2Mqu43fUBIzgPHXX1P2PtnFMFlRNlrs4nU7eYdsoUWfXGlvntA1ZaEhwF5ZtV2PrDuEosG3YxGL/3swT33OXtxUOZ/DIn3Py2P0EG+dug5/i6c6YtEzWKZbNEiNvlx0MUbkI8Nfdy/fhuwxICT0sg438YHidyWIafW1ruha5WXsEnlT91s5MH+SoUPtbylCPMBAyx7l7LOODd9UP96MtuKer5EucZqKbuH7M7l3JL8bK7OcwHuBvmaw565RiAJ+ZpwbBmue+96uBbQxx1/Jnk1ZcgQt5fmbBQm1GtcQBro6098f2ePK2q1xCE6d4RLQnKrq90Nz6b1RrsA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1288.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(346002)(376002)(39860400002)(396003)(136003)(366004)(6636002)(186003)(83380400001)(66476007)(86362001)(66556008)(4326008)(52536014)(316002)(66446008)(53546011)(64756008)(6506007)(966005)(8676002)(66946007)(76116006)(26005)(7696005)(2906002)(19627235002)(110136005)(478600001)(33656002)(8936002)(9686003)(55016002)(5660300002)(54906003)(71200400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: 9kIVfS4El1xSY0g/wHpuQMNmzP+SVjKxrF8iE7aDf8akkOpgkI1GT6lMe9sZyLkk1dH7bqDyZxDfIwqbAxWnXnv1vbQFejLIp6AUmFZp/8PHDeLKQRaoX7q/RgQHtwKz4lbyp8cC9rXxZQmR52s5iP7Jt46uzfAvi4kU7Lvrrb4QTgHmLw6TiWB/iK1/pbPnAvhe7TT/rRyqmIPWB9xW7gBS5qdnhERM58cSAXR7BOj+fOvsBii/n4YegfjBldc8QGdLZQzzAOdcIk07I1slyeQUJsABLz1dmkgQcdvOgNx780TUT5i+LEJas7fURmkDYFofNTC/TCEdfItFWmRm014OjlURSqHjUtS5cx9UYfAPYCdD9IhoetOAWdZvuqGW4bPVAj1Pn5UPB52TQJHC4xUjPDcA0NNwtlPQH1yk3knAtX9+hWZHBO2FeLEnL3NxC4U3KAVy/iVgh77hL0lFhkK9VW5SXg3pm6yZcUjYwxoGHJcNfhopYfmhhDAYKy8YG8lLlw+n5PONnmBx2MQKqOx1Uewi6/ngViZTswjwJdiem3M/h6P4/2dD62fviiDKc2s+LNfPcJy2RO2WWtY1XdgNMUyx/904FbYIFiH3CLSf75WovtTUhULMFewopL0iSsrQFUmFImd7AIFZPD0Mqg== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1288.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: df4eb1ac-a82f-42de-e30b-08d850855989 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Sep 2020 03:48:13.4587 (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: IFRiED3QO0xXev1EBph+w+BsRP+JFCFXHsJaL9GVABTWqoUzV8dsp1sZPydkpcwLEN3L8Ue87gKB9ka3SU6fdg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1733 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable I provided the feedback in https://bugzilla.tianocore.org/show_bug.cgi?id= =3D2954. I suggest we justify the requirement at first. Thank you Yao Jiewen > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Dong, Eric > Sent: Friday, September 4, 2020 9:52 AM > To: devel@edk2.groups.io > Cc: Ni, Ray ; Laszlo Ersek > Subject: [edk2-devel] [PATCH v3] UefiCpuPkg/MpInitLib: Add check for > Cr3/GDT/IDT. >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2954 >=20 > AP needs to run from real mode to 32bit mode to LONG mode. Page table > (pointed by Cr3) and GDT are necessary to set up to correct value when > CPU execution mode is switched to LONG mode. > AP uses the same location page table (Cr3) and GDT as what BSP uses. > But when the page table or GDT is above 4GB, it's impossible for CPU > to use because GDTR.base and Cr3 are 32bits before switching to LONG > mode. >=20 > This patch adds check for the Cr3, GDT and IDT to not above 4G limitation= . >=20 > The check is avoided -- assumed successful -- if the new > PcdEnableCpuApCr3GdtIdtCheck is FALSE (which is the default). The reason > is that the 32-bit requirement is always ensured by edk2 itself; the > requirement is only possibly invalidated by a particular UEFI shell > application that manually moves the GDT/IDT/CR3 above 4GB. Platforms > that don't intend to be compatible with such UEFI applications need not > set the PCD to TRUE. >=20 > If the PCD is TRUE and the check fails, then the StartupAllAPs(), > StartupThisAP(), SwitchBSP() and EnableDisableAP() MP service APIs are > rejected at once. Reporting an error immediately is more graceful than > hanging when the APs attempt to switch to long mode. >=20 > Signed-off-by: Eric Dong > Cc: Ray Ni > Cc: Laszlo Ersek > --- >=20 > V3: >=20 > only add check for the DxeMplib, no need for PeiMpLib. >=20 >=20 >=20 > V2: >=20 > Change the check point. Just in the different caller to make the logic >=20 > clear. V1 patch add check just before the use of the code. It make the >=20 > logic complicated. >=20 >=20 > UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf | 1 + > UefiCpuPkg/Library/MpInitLib/DxeMpLib.c | 97 +++++++++++++++++++ > UefiCpuPkg/UefiCpuPkg.dec | 4 + > UefiCpuPkg/UefiCpuPkg.uni | 2 + > 4 files changed, 104 insertions(+) >=20 > diff --git a/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > index 1771575c69..7792df516e 100644 > --- a/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > +++ b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > @@ -74,5 +74,6 @@ > gUefiCpuPkgTokenSpaceGuid.PcdCpuApStatusCheckIntervalInMicroSeconds > ## CONSUMES >=20 > gUefiCpuPkgTokenSpaceGuid.PcdSevEsIsEnabled #= # CONSUMES >=20 > gUefiCpuPkgTokenSpaceGuid.PcdSevEsWorkAreaBase #= # > SOMETIMES_CONSUMES >=20 > + gUefiCpuPkgTokenSpaceGuid.PcdEnableCpuApCr3GdtIdtCheck #= # > CONSUMES >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdCpuStackGuard #= # > CONSUMES >=20 > gEfiMdeModulePkgTokenSpaceGuid.PcdGhcbBase #= # > CONSUMES >=20 > diff --git a/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > index 2c00d72dde..332b4447bb 100644 > --- a/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c > @@ -29,6 +29,66 @@ VOID *mReservedApLoopFunc =3D NULL; > UINTN mReservedTopOfApStack; >=20 > volatile UINT32 mNumberToFinish =3D 0; >=20 >=20 >=20 > +/** >=20 > + Check whether Cr3/GDT/IDT value valid for the APs. >=20 > + >=20 > + @retval TRUE Pass the check. >=20 > + @retval FALSE Fail the check. >=20 > + >=20 > +**/ >=20 > +BOOLEAN >=20 > +ValidCr3GdtIdtCheck ( >=20 > + VOID >=20 > + ) >=20 > +{ >=20 > + IA32_DESCRIPTOR Gdtr; >=20 > + IA32_DESCRIPTOR Idtr; >=20 > + >=20 > + if (!PcdGetBool (PcdEnableCpuApCr3GdtIdtCheck)) { >=20 > + return TRUE; >=20 > + } >=20 > + >=20 > + // >=20 > + // AP needs to run from real mode to 32bit mode to LONG mode. Page tab= le >=20 > + // (pointed by Cr3) and GDT are necessary to set up to correct value w= hen >=20 > + // CPU execution mode is switched to LONG mode. IDT also necessary if = the >=20 > + // exception happened. >=20 > + // AP uses the same location page table (Cr3) and GDT/IDT as what BSP = uses. >=20 > + // But when the page table or GDT is above 4GB, it's impossible for CP= U >=20 > + // to use because GDTR.base and Cr3 are 32bits before switching to LON= G >=20 > + // mode. >=20 > + // Here add check for the Cr3, GDT.Base and range, IDT.Base and range = are >=20 > + // not above 32 bits limitation. >=20 > + // >=20 > + if (AsmReadCr3 () >=3D BASE_4GB) { >=20 > + return FALSE; >=20 > + } >=20 > + >=20 > + AsmReadGdtr (&Gdtr); >=20 > + // >=20 > + // Here code needs to check both Gdtr.Base and Gdtr.Base + Gdtr.Limit >=20 > + // below BASE_4GB, but Gdtr.Base + Gdtr.Limit below BASE_4GB also mean= s >=20 > + // Gdtr.Base below BASE_4GB. so here just add Gdtr.Base + Gdtr.Limit >=20 > + // check. >=20 > + // >=20 > + if (Gdtr.Base + Gdtr.Limit >=3D BASE_4GB) { >=20 > + return FALSE; >=20 > + } >=20 > + >=20 > + AsmReadIdtr (&Idtr); >=20 > + // >=20 > + // Here code needs to check both Idtr.Base and Idtr.Base + Idtr.Limit >=20 > + // below BASE_4GB, but Idtr.Base + Idtr.Limit below BASE_4GB also mean= s >=20 > + // Idtr.Base below BASE_4GB. so here just add Idtr.Base + Idtr.Limit >=20 > + // check. >=20 > + // >=20 > + if (Idtr.Base + Idtr.Limit >=3D BASE_4GB) { >=20 > + return FALSE; >=20 > + } >=20 > + >=20 > + return TRUE; >=20 > +} >=20 > + >=20 > /** >=20 > Enable Debug Agent to support source debugging on AP function. >=20 >=20 >=20 > @@ -394,6 +454,15 @@ MpInitChangeApLoopCallback ( > { >=20 > CPU_MP_DATA *CpuMpData; >=20 >=20 >=20 > + // >=20 > + // Check the Cr3/GDT/IDT before waking up AP. >=20 > + // If the check return fail, it will block later >=20 > + // OS boot, so halt the system here. >=20 > + // >=20 > + if (!ValidCr3GdtIdtCheck ()) { >=20 > + CpuDeadLoop (); >=20 > + } >=20 > + >=20 > CpuMpData =3D GetCpuMpData (); >=20 > CpuMpData->PmCodeSegment =3D GetProtectedModeCS (); >=20 > CpuMpData->Pm16CodeSegment =3D GetProtectedMode16CS (); >=20 > @@ -676,6 +745,13 @@ MpInitLibStartupAllAPs ( > { >=20 > EFI_STATUS Status; >=20 >=20 >=20 > + // >=20 > + // Check whether Cr3/GDT/IDT valid for AP. >=20 > + // >=20 > + if (!ValidCr3GdtIdtCheck()) { >=20 > + return EFI_UNSUPPORTED; >=20 > + } >=20 > + >=20 > // >=20 > // Temporarily stop checkAllApsStatus for avoid resource dead-lock. >=20 > // >=20 > @@ -783,6 +859,13 @@ MpInitLibStartupThisAP ( > { >=20 > EFI_STATUS Status; >=20 >=20 >=20 > + // >=20 > + // Check whether Cr3/GDT/IDT valid for AP. >=20 > + // >=20 > + if (!ValidCr3GdtIdtCheck()) { >=20 > + return EFI_UNSUPPORTED; >=20 > + } >=20 > + >=20 > // >=20 > // temporarily stop checkAllApsStatus for avoid resource dead-lock. >=20 > // >=20 > @@ -839,6 +922,13 @@ MpInitLibSwitchBSP ( > EFI_TIMER_ARCH_PROTOCOL *Timer; >=20 > UINT64 TimerPeriod; >=20 >=20 >=20 > + // >=20 > + // Check whether Cr3/GDT/IDT valid for AP. >=20 > + // >=20 > + if (!ValidCr3GdtIdtCheck()) { >=20 > + return EFI_UNSUPPORTED; >=20 > + } >=20 > + >=20 > TimerPeriod =3D 0; >=20 > // >=20 > // Locate Timer Arch Protocol >=20 > @@ -912,6 +1002,13 @@ MpInitLibEnableDisableAP ( > EFI_STATUS Status; >=20 > BOOLEAN TempStopCheckState; >=20 >=20 >=20 > + // >=20 > + // Check whether Cr3/GDT/IDT valid for AP. >=20 > + // >=20 > + if (!ValidCr3GdtIdtCheck()) { >=20 > + return EFI_UNSUPPORTED; >=20 > + } >=20 > + >=20 > TempStopCheckState =3D FALSE; >=20 > // >=20 > // temporarily stop checkAllAPsStatus for initialize parameters. >=20 > diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec > index d83c084467..08ec36e76c 100644 > --- a/UefiCpuPkg/UefiCpuPkg.dec > +++ b/UefiCpuPkg/UefiCpuPkg.dec > @@ -148,6 +148,10 @@ > # @Prompt Lock SMM Feature Control MSR. >=20 >=20 > gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmFeatureControlMsrLock|TRUE|BOOL > EAN|0x3213210B >=20 >=20 >=20 > + ## This value specifies whether need to check the Cr3/GDT/IDT value fo= r the > APs. >=20 > + # @Prompt Enable Cr3/GDT/IDT value check for the APs. >=20 > + > gUefiCpuPkgTokenSpaceGuid.PcdEnableCpuApCr3GdtIdtCheck|FALSE|BOOLEA > N|0x30000044 >=20 > + >=20 > [PcdsFixedAtBuild] >=20 > ## List of exception vectors which need switching stack. >=20 > # This PCD will only take into effect if PcdCpuStackGuard is enabled. >=20 > diff --git a/UefiCpuPkg/UefiCpuPkg.uni b/UefiCpuPkg/UefiCpuPkg.uni > index 219c1963bf..3461a83003 100644 > --- a/UefiCpuPkg/UefiCpuPkg.uni > +++ b/UefiCpuPkg/UefiCpuPkg.uni > @@ -96,6 +96,8 @@ >=20 >=20 > #string > STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuSmmFeatureControlMsrLock_PROMP > T #language en-US "Lock SMM Feature Control MSR" >=20 >=20 >=20 > +#string > STR_gUefiCpuPkgTokenSpaceGuid_PcdEnableCpuApCr3GdtIdtCheck_PROMPT > #language en-US "Enable Cr3/GDT/IDT value check for the APs" >=20 > + >=20 > #string > STR_gUefiCpuPkgTokenSpaceGuid_PcdCpuSmmFeatureControlMsrLock_HELP > #language en-US "Lock SMM Feature Control MSR?

\n" >=20 > = "TRUE - locked.
\n" >=20 > = "FALSE - unlocked.
" >=20 > -- > 2.23.0.windows.1 >=20 >=20 > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. >=20 > View/Reply Online (#65019): https://edk2.groups.io/g/devel/message/65019 > Mute This Topic: https://groups.io/mt/76621468/1772286 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [jiewen.yao@intel.com] > -=3D-=3D-=3D-=3D-=3D-=3D