Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #include "util/map_symbol.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #include "util/mem-events.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) #include "util/symbol.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #include "linux/perf_event.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #include "util/debug.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #include "tests.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <string.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) static int check(union perf_mem_data_src data_src,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 		  const char *string)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 	char out[100];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 	char failure[100];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 	struct mem_info mi = { .data_src = data_src };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	int n;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 	n = perf_mem__snp_scnprintf(out, sizeof out, &mi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	n += perf_mem__lvl_scnprintf(out + n, sizeof out - n, &mi);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	scnprintf(failure, sizeof failure, "unexpected %s", out);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 	TEST_ASSERT_VAL(failure, !strcmp(string, out));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) int test__mem(struct test *text __maybe_unused, int subtest __maybe_unused)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 	int ret = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	union perf_mem_data_src src;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	memset(&src, 0, sizeof(src));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	src.mem_lvl = PERF_MEM_LVL_HIT;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 	src.mem_lvl_num = 4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 	ret |= check(src, "N/AL4 hit");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	src.mem_remote = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	ret |= check(src, "N/ARemote L4 hit");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	src.mem_lvl = PERF_MEM_LVL_MISS;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	src.mem_lvl_num = PERF_MEM_LVLNUM_PMEM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	src.mem_remote = 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	ret |= check(src, "N/APMEM miss");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	src.mem_remote = 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	ret |= check(src, "N/ARemote PMEM miss");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	src.mem_snoopx = PERF_MEM_SNOOPX_FWD;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	src.mem_lvl_num = PERF_MEM_LVLNUM_RAM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	ret |= check(src , "FwdRemote RAM miss");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	return ret;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) }