Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf tools kvm: Use "cycles" to sample guest for "kvm top" on Intel

As same reason with previous patch, use "cyles" instead of "cycles:P"
event by default to sample guest for "perf kvm top" command on Intel
platforms.

Fixes: cf8e55fe50df0c02 ("KVM: x86/pmu: Expose CPUIDs feature bits PDCM, DS, DTES64")
Reported-by: Kevin Tian <kevin.tian@intel.com>
Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
Acked-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Like Xu <likexu@tencent.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Dapeng Mi and committed by
Arnaldo Carvalho de Melo
cbeb3d47 c1afca10

+33 -1
+33 -1
tools/perf/builtin-kvm.c
··· 2084 2084 return ret; 2085 2085 } 2086 2086 2087 + static int __cmd_top(int argc, const char **argv) 2088 + { 2089 + int rec_argc, i = 0, ret; 2090 + const char **rec_argv; 2091 + 2092 + /* 2093 + * kvm_add_default_arch_event() may add 2 extra options, so 2094 + * allocate 2 more pointers in adavance. 2095 + */ 2096 + rec_argc = argc + 2; 2097 + rec_argv = calloc(rec_argc + 1, sizeof(char *)); 2098 + if (!rec_argv) 2099 + return -ENOMEM; 2100 + 2101 + for (i = 0; i < argc; i++) 2102 + rec_argv[i] = STRDUP_FAIL_EXIT(argv[i]); 2103 + 2104 + BUG_ON(i != argc); 2105 + 2106 + ret = kvm_add_default_arch_event(&i, rec_argv); 2107 + if (ret) 2108 + goto EXIT; 2109 + 2110 + ret = cmd_top(i, rec_argv); 2111 + 2112 + EXIT: 2113 + for (i = 0; i < rec_argc; i++) 2114 + free((void *)rec_argv[i]); 2115 + free(rec_argv); 2116 + return ret; 2117 + } 2118 + 2087 2119 int cmd_kvm(int argc, const char **argv) 2088 2120 { 2089 2121 const char *file_name = NULL; ··· 2176 2144 else if (strlen(argv[0]) > 2 && strstarts("diff", argv[0])) 2177 2145 return cmd_diff(argc, argv); 2178 2146 else if (!strcmp(argv[0], "top")) 2179 - return cmd_top(argc, argv); 2147 + return __cmd_top(argc, argv); 2180 2148 else if (strlen(argv[0]) > 2 && strstarts("buildid-list", argv[0])) 2181 2149 return __cmd_buildid_list(file_name, argc, argv); 2182 2150 #if defined(HAVE_KVM_STAT_SUPPORT) && defined(HAVE_LIBTRACEEVENT)