perf report: Fix input reload/switch with symbol sort key

Currently the code checks that there is no "ipc" in the sort order
and add an ipc string. This will always error out on the second pass
after input reload/switch, since the sort order already contains "ipc".
Do the ipc check/fixup only on the first pass.

Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
Link: https://lore.kernel.org/r/20250108063628.215577-1-dvyukov@google.com
Fixes: ec6ae74fe8 ("perf report: Display average IPC and IPC coverage per symbol")
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
Dmitry Vyukov
2025-02-19 13:27:59 -08:00
committed by Namhyung Kim
parent acda4c2001
commit 6353255e7c
+16 -14
View File
@@ -1758,22 +1758,24 @@ repeat:
symbol_conf.enable_latency = false;
}
if (sort_order && strstr(sort_order, "ipc")) {
parse_options_usage(report_usage, options, "s", 1);
goto error;
}
if (sort_order && strstr(sort_order, "symbol")) {
if (sort__mode == SORT_MODE__BRANCH) {
snprintf(sort_tmp, sizeof(sort_tmp), "%s,%s",
sort_order, "ipc_lbr");
report.symbol_ipc = true;
} else {
snprintf(sort_tmp, sizeof(sort_tmp), "%s,%s",
sort_order, "ipc_null");
if (last_key != K_SWITCH_INPUT_DATA) {
if (sort_order && strstr(sort_order, "ipc")) {
parse_options_usage(report_usage, options, "s", 1);
goto error;
}
sort_order = sort_tmp;
if (sort_order && strstr(sort_order, "symbol")) {
if (sort__mode == SORT_MODE__BRANCH) {
snprintf(sort_tmp, sizeof(sort_tmp), "%s,%s",
sort_order, "ipc_lbr");
report.symbol_ipc = true;
} else {
snprintf(sort_tmp, sizeof(sort_tmp), "%s,%s",
sort_order, "ipc_null");
}
sort_order = sort_tmp;
}
}
if ((last_key != K_SWITCH_INPUT_DATA && last_key != K_RELOAD) &&