aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-top.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/builtin-top.c')
-rw-r--r--tools/perf/builtin-top.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 676b4fb0070f..935fc4fd878e 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -850,10 +850,10 @@ try_again:
850 top.evlist->threads, group, inherit) < 0) { 850 top.evlist->threads, group, inherit) < 0) {
851 int err = errno; 851 int err = errno;
852 852
853 if (err == EPERM || err == EACCES) 853 if (err == EPERM || err == EACCES) {
854 die("Permission error - are you root?\n" 854 ui__warning_paranoid();
855 "\t Consider tweaking" 855 goto out_err;
856 " /proc/sys/kernel/perf_event_paranoid.\n"); 856 }
857 /* 857 /*
858 * If it's cycles then fall back to hrtimer 858 * If it's cycles then fall back to hrtimer
859 * based cpu-clock-tick sw counter, which 859 * based cpu-clock-tick sw counter, which
@@ -861,25 +861,35 @@ try_again:
861 */ 861 */
862 if (attr->type == PERF_TYPE_HARDWARE && 862 if (attr->type == PERF_TYPE_HARDWARE &&
863 attr->config == PERF_COUNT_HW_CPU_CYCLES) { 863 attr->config == PERF_COUNT_HW_CPU_CYCLES) {
864
865 if (verbose) 864 if (verbose)
866 warning(" ... trying to fall back to cpu-clock-ticks\n"); 865 ui__warning("Cycles event not supported,\n"
866 "trying to fall back to cpu-clock-ticks\n");
867 867
868 attr->type = PERF_TYPE_SOFTWARE; 868 attr->type = PERF_TYPE_SOFTWARE;
869 attr->config = PERF_COUNT_SW_CPU_CLOCK; 869 attr->config = PERF_COUNT_SW_CPU_CLOCK;
870 goto try_again; 870 goto try_again;
871 } 871 }
872 printf("\n"); 872
873 error("sys_perf_event_open() syscall returned with %d " 873 ui__warning("The sys_perf_event_open() syscall "
874 "(%s). /bin/dmesg may provide additional information.\n", 874 "returned with %d (%s). /bin/dmesg "
875 err, strerror(err)); 875 "may provide additional information.\n"
876 die("No CONFIG_PERF_EVENTS=y kernel support configured?\n"); 876 "No CONFIG_PERF_EVENTS=y kernel support "
877 exit(-1); 877 "configured?\n", err, strerror(err));
878 goto out_err;
878 } 879 }
879 } 880 }
880 881
881 if (perf_evlist__mmap(evlist, mmap_pages, false) < 0) 882 if (perf_evlist__mmap(evlist, mmap_pages, false) < 0) {
882 die("failed to mmap with %d (%s)\n", errno, strerror(errno)); 883 ui__warning("Failed to mmap with %d (%s)\n",
884 errno, strerror(errno));
885 goto out_err;
886 }
887
888 return;
889
890out_err:
891 exit_browser(0);
892 exit(0);
883} 893}
884 894
885static int __cmd_top(void) 895static int __cmd_top(void)