Skip to content

Commit 11edbe5

Browse files
zhang-ruirafaeljw
authored andcommitted
powercap: intel_rapl: Use index to initialize primitive information
Currently, the RAPL primitive information array is required to be initialized in the order of enum rapl_primitives. This can break easily, especially when different RAPL Interfaces may support different sets of primitives. Convert the code to initialize the primitive information using array index explicitly. No functional change. Signed-off-by: Zhang Rui <[email protected]> Tested-by: Wang Wendy <[email protected]> Signed-off-by: Rafael J. Wysocki <[email protected]>
1 parent cb532e7 commit 11edbe5

File tree

1 file changed

+26
-28
lines changed

1 file changed

+26
-28
lines changed

drivers/powercap/intel_rapl_common.c

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -629,61 +629,59 @@ static u64 rapl_unit_xlate(struct rapl_domain *rd, enum unit_type type,
629629
return div64_u64(value, scale);
630630
}
631631

632-
/* in the order of enum rapl_primitives */
633-
static struct rapl_primitive_info rpi_default[] = {
632+
static struct rapl_primitive_info rpi_default[NR_RAPL_PRIMITIVES] = {
634633
/* name, mask, shift, msr index, unit divisor */
635-
PRIMITIVE_INFO_INIT(ENERGY_COUNTER, ENERGY_STATUS_MASK, 0,
634+
[ENERGY_COUNTER] = PRIMITIVE_INFO_INIT(ENERGY_COUNTER, ENERGY_STATUS_MASK, 0,
636635
RAPL_DOMAIN_REG_STATUS, ENERGY_UNIT, 0),
637-
PRIMITIVE_INFO_INIT(POWER_LIMIT1, POWER_LIMIT1_MASK, 0,
636+
[POWER_LIMIT1] = PRIMITIVE_INFO_INIT(POWER_LIMIT1, POWER_LIMIT1_MASK, 0,
638637
RAPL_DOMAIN_REG_LIMIT, POWER_UNIT, 0),
639-
PRIMITIVE_INFO_INIT(POWER_LIMIT2, POWER_LIMIT2_MASK, 32,
638+
[POWER_LIMIT2] = PRIMITIVE_INFO_INIT(POWER_LIMIT2, POWER_LIMIT2_MASK, 32,
640639
RAPL_DOMAIN_REG_LIMIT, POWER_UNIT, 0),
641-
PRIMITIVE_INFO_INIT(POWER_LIMIT4, POWER_LIMIT4_MASK, 0,
640+
[POWER_LIMIT4] = PRIMITIVE_INFO_INIT(POWER_LIMIT4, POWER_LIMIT4_MASK, 0,
642641
RAPL_DOMAIN_REG_PL4, POWER_UNIT, 0),
643-
PRIMITIVE_INFO_INIT(FW_LOCK, POWER_LOW_LOCK, 31,
642+
[FW_LOCK] = PRIMITIVE_INFO_INIT(FW_LOCK, POWER_LOW_LOCK, 31,
644643
RAPL_DOMAIN_REG_LIMIT, ARBITRARY_UNIT, 0),
645-
PRIMITIVE_INFO_INIT(PL1_ENABLE, POWER_LIMIT1_ENABLE, 15,
644+
[PL1_ENABLE] = PRIMITIVE_INFO_INIT(PL1_ENABLE, POWER_LIMIT1_ENABLE, 15,
646645
RAPL_DOMAIN_REG_LIMIT, ARBITRARY_UNIT, 0),
647-
PRIMITIVE_INFO_INIT(PL1_CLAMP, POWER_LIMIT1_CLAMP, 16,
646+
[PL1_CLAMP] = PRIMITIVE_INFO_INIT(PL1_CLAMP, POWER_LIMIT1_CLAMP, 16,
648647
RAPL_DOMAIN_REG_LIMIT, ARBITRARY_UNIT, 0),
649-
PRIMITIVE_INFO_INIT(PL2_ENABLE, POWER_LIMIT2_ENABLE, 47,
648+
[PL2_ENABLE] = PRIMITIVE_INFO_INIT(PL2_ENABLE, POWER_LIMIT2_ENABLE, 47,
650649
RAPL_DOMAIN_REG_LIMIT, ARBITRARY_UNIT, 0),
651-
PRIMITIVE_INFO_INIT(PL2_CLAMP, POWER_LIMIT2_CLAMP, 48,
650+
[PL2_CLAMP] = PRIMITIVE_INFO_INIT(PL2_CLAMP, POWER_LIMIT2_CLAMP, 48,
652651
RAPL_DOMAIN_REG_LIMIT, ARBITRARY_UNIT, 0),
653-
PRIMITIVE_INFO_INIT(PL4_ENABLE, POWER_LIMIT4_MASK, 0,
652+
[PL4_ENABLE] = PRIMITIVE_INFO_INIT(PL4_ENABLE, POWER_LIMIT4_MASK, 0,
654653
RAPL_DOMAIN_REG_PL4, ARBITRARY_UNIT, 0),
655-
PRIMITIVE_INFO_INIT(TIME_WINDOW1, TIME_WINDOW1_MASK, 17,
654+
[TIME_WINDOW1] = PRIMITIVE_INFO_INIT(TIME_WINDOW1, TIME_WINDOW1_MASK, 17,
656655
RAPL_DOMAIN_REG_LIMIT, TIME_UNIT, 0),
657-
PRIMITIVE_INFO_INIT(TIME_WINDOW2, TIME_WINDOW2_MASK, 49,
656+
[TIME_WINDOW2] = PRIMITIVE_INFO_INIT(TIME_WINDOW2, TIME_WINDOW2_MASK, 49,
658657
RAPL_DOMAIN_REG_LIMIT, TIME_UNIT, 0),
659-
PRIMITIVE_INFO_INIT(THERMAL_SPEC_POWER, POWER_INFO_THERMAL_SPEC_MASK,
658+
[THERMAL_SPEC_POWER] = PRIMITIVE_INFO_INIT(THERMAL_SPEC_POWER, POWER_INFO_THERMAL_SPEC_MASK,
660659
0, RAPL_DOMAIN_REG_INFO, POWER_UNIT, 0),
661-
PRIMITIVE_INFO_INIT(MAX_POWER, POWER_INFO_MAX_MASK, 32,
660+
[MAX_POWER] = PRIMITIVE_INFO_INIT(MAX_POWER, POWER_INFO_MAX_MASK, 32,
662661
RAPL_DOMAIN_REG_INFO, POWER_UNIT, 0),
663-
PRIMITIVE_INFO_INIT(MIN_POWER, POWER_INFO_MIN_MASK, 16,
662+
[MIN_POWER] = PRIMITIVE_INFO_INIT(MIN_POWER, POWER_INFO_MIN_MASK, 16,
664663
RAPL_DOMAIN_REG_INFO, POWER_UNIT, 0),
665-
PRIMITIVE_INFO_INIT(MAX_TIME_WINDOW, POWER_INFO_MAX_TIME_WIN_MASK, 48,
664+
[MAX_TIME_WINDOW] = PRIMITIVE_INFO_INIT(MAX_TIME_WINDOW, POWER_INFO_MAX_TIME_WIN_MASK, 48,
666665
RAPL_DOMAIN_REG_INFO, TIME_UNIT, 0),
667-
PRIMITIVE_INFO_INIT(THROTTLED_TIME, PERF_STATUS_THROTTLE_TIME_MASK, 0,
666+
[THROTTLED_TIME] = PRIMITIVE_INFO_INIT(THROTTLED_TIME, PERF_STATUS_THROTTLE_TIME_MASK, 0,
668667
RAPL_DOMAIN_REG_PERF, TIME_UNIT, 0),
669-
PRIMITIVE_INFO_INIT(PRIORITY_LEVEL, PP_POLICY_MASK, 0,
668+
[PRIORITY_LEVEL] = PRIMITIVE_INFO_INIT(PRIORITY_LEVEL, PP_POLICY_MASK, 0,
670669
RAPL_DOMAIN_REG_POLICY, ARBITRARY_UNIT, 0),
671-
PRIMITIVE_INFO_INIT(PSYS_POWER_LIMIT1, PSYS_POWER_LIMIT1_MASK, 0,
670+
[PSYS_POWER_LIMIT1] = PRIMITIVE_INFO_INIT(PSYS_POWER_LIMIT1, PSYS_POWER_LIMIT1_MASK, 0,
672671
RAPL_DOMAIN_REG_LIMIT, POWER_UNIT, 0),
673-
PRIMITIVE_INFO_INIT(PSYS_POWER_LIMIT2, PSYS_POWER_LIMIT2_MASK, 32,
672+
[PSYS_POWER_LIMIT2] = PRIMITIVE_INFO_INIT(PSYS_POWER_LIMIT2, PSYS_POWER_LIMIT2_MASK, 32,
674673
RAPL_DOMAIN_REG_LIMIT, POWER_UNIT, 0),
675-
PRIMITIVE_INFO_INIT(PSYS_PL1_ENABLE, PSYS_POWER_LIMIT1_ENABLE, 17,
674+
[PSYS_PL1_ENABLE] = PRIMITIVE_INFO_INIT(PSYS_PL1_ENABLE, PSYS_POWER_LIMIT1_ENABLE, 17,
676675
RAPL_DOMAIN_REG_LIMIT, ARBITRARY_UNIT, 0),
677-
PRIMITIVE_INFO_INIT(PSYS_PL2_ENABLE, PSYS_POWER_LIMIT2_ENABLE, 49,
676+
[PSYS_PL2_ENABLE] = PRIMITIVE_INFO_INIT(PSYS_PL2_ENABLE, PSYS_POWER_LIMIT2_ENABLE, 49,
678677
RAPL_DOMAIN_REG_LIMIT, ARBITRARY_UNIT, 0),
679-
PRIMITIVE_INFO_INIT(PSYS_TIME_WINDOW1, PSYS_TIME_WINDOW1_MASK, 19,
678+
[PSYS_TIME_WINDOW1] = PRIMITIVE_INFO_INIT(PSYS_TIME_WINDOW1, PSYS_TIME_WINDOW1_MASK, 19,
680679
RAPL_DOMAIN_REG_LIMIT, TIME_UNIT, 0),
681-
PRIMITIVE_INFO_INIT(PSYS_TIME_WINDOW2, PSYS_TIME_WINDOW2_MASK, 51,
680+
[PSYS_TIME_WINDOW2] = PRIMITIVE_INFO_INIT(PSYS_TIME_WINDOW2, PSYS_TIME_WINDOW2_MASK, 51,
682681
RAPL_DOMAIN_REG_LIMIT, TIME_UNIT, 0),
683682
/* non-hardware */
684-
PRIMITIVE_INFO_INIT(AVERAGE_POWER, 0, 0, 0, POWER_UNIT,
683+
[AVERAGE_POWER] = PRIMITIVE_INFO_INIT(AVERAGE_POWER, 0, 0, 0, POWER_UNIT,
685684
RAPL_PRIMITIVE_DERIVED),
686-
{NULL, 0, 0, 0},
687685
};
688686

689687
static struct rapl_primitive_info *get_rpi(struct rapl_package *rp, int prim)

0 commit comments

Comments
 (0)