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 8b99e403e68ce4d3cf59660d04a5977df81ef298..9f68f51ca6523f9aa19569587e3ab4523296b93c 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 2e1afd856a78b64c396feef6cb5fceb21f4e78dd..094ba4589a9c095438d6e9c3a3fa0338784d1173 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))))