forked from luck/tmp_suning_uos_patched
perf kvm stat: Set 'trace_cycles' as default event for 'perf kvm record' in powerpc
Use 'trace_imc/trace_cycles' as the default event for 'perf kvm record' in powerpc. Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com> Reviewed-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: linuxppc-dev@lists.ozlabs.org Link: http://lore.kernel.org/lkml/20190718181749.30612-3-anju@linux.vnet.ibm.com [ Add missing pmu.h header, needed because this patch uses pmu_have_event() ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
124eb5f82b
commit
2bff2b8285
|
@ -5,6 +5,7 @@
|
|||
#include "util/debug.h"
|
||||
#include "util/evsel.h"
|
||||
#include "util/evlist.h"
|
||||
#include "util/pmu.h"
|
||||
|
||||
#include "book3s_hv_exits.h"
|
||||
#include "book3s_hcalls.h"
|
||||
|
@ -177,8 +178,9 @@ int cpu_isa_init(struct perf_kvm_stat *kvm, const char *cpuid __maybe_unused)
|
|||
/*
|
||||
* Incase of powerpc architecture, pmu registers are programmable
|
||||
* by guest kernel. So monitoring guest via host may not provide
|
||||
* valid samples. It is better to fail the "perf kvm record"
|
||||
* with default "cycles" event to monitor guest in powerpc.
|
||||
* valid samples with default 'cycles' event. It is better to use
|
||||
* 'trace_imc/trace_cycles' event for guest profiling, since it
|
||||
* can track the guest instruction pointer in the trace-record.
|
||||
*
|
||||
* Function to parse the arguments and return appropriate values.
|
||||
*/
|
||||
|
@ -202,8 +204,14 @@ int kvm_add_default_arch_event(int *argc, const char **argv)
|
|||
|
||||
parse_options(j, tmp, event_options, NULL, PARSE_OPT_KEEP_UNKNOWN);
|
||||
if (!event) {
|
||||
free(tmp);
|
||||
return -EINVAL;
|
||||
if (pmu_have_event("trace_imc", "trace_cycles")) {
|
||||
argv[j++] = strdup("-e");
|
||||
argv[j++] = strdup("trace_imc/trace_cycles/");
|
||||
*argc += 2;
|
||||
} else {
|
||||
free(tmp);
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
free(tmp);
|
||||
|
|
Loading…
Reference in New Issue
Block a user