From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.11128.1674033137516342325 for ; Wed, 18 Jan 2023 01:12:17 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=LdoaZH00; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: zhiguang.liu@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1674033137; x=1705569137; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=dY69TdEa2IP7Eug1PDWnsgLAicTNZkZL8VjCJK1TJ68=; b=LdoaZH00yLdMlw85P5rP8zXfqutcmT2kTiXKa7WhPff9i5ufUo4omldQ aCBeRrTCCKfRYgrDdRdg1Wxc4v3LIZt9FeVLGwIuH2h+6i4NyGEKH9c0n 2/utGm9PlSpqQ2Wkaq/x73O7YlAZyyAGC56pUp399RtZ7O+1qNS++7I8Q cQJp/SoyYQzzr9ZSV3//cgWRPJtsfTP4wHI5SUPI8ctXqrjnoLQjkOttO Gl37mrWsQKR67+WhShW1aZDkF92zi1HIqrLep2giqgtMtqyzBXa8gxOct GydkSlVPFrVi4ih2Is9pD61SjlJeVBZU7QQsS0gBo1tb82DVZFDhcBw2o w==; X-IronPort-AV: E=McAfee;i="6500,9779,10593"; a="304619462" X-IronPort-AV: E=Sophos;i="5.97,224,1669104000"; d="scan'208";a="304619462" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jan 2023 01:12:12 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10593"; a="783599016" X-IronPort-AV: E=Sophos;i="5.97,224,1669104000"; d="scan'208";a="783599016" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga004.jf.intel.com with ESMTP; 18 Jan 2023 01:12:12 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) 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.16; Wed, 18 Jan 2023 01:12:12 -0800 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.2507.16 via Frontend Transport; Wed, 18 Jan 2023 01:12:12 -0800 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.106) 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.2507.16; Wed, 18 Jan 2023 01:12:11 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TDpVfxyABCewGfQHZHvadx4iLNp/l98U+JxCRjQqq1R+z8OeHvIIgdOmVcFciw4KzlTD01GR9uZCVo6NJbq8KLXvOQZvIgL1LxUBKs1V+qMwBM9+lYMtdVtPVNRhwSyl5UVJaBp+CHXeo3EWOggta0mb9XT98blmimdr/uBcxq5ZFE0h7vkaSdJ9U0g9p+l+RHQhEd4S7POxevMyp6JTPctt6xvuLG0yK3ElB4JNv/8tokBVbWDFVtgSQffJdQDkuvLmR8X+/tsnsso87F18EUzqpiWwXSoxDkG4X05M8iaYe72HQejwRThvsqp+bwTj0ZPzDmXcOxAh6oA8cjNeKQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OLlPaMd6tQHnxXAsMg8s+rdcv+AXmFphIZNI/iyTj/k=; b=Xl5O4pvHMF/JVh2wta/bPIp34TH8LohIc9HJ7uF6gCYcOb5WLF9dMC+odhLwzbDNA878ouu4iCeaKVawNzs3TnWucZ6FgRq73Ffg70GhSCpv+uFJ16K98CUqAJA0Co0OhQ9CZW/acm373lDlTs+NfftVINGxA7kZAOv71diSgsScVQtY7dchL6t7NMrEq7onnKxWcHSxrUYZj1CkwrBateAHQOcAp+RL2X/4SrZnu4EF4EbMcFdcatnVbz2zWM2YmS/c1OtBYkcnqyPzSs53gsOhhr6WWaXynlov95dhH+Y7WF9StK8D6AzWeeap0xtwrCQQ6Kp2MM2uNCQvwoZzvw== 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 Received: from PH0PR11MB5048.namprd11.prod.outlook.com (2603:10b6:510:3d::14) by DM8PR11MB5671.namprd11.prod.outlook.com (2603:10b6:8:3c::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.24; Wed, 18 Jan 2023 09:12:10 +0000 Received: from PH0PR11MB5048.namprd11.prod.outlook.com ([fe80::f382:d721:8364:480d]) by PH0PR11MB5048.namprd11.prod.outlook.com ([fe80::f382:d721:8364:480d%7]) with mapi id 15.20.5986.023; Wed, 18 Jan 2023 09:12:10 +0000 From: "Zhiguang Liu" To: "kraxel@redhat.com" , "devel@edk2.groups.io" CC: "Ni, Ray" , "Kumar, Rahul R" , "Dong, Eric" , "Zeng, Star" , "Wu, Jiaxin" Subject: Re: [edk2-devel] [PATCH] UefiCpuPkg: Fix SMM code hangs when InitPaging Thread-Topic: [edk2-devel] [PATCH] UefiCpuPkg: Fix SMM code hangs when InitPaging Thread-Index: AQHZH/9PcZDp7HKPPE2cfzkOA0v3C66iZLqAgAA1ooCAAAmpgIAAyQaggACHugCAAAC60A== Date: Wed, 18 Jan 2023 09:12:09 +0000 Message-ID: References: <20230104054118.280-1-zhiguang.liu@intel.com> <20230117121359.52rxmec7dv6gfksa@sirius.home.kraxel.org> <20230118085350.bv7s7spmmhkr4ozj@sirius.home.kraxel.org> In-Reply-To: <20230118085350.bv7s7spmmhkr4ozj@sirius.home.kraxel.org> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR11MB5048:EE_|DM8PR11MB5671:EE_ x-ms-office365-filtering-correlation-id: dc37f33a-a38e-42fe-cee1-08daf934144e x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Wqid0oe67zrbwuiJX8vixvbpTyAxHc78Bm+MWUJqG58CEJekNepCwV2kAjuEBa+7cDjLW/aBpZjdWFhOr5VvL49xBEWjnQ0DJRHSrkVp67YOLKVbjbbmJQZoTGd28Vm2NOgw/41E450xYNONb35XkljkYmh1LheasLWpVPLyYjr/o589cbZ47c8/E5k9ofV7z/AdH0Jq3a3XVm3Bu/2joa2xvB/16k9IuOwrdJvmB73C7dUDlvehvUS9ciD2QV0+QbOwwObdQPvc7aQ7/PTgJuZHbJfvWXXFfbqHSCOTzeuCriM4tpjUDED+ToyRI4GzqKZT398cwyUNC09z89vpqMmZKjZEAF1JzBoLPuB209uLL9IKwsxulxBeIIbRDDcEYlC3j44O1J0rATAL051PBLahfBRMXdUgHtiqjPXKiFmDDPm9Jq6oWHev3Oa78VVNf9qjQTUWbhhG6tm8Ec06aDPUnhLIfhQzCWTV67QJmQtYN1P4qaNTEYW1ypGe/XWEpyVysU6BBpfKTYP0bonAN9yMTKSKx+F0UOULgG9tRgqhWIXfvvf4C+9x8jcLtPJwkb+GCoEZXVC9LofyNipBrLmEB+2gTjbraBsYang6JMEOqM3gLd2bp5eSUex3rM0356/UuSW0degvIpQBkeALZnVEzsYWZOEztnMwEeoj6JH0AihsWsfKsELz3Nad2E9NIpwjoygIH78Qi80RonBKvQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5048.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(346002)(366004)(376002)(39860400002)(396003)(136003)(451199015)(38070700005)(86362001)(33656002)(2906002)(52536014)(76116006)(66946007)(66556008)(66476007)(55016003)(8936002)(5660300002)(82960400001)(38100700002)(122000001)(19627235002)(316002)(71200400001)(7696005)(54906003)(110136005)(107886003)(53546011)(6506007)(478600001)(41300700001)(8676002)(66446008)(64756008)(4326008)(186003)(26005)(9686003)(83380400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?LfEGd2A8F40KuGZ2jKy4QvdbEht7iqUzv6SlDNcgFF+obgnV8b4+5o/S74XQ?= =?us-ascii?Q?DKkFEVKU+nVjjrV/NkIPxRSwUSPdisibTqfco8oLB2SQFFYnlE8DvDyD83Tt?= =?us-ascii?Q?s/K2LbdnKO91R75C5/PH23CTHO0gJHSbzpV+3TEa6NTRq/Di88x4LFAz1L5s?= =?us-ascii?Q?ImOZfk9Fj+Ywj4Ac6UzjG/oSHbM9AwJ4YiYWp3xk1PWvck8Qjhq95f6L61dO?= =?us-ascii?Q?nbvidt2b4QUmW1u5mkb5gS2CGy/+8XWNE6k/8mrJeEDNLaqmYnIm8gVPa+0N?= =?us-ascii?Q?Z6XENYEA7nM79rz0o3xkYjvtLxDpw8Tn515dWMnB2qG6JAbXsTOomZaMi/ri?= =?us-ascii?Q?npaRopaZ18+90V+cTOOnMC/8JhoJeYZmljEs/98At1u2iw9J++JC4WN1PmfF?= =?us-ascii?Q?wIeVgJrSMr7+4llwIJzTIvQ213MWj0OPaygCrDotp9B1SsT0B8miDylx5q24?= =?us-ascii?Q?r2zbiMbu2aWJSvl6bno4b+gXP9K0ubpppLWEUjviE3qaaDMRAP90wc8uJo9c?= =?us-ascii?Q?dT4J8D++EnObuOb9/JdZQXFSQejfwdrxRdL+TsvcCRdA9bwq6H2pg9w3Ybfs?= =?us-ascii?Q?wl44myLLCxVUGeIfzggApARwYbpnic3dMX8vNaqM3pLUFNne2d2hc+SLMH77?= =?us-ascii?Q?SrDHa7tqxYC6P1UlN0ht6VUY/QsNibz+i5/QOQ0LeF0/E3YiKbQm4sRJdnXx?= =?us-ascii?Q?9AwhpoRrSnUmDWRLgqm/7dc5LR6Pzy3tYj42QOINJt5MblIV3cQ9ggqxaJ+0?= =?us-ascii?Q?4Sn2e1g50zy9iFQ4J3UlwBM+MgzfNfiECjNEH5FA/2KpQzDhw4NMXfNHL9Jg?= =?us-ascii?Q?Qf5MPKo8RGvUMoXTFVsqi4zr8rYa3+vluM/+YsS+P+Ays6ZK3S5kJaBbwf/p?= =?us-ascii?Q?YCePQ+jefbm/BttkVQady79vKZQsrrwj+Nop3XoPCJM6ziSQV3Z1RUBbHo2Z?= =?us-ascii?Q?aGUMp6NqUuGod+/WVgRY5c6PsPF0qbSikXjyYQkDdorQNVeuJpk6a0BNonFG?= =?us-ascii?Q?MLMTX8rPrIjo1qMcryhY+BxsCMfaM+M9UwYbbS3LZ+tQh58Q2RuzSmpFHn4A?= =?us-ascii?Q?i8vkywjfRWRdy7W20tes0S5ytDhLjU2CD81qxZMsExK0woQSWm7Lerg83kM/?= =?us-ascii?Q?xVg44mhe3FkSNRxH7oEwtnWChkQhvDSgwRb3jrBZK349c430Abw5rOKSqbot?= =?us-ascii?Q?0TsyCOn/sBG2jYh46PU1/OantJjaW536okap9k7DO8CpNzS9vbGPVaWw2bgX?= =?us-ascii?Q?W0JizPovqEDv28ntrWOAddJXCh9i+Xt7UONprK03hZ38BAa6tVvkpDY2J/hN?= =?us-ascii?Q?vHt1B4sM+mrDzJ852YL4gyvmn9bwEi0zhXsJm+OPElLSZdSxokgsVCTP6UIZ?= =?us-ascii?Q?czI2BMWQHLiVBhG63QmaiFcBia/yhdTNH0YD+OT6Nnq7FWiWgH7ZClO7VTjJ?= =?us-ascii?Q?MwesFwhdkZib5UhFApIg5+2mDIQ7KEW1Gt6KUxXX1lJ3GTveZMPnCnIy1Sud?= =?us-ascii?Q?/7KPdN+kVqUOQ092RtDtc73jJ3IbABrCGuDkVE36yODFXkjtg6zX17Aer9/J?= =?us-ascii?Q?4KXMwyWtizjxcfwjW6GLlrlJVmd6LhTSv9g+YsxR?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5048.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc37f33a-a38e-42fe-cee1-08daf934144e X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Jan 2023 09:12:10.0046 (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: z9AjH4SPy99pZyfgtHyFTcOYr9Xldgs1cG9DOwosF6fzSN5ppRpiYFA7q+ij8TZSKZCUb+RqN6U1uOKHjfU4yA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR11MB5671 Return-Path: zhiguang.liu@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Gerd, Let's check the code in InitPaging. If 5LevelPaging is disabled, Pml5 points to a local variable. Pml5[1] shoul= dn't be used. UINT64 Pml5Entry; UINT64 *Pml5; if (!Enable5LevelPaging) { Pml5Entry =3D (UINTN)mSmmProfileCr3 | IA32_PG_P; Pml5 =3D &Pml5Entry; However, if NumberOfPml5Entries is larger than 1, below code will access Pm= l5[1], which may cause unexpected future code flow. for (Pml5Index =3D 0; Pml5Index < NumberOfPml5Entries; Pml5Index++) { if ((Pml5[Pml5Index] & IA32_PG_P) =3D=3D 0) { Could this can answer your question? Please let me know if you still have c= oncern. And for the CpuPageTableLib, I think the API don't provide the interface to= split 2MB-page page table into 4KB-page, which is the function wants to do= . Thanks Zhiguang > -----Original Message----- > From: kraxel@redhat.com > Sent: Wednesday, January 18, 2023 4:54 PM > To: devel@edk2.groups.io; Liu, Zhiguang > Cc: Ni, Ray ; Kumar, Rahul R ; > Dong, Eric ; Zeng, Star ; Wu, > Jiaxin > Subject: Re: [edk2-devel] [PATCH] UefiCpuPkg: Fix SMM code hangs when > InitPaging >=20 > On Wed, Jan 18, 2023 at 01:13:43AM +0000, Zhiguang Liu wrote: > > Thanks all for reviewing, and I will send a new version to address the = comment. > > > > As for Gerd's question, let me explain. > > Let's see one example, that the CPU has SizeOfMemorySpace >48, but the = CPU > doesn't enable 5 level paging. > > The purpose of the current function InitPaging is to modify existing > > page table. To use the same logic to handle both 5 level and 4 level > > paging, for 4 level paging, the logic will create a false 5 level > > paging entry to treat it like a 5 level page table. >=20 > Yes. Same for 3-level paging btw. There are always page tables for 5 le= vels, but > the higher levels might be unused. >=20 > > This way, the > > number of 5 level paging should always be one. If we use > > SizeOfMemorySpace to calculate the 5 level paging entry count, we will > > get number more than one. However, as I just mentioned, we only > > create one false 5 level paging entry, system may hang when we try to > > access the second 5 level paging entry. >=20 > If 5-level paging is turned off the CPU should not see what you are doing= with > the page tables for the second (and higher) 5-level entry. >=20 > So, limiting the number of 5-level entries does make sense. Higher entri= es are > not used, so it's pointless work. >=20 > But that doesn't answer the question: Why does that fix the system hangi= ng? I > just can't see a reason for that when looking through the InitPaging code= . I > suspect this might hide a bug somewhere else. >=20 > Related: We got UefiCpuPkg/Library/CpuPageTableLib last year, can this b= e > used instead? >=20 > take care, > Gerd