1. 13 Nov, 2019 1 commit
  2. 12 Nov, 2019 19 commits
    • James Clark's avatar
      perf vendor events power9: Fix commas so PMU event files are valid JSON · da3ef7f6
      James Clark authored
      No functional change.
      
      Remove extra commas in the power9 JSON files so that the files
      can be parsed and validated by other utilities such as Python
      that fail to parse invalid JSON.
      
      Before:
      
        $ diffstat -l -p1 /wb/1.patch | while read filename ; do echo $filename ; cat $filename | json_verify ; done
        tools/perf/pmu-events/arch/powerpc/power9/cache.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x300
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/floating-point.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x141
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/frontend.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x250
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/marked.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x301
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/memory.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x300
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/other.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x308
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/pipeline.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x4D0
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/pmc.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x200
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power9/translation.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x1E"
                             (right here) ------^
        JSON is invalid
        $
      
      After:
      
        $ diffstat -l -p1 /wb/1.patch | while read filename ; do echo $filename ; cat $filename | json_verify ; done
        tools/perf/pmu-events/arch/powerpc/power9/cache.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/floating-point.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/frontend.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/marked.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/memory.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/other.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/pipeline.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/pmc.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power9/translation.json
        JSON is valid
        $
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kevin Mooney <kevin.mooney@arm.com>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: Mamatha Inamdar <mamatha4@linux.vnet.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
      Cc: nd@arm.com
      Link: http://lore.kernel.org/lkml/20191112160342.26470-3-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      da3ef7f6
    • James Clark's avatar
      perf vendor events power8: Fix commas so PMU event files are valid JSON · 835e5bd9
      James Clark authored
      No functional change.
      
      Remove extra commas in the power8 JSON files so that the files
      can be parsed and validated by other utilities such as Python
      that fail to parse invalid JSON.
      
      Committer testing:
      
      Before:
      
        $ diffstat -l -p1 /wb/1.patch | while read filename ; do echo $filename ; cat $filename | json_verify ; done
        tools/perf/pmu-events/arch/powerpc/power8/cache.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x4c0
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/floating-point.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x200
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/frontend.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x250
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/marked.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x351
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/memory.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x100
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/other.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x1f0
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/pipeline.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x100
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/pmc.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x200
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/powerpc/power8/translation.json
        parse error: invalid object key (must be a string)
                                                [   {,     "EventCode": "0x4c0
                             (right here) ------^
        JSON is invalid
        $
      
      After:
      
        $ diffstat -l -p1 /wb/1.patch | while read filename ; do echo $filename ; cat $filename | json_verify ; done
        tools/perf/pmu-events/arch/powerpc/power8/cache.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/floating-point.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/frontend.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/marked.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/memory.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/other.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/pipeline.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/pmc.json
        JSON is valid
        tools/perf/pmu-events/arch/powerpc/power8/translation.json
        JSON is valid
        $
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kevin Mooney <kevin.mooney@arm.com>
      Cc: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
      Cc: Mamatha Inamdar <mamatha4@linux.vnet.ibm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
      Cc: nd@arm.com
      Link: http://lore.kernel.org/lkml/20191112160342.26470-2-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      835e5bd9
    • James Clark's avatar
      perf vendor events arm64: Fix commas so PMU event files are valid JSON · a44e4f3a
      James Clark authored
      No functional change.
      
      Add and remove extra commas in the arm64 JSON files so that the files
      can be parsed and validated by other utilities such as Python that fail
      to parse invalid JSON.
      
      Committer testing:
      
      Before:
      
        $ diffstat -l -p1 /wb/1.patch | while read filename ; do echo $filename ; cat $filename | json_verify ; done
        tools/perf/pmu-events/arch/arm64/ampere/emag/branch.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/bus.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/cache.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/clock.json
        parse error: unallowed token at this point in JSON text
                                                [     {         "PublicDescrip
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/exception.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/instruction.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/intrinsic.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/memory.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/ampere/emag/pipeline.json
        parse error: unallowed token at this point in JSON text
                                                [     {         "PublicDescrip
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a53/branch.json
        parse error: invalid object key (must be a string)
                                                [   {     "ArchStdEvent":  "BR
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a53/bus.json
        parse error: invalid object key (must be a string)
                                                [   {         "ArchStdEvent":
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a53/other.json
        parse error: invalid object key (must be a string)
                                                [   {         "ArchStdEvent":
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a57-a72/core-imp-def.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/armv8-recommended.json
        parse error: after array element, I expect ',' or ']'
                                                [     {         "PublicDescrip
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json
        parse error: invalid object key (must be a string)
                                                [     {         "ArchStdEvent"
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json
        parse error: invalid object key (must be a string)
                                                [    { 	    "EventCode": "0x00
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json
        parse error: invalid object key (must be a string)
                                                [    { 	    "EventCode": "0x00
                             (right here) ------^
        JSON is invalid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json
        parse error: invalid object key (must be a string)
                                                [    { 	    "EventCode": "0x00
                             (right here) ------^
        JSON is invalid
        $
      
      After:
      
        $ diffstat -l -p1 /wb/1.patch | while read filename ; do echo $filename ; cat $filename | json_verify ; done
        tools/perf/pmu-events/arch/arm64/ampere/emag/branch.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/bus.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/cache.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/clock.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/exception.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/instruction.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/intrinsic.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/memory.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/ampere/emag/pipeline.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a53/branch.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a53/bus.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a53/other.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/arm/cortex-a57-a72/core-imp-def.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/armv8-recommended.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/cavium/thunderx2/core-imp-def.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/core-imp-def.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-ddrc.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-hha.json
        JSON is valid
        tools/perf/pmu-events/arch/arm64/hisilicon/hip08/uncore-l3c.json
        JSON is valid
        $
      Signed-off-by: default avatarJames Clark <james.clark@arm.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: John Garry <john.garry@huawei.com>
      Cc: Kevin Mooney <kevin.mooney@arm.com>
      Cc: Mark Rutland <mark.rutland@arm.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: nd@arm.com
      Link: http://lore.kernel.org/lkml/20191112160342.26470-1-james.clark@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a44e4f3a
    • Ian Rogers's avatar
      perf parse: Use YYABORT to clear stack after failure, plugging leaks · e1e9b78d
      Ian Rogers authored
      Using return rather than YYABORT means that the stack isn't cleared up
      following a failure. The change to YYABORT means the return value is 1
      rather than -1, but the callers just check for a result of 0 (success).
      Add missing free of a list when an error occurs in event_pmu.
      Signed-off-by: default avatarIan Rogers <irogers@google.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@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/20191109075840.181231-1-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      e1e9b78d
    • Ravi Bangoria's avatar
      perf tool: Provide an option to print perf_event_open args and return value · ccd26741
      Ravi Bangoria authored
      Perf record with verbose=2 already prints this information along with
      whole lot of other traces which requires lot of scrolling. Introduce
      an option to print only perf_event_open() arguments and return value.
      
      Sample o/p:
      
        $ perf --debug perf-event-open=1 record -- ls > /dev/null
        ------------------------------------------------------------
        perf_event_attr:
          size                             112
          { sample_period, sample_freq }   4000
          sample_type                      IP|TID|TIME|PERIOD
          read_format                      ID
          disabled                         1
          inherit                          1
          exclude_kernel                   1
          mmap                             1
          comm                             1
          freq                             1
          enable_on_exec                   1
          task                             1
          precise_ip                       3
          sample_id_all                    1
          exclude_guest                    1
          mmap2                            1
          comm_exec                        1
          ksymbol                          1
          bpf_event                        1
        ------------------------------------------------------------
        sys_perf_event_open: pid 4308  cpu 0  group_fd -1  flags 0x8 = 4
        sys_perf_event_open: pid 4308  cpu 1  group_fd -1  flags 0x8 = 5
        sys_perf_event_open: pid 4308  cpu 2  group_fd -1  flags 0x8 = 6
        sys_perf_event_open: pid 4308  cpu 3  group_fd -1  flags 0x8 = 8
        sys_perf_event_open: pid 4308  cpu 4  group_fd -1  flags 0x8 = 9
        sys_perf_event_open: pid 4308  cpu 5  group_fd -1  flags 0x8 = 10
        sys_perf_event_open: pid 4308  cpu 6  group_fd -1  flags 0x8 = 11
        sys_perf_event_open: pid 4308  cpu 7  group_fd -1  flags 0x8 = 12
        ------------------------------------------------------------
        perf_event_attr:
          type                             1
          size                             112
          config                           0x9
          watermark                        1
          sample_id_all                    1
          bpf_event                        1
          { wakeup_events, wakeup_watermark } 1
        ------------------------------------------------------------
        sys_perf_event_open: pid -1  cpu 0  group_fd -1  flags 0x8
        sys_perf_event_open failed, error -13
        [ perf record: Woken up 1 times to write data ]
        [ perf record: Captured and wrote 0.002 MB perf.data (9 samples) ]
      
      Committer notes:
      
      Just like the 'verbose' variable this new 'debug_peo_args' needs to be
      added to util/python.c, since we don't link the debug.o file in the
      python binding, which ended up making 'perf test python' fail with:
      
        # perf test -v python
        18: 'import perf' in python                               :
        --- start ---
        test child forked, pid 19237
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
        ImportError: /tmp/build/perf/python/perf.so: undefined symbol: debug_peo_args
        test child finished with -1
        ---- end ----
        'import perf' in python: FAILED!
        #
      
      After adding that new variable to util/python.c:
      
        # perf test -v python
        18: 'import perf' in python                               :
        --- start ---
        test child forked, pid 22364
        test child finished with 0
        ---- end ----
        'import perf' in python: Ok
        #
      Signed-off-by: default avatarRavi Bangoria <ravi.bangoria@linux.ibm.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
      Link: http://lore.kernel.org/lkml/20191108094128.28769-1-ravi.bangoria@linux.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ccd26741
    • Arnaldo Carvalho de Melo's avatar
      perf map: Remove ->groups from 'struct map' · 7b018e29
      Arnaldo Carvalho de Melo authored
      With this 'struct map' uses a bit over 3 cachelines:
      
        $ pahole -C map ~/bin/perf
        <SNIP>
        	/* --- cacheline 2 boundary (128 bytes) --- */
        	u64                        (*unmap_ip)(struct map *, u64); /*   128     8 */
        	struct dso *               dso;                            /*   136     8 */
        	refcount_t                 refcnt;                         /*   144     4 */
      
        	/* size: 152, cachelines: 3, members: 18 */
        	/* sum members: 145, holes: 1, sum holes: 3 */
        	/* padding: 4 */
        	/* forced alignments: 2 */
        	/* last cacheline: 24 bytes */
        } __attribute__((__aligned__(8)));
        $
      
      We probably can move map->map/unmap_ip() moved to 'struct map_groups',
      that will shave more 16 bytes, getting this almost to two cachelines.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-ymlv3nzpofv2fugnjnizkrwy@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7b018e29
    • Arnaldo Carvalho de Melo's avatar
      perf map: Combine maps__fixup_overlappings with its only use · 3f662fc0
      Arnaldo Carvalho de Melo authored
      In the process we can kill some of the struct map->groups usage, trying
      to get rid of this per-full struct map fields getting in the way of
      sharing a map across father/parent processes.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-e50eqtqw3za24vmbjnqmmcs6@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      3f662fc0
    • Arnaldo Carvalho de Melo's avatar
      perf annotate: Stop using map->groups, use map_symbol->mg instead · 94e44b9c
      Arnaldo Carvalho de Melo authored
      These were the last uses of map->groups, next cset will nuke it.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-n3g0foos7l7uxq9nar0zo0vj@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      94e44b9c
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Add a 'struct map_groups' pointer to 'struct map_symbol' · 08f6680e
      Arnaldo Carvalho de Melo authored
      And fill it whenever we setup a a 'struct map_symbol', now we need to
      use it, next cset.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-fzwfcnddenz1o7uj1fzw3g46@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      08f6680e
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Use kmaps(map)->machine when we know its a kernel map · 93fcce96
      Arnaldo Carvalho de Melo authored
      And then stop using map->groups to achieve that.
      
      To test that that branch is being taken, probe the function that is only
      called from there and then run something like 'perf top' in another
      xterm:
      
        # perf probe -x ~/bin/perf machine__map_x86_64_entry_trampolines
        Added new event:
          probe_perf:machine__map_x86_64_entry_trampolines (on machine__map_x86_64_entry_trampolines in /home/acme/bin/perf)
      
        You can now use it in all perf tools, such as:
      
        	perf record -e probe_perf:machine__map_x86_64_entry_trampolines -aR sleep 1
      
        # perf trace -e probe_perf:*
             0.000 bash/10614 probe_perf:machine__map_x86_64_entry_trampolines(__probe_ip: 5224944)
        ^C#
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-lgrrzdxo2p9liq2keivcg887@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      93fcce96
    • Arnaldo Carvalho de Melo's avatar
      pref tools: Make 'struct addr_map_symbol' contain 'struct map_symbol' · d46a4cdf
      Arnaldo Carvalho de Melo authored
      So that we pass that substructure around and with it consolidate lots of
      functions that receive a (map, symbol) pair and now can receive just a
      'struct map_symbol' pointer.
      
      This further paves the way to add 'struct map_groups' to 'struct
      map_symbol' so that we can have all we need for annotation so that we
      can ditch 'struct map'->groups, i.e. have the map_groups pointer in a
      more central place, avoiding the pointer in the 'struct map' that have
      tons of instances.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-fs90ttd9q12l7989fo7pw81q@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d46a4cdf
    • Arnaldo Carvalho de Melo's avatar
      perf callchain: Use 'struct map_symbol' in 'struct callchain_cursor_node' · 5f0fef8a
      Arnaldo Carvalho de Melo authored
      To ease passing around map+symbol, just like done for other parts of the
      tree recently.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5f0fef8a
    • Arnaldo Carvalho de Melo's avatar
      perf unwind: Use 'struct map_symbol' in 'struct unwind_entry' · c1529738
      Arnaldo Carvalho de Melo authored
      To help in passing that info around to callchain routines that, for the
      same reason, are moving to use 'struct map_symbol'.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-epsiibeprpxa8qpwji47uskc@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c1529738
    • Arnaldo Carvalho de Melo's avatar
      perf annotate: Pass a 'map_symbol' in places receiving a pair of 'map' and 'symbol' pointers · 29754894
      Arnaldo Carvalho de Melo authored
      We are already passing things like:
      
        symbol__annotate(ms->sym, ms->map, ...)
      
      So shorten the signature of such functions to receive the 'map_symbol'
      pointer.
      
      This also paves the way to having the 'struct map_groups' pointer in the
      'struct map_symbol' so that we can get rid of 'struct map'->groups.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-23yx8v1t41nzpkpi7rdrozww@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      29754894
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Add map_groups to 'struct addr_location' · d3a022cb
      Arnaldo Carvalho de Melo authored
      From there we can get al->mg->machine, so replace that field with the
      more useful 'struct map_groups' that for now we're obtaining from
      al->map->groups, and that is one thing getting into the way of maps
      being fully shareable.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-4qdducrm32tgrjupcp0kjh1e@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d3a022cb
    • Arnaldo Carvalho de Melo's avatar
      perf map_groups: Pass the object to map_groups__find_ams() · 9d355b38
      Arnaldo Carvalho de Melo authored
      We were just passing a map to look for and reuse its map->groups member,
      but the idea is that this is going away, as a map can be in multiple
      rb_trees when being reused via a map_node, so do as all the other
      map_groups methods and pass as its first arg the object being operated
      on.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-nmi2pbggqloogwl6vxrvex5a@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      9d355b38
    • Arnaldo Carvalho de Melo's avatar
      perf symbols: Stop using map->groups, we can use kmaps instead · f2baa060
      Arnaldo Carvalho de Melo authored
      To test that that function is being called I just added a probe on that
      place, enabled it via 'perf trace' asking for at most 16 levels of
      backtraces, system wide, and then ran 'perf top' on another xterm,
      voilà:
      
        # perf probe -x ~/bin/perf dso__process_kernel_symbol
        Added new event:
          probe_perf:dso__process_kernel_symbol (on dso__process_kernel_symbol in /home/acme/bin/perf)
      
        You can now use it in all perf tools, such as:
      
        	perf record -e probe_perf:dso__process_kernel_symbol -aR sleep 1
      
        # perf trace -e probe_perf:dso__process_kernel_symbol/max-stack=16/ --max-events=2
        # perf trace -e probe_perf:dso__process_kernel_symbol/max-stack=16/ --max-events=2
             0.000 :17345/17345 probe_perf:dso__process_kernel_symbol(__probe_ip: 5680224)
                                               dso__process_kernel_symbol (/home/acme/bin/perf)
                                               dso__load_vmlinux (/home/acme/bin/perf)
                                               dso__load_vmlinux_path (/home/acme/bin/perf)
                                               dso__load (/home/acme/bin/perf)
                                               map__load (/home/acme/bin/perf)
                                               thread__find_map (/home/acme/bin/perf)
                                               machine__resolve (/home/acme/bin/perf)
                                               deliver_event (/home/acme/bin/perf)
                                               __ordered_events__flush.part.0 (/home/acme/bin/perf)
                                               process_thread (/home/acme/bin/perf)
                                               start_thread (/usr/lib64/libpthread-2.29.so)
             0.064 :17345/17345 probe_perf:dso__process_kernel_symbol(__probe_ip: 5680224)
                                               dso__process_kernel_symbol (/home/acme/bin/perf)
                                               dso__load_vmlinux (/home/acme/bin/perf)
                                               dso__load_vmlinux_path (/home/acme/bin/perf)
                                               dso__load (/home/acme/bin/perf)
                                               map__load (/home/acme/bin/perf)
                                               thread__find_map (/home/acme/bin/perf)
                                               machine__resolve (/home/acme/bin/perf)
                                               deliver_event (/home/acme/bin/perf)
                                               __ordered_events__flush.part.0 (/home/acme/bin/perf)
                                               process_thread (/home/acme/bin/perf)
                                               start_thread (/usr/lib64/libpthread-2.29.so)
        #
        # perf stat -e probe_perf:dso__process_kernel_symbol
        ^C
         Performance counter stats for 'system wide':
      
                 107,308      probe_perf:dso__process_kernel_symbol
      
             8.215399813 seconds time elapsed
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-5fy66x5hr5ct9pmw84jkiwvm@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f2baa060
    • Arnaldo Carvalho de Melo's avatar
      perf map: Use map->dso->kernel + map__kmaps() in map__kmaps() · de90d513
      Arnaldo Carvalho de Melo authored
      Its equivalent to using map->groups to obtain the machine struct.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-bdbazuj4ggrmzxdviaqdrdwh@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      de90d513
    • Ingo Molnar's avatar
      Merge tag 'perf-core-for-mingo-5.5-20191107' of... · 56b2147f
      Ingo Molnar authored
      Merge tag 'perf-core-for-mingo-5.5-20191107' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
      
      Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
      
      perf report:
      
        Jin Yao:
      
        - Introduce --total-cycles, for basic block profiling, further using data
          obtained from LBR, an example should suffice:
      
            # perf record -b
            ^C[ perf record: Woken up 595 times to write data ]
            [ perf record: Captured and wrote 156.672 MB perf.data (196873 samples) ]
      
            # perf evlist -v
            cycles: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|CPU|PERIOD|BRANCH_STACK, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1, branch_sample_type: ANY
      
            # perf report --total-cycles --stdio
            # To display the perf.data header info, please use --header/--header-only options.
            #
            # Total Lost Samples: 0
            #
            # Samples: 6M of event 'cycles'
            # Event count (approx.): 6299936
            #
            # Sampled  Sampled   Avg     Avg
            # Cycles%  Cycles  Cycles%  Cycles                 [Program Block Range]     Shared Object
            # .......  ......  .......  .....   ....................................  ................
            #
               2.17%     1.7M   0.08%     607       [compiler.h:199 -> common.c:221]  [kernel.vmlinux]
               0.72%   544.5K   0.03%     230     [entry_64.S:657 -> entry_64.S:662]  [kernel.vmlinux]
               0.56%   541.8K   0.09%     672       [compiler.h:199 -> common.c:300]  [kernel.vmlinux]
               0.39%   293.2K   0.01%     104   [list_debug.c:43 -> list_debug.c:61]  [kernel.vmlinux]
               0.36%   278.6K   0.03%     272   [entry_64.S:1289 -> entry_64.S:1308]  [kernel.vmlinux]
      
      perf record:
      
        Adrian Hunter:
      
        - Allow storing perf.data in a directory together with a copy of /proc/kcore.
      
        Jiwei Sun:
      
        - Add support for limit perf output file size, i.e.:
      
          # perf record --all-cpus -F 10000 --max-size=4M sleep 10h
          [ perf record: perf size limit reached (4097 KB), stopping session ]
          [ perf record: Woken up 6 times to write data ]
          [ perf record: Captured and wrote 4.048 MB perf.data (54094 samples) ]
          Terminated
          # ls -lah perf.data
          -rw-------. 1 root root 4.1M Nov  7 15:27 perf.data
          #
      
      perf stat:
      
        Jiri Olsa:
      
        - Add --per-node agregation support:
      
          In live mode:
      
            # perf stat  -a -I 1000 -e cycles --per-node
            #           time node   cpus             counts unit events
                 1.000542550 N0       20          6,202,097      cycles
                 1.000542550 N1       20            639,559      cycles
                 2.002040063 N0       20          7,412,495      cycles
                 2.002040063 N1       20          2,185,577      cycles
                 3.003451699 N0       20          6,508,917      cycles
                 3.003451699 N1       20            765,607      cycles
            ...
      
          Or in the record/report stat session:
      
            # perf stat record -a -I 1000 -e cycles
            #           time             counts unit events
                 1.000536937         10,008,468      cycles
                 2.002090152          9,578,539      cycles
                 3.003625233          7,647,869      cycles
                 4.005135036          7,032,086      cycles
            ^C     4.340902364          3,923,893      cycles
      
            # perf stat report --per-node
            #           time node   cpus             counts unit events
                 1.000536937 N0       20          9,355,086      cycles
                 1.000536937 N1       20            653,382      cycles
                 2.002090152 N0       20          7,712,838      cycles
                 2.002090152 N1       20          1,865,701      cycles
             ...
      
      perf probe:
      
        Masami Hiramatsu:
      
        Various fixes related to recent additions to the DWARF format:
      
        - Fix to find range-only function instance
      
        - Walk function lines in lexical blocks
      
        - Fix to show function entry line as probe-able
      
        - Fix wrong address verification
      
        - Fix to probe a function which has no entry pc
      
        - Fix to probe an inline function which has no entry pc
      
        - Fix to list probe event with correct line number
      
        - Fix to show inlined function callsite without entry_pc
      
        - Fix to show ranges of variables in functions without entry_pc
      
        - Return a better scope DIE if there is no best scope
      
        - Skip end-of-sequence and non statement lines
      
        - Filter out instances except for inlined subroutine and subprogram
      
        - Fix to show calling lines of inlined functions
      
        - Skip overlapped location on searching variables
      
      perf inject:
      
        Adrian Hunter:
      
        - Do not strip evsels with --strip, as they are needed for create_gcov
          (see the autofdo example in tools/perf/Documentation/intel-pt.txt).
      
      Intel PT:
      
        Adrian Hunter:
      
        - Intel PT uses an auxtrace_cache to store the results of code-walking, to avoid
          repeated decoding. Add an auxtrace_cache__remove to handle text poke events.
      
      core:
      
        Andi Kleen:
      
        - Always preserve errno while cleaning up perf_event_open failures.
      
      llvm:
      
        Arnaldo Carvalho de Melo:
      
        - No need to tell that the request for saving a .o file for BPF events, as
          expressed in ~/.perfconfig was satisfied, make that a debug message.
      
      perf vendor events:
      
      Intel:
      
        Haiyan Song:
      
        - Update CascadelakeX events to v1.05.
      
        - Update all the Intel JSON metrics from TMAM 3.6.
      
      Treewide:
      
        Ian Rogers:
      
        - Improve error paths, plugging leaks found using LLVM tools
          such as libFuzzer.
      
      jevents:
      
        Yunfeng Ye:
      
        - Fix resource leak in process_mapfile() and main()
      
      perf kvm:
      
        Igor Lubashev:
      
        - Use evlist layer api when possible.
      
      libsubcmd:
      
        James Clark:
      
        - Move EXTRA_FLAGS to the end to allow overriding existing flags.
      
        - Use -O0 with DEBUG=1
      
      perf diff:
      
        Jin Yao:
      
        - Don't use hack to skip column length calculation
      
      CoreSight ETM:
      
        Leo yan:
      
        - Fix definition of macro TO_CS_QUEUE_NR
      
      ARM64:
      
        John Garry:
      
        - Do not try to include libelf header files when its feature detection
          failed, fixing the cross build for ARM64.
      
      perf tests:
      
        Leo Yan:
      
        - Fix out of bounds memory access in the backward ring buffer test.
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      56b2147f
  3. 11 Nov, 2019 3 commits
  4. 10 Nov, 2019 13 commits
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 44866956
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "A set of fixes that have trickled in over the last couple of weeks:
      
         - MAINTAINER update for Cavium/Marvell ThunderX2
      
         - stm32 tweaks to pinmux for Joystick/Camera, and RAM allocation for
           CAN interfaces
      
         - i.MX fixes for voltage regulator GPIO mappings, fixes voltage
           scaling issues
      
         - More i.MX fixes for various issues on i.MX eval boards: interrupt
           storm due to u-boot leaving pins in new states, fixing power button
           config, a couple of compatible-string corrections.
      
         - Powerdown and Suspend/Resume fixes for Allwinner A83-based tablets
      
         - A few documentation tweaks and a fix of a memory leak in the reset
           subsystem"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
        MAINTAINERS: update Cavium ThunderX2 maintainers
        ARM: dts: stm32: change joystick pinctrl definition on stm32mp157c-ev1
        ARM: dts: stm32: remove OV5640 pinctrl definition on stm32mp157c-ev1
        ARM: dts: stm32: Fix CAN RAM mapping on stm32mp157c
        ARM: dts: stm32: relax qspi pins slew-rate for stm32mp157
        arm64: dts: zii-ultra: fix ARM regulator GPIO handle
        ARM: sunxi: Fix CPU powerdown on A83T
        ARM: dts: sun8i-a83t-tbs-a711: Fix WiFi resume from suspend
        arm64: dts: imx8mn: fix compatible string for sdma
        arm64: dts: imx8mm: fix compatible string for sdma
        reset: fix reset_control_ops kerneldoc comment
        ARM: dts: imx6-logicpd: Re-enable SNVS power key
        soc: imx: gpc: fix initialiser format
        ARM: dts: imx6qdl-sabreauto: Fix storm of accelerometer interrupts
        arm64: dts: ls1028a: fix a compatible issue
        reset: fix reset_control_get_exclusive kerneldoc comment
        reset: fix reset_control_lookup kerneldoc comment
        reset: fix of_reset_control_get_count kerneldoc comment
        reset: fix of_reset_simple_xlate kerneldoc comment
        reset: Fix memory leak in reset_control_array_put()
      44866956
    • Linus Torvalds's avatar
      Merge tag 'staging-5.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · dd892625
      Linus Torvalds authored
      Pull IIO fixes and staging driver from Greg KH:
       "Here is a mix of a number of IIO driver fixes for 5.4-rc7, and a whole
        new staging driver.
      
        The IIO fixes resolve some reported issues, all are tiny.
      
        The staging driver addition is the vboxsf filesystem, which is the
        VirtualBox guest shared folder code. Hans has been trying to get
        filesystem reviewers to review the code for many months now, and
        Christoph finally said to just merge it in staging now as it is
        stand-alone and the filesystem people can review it easier over time
        that way.
      
        I know it's late for this big of an addition, but it is stand-alone.
      
        The code has been in linux-next for a while, long enough to pick up a
        few tiny fixes for it already so people are looking at it.
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'staging-5.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        staging: Fix error return code in vboxsf_fill_super()
        staging: vboxsf: fix dereference of pointer dentry before it is null checked
        staging: vboxsf: Remove unused including <linux/version.h>
        staging: Add VirtualBox guest shared folder (vboxsf) support
        iio: adc: stm32-adc: fix stopping dma
        iio: imu: inv_mpu6050: fix no data on MPU6050
        iio: srf04: fix wrong limitation in distance measuring
        iio: imu: adis16480: make sure provided frequency is positive
      dd892625
    • Linus Torvalds's avatar
      Merge tag 'char-misc-5.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · 3de2a3e9
      Linus Torvalds authored
      Pull char/misc driver fixes from Greg KH:
       "Here are a number of late-arrival driver fixes for issues reported for
        some char/misc drivers for 5.4-rc7
      
        These all come from the different subsystem/driver maintainers as
        things that they had reports for and wanted to see fixed.
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'char-misc-5.4-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        intel_th: pci: Add Jasper Lake PCH support
        intel_th: pci: Add Comet Lake PCH support
        intel_th: msu: Fix possible memory leak in mode_store()
        intel_th: msu: Fix overflow in shift of an unsigned int
        intel_th: msu: Fix missing allocation failure check on a kstrndup
        intel_th: msu: Fix an uninitialized mutex
        intel_th: gth: Fix the window switching sequence
        soundwire: slave: fix scanf format
        soundwire: intel: fix intel_register_dai PDI offsets and numbers
        interconnect: Add locking in icc_set_tag()
        interconnect: qcom: Fix icc_onecell_data allocation
        soundwire: depend on ACPI || OF
        soundwire: depend on ACPI
        thunderbolt: Drop unnecessary read when writing LC command in Ice Lake
        thunderbolt: Fix lockdep circular locking depedency warning
        thunderbolt: Read DP IN adapter first two dwords in one go
      3de2a3e9
    • Linus Torvalds's avatar
      Merge tag 'configfs-for-5.4-2' of git://git.infradead.org/users/hch/configfs · a5871fcb
      Linus Torvalds authored
      Pull configfs regression fix from Christoph Hellwig:
       "Fix a regression from this merge window in the configfs symlink
        handling (Honggang Li)"
      
      * tag 'configfs-for-5.4-2' of git://git.infradead.org/users/hch/configfs:
        configfs: calculate the depth of parent item
      a5871fcb
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9805a683
      Linus Torvalds authored
      Pull x86 fixes from Thomas Gleixner:
       "A small set of fixes for x86:
      
         - Make the tsc=reliable/nowatchdog command line parameter work again.
           It was broken with the introduction of the early TSC clocksource.
      
         - Prevent the evaluation of exception stacks before they are set up.
           This causes a crash in dumpstack because the stack walk termination
           gets screwed up.
      
         - Prevent a NULL pointer dereference in the rescource control file
           system.
      
         - Avoid bogus warnings about APIC id mismatch related to the LDR
           which can happen when the LDR is not in use and therefore not
           initialized. Only evaluate that when the APIC is in logical
           destination mode"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/tsc: Respect tsc command line paraemeter for clocksource_tsc_early
        x86/dumpstack/64: Don't evaluate exception stacks before setup
        x86/apic/32: Avoid bogus LDR warnings
        x86/resctrl: Prevent NULL pointer dereference when reading mondata
      9805a683
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 621084cd
      Linus Torvalds authored
      Pull timer fixes from Thomas Gleixner:
       "A small set of fixes for timekeepoing and clocksource drivers:
      
         - VDSO data was updated conditional on the availability of a VDSO
           capable clocksource. This causes the VDSO functions which do not
           depend on a VDSO capable clocksource to operate on stale data.
           Always update unconditionally.
      
         - Prevent a double free in the mediatek driver
      
         - Use the proper helper in the sh_mtu2 driver so it won't attempt to
           initialize non-existing interrupts"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        timekeeping/vsyscall: Update VDSO data unconditionally
        clocksource/drivers/sh_mtu2: Do not loop using platform_get_irq_by_name()
        clocksource/drivers/mediatek: Fix error handling
      621084cd
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 81388c2b
      Linus Torvalds authored
      Pull scheduler fixes from Thomas Gleixner:
       "Two fixes for scheduler regressions:
      
         - Plug a subtle race condition which was introduced with the rework
           of the next task selection functionality. The change of task
           properties became unprotected which can be observed inconsistently
           causing state corruption.
      
         - A trivial compile fix for CONFIG_CGROUPS=n"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        sched: Fix pick_next_task() vs 'change' pattern race
        sched/core: Fix compilation error when cgroup not selected
      81388c2b
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b584a176
      Linus Torvalds authored
      Pull perf tooling fixes from Thomas Gleixner:
      
       - Fix the time sorting algorithm which was broken due to truncation of
         big numbers
      
       - Fix the python script generator fail caused by a broken tracepoint
         array iterator
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf tools: Fix time sorting
        perf tools: Remove unused trace_find_next_event()
        perf scripting engines: Iterate on tep event arrays directly
      b584a176
    • Linus Torvalds's avatar
      Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ffba65ea
      Linus Torvalds authored
      Pull irq fixlet from Thomas Gleixner:
       "A trivial fix for a kernel doc regression where an argument change was
        not reflected in the documentation"
      
      * 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        irq/irqdomain: Update __irq_domain_alloc_fwnode() function documentation
      ffba65ea
    • Linus Torvalds's avatar
      Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 20c7e296
      Linus Torvalds authored
      Pull stacktrace fix from Thomas Gleixner:
       "A small fix for a stacktrace regression.
      
        Saving a stacktrace for a foreign task skipped an extra entry which
        makes e.g. the output of /proc/$PID/stack incomplete"
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        stacktrace: Don't skip first entry on noncurrent tasks
      20c7e296
    • Linus Torvalds's avatar
      Merge tag '5.4-rc7-smb3-fix' of git://git.samba.org/sfrench/cifs-2.6 · 79a64063
      Linus Torvalds authored
      Pull cifs fix from Steve French:
       "Small fix for an smb3 reconnect bug (also marked for stable)"
      
      * tag '5.4-rc7-smb3-fix' of git://git.samba.org/sfrench/cifs-2.6:
        SMB3: Fix persistent handles reconnect
      79a64063
    • Corentin Labbe's avatar
      lib: Remove select of inexistant GENERIC_IO · 820b7c71
      Corentin Labbe authored
      config option GENERIC_IO was removed but still selected by lib/kconfig
      This patch finish the cleaning.
      
      Fixes: 9de8da47 ("kconfig: kill off GENERIC_IO option")
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarCorentin Labbe <clabbe@baylibre.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      820b7c71
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 4763c089
      Linus Torvalds authored
      Pull pin control fixes from Linus Walleij:
      
       - Fix glitch risks in the Intel GPIO
      
       - Fix the Intel Cherryview valid irq mask calculation.
      
       - Allocate the Intel Cherryview irqchip dynamically.
      
       - Fix the valid mask init sequency on the ST STMFX driver.
      
      * tag 'pinctrl-v5.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: stmfx: fix valid_mask init sequence
        pinctrl: cherryview: Allocate IRQ chip dynamic
        pinctrl: cherryview: Fix irq_valid_mask calculation
        pinctrl: intel: Avoid potential glitches if pin is in GPIO mode
      4763c089
  5. 09 Nov, 2019 4 commits
    • Linus Torvalds's avatar
      Merge tag 'for-5.4-rc6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 00aff683
      Linus Torvalds authored
      Pull btrfs fixes from David Sterba:
       "A few regressions and fixes for stable.
      
        Regressions:
      
         - fix a race leading to metadata space leak after task received a
           signal
      
         - un-deprecate 2 ioctls, marked as deprecated by mistake
      
        Fixes:
      
         - fix limit check for number of devices during chunk allocation
      
         - fix a race due to double evaluation of i_size_read inside max()
           macro, can cause a crash
      
         - remove wrong device id check in tree-checker"
      
      * tag 'for-5.4-rc6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
        btrfs: un-deprecate ioctls START_SYNC and WAIT_SYNC
        btrfs: save i_size to avoid double evaluation of i_size_read in compress_file_range
        Btrfs: fix race leading to metadata space leak after task received signal
        btrfs: tree-checker: Fix wrong check on max devid
        btrfs: Consider system chunk array size for new SYSTEM chunks
      00aff683
    • Linus Torvalds's avatar
      Merge tag 'linux-watchdog-5.4-rc7' of git://www.linux-watchdog.org/linux-watchdog · 4aba1a7e
      Linus Torvalds authored
      Pull watchdog fixes from Wim Van Sebroeck:
      
       - cpwd: fix build regression
      
       - pm8916_wdt: fix pretimeout registration flow
      
       - meson: Fix the wrong value of left time
      
       - imx_sc_wdt: Pretimeout should follow SCU firmware format
      
       - bd70528: Add MODULE_ALIAS to allow module auto loading
      
      * tag 'linux-watchdog-5.4-rc7' of git://www.linux-watchdog.org/linux-watchdog:
        watchdog: bd70528: Add MODULE_ALIAS to allow module auto loading
        watchdog: imx_sc_wdt: Pretimeout should follow SCU firmware format
        watchdog: meson: Fix the wrong value of left time
        watchdog: pm8916_wdt: fix pretimeout registration flow
        watchdog: cpwd: fix build regression
      4aba1a7e
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 0058b0a5
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) BPF sample build fixes from Björn Töpel
      
       2) Fix powerpc bpf tail call implementation, from Eric Dumazet.
      
       3) DCCP leaks jiffies on the wire, fix also from Eric Dumazet.
      
       4) Fix crash in ebtables when using dnat target, from Florian Westphal.
      
       5) Fix port disable handling whne removing bcm_sf2 driver, from Florian
          Fainelli.
      
       6) Fix kTLS sk_msg trim on fallback to copy mode, from Jakub Kicinski.
      
       7) Various KCSAN fixes all over the networking, from Eric Dumazet.
      
       8) Memory leaks in mlx5 driver, from Alex Vesker.
      
       9) SMC interface refcounting fix, from Ursula Braun.
      
      10) TSO descriptor handling fixes in stmmac driver, from Jose Abreu.
      
      11) Add a TX lock to synchonize the kTLS TX path properly with crypto
          operations. From Jakub Kicinski.
      
      12) Sock refcount during shutdown fix in vsock/virtio code, from Stefano
          Garzarella.
      
      13) Infinite loop in Intel ice driver, from Colin Ian King.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (108 commits)
        ixgbe: need_wakeup flag might not be set for Tx
        i40e: need_wakeup flag might not be set for Tx
        igb/igc: use ktime accessors for skb->tstamp
        i40e: Fix for ethtool -m issue on X722 NIC
        iavf: initialize ITRN registers with correct values
        ice: fix potential infinite loop because loop counter being too small
        qede: fix NULL pointer deref in __qede_remove()
        net: fix data-race in neigh_event_send()
        vsock/virtio: fix sock refcnt holding during the shutdown
        net: ethernet: octeon_mgmt: Account for second possible VLAN header
        mac80211: fix station inactive_time shortly after boot
        net/fq_impl: Switch to kvmalloc() for memory allocation
        mac80211: fix ieee80211_txq_setup_flows() failure path
        ipv4: Fix table id reference in fib_sync_down_addr
        ipv6: fixes rt6_probe() and fib6_nh->last_probe init
        net: hns: Fix the stray netpoll locks causing deadlock in NAPI path
        net: usb: qmi_wwan: add support for DW5821e with eSIM support
        CDC-NCM: handle incomplete transfer of MTU
        nfc: netlink: fix double device reference drop
        NFC: st21nfca: fix double free
        ...
      0058b0a5
    • Linus Torvalds's avatar
      Merge tag 'for-linus-2019-11-08' of git://git.kernel.dk/linux-block · 5cb8418c
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - Two NVMe device removal crash fixes, and a compat fixup for for an
         ioctl that was introduced in this release (Anton, Charles, Max - via
         Keith)
      
       - Missing error path mutex unlock for drbd (Dan)
      
       - cgroup writeback fixup on dead memcg (Tejun)
      
       - blkcg online stats print fix (Tejun)
      
      * tag 'for-linus-2019-11-08' of git://git.kernel.dk/linux-block:
        cgroup,writeback: don't switch wbs immediately on dead wbs if the memcg is dead
        block: drbd: remove a stray unlock in __drbd_send_protocol()
        blkcg: make blkcg_print_stat() print stats only for online blkgs
        nvme: change nvme_passthru_cmd64 to explicitly mark rsvd
        nvme-multipath: fix crash in nvme_mpath_clear_ctrl_paths
        nvme-rdma: fix a segmentation fault during module unload
      5cb8418c