tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: assertion "lp_max >= core_max" failed



cmeerw%cmeerw.org@localhost (Christof Meerwald) writes:

>Turns out in my case the CPUID_HTT flag is not set (so lp_max = 1),
>but the maximum number of cores per package is set to 16 - 1, so
>core_max = 16.

That's a confusing number, the chip has 14 cores and 28 threads.
If HTT is disabled, that would still be only 14 threads. So
I guess, the VM software fakes these values.


>but we don't check for that condition in the Intel case - should we?
>Adding that case for Intel seems to fix it for me, e.g.

>	/* Check for leaf 4 support. */
>	if (ci->ci_max_cpuid >= 4 &&
>	    (ci->ci_feat_val[0] & CPUID_HTT) != 0) {
>		/* Maximum number of Cores per package (eax[31:26]). */
>		x86_cpuid2(4, 0, descs);
>		core_max = __SHIFTOUT(descs[0], CPUID_DCP_CORE_P_PKG)
>		    + 1;
>	} else {
>		core_max = 1;
>	}

Wouldn't that tell that we only have 1 core / 1 thread ?

Maybe instead of failing when lp_max < core_max, we should just
gracefully handle this case as lp_max == core_max.



Home | Main Index | Thread Index | Old Index