Re: assertion "lp_max >= core_max" failed
[email protected] (Michael van Elst)
| Newsgroups | gmane.os.netbsd.devel.kernel |
|---|---|
| Organization | Serpens User Group |
| Message-ID | <[email protected]> |
[email protected] (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.