]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
powercap: intel_rapl: Use unit conversion macros from units.h
authorKuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
Thu, 12 Feb 2026 23:30:39 +0000 (15:30 -0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 5 Mar 2026 14:52:39 +0000 (15:52 +0100)
Replace hardcoded numeric constants with standard unit conversion
macros from linux/units.h for better code clarity and
self-documentation.

Add MICROJOULE_PER_JOULE and NANOJOULE_PER_JOULE to units.h to
support energy unit conversions, following the existing pattern
for power units.

No functional changes.

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-8-sathyanarayanan.kuppuswamy@linux.intel.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/powercap/intel_rapl_common.c
include/linux/units.h

index 8dde3b0eb45441556c6739cbef9f9c159ccfbd49..380893baf9878479938df0aa4f7b068dca76e13c 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/suspend.h>
 #include <linux/sysfs.h>
 #include <linux/types.h>
+#include <linux/units.h>
 
 #include <asm/cpu_device_id.h>
 #include <asm/intel-family.h>
@@ -964,13 +965,13 @@ static int rapl_check_unit_core(struct rapl_domain *rd)
        }
 
        value = (ra.value & ENERGY_UNIT_MASK) >> ENERGY_UNIT_OFFSET;
-       rd->energy_unit = (ENERGY_UNIT_SCALE * 1000000) >> value;
+       rd->energy_unit = (ENERGY_UNIT_SCALE * MICROJOULE_PER_JOULE) >> value;
 
        value = (ra.value & POWER_UNIT_MASK) >> POWER_UNIT_OFFSET;
-       rd->power_unit = 1000000 >> value;
+       rd->power_unit = MICROWATT_PER_WATT >> value;
 
        value = (ra.value & TIME_UNIT_MASK) >> TIME_UNIT_OFFSET;
-       rd->time_unit = 1000000 >> value;
+       rd->time_unit = USEC_PER_SEC >> value;
 
        pr_debug("Core CPU %s:%s energy=%dpJ, time=%dus, power=%duW\n",
                 rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit);
@@ -995,10 +996,10 @@ static int rapl_check_unit_atom(struct rapl_domain *rd)
        rd->energy_unit = ENERGY_UNIT_SCALE * (1ULL << value);
 
        value = (ra.value & POWER_UNIT_MASK) >> POWER_UNIT_OFFSET;
-       rd->power_unit = (1ULL << value) * 1000;
+       rd->power_unit = (1ULL << value) * MILLIWATT_PER_WATT;
 
        value = (ra.value & TIME_UNIT_MASK) >> TIME_UNIT_OFFSET;
-       rd->time_unit = 1000000 >> value;
+       rd->time_unit = USEC_PER_SEC >> value;
 
        pr_debug("Atom %s:%s energy=%dpJ, time=%dus, power=%duW\n",
                 rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit);
@@ -1169,13 +1170,13 @@ static int rapl_check_unit_tpmi(struct rapl_domain *rd)
        }
 
        value = (ra.value & TPMI_ENERGY_UNIT_MASK) >> TPMI_ENERGY_UNIT_OFFSET;
-       rd->energy_unit = (ENERGY_UNIT_SCALE * 1000000) >> value;
+       rd->energy_unit = (ENERGY_UNIT_SCALE * MICROJOULE_PER_JOULE) >> value;
 
        value = (ra.value & TPMI_POWER_UNIT_MASK) >> TPMI_POWER_UNIT_OFFSET;
-       rd->power_unit = 1000000 >> value;
+       rd->power_unit = MICROWATT_PER_WATT >> value;
 
        value = (ra.value & TPMI_TIME_UNIT_MASK) >> TPMI_TIME_UNIT_OFFSET;
-       rd->time_unit = 1000000 >> value;
+       rd->time_unit = USEC_PER_SEC >> value;
 
        pr_debug("Core CPU %s:%s energy=%dpJ, time=%dus, power=%duW\n",
                 rd->rp->name, rd->name, rd->energy_unit, rd->time_unit, rd->power_unit);
@@ -1208,7 +1209,7 @@ static const struct rapl_defaults rapl_defaults_spr_server = {
        .check_unit = rapl_check_unit_core,
        .set_floor_freq = set_floor_freq_default,
        .compute_time_window = rapl_compute_time_window_core,
-       .psys_domain_energy_unit = 1000000000,
+       .psys_domain_energy_unit = NANOJOULE_PER_JOULE,
        .spr_psys_bits = true,
 };
 
index 80d57c50b9e3b324bb1f74e991da3e539d208dd3..c6d78988613a06c6f70961dcb99580a687a79792 100644 (file)
@@ -57,6 +57,9 @@
 #define MICROWATT_PER_MILLIWATT        1000UL
 #define MICROWATT_PER_WATT     1000000UL
 
+#define MICROJOULE_PER_JOULE   1000000UL
+#define NANOJOULE_PER_JOULE    1000000000UL
+
 #define BYTES_PER_KBIT         (KILO / BITS_PER_BYTE)
 #define BYTES_PER_MBIT         (MEGA / BITS_PER_BYTE)
 #define BYTES_PER_GBIT         (GIGA / BITS_PER_BYTE)