Skip to content
  • Arnaldo Carvalho de Melo's avatar
    perf evsel: Fix attr.exclude_kernel setting for default cycles:p · f1e52f14
    Arnaldo Carvalho de Melo authored
    
    
    Yet another fix for probing the max attr.precise_ip setting: it is not
    enough settting attr.exclude_kernel for !root users, as they _can_
    profile the kernel if the kernel.perf_event_paranoid sysctl is set to
    -1, so check that as well.
    
    Testing it:
    
    As non root:
    
      $ sysctl kernel.perf_event_paranoid
      kernel.perf_event_paranoid = 2
      $ perf record sleep 1
      $ perf evlist -v
      cycles:uppp: ..., exclude_kernel: 1, ... precise_ip: 3, ...
    
    Now as non-root, but with kernel.perf_event_paranoid set set to the
    most permissive value, -1:
    
      $ sysctl kernel.perf_event_paranoid
      kernel.perf_event_paranoid = -1
      $ perf record sleep 1
      $ perf evlist -v
      cycles:ppp: ..., exclude_kernel: 0, ... precise_ip: 3, ...
      $
    
    I.e. non-root, default kernel.perf_event_paranoid: :uppp modifier = not allowed to sample the kernel,
         non-root, most permissible kernel.perf_event_paranoid: :ppp = allowed to sample the kernel.
    
    In both cases, use the highest available precision: attr.precise_ip = 3.
    
    Reported-and-Tested-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: d37a3697 ("perf evsel: Fix attr.exclude_kernel setting for default cycles:p")
    Link: http://lkml.kernel.org/n/tip-nj2qkf75xsd6pw6hhjzfqqdx@git.kernel.org
    
    
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    f1e52f14