From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail03.groups.io (mail03.groups.io [45.79.227.220]) by spool.mail.gandi.net (Postfix) with ESMTPS id 4BBB2AC0B00 for ; Fri, 12 Apr 2024 05:14:58 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=k5msB6OXv7LHiQ2f5FARiUKY/ljSvMUVYBmhSbYR+YY=; c=relaxed/simple; d=groups.io; h=From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language: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:Content-Transfer-Encoding; s=20240206; t=1712898896; v=1; b=XgPTZNaZrV1pw2wZ6VmdK0c/2NTc8Owx8/AoNLcJdHPBP2c+WqFAzhrmqZyN2vEucIhoq4pW jFqnkUaawgDNrAaUeqF1ZICsKy99mQdc8/mwNzQ5TgKz1u4s/OZ7M3tI7B70zX122Cc5cgzfYpf KCgifFuOowIr2ZEcCPAr9t0Ska8pJD+m2sM/g0Qe609ilhiJPIhX0XWW4F7DuMbGDnjp6v4J6HA DJjIHedxlLuMSZzMsj5Lc/fGyZIaFh8Llz4DwvfTsS1eZsCFBPE06v027mFegTkpWxi0YuS0O6l uFybUzREaL1D1e07xqrPe/DN2T81pdgAO4/RHEPbSyo2A== X-Received: by 127.0.0.2 with SMTP id voddYY7687511xl117498PBY; Thu, 11 Apr 2024 22:14:56 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14]) by mx.groups.io with SMTP id smtpd.web10.39970.1712898895914227027 for ; Thu, 11 Apr 2024 22:14:56 -0700 X-CSE-ConnectionGUID: mqt89RdnTK6qvL4gBnL38g== X-CSE-MsgGUID: VLRPuKBoRXCuExDWDWxuMw== X-IronPort-AV: E=McAfee;i="6600,9927,11041"; a="12195077" X-IronPort-AV: E=Sophos;i="6.07,195,1708416000"; d="scan'208";a="12195077" X-Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Apr 2024 22:14:55 -0700 X-CSE-ConnectionGUID: mfl/4YFGS1iigVyBd+sAmA== X-CSE-MsgGUID: VMIFoxmpQkuhWA9REkHTpA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,195,1708416000"; d="scan'208";a="25792401" X-Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orviesa003.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 11 Apr 2024 22:14:56 -0700 X-Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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.2507.35; Thu, 11 Apr 2024 22:14:54 -0700 X-Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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; Thu, 11 Apr 2024 22:14:54 -0700 X-Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) 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.35; Thu, 11 Apr 2024 22:14:54 -0700 X-Received: from IA1PR11MB6170.namprd11.prod.outlook.com (2603:10b6:208:3ea::11) by CH3PR11MB7322.namprd11.prod.outlook.com (2603:10b6:610:14a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33; Fri, 12 Apr 2024 05:14:52 +0000 X-Received: from IA1PR11MB6170.namprd11.prod.outlook.com ([fe80::ecc4:7fd0:cabb:89af]) by IA1PR11MB6170.namprd11.prod.outlook.com ([fe80::ecc4:7fd0:cabb:89af%4]) with mapi id 15.20.7452.019; Fri, 12 Apr 2024 05:14:52 +0000 From: "Huang, Yanbo" To: "devel@edk2.groups.io" , "taylor.d.beebe@gmail.com" CC: "Wang, Jian J" , "Gao, Liming" , "Bi, Dandan" , "Zhou, Jianfeng" , "Huang, Yanbo" Subject: Re: [edk2-devel] MdeModulePkg: Fix MAT SplitRecord() Logic introduce one bug and will cause SUT reset when boot to windows Thread-Topic: MdeModulePkg: Fix MAT SplitRecord() Logic introduce one bug and will cause SUT reset when boot to windows Thread-Index: AQHajJhZnsQmOLi+jkyTDHFiOYCs3A== Date: Fri, 12 Apr 2024 05:14:51 +0000 Message-ID: References: <20231127181818.411-1-taylor.d.beebe@gmail.com> <20231127181818.411-11-taylor.d.beebe@gmail.com> In-Reply-To: <20231127181818.411-11-taylor.d.beebe@gmail.com> Accept-Language: en-US X-Mentions: taylor.d.beebe@gmail.com X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: IA1PR11MB6170:EE_|CH3PR11MB7322:EE_ x-ms-office365-filtering-correlation-id: db3ffb19-78b4-4a15-10c1-08dc5aaf7ba0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: /zTdhuEVdDS+8oCuQ5RR/zaYQbFMTN+8ARP/bapcOpIqnavL7dInc5ULfOXO+skZoIUeT/0RatR9BAZ8mJi2sVoWKJPJdNbRHeK/CU69s6WA6mmrj/vDsQt3vmqS9sO2B6wvA2eWoxEzJnEK+Qu3dYMuxW/epZeZTvlG9z+Tm68SyHUJLzWB3kuKxDELNHQCyZCcpovTRY+fhO4s7KzXBHEeUI4R7RgRc3Fd1tQyCq4hc/1QAs7Qm+g7qtUtJvQPBkdaGkHLevy8s3A7T+9PZqq02Gv/U+wNg7ZBP/8a61TtxYiQW2CPn6HZvIJBFy5HnCVjTufYOou454yQJ3kte5C8BXBt0TWSSvp1xPygWwYWK43JjY7tu4dl937yo9jS0tM2QwlFkCjdHlnG0agfqpZopMmoslWzgJagBn3B+lyi88u+LG3/n2BThNF2z7P1Apzr9TRBD7fULT81ECRJ3mqM0jfrKr4w6AgmznCbuul/J3s1wmttBSmE/fqutRevhr27KWL3krusChvmVjOYJVkSCdYeGci0yUVVjV3cua1izMxAecGM3qNOefT4IgDFxfB4z8cP8ntciuk8W1bHj9jisYe+KHYQzawyWesW7SXBN1UEMeDcDD+r4tbdavAR+Z9tXhejXhqkJjpkQcyoxvX1ib9dB1afi5QHAP3PRJc7XYViZS2FP3pLDuJgfjGn x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?TiXjA3bv9cQKbCb5jDtSQ2OCeo87d9v3fjqcjSdKs9JbVDHQzoer0wUGywYg?= =?us-ascii?Q?m9mn0UX/X/Swdms2Qz/D6Q3kBFuScQ1jxy7ZFRgGz9JpnYkLv/I0RUCanh3W?= =?us-ascii?Q?nkdvzGDx7RZOUYnucPFfDmC5QUxARITT8WXmaMpJaYShqJ+Y9/7tZsQBKdNN?= =?us-ascii?Q?UoMtIbFjmCMWa+Dgf1FNP5ZVoI3l252T0OAuMjVTZ9Mg3gztiIEsJWRFqMbv?= =?us-ascii?Q?RaNVqumJUURaxMCFjshcVL0asr86ud4j/vJ1FgT03ZmYx06tERyVS4DnVCvs?= =?us-ascii?Q?iK3vDSqmwChyIcQzCcu2t1hG1/cZmx6bQnHZC9ixu2YV2yjUHdhot5Wz5ePH?= =?us-ascii?Q?WBTbQUUJrogriXDzGrSIQHYYEDlBae4O91GfOsZAgRdh6LQAgxPllyS0Ng8w?= =?us-ascii?Q?uyys/L0BHIgn6eC7nKA11c5p5Ec2Gibr6omGnJ0CQuYm2IxM15BJ2c1kibez?= =?us-ascii?Q?jFr5dHKLwxXJD5aXS3gYwLhEuz6hcqvMKPoUvmLMPkmShdW8CRbBBIwtuShR?= =?us-ascii?Q?yePP4M2lrAlVpemxHmA6oNQEyeSKpJPeF3YR2c988mZGxjltTPDh8ZHtCFYG?= =?us-ascii?Q?sd57RL5dEX/rOM8878MVJXApLOUBM7TQDWbLNJXbJ1EZMSz8veie1t+Np3Z6?= =?us-ascii?Q?Bi/Nk0GCdcET9G5zAljsC/u6KkjLgLVQHv8xWC0KAdM/IyAEOxmlBpCsUQ3h?= =?us-ascii?Q?VxP6yKa5WZlyXqnPhlRH5HxI4BJ+n5CyQkcagmIihcz3vKuzWms4XbuLIGjd?= =?us-ascii?Q?iY8cbCpkTC4lCZAQzEeHiKJCW93/qJ5i8RWCqf8QVsGJ79GBc1e7jWlB3A4V?= =?us-ascii?Q?UlDaPFF8AVPsJyS8+WeQILgQnh+/IHPumpxVf6x/T5d4hJQpcNTSh+zMyn1H?= =?us-ascii?Q?FXtldwEJDuiiVRcMJxqINO1bdj2YqOULIwVzjaBDDJfy2xosbVOSGlLr5sWA?= =?us-ascii?Q?XZN1jr/BKZkI6GARYKFS6sFOXIrntTKrcE7Y6TDyHMyKtNlzIHK2HpJlEewb?= =?us-ascii?Q?ylEXZzowAQRKCb0BqhJt/iZGML9eiGadTazW15/zRfU9nUDbv/pm/0jy0kSw?= =?us-ascii?Q?fbluZ4ratoQTYUp3tt8xUHloiqiVeF9uBMCv0mSzZhlAtWnX4kuzvI/eThld?= =?us-ascii?Q?epxQJwy1+vHYY4/fH1IbewxengQJzCuwUX8D6LFFPoPaSwwE6n/Y4dl3x2Xo?= =?us-ascii?Q?7rCZaqBpDClsw5PZngufYx+VH91Jkrfk3JJt5mjtms6eStTCaMDBVFnH4juY?= =?us-ascii?Q?HYJasrmSiqwcIcrs5G2xSKjh5+XpnE9PkwkXeBrulr7BKLEmiCUtPOZR1blV?= =?us-ascii?Q?r6pRc6O2VvID0XI4zhka2/7qvsEzcQ5iS29d6/cIwRxgKHaZ4fIpZ7mXO0IS?= =?us-ascii?Q?O7+u25/s9ZpVWi3S7EmkpdAaaMewamw2FNoW4xQN1ufDew3p7jKcY6lNo6oj?= =?us-ascii?Q?TNVCCFQ4RbtZ/s5x4p3H5X+ppH1wEbyYzBd6a2t19UKbdFiAVCvt8HFFsMpj?= =?us-ascii?Q?YeWPhJVcs1xSs/rp5NqZ6LjAmbCc5G8EhazHSwtn9nSzeAC3Gj+jUReVQRG+?= =?us-ascii?Q?pVl2+DxeJotLb6yEA+Y9xhaacMOe48jSngov2BLl?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: IA1PR11MB6170.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db3ffb19-78b4-4a15-10c1-08dc5aaf7ba0 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2024 05:14:51.9303 (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: KzIaVyNrGLgY6PW7twiB3u0jjP9ML4rFo+1GHdo2/9yqjHsdUXrFa/Y7Da9dfzY2e0JBWTtZcBDJTFxkn0t4gA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB7322 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Thu, 11 Apr 2024 22:14:56 -0700 Resent-From: yanbo.huang@intel.com Reply-To: devel@edk2.groups.io,yanbo.huang@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: 7YpnhWMIwAh0BMzYMuwi2JiLx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=XgPTZNaZ; 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.227.220 as permitted sender) smtp.mailfrom=bounce@groups.io Hi Beebe, Recently we found this commit " MdeModulePkg: Fix MAT SplitRecord() Logic "= will cause SUT reset after enable some knobs. I filed one Bugzilla for it: https://bugzilla.tianocore.org/show_bug.cgi?id= =3D4751 After debug, we found in SplitRecord API, many entries attribute are set to= 0, not align with the UEFI spec: "Memory Attributes Table (MAT): EFI_MEMORY_ATTRIBUTES_TABLE. The entire UEFI runtime must be described by t= his table. All entries must include attributes EFI_MEMORY_RO, EFI_MEMORY_XP, or both. = Memory MUST be either readable and executable OR writeable and non-executab= le." This should be the root cause of this issue. When we update "NewRecord->Attribute =3D TempRecord.Attribute;" to "New= Record->Attribute =3D TempRecord.Attribute | EFI_MEMORY_XP;", SUT can b= oot to windows. @taylor.d.beebe@gmail.com Could you please help to send one formal fix patc= h for this issue? Thanks! Best Regards, Yanbo Huang -----Original Message----- From: devel@edk2.groups.io On Behalf Of Taylor Beebe Sent: Tuesday, November 28, 2023 2:18 AM To: devel@edk2.groups.io Cc: Wang, Jian J ; Gao, Liming ; Bi, Dandan Subject: [edk2-devel] [PATCH v5 10/16] MdeModulePkg: Fix MAT SplitRecord() = Logic SplitRecord() does not handle the case where a memory descriptor describes = an image region plus extra pages before or after the image region. This pat= ch fixes this case by carving off the unrelated regions into their own desc= riptors. Cc: Jian J Wang Cc: Liming Gao Cc: Dandan Bi Signed-off-by: Taylor Beebe Reviewed-by: Liming Gao --- MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecordLib.c |= 56 ++++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesR= ecordLib.c b/MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesR= ecordLib.c index 7c0ecd07c1bb..9d4082280bf5 100644 --- a/MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecordLi= b.c +++ b/MdeModulePkg/Library/ImagePropertiesRecordLib/ImagePropertiesRecor +++ dLib.c @@ -323,7 +323,6 @@ SplitRecord ( UINT64 PhysicalEnd; UINTN NewRecordCount; UINTN TotalNewRecordCount; - BOOLEAN IsLastRecordData; =20 if (MaxSplitRecordCount =3D=3D 0) { CopyMem (NewRecord, OldRecord, DescriptorSize); @@ -344,35 +343,16 @@ = SplitRecord ( NewImageRecord =3D GetImageRecordByAddress (PhysicalStart, PhysicalEnd= - PhysicalStart, ImageRecordList); if (NewImageRecord =3D=3D NULL) { // - // No more image covered by this range, stop + // No more images cover this range, check if we've reached the end o= f the old descriptor. If not, + // add the remaining range to the new descriptor list. // - if ((PhysicalEnd > PhysicalStart) && (ImageRecord !=3D NULL)) { - // - // If this is still address in this record, need record. - // - NewRecord =3D PREVIOUS_MEMORY_DESCRIPTOR (NewRecord, Descri= ptorSize); - IsLastRecordData =3D FALSE; - if ((NewRecord->Attribute & EFI_MEMORY_XP) !=3D 0) { - IsLastRecordData =3D TRUE; - } - - if (IsLastRecordData) { - // - // Last record is DATA, just merge it. - // - NewRecord->NumberOfPages =3D EfiSizeToPages (PhysicalEnd - NewRe= cord->PhysicalStart); - } else { - // - // Last record is CODE, create a new DATA entry. - // - NewRecord =3D NEXT_MEMORY_DESCRIPTOR (NewRecord, = DescriptorSize); - NewRecord->Type =3D TempRecord.Type; - NewRecord->PhysicalStart =3D TempRecord.PhysicalStart; - NewRecord->VirtualStart =3D 0; - NewRecord->NumberOfPages =3D TempRecord.NumberOfPages; - NewRecord->Attribute =3D TempRecord.Attribute | EFI_MEMORY_X= P; - TotalNewRecordCount++; - } + if (PhysicalEnd > PhysicalStart) { + NewRecord->Type =3D TempRecord.Type; + NewRecord->PhysicalStart =3D PhysicalStart; + NewRecord->VirtualStart =3D 0; + NewRecord->NumberOfPages =3D EfiSizeToPages (PhysicalEnd - Physica= lStart); + NewRecord->Attribute =3D TempRecord.Attribute; + TotalNewRecordCount++; } =20 break; @@ -380,6 +360,24 @@ SplitRecord ( =20 ImageRecord =3D NewImageRecord; =20 + // + // Update PhysicalStart to exclude the portion before the image buffer + // + if (TempRecord.PhysicalStart < ImageRecord->ImageBase) { + NewRecord->Type =3D TempRecord.Type; + NewRecord->PhysicalStart =3D TempRecord.PhysicalStart; + NewRecord->VirtualStart =3D 0; + NewRecord->NumberOfPages =3D EfiSizeToPages (ImageRecord->ImageBase = - TempRecord.PhysicalStart); + NewRecord->Attribute =3D TempRecord.Attribute; + TotalNewRecordCount++; + + PhysicalStart =3D ImageRecord->ImageBase; + TempRecord.PhysicalStart =3D PhysicalStart; + TempRecord.NumberOfPages =3D EfiSizeToPages (PhysicalEnd -=20 + PhysicalStart); + + NewRecord =3D (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)NewRecord + Descrip= torSize); + } + // // Set new record // -- 2.42.0.windows.2 -=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 (#117641): https://edk2.groups.io/g/devel/message/117641 Mute This Topic: https://groups.io/mt/105477564/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-