• Jiri Olsa's avatar
    selftests/bpf: Fix possible/online index mismatch in perf_buffer test · aa274f98
    Jiri Olsa authored
    The perf_buffer fails on system with offline cpus:
    
      # test_progs -t perf_buffer
      serial_test_perf_buffer:PASS:nr_cpus 0 nsec
      serial_test_perf_buffer:PASS:nr_on_cpus 0 nsec
      serial_test_perf_buffer:PASS:skel_load 0 nsec
      serial_test_perf_buffer:PASS:attach_kprobe 0 nsec
      serial_test_perf_buffer:PASS:perf_buf__new 0 nsec
      serial_test_perf_buffer:PASS:epoll_fd 0 nsec
      skipping offline CPU #4
      serial_test_perf_buffer:PASS:perf_buffer__poll 0 nsec
      serial_test_perf_buffer:PASS:seen_cpu_cnt 0 nsec
      serial_test_perf_buffer:PASS:buf_cnt 0 nsec
      ...
      serial_test_perf_buffer:PASS:fd_check 0 nsec
      serial_test_perf_buffer:PASS:drain_buf 0 nsec
      serial_test_perf_buffer:PASS:consume_buf 0 nsec
      serial_test_perf_buffer:FAIL:cpu_seen cpu 5 not seen
      #88 perf_buffer:FAIL
      Summary: 0/0 PASSED, 0 SKIPPED, 1 FAILED
    
    If the offline cpu is from the middle of the possible set,
    we get mismatch with possible and online cpu buffers.
    
    The perf buffer test calls perf_buffer__consume_buffer for
    all 'possible' cpus, but the library holds only 'online'
    cpu buffers and perf_buffer__consume_buffer returns them
    based on index.
    
    Adding extra (online) index to keep track of online buffers,
    we need the original (possible) index to trigger trace on
    proper cpu.
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Acked-by: default avatarJohn Fastabend <john.fastabend@gmail.com>
    Link: https://lore.kernel.org/bpf/20211021114132.8196-3-jolsa@kernel.org
    aa274f98
perf_buffer.c 3.52 KB