!no_inherit) < 0) {
                        int err = errno;
 
-                       if (err == EPERM || err == EACCES)
-                               die("Permission error - are you root?\n"
-                                       "\t Consider tweaking"
-                                       " /proc/sys/kernel/perf_event_paranoid.\n");
-                       else if (err ==  ENODEV && cpu_list) {
+                       if (err == EPERM || err == EACCES) {
+                               ui__warning_paranoid();
+                               exit(EXIT_FAILURE);
+                       } else if (err ==  ENODEV && cpu_list) {
                                die("No such device - did you specify"
                                        " an out-of-range profile CPU?\n");
                        } else if (err == EINVAL && sample_id_all_avail) {
 
                                     top.evlist->threads, group, inherit) < 0) {
                        int err = errno;
 
-                       if (err == EPERM || err == EACCES)
-                               die("Permission error - are you root?\n"
-                                       "\t Consider tweaking"
-                                       " /proc/sys/kernel/perf_event_paranoid.\n");
+                       if (err == EPERM || err == EACCES) {
+                               ui__warning_paranoid();
+                               goto out_err;
+                       }
                        /*
                         * If it's cycles then fall back to hrtimer
                         * based cpu-clock-tick sw counter, which
                         */
                        if (attr->type == PERF_TYPE_HARDWARE &&
                            attr->config == PERF_COUNT_HW_CPU_CYCLES) {
-
                                if (verbose)
-                                       warning(" ... trying to fall back to cpu-clock-ticks\n");
+                                       ui__warning("Cycles event not supported,\n"
+                                                   "trying to fall back to cpu-clock-ticks\n");
 
                                attr->type = PERF_TYPE_SOFTWARE;
                                attr->config = PERF_COUNT_SW_CPU_CLOCK;
                                goto try_again;
                        }
-                       printf("\n");
-                       error("sys_perf_event_open() syscall returned with %d "
-                             "(%s).  /bin/dmesg may provide additional information.\n",
-                             err, strerror(err));
-                       die("No CONFIG_PERF_EVENTS=y kernel support configured?\n");
-                       exit(-1);
+
+                       ui__warning("The sys_perf_event_open() syscall "
+                                   "returned with %d (%s).  /bin/dmesg "
+                                   "may provide additional information.\n"
+                                   "No CONFIG_PERF_EVENTS=y kernel support "
+                                   "configured?\n", err, strerror(err));
+                       goto out_err;
                }
        }
 
-       if (perf_evlist__mmap(evlist, mmap_pages, false) < 0)
-               die("failed to mmap with %d (%s)\n", errno, strerror(errno));
+       if (perf_evlist__mmap(evlist, mmap_pages, false) < 0) {
+               ui__warning("Failed to mmap with %d (%s)\n",
+                           errno, strerror(errno));
+               goto out_err;
+       }
+
+       return;
+
+out_err:
+       exit_browser(0);
+       exit(0);
 }
 
 static int __cmd_top(void)
 
 }
 #endif
 
+void ui__warning_paranoid(void)
+{
+       ui__warning("Permission error - are you root?\n"
+                   "Consider tweaking /proc/sys/kernel/perf_event_paranoid:\n"
+                   " -1 - Not paranoid at all\n"
+                   "  0 - Disallow raw tracepoint access for unpriv\n"
+                   "  1 - Disallow cpu events for unpriv\n"
+                   "  2 - Disallow kernel profiling for unpriv\n");
+}
+
 void trace_event(union perf_event *event)
 {
        unsigned char *raw_event = (void *)event;