[Mesa-dev] [PATCH] swr: Prune empty nodes in CalculateProcessorTopology.
Bruce Cherniak
bruce.cherniak at intel.com
Thu Jan 19 21:44:52 UTC 2017
CalculateProcessorTopology tries to figure out system topology by
parsing /proc/cpuinfo to determine the number of threads, cores, and
NUMA nodes. There are some architectures where the "physical id" begins
with 1 rather than 0, which was creating and empty "0" node and causing a
crash in CreateThreadPool.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97102
---
src/gallium/drivers/swr/rasterizer/core/threads.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/gallium/drivers/swr/rasterizer/core/threads.cpp b/src/gallium/drivers/swr/rasterizer/core/threads.cpp
index ee12612..f1c3030 100644
--- a/src/gallium/drivers/swr/rasterizer/core/threads.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/threads.cpp
@@ -217,6 +217,15 @@ void CalculateProcessorTopology(CPUNumaNodes& out_nodes, uint32_t& out_numThread
out_numThreadsPerProcGroup++;
}
+ /* Prune empty numa nodes */
+ for (auto it = out_nodes.begin(); it != out_nodes.end(); ) {
+ if ((*it).cores.size() == 0)
+ it = out_nodes.erase(it);
+ else
+ ++it;
+ }
+
+ /* Prune empty core nodes */
for (uint32_t node = 0; node < out_nodes.size(); node++) {
auto& numaNode = out_nodes[node];
auto it = numaNode.cores.begin();
--
2.7.4
More information about the mesa-dev
mailing list