From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id BFF6CAC0A5C for ; Wed, 10 Jan 2024 05:38:40 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=euZ0BBhbTtA47ND207CECcOWZqAs2QW4pyThGZfXXZo=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20140610; t=1704865119; v=1; b=nTRiRq+xszD5VfNYFW2/Y8sprSqt+DDk3e6RiZnT60LUu1AT9VCliCqVPThBSRRRKrNCz2Av yrdH4WF7Z1dsOW7dVGmb78GWvNioFLkb0q14BSTNr0QelkG7aL1BLMQ0R2aGQhwkIR90j40YWDk 2pP2pZlaNS3PpU1s58iThwqw= X-Received: by 127.0.0.2 with SMTP id BRNFYY7687511x52O6HO7KdN; Tue, 09 Jan 2024 21:38:39 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by mx.groups.io with SMTP id smtpd.web10.5935.1704865118127832874 for ; Tue, 09 Jan 2024 21:38:38 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="5501259" X-IronPort-AV: E=Sophos;i="6.04,184,1695711600"; d="scan'208";a="5501259" X-Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2024 21:38:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10947"; a="872492363" X-IronPort-AV: E=Sophos;i="6.04,184,1695711600"; d="scan'208";a="872492363" X-Received: from shwdesfp01.ccr.corp.intel.com ([10.239.158.151]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jan 2024 21:38:34 -0800 From: "Zhiguang Liu" To: devel@edk2.groups.io Cc: Zhiguang Liu , Ray Ni , Laszlo Ersek , Rahul Kumar , Gerd Hoffmann , Crystal Lee Subject: [edk2-devel] [PATCH] UefiCpuPkg: Fix issue that IsModified is wrongly set in PageTableMap Date: Wed, 10 Jan 2024 13:38:28 +0800 Message-Id: <20240110053828.1473-1-zhiguang.liu@intel.com> MIME-Version: 1.0 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 Reply-To: devel@edk2.groups.io,zhiguang.liu@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: lvHm84hQHoLYkNfVv1gC6VXdx7686176AA= Content-Transfer-Encoding: 8bit X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=nTRiRq+x; 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 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4614 Fix issue that IsModified is wrongly set in PageTableMap. Cc: Ray Ni Cc: Laszlo Ersek Cc: Rahul Kumar Cc: Gerd Hoffmann Cc: Crystal Lee Signed-off-by: Zhiguang Liu --- UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c index 36b2c4e6a3..164187f151 100644 --- a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c +++ b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c @@ -567,7 +567,10 @@ PageTableLibMapInLevel ( OriginalCurrentPagingEntry.Uint64 = CurrentPagingEntry->Uint64; PageTableLibSetPle (Level, CurrentPagingEntry, Offset, Attribute, &CurrentMask); - if (OriginalCurrentPagingEntry.Uint64 != CurrentPagingEntry->Uint64) { + if (Modify && (OriginalCurrentPagingEntry.Uint64 != CurrentPagingEntry->Uint64)) { + // + // The page table entry can be changed by this function only when Modify is true. + // *IsModified = TRUE; } } @@ -609,7 +612,10 @@ PageTableLibMapInLevel ( // Check if ParentPagingEntry entry is modified here is enough. Except the changes happen in leaf PagingEntry during // the while loop, if there is any other change happens in page table, the ParentPagingEntry must has been modified. // - if (OriginalParentPagingEntry.Uint64 != ParentPagingEntry->Uint64) { + if (Modify && (OriginalParentPagingEntry.Uint64 != ParentPagingEntry->Uint64)) { + // + // The page table entry can be changed by this function only when Modify is true. + // *IsModified = TRUE; } -- 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113513): https://edk2.groups.io/g/devel/message/113513 Mute This Topic: https://groups.io/mt/103636407/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-