|
@@ -2325,6 +2325,14 @@ int perf_evsel__open_strerror(struct perf_evsel *evsel, struct target *target,
|
|
|
"Probably the maximum number of open file descriptors has been reached.\n"
|
|
|
"Hint: Try again after reducing the number of events.\n"
|
|
|
"Hint: Try increasing the limit with 'ulimit -n <limit>'");
|
|
|
+ case ENOMEM:
|
|
|
+ if ((evsel->attr.sample_type & PERF_SAMPLE_CALLCHAIN) != 0 &&
|
|
|
+ access("/proc/sys/kernel/perf_event_max_stack", F_OK) == 0)
|
|
|
+ return scnprintf(msg, size,
|
|
|
+ "Not enough memory to setup event with callchain.\n"
|
|
|
+ "Hint: Try tweaking /proc/sys/kernel/perf_event_max_stack\n"
|
|
|
+ "Hint: Current value: %d", sysctl_perf_event_max_stack);
|
|
|
+ break;
|
|
|
case ENODEV:
|
|
|
if (target->cpu_list)
|
|
|
return scnprintf(msg, size, "%s",
|