Messages in this thread | | | Date | Sun, 11 Jun 2017 19:51:06 +0200 | From | Borislav Petkov <> | Subject | Re: [Patch v2 2/2] amd: uncore: Get correct number of cores sharing last level cache |
| |
On Thu, Jun 08, 2017 at 02:48:24PM -0500, Janakarajan Natarajan wrote: > In Family 17h, the number of cores sharing a cache level is obtained > from the Cache Properties CPUID leaf (0x8000001d) by passing in the > cache level in ECX. In prior families, a cache level of 2 was used to > determine this information. > > To get the right information, irrespective of Family, iterate over > the cache levels using CPUID 0x8000001d. The last level cache is the > last value to return a non-zero value in EAX. > > Signed-off-by: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com> > --- > arch/x86/events/amd/uncore.c | 17 ++++++++++++++--- > 1 file changed, 14 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/events/amd/uncore.c b/arch/x86/events/amd/uncore.c > index e34f8a6..6952262 100644 > --- a/arch/x86/events/amd/uncore.c > +++ b/arch/x86/events/amd/uncore.c > @@ -400,11 +400,22 @@ static int amd_uncore_cpu_starting(unsigned int cpu) > > if (amd_uncore_llc) { > unsigned int apicid = cpu_data(cpu).apicid; > - unsigned int nshared; > + unsigned int nshared, cache_topology, prev_eax = 0;
cache_topology is too long and not really what it is. Simply call it subleaf.
> uncore = *per_cpu_ptr(amd_uncore_llc, cpu); > - cpuid_count(0x8000001d, 2, &eax, &ebx, &ecx, &edx); > - nshared = ((eax >> 14) & 0xfff) + 1;
<---- newline here.
> + /* > + * Iterate over Cache Topology Definition leaves until no > + * more cache descriptions are available ^ | All sentences need to end with a fullstop.--------------+
> + */ > + for(cache_topology = 0; cache_topology < 5; cache_topology++) { > + cpuid_count(0x8000001d, cache_topology, &eax, &ebx, &ecx, &edx); > + > + if ((eax & 0x1f) == 0) /* EAX[0:4] gives type of cache */
No side comments, put it over the if-line.
Also, we generally do 0-tests this way:
if (!(eax & 0x1f))
-- Regards/Gruss, Boris.
Good mailing practices for 400: avoid top-posting and trim the reply.
| |