From 0153e8ae3a0673264a1a30f3dd846c73e0cfeb01 Mon Sep 17 00:00:00 2001 From: Brice Goglin Date: Fri, 20 Aug 2021 15:45:55 +0200 Subject: [PATCH] windows: add support for Die and Module topology levels This looks like what Intel added in x86 (and what we already support in the x86 backend) but it's missing the "Tile" level for some reason. RelationProcessorDie uses our existing DIE object. RelationProcessorModule uses GROUP with subkind "Module" just like x86 did. Signed-off-by: Brice Goglin --- hwloc/topology-windows.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/hwloc/topology-windows.c b/hwloc/topology-windows.c index 30272830ac..220a83d8f5 100644 --- a/hwloc/topology-windows.c +++ b/hwloc/topology-windows.c @@ -1090,9 +1090,19 @@ hwloc_look_windows(struct hwloc_backend *backend, struct hwloc_disc_status *dsta break; case RelationProcessorPackage: type = HWLOC_OBJ_PACKAGE; + num = procInfo->Processor.GroupCount; + GroupMask = procInfo->Processor.GroupMask; + break; + case RelationProcessorDie: + type = HWLOC_OBJ_DIE; num = procInfo->Processor.GroupCount; GroupMask = procInfo->Processor.GroupMask; - break; + break; + case RelationProcessorModule: + type = HWLOC_OBJ_GROUP; + num = procInfo->Processor.GroupCount; + GroupMask = procInfo->Processor.GroupMask; + break; case RelationCache: type = (procInfo->Cache.Type == CacheInstruction ? HWLOC_OBJ_L1ICACHE : HWLOC_OBJ_L1CACHE) + procInfo->Cache.Level - 1; /* GroupCount added approximately with NumaNode.GroupCount above */ @@ -1214,6 +1224,18 @@ hwloc_look_windows(struct hwloc_backend *backend, struct hwloc_disc_status *dsta continue; } break; + case HWLOC_OBJ_GROUP: + switch (procInfo[i].Relationship) { + case RelationGroup: + obj->attr->group.kind = HWLOC_GROUP_KIND_WINDOWS_PROCESSOR_GROUP; + break; + case RelationProcessorModule: + obj->attr->group.kind = HWLOC_GROUP_KIND_INTEL_MODULE; + break; + default: + obj->attr->group.kind = HWLOC_GROUP_KIND_WINDOWS_RELATIONSHIP_UNKNOWN; + } + break; default: break; }