diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index d89dec90103ef3e5a6280fb40426f573f4e99a49..8f80df89603822e5431f45f1374cf926208f23ed 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -888,6 +888,10 @@ static void perf_top__start_counters(struct perf_top *top)
 				ui__warning("The %s event is not supported.\n",
 					    event_name(counter));
 				goto out_err;
+			} else if (err == EMFILE) {
+				ui__warning("Too many events are opened.\n"
+					    "Try again after reducing the number of events\n");
+				goto out_err;
 			}
 
 			ui__warning("The sys_perf_event_open() syscall "