From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web11.8892.1615903321506390157 for ; Tue, 16 Mar 2021 07:02:01 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=kbq+D0qD; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: eric.dong@intel.com) IronPort-SDR: DHhI0Dyf4OzKRjkKKTkUHb/Vz2zB4pyrbmrkcXuvRyZUHAgl5mnXiS4n7AsN6bbgXZ31SLnR3K L/Zjs/XCKx7Q== X-IronPort-AV: E=McAfee;i="6000,8403,9924"; a="274304897" X-IronPort-AV: E=Sophos;i="5.81,251,1610438400"; d="scan'208";a="274304897" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Mar 2021 07:01:59 -0700 IronPort-SDR: fEze3W4QKR9lIEJwr7t2ZvniHg+Oq41qs2nlWT0iG7jHqnsAer9glpHsWj/U9Z1HQAnieH0W+n nrqGzT2+YrqA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,251,1610438400"; d="scan'208";a="449726893" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga001.jf.intel.com with ESMTP; 16 Mar 2021 07:01:59 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 16 Mar 2021 07:01:59 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 16 Mar 2021 07:01:28 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Tue, 16 Mar 2021 07:01:28 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.41) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Tue, 16 Mar 2021 06:59:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ikA+fge0RSIKsHGVRdsIEpeJRkatrraF3hXof4z5g09vCrB1blnlD6dcWtzSvGQAb4+7cLju6AeZXhoQIYhBSHC9S9KNydwQCRDFaHwQjMtcLMqkthlc43+bXE01qvVQmObG/AoNl77RM2wQ3t5jqbVD/kuDT1Ai7rDw2vt749qmZXiA+nuwcndAnSsk2qkvouewwU2PejvDeVqb4KMWvQ2CBfIRcZW+3oeAsHX90f3PndBoqdL11sOoMHnF2Esd5hclqI2lyEIbpyED3sYPBltLVafDAzMgL+ILijXUDb+KOF4a/lDglbIhkUJhVCaznSo7Db+n1pNsbm9rxYFCGw== 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=uQEtC4cdG2Gr650ewRWCChFIVWCHUEMF+lLLy1mTOuI=; b=LPSfVzquSHYaYjL1qPr4PpQOTjrF2Y/zKojjBLFT16n3kck7hhvOQqfI0ZIGzYH443jolf+f354zLuTUOLGnBluS56dnHhfIxJeJCev+ZTtrikJDe3iiCxzYUcPftvnnp60CfF0lG2/jVB1do1IY3ShU9rFWjtXd9ZR1RZBpOWStN2GvzB+uqsfm6vVu4fqeSxjyEGzcbfmJQtAK34N96uanqaBQopDP5i6Eo0KqpUUCzid8JcKYYZJcIL7OVXk4/TzcGRbwPjf1qiN4FHsxv25UN4g4PqVe38IWz8N5XNWmWTDSDRctJKtU7/OYyclI4NQ3BdP1ptBXfxpxJHWXpQ== 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=uQEtC4cdG2Gr650ewRWCChFIVWCHUEMF+lLLy1mTOuI=; b=kbq+D0qDS2b2fU+epi2zA2a3piq//Q1jgG+qQhiBJYAK38uVid62Db0q86QyUfiCBDonuzZByzIetE4rl1HfcS+PHG/KDGa/8P7epsQpXK2tDOgG+S3TSZdU1cqUzhPiS887QxwZZpVcFujH+ShBP7ZFBnJZJNJKQhdHx5fCBFY= Received: from CY4PR11MB1272.namprd11.prod.outlook.com (2603:10b6:903:29::9) by CY4PR11MB1894.namprd11.prod.outlook.com (2603:10b6:903:11e::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Tue, 16 Mar 2021 13:59:47 +0000 Received: from CY4PR11MB1272.namprd11.prod.outlook.com ([fe80::918c:7df3:f688:d5e9]) by CY4PR11MB1272.namprd11.prod.outlook.com ([fe80::918c:7df3:f688:d5e9%5]) with mapi id 15.20.3933.032; Tue, 16 Mar 2021 13:59:47 +0000 From: "Dong, Eric" To: "Ni, Ray" , "devel@edk2.groups.io" CC: Laszlo Ersek , "Kumar, Rahul1" Subject: Re: [PATCH 2/2] UefiCpuPkg/CpuDxe: Guarantee GDT is below 4GB Thread-Topic: [PATCH 2/2] UefiCpuPkg/CpuDxe: Guarantee GDT is below 4GB Thread-Index: AQHXGhU9mkOJCvkU9UySmmX5atx9kKqGpPyA Date: Tue, 16 Mar 2021 13:59:47 +0000 Message-ID: References: <20210316033350.2026-1-ray.ni@intel.com> <20210316033350.2026-3-ray.ni@intel.com> In-Reply-To: <20210316033350.2026-3-ray.ni@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: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [61.155.142.121] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 90950c01-7abe-492c-1c28-08d8e883c27f x-ms-traffictypediagnostic: CY4PR11MB1894: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: gqkl2vWHIeYKL7zYDbj7h0A++74Q+zR2EAiUB0DB4xNFwasuDApmB0swDC1JARC+o9mhSbcm7nlgRr+t22C2hW+zVy0fOZStnT/1vEAk3AKCuMwQbGoYEz3OfwMiO50D8ZpDLrURYrISRQQxYA7NYP6HNLPFAttMt+ohu7mBflUZVJgFkKLEogu+PrDmkpi4XIMp8y801YLsc1a5OMb8n0K+q5T8P/Fo4RvrpUuzfqkXog7dU/TpMHyiZpNM0OjZaHYyKJ+J+gCeSokE1FvqswDZ6bhIUgDyai/xtDCGeXG2bcgIM0L/9l0CnayAoBRMpV4m56iYFPHudlisCw5CmoOYZ34HkutyZqa1YWo7Wh136r4VIBy7nMvkrqPAzDAJhq7o6+cwys9972ayvDnn1sDNXjo7rhgaGoXYHxyC1799vrRgMvVj2LcuaAD4X1LdADBgMD5KfGMJ2ElIwgoBPH8l8ZNlQyC6slf9I+aMA2+Tuzw0cBaTckZHVRPwu1drGhkNEB8mGXvupgBf4OK6fumoTDESb/W6FhvVJvgH/FmP3Yzs5GJljFncnaFHN+VtFFbiLqqj9tXuikAODN2Gf7O3czumN+pPjo6lKdq+dDF4yEt83gbXnIg02RgToc5Doo1nSGafjFdJ4oC5aQuwNw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR11MB1272.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(376002)(136003)(346002)(366004)(39860400002)(71200400001)(316002)(9686003)(54906003)(110136005)(107886003)(5660300002)(478600001)(966005)(6506007)(53546011)(66446008)(8676002)(64756008)(76116006)(66946007)(66476007)(52536014)(66556008)(4326008)(2906002)(86362001)(8936002)(33656002)(7696005)(186003)(83380400001)(26005)(55016002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?JLZe+w1iB4+A28VPOlvlXX89Ezigf3zSqX0KJwsgUj1MR3B/u1K1KNTX30L/?= =?us-ascii?Q?gl3xduWoEWJKYez5WyVzAK/0uthUVew5sE30GKP2PkfLQ5+29Q8vLv5s3hCp?= =?us-ascii?Q?bjjI4AJ5hJNA70TZ+YaC3CNZTUbeyA4ItSDEl5CHVCbeKYuzm9/6YXr8aGtu?= =?us-ascii?Q?F0c2ctCxMl6MxOefFboS5qYP9dIuh5Kkq1UhtKQT7e1pVkKX1QjMOXo8HzRZ?= =?us-ascii?Q?5oT0Lo6B574HgqHpNrmBpj/wtXG5Zg3UNpC1TmkX6uHmpWOvNvrrNPfV58Ay?= =?us-ascii?Q?68pQxILGqn7JNq5yhKH/8HRj//WorSE4QjwtnlRK9GtTKaw8eMxkM+omPjD7?= =?us-ascii?Q?eTJcnTNBCw2YqeUdau1VSVg2T31rZEik8dXsGVtPFjWlIlOVctczPpYGuOoo?= =?us-ascii?Q?p7bPpxAYk8/N+9IHX/2MAAO8M3XoFAXd8zbUZhXiaUKsT/dRfMq9BV4+qvrN?= =?us-ascii?Q?kl2ZF3DADID29ljpQa0apznJL9RZ/bW0Ki9hBf5BjE5ZAvvxvZLebe5de79a?= =?us-ascii?Q?FZzwRSotj4P2TTju+9q3R4n+dwS72TvVu6YlW5Wa5Z2QbzYEgmlTOH1XHYl4?= =?us-ascii?Q?L1LNV6EnfpksO8FVjoVq6v5H28fkbd3S9AqyqtN6QzePWLYHNorvMiBPIxZY?= =?us-ascii?Q?dkMPw8AlK0LU04E7ctdMEj5K7zKxYWDy6YFCiiy92ydNYbhjJncXQ+43wSMK?= =?us-ascii?Q?ULVAlGh9lQUDjvrwlwd2cPZsY29+/e5e11h6mrYAAwrxtl8kdL9VjDb6PtrU?= =?us-ascii?Q?CrAqhZOTIJjPFHhhjGm/tK002stN9ItV2GKSGJzIheMUo6drnllBCzh3QJSc?= =?us-ascii?Q?MzbGQhfU/kN2siY9iXVpuP51RryeoSsaF5SRLWb8Xh2aFCK178qK5tAwHnVO?= =?us-ascii?Q?2lyLA6R1SJseDfA8C6vlyZzeubddRq9zhrCwD44qImkswKb9B116xX4AVxF3?= =?us-ascii?Q?FXsQ9rK4uy8rM7i6BaDsJMEWhBMDHJWtfl16718M1c1QfJazOWrDeHed8chQ?= =?us-ascii?Q?N2uGvmEPEV1/kVjGiwbWhKtJaqUDBVzdHEykUmsZat0xPzl2NzdemTnuXiI0?= =?us-ascii?Q?qeuUeYJFcAqLjwaor3CT8MmGuAAD68pdmKGfe/oPk5i8Di7hQDgGiUD03Fku?= =?us-ascii?Q?A+VFMpz7ureMouON4hrtNEm13IwJA+FgQ2JeYNC4bHoWFPoopzBbjO79uiLD?= =?us-ascii?Q?+zwuxgFT1EoMv7ByahFW9Me3ljyc3rjVJJL21EjpX6hdvtWaKNbp+EQGhCtH?= =?us-ascii?Q?G/7OkazFZbrCvREhnQAWwARygPQRzJM76pyWtIXG0eF6G7k2ACNUlCGP7q+x?= =?us-ascii?Q?6+sQuiq3bHgdzN94XgvEbomo?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1272.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90950c01-7abe-492c-1c28-08d8e883c27f X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Mar 2021 13:59:47.2675 (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: hnRq/1T6tmIuZKca044gAYskkklBIrjgcSOuTNxI/P2OnwlMNSndKX5zQkR6jUsp1oimgfiZRSCbG8YSWTeP5A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1894 Return-Path: eric.dong@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: Eric Dong -----Original Message----- From: Ni, Ray =20 Sent: Tuesday, March 16, 2021 11:34 AM To: devel@edk2.groups.io Cc: Dong, Eric ; Laszlo Ersek ; Kum= ar, Rahul1 Subject: [PATCH 2/2] UefiCpuPkg/CpuDxe: Guarantee GDT is below 4GB REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D3233 GDT needs to be allocated below 4GB in 64bit environment because AP needs it for entering to protected mode. CPU running in big real mode cannot access above 4GB GDT. But CpuDxe driver contains below code: gdt =3D AllocateRuntimePool (sizeof (GdtTemplate) + 8); ..... gdtPtr.Base =3D (UINT32)(UINTN)(VOID*) gdt; The AllocateRuntimePool() may allocate memory above 4GB. Thus, we cannot use AllocateRuntimePool (), instead, we should use AllocatePages() to make sure GDT is below 4GB space. Signed-off-by: Ray Ni Cc: Eric Dong Cc: Laszlo Ersek Cc: Rahul Kumar --- UefiCpuPkg/CpuDxe/CpuGdt.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/UefiCpuPkg/CpuDxe/CpuGdt.c b/UefiCpuPkg/CpuDxe/CpuGdt.c index 322ce87142..98d5551702 100644 --- a/UefiCpuPkg/CpuDxe/CpuGdt.c +++ b/UefiCpuPkg/CpuDxe/CpuGdt.c @@ -124,15 +124,26 @@ InitGlobalDescriptorTable ( VOID ) { + EFI_STATUS Status; GDT_ENTRIES *Gdt; IA32_DESCRIPTOR Gdtr; + EFI_PHYSICAL_ADDRESS Memory; =20 // - // Allocate Runtime Data for the GDT - // - Gdt =3D AllocateRuntimePool (sizeof (gGdtTemplate) + 8); - ASSERT (Gdt !=3D NULL); - Gdt =3D ALIGN_POINTER (Gdt, 8); + // Allocate Runtime Data below 4GB for the GDT + // AP uses the same GDT when it's waken up from real mode so + // the GDT needs to be below 4GB. + // + Memory =3D SIZE_4GB - 1; + Status =3D gBS->AllocatePages ( + AllocateMaxAddress, + EfiRuntimeServicesData, + EFI_SIZE_TO_PAGES (sizeof (gGdtTemplate)), + &Memory + ); + ASSERT_EFI_ERROR (Status); + ASSERT ((Memory !=3D 0) && (Memory < SIZE_4GB)); + Gdt =3D (GDT_ENTRIES *) (UINTN) Memory; =20 // // Initialize all GDT entries --=20 2.27.0.windows.1