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