Commit a93a620c authored by Ian Rogers's avatar Ian Rogers Committed by Namhyung Kim
Browse files

perf test expr: Fix system_tsc_freq for only x86



The refactoring of tool PMU events to have a PMU then adding the expr
literals to the tool PMU made it so that the literal system_tsc_freq
was only supported on x86. Update the test expectations to match -
namely the parsing is x86 specific and only yields a non-zero value on
Intel.

Fixes: 609aa266 ("perf tool_pmu: Switch to standard pmu functions and json descriptions")
Reported-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
Closes: https://lore.kernel.org/linux-perf-users/20241022140156.98854-1-atrajeev@linux.vnet.ibm.com/


Co-developed-by: default avatarAthira Rajeev <atrajeev@linux.vnet.ibm.com>
Tested-by: default avatarNamhyung Kim <namhyung@kernel.org>
Signed-off-by: default avatarIan Rogers <irogers@google.com>
Cc: James Clark <james.clark@linaro.org>
Cc: akanksha@linux.ibm.com
Cc: hbathini@linux.ibm.com
Cc: kjain@linux.ibm.com
Cc: maddy@linux.ibm.com
Cc: disgoel@linux.vnet.ibm.com
Cc: linuxppc-dev@lists.ozlabs.org
Link: https://lore.kernel.org/r/20241205022305.158202-1-irogers@google.com


Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent d4e17a32
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -75,14 +75,12 @@ static int test__expr(struct test_suite *t __maybe_unused, int subtest __maybe_u
	double val, num_cpus_online, num_cpus, num_cores, num_dies, num_packages;
	int ret;
	struct expr_parse_ctx *ctx;
	bool is_intel = false;
	char strcmp_cpuid_buf[256];
	struct perf_cpu cpu = {-1};
	char *cpuid = get_cpuid_allow_env_override(cpu);
	char *escaped_cpuid1, *escaped_cpuid2;

	TEST_ASSERT_VAL("get_cpuid", cpuid);
	is_intel = strstr(cpuid, "Intel") != NULL;

	TEST_ASSERT_EQUAL("ids_union", test_ids_union(), 0);

@@ -245,12 +243,19 @@ static int test__expr(struct test_suite *t __maybe_unused, int subtest __maybe_u
	if (num_dies) // Some platforms do not have CPU die support, for example s390
		TEST_ASSERT_VAL("#num_dies >= #num_packages", num_dies >= num_packages);

	TEST_ASSERT_VAL("#system_tsc_freq", expr__parse(&val, ctx, "#system_tsc_freq") == 0);

	if (expr__parse(&val, ctx, "#system_tsc_freq") == 0) {
		bool is_intel = strstr(cpuid, "Intel") != NULL;

		if (is_intel)
			TEST_ASSERT_VAL("#system_tsc_freq > 0", val > 0);
		else
			TEST_ASSERT_VAL("#system_tsc_freq == 0", fpclassify(val) == FP_ZERO);

	} else {
#if defined(__i386__) || defined(__x86_64__)
		TEST_ASSERT_VAL("#system_tsc_freq unsupported", 0);
#endif
	}
	/*
	 * Source count returns the number of events aggregating in a leader
	 * event including the leader. Check parsing yields an id.