Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

powercap: intel_rapl: Use shifts for power-of-2 operations

Replace division by (1 << value) with shift operations for clarity and
consistency. Add ULL suffix to avoid undefined behavior from shifting
signed integers.

No functional changes intended.

Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Link: https://patch.msgid.link/20260212233044.329790-6-sathyanarayanan.kuppuswamy@linux.intel.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Kuppuswamy Sathyanarayanan and committed by
Rafael J. Wysocki
923860a8 637bf740

+10 -10
+10 -10
drivers/powercap/intel_rapl_common.c
··· 964 964 } 965 965 966 966 value = (ra.value & ENERGY_UNIT_MASK) >> ENERGY_UNIT_OFFSET; 967 - rd->energy_unit = ENERGY_UNIT_SCALE * 1000000 / (1 << value); 967 + rd->energy_unit = (ENERGY_UNIT_SCALE * 1000000) >> value; 968 968 969 969 value = (ra.value & POWER_UNIT_MASK) >> POWER_UNIT_OFFSET; 970 - rd->power_unit = 1000000 / (1 << value); 970 + rd->power_unit = 1000000 >> value; 971 971 972 972 value = (ra.value & TIME_UNIT_MASK) >> TIME_UNIT_OFFSET; 973 - rd->time_unit = 1000000 / (1 << value); 973 + rd->time_unit = 1000000 >> value; 974 974 975 975 pr_debug("Core CPU %s:%s energy=%dpJ, time=%dus, power=%duW\n", 976 976 rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit); ··· 992 992 } 993 993 994 994 value = (ra.value & ENERGY_UNIT_MASK) >> ENERGY_UNIT_OFFSET; 995 - rd->energy_unit = ENERGY_UNIT_SCALE * 1 << value; 995 + rd->energy_unit = ENERGY_UNIT_SCALE * (1ULL << value); 996 996 997 997 value = (ra.value & POWER_UNIT_MASK) >> POWER_UNIT_OFFSET; 998 - rd->power_unit = (1 << value) * 1000; 998 + rd->power_unit = (1ULL << value) * 1000; 999 999 1000 1000 value = (ra.value & TIME_UNIT_MASK) >> TIME_UNIT_OFFSET; 1001 - rd->time_unit = 1000000 / (1 << value); 1001 + rd->time_unit = 1000000 >> value; 1002 1002 1003 1003 pr_debug("Atom %s:%s energy=%dpJ, time=%dus, power=%duW\n", 1004 1004 rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit); ··· 1121 1121 if (!to_raw) { 1122 1122 f = (value & 0x60) >> 5; 1123 1123 y = value & 0x1f; 1124 - value = (1 << y) * (4 + f) * rd->time_unit / 4; 1124 + value = (1ULL << y) * (4 + f) * rd->time_unit / 4; 1125 1125 } else { 1126 1126 if (value < rd->time_unit) 1127 1127 return 0; ··· 1169 1169 } 1170 1170 1171 1171 value = (ra.value & TPMI_ENERGY_UNIT_MASK) >> TPMI_ENERGY_UNIT_OFFSET; 1172 - rd->energy_unit = ENERGY_UNIT_SCALE * 1000000 / (1 << value); 1172 + rd->energy_unit = (ENERGY_UNIT_SCALE * 1000000) >> value; 1173 1173 1174 1174 value = (ra.value & TPMI_POWER_UNIT_MASK) >> TPMI_POWER_UNIT_OFFSET; 1175 - rd->power_unit = 1000000 / (1 << value); 1175 + rd->power_unit = 1000000 >> value; 1176 1176 1177 1177 value = (ra.value & TPMI_TIME_UNIT_MASK) >> TPMI_TIME_UNIT_OFFSET; 1178 - rd->time_unit = 1000000 / (1 << value); 1178 + rd->time_unit = 1000000 >> value; 1179 1179 1180 1180 pr_debug("Core CPU %s:%s energy=%dpJ, time=%dus, power=%duW\n", 1181 1181 rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit);