Skip to content

Commit 91e2721

Browse files
committed
fix: Gate energy threshold set on isEnergyThresholdSupported in pyzes black box test
canControl only reports whether the power limits can be changed, and energy threshold support is reported independently. Check each setter against its own capability, so --set-energy-threshold is not skipped on a domain that supports thresholds but not power limit control. Related-To: SYSM-430 Signed-off-by: Aviral Nigam <aviral.nigam@intel.com>
1 parent a5dd200 commit 91e2721

1 file changed

Lines changed: 78 additions & 52 deletions

File tree

‎bindings/sysman/python/source/examples/pyzes_black_box_test.py‎

Lines changed: 78 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,69 +1116,95 @@ def test_power_module(
11161116
print_verbose(
11171117
" Skipping power set operations due to insufficient permissions"
11181118
)
1119-
elif properties.canControl:
1120-
if limit_ext2_available and requested_limit is not None:
1121-
rc = pz.zesPowerSetLimitsExt2(power_handles[i], requested_limit)
1122-
if check_rc(f"zesPowerSetLimitsExt2(power {i}, {requested_limit})", rc):
1123-
print_verbose(f" Power limit (Ext2) set to {requested_limit} mW")
1124-
read_back = c_uint32(0)
1125-
rc = pz.zesPowerGetLimitsExt2(power_handles[i], byref(read_back))
1126-
if check_rc(f"zesPowerGetLimitsExt2(power {i}, verify)", rc):
1127-
if read_back.value == requested_limit:
1128-
print_verbose(
1129-
f" Read back power limit (Ext2): {read_back.value} mW (OK)"
1130-
)
1131-
else:
1132-
print_verbose(
1133-
f" Warning: requested power limit {requested_limit} mW "
1134-
f"does not match applied limit {read_back.value} mW"
1135-
)
1136-
1137-
# Restore the limit read before the test
1138-
rc = pz.zesPowerSetLimitsExt2(power_handles[i], limit_ext2.value)
1139-
if check_rc(f"zesPowerSetLimitsExt2(power {i}, restore)", rc):
1119+
else:
1120+
# Power limit control and energy threshold support are reported independently
1121+
if requested_limit is not None:
1122+
if not properties.canControl:
11401123
print_verbose(
1141-
f" Restored power limit (Ext2) to {limit_ext2.value} mW"
1124+
" Skipping zesPowerSetLimitsExt2 since the domain cannot be controlled"
11421125
)
1143-
1144-
if energy_threshold is not None and requested_threshold is not None:
1145-
rc = pz.zesPowerSetEnergyThreshold(
1146-
power_handles[i], requested_threshold
1147-
)
1148-
if check_rc(
1149-
f"zesPowerSetEnergyThreshold(power {i}, {requested_threshold})", rc
1150-
):
1126+
elif not limit_ext2_available:
11511127
print_verbose(
1152-
f" Energy threshold set to {requested_threshold} J"
1153-
)
1154-
read_back_threshold = pz.zes_energy_threshold_t()
1155-
rc = pz.zesPowerGetEnergyThreshold(
1156-
power_handles[i], byref(read_back_threshold)
1128+
" Skipping zesPowerSetLimitsExt2 since zesPowerGetLimitsExt2 is not available"
11571129
)
1158-
if check_rc(f"zesPowerGetEnergyThreshold(power {i}, verify)", rc):
1130+
else:
1131+
rc = pz.zesPowerSetLimitsExt2(power_handles[i], requested_limit)
1132+
if check_rc(
1133+
f"zesPowerSetLimitsExt2(power {i}, {requested_limit})", rc
1134+
):
1135+
print_verbose(
1136+
f" Power limit (Ext2) set to {requested_limit} mW"
1137+
)
1138+
read_back = c_uint32(0)
1139+
rc = pz.zesPowerGetLimitsExt2(
1140+
power_handles[i], byref(read_back)
1141+
)
1142+
if check_rc(f"zesPowerGetLimitsExt2(power {i}, verify)", rc):
1143+
if read_back.value == requested_limit:
1144+
print_verbose(
1145+
f" Read back power limit (Ext2): {read_back.value} mW (OK)"
1146+
)
1147+
else:
1148+
print_verbose(
1149+
f" Warning: requested power limit {requested_limit} mW "
1150+
f"does not match applied limit {read_back.value} mW"
1151+
)
1152+
1153+
# Restore the limit read before the test
1154+
rc = pz.zesPowerSetLimitsExt2(power_handles[i], limit_ext2.value)
1155+
if check_rc(f"zesPowerSetLimitsExt2(power {i}, restore)", rc):
11591156
print_verbose(
1160-
f" Read back energy threshold: {read_back_threshold.threshold} J "
1161-
f"(enabled: {bool(read_back_threshold.enable)}, "
1162-
f"process ID: 0x{read_back_threshold.processId:X})"
1157+
f" Restored power limit (Ext2) to {limit_ext2.value} mW"
11631158
)
11641159

1165-
# An energy threshold cannot be disabled, so only an enabled one can be restored
1166-
if energy_threshold.enable:
1160+
if requested_threshold is not None:
1161+
if not properties.isEnergyThresholdSupported:
1162+
print_verbose(
1163+
" Skipping zesPowerSetEnergyThreshold since the domain does not support energy thresholds"
1164+
)
1165+
elif energy_threshold is None:
1166+
print_verbose(
1167+
" Skipping zesPowerSetEnergyThreshold since zesPowerGetEnergyThreshold failed"
1168+
)
1169+
else:
11671170
rc = pz.zesPowerSetEnergyThreshold(
1168-
power_handles[i], energy_threshold.threshold
1171+
power_handles[i], requested_threshold
11691172
)
1170-
if check_rc(f"zesPowerSetEnergyThreshold(power {i}, restore)", rc):
1173+
if check_rc(
1174+
f"zesPowerSetEnergyThreshold(power {i}, {requested_threshold})",
1175+
rc,
1176+
):
11711177
print_verbose(
1172-
f" Restored energy threshold to {energy_threshold.threshold} J"
1178+
f" Energy threshold set to {requested_threshold} J"
1179+
)
1180+
read_back_threshold = pz.zes_energy_threshold_t()
1181+
rc = pz.zesPowerGetEnergyThreshold(
1182+
power_handles[i], byref(read_back_threshold)
1183+
)
1184+
if check_rc(
1185+
f"zesPowerGetEnergyThreshold(power {i}, verify)", rc
1186+
):
1187+
print_verbose(
1188+
f" Read back energy threshold: {read_back_threshold.threshold} J "
1189+
f"(enabled: {bool(read_back_threshold.enable)}, "
1190+
f"process ID: 0x{read_back_threshold.processId:X})"
1191+
)
1192+
1193+
# An energy threshold cannot be disabled, so only an enabled one can be restored
1194+
if energy_threshold.enable:
1195+
rc = pz.zesPowerSetEnergyThreshold(
1196+
power_handles[i], energy_threshold.threshold
1197+
)
1198+
if check_rc(
1199+
f"zesPowerSetEnergyThreshold(power {i}, restore)", rc
1200+
):
1201+
print_verbose(
1202+
f" Restored energy threshold to {energy_threshold.threshold} J"
1203+
)
1204+
else:
1205+
print_verbose(
1206+
" Energy threshold was not enabled before the test and cannot be disabled"
11731207
)
1174-
else:
1175-
print_verbose(
1176-
" Energy threshold was not enabled before the test and cannot be disabled"
1177-
)
1178-
elif requested_limit is not None or requested_threshold is not None:
1179-
print_verbose(
1180-
" Skipping power set operations since the domain cannot be controlled"
1181-
)
11821208

11831209
if properties.onSubdevice or limit_descs is None:
11841210
continue

0 commit comments

Comments
 (0)