add SMT detection for newer AMD processors
The change seems to be more in the nomenclature than in the way the topology is advertised by the hardware. Tested by: truckman (earlier version of the change) MFC after: 2 weeks
This commit is contained in:
parent
4315cc14ea
commit
3caafc04f1
@ -255,6 +255,22 @@ topo_probe_amd(void)
|
||||
pkg_id_shift =
|
||||
mask_width((cpu_procinfo2 & AMDID_CMP_CORES) + 1);
|
||||
|
||||
/*
|
||||
* Families prior to 16h define the following value as
|
||||
* cores per compute unit and we don't really care about the AMD
|
||||
* compute units at the moment. Perhaps we should treat them as
|
||||
* cores and cores within the compute units as hardware threads,
|
||||
* but that's up for debate.
|
||||
* Later families define the value as threads per compute unit,
|
||||
* so we are following AMD's nomenclature here.
|
||||
*/
|
||||
if ((amd_feature2 & AMDID2_TOPOLOGY) != 0 &&
|
||||
CPUID_TO_FAMILY(cpu_id) >= 0x16) {
|
||||
cpuid_count(0x8000001e, 0, p);
|
||||
share_count = ((p[1] >> 8) & 0xff) + 1;
|
||||
core_id_shift = mask_width(share_count);
|
||||
}
|
||||
|
||||
if ((amd_feature2 & AMDID2_TOPOLOGY) != 0) {
|
||||
for (i = 0; ; i++) {
|
||||
cpuid_count(0x8000001d, i, p);
|
||||
|
Loading…
Reference in New Issue
Block a user