Hi Tom, I do not see any harm in zeroing ECX in AsmCpuid().
If it is not zeroed, then it would have an undefined value. However, calling AsmCpuid() for any Index that evaluates ECX (including a check for 0) should never be done. If ECX is evaluated for a given Index, then AsmCpuIdEx() must be used. Mike > -----Original Message----- > From: Tom Lendacky <thomas.lenda...@amd.com> > Sent: Wednesday, January 17, 2024 1:26 PM > To: devel@edk2.groups.io; Kinney, Michael D > <michael.d.kin...@intel.com>; Gao, Liming <liming....@intel.com>; Liu, > Zhiguang <zhiguang....@intel.com>; Dong, Eric <eric.d...@intel.com>; Ni, > Ray <ray...@intel.com>; Kumar, Rahul R <rahul.r.ku...@intel.com>; Gerd > Hoffmann <kra...@redhat.com>; Ard Biesheuvel <ardb+tianoc...@kernel.org> > Cc: Michael Roth <michael.r...@amd.com> > Subject: Re: [edk2-devel] [PATCH 1/2] UefiCpuPkg/MpInitLib: Use > AsmCpuidEx() for CPUID_EXTENDED_TOPOLOGY leaf > > On 11/28/23 08:35, Lendacky, Thomas via groups.io wrote: > > On 11/6/23 17:15, Tom Lendacky wrote: > >> On 11/6/23 16:45, Lendacky, Thomas via groups.io wrote: > >>> The CPUID_EXTENDED_TOPOLOGY CPUID leaf takes a subleaf as input when > >>> returning CPUID information. However, the AsmCpuid() function does > not > >>> zero out ECX before the CPUID instruction, so the input leaf is used > as > >>> the sub-leaf for the CPUID request and returns erroneous/invalid > CPUID > >>> data, since the intent of the request was to get data related to > sub-leaf > >>> 0. Instead, use AsmCpuidEx() for the CPUID_EXTENDED_TOPOLOGY leaf. > >> > >> Alternatively, the AsmCpuid() function could be changed to XOR ECX > >> before invoking the CPUID instruction. This would ensure that the 0 > >> sub-leaf is returned for any CPUID leaves that support sub-leaves. > >> Thoughts? > >> > >> Adding some additional maintainers for their thoughts, too. > > > > Any thoughts on this approach (as a separate, unrelated patch) to > > eliminate future issues that could pop up? > > > > Seems like zeroing out ECX before calling CPUID would be an > appropriate > > thing to do, but I'm not sure if that will have any impact on the > existing > > code base... it shouldn't, but you never know. > > Just a re-ping for thoughts on this. > > Thanks, > Tom > > > > > Thanks, > > Tom > > > >> > >> Thanks, > >> Tom -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#114015): https://edk2.groups.io/g/devel/message/114015 Mute This Topic: https://groups.io/mt/102432782/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-