The systemwide perf hardware breakpoint test tries to open a perf event
on each cpu. On large systems, we run out of file descriptors and fail
the test. Instead, have the test set the file descriptor limit to an
arbitraty high value.

Reported-by: Rohan Deshpande <roha...@linux.vnet.ibm.com>
Signed-off-by: Naveen N. Rao <naveen.n....@linux.vnet.ibm.com>
---
 .../testing/selftests/powerpc/ptrace/perf-hwbreak.c  | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/tools/testing/selftests/powerpc/ptrace/perf-hwbreak.c 
b/tools/testing/selftests/powerpc/ptrace/perf-hwbreak.c
index ea5e14ecbf309f..866e5be48ee33a 100644
--- a/tools/testing/selftests/powerpc/ptrace/perf-hwbreak.c
+++ b/tools/testing/selftests/powerpc/ptrace/perf-hwbreak.c
@@ -26,6 +26,7 @@
 #include <sys/ioctl.h>
 #include <sys/wait.h>
 #include <sys/ptrace.h>
+#include <sys/resource.h>
 #include <sys/sysinfo.h>
 #include <asm/ptrace.h>
 #include <elf.h>
@@ -140,8 +141,19 @@ static void disable_fds(int *fd, int n)
 
 static int perf_systemwide_event_open(int *fd, __u32 type, __u64 addr, __u64 
len)
 {
+       struct rlimit rlim;
        int i = 0;
 
+       if (getrlimit(RLIMIT_NOFILE, &rlim)) {
+               perror("getrlimit");
+               return -1;
+       }
+       rlim.rlim_cur = 65536;
+       if (setrlimit(RLIMIT_NOFILE, &rlim)) {
+               perror("setrlimit");
+               return -1;
+       }
+
        /* Assume online processors are 0 to nprocs for simplisity */
        for (i = 0; i < nprocs; i++) {
                fd[i] = perf_cpu_event_open(i, type, addr, len);
-- 
2.38.1

Reply via email to