1. 09 Aug, 2016 8 commits
    • Arnaldo Carvalho de Melo's avatar
      toops: Sync tools/include/uapi/linux/bpf.h with the kernel · 791cceb8
      Arnaldo Carvalho de Melo authored
      The way we're using kernel headers in tools/ now, with a copy that is
      made to the same path prefixed by "tools/" plus checking if that copy
      got stale, i.e. if the kernel counterpart changed, helps in keeping
      track with new features that may be useful for tools to exploit.
      
      For instance, looking at all the changes to bpf.h since it was last
      copied to tools/include brings this to toolers' attention:
      
      Need to investigate this one to check how to run a program via perf, setting up
      a BPF event, that will take advantage of the way perf already calls clang/LLVM,
      sets up the event and runs the workload in a single command line, helping in
      debugging such semi cooperative programs:
      
        96ae5227 ("bpf: Add bpf_probe_write_user BPF helper to be called in tracers")
      
      This one needs further investigation about using the feature it improves
      in 'perf trace' to do some tcpdumpin' mixed with syscalls, tracepoints,
      probe points, callgraphs, etc:
      
        555c8a86 ("bpf: avoid stack copy and use skb ctx for event output")
      
      Add tracing just packets that are related to some container to that mix:
      
        4a482f34 ("cgroup: bpf: Add bpf_skb_in_cgroup_proto")
        4ed8ec52 ("cgroup: bpf: Add BPF_MAP_TYPE_CGROUP_ARRAY")
      
      Definetely needs to have example programs accessing task_struct from a bpf proggie
      started from 'perf trace':
      
        606274c5 ("bpf: introduce bpf_get_current_task() helper")
      
      Core networking related, XDP:
      
        6ce96ca3 ("bpf: add XDP_TX xdp_action for direct forwarding")
        6a773a15 ("bpf: add XDP prog type for early driver filter")
        13c5c240 ("bpf: add bpf_get_hash_recalc helper")
        d2485c42 ("bpf: add bpf_skb_change_type helper")
        6578171a ("bpf: add bpf_skb_change_proto helper")
      
      Changes detected by the tools build system:
      
        $ make -C tools/perf O=/tmp/build/perf install-bin
        make: Entering directory '/home/acme/git/linux/tools/perf'
          BUILD:   Doing 'make -j4' parallel build
        Warning: tools/include/uapi/linux/bpf.h differs from kernel
          INSTALL  GTK UI
          CC       /tmp/build/perf/bench/mem-memcpy-x86-64-asm.o
        <SNIP>
        $
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexei Starovoitov <ast@fb.com>
      Cc: Brenden Blanco <bblanco@plumgrid.com>
      Cc: Daniel Borkmann <daniel@iogearbox.net>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Martin KaFai Lau <kafai@fb.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Sargun Dhillon <sargun@sargun.me>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/n/tip-difq4ts1xvww6eyfs9e7zlft@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      791cceb8
    • Arnaldo Carvalho de Melo's avatar
      tools: Sync cpufeatures.h and vmx.h with the kernel · bebfb730
      Arnaldo Carvalho de Melo authored
      There were changes related to the deprecation of the "pcommit"
      instruction:
      
        fd1d961d ("x86/insn: remove pcommit")
        dfa169bb ("Revert "KVM: x86: add pcommit support"")
      
      No need to update anything in the tools, as "pcommit" wasn't being
      listed on the VMX_EXIT_REASONS in the tools/perf/arch/x86/util/kvm-stat.c
      file.
      
      Just grab fresh copies of these files to silence the file cache
      coherency detector:
      
        $ make -C tools/perf O=/tmp/build/perf install-bin
        make: Entering directory '/home/acme/git/linux/tools/perf'
          BUILD:   Doing 'make -j4' parallel build
        Warning: tools/arch/x86/include/asm/cpufeatures.h differs from kernel
        Warning: tools/arch/x86/include/uapi/asm/vmx.h differs from kernel
          INSTALL  GTK UI
        <SNIP>
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Dan Williams <dan.j.williams@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Ross Zwisler <ross.zwisler@linux.intel.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Cc: Xiao Guangrong <guangrong.xiao@linux.intel.com>
      Link: http://lkml.kernel.org/n/tip-07pmcc1ysydhyyxbmp1vt0l4@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      bebfb730
    • Naohiro Aota's avatar
      perf probe: Support signedness casting · 19f00b01
      Naohiro Aota authored
      The 'perf probe' tool detects a variable's type and use the detected
      type to add a new probe. Then, kprobes prints its variable in
      hexadecimal format if the variable is unsigned and prints in decimal if
      it is signed.
      
      We sometimes want to see unsigned variable in decimal format (i.e.
      sector_t or size_t). In that case, we need to investigate the variable's
      size manually to specify just signedness.
      
      This patch add signedness casting support. By specifying "s" or "u" as a
      type, perf-probe will investigate variable size as usual and use the
      specified signedness.
      
      E.g. without this:
      
        $ perf probe -a 'submit_bio bio->bi_iter.bi_sector'
        Added new event:
          probe:submit_bio     (on submit_bio with bi_sector=bio->bi_iter.bi_sector)
        You can now use it in all perf tools, such as:
                perf record -e probe:submit_bio -aR sleep 1
        $ cat trace_pipe|head
                dbench-9692  [003] d..1   971.096633: submit_bio: (submit_bio+0x0/0x140) bi_sector=0x3a3d00
                dbench-9692  [003] d..1   971.096685: submit_bio: (submit_bio+0x0/0x140) bi_sector=0x1a3d80
                dbench-9692  [003] d..1   971.096687: submit_bio: (submit_bio+0x0/0x140) bi_sector=0x3a3d80
      ...
        // need to investigate the variable size
        $ perf probe -a 'submit_bio bio->bi_iter.bi_sector:s64'
        Added new event:
          probe:submit_bio     (on submit_bio with bi_sector=bio->bi_iter.bi_sector:s64)
        You can now use it in all perf tools, such as:
              perf record -e probe:submit_bio -aR sleep 1
      
        With this:
      
        // just use "s" to cast its signedness
        $ perf probe -v -a 'submit_bio bio->bi_iter.bi_sector:s'
        Added new event:
          probe:submit_bio     (on submit_bio with bi_sector=bio->bi_iter.bi_sector:s)
        You can now use it in all perf tools, such as:
                perf record -e probe:submit_bio -aR sleep 1
        $ cat trace_pipe|head
                dbench-9689  [001] d..1  1212.391237: submit_bio: (submit_bio+0x0/0x140) bi_sector=128
                dbench-9689  [001] d..1  1212.391252: submit_bio: (submit_bio+0x0/0x140) bi_sector=131072
                dbench-9697  [006] d..1  1212.398611: submit_bio: (submit_bio+0x0/0x140) bi_sector=30208
      
        This commit also update perf-probe.txt to describe "types". Most parts
        are based on existing documentation: Documentation/trace/kprobetrace.txt
      
      Committer note:
      
      Testing using 'perf trace':
      
        # perf probe -a 'submit_bio bio->bi_iter.bi_sector'
        Added new event:
          probe:submit_bio     (on submit_bio with bi_sector=bio->bi_iter.bi_sector)
      
        You can now use it in all perf tools, such as:
      
      	perf record -e probe:submit_bio -aR sleep 1
      
        # trace --no-syscalls --ev probe:submit_bio
            0.000 probe:submit_bio:(ffffffffac3aee00) bi_sector=0xc133c0)
         3181.861 probe:submit_bio:(ffffffffac3aee00) bi_sector=0x6cffb8)
         3181.881 probe:submit_bio:(ffffffffac3aee00) bi_sector=0x6cffc0)
         3184.488 probe:submit_bio:(ffffffffac3aee00) bi_sector=0x6cffc8)
      <SNIP>
         4717.927 probe:submit_bio:(ffffffffac3aee00) bi_sector=0x4dc7a88)
         4717.970 probe:submit_bio:(ffffffffac3aee00) bi_sector=0x4dc7880)
        ^C[root@jouet ~]#
      
      Now, using this new feature:
      
      [root@jouet ~]# perf probe -a 'submit_bio bio->bi_iter.bi_sector:s'
      Added new event:
        probe:submit_bio     (on submit_bio with bi_sector=bio->bi_iter.bi_sector:s)
      
      You can now use it in all perf tools, such as:
      
      	perf record -e probe:submit_bio -aR sleep 1
      
        [root@jouet ~]# trace --no-syscalls --ev probe:submit_bio
           0.000 probe:submit_bio:(ffffffffac3aee00) bi_sector=7145704)
           0.017 probe:submit_bio:(ffffffffac3aee00) bi_sector=7145712)
           0.019 probe:submit_bio:(ffffffffac3aee00) bi_sector=7145720)
           2.567 probe:submit_bio:(ffffffffac3aee00) bi_sector=7145728)
        5631.919 probe:submit_bio:(ffffffffac3aee00) bi_sector=0)
        5631.941 probe:submit_bio:(ffffffffac3aee00) bi_sector=8)
        5631.945 probe:submit_bio:(ffffffffac3aee00) bi_sector=16)
        5631.948 probe:submit_bio:(ffffffffac3aee00) bi_sector=24)
        ^C#
      
      With callchains:
      
        # trace --no-syscalls --ev probe:submit_bio/max-stack=10/
           0.000 probe:submit_bio:(ffffffffac3aee00) bi_sector=50662544)
                                             submit_bio+0xa8200001 ([kernel.kallsyms])
                                             submit_bh+0xa8200013 ([kernel.kallsyms])
                                             jbd2_journal_commit_transaction+0xa8200691 ([kernel.kallsyms])
                                             kjournald2+0xa82000ca ([kernel.kallsyms])
                                             kthread+0xa82000d8 ([kernel.kallsyms])
                                             ret_from_fork+0xa820001f ([kernel.kallsyms])
           0.023 probe:submit_bio:(ffffffffac3aee00) bi_sector=50662552)
                                             submit_bio+0xa8200001 ([kernel.kallsyms])
                                             submit_bh+0xa8200013 ([kernel.kallsyms])
                                             jbd2_journal_commit_transaction+0xa8200691 ([kernel.kallsyms])
                                             kjournald2+0xa82000ca ([kernel.kallsyms])
                                             kthread+0xa82000d8 ([kernel.kallsyms])
                                             ret_from_fork+0xa820001f ([kernel.kallsyms])
           0.027 probe:submit_bio:(ffffffffac3aee00) bi_sector=50662560)
                                             submit_bio+0xa8200001 ([kernel.kallsyms])
                                             submit_bh+0xa8200013 ([kernel.kallsyms])
                                             jbd2_journal_commit_transaction+0xa8200691 ([kernel.kallsyms])
                                             kjournald2+0xa82000ca ([kernel.kallsyms])
                                             kthread+0xa82000d8 ([kernel.kallsyms])
                                             ret_from_fork+0xa820001f ([kernel.kallsyms])
           2.593 probe:submit_bio:(ffffffffac3aee00) bi_sector=50662568)
                                             submit_bio+0xa8200001 ([kernel.kallsyms])
                                             submit_bh+0xa8200013 ([kernel.kallsyms])
                                             journal_submit_commit_record+0xa82001ac ([kernel.kallsyms])
                                             jbd2_journal_commit_transaction+0xa82012e8 ([kernel.kallsyms])
                                             kjournald2+0xa82000ca ([kernel.kallsyms])
                                             kthread+0xa82000d8 ([kernel.kallsyms])
                                             ret_from_fork+0xa820001f ([kernel.kallsyms])
        ^C#
      Signed-off-by: default avatarNaohiro Aota <naohiro.aota@hgst.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1470710408-23515-1-git-send-email-naohiro.aota@hgst.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      19f00b01
    • Mark Rutland's avatar
      perf stat: Avoid skew when reading events · 3df33eff
      Mark Rutland authored
      When we don't have a tracee (i.e. we're attaching to a task or CPU),
      counters can still be running after our workload finishes, and can still
      be running as we read their values. As we read events one-by-one, there
      can be arbitrary skew between values of events, even within a group.
      This means that ratios within an event group are not reliable.
      
      This skew can be seen if measuring a group of identical events, e.g:
      
        # perf stat -a -C0 -e '{cycles,cycles}' sleep 1
      
      To avoid this, we must stop groups from counting before we read the
      values of any constituent events. This patch adds and makes use of a new
      disable_counters() helper, which disables group leaders (and thus each
      group as a whole). This mirrors the use of enable_counters() for
      starting event groups in the absence of a tracee.
      
      Closing a group leader splits the group, and without a disabled group
      leader the newly split events will begin counting. Thus to ensure counts
      are reliable we must defer closing group leaders until all counts have
      been read. To do so this patch removes the event closing logic from the
      read_counters() helper, explicitly closes the events using
      perf_evlist__close(), which also aids legibility.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/1470747869-3567-1-git-send-email-mark.rutland@arm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      3df33eff
    • Konstantin Khlebnikov's avatar
      perf probe: Fix module name matching · cb3f3378
      Konstantin Khlebnikov authored
      If module is "module" then dso->short_name is "[module]".  Substring
      comparing is't enough: "raid10" matches to "[raid1]".  This patch also
      checks terminating zero in module name.
      Signed-off-by: default avatarKonstantin Khlebnikov <khlebnikov@yandex-team.ru>
      Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Link: http://lkml.kernel.org/r/147039975648.715620.12985971832789032159.stgit@buzzSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      cb3f3378
    • Masami Hiramatsu's avatar
      perf probe: Adjust map->reloc offset when finding kernel symbol from map · 8e34189b
      Masami Hiramatsu authored
      Adjust map->reloc offset for the unmapped address when finding
      alternative symbol address from map, because KASLR can relocate the
      kernel symbol address.
      
      The same adjustment has been done when finding appropriate kernel symbol
      address from map which was introduced by commit f90acac7 ("perf
      probe: Find given address from offline dwarf")
      Reported-by: default avatarArnaldo Carvalho de Melo <acme@kernel.org>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu@linaro.org>
      Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/20160806192948.e366f3fbc4b194de600f8326@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      8e34189b
    • Arnaldo Carvalho de Melo's avatar
      perf hists: Trim libtraceevent trace_seq buffers · 887fa86d
      Arnaldo Carvalho de Melo authored
      When we use libtraceevent to format trace event fields into printable
      strings to use in hist entries it is important to trim it from the
      default 4 KiB it starts with to what is really used, to reduce the
      memory footprint, so use realloc(seq.buffer, seq.len + 1) when returning
      the seq.buffer formatted with the fields contents.
      Reported-and-Tested-by: default avatarWang Nan <wangnan0@huawei.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lkml.kernel.org/n/tip-t3hl7uxmilrkigzmc90rlhk2@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      887fa86d
    • Brendan Gregg's avatar
      perf script: Add 'bpf-output' field to usage message · bcdc09af
      Brendan Gregg authored
      This adds the 'bpf-output' field to the perf script usage message, and docs.
      Signed-off-by: default avatarBrendan Gregg <bgregg@netflix.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1470192469-11910-4-git-send-email-bgregg@netflix.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      bcdc09af
  2. 04 Aug, 2016 1 commit
    • Ingo Molnar's avatar
      Merge tag 'perf-core-for-mingo-20160803' of... · f282f7a0
      Ingo Molnar authored
      Merge tag 'perf-core-for-mingo-20160803' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
      
      Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
      
      New features:
      
      - Add --sample-cpu to 'perf record', to explicitely ask for sampling
        the CPU (Jiri Olsa)
      
      Fixes:
      
      - Fix processing of multi byte chunks in objdump output, fixing
        disassemble processing for annotation on at least ARM64 (Jan Stancek)
      
      - Use SyS_epoll_wait in a BPF 'perf test' entry instead of sys_epoll_wait, that
        is not present in the DWARF info in vmlinux files (Arnaldo Carvalho de Melo)
      
      - Add -wno-shadow when processing files using perl headers, fixing
        the build on Fedora Rawhide and Arch Linux (Namhyung Kim)
      
      Infrastructure changes:
      
      - Annotate prep work to better catch and report errors related to
        using objdump to disassemble DSOs (Arnaldo Carvalho de Melo)
      
      - Add 'alloc', 'scnprintf' and 'and' methods for bitmap processing (Jiri Olsa)
      
      - Add nested output resorting callback in hists processing (Jiri Olsa)
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      f282f7a0
  3. 03 Aug, 2016 1 commit
    • Arnaldo Carvalho de Melo's avatar
      perf tests bpf: Use SyS_epoll_wait alias · c369e0a1
      Arnaldo Carvalho de Melo authored
      Something made the sys_epoll_wait() function alias not to be found in
      the vmlinux DWARF info, being found only in /proc/kallsyms, which made
      the BPF perf tests to fail:
      
        [root@jouet ~]# perf test BPF
        37: Test BPF filter                                          :
        37.1: Test basic BPF filtering                               : FAILED!
        37.2: Test BPF prologue generation                           : Skip
        37.3: Test BPF relocation checker                            : Skip
        [root@jouet ~]#
      
      Using -v we can see it is failing to find DWARF info for the probed function,
      sys_epoll_wait, which we can find in /proc/kallsyms but not in vmlinux with
      CONFIG_DEBUG_INFO:
      
        [root@jouet ~]# grep -w sys_epoll_wait /proc/kallsyms
        ffffffffbd295b50 T sys_epoll_wait
        [root@jouet ~]#
      
        [root@jouet ~]# readelf -wi /lib/modules/4.7.0+/build/vmlinux | grep -w sys_epoll_wait
        [root@jouet ~]#
      
      If we try to use perf probe:
      
      [root@jouet ~]# perf probe sys_epoll_wait
      Failed to find debug information for address ffffffffbd295b50
      Probe point 'sys_epoll_wait' not found.
        Error: Failed to add events.
      [root@jouet ~]#
      
      It all works if we use SyS_epoll_wait, that is just an alias to the probed
      function:
      
        [root@jouet ~]# grep -i sys_epoll_wait /proc/kallsyms
        ffffffffbd295b50 T SyS_epoll_wait
        ffffffffbd295b50 T sys_epoll_wait
        [root@jouet ~]#
      
      So use it:
      
        [root@jouet ~]# perf test BPF
        37: Test BPF filter                                          :
        37.1: Test basic BPF filtering                               : Ok
        37.2: Test BPF prologue generation                           : Ok
        37.3: Test BPF relocation checker                            : Ok
        [root@jouet ~]#
      
      Further info:
      
        [root@jouet ~]# gcc --version
        gcc (GCC) 6.1.1 20160621 (Red Hat 6.1.1-3)
        [acme@jouet linux]$ cat /etc/fedora-release
        Fedora release 24 (Twenty Four)
      
      Investigation as to why it fails is still underway, but it was always
      going from sys_epoll_wait to SyS_epoll_wait when looking up the DWARF
      info in vmlinux, and this is what is breaking now.
      
      Switching to use SyS_epoll_wait allows this test to proceed and test the
      BPF code it was designed for, so lets have this in to allow passing this
      test while we fix the root cause.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexei Starovoitov <alexei.starovoitov@gmail.com>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/n/tip-7hekjp0bodwjbb419sl2b55h@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c369e0a1
  4. 02 Aug, 2016 11 commits
  5. 01 Aug, 2016 4 commits
  6. 30 Jul, 2016 8 commits
    • Linus Torvalds's avatar
      Merge branch 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d761f3ed
      Linus Torvalds authored
      Pull x86 microcode updates from Thomas Gleixner:
      
       - more work to make the microcode loader robust
      
       - a fix for the micro code load precedence
      
       - fixes for initrd loading with randomized memory
      
       - less printk noise on SMP machines
      
      * 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/asm, x86/microcode: Add __PAGE_OFFSET_BASE define on 32-bit
        x86/microcode/intel: Fix initrd loading with CONFIG_RANDOMIZE_MEMORY=y
        x86/microcode: Remove unused symbol exports
        x86/microcode/intel: Do not issue microcode updates messages on each CPU
        Documentation/microcode: Document some aspects for more clarity
        x86/microcode/AMD: Make amd_ucode_patch[] static
        x86/microcode/intel: Unexport save_mc_for_early()
        x86/microcode/intel: Rename load_microcode_early() to find_microcode_patch()
        x86/microcode: Propagate save_microcode_in_initrd() retval
        x86/microcode: Get rid of find_cpio_data()'s dummy offset arg
        lib/cpio: Make find_cpio_data()'s offset arg optional
        x86/microcode: Fix suspend to RAM with builtin microcode
        x86/microcode: Fix loading precedence
      d761f3ed
    • Linus Torvalds's avatar
      Merge branch 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · b325e04e
      Linus Torvalds authored
      Pull x86 cpufeature updates from Thomas Gleixner:
      
       - a workaround for the MONITOR instruction erratum of Goldmont CPUs
      
       - small fixes and cleanups here and there
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/cpu: Add workaround for MONITOR instruction erratum on Goldmont based CPUs
        x86/cpu: Rename "WESTMERE2" family to "NEHALEM_G"
        x86/amd_nb: Clean up init path
        x86/cpufeature: Add helper macro for mask check macros
        x86/cpufeature: Make sure DISABLED/REQUIRED macros are updated
        x86/cpufeature: Update cpufeaure macros
      b325e04e
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7f7d5564
      Linus Torvalds authored
      Pull perf fixes from Thomas Gleixner:
       "This update contains:
      
         - a fix for the bpf tools to use the new EM_BPF code
      
         - a fix for the module parser of perf to retrieve the
           proper text start address
      
         - add str_error_c to libapi to avoid linking against
           tools/lib/str_error_r.o"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tools lib api: Add str_error_c to libapi
        perf s390: Fix 'start' address of module's map
        tools lib bpf: Use official ELF e_machine value
      7f7d5564
    • Linus Torvalds's avatar
      Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 228ffba2
      Linus Torvalds authored
      Pull misc fixes from Thomas Gleixner:
       "This update contains:
      
         - a fix for stomp-machine so the nmi_watchdog wont trigger on the cpu
           waiting for the others to execute the callback
      
         - various fixes and updates to objtool including an resync of the
           instruction decoder to match the kernel's decoder"
      
      * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        objtool: Un-capitalize "Warning" for out-of-sync instruction decoder
        objtool: Resync x86 instruction decoder with the kernel's
        objtool: Support new GCC 6 switch jump table pattern
        stop_machine: Touch_nmi_watchdog() after MULTI_STOP_PREPARE
        objtool: Add 'fixdep' to objtool/.gitignore
      228ffba2
    • Linus Torvalds's avatar
      Merge tag 'devicetree-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · f64d6e2a
      Linus Torvalds authored
      Pull DeviceTree updates from Rob Herring:
      
       - remove most of_platform_populate() calls in arch code.  Now the DT
         core code calls it in the default case and platforms only need to
         call it if they have special needs
      
       - use pr_fmt on all the DT core print statements
      
       - CoreSight binding doc improvements to block name descriptions
      
       - add dt_to_config script which can parse dts files and list
         corresponding kernel config options
      
       - fix memory leak hit with a PowerMac DT
      
       - correct a bunch of STMicro compatible strings to use the correct
         vendor prefix
      
       - fix DA9052 PMIC binding doc to match what is actually used in dts
         files
      
      * tag 'devicetree-for-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (35 commits)
        documentation: da9052: Update regulator bindings names to match DA9052/53 DTS expectations
        xtensa: Partially Revert "xtensa: Remove unnecessary of_platform_populate with default match table"
        xtensa: Fix build error due to missing include file
        MIPS: ath79: Add missing include file
        Fix spelling errors in Documentation/devicetree
        ARM: dts: fix STMicroelectronics compatible strings
        powerpc/dts: fix STMicroelectronics compatible strings
        Documentation: dt: i2c: use correct STMicroelectronics vendor prefix
        scripts/dtc: dt_to_config - kernel config options for a devicetree
        of: fdt: mark unflattened tree as detached
        of: overlay: add resolver error prints
        coresight: document binding acronyms
        Documentation/devicetree: document cavium-pip rx-delay/tx-delay properties
        of: use pr_fmt prefix for all console printing
        of/irq: Mark initialised interrupt controllers as populated
        of: fix memory leak related to safe_name()
        Revert "of/platform: export of_default_bus_match_table"
        of: unittest: use of_platform_default_populate() to populate default bus
        memory: omap-gpmc: use of_platform_default_populate() to populate default bus
        bus: uniphier-system-bus: use of_platform_default_populate() to populate default bus
        ...
      f64d6e2a
    • Linus Torvalds's avatar
      Merge tag 'clk-for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux · 1056c9bd
      Linus Torvalds authored
      Pull clk updates from Michael Turquette:
       "The bulk of the changes are updates and fixes to existing clk provider
        drivers, along with a pretty standard number of new drivers.  The core
        recieved a small number of updates as well.
      
        Core changes of note:
         - removed CLK_IS_ROOT flag
      
        New clk provider drivers:
         - Renesas r8a7796 clock pulse generator / module standby and
           software reset
         - Allwinner sun8i H3 clock controller unit
         - AmLogic meson8b clock controller (rewritten)
         - AmLogic gxbb clock controller
         - support for some new ICs was added by simple changes to static
           data tables for chips sharing the same family
      
        Driver updates of note:
         - the Allwinner sunxi clock driver infrastucture was rewritten to
           comform to the state of the art at drivers/clk/sunxi-ng.  The old
           implementation is still supported for backwards compatibility with
           the DT ABI"
      
      * tag 'clk-for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (162 commits)
        clk: Makefile: re-sort and clean up
        Revert "clk: gxbb: expose CLKID_MMC_PCLK"
        clk: samsung: Allow modular build of the Audio Subsystem CLKCON driver
        clk: samsung: make clk-s5pv210-audss explicitly non-modular
        clk: exynos5433: remove CLK_IGNORE_UNUSED flag from SPI clocks
        clk: oxnas: Add hardware dependencies
        clk: imx7d: do not set parent of ethernet time/ref clocks
        ARM: dt: sun8i: switch the H3 to the new CCU driver
        clk: sunxi-ng: h3: Fix Kconfig symbol typo
        clk: sunxi-ng: h3: Fix audio clock divider offset
        clk: sunxi-ng: Add H3 clocks
        clk: sunxi-ng: Add N-K-M-P factor clock
        clk: sunxi-ng: Add N-K-M Factor clock
        clk: sunxi-ng: Add N-M-factor clock support
        clk: sunxi-ng: Add N-K-factor clock support
        clk: sunxi-ng: Add M-P factor clock support
        clk: sunxi-ng: Add divider
        clk: sunxi-ng: Add phase clock support
        clk: sunxi-ng: Add mux clock support
        clk: sunxi-ng: Add gate clock support
        ...
      1056c9bd
    • Linus Torvalds's avatar
      Merge branch 'stable-4.8' of git://git.infradead.org/users/pcmoore/audit · 797cee98
      Linus Torvalds authored
      Pull audit updates from Paul Moore:
       "Six audit patches for 4.8.
      
        There are a couple of style and minor whitespace tweaks for the logs,
        as well as a minor fixup to catch errors on user filter rules, however
        the major improvements are a fix to the s390 syscall argument masking
        code (reviewed by the nice s390 folks), some consolidation around the
        exclude filtering (less code, always a win), and a double-fetch fix
        for recording the execve arguments"
      
      * 'stable-4.8' of git://git.infradead.org/users/pcmoore/audit:
        audit: fix a double fetch in audit_log_single_execve_arg()
        audit: fix whitespace in CWD record
        audit: add fields to exclude filter by reusing user filter
        s390: ensure that syscall arguments are properly masked on s390
        audit: fix some horrible switch statement style crimes
        audit: fixup: log on errors from filter user rules
      797cee98
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security · 7a1e8b80
      Linus Torvalds authored
      Pull security subsystem updates from James Morris:
       "Highlights:
      
         - TPM core and driver updates/fixes
         - IPv6 security labeling (CALIPSO)
         - Lots of Apparmor fixes
         - Seccomp: remove 2-phase API, close hole where ptrace can change
           syscall #"
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security: (156 commits)
        apparmor: fix SECURITY_APPARMOR_HASH_DEFAULT parameter handling
        tpm: Add TPM 2.0 support to the Nuvoton i2c driver (NPCT6xx family)
        tpm: Factor out common startup code
        tpm: use devm_add_action_or_reset
        tpm2_i2c_nuvoton: add irq validity check
        tpm: read burstcount from TPM_STS in one 32-bit transaction
        tpm: fix byte-order for the value read by tpm2_get_tpm_pt
        tpm_tis_core: convert max timeouts from msec to jiffies
        apparmor: fix arg_size computation for when setprocattr is null terminated
        apparmor: fix oops, validate buffer size in apparmor_setprocattr()
        apparmor: do not expose kernel stack
        apparmor: fix module parameters can be changed after policy is locked
        apparmor: fix oops in profile_unpack() when policy_db is not present
        apparmor: don't check for vmalloc_addr if kvzalloc() failed
        apparmor: add missing id bounds check on dfa verification
        apparmor: allow SYS_CAP_RESOURCE to be sufficient to prlimit another task
        apparmor: use list_next_entry instead of list_entry_next
        apparmor: fix refcount race when finding a child profile
        apparmor: fix ref count leak when profile sha1 hash is read
        apparmor: check that xindex is in trans_table bounds
        ...
      7a1e8b80
  7. 29 Jul, 2016 7 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace · a867d734
      Linus Torvalds authored
      Pull userns vfs updates from Eric Biederman:
       "This tree contains some very long awaited work on generalizing the
        user namespace support for mounting filesystems to include filesystems
        with a backing store.  The real world target is fuse but the goal is
        to update the vfs to allow any filesystem to be supported.  This
        patchset is based on a lot of code review and testing to approach that
        goal.
      
        While looking at what is needed to support the fuse filesystem it
        became clear that there were things like xattrs for security modules
        that needed special treatment.  That the resolution of those concerns
        would not be fuse specific.  That sorting out these general issues
        made most sense at the generic level, where the right people could be
        drawn into the conversation, and the issues could be solved for
        everyone.
      
        At a high level what this patchset does a couple of simple things:
      
         - Add a user namespace owner (s_user_ns) to struct super_block.
      
         - Teach the vfs to handle filesystem uids and gids not mapping into
           to kuids and kgids and being reported as INVALID_UID and
           INVALID_GID in vfs data structures.
      
        By assigning a user namespace owner filesystems that are mounted with
        only user namespace privilege can be detected.  This allows security
        modules and the like to know which mounts may not be trusted.  This
        also allows the set of uids and gids that are communicated to the
        filesystem to be capped at the set of kuids and kgids that are in the
        owning user namespace of the filesystem.
      
        One of the crazier corner casees this handles is the case of inodes
        whose i_uid or i_gid are not mapped into the vfs.  Most of the code
        simply doesn't care but it is easy to confuse the inode writeback path
        so no operation that could cause an inode write-back is permitted for
        such inodes (aka only reads are allowed).
      
        This set of changes starts out by cleaning up the code paths involved
        in user namespace permirted mounts.  Then when things are clean enough
        adds code that cleanly sets s_user_ns.  Then additional restrictions
        are added that are possible now that the filesystem superblock
        contains owner information.
      
        These changes should not affect anyone in practice, but there are some
        parts of these restrictions that are changes in behavior.
      
         - Andy's restriction on suid executables that does not honor the
           suid bit when the path is from another mount namespace (think
           /proc/[pid]/fd/) or when the filesystem was mounted by a less
           privileged user.
      
         - The replacement of the user namespace implicit setting of MNT_NODEV
           with implicitly setting SB_I_NODEV on the filesystem superblock
           instead.
      
           Using SB_I_NODEV is a stronger form that happens to make this state
           user invisible.  The user visibility can be managed but it caused
           problems when it was introduced from applications reasonably
           expecting mount flags to be what they were set to.
      
        There is a little bit of work remaining before it is safe to support
        mounting filesystems with backing store in user namespaces, beyond
        what is in this set of changes.
      
         - Verifying the mounter has permission to read/write the block device
           during mount.
      
         - Teaching the integrity modules IMA and EVM to handle filesystems
           mounted with only user namespace root and to reduce trust in their
           security xattrs accordingly.
      
         - Capturing the mounters credentials and using that for permission
           checks in d_automount and the like.  (Given that overlayfs already
           does this, and we need the work in d_automount it make sense to
           generalize this case).
      
        Furthermore there are a few changes that are on the wishlist:
      
         - Get all filesystems supporting posix acls using the generic posix
           acls so that posix_acl_fix_xattr_from_user and
           posix_acl_fix_xattr_to_user may be removed.  [Maintainability]
      
         - Reducing the permission checks in places such as remount to allow
           the superblock owner to perform them.
      
         - Allowing the superblock owner to chown files with unmapped uids and
           gids to something that is mapped so the files may be treated
           normally.
      
        I am not considering even obvious relaxations of permission checks
        until it is clear there are no more corner cases that need to be
        locked down and handled generically.
      
        Many thanks to Seth Forshee who kept this code alive, and putting up
        with me rewriting substantial portions of what he did to handle more
        corner cases, and for his diligent testing and reviewing of my
        changes"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (30 commits)
        fs: Call d_automount with the filesystems creds
        fs: Update i_[ug]id_(read|write) to translate relative to s_user_ns
        evm: Translate user/group ids relative to s_user_ns when computing HMAC
        dquot: For now explicitly don't support filesystems outside of init_user_ns
        quota: Handle quota data stored in s_user_ns in quota_setxquota
        quota: Ensure qids map to the filesystem
        vfs: Don't create inodes with a uid or gid unknown to the vfs
        vfs: Don't modify inodes with a uid or gid unknown to the vfs
        cred: Reject inodes with invalid ids in set_create_file_as()
        fs: Check for invalid i_uid in may_follow_link()
        vfs: Verify acls are valid within superblock's s_user_ns.
        userns: Handle -1 in k[ug]id_has_mapping when !CONFIG_USER_NS
        fs: Refuse uid/gid changes which don't map into s_user_ns
        selinux: Add support for unprivileged mounts from user namespaces
        Smack: Handle labels consistently in untrusted mounts
        Smack: Add support for unprivileged mounts from user namespaces
        fs: Treat foreign mounts as nosuid
        fs: Limit file caps to the user namespace of the super block
        userns: Remove the now unnecessary FS_USERNS_DEV_MOUNT flag
        userns: Remove implicit MNT_NODEV fragility.
        ...
      a867d734
    • Steve Twiss's avatar
      documentation: da9052: Update regulator bindings names to match DA9052/53 DTS expectations · 099c0cbd
      Steve Twiss authored
      Buck and LDO binding name changes.
      
      The binding names for the regulators have been changed to match the current
      expectation from existing device tree source files.
      
      This fix rectifies the disparity between what currently exists in some
      .dts[i] board files and what is listed in this binding document. This
      change re-aligns those differences and also brings the binding document
      in-line with the expectations of the product datasheet from Dialog
      Semiconductor.
      
      Bucks and LDOs now follow the expected notation:
      { buck1, buck2, buck3, buck4 }
      { ldo1, ldo2, ldo3, ldo4, ldo5, ldo6, ldo7, ldo8, ldo9, ldo10 }
      Signed-off-by: default avatarSteve Twiss <stwiss.opensource@diasemi.com>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      099c0cbd
    • Linus Torvalds's avatar
      Merge tag 'pm-urgent-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 601f887d
      Linus Torvalds authored
      Pull power management fix from Rafael Wysocki:
       "Fix a nasty (and really hard to debug) memory corruption during resume
        from hibernation on x86-64 (that leads to a kernel panic most of the
        time) due to the use of a stale stack pointer value in FRAME_BEGIN
        (Josh Poimboeuf)"
      
      * tag 'pm-urgent-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        x86/power/64: Fix hibernation return address corruption
      601f887d
    • Linus Torvalds's avatar
      Merge branch 'for-4.7-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 574c7e23
      Linus Torvalds authored
      Pull more cgroup updates from Tejun Heo:
       "I forgot to include the patches which got applied to for-4.7-fixes
        late during last cycle.
      
        Eric's three patches fix bugs introduced with the namespace support"
      
      * 'for-4.7-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        cgroupns: Only allow creation of hierarchies in the initial cgroup namespace
        cgroupns: Close race between cgroup_post_fork and copy_cgroup_ns
        cgroupns: Fix the locking in copy_cgroup_ns
      574c7e23
    • Linus Torvalds's avatar
      Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · a6408f6c
      Linus Torvalds authored
      Pull smp hotplug updates from Thomas Gleixner:
       "This is the next part of the hotplug rework.
      
         - Convert all notifiers with a priority assigned
      
         - Convert all CPU_STARTING/DYING notifiers
      
           The final removal of the STARTING/DYING infrastructure will happen
           when the merge window closes.
      
        Another 700 hundred line of unpenetrable maze gone :)"
      
      * 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (70 commits)
        timers/core: Correct callback order during CPU hot plug
        leds/trigger/cpu: Move from CPU_STARTING to ONLINE level
        powerpc/numa: Convert to hotplug state machine
        arm/perf: Fix hotplug state machine conversion
        irqchip/armada: Avoid unused function warnings
        ARC/time: Convert to hotplug state machine
        clocksource/atlas7: Convert to hotplug state machine
        clocksource/armada-370-xp: Convert to hotplug state machine
        clocksource/exynos_mct: Convert to hotplug state machine
        clocksource/arm_global_timer: Convert to hotplug state machine
        rcu: Convert rcutree to hotplug state machine
        KVM/arm/arm64/vgic-new: Convert to hotplug state machine
        smp/cfd: Convert core to hotplug state machine
        x86/x2apic: Convert to CPU hotplug state machine
        profile: Convert to hotplug state machine
        timers/core: Convert to hotplug state machine
        hrtimer: Convert to hotplug state machine
        x86/tboot: Convert to hotplug state machine
        arm64/armv8 deprecated: Convert to hotplug state machine
        hwtracing/coresight-etm4x: Convert to hotplug state machine
        ...
      a6408f6c
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide · 1a81a8f2
      Linus Torvalds authored
      Pull IDE updates from David Miller:
       "Just a couple small bug fixes, nothing overly exciting in here"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide:
        ide: missing break statement in set_timings_mdma()
        ide: hpt366: fix incorrect mask when checking at cmd_high_time
        ide-tape: fix misprint in failure handling in idetape_init()
        cmd640: add __init attribute
      1a81a8f2
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 86505fc0
      Linus Torvalds authored
      Pull sparc updates from David Miller:
      
       1) Double spin lock bug in sunhv serial driver, from Dan Carpenter.
      
       2) Use correct RSS estimate when determining whether to grow the huge
          TSB or not, from Mike Kravetz.
      
       3) Don't use full three level page tables for hugepages, PMD level is
          sufficient.  From Nitin Gupta.
      
       4) Mask out extraneous bits from TSB_TAG_ACCESS register, we only want
          the address bits.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: Trim page tables for 8M hugepages
        sparc64 mm: Fix base TSB sizing when hugetlb pages are used
        sparc: serial: sunhv: fix a double lock bug
        sparc32: off by ones in BUG_ON()
        sparc: Don't leak context bits into thread->fault_address
      86505fc0