Reviewed-by: Ray Ni <ray...@intel.com> Thanks, Ray > -----Original Message----- > From: Liu, Zhiguang <zhiguang....@intel.com> > Sent: Wednesday, January 10, 2024 1:38 PM > To: devel@edk2.groups.io > Cc: Liu, Zhiguang <zhiguang....@intel.com>; Ni, Ray <ray...@intel.com>; Laszlo > Ersek <ler...@redhat.com>; Kumar, Rahul R <rahul.r.ku...@intel.com>; Gerd > Hoffmann <kra...@redhat.com>; Lee, Crystal <crystal...@ami.com.tw> > Subject: [PATCH] UefiCpuPkg: Fix issue that IsModified is wrongly set in > PageTableMap > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4614 > > Fix issue that IsModified is wrongly set in PageTableMap. > > Cc: Ray Ni <ray...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Rahul Kumar <rahul1.ku...@intel.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Crystal Lee <crystal...@ami.com.tw> > Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> > --- > 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 (#113521): https://edk2.groups.io/g/devel/message/113521 Mute This Topic: https://groups.io/mt/103636407/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-