tools/power/x86/intel-speed-select: Fix invalid core mask
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Tue, 19 May 2020 23:28:34 +0000 (16:28 -0700)
committerSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Fri, 22 May 2020 18:18:15 +0000 (11:18 -0700)
The core mask display is wrong in some cases. This is showing more
cpus than the mask has. This is because mask is 64 bit but it used
with BIT() macro to get the presence of CPU which doesn't support
unsigned long long. Added a new macro for BIT_ULL and use that
to get the presence of a CPU.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
tools/power/x86/intel-speed-select/isst-config.c
tools/power/x86/intel-speed-select/isst.h

index 8b99e40..9f68f51 100644 (file)
@@ -653,7 +653,7 @@ void set_cpu_mask_from_punit_coremask(int cpu, unsigned long long core_mask,
        pkg_id = get_physical_package_id(cpu);
 
        for (i = 0; i < 64; ++i) {
-               if (core_mask & BIT(i)) {
+               if (core_mask & BIT_ULL(i)) {
                        int j;
 
                        for (j = 0; j < topo_max_cpus; ++j) {
index 2e1afd8..094ba45 100644 (file)
@@ -29,6 +29,7 @@
 #include <sys/ioctl.h>
 
 #define BIT(x) (1 << (x))
+#define BIT_ULL(nr) (1ULL << (nr))
 #define GENMASK(h, l) (((~0UL) << (l)) & (~0UL >> (sizeof(long) * 8 - 1 - (h))))
 #define GENMASK_ULL(h, l)                                                      \
        (((~0ULL) << (l)) & (~0ULL >> (sizeof(long long) * 8 - 1 - (h))))