Reviewed-by: Michael D Kinney <michael.d.kin...@intel.com> > -----Original Message----- > From: Ni, Ray <ray...@intel.com> > Sent: Tuesday, March 21, 2023 4:57 PM > To: devel@edk2.groups.io > Cc: Dong, Eric <eric.d...@intel.com>; Kumar, Rahul R > <rahul.r.ku...@intel.com>; Gerd Hoffmann <kra...@redhat.com>; Kinney, > Michael D <michael.d.kin...@intel.com>; Anadani, Ahmad > <ahmad.anad...@intel.com> > Subject: [PATCH 5/6] UefiCpuPkg/CpuDxe: Substract TME-MK KEY_ID_BITS from CPU > max PA > > CPUID enumeration of MAX_PA is unaffected by TME-MK activation and > will continue to report the maximum physical address bits available > for software to use, irrespective of the number of KeyID bits. > > So, we need to check if TME is enabled and adjust the PA size > accordingly. > > Signed-off-by: Ray Ni <ray...@intel.com> > Cc: Eric Dong <eric.d...@intel.com> > Cc: Rahul Kumar <rahul1.ku...@intel.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Ahmad Anadani <ahmad.anad...@intel.com> > --- > UefiCpuPkg/CpuDxe/CpuDxe.c | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.c b/UefiCpuPkg/CpuDxe/CpuDxe.c > index 920976c576..3febd59d99 100644 > --- a/UefiCpuPkg/CpuDxe/CpuDxe.c > +++ b/UefiCpuPkg/CpuDxe/CpuDxe.c > @@ -505,8 +505,11 @@ InitializeMtrrMask ( > VOID > > ) > > { > > - UINT32 MaxExtendedFunction; > > - CPUID_VIR_PHY_ADDRESS_SIZE_EAX VirPhyAddressSize; > > + UINT32 MaxExtendedFunction; > > + CPUID_VIR_PHY_ADDRESS_SIZE_EAX VirPhyAddressSize; > > + UINT32 MaxFunction; > > + CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_ECX ExtendedFeatureFlagsEcx; > > + MSR_IA32_TME_ACTIVATE_REGISTER TmeActivate; > > > > AsmCpuid (CPUID_EXTENDED_FUNCTION, &MaxExtendedFunction, NULL, NULL, NULL); > > > > @@ -516,6 +519,23 @@ InitializeMtrrMask ( > VirPhyAddressSize.Bits.PhysicalAddressBits = 36; > > } > > > > + // > > + // CPUID enumeration of MAX_PA is unaffected by TME-MK activation and will > continue > > + // to report the maximum physical address bits available for software to > use, > > + // irrespective of the number of KeyID bits. > > + // So, we need to check if TME is enabled and adjust the PA size > accordingly. > > + // > > + AsmCpuid (CPUID_SIGNATURE, &MaxFunction, NULL, NULL, NULL); > > + if (MaxFunction >= CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS) { > > + AsmCpuidEx (CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, 0, NULL, NULL, > &ExtendedFeatureFlagsEcx.Uint32, NULL); > > + if (ExtendedFeatureFlagsEcx.Bits.TME_EN == 1) { > > + TmeActivate.Uint64 = AsmReadMsr64 (MSR_IA32_TME_ACTIVATE); > > + if (TmeActivate.Bits.TmeEnable == 1) { > > + VirPhyAddressSize.Bits.PhysicalAddressBits -= > TmeActivate.Bits.MkTmeKeyidBits; > > + } > > + } > > + } > > + > > mValidMtrrBitsMask = LShiftU64 (1, > VirPhyAddressSize.Bits.PhysicalAddressBits) - 1; > > mValidMtrrAddressMask = mValidMtrrBitsMask & 0xfffffffffffff000ULL; > > } > > -- > 2.39.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#102139): https://edk2.groups.io/g/devel/message/102139 Mute This Topic: https://groups.io/mt/97767975/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-