Skip to content

Commit 923860a

Browse files
Kuppuswamy Sathyanarayananrafaeljw
authored andcommitted
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>
1 parent 637bf74 commit 923860a

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

drivers/powercap/intel_rapl_common.c

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -964,13 +964,13 @@ static int rapl_check_unit_core(struct rapl_domain *rd)
964964
}
965965

966966
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;
968968

969969
value = (ra.value & POWER_UNIT_MASK) >> POWER_UNIT_OFFSET;
970-
rd->power_unit = 1000000 / (1 << value);
970+
rd->power_unit = 1000000 >> value;
971971

972972
value = (ra.value & TIME_UNIT_MASK) >> TIME_UNIT_OFFSET;
973-
rd->time_unit = 1000000 / (1 << value);
973+
rd->time_unit = 1000000 >> value;
974974

975975
pr_debug("Core CPU %s:%s energy=%dpJ, time=%dus, power=%duW\n",
976976
rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit);
@@ -992,13 +992,13 @@ static int rapl_check_unit_atom(struct rapl_domain *rd)
992992
}
993993

994994
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);
996996

997997
value = (ra.value & POWER_UNIT_MASK) >> POWER_UNIT_OFFSET;
998-
rd->power_unit = (1 << value) * 1000;
998+
rd->power_unit = (1ULL << value) * 1000;
999999

10001000
value = (ra.value & TIME_UNIT_MASK) >> TIME_UNIT_OFFSET;
1001-
rd->time_unit = 1000000 / (1 << value);
1001+
rd->time_unit = 1000000 >> value;
10021002

10031003
pr_debug("Atom %s:%s energy=%dpJ, time=%dus, power=%duW\n",
10041004
rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit);
@@ -1121,7 +1121,7 @@ static u64 rapl_compute_time_window_core(struct rapl_domain *rd, u64 value,
11211121
if (!to_raw) {
11221122
f = (value & 0x60) >> 5;
11231123
y = value & 0x1f;
1124-
value = (1 << y) * (4 + f) * rd->time_unit / 4;
1124+
value = (1ULL << y) * (4 + f) * rd->time_unit / 4;
11251125
} else {
11261126
if (value < rd->time_unit)
11271127
return 0;
@@ -1169,13 +1169,13 @@ static int rapl_check_unit_tpmi(struct rapl_domain *rd)
11691169
}
11701170

11711171
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;
11731173

11741174
value = (ra.value & TPMI_POWER_UNIT_MASK) >> TPMI_POWER_UNIT_OFFSET;
1175-
rd->power_unit = 1000000 / (1 << value);
1175+
rd->power_unit = 1000000 >> value;
11761176

11771177
value = (ra.value & TPMI_TIME_UNIT_MASK) >> TPMI_TIME_UNIT_OFFSET;
1178-
rd->time_unit = 1000000 / (1 << value);
1178+
rd->time_unit = 1000000 >> value;
11791179

11801180
pr_debug("Core CPU %s:%s energy=%dpJ, time=%dus, power=%duW\n",
11811181
rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit);

0 commit comments

Comments
 (0)