util: Use maximum number of CPUs for determining cache topology
authorIan Romanick <ian.d.romanick@intel.com>
Wed, 9 Jun 2021 16:24:45 +0000 (09:24 -0700)
committerMarge Bot <eric+marge@anholt.net>
Tue, 15 Jun 2021 20:01:53 +0000 (20:01 +0000)
commit59ca535576d31554c68c22ac3314ef0842018341
tree9cf83cef9bf1fcef3869b10f0b7951360b900e23
parentc12b52b8567ebb06ef141a7432ea1abdf868bb3d
util: Use maximum number of CPUs for determining cache topology

This prevents problems when some CPUs are offline.  In a four CPU
system, if CPUs 1 and 2 are offline, the cache topology code would
only examine CPUs 0 and 1... giving incorrect information.

The types are changed to int16_t so that the offset of num_L3_caches
does not change.  This triggered a STATIC_ASSERT failure:

STATIC_ASSERT(offsetof(struct util_cpu_caps_t, num_L3_caches) == 5 * sizeof(uint32_t));

I'm assuming there's some assembly code or something that depends on
this offset, and I don't feel like messing with it.

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11228>
src/util/u_cpu_detect.c
src/util/u_cpu_detect.h