1. 04 Apr, 2020 1 commit
    • Ingo Molnar's avatar
      Merge tag 'perf-urgent-for-mingo-5.7-20200403' of... · 7dc41b9b
      Ingo Molnar authored
      Merge tag 'perf-urgent-for-mingo-5.7-20200403' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
      
      Pull perf/urgent fixes and improvements from Arnaldo Carvalho de Melo:
      
      perf python:
      
        Arnaldo Carvalho de Melo:
      
        - Fix clang detection to strip out options passed in $CC.
      
      build:
      
        He Zhe:
      
        - Normalize gcc parameter when generating arch errno table, fixing
          the build by removing options from $(CC).
      
        Sam Lunt:
      
        - Support Python 3.8+ in Makefile.
      
      perf report/top:
      
        Arnaldo Carvalho de Melo:
      
        - Fix title line formatting.
      
      perf script:
      
        Andreas Gerstmayr:
      
        - Fix SEGFAULT when using DWARF mode.
      
        - Fix invalid read of directory entry after closedir(), found with valgrind.
      
        Hagen Paul Pfeifer:
      
        - Introduce --deltatime option.
      
        Stephane Eranian:
      
        - Allow --symbol to accept hexadecimal addresses.
      
        Ian Rogers:
      
        - Add -S/--symbols documentation
      
        Namhyung Kim:
      
        - Add --show-cgroup-events option.
      
      perf python:
      
        Arnaldo Carvalho de Melo:
      
        - Include rwsem.c in the python binding, needed by the cgroups improvements.
      
      build-test:
      
        Arnaldo Carvalho de Melo:
      
        - Honour JOBS to override detection of number of cores
      
      perf top:
      
        Jin Yao:
      
        - Support --group-sort-idx to change the sort order
      
        - perf top: Support hotkey to change sort order
      
      perf pmu-events x86:
      
        Jin Yao:
      
        - Use CPU_CLK_UNHALTED.THREAD in Kernel_Utilization metric
      
      perf symbols arm64:
      
        Kemeng Shi:
      
        - Fix arm64 gap between kernel start and module end
      
      kernel perf subsystem:
      
        Namhyung Kim:
      
        - Add PERF_RECORD_CGROUP event and Add PERF_SAMPLE_CGROUP feature,
          to allow cgroup tracking, saving a link between cgroup path and
          its id number.
      
      perf cgroup:
      
        Namhyung Kim:
      
        - Maintain cgroup hierarchy.
      
      perf report:
      
        Namhyung Kim:
      
        - Add 'cgroup' sort key.
      
      perf record:
      
        Namhyung Kim:
      
        - Support synthesizing cgroup events for pre-existing cgroups.
      
        - Add --all-cgroups option
      
      Documentation:
      
        Tony Jones:
      
        - Update docs regarding kernel/user space unwinding.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      7dc41b9b
  2. 03 Apr, 2020 22 commits
    • Arnaldo Carvalho de Melo's avatar
      perf python: Fix clang detection to strip out options passed in $CC · 9ff76cea
      Arnaldo Carvalho de Melo authored
      The clang check in the python setup.py file expected $CC to be just the
      name of the compiler, not the compiler + options, i.e. all options were
      expected to be passed in $CFLAGS, this ends up making it fail in systems
      where CC is set to, e.g.:
      
       "aarch64-linaro-linux-gcc --sysroot=/oe/build/tmp/work/juno-linaro-linux/perf/1.0-r9/recipe-sysroot"
      
      Like this:
      
        $ python3
        >>> from subprocess import Popen
        >>> a = Popen(["aarch64-linux-gnu-gcc --sysroot=/oe/build/tmp/work/juno-linaro-linux/perf/1.0-r9/recipe-sysroot", "-v"])
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
            restore_signals, start_new_session)
          File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
            raise child_exception_type(errno_num, err_msg, err_filename)
        FileNotFoundError: [Errno 2] No such file or directory: 'aarch64-linux-gnu-gcc --sysroot=/oe/build/tmp/work/juno-linaro-linux/perf/1.0-r9/recipe-sysroot': 'aarch64-linux-gnu-gcc --sysroot=/oe/build/tmp/work/juno-linaro-linux/perf/1.0-r9/recipe-sysroot'
        >>>
      
      Make it more robust, covering this case, by passing cc.split()[0] as the
      first arg to popen().
      
      Fixes: a7ffd416 ("perf python: Fix clang detection when using CC=clang-version")
      Reported-by: default avatarDaniel Díaz <daniel.diaz@linaro.org>
      Reported-by: default avatarNaresh Kamboju <naresh.kamboju@linaro.org>
      Tested-by: default avatarDaniel Díaz <daniel.diaz@linaro.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Ilie Halip <ilie.halip@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200401124037.GA12534@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9ff76cea
    • Sam Lunt's avatar
      perf tools: Support Python 3.8+ in Makefile · b9c9ce4e
      Sam Lunt authored
      Python 3.8 changed the output of 'python-config --ldflags' to no longer
      include the '-lpythonX.Y' flag (this apparently fixed an issue loading
      modules with a statically linked Python executable).  The libpython
      feature check in linux/build/feature fails if the Python library is not
      included in FEATURE_CHECK_LDFLAGS-libpython variable.
      
      This adds a check in the Makefile to determine if PYTHON_CONFIG accepts
      the '--embed' flag and passes that flag alongside '--ldflags' if so.
      
      tools/perf is the only place the libpython feature check is used.
      Signed-off-by: default avatarSam Lunt <samuel.j.lunt@gmail.com>
      Tested-by: default avatarHe Zhe <zhe.he@windriver.com>
      Link: http://lore.kernel.org/lkml/c56be2e1-8111-9dfe-8298-f7d0f9ab7431@windriver.comAcked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: trivial@kernel.org
      Cc: stable@kernel.org
      Link: http://lore.kernel.org/lkml/20200131181123.tmamivhq4b7uqasr@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b9c9ce4e
    • Andreas Gerstmayr's avatar
      perf script: Fix invalid read of directory entry after closedir() · 27486a85
      Andreas Gerstmayr authored
      closedir(lang_dir) frees the memory of script_dirent->d_name, which
      gets accessed in the next line in a call to scnprintf().
      
      Valgrind report:
      
        Invalid read of size 1
        ==413557==    at 0x483CBE6: strlen (vg_replace_strmem.c:461)
        ==413557==    by 0x4DD45FD: __vfprintf_internal (vfprintf-internal.c:1688)
        ==413557==    by 0x4DE6679: __vsnprintf_internal (vsnprintf.c:114)
        ==413557==    by 0x53A037: vsnprintf (stdio2.h:80)
        ==413557==    by 0x53A037: scnprintf (vsprintf.c:21)
        ==413557==    by 0x435202: get_script_path (builtin-script.c:3223)
        ==413557==  Address 0x52e7313 is 1,139 bytes inside a block of size 32,816 free'd
        ==413557==    at 0x483AA0C: free (vg_replace_malloc.c:540)
        ==413557==    by 0x4E303C0: closedir (closedir.c:50)
        ==413557==    by 0x4351DC: get_script_path (builtin-script.c:3222)
      Signed-off-by: default avatarAndreas Gerstmayr <agerstmayr@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200402124337.419456-1-agerstmayr@redhat.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      27486a85
    • Andreas Gerstmayr's avatar
      perf script report: Fix SEGFAULT when using DWARF mode · 1a4025f0
      Andreas Gerstmayr authored
      When running perf script report with a Python script and a callgraph in
      DWARF mode, intr_regs->regs can be 0 and therefore crashing the regs_map
      function.
      
      Added a check for this condition (same check as in builtin-script.c:595).
      Signed-off-by: default avatarAndreas Gerstmayr <agerstmayr@redhat.com>
      Tested-by: default avatarKim Phillips <kim.phillips@amd.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Steven Rostedt (VMware) <rostedt@goodmis.org>
      Link: http://lore.kernel.org/lkml/20200402125417.422232-1-agerstmayr@redhat.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      1a4025f0
    • Ian Rogers's avatar
      perf script: add -S/--symbols documentation · 628d736d
      Ian Rogers authored
      Capture both that this option exists and that symbols can be hexadecimal
      addresses.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Suggested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lore.kernel.org/lkml/20200402174130.140319-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      628d736d
    • Jin Yao's avatar
      perf pmu-events x86: Use CPU_CLK_UNHALTED.THREAD in Kernel_Utilization metric · 8ed1faf0
      Jin Yao authored
      The kernel utilization metric does multiplexing currently and is somewhat
      unreliable. The problem is that it uses two instances of the fixed counter,
      and the kernel has to multipleplex which causes errors. So should use
      CPU_CLK_UNHALTED.THREAD instead.
      
      Before:
      
        # perf stat -M Kernel_Utilization -- sleep 1
      
        Performance counter stats for 'sleep 1':
      
                1,419,425      cpu_clk_unhalted.ref_tsc:k
            <not counted>      cpu_clk_unhalted.ref_tsc	(0.00%)
      
      After:
      
        # perf stat -M Kernel_Utilization -- sleep 1
      
        Performance counter stats for 'sleep 1':
      
                  746,688      cpu_clk_unhalted.thread:k #      0.7 Kernel_Utilization
                1,088,348      cpu_clk_unhalted.thread
      Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
      Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
      Reviewed-by: default avatarKan Liang <kan.liang@linux.intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jin Yao <yao.jin@intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200309013125.7559-1-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      8ed1faf0
    • Adrian Hunter's avatar
      perf events parser: Add missing Intel CPU events to parser · 47327f56
      Adrian Hunter authored
      perf list expects CPU events to be parseable by name, e.g.
      
          # perf list | grep el-capacity-read
            el-capacity-read OR cpu/el-capacity-read/          [Kernel PMU event]
      
      But the event parser does not recognize them that way, e.g.
      
          # perf test -v "Parse event"
          <SNIP>
          running test 54 'cycles//u'
          running test 55 'cycles:k'
          running test 0 'cpu/config=10,config1,config2=3,period=1000/u'
          running test 1 'cpu/config=1,name=krava/u,cpu/config=2/u'
          running test 2 'cpu/config=1,call-graph=fp,time,period=100000/,cpu/config=2,call-graph=no,time=0,period=2000/'
          running test 3 'cpu/name='COMPLEX_CYCLES_NAME:orig=cycles,desc=chip-clock-ticks',period=0x1,event=0x2/ukp'
          -> cpu/event=0,umask=0x11/
          -> cpu/event=0,umask=0x13/
          -> cpu/event=0x54,umask=0x1/
          failed to parse event 'el-capacity-read:u,cpu/event=el-capacity-read/u', err 1, str 'parser error'
          event syntax error: 'el-capacity-read:u,cpu/event=el-capacity-read/u'
                                 \___ parser error test child finished with 1
          ---- end ----
          Parse event definition strings: FAILED!
      
      This happens because the parser splits names by '-' in order to deal
      with cache events. For example 'L1-dcache' is a token in
      parse-events.l which is matched to 'L1-dcache-load-miss' by the
      following rule:
      
          PE_NAME_CACHE_TYPE '-' PE_NAME_CACHE_OP_RESULT '-' PE_NAME_CACHE_OP_RESULT opt_event_config
      
      And so there is special handling for 2-part PMU names i.e.
      
          PE_PMU_EVENT_PRE '-' PE_PMU_EVENT_SUF sep_dc
      
      but no handling for 3-part names, which are instead added as tokens e.g.
      
          topdown-[a-z-]+
      
      While it would be possible to add a rule for 3-part names, that would
      not work if the first parts were also a valid PMU name e.g.
      'el-capacity-read' would be matched to 'el-capacity' before the parser
      reached the 3rd part.
      
      The parser would need significant change to rationalize all this, so
      instead fix for now by adding missing Intel CPU events with 3-part names
      to the event parser as tokens.
      
      Missing events were found by using:
      
          grep -r EVENT_ATTR_STR arch/x86/events/intel/core.c
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Link: http://lore.kernel.org/lkml/90c7ae07-c568-b6d3-f9c4-d0c1528a0610@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      47327f56
    • Stephane Eranian's avatar
      perf script: Allow --symbol to accept hexadecimal addresses · d2bedb78
      Stephane Eranian authored
      This patch extends the perf script --symbols option to filter on
      hexadecimal addresses in addition to symbol names. This makes it easier
      to handle cases where symbols are aliased.
      
      With this patch, it is possible to mix and match symbols and hexadecimal
      addresses using the --symbols option.
      
        $ perf script --symbols=noploop,0x4007a0
      Signed-off-by: default avatarStephane Eranian <eranian@google.com>
      Reviewed-by: default avatarIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325220802.15039-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d2bedb78
    • Arnaldo Carvalho de Melo's avatar
      perf report/top TUI: Fix title line formatting · 376c3c22
      Arnaldo Carvalho de Melo authored
      In d10ec006 ("perf hists browser: Allow passing an initial hotkey")
      the hist_entry__title() call was cut'n'pasted to a function where the
      'title' variable is a pointer, not an array, so the sizeof(title)
      continues syntactically valid but ends up reducing the real size of the
      buffer where to format the first line in the screen to 8 bytes, which
      makes the formatting at the title at each refresh to produce just the
      string "Samples ", duh, fix it by passing the size of the buffer.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Jin Yao <yao.jin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Fixes: d10ec006 ("perf hists browser: Allow passing an initial hotkey")
      Link: http://lore.kernel.org/lkml/20200330154314.GB4576@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      376c3c22
    • Jin Yao's avatar
      perf top: Support hotkey to change sort order · 2605af0f
      Jin Yao authored
      It would be nice if we can use a hotkey in perf top browser to select a
      event for sorting.
      
      For example:
      
        perf top --group -e cycles,instructions,cache-misses
      
        Samples
                        Overhead  Shared Object             Symbol
          40.03%  45.71%   0.03%  div                       [.] main
          20.46%  14.67%   0.21%  libc-2.27.so              [.] __random_r
          20.01%  19.54%   0.02%  libc-2.27.so              [.] __random
           9.68%  10.68%   0.00%  div                       [.] compute_flag
           4.32%   4.70%   0.00%  libc-2.27.so              [.] rand
           3.84%   3.43%   0.00%  div                       [.] rand@plt
           0.05%   0.05%   2.33%  libc-2.27.so              [.] __strcmp_sse2_unaligned
           0.04%   0.08%   2.43%  perf                      [.] perf_hpp__is_dynamic_en
           0.04%   0.02%   6.64%  perf                      [.] rb_next
           0.04%   0.01%   3.87%  perf                      [.] dso__find_symbol
           0.04%   0.04%   1.77%  perf                      [.] sort__dso_cmp
      
      When user press hotkey '2' (event index, starting from 0), it indicates
      to sort output by the third event in group (cache-misses).
      
        Samples
                        Overhead  Shared Object               Symbol
           4.07%   1.28%   6.68%  perf                        [.] rb_next
           3.57%   3.98%   4.11%  perf                        [.] __hists__insert_output
           3.67%  11.24%   3.60%  perf                        [.] perf_hpp__is_dynamic_e
           3.67%   3.20%   3.20%  perf                        [.] hpp__sort_overhead
           0.81%   0.06%   3.01%  perf                        [.] dso__find_symbol
           1.62%   5.47%   2.51%  perf                        [.] hists__match
           2.70%   1.86%   2.47%  libc-2.27.so                [.] _int_malloc
           0.19%   0.00%   2.29%  [kernel]                    [k] copy_page
           0.41%   0.32%   1.98%  perf                        [.] hists__decay_entries
           1.84%   3.67%   1.68%  perf                        [.] sort__dso_cmp
           0.16%   0.00%   1.63%  [kernel]                    [k] clear_page_erms
      
      Now the output is sorted by cache-misses.
      
       v2:
       ---
       Zero the history if hotkey is pressed.
      Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
      Suggested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jin Yao <yao.jin@intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200324220711.6025-2-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2605af0f
    • Jin Yao's avatar
      perf top: Support --group-sort-idx to change the sort order · df7deb2c
      Jin Yao authored
      'perf report' supports the option --group-sort-idx, which sorts the
      output by the event at the index n in event group.
      
      For example:
      
        perf record -e cycles,instructions,cache-misses
        perf report --group --group-sort-idx 2 --stdio
      
      The perf-report output is sorted by cache-misses.
      
      This patch supports --group-sort-idx in perf-top.
      
      For example:
      
        perf top --group -e cycles,instructions,cache-misses --group-sort-idx 2
      
      The perf-top output is sorted by cache-misses.
      Signed-off-by: default avatarJin Yao <yao.jin@linux.intel.com>
      Suggested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jin Yao <yao.jin@intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200324220711.6025-1-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      df7deb2c
    • Kemeng Shi's avatar
      perf symbols: Fix arm64 gap between kernel start and module end · 78886f3e
      Kemeng Shi authored
      During execution of command 'perf report' in my arm64 virtual machine,
      this error message is showed:
      
      failed to process sample
      
      __symbol__inc_addr_samples(860): ENOMEM! sym->name=__this_module,
          start=0x1477100, addr=0x147dbd8, end=0x80002000, func: 0
      
      The error is caused with path:
      cmd_report
       __cmd_report
        perf_session__process_events
         __perf_session__process_events
          ordered_events__flush
           __ordered_events__flush
            oe->deliver (ordered_events__deliver_event)
             perf_session__deliver_event
              machines__deliver_event
               perf_evlist__deliver_sample
                tool->sample (process_sample_event)
                 hist_entry_iter__add
                  iter->add_entry_cb(hist_iter__report_callback)
                   hist_entry__inc_addr_samples
                    symbol__inc_addr_samples
                     __symbol__inc_addr_samples
                      h = annotated_source__histogram(src, evidx) (NULL)
      
      annotated_source__histogram failed is caused with path:
      ...
       hist_entry__inc_addr_samples
        symbol__inc_addr_samples
         symbol__hists
          annotated_source__alloc_histograms
           src->histograms = calloc(nr_hists, sizeof_sym_hist) (failed)
      
      Calloc failed as the symbol__size(sym) is too huge. As show in error
      message: start=0x1477100, end=0x80002000, size of symbol is about 2G.
      
      This is the same problem as 'perf annotate: Fix s390 gap between kernel
      end and module start (b9c0a649)'. Perf gets symbol information from
      /proc/kallsyms in __dso__load_kallsyms. A part of symbol in /proc/kallsyms
      from my virtual machine is as follows:
       #cat /proc/kallsyms | sort
       ...
       ffff000001475080 d rpfilter_mt_reg      [ip6t_rpfilter]
       ffff000001475100 d $d   [ip6t_rpfilter]
       ffff000001475100 d __this_module        [ip6t_rpfilter]
       ffff000080080000 t _head
       ffff000080080000 T _text
       ffff000080080040 t pe_header
       ...
      
      Take line 'ffff000001475100 d __this_module [ip6t_rpfilter]' as example.
      The start and end of symbol are both set to ffff000001475100 in
      dso__load_all_kallsyms. Then symbols__fixup_end will set the end of symbol
      to next big address to ffff000001475100 in /proc/kallsyms, ffff000080080000
      in this example. Then sizeof of symbol will be about 2G and cause the
      problem.
      
      The start of module in my machine is
       ffff000000a62000 t $x   [dm_mod]
      
      The start of kernel in my machine is
       ffff000080080000 t _head
      
      There is a big gap between end of module and begin of kernel if a samll
      amount of memory is used by module. And the last symbol in module will
      have a large address range as caotaining the big gap.
      
      Give that the module and kernel text segment sequence may change in
      the future, fix this by limiting range of last symbol in module and kernel
      to 4K in arch arm64.
      Signed-off-by: default avatarKemeng Shi <shikemeng@huawei.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Hewenliang <hewenliang4@huawei.com>
      Cc: Hu Shiyuan <hushiyuan@huawei.com>
      Cc: Ian Rogers <irogers@google.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Nick Desaulniers <ndesaulniers@google.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: http://lore.kernel.org/lkml/33fd24c4-0d5a-9d93-9b62-dffa97c992ca@huawei.com
      [ refreshed the patch on current codebase, added string.h include as strchr() is used ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      78886f3e
    • Arnaldo Carvalho de Melo's avatar
      perf build-test: Honour JOBS to override detection of number of cores · 7b1642f2
      Arnaldo Carvalho de Melo authored
      When one does:
      
        $ make -C tools/perf build-test
      
      The makefile in tools/perf/tests/ will, just like the main one, detect
      how many cores are in the system and use it with -j.
      
      Sometimes we may need to override that, for instance, when using
      icecream or distcc to use multiple machines in the build process, then
      we need to, as with the main makefile, use:
      
        $ make JOBS=N -C tools/perf build-test
      
      Fix the tests makefile to honour that.
      Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lore.kernel.org/lkml/20200330130301.GA31702@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7b1642f2
    • Namhyung Kim's avatar
      perf script: Add --show-cgroup-events option · 160d4af9
      Namhyung Kim authored
      The --show-cgroup-events option is to print CGROUP events in the
      output like others.
      
      Committer testing:
      
        [root@seventh ~]# perf record --all-cgroups --namespaces /wb/cgtest
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.039 MB perf.data (487 samples) ]
        [root@seventh ~]# perf script --show-cgroup-events | grep PERF_RECORD_CGROUP -B2 -A2
                 swapper     0     0.000000: PERF_RECORD_CGROUP cgroup: 1 /
                    perf 12145 11200.440730:          1 cycles:  ffffffffb900d58b __intel_pmu_enable_all.constprop.0+0x3b (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
                    perf 12145 11200.440733:          1 cycles:  ffffffffb900d58b __intel_pmu_enable_all.constprop.0+0x3b (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
        --
                  cgtest 12145 11200.440739:     193472 cycles:  ffffffffb90f6fbc commit_creds+0x1fc (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
                  cgtest 12145 11200.440790:    2691608 cycles:      7fa2cb43019b _dl_sysdep_start+0x7cb (/usr/lib64/ld-2.29.so)
                  cgtest 12145 11200.440962: PERF_RECORD_CGROUP cgroup: 83 /sub
                  cgtest 12147 11200.441054:          1 cycles:  ffffffffb900d58b __intel_pmu_enable_all.constprop.0+0x3b (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
                  cgtest 12147 11200.441057:          1 cycles:  ffffffffb900d58b __intel_pmu_enable_all.constprop.0+0x3b (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
        --
                  cgtest 12148 11200.441103:      10227 cycles:  ffffffffb9a0153d end_repeat_nmi+0x48 (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
                  cgtest 12148 11200.441106:     273295 cycles:  ffffffffb99ecbc7 copy_page+0x7 (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
                  cgtest 12147 11200.441133: PERF_RECORD_CGROUP cgroup: 88 /sub/cgrp1
                  cgtest 12147 11200.441143:    2788845 cycles:  ffffffffb94676c2 security_genfs_sid+0x102 (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
                  cgtest 12148 11200.441162: PERF_RECORD_CGROUP cgroup: 93 /sub/cgrp2
                  cgtest 12148 11200.441182:    2669546 cycles:            401020 _init+0x20 (/wb/cgtest)
                  cgtest 12149 11200.441247:          1 cycles:  ffffffffb900d58b __intel_pmu_enable_all.constprop.0+0x3b (/lib/modules/5.6.0-rc6-00008-gfe2413eefd7f/build/vmlinux)
        [root@seventh ~]#
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325124536.2800725-10-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      160d4af9
    • Namhyung Kim's avatar
      perf top: Add --all-cgroups option · f382842f
      Namhyung Kim authored
      The --all-cgroups option is to enable cgroup profiling support.  It
      tells kernel to record CGROUP events in the ring buffer so that 'perf
      top' can identify task/cgroup association later.
      
      Committer testing:
      
      Use:
      
        # perf top --all-cgroups -s cgroup_id,cgroup,pid
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325124536.2800725-9-namhyung@kernel.org
      Link: http://lore.kernel.org/lkml/20200402015249.3800462-1-namhyung@kernel.org
      [ Extracted the HAVE_FILE_HANDLE from the followup patch ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f382842f
    • Namhyung Kim's avatar
      perf record: Add --all-cgroups option · 8fb4b679
      Namhyung Kim authored
      The --all-cgroups option is to enable cgroup profiling support.  It
      tells kernel to record CGROUP events in the ring buffer so that perf
      report can identify task/cgroup association later.
      
        [root@seventh ~]# perf record --all-cgroups --namespaces /wb/cgtest
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.042 MB perf.data (558 samples) ]
        [root@seventh ~]# perf report --stdio -s cgroup_id,cgroup,pid
        # To display the perf.data header info, please use --header/--header-only options.
        #
        #
        # Total Lost Samples: 0
        #
        # Samples: 558  of event 'cycles'
        # Event count (approx.): 458017341
        #
        # Overhead  cgroup id (dev/inode)  Cgroup          Pid:Command
        # ........  .....................  ..........  ...............
        #
            33.15%  4/0xeffffffb           /sub           9615:looper0
            32.83%  4/0xf00002f5           /sub/cgrp2     9620:looper2
            32.79%  4/0xf00002f4           /sub/cgrp1     9619:looper1
             0.35%  4/0xf00002f5           /sub/cgrp2     9618:cgtest
             0.34%  4/0xf00002f4           /sub/cgrp1     9617:cgtest
             0.32%  4/0xeffffffb           /              9615:looper0
             0.11%  4/0xeffffffb           /sub           9617:cgtest
             0.10%  4/0xeffffffb           /sub           9618:cgtest
      
        #
        # (Tip: Sample related events with: perf record -e '{cycles,instructions}:S')
        #
        [root@seventh ~]#
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325124536.2800725-8-namhyung@kernel.org
      Link: http://lore.kernel.org/lkml/20200402015249.3800462-1-namhyung@kernel.org
      [ Extracted the HAVE_FILE_HANDLE from the followup patch ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      8fb4b679
    • Namhyung Kim's avatar
      perf record: Support synthesizing cgroup events · ab64069f
      Namhyung Kim authored
      Synthesize cgroup events by iterating cgroup filesystem directories.
      The cgroup event only saves the portion of cgroup path after the mount
      point and the cgroup id (which actually is a file handle).
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325124536.2800725-7-namhyung@kernel.org
      Link: http://lore.kernel.org/lkml/20200402015249.3800462-1-namhyung@kernel.org
      [ Extracted the HAVE_FILE_HANDLE from the followup patch, added missing __maybe_unused ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ab64069f
    • Namhyung Kim's avatar
      perf report: Add 'cgroup' sort key · b629f3e9
      Namhyung Kim authored
      The cgroup sort key is to show cgroup membership of each task.
      Currently it shows full path in the cgroupfs (not relative to the root
      of cgroup namespace) since it'd be more intuitive IMHO.  Otherwise root
      cgroup in different namespaces will all show same name - "/".
      
      The cgroup sort key should come before cgroup_id otherwise
      sort_dimension__add() will match it to cgroup_id as it only matches with
      the given substring.
      
      For example it will look like following.  Note that record patch adding
      --all-cgroups patch will come later.
      
        $ perf record -a --namespace --all-cgroups  cgtest
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.208 MB perf.data (4090 samples) ]
      
        $ perf report -s cgroup_id,cgroup,pid
        ...
        # Overhead  cgroup id (dev/inode)  Cgroup          Pid:Command
        # ........  .....................  ..........  ...............
        #
            93.96%  0/0x0                  /                 0:swapper
             1.25%  3/0xeffffffb           /               278:looper0
             0.86%  3/0xf000015f           /sub/cgrp1      280:cgtest
             0.37%  3/0xf0000160           /sub/cgrp2      281:cgtest
             0.34%  3/0xf0000163           /sub/cgrp3      282:cgtest
             0.22%  3/0xeffffffb           /sub            278:looper0
             0.20%  3/0xeffffffb           /               280:cgtest
             0.15%  3/0xf0000163           /sub/cgrp3      285:looper3
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325124536.2800725-6-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b629f3e9
    • Namhyung Kim's avatar
      perf cgroup: Maintain cgroup hierarchy · d1277aa3
      Namhyung Kim authored
      Each cgroup is kept in the perf_env's cgroup_tree sorted by the cgroup
      id.  Hist entries have cgroup id can compare it directly and later it
      can be used to find a group name using this tree.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325124536.2800725-5-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d1277aa3
    • Namhyung Kim's avatar
      perf tools: Basic support for CGROUP event · ba78c1c5
      Namhyung Kim authored
      Implement basic functionality to support cgroup tracking.  Each cgroup
      can be identified by inode number which can be read from userspace too.
      The actual cgroup processing will come in the later patch.
      Reported-by: default avatarkernel test robot <rong.a.chen@intel.com>
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      [ fix perf test failure on sampling parsing ]
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200325124536.2800725-4-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ba78c1c5
    • Namhyung Kim's avatar
      perf tools: Add file-handle feature test · 49f550ea
      Namhyung Kim authored
      The file handle (FHANDLE) support is configurable so some systems might not
      have it.  So add a config feature item to check it on build time so that we
      don't add the cgroup tracking feature based on that.
      
      Committer notes:
      
      Had to make the test use the same construct as its later use in
      synthetic-events.c, in the next patch in this series. i.e. make it be:
      
      	struct {
      		struct file_handle fh;
      		uint64_t cgroup_id;
      	} handle;
      
      To cope with:
      
          CC       /tmp/build/perf/util/cloexec.o
        util/synthetic-events.c:428:22: error: field 'fh' with   CC       /tmp/build/perf/util/call-path.o
        variable sized type 'struct file_handle' not at the end of a struct or class is a GNU
              extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
                        struct file_handle fh;
                                           ^
        1 error generated.
      
      Deal with this at some point, i.e. investigate if the right thing is to
      remove that -Wgnu-variable-sized-type-not-at-end from our CFLAGS, for
      now do the test the same way as it is used looks more sensible.
      Reported-by: default avatarArnaldo Carvalho de Melo <acme@kernel.org>
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200402015249.3800462-1-namhyung@kernel.org
      [ split from a larger patch, removed blank line at EOF ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      49f550ea
    • Arnaldo Carvalho de Melo's avatar
      perf python: Include rwsem.c in the pythong biding · 460c3ed9
      Arnaldo Carvalho de Melo authored
      We'll need it for the cgroup patches, and its better to have it in a
      separate patch in case we need to later revert the cgroup patches.
      
      I.e. without this we have:
      
        [root@five ~]# perf test -v python
        19: 'import perf' in python                               :
        --- start ---
        test child forked, pid 148447
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        ImportError: /tmp/build/perf/python/perf.cpython-37m-x86_64-linux-gnu.so: undefined symbol: down_write
        test child finished with -1
        ---- end ----
        'import perf' in python: FAILED!
        [root@five ~]#
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lore.kernel.org/lkml/20200403123606.GC23243@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      460c3ed9
  3. 02 Apr, 2020 1 commit
  4. 31 Mar, 2020 16 commits
    • Linus Torvalds's avatar
      Merge branch 'x86-vmware-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 42595ce9
      Linus Torvalds authored
      Pull x86 vmware updates from Ingo Molnar:
       "The main change in this tree is the addition of 'steal time clock
        support' for VMware guests"
      
      * 'x86-vmware-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/vmware: Use bool type for vmw_sched_clock
        x86/vmware: Enable steal time accounting
        x86/vmware: Add steal time clock support for VMware guests
        x86/vmware: Remove vmware_sched_clock_setup()
        x86/vmware: Make vmware_select_hypercall() __init
      42595ce9
    • Linus Torvalds's avatar
      Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d9d76778
      Linus Torvalds authored
      Pull x86 mm updates from Ingo Molnar:
       "A handful of changes:
      
         - two memory encryption related fixes
      
         - don't display the kernel's virtual memory layout plaintext on
           32-bit kernels either
      
         - two simplifications"
      
      * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm: Remove the now redundant N_MEMORY check
        dma-mapping: Fix dma_pgprot() for unencrypted coherent pages
        x86: Don't let pgprot_modify() change the page encryption bit
        x86/mm/kmmio: Use this_cpu_ptr() instead get_cpu_var() for kmmio_ctx
        x86/mm/init/32: Stop printing the virtual memory layout
      d9d76778
    • Linus Torvalds's avatar
      Merge branch 'x86-misc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7cc7e935
      Linus Torvalds authored
      Pull misc x86 updates from Ingo Molnar:
      
       - extend the decoder maps with CET instructions
      
       - fix !vDSO corner cases
      
      * 'x86-misc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/tests: Add CET instructions to the new instructions test
        x86/insn: Add Control-flow Enforcement (CET) instructions to the opcode map
        selftests/x86/ptrace_syscall_32: Fix no-vDSO segfault
        selftests/x86/vdso: Fix no-vDSO segfaults
      7cc7e935
    • Linus Torvalds's avatar
      Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d0be2d53
      Linus Torvalds authored
      Pull x86 fpu updates from Ingo Molnar:
       "Misc changes:
      
         - add a pkey sanity check
      
         - three commits to improve and future-proof xstate/xfeature handling
           some more"
      
      * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/pkeys: Add check for pkey "overflow"
        x86/fpu/xstate: Warn when checking alignment of disabled xfeatures
        x86/fpu/xstate: Fix XSAVES offsets in setup_xstate_comp()
        x86/fpu/xstate: Fix last_good_offset in setup_xstate_features()
      d0be2d53
    • Linus Torvalds's avatar
      Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · fdf5563a
      Linus Torvalds authored
      Pull x86 cleanups from Ingo Molnar:
       "This topic tree contains more commits than usual:
      
         - most of it are uaccess cleanups/reorganization by Al
      
         - there's a bunch of prototype declaration (--Wmissing-prototypes)
           cleanups
      
         - misc other cleanups all around the map"
      
      * 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (36 commits)
        x86/mm/set_memory: Fix -Wmissing-prototypes warnings
        x86/efi: Add a prototype for efi_arch_mem_reserve()
        x86/mm: Mark setup_emu2phys_nid() static
        x86/jump_label: Move 'inline' keyword placement
        x86/platform/uv: Add a missing prototype for uv_bau_message_interrupt()
        kill uaccess_try()
        x86: unsafe_put-style macro for sigmask
        x86: x32_setup_rt_frame(): consolidate uaccess areas
        x86: __setup_rt_frame(): consolidate uaccess areas
        x86: __setup_frame(): consolidate uaccess areas
        x86: setup_sigcontext(): list user_access_{begin,end}() into callers
        x86: get rid of put_user_try in __setup_rt_frame() (both 32bit and 64bit)
        x86: ia32_setup_rt_frame(): consolidate uaccess areas
        x86: ia32_setup_frame(): consolidate uaccess areas
        x86: ia32_setup_sigcontext(): lift user_access_{begin,end}() into the callers
        x86/alternatives: Mark text_poke_loc_init() static
        x86/cpu: Fix a -Wmissing-prototypes warning for init_ia32_feat_ctl()
        x86/mm: Drop pud_mknotpresent()
        x86: Replace setup_irq() by request_irq()
        x86/configs: Slightly reduce defconfigs
        ...
      fdf5563a
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 97cddfc3
      Linus Torvalds authored
      Pull x86 build updates from Ingo Molnar:
       "A handful of updates: two linker script cleanups and a stock
        defconfig+allmodconfig bootability fix"
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/vdso: Discard .note.gnu.property sections in vDSO
        x86, vmlinux.lds: Add RUNTIME_DISCARD_EXIT to generic DISCARDS
        x86/Kconfig: Make CMDLINE_OVERRIDE depend on non-empty CMDLINE
      97cddfc3
    • Linus Torvalds's avatar
      Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9589351c
      Linus Torvalds authored
      Pull x86 boot updates from Ingo Molnar:
       "Misc cleanups and small enhancements all around the map"
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/boot/compressed: Fix debug_puthex() parameter type
        x86/setup: Fix static memory detection
        x86/vmlinux: Drop unneeded linker script discard of .eh_frame
        x86/*/Makefile: Use -fno-asynchronous-unwind-tables to suppress .eh_frame sections
        x86/boot/compressed: Remove .eh_frame section from bzImage
        x86/boot/compressed/64: Remove .bss/.pgtable from bzImage
        x86/boot/compressed/64: Use 32-bit (zero-extended) MOV for z_output_len
        x86/boot/compressed/64: Use LEA to initialize boot stack pointer
      9589351c
    • Linus Torvalds's avatar
      Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 3cd86a58
      Linus Torvalds authored
      Pull arm64 updates from Catalin Marinas:
       "The bulk is in-kernel pointer authentication, activity monitors and
        lots of asm symbol annotations. I also queued the sys_mremap() patch
        commenting the asymmetry in the address untagging.
      
        Summary:
      
         - In-kernel Pointer Authentication support (previously only offered
           to user space).
      
         - ARM Activity Monitors (AMU) extension support allowing better CPU
           utilisation numbers for the scheduler (frequency invariance).
      
         - Memory hot-remove support for arm64.
      
         - Lots of asm annotations (SYM_*) in preparation for the in-kernel
           Branch Target Identification (BTI) support.
      
         - arm64 perf updates: ARMv8.5-PMU 64-bit counters, refactoring the
           PMU init callbacks, support for new DT compatibles.
      
         - IPv6 header checksum optimisation.
      
         - Fixes: SDEI (software delegated exception interface) double-lock on
           hibernate with shared events.
      
         - Minor clean-ups and refactoring: cpu_ops accessor,
           cpu_do_switch_mm() converted to C, cpufeature finalisation helper.
      
         - sys_mremap() comment explaining the asymmetric address untagging
           behaviour"
      
      * tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (81 commits)
        mm/mremap: Add comment explaining the untagging behaviour of mremap()
        arm64: head: Convert install_el2_stub to SYM_INNER_LABEL
        arm64: Introduce get_cpu_ops() helper function
        arm64: Rename cpu_read_ops() to init_cpu_ops()
        arm64: Declare ACPI parking protocol CPU operation if needed
        arm64: move kimage_vaddr to .rodata
        arm64: use mov_q instead of literal ldr
        arm64: Kconfig: verify binutils support for ARM64_PTR_AUTH
        lkdtm: arm64: test kernel pointer authentication
        arm64: compile the kernel with ptrauth return address signing
        kconfig: Add support for 'as-option'
        arm64: suspend: restore the kernel ptrauth keys
        arm64: __show_regs: strip PAC from lr in printk
        arm64: unwind: strip PAC from kernel addresses
        arm64: mask PAC bits of __builtin_return_address
        arm64: initialize ptrauth keys for kernel booting task
        arm64: initialize and switch ptrauth kernel keys
        arm64: enable ptrauth earlier
        arm64: cpufeature: handle conflicts based on capability
        arm64: cpufeature: Move cpu capability helpers inside C file
        ...
      3cd86a58
    • Linus Torvalds's avatar
      Merge tag 'microblaze-v5.7-rc1' of git://git.monstr.eu/linux-2.6-microblaze · a8222fd5
      Linus Torvalds authored
      Pull microblaze updates from Michal Simek:
      
       - convert license headers to SPDX
      
       - cleanup header handling and use asm-generic one
      
       - get rid of earlyprintk residues
      
       - define barriers and use it in the code
      
       - get rid of setup_irq() for timer
      
       - various small addons and fixes
      
      * tag 'microblaze-v5.7-rc1' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Replace setup_irq() by request_irq()
        microblaze: Stop printing the virtual memory layout
        microblaze: Use asm generic cmpxchg.h for !SMP case
        microblaze: Define percpu sestion in linker file
        microblaze: Remove unused boot_cpuid variable
        microblaze: Add missing irqflags.h header
        microblaze: Add sync to tlb operations
        microblaze: Define microblaze barrier
        microblaze: Remove empty headers
        microblaze: Remove early printk setup
        microblaze: Remove architecture tlb.h and use generic one
        microblaze: Convert headers to SPDX license
        microblaze: Fix _reset() function
        microblaze: Kernel parameters should be parsed earlier
      a8222fd5
    • Linus Torvalds's avatar
      Merge tag 'please-pull-ia64_for_5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux · cad18da0
      Linus Torvalds authored
      Pull ia64 updates from Tony Luck:
       "Couple of cleanup patches"
      
      * tag 'please-pull-ia64_for_5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux:
        tty/serial: cleanup after ioc*_serial driver removal
        ia64: replace setup_irq() by request_irq()
      cad18da0
    • Linus Torvalds's avatar
      Merge tag 'mips_5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux · d71e0644
      Linus Torvalds authored
      Pull MIPS updates from Thomas Bogendoerfer:
      
       - loongson64 irq rework
      
       - dmi support loongson
      
       - replace setup_irq() by request_irq()
      
       - jazz cleanups
      
       - minor cleanups and fixes
      
      * tag 'mips_5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux: (44 commits)
        MIPS: ralink: mt7621: Fix soc_device introduction
        MIPS: Exclude more dsemul code when CONFIG_MIPS_FP_SUPPORT=n
        MIPS/tlbex: Fix LDDIR usage in setup_pw() for Loongson-3
        MIPS: do not compile generic functions for CONFIG_CAVIUM_OCTEON_SOC
        MAINTAINERS: Update Loongson64 entry
        MIPS: Loongson64: Load built-in dtbs
        MIPS: Loongson64: Add generic dts
        dt-bindings: mips: Add loongson boards
        MIPS: Loongson64: Drop legacy IRQ code
        dt-bindings: interrupt-controller: Add Loongson-3 HTPIC
        irqchip: Add driver for Loongson-3 HyperTransport PIC controller
        dt-bindings: interrupt-controller: Add Loongson LIOINTC
        irqchip: loongson-liointc: Workaround LPC IRQ Errata
        irqchip: Add driver for Loongson I/O Local Interrupt Controller
        docs: mips: remove no longer needed au1xxx_ide.rst documentation
        MIPS: Alchemy: remove no longer used au1xxx_ide.h header
        ide: remove no longer used au1xxx-ide driver
        MIPS: Add support for Desktop Management Interface (DMI)
        firmware: dmi: Add macro SMBIOS_ENTRY_POINT_SCAN_START
        MIPS: ralink: mt7621: introduce 'soc_device' initialization
        ...
      d71e0644
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v5.7-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · 58233ccf
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
       - pagetable layout rewrite, to facilitate global READ_ONCE() rework
      
       - Zorro (Amiga) and DIO (HP 9000/300) bus cleanups
      
       - defconfig updates
      
       - minor cleanups and fixes
      
      * tag 'm68k-for-v5.7-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k: (23 commits)
        m68k: defconfig: Update defconfigs for v5.6-rc4
        zorro: Replace zero-length array with flexible-array member
        m68k: Switch to asm-generic/hardirq.h
        fbdev: c2p: Use BUILD_BUG() instead of custom solution
        dio: Remove unused dio_dev_driver()
        dio: Fix dio_bus_match() kerneldoc
        dio: Make dio_match_device() static
        zorro: Move zorro_bus_type to bus-private header file
        zorro: Remove unused zorro_dev_driver()
        zorro: Use zorro_match_device() helper in zorro_bus_match()
        zorro: Fix zorro_bus_match() kerneldoc
        zorro: Make zorro_match_device() static
        m68k: Fix Kconfig indentation
        m68k: mm: Change ColdFire pgtable_t
        m68k: mm: Fully initialize the page-table allocator
        m68k: mm: Extend table allocator for multiple sizes
        m68k: mm: Use table allocator for pgtables
        m68k: mm: Improve kernel_page_table()
        m68k: mm: Restructure Motorola MMU page-table layout
        m68k: mm: Move the pointer table allocator to motorola.c
        ...
      58233ccf
    • Linus Torvalds's avatar
      Merge tag 'x86-timers-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 458ef2a2
      Linus Torvalds authored
      Pull x86 timer updates from Thomas Gleixner:
       "A series of commits to make the MSR derived CPU and TSC frequency more
        accurate.
      
        It turned out that the frequency tables which have been taken from the
        SDM are inaccurate because the SDM provides truncated and rounded
        values, e.g. 83.3Mhz (83.3333...) or 116.7Mhz (116.6666...).
      
        This causes time drift in the range of ~1 second per hour (20-30
        seconds per day). On some of these SoCs it's not possible to
        recalibrate the TSC because there is no reference (PIT, HPET)
        available.
      
        With some reverse engineering it was established that the possible
        frequencies are derived from the base clock with fixed multiplier /
        divider pairs.
      
        For the CPU models which have a known crystal frequency the kernel now
        uses multiplier / divider pairs which bring the frequencies closer to
        reality and fix the observed time drift issues"
      
      * tag 'x86-timers-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tsc_msr: Make MSR derived TSC frequency more accurate
        x86/tsc_msr: Fix MSR_FSB_FREQ mask for Cherry Trail devices
        x86/tsc_msr: Use named struct initializers
      458ef2a2
    • Linus Torvalds's avatar
      Merge tag 'x86-splitlock-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2853d5fa
      Linus Torvalds authored
      Pull x86 splitlock updates from Thomas Gleixner:
       "Support for 'split lock' detection:
      
        Atomic operations (lock prefixed instructions) which span two cache
        lines have to acquire the global bus lock. This is at least 1k cycles
        slower than an atomic operation within a cache line and disrupts
        performance on other cores. Aside of performance disruption this is a
        unpriviledged form of DoS.
      
        Some newer CPUs have the capability to raise an #AC trap when such an
        operation is attempted. The detection is by default enabled in warning
        mode which will warn once when a user space application is caught. A
        command line option allows to disable the detection or to select fatal
        mode which will terminate offending applications with SIGBUS"
      
      * tag 'x86-splitlock-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/split_lock: Avoid runtime reads of the TEST_CTRL MSR
        x86/split_lock: Rework the initialization flow of split lock detection
        x86/split_lock: Enable split lock detection by kernel
      2853d5fa
    • Linus Torvalds's avatar
      Merge tag 'x86-entry-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d5f744f9
      Linus Torvalds authored
      Pull x86 entry code updates from Thomas Gleixner:
      
       - Convert the 32bit syscalls to be pt_regs based which removes the
         requirement to push all 6 potential arguments onto the stack and
         consolidates the interface with the 64bit variant
      
       - The first small portion of the exception and syscall related entry
         code consolidation which aims to address the recently discovered
         issues vs. RCU, int3, NMI and some other exceptions which can
         interrupt any context. The bulk of the changes is still work in
         progress and aimed for 5.8.
      
       - A few lockdep namespace cleanups which have been applied into this
         branch to keep the prerequisites for the ongoing work confined.
      
      * tag 'x86-entry-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (35 commits)
        x86/entry: Fix build error x86 with !CONFIG_POSIX_TIMERS
        lockdep: Rename trace_{hard,soft}{irq_context,irqs_enabled}()
        lockdep: Rename trace_softirqs_{on,off}()
        lockdep: Rename trace_hardirq_{enter,exit}()
        x86/entry: Rename ___preempt_schedule
        x86: Remove unneeded includes
        x86/entry: Drop asmlinkage from syscalls
        x86/entry/32: Enable pt_regs based syscalls
        x86/entry/32: Use IA32-specific wrappers for syscalls taking 64-bit arguments
        x86/entry/32: Rename 32-bit specific syscalls
        x86/entry/32: Clean up syscall_32.tbl
        x86/entry: Remove ABI prefixes from functions in syscall tables
        x86/entry/64: Add __SYSCALL_COMMON()
        x86/entry: Remove syscall qualifier support
        x86/entry/64: Remove ptregs qualifier from syscall table
        x86/entry: Move max syscall number calculation to syscallhdr.sh
        x86/entry/64: Split X32 syscall table into its own file
        x86/entry/64: Move sys_ni_syscall stub to common.c
        x86/entry/64: Use syscall wrappers for x32_rt_sigreturn
        x86/entry: Refactor SYS_NI macros
        ...
      d5f744f9
    • Linus Torvalds's avatar
      Merge tag 'timers-core-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · dbb381b6
      Linus Torvalds authored
      Pull timekeeping and timer updates from Thomas Gleixner:
       "Core:
      
         - Consolidation of the vDSO build infrastructure to address the
           difficulties of cross-builds for ARM64 compat vDSO libraries by
           restricting the exposure of header content to the vDSO build.
      
           This is achieved by splitting out header content into separate
           headers. which contain only the minimaly required information which
           is necessary to build the vDSO. These new headers are included from
           the kernel headers and the vDSO specific files.
      
         - Enhancements to the generic vDSO library allowing more fine grained
           control over the compiled in code, further reducing architecture
           specific storage and preparing for adopting the generic library by
           PPC.
      
         - Cleanup and consolidation of the exit related code in posix CPU
           timers.
      
         - Small cleanups and enhancements here and there
      
        Drivers:
      
         - The obligatory new drivers: Ingenic JZ47xx and X1000 TCU support
      
         - Correct the clock rate of PIT64b global clock
      
         - setup_irq() cleanup
      
         - Preparation for PWM and suspend support for the TI DM timer
      
         - Expand the fttmr010 driver to support ast2600 systems
      
         - The usual small fixes, enhancements and cleanups all over the
           place"
      
      * tag 'timers-core-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (80 commits)
        Revert "clocksource/drivers/timer-probe: Avoid creating dead devices"
        vdso: Fix clocksource.h macro detection
        um: Fix header inclusion
        arm64: vdso32: Enable Clang Compilation
        lib/vdso: Enable common headers
        arm: vdso: Enable arm to use common headers
        x86/vdso: Enable x86 to use common headers
        mips: vdso: Enable mips to use common headers
        arm64: vdso32: Include common headers in the vdso library
        arm64: vdso: Include common headers in the vdso library
        arm64: Introduce asm/vdso/processor.h
        arm64: vdso32: Code clean up
        linux/elfnote.h: Replace elf.h with UAPI equivalent
        scripts: Fix the inclusion order in modpost
        common: Introduce processor.h
        linux/ktime.h: Extract common header for vDSO
        linux/jiffies.h: Extract common header for vDSO
        linux/time64.h: Extract common header for vDSO
        linux/time32.h: Extract common header for vDSO
        linux/time.h: Extract common header for vDSO
        ...
      dbb381b6