1. 29 5月, 2019 25 次提交
    • J
      perf dso: Simplify dso_cache__read function · cacddfe7
      Jiri Olsa 提交于
      There's no need for the while loop now, also we can connect two (ret >
      0) condition legs together.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Acked-by: NSong Liu <songliubraving@fb.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Song Liu <songliubraving@fb.com>
      Cc: Stanislav Fomichev <sdf@google.com>
      Link: http://lkml.kernel.org/r/20190508132010.14512-4-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      cacddfe7
    • J
      perf dso: Separate generic code in dso_cache__read · ea5db1bd
      Jiri Olsa 提交于
      Move the file specific code in the dso_cache__read function to a
      separate file_read function. I'll add BPF specific code in the following
      patches.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Acked-by: NSong Liu <songliubraving@fb.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stanislav Fomichev <sdf@google.com>
      Link: http://lkml.kernel.org/r/20190508132010.14512-3-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ea5db1bd
    • J
      perf dso: Separate generic code in dso__data_file_size() · 5523769e
      Jiri Olsa 提交于
      Moving file specific code in dso__data_file_size function into separate
      file_size function. I'll add bpf specific code in following patches.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Acked-by: NSong Liu <songliubraving@fb.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stanislav Fomichev <sdf@google.com>
      Link: http://lkml.kernel.org/r/20190508132010.14512-2-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      5523769e
    • N
      perf tools: Remove const from thread read accessors · 7cb10a08
      Namhyung Kim 提交于
      The namespaces and comm fields of a thread are protected by rwsem and
      require write access for it.  So it ended up using a cast to remove
      the const qualifier.  Let's get rid of the const then.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Suggested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Hari Bathini <hbathini@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Krister Johansen <kjlx@templeofstupid.com>
      Link: http://lkml.kernel.org/r/20190527061149.168640-1-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      7cb10a08
    • N
      perf top: Add --namespaces option · a0c0a4ac
      Namhyung Kim 提交于
      Since 'perf record' already have this option, let's have it for 'perf top'
      as well.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Hari Bathini <hbathini@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Krister Johansen <kjlx@templeofstupid.com>
      Link: http://lkml.kernel.org/r/20190522053250.207156-4-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a0c0a4ac
    • A
      perf trace: Beautify 'sync_file_range' arguments · a9a187a7
      Arnaldo Carvalho de Melo 提交于
      Use existing beautifiers for the first arg, fd, assigned using the
      heuristic that looks for syscall arg names and associates SCA_FD with
      'fd' named argumes, and wire up the recently introduced sync_file_range
      flags table generator.
      
      Now it should be possible to just use:
      
         perf trace -e sync_file_range
      
      As root and see all sync_file_range syscalls with its args beautified.
      
        Doing a syscall strace like session looking for this syscall, then run
        postgresql's initdb command:
      
        # perf trace -e sync_file_range
        <SNIP>
        initdb/1332 sync_file_range(6</var/lib/pgsql/data/global/1260_fsm>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(6</var/lib/pgsql/data/global/1260_fsm>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(7</var/lib/pgsql/data/base/1/2682>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(6</var/lib/pgsql/data/global/1260_fsm>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(7</var/lib/pgsql/data/base/1/2682>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(6</var/lib/pgsql/data/global/1260_fsm>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(5</var/lib/pgsql/data/global>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(4</var/lib/pgsql/data>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        initdb/1332 sync_file_range(4</var/lib/pgsql/data>, 0, 0, SYNC_FILE_RANGE_WRITE) = 0
        ^C
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Amir Goldstein <amir73il@gmail.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-8tqy34xhpg8gwnaiv74xy93w@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a9a187a7
    • A
      perf beauty: Add generator for sync_file_range's 'flags' arg values · 8ef6d74e
      Arnaldo Carvalho de Melo 提交于
        $ tools/perf/trace/beauty/sync_file_range.sh
        static const char *sync_file_range_flags[] = {
                [ilog2(1) + 1] = "WAIT_BEFORE",
                [ilog2(2) + 1] = "WRITE",
                [ilog2(4) + 1] = "WAIT_AFTER",
        };
        $
      
      When all are the above are present, then we have something called
      SYNC_FILE_RANGE_WRITE_AND_WAIT, that will be special cased in the
      upcoming scnprintf beautifier for this flags arg.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Amir Goldstein <amir73il@gmail.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-uf2vd7bc8fkz65j7yit8dh84@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8ef6d74e
    • A
      perf trace beauty clone: Handle CLONE_PIDFD · ee364dcd
      Arnaldo Carvalho de Melo 提交于
      In addition to the older flags. This will allow something like this to
      be implemented in 'perf trace"
      
        perf trace -e clone/PIDFD in flags/
      
      I.e. ask for strace like tracing, system wide, looking for 'clone'
      syscalls that have the CLONE_PIDFD bit set in the 'flags' arg.
      
      For now we'll just see PIDFD if it is set in the 'flags' arg.
      
      Cc: Christian Brauner <christian@brauner.io>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-drq9h7s8gcv8b87064fp6lb0@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ee364dcd
    • A
      perf trace: Beautify 'fsmount' arguments · f6af0956
      Arnaldo Carvalho de Melo 提交于
      Use existing beautifiers for the first arg, fd, assigned using the
      heuristic that looks for syscall arg names and associates SCA_FD with
      'fd' named argumes, and wire up the recently introduced fsmount
      attr_flags table generator.
      
      Now it should be possible to just use:
      
         perf trace -e fsmount
      
      As root and see all fsmount syscalls with its args beautified.
      
        # cat sys_fsmount.c
        #define _GNU_SOURCE        /* See feature_test_macros(7) */
        #include <unistd.h>
        #include <sys/syscall.h>   /* For SYS_xxx definitions */
      
        #define __NR_fsmount 432
      
        #define MOUNT_ATTR_RDONLY	 0x00000001 /* Mount read-only */
        #define MOUNT_ATTR_NOSUID	 0x00000002 /* Ignore suid and sgid bits */
        #define MOUNT_ATTR_NODEV	 0x00000004 /* Disallow access to device special files */
        #define MOUNT_ATTR_NOEXEC	 0x00000008 /* Disallow program execution */
        #define MOUNT_ATTR__ATIME	 0x00000070 /* Setting on how atime should be updated */
        #define MOUNT_ATTR_RELATIME	 0x00000000 /* - Update atime relative to mtime/ctime. */
        #define MOUNT_ATTR_NOATIME	 0x00000010 /* - Do not update access times. */
        #define MOUNT_ATTR_STRICTATIME 0x00000020 /* - Always perform atime updates */
        #define MOUNT_ATTR_NODIRATIME	 0x00000080 /* Do not update directory access times */
      
        static inline int sys_fsmount(int fs_fd, int flags, int attr_flags)
        {
        	syscall(__NR_fsmount, fs_fd, flags, attr_flags);
        }
      
        int main(int argc, char *argv[])
        {
        	int attr_flags = 0, fs_fd = 0;
      
        	sys_fsmount(fs_fd++, 0, attr_flags);
        	attr_flags |= MOUNT_ATTR_RDONLY;
        	sys_fsmount(fs_fd++, 1, attr_flags);
        	attr_flags |= MOUNT_ATTR_NOSUID;
        	sys_fsmount(fs_fd++, 0, attr_flags);
        	attr_flags |= MOUNT_ATTR_NODEV;
        	sys_fsmount(fs_fd++, 1, attr_flags);
        	attr_flags |= MOUNT_ATTR_NOEXEC;
        	sys_fsmount(fs_fd++, 0, attr_flags);
        	attr_flags |= MOUNT_ATTR_NOATIME;
        	sys_fsmount(fs_fd++, 1, attr_flags);
        	attr_flags |= MOUNT_ATTR_STRICTATIME;
        	sys_fsmount(fs_fd++, 0, attr_flags);
        	attr_flags |= MOUNT_ATTR_NODIRATIME;
        	sys_fsmount(fs_fd++, 0, attr_flags);
        	return 0;
        }
        #
        # perf trace -e fsmount ./sys_fsmount
        fsmount(0, 0, MOUNT_ATTR_RELATIME)      = -1 EINVAL (Invalid argument)
        fsmount(1, FSMOUNT_CLOEXEC, MOUNT_ATTR_RDONLY|MOUNT_ATTR_RELATIME) = -1 EINVAL (Invalid argument)
        fsmount(2, 0, MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_RELATIME) = -1 EINVAL (Invalid argument)
        fsmount(3, FSMOUNT_CLOEXEC, MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV|MOUNT_ATTR_RELATIME) = -1 EBADF (Bad file descriptor)
        fsmount(4, 0, MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_RELATIME) = -1 EBADF (Bad file descriptor)
        fsmount(5, FSMOUNT_CLOEXEC, MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME) = -1 EBADF (Bad file descriptor)
        fsmount(6, 0, MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME|MOUNT_ATTR_STRICTATIME) = -1 EINVAL (Invalid argument)
        fsmount(7, 0, MOUNT_ATTR_RDONLY|MOUNT_ATTR_NOSUID|MOUNT_ATTR_NODEV|MOUNT_ATTR_NOEXEC|MOUNT_ATTR_NOATIME|MOUNT_ATTR_STRICTATIME|MOUNT_ATTR_NODIRATIME) = -1 EINVAL (Invalid argument)
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-w71uge0sfo6ns9uclhwtthca@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      f6af0956
    • A
      perf trace: Introduce syscall_arg__scnprintf_strarray_flags · f5b91dbb
      Arnaldo Carvalho de Melo 提交于
      So that one can just define a strarray and process it as a set of flags,
      similar to syscall_arg__scnprintf_strarray() with plain arrays.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-nnt25wkpkow2w0yefhi6sb7q@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      f5b91dbb
    • A
      perf beauty: Add generator for fsmount's 'attr_flags' arg values · 3637c647
      Arnaldo Carvalho de Melo 提交于
        $ tools/perf/trace/beauty/fsmount.sh
        static const char *fsmount_attr_flags[] = {
                [ilog2(0x00000001) + 1] = "RDONLY",
                [ilog2(0x00000002) + 1] = "NOSUID",
                [ilog2(0x00000004) + 1] = "NODEV",
                [ilog2(0x00000008) + 1] = "NOEXEC",
                [ilog2(0x00000010) + 1] = "NOATIME",
                [ilog2(0x00000020) + 1] = "STRICTATIME",
                [ilog2(0x00000080) + 1] = "NODIRATIME",
        }
      
      MOUNT_ATTR__ATIME and MOUNT_ATTR_RELATIME will be special cased in the
      fsmount__scnprintf_flags() beautifier.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-sl24d7m2ge82mfmrbaf1mb0s@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      3637c647
    • A
      perf trace: Beautify 'fsconfig' arguments · dcc6fd64
      Arnaldo Carvalho de Melo 提交于
      Use existing beautifiers for the first arg, fd, assigned using the
      heuristic that looks for syscall arg names and associates SCA_FD with
      'fd' named argumes, and wire up the recently introduced fsconfig cmd
      table generator.
      
      Now it should be possible to just use:
      
         perf trace -e fsconfig
      
      As root and see all fsconfig syscalls with its args beautified, more
      work needed to look at the command and according to it handle the 'key',
      'value' and 'aux' args, using the 'fcntl' and 'futex' beautifiers as a
      starting point to see how to suppress sets of these last three args that
      may not be used by the 'cmd' arg, etc.
      
        # cat sys_fsconfig.c
        #define _GNU_SOURCE         /* See feature_test_macros(7) */
        #include <unistd.h>
        #include <sys/syscall.h>   /* For SYS_xxx definitions */
        #include <fcntl.h>
      
        #define __NR_fsconfig 431
      
        enum fsconfig_command {
        	FSCONFIG_SET_FLAG	= 0,	/* Set parameter, supplying no value */
        	FSCONFIG_SET_STRING	= 1,	/* Set parameter, supplying a string value */
        	FSCONFIG_SET_BINARY	= 2,	/* Set parameter, supplying a binary blob value */
        	FSCONFIG_SET_PATH	= 3,	/* Set parameter, supplying an object by path */
        	FSCONFIG_SET_PATH_EMPTY	= 4,	/* Set parameter, supplying an object by (empty) path */
        	FSCONFIG_SET_FD		= 5,	/* Set parameter, supplying an object by fd */
        	FSCONFIG_CMD_CREATE	= 6,	/* Invoke superblock creation */
        	FSCONFIG_CMD_RECONFIGURE = 7,	/* Invoke superblock reconfiguration */
        };
      
        static inline int sys_fsconfig(int fd, int cmd, const char *key, const void *value, int aux)
        {
        	syscall(__NR_fsconfig, fd, cmd, key, value, aux);
        }
      
        int main(int argc, char *argv[])
        {
        	int fd = 0, aux = 0;
      
        	open("/foo", 0);
        	sys_fsconfig(fd++, FSCONFIG_SET_FLAG,	     "/foo1", "/bar1", aux++);
        	sys_fsconfig(fd++, FSCONFIG_SET_STRING,	     "/foo2", "/bar2", aux++);
        	sys_fsconfig(fd++, FSCONFIG_SET_BINARY,	     "/foo3", "/bar3", aux++);
        	sys_fsconfig(fd++, FSCONFIG_SET_PATH,	     "/foo4", "/bar4", aux++);
        	sys_fsconfig(fd++, FSCONFIG_SET_PATH_EMPTY,  "/foo5", "/bar5", aux++);
        	sys_fsconfig(fd++, FSCONFIG_SET_FD,	     "/foo6", "/bar6", aux++);
        	sys_fsconfig(fd++, FSCONFIG_CMD_CREATE,	     "/foo7", "/bar7", aux++);
        	sys_fsconfig(fd++, FSCONFIG_CMD_RECONFIGURE, "/foo8", "/bar8", aux++);
        	return 0;
        }
        # trace -e fsconfig ./sys_fsconfig
        fsconfig(0, FSCONFIG_SET_FLAG, 0x40201b, 0x402015, 0) = -1 EINVAL (Invalid argument)
        fsconfig(1, FSCONFIG_SET_STRING, 0x402027, 0x402021, 1) = -1 EINVAL (Invalid argument)
        fsconfig(2, FSCONFIG_SET_BINARY, 0x402033, 0x40202d, 2) = -1 EINVAL (Invalid argument)
        fsconfig(3, FSCONFIG_SET_PATH, 0x40203f, 0x402039, 3) = -1 EBADF (Bad file descriptor)
        fsconfig(4, FSCONFIG_SET_PATH_EMPTY, 0x40204b, 0x402045, 4) = -1 EBADF (Bad file descriptor)
        fsconfig(5, FSCONFIG_SET_FD, 0x402057, 0x402051, 5) = -1 EINVAL (Invalid argument)
        fsconfig(6, FSCONFIG_CMD_CREATE, 0x402063, 0x40205d, 6) = -1 EINVAL (Invalid argument)
        fsconfig(7, FSCONFIG_CMD_RECONFIGURE, 0x40206f, 0x402069, 7) = -1 EINVAL (Invalid argument)
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-fb04b76cm59zfuv1wzu40uxy@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      dcc6fd64
    • A
      perf beauty: Add generator for fsconfig's 'cmd' arg values · d3529300
      Arnaldo Carvalho de Melo 提交于
        $ tools/perf/trace/beauty/fsconfig.sh
        static const char *fsconfig_cmds[] = {
                [0] = "SET_FLAG",
                [1] = "SET_STRING",
                [2] = "SET_BINARY",
                [3] = "SET_PATH",
                [4] = "SET_PATH_EMPTY",
                [5] = "SET_FD",
                [6] = "CMD_CREATE",
                [7] = "CMD_RECONFIGURE",
        };
        $
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-u721396rkqmawmt91dwwsntu@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      d3529300
    • A
      perf trace: Beautify 'fspick' arguments · 693bd394
      Arnaldo Carvalho de Melo 提交于
      Use existing beautifiers for the first 2 args (dfd, path) and wire up
      the recently introduced fspick flags table generator.
      
      Now it should be possible to just use:
      
         perf trace -e fspick
      
      As root and see all move_mount syscalls with its args beautified, either
      using the vfs_getname perf probe method or using the
      augmented_raw_syscalls.c eBPF helper to get the pathnames, the other
      args should work in all cases, i.e. all that is needed can be obtained
      directly from the raw_syscalls:sys_enter tracepoint args.
      
        # cat sys_fspick.c
        #define _GNU_SOURCE        /* See feature_test_macros(7) */
        #include <unistd.h>
        #include <sys/syscall.h>   /* For SYS_xxx definitions */
        #include <fcntl.h>
      
        #define __NR_fspick 433
      
        #define FSPICK_CLOEXEC          0x00000001
        #define FSPICK_SYMLINK_NOFOLLOW 0x00000002
        #define FSPICK_NO_AUTOMOUNT     0x00000004
        #define FSPICK_EMPTY_PATH       0x00000008
      
        static inline int sys_fspick(int fd, const char *path, int flags)
        {
        	syscall(__NR_fspick, fd, path, flags);
        }
      
        int main(int argc, char *argv[])
        {
        	int flags = 0, fd = 0;
      
        	open("/foo", 0);
        	sys_fspick(fd++, "/foo1", flags);
        	flags |= FSPICK_CLOEXEC;
        	sys_fspick(fd++, "/foo2", flags);
        	flags |= FSPICK_SYMLINK_NOFOLLOW;
        	sys_fspick(fd++, "/foo3", flags);
        	flags |= FSPICK_NO_AUTOMOUNT;
        	sys_fspick(fd++, "/foo4", flags);
        	flags |= FSPICK_EMPTY_PATH;
        	return sys_fspick(fd++, "/foo5", flags);
        }
        # perf trace -e fspick ./sys_fspick
        LLVM: dumping /home/acme/git/perf/tools/perf/examples/bpf/augmented_raw_syscalls.o
        fspick(0, "/foo1", 0)                   = -1 ENOENT (No such file or directory)
        fspick(1, "/foo2", FSPICK_CLOEXEC)      = -1 ENOENT (No such file or directory)
        fspick(2, "/foo3", FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW) = -1 ENOENT (No such file or directory)
        fspick(3, "/foo4", FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW|FSPICK_NO_AUTOMOUNT) = -1 ENOENT (No such file or directory)
        fspick(4, "/foo5", FSPICK_CLOEXEC|FSPICK_SYMLINK_NOFOLLOW|FSPICK_NO_AUTOMOUNT|FSPICK_EMPTY_PATH) = -1 ENOENT (No such file or directory)
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-erau5xjtt8wvgnhvdbchstuk@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      693bd394
    • A
      perf beauty: Add generator for fspick's 'flags' arg values · a1c729a5
      Arnaldo Carvalho de Melo 提交于
        $ tools/perf/trace/beauty/fspick.sh
        static const char *fspick_flags[] = {
                [ilog2(0x00000001) + 1] = "CLOEXEC",
                [ilog2(0x00000002) + 1] = "SYMLINK_NOFOLLOW",
                [ilog2(0x00000004) + 1] = "NO_AUTOMOUNT",
                [ilog2(0x00000008) + 1] = "EMPTY_PATH",
        };
        $
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-8i16btocq1ax2u6542ya79t5@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a1c729a5
    • A
      perf trace: Beautify 'move_mount' arguments · 566e3022
      Arnaldo Carvalho de Melo 提交于
      Use existing beautifiers for the first 4 args (to/from fds, pathnames)
      and wire up the recently introduced move_mount flags table generator.
      
      Now it should be possible to just use:
      
            perf trace -e move_mount
      
      As root and see all move_mount syscalls with its args beautified, except
      for the filenames, that need work in the augmented_raw_syscalls.c eBPF
      helper to pass more than one, see comment in the
      augmented_raw_syscalls.c source code, the other args should work in all
      cases, i.e. all that is needed can be obtained directly from the
      raw_syscalls:sys_enter tracepoint args.
      
      Running without the strace "skin" (.perfconfig setting output formatting
      switches to look like strace output + BPF to collect strings, as we
      still need to support collecting multiple string args for the same
      syscall, like with move_mount):
      
        # cat sys_move_mount.c
        #define _GNU_SOURCE         /* See feature_test_macros(7) */
        #include <unistd.h>
        #include <sys/syscall.h>   /* For SYS_xxx definitions */
      
        #define __NR_move_mount 429
      
        #define MOVE_MOUNT_F_SYMLINKS		0x00000001 /* Follow symlinks on from path */
        #define MOVE_MOUNT_F_AUTOMOUNTS		0x00000002 /* Follow automounts on from path */
        #define MOVE_MOUNT_F_EMPTY_PATH		0x00000004 /* Empty from path permitted */
        #define MOVE_MOUNT_T_SYMLINKS		0x00000010 /* Follow symlinks on to path */
        #define MOVE_MOUNT_T_AUTOMOUNTS		0x00000020 /* Follow automounts on to path */
        #define MOVE_MOUNT_T_EMPTY_PATH		0x00000040 /* Empty to path permitted */
      
        static inline int sys_move_mount(int from_fd, const char *from_pathname,
        				 int to_fd, const char *to_pathname,
        				 int flags)
        {
        	  syscall(__NR_move_mount, from_fd, from_pathname, to_fd, to_pathname, flags);
        }
      
        int main(int argc, char *argv[])
        {
        	  int flags = 0, from_fd = 0, to_fd = 100;
      
        	  sys_move_mount(from_fd++, "/foo", to_fd++, "bar", flags);
        	  flags |= MOVE_MOUNT_F_SYMLINKS;
        	  sys_move_mount(from_fd++, "/foo1", to_fd++, "bar1", flags);
                flags |= MOVE_MOUNT_F_AUTOMOUNTS;
        	  sys_move_mount(from_fd++, "/foo2", to_fd++, "bar2", flags);
                flags |= MOVE_MOUNT_F_EMPTY_PATH;
        	  sys_move_mount(from_fd++, "/foo3", to_fd++, "bar3", flags);
                flags |= MOVE_MOUNT_T_SYMLINKS;
        	  sys_move_mount(from_fd++, "/foo4", to_fd++, "bar4", flags);
                flags |= MOVE_MOUNT_T_AUTOMOUNTS;
        	  sys_move_mount(from_fd++, "/foo5", to_fd++, "bar5", flags);
                flags |= MOVE_MOUNT_T_EMPTY_PATH;
        	  return sys_move_mount(from_fd++, "/foo6", to_fd++, "bar6", flags);
        }
        # mv ~/.perfconfig  ~/.perfconfig.OFF
        # perf trace -e move_mount ./sys_move_mount
             0.000 ( 0.009 ms): sys_move_mount/28971 move_mount(from_pathname: 0x402010, to_dfd: 100, to_pathname: 0x402015) = -1 ENOENT (No such file or directory)
             0.011 ( 0.003 ms): sys_move_mount/28971 move_mount(from_dfd: 1, from_pathname: 0x40201e, to_dfd: 101, to_pathname: 0x402019, flags: F_SYMLINKS) = -1 ENOENT (No such file or directory)
             0.016 ( 0.002 ms): sys_move_mount/28971 move_mount(from_dfd: 2, from_pathname: 0x402029, to_dfd: 102, to_pathname: 0x402024, flags: F_SYMLINKS|F_AUTOMOUNTS) = -1 ENOENT (No such file or directory)
             0.020 ( 0.002 ms): sys_move_mount/28971 move_mount(from_dfd: 3, from_pathname: 0x402034, to_dfd: 103, to_pathname: 0x40202f, flags: F_SYMLINKS|F_AUTOMOUNTS|F_EMPTY_PATH) = -1 ENOENT (No such file or directory)
             0.023 ( 0.002 ms): sys_move_mount/28971 move_mount(from_dfd: 4, from_pathname: 0x40203f, to_dfd: 104, to_pathname: 0x40203a, flags: F_SYMLINKS|F_AUTOMOUNTS|F_EMPTY_PATH|T_SYMLINKS) = -1 ENOENT (No such file or directory)
             0.027 ( 0.002 ms): sys_move_mount/28971 move_mount(from_dfd: 5, from_pathname: 0x40204a, to_dfd: 105, to_pathname: 0x402045, flags: F_SYMLINKS|F_AUTOMOUNTS|F_EMPTY_PATH|T_SYMLINKS|T_AUTOMOUNTS) = -1 ENOENT (No such file or directory)
             0.031 ( 0.017 ms): sys_move_mount/28971 move_mount(from_dfd: 6, from_pathname: 0x402055, to_dfd: 106, to_pathname: 0x402050, flags: F_SYMLINKS|F_AUTOMOUNTS|F_EMPTY_PATH|T_SYMLINKS|T_AUTOMOUNTS|T_EMPTY_PATH) = -1 ENOENT (No such file or directory)
        #
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-83rim8g4k0s4gieieh5nnlck@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      566e3022
    • A
      perf beauty: Add generator for 'move_mount' flags argument · eefa09b4
      Arnaldo Carvalho de Melo 提交于
        $ tools/perf/trace/beauty/move_mount_flags.sh
        static const char *move_mount_flags[] = {
      	  [ilog2(0x00000001) + 1] = "F_SYMLINKS",
      	  [ilog2(0x00000002) + 1] = "F_AUTOMOUNTS",
      	  [ilog2(0x00000004) + 1] = "F_EMPTY_PATH",
      	  [ilog2(0x00000010) + 1] = "T_SYMLINKS",
      	  [ilog2(0x00000020) + 1] = "T_AUTOMOUNTS",
      	  [ilog2(0x00000040) + 1] = "T_EMPTY_PATH",
        };
        $
      
      Will be wired up to the 'perf trace' arg in a followup patch.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-px7v33suw1k2ehst52l7bwa3@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      eefa09b4
    • A
      perf augmented_raw_syscalls: Fix up comment · 8a70c6b1
      Arnaldo Carvalho de Melo 提交于
      Cut'n'paste error, the second comment is about the syscalls that have as
      its second arg a string.
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-zo5s6rloy42u41acsf6q3pvi@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8a70c6b1
    • J
      perf tools: Preserve eBPF maps when loading kcore · fb5a88d4
      Jiri Olsa 提交于
      We need to preserve eBPF maps even if they are covered by kcore, because
      we need to access eBPF dso for source data.
      
      Add the map_groups__merge_in function to do that.  It merges a map into
      map_groups by splitting the new map within the existing map regions.
      Suggested-by: NAdrian Hunter <adrian.hunter@intel.com>
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Acked-by: NSong Liu <songliubraving@fb.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stanislav Fomichev <sdf@google.com>
      Link: http://lkml.kernel.org/r/20190508132010.14512-9-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      fb5a88d4
    • J
      perf machine: Keep zero in pgoff BPF map · 8529f2e6
      Jiri Olsa 提交于
      With pgoff set to zero, the map__map_ip function will return BPF
      addresses based from 0, which is what we need when we read the data from
      a BPF DSO.
      
      Adding BPF symbols with mapped IP addresses as well.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Acked-by: NSong Liu <songliubraving@fb.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stanislav Fomichev <sdf@google.com>
      Link: http://lkml.kernel.org/r/20190508132010.14512-7-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8529f2e6
    • A
      perf intel-pt: Fix itrace defaults for perf script intel-pt documentation · a2d8a158
      Adrian Hunter 提交于
      Fix intel-pt documentation to reflect the change of itrace defaults for
      perf script.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org
      Fixes: 4eb06815 ("perf script: Make itrace script default to all calls")
      Link: http://lkml.kernel.org/r/20190520113728.14389-4-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a2d8a158
    • A
      perf auxtrace: Fix itrace defaults for perf script · 355200e0
      Adrian Hunter 提交于
      Commit 4eb06815 ("perf script: Make itrace script default to all
      calls") does not work for the case when '--itrace' only is used, because
      default_no_sample is not being passed.
      
      Example:
      
       Before:
      
        $ perf record -e intel_pt/cyc/u ls
        $ perf script --itrace > cmp1.txt
        $ perf script --itrace=cepwx > cmp2.txt
        $ diff -sq cmp1.txt cmp2.txt
        Files cmp1.txt and cmp2.txt differ
      
       After:
      
        $ perf script --itrace > cmp1.txt
        $ perf script --itrace=cepwx > cmp2.txt
        $ diff -sq cmp1.txt cmp2.txt
        Files cmp1.txt and cmp2.txt are identical
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org
      Fixes: 4eb06815 ("perf script: Make itrace script default to all calls")
      Link: http://lkml.kernel.org/r/20190520113728.14389-3-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      355200e0
    • A
      perf intel-pt: Fix itrace defaults for perf script · 26f19c2e
      Adrian Hunter 提交于
      Commit 4eb06815 ("perf script: Make itrace script default to all
      calls") does not work because 'use_browser' is being used to determine
      whether to default to periodic sampling (i.e. better for perf report).
      The result is that nothing but CBR events display for perf script when
      no --itrace option is specified.
      
      Fix by using 'default_no_sample' and 'inject' instead.
      
      Example:
      
       Before:
      
        $ perf record -e intel_pt/cyc/u ls
        $ perf script > cmp1.txt
        $ perf script --itrace=cepwx > cmp2.txt
        $ diff -sq cmp1.txt cmp2.txt
        Files cmp1.txt and cmp2.txt differ
      
       After:
      
        $ perf script > cmp1.txt
        $ perf script --itrace=cepwx > cmp2.txt
        $ diff -sq cmp1.txt cmp2.txt
        Files cmp1.txt and cmp2.txt are identical
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: stable@vger.kernel.org # v4.20+
      Fixes: 90e457f7 ("perf tools: Add Intel PT support")
      Link: http://lkml.kernel.org/r/20190520113728.14389-2-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      26f19c2e
    • A
      perf-with-kcore.sh: Always allow fix_buildid_cache_permissions · a685c7a4
      Adrian Hunter 提交于
      The user's buildid cache may contain entries added by root even if root
      has its own home directory (e.g. by using perfconfig to specify the same
      buildid dir), so remove that validation.
      Signed-off-by: NAdrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Link: http://lkml.kernel.org/r/20190412113830.4126-7-adrian.hunter@intel.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a685c7a4
    • I
      Merge tag 'perf-urgent-for-mingo-5.2-20190528' of... · 849e96f3
      Ingo Molnar 提交于
      Merge tag 'perf-urgent-for-mingo-5.2-20190528' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
      
      Pull perf/urgent fixes:
      
      BPF:
      
        Jiri Olsa:
      
        - Fixup determination of end of kernel map, to avoid having BPF programs,
          that are after the kernel headers and just before module texts mixed up in
          the kernel map.
      
      tools UAPI header copies:
      
        Arnaldo Carvalho de Melo:
      
        - Update copy of files related to new fspick, fsmount, fsconfig, fsopen,
          move_mount and open_tree syscalls.
      
        - Sync cpufeatures.h, sched.h, fs.h, drm.h, i915_drm.h and kvm.h headers.
      
      Namespaces:
      
        Namhyung Kim:
      
        - Add missing byte swap ops for namespace events when processing records from
          perf.data files that could have been recorded in a arch with a different
          endianness.
      
        - Fix access to the thread namespaces list by using the namespaces_lock.
      
      perf data:
      
        Shawn Landden:
      
        - Fix 'strncat may truncate' build failure with recent gcc.
      
      s/390
      
        Thomas Richter:
      
        - Fix s390 missing module symbol and warning for non-root users in 'perf record'.
      
      arm64:
      
        Vitaly Chikunov:
      
        - Fix mksyscalltbl when system kernel headers are ahead of the kernel.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: NIngo Molnar <mingo@kernel.org>
      849e96f3
  2. 28 5月, 2019 14 次提交
    • A
      tools headers UAPI: Sync kvm.h headers with the kernel sources · a7350998
      Arnaldo Carvalho de Melo 提交于
        dd53f610 ("Merge tag 'kvmarm-for-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into HEAD")
        59c5c58c ("Merge tag 'kvm-ppc-next-5.2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc into HEAD")
        d7547c55 ("KVM: Introduce KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2")
        6520ca64 ("KVM: PPC: Book3S HV: XIVE: Add a mapping for the source ESB pages")
        39e9af3d ("KVM: PPC: Book3S HV: XIVE: Add a TIMA mapping")
        e4945b9d ("KVM: PPC: Book3S HV: XIVE: Add get/set accessors for the VP XIVE state")
        e6714bd1 ("KVM: PPC: Book3S HV: XIVE: Add a control to dirty the XIVE EQ pages")
        7b46b616 ("KVM: PPC: Book3S HV: XIVE: Add a control to sync the sources")
        5ca80647 ("KVM: PPC: Book3S HV: XIVE: Add a global reset control")
        13ce3297 ("KVM: PPC: Book3S HV: XIVE: Add controls for the EQ configuration")
        e8676ce5 ("KVM: PPC: Book3S HV: XIVE: Add a control to configure a source")
        4131f83c ("KVM: PPC: Book3S HV: XIVE: add a control to initialize a source")
        eacc56bb ("KVM: PPC: Book3S HV: XIVE: Introduce a new capability KVM_CAP_PPC_IRQ_XIVE")
        90c73795 ("KVM: PPC: Book3S HV: Add a new KVM device for the XIVE native exploitation mode")
        4f45b90e ("KVM: s390: add deflate conversion facilty to cpu model")
        a243c16d ("KVM: arm64: Add capability to advertise ptrauth for guest")
        a22fa321 ("KVM: arm64: Add userspace flag to enable pointer authentication")
        4bd774e5 ("KVM: arm64/sve: Simplify KVM_REG_ARM64_SVE_VLS array sizing")
        8ae6efdd ("KVM: arm64/sve: Clean up UAPI register ID definitions")
        173aec2d ("KVM: s390: add enhanced sort facilty to cpu model")
        555f3d03 ("KVM: arm64: Add a capability to advertise SVE support")
        9033bba4 ("KVM: arm64/sve: Add pseudo-register for the guest's vector lengths")
        7dd32a0d ("KVM: arm/arm64: Add KVM_ARM_VCPU_FINALIZE ioctl")
        e1c9c983 ("KVM: arm64/sve: Add SVE support to register access ioctl interface")
        2b953ea3 ("KVM: Allow 2048-bit register access via ioctl interface")
      
      None entails changes in tooling, the closest to that were some new arch
      specific ioctls, that are still not handled by the tools/perf/trace/beauty/
      library, that needs to create per-arch tables to convert ioctl cmd->string (and
      back).
      
      From a quick look the arch specific kvm-stat.c files at:
      
        $ ls -1 tools/perf/arch/*/util/kvm-stat.c
        tools/perf/arch/powerpc/util/kvm-stat.c
        tools/perf/arch/s390/util/kvm-stat.c
        tools/perf/arch/x86/util/kvm-stat.c
        $
      
      Are not affected.
      
      This silences these perf building warnings:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/kvm.h' differs from latest version at 'include/uapi/linux/kvm.h'
        diff -u tools/include/uapi/linux/kvm.h include/uapi/linux/kvm.h
        Warning: Kernel ABI header at 'tools/arch/powerpc/include/uapi/asm/kvm.h' differs from latest version at 'arch/powerpc/include/uapi/asm/kvm.h'
        diff -u tools/arch/powerpc/include/uapi/asm/kvm.h arch/powerpc/include/uapi/asm/kvm.h
        Warning: Kernel ABI header at 'tools/arch/s390/include/uapi/asm/kvm.h' differs from latest version at 'arch/s390/include/uapi/asm/kvm.h'
        diff -u tools/arch/s390/include/uapi/asm/kvm.h arch/s390/include/uapi/asm/kvm.h
        Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/kvm.h' differs from latest version at 'arch/arm64/include/uapi/asm/kvm.h'
        diff -u tools/arch/arm64/include/uapi/asm/kvm.h arch/arm64/include/uapi/asm/kvm.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Amit Daniel Kachhap <amit.kachhap@arm.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Cédric Le Goater <clg@kaod.org>
      Cc: Christian Borntraeger <borntraeger@de.ibm.com>
      Cc: Dave Martin <Dave.Martin@arm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Marc Zyngier <marc.zyngier@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paolo Bonzini <pbonzini@redhat.com>
      Cc: Paul Mackerras <paulus@ozlabs.org>
      Cc: Peter Xu <peterx@redhat.com>
      Link: https://lkml.kernel.org/n/tip-3msmqjenlmb7eygcdnmlqaq1@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a7350998
    • T
      perf record: Fix s390 missing module symbol and warning for non-root users · 6738028d
      Thomas Richter 提交于
      Command 'perf record' and 'perf report' on a system without kernel
      debuginfo packages uses /proc/kallsyms and /proc/modules to find
      addresses for kernel and module symbols. On x86 this works for root and
      non-root users.
      
      On s390, when invoked as non-root user, many of the following warnings
      are shown and module symbols are missing:
      
          proc/{kallsyms,modules} inconsistency while looking for
              "[sha1_s390]" module!
      
      Command 'perf record' creates a list of module start addresses by
      parsing the output of /proc/modules and creates a PERF_RECORD_MMAP
      record for the kernel and each module. The following function call
      sequence is executed:
      
        machine__create_kernel_maps
          machine__create_module
            modules__parse
              machine__create_module --> for each line in /proc/modules
                arch__fix_module_text_start
      
      Function arch__fix_module_text_start() is s390 specific. It opens
      file /sys/module/<name>/sections/.text to extract the module's .text
      section start address. On s390 the module loader prepends a header
      before the first section, whereas on x86 the module's text section
      address is identical the the module's load address.
      
      However module section files are root readable only. For non-root the
      read operation fails and machine__create_module() returns an error.
      Command perf record does not generate any PERF_RECORD_MMAP record
      for loaded modules. Later command perf report complains about missing
      module maps.
      
      To fix this function arch__fix_module_text_start() always returns
      success. For root users there is no change, for non-root users
      the module's load address is used as module's text start address
      (the prepended header then counts as part of the text section).
      
      This enable non-root users to use module symbols and avoid the
      warning when perf report is executed.
      
      Output before:
      
        [tmricht@m83lp54 perf]$ ./perf report -D | fgrep MMAP
        0 0x168 [0x50]: PERF_RECORD_MMAP ... x [kernel.kallsyms]_text
      
      Output after:
      
        [tmricht@m83lp54 perf]$ ./perf report -D | fgrep MMAP
        0 0x168 [0x50]: PERF_RECORD_MMAP ... x [kernel.kallsyms]_text
        0 0x1b8 [0x98]: PERF_RECORD_MMAP ... x /lib/modules/.../autofs4.ko.xz
        0 0x250 [0xa8]: PERF_RECORD_MMAP ... x /lib/modules/.../sha_common.ko.xz
        0 0x2f8 [0x98]: PERF_RECORD_MMAP ... x /lib/modules/.../des_generic.ko.xz
      Signed-off-by: NThomas Richter <tmricht@linux.ibm.com>
      Reviewed-by: NHendrik Brueckner <brueckner@linux.ibm.com>
      Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
      Link: http://lkml.kernel.org/r/20190522144601.50763-4-tmricht@linux.ibm.comSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      6738028d
    • J
      perf machine: Read also the end of the kernel · ed9adb20
      Jiri Olsa 提交于
      We mark the end of kernel based on the first module, but that could
      cover some bpf program maps. Reading _etext symbol if it's present to
      get precise kernel map end.
      Signed-off-by: NJiri Olsa <jolsa@kernel.org>
      Acked-by: NSong Liu <songliubraving@fb.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stanislav Fomichev <sdf@google.com>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: http://lkml.kernel.org/r/20190508132010.14512-6-jolsa@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ed9adb20
    • A
      perf test vmlinux-kallsyms: Ignore aliases to _etext when searching on kallsyms · 93f678b9
      Arnaldo Carvalho de Melo 提交于
      No need to search for aliases for the symbol that marks the end of the
      kernel text segment, the following patch will make such symbols not to
      be found when searching in the kallsyms maps causing this test to fail.
      
      So as a prep patch to avoid breaking bisection, ignore such symbols.
      Tested-by: NJiri Olsa <jolsa@kernel.org>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Song Liu <songliubraving@fb.com>
      Cc: Stanislav Fomichev <sdf@google.com>
      Cc: Thomas Richter <tmricht@linux.ibm.com>
      Link: https://lkml.kernel.org/n/tip-qfwuih8cvmk9doh7k5k244eq@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      93f678b9
    • N
      perf session: Add missing swap ops for namespace events · acd244b8
      Namhyung Kim 提交于
      In case it's recorded in a different arch.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Hari Bathini <hbathini@linux.vnet.ibm.com> <hbathini@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Krister Johansen <kjlx@templeofstupid.com>
      Fixes: f3b3614a ("perf tools: Add PERF_RECORD_NAMESPACES to include namespaces related info")
      Link: http://lkml.kernel.org/r/20190522053250.207156-3-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      acd244b8
    • N
      perf namespace: Protect reading thread's namespace · 6584140b
      Namhyung Kim 提交于
      It seems that the current code lacks holding the namespace lock in
      thread__namespaces().  Otherwise it can see inconsistent results.
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Hari Bathini <hbathini@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Krister Johansen <kjlx@templeofstupid.com>
      Link: http://lkml.kernel.org/r/20190522053250.207156-2-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      6584140b
    • A
      tools headers UAPI: Sync drm/drm.h with the kernel · 9903c64f
      Arnaldo Carvalho de Melo 提交于
      To pick up the changes in these csets:
      
        060cebb2 ("drm: introduce a capability flag for syncobj timeline support")
        50d1ebef ("drm/syncobj: add timeline signal ioctl for syncobj v5")
        ea569910 ("drm/syncobj: add transition iotcls between binary and timeline v2")
        27b575a9 ("drm/syncobj: add timeline payload query ioctl v6")
        01d6c357 ("drm/syncobj: add support for timeline point wait v8")
        783195ec ("drm/syncobj: disable the timeline UAPI for now v2")
        48197bc5 ("drm: add syncobj timeline support v9")
      
      Which automagically results in the following new ioctls being recognized
      by the 'perf trace' ioctl cmd arg beautifier:
      
        $ tools/perf/trace/beauty/drm_ioctl.sh > /tmp/before
        $ cp include/uapi/drm/drm.h tools/include/uapi/drm/drm.h
        $ tools/perf/trace/beauty/drm_ioctl.sh > /tmp/after
        $ diff -u /tmp/before /tmp/after
        --- /tmp/before	2019-05-22 10:25:31.443151182 -0300
        +++ /tmp/after	2019-05-22 10:25:46.449354819 -0300
        @@ -103,6 +103,10 @@
         	[0xC7] = "MODE_LIST_LESSEES",
         	[0xC8] = "MODE_GET_LEASE",
         	[0xC9] = "MODE_REVOKE_LEASE",
        +	[0xCA] = "SYNCOBJ_TIMELINE_WAIT",
        +	[0xCB] = "SYNCOBJ_QUERY",
        +	[0xCC] = "SYNCOBJ_TRANSFER",
        +	[0xCD] = "SYNCOBJ_TIMELINE_SIGNAL",
         	[DRM_COMMAND_BASE + 0x00] = "I915_INIT",
         	[DRM_COMMAND_BASE + 0x01] = "I915_FLUSH",
         	[DRM_COMMAND_BASE + 0x02] = "I915_FLIP",
          $
      
      I.e. the strace like raw_tracepoint:sys_enter handler in 'perf trace'
      will get the cmd integer value and map it to the string.
      
      At some point it should be possible to translate from string to integer
      and use to filter using expressions such as:
      
         # perf trace -e ioctl/cmd==DRM_IOCTL_SYNCOBJ*/
      
      Or some more suitable syntax to express that only these ioctls when
      acting on DRM fds should be shown.
      Acked-by: NLionel Landwerlin <lionel.g.landwerlin@intel.com>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Chunming Zhou <david1.zhou@amd.com>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-jrc9ogw33w4zgqc3pu7o1l3g@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      9903c64f
    • A
      tools headers UAPI: Sync drm/i915_drm.h with the kernel · e6aff9f8
      Arnaldo Carvalho de Melo 提交于
      To pick up the changes from:
      
        d1172ab3 ("drm/i915: Introduce struct class_instance for engines across the uAPI")
        96fd2c66 ("drm/i915: Drop new chunks of context creation ABI (for now)")
        ea593dbb ("drm/i915: Allow contexts to share a single timeline across all engines")
        b9171541 ("drm/i915: Extend CONTEXT_CREATE to set parameters upon construction")
        e0695db7 ("drm/i915: Create/destroy VM (ppGTT) for use with contexts")
        9d1305ef ("drm/i915: Introduce the i915_user_extension_method")
        c8b50242 ("drm/i915: Remove last traces of exec-id (GEM_BUSY)")
        d90c06d5 ("drm/i915: Fix I915_EXEC_RING_MASK")
        e8861964 ("drm/i915: Use HW semaphores for inter-engine synchronisation on gen8+")
        be03564b ("drm/i915: Include reminders about leaving no holes in uAPI enums")
        ba4fda62 ("drm/i915: Optionally disable automatic recovery after a GPU reset")
      
      We still don't take into account the _IOC_SIZE() to differentiate ioctl cmds,
      so more work is needed to support the extension mechanism that is being used
      here so that we can differentiate DRM_IOCTL_I915_GEM_CONTEXT_CREATE from the
      newly introduced DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT cmd.
      
      This silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/drm/i915_drm.h' differs from latest version at 'include/uapi/drm/i915_drm.h'
        diff -u tools/include/uapi/drm/i915_drm.h include/uapi/drm/i915_drm.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Link: https://lkml.kernel.org/n/tip-csn0vanmc7pevyka5qcg0xyw@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      e6aff9f8
    • A
      tools headers UAPI: Sync linux/fs.h with the kernel · b5b999dc
      Arnaldo Carvalho de Melo 提交于
      To pick up the changes in:
      
        c553ea4f ("fs/sync.c: sync_file_range(2) may use WB_SYNC_ALL writeback")
      
      That should be used to beautify the 'sync_file_range' syscall 'flags'
      arg.
      
      This silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/fs.h' differs from latest version at 'include/uapi/linux/fs.h'
        diff -u tools/include/uapi/linux/fs.h include/uapi/linux/fs.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Amir Goldstein <amir73il@gmail.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-at3uoqcvmqdkwaysmvbj1wpv@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b5b999dc
    • A
      tools headers UAPI: Sync linux/sched.h with the kernel · c27de2b8
      Arnaldo Carvalho de Melo 提交于
      To pick up the change in:
      
        b3e58382 ("clone: add CLONE_PIDFD")
      
      This requires changes in the 'perf trace' beautification routines for
      the 'clone' syscall args, which is done in a followup patch.
      
      This silences the following perf build warning:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/sched.h' differs from latest version at 'include/uapi/linux/sched.h'
        diff -u tools/include/uapi/linux/sched.h include/uapi/linux/sched.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Christian Brauner <christian@brauner.io>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: https://lkml.kernel.org/n/tip-lenja6gmy26dkt0ybk747qgq@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      c27de2b8
    • A
      tools arch x86: Sync asm/cpufeatures.h with the with the kernel · b979540a
      Arnaldo Carvalho de Melo 提交于
      To pick up the changes in:
      
        ed5194c2 ("x86/speculation/mds: Add basic bug infrastructure for MDS")
        e261f209 ("x86/speculation/mds: Add BUG_MSBDS_ONLY")
      
      That don't affect anything in tools/.
      
      This silences this perf build warning:
      
        Warning: Kernel ABI header at 'tools/arch/x86/include/asm/cpufeatures.h' differs from latest version at 'arch/x86/include/asm/cpufeatures.h'
        diff -u tools/arch/x86/include/asm/cpufeatures.h arch/x86/include/asm/cpufeatures.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Brendan Gregg <brendan.d.gregg@gmail.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: https://lkml.kernel.org/n/tip-jp1afecx3ql1jkuirpgkqfad@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b979540a
    • A
      tools include UAPI: Update copy of files related to new fspick, fsmount,... · fba29f18
      Arnaldo Carvalho de Melo 提交于
      tools include UAPI: Update copy of files related to new fspick, fsmount, fsconfig, fsopen, move_mount and open_tree syscalls
      
      Copy the headers changed by these csets:
      
        d8076bdb ("uapi: Wire up the mount API syscalls on non-x86 arches [ver #2]")
        9c8ad7a2 ("uapi, x86: Fix the syscall numbering of the mount API syscalls [ver #2]")
        cf3cba4a ("vfs: syscall: Add fspick() to select a superblock for reconfiguration")
        93766fbd ("vfs: syscall: Add fsmount() to create a mount for a superblock")
        ecdab150 ("vfs: syscall: Add fsconfig() for configuring and managing a context")
        24dcb3d9 ("vfs: syscall: Add fsopen() to prepare for superblock creation")
        2db154b3 ("vfs: syscall: Add move_mount(2) to move mounts around")
        a07b2000 ("vfs: syscall: Add open_tree(2) to reference or clone a mount")
      
      We need to create tables for all the flags argument in the new syscalls,
      in followup patches.
      
      This silences these perf build warnings:
      
        Warning: Kernel ABI header at 'tools/include/uapi/linux/mount.h' differs from latest version at 'include/uapi/linux/mount.h'
        diff -u tools/include/uapi/linux/mount.h include/uapi/linux/mount.h
        Warning: Kernel ABI header at 'tools/perf/arch/x86/entry/syscalls/syscall_64.tbl' differs from latest version at 'arch/x86/entry/syscalls/syscall_64.tbl'
        diff -u tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
        Warning: Kernel ABI header at 'tools/include/uapi/asm-generic/unistd.h' differs from latest version at 'include/uapi/asm-generic/unistd.h'
        diff -u tools/include/uapi/asm-generic/unistd.h include/uapi/asm-generic/unistd.h
      
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: https://lkml.kernel.org/n/tip-knpqr1u2ffvz6641056z2mwu@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      fba29f18
    • V
      perf arm64: Fix mksyscalltbl when system kernel headers are ahead of the kernel · f95d050c
      Vitaly Chikunov 提交于
      When a host system has kernel headers that are newer than a compiling
      kernel, mksyscalltbl fails with errors such as:
      
        <stdin>: In function 'main':
        <stdin>:271:44: error: '__NR_kexec_file_load' undeclared (first use in this function)
        <stdin>:271:44: note: each undeclared identifier is reported only once for each function it appears in
        <stdin>:272:46: error: '__NR_pidfd_send_signal' undeclared (first use in this function)
        <stdin>:273:43: error: '__NR_io_uring_setup' undeclared (first use in this function)
        <stdin>:274:43: error: '__NR_io_uring_enter' undeclared (first use in this function)
        <stdin>:275:46: error: '__NR_io_uring_register' undeclared (first use in this function)
        tools/perf/arch/arm64/entry/syscalls//mksyscalltbl: line 48: /tmp/create-table-xvUQdD: Permission denied
      
      mksyscalltbl is compiled with default host includes, but run with
      compiling kernel tree includes, causing some syscall numbers to being
      undeclared.
      
      Committer testing:
      
      Before this patch, in my cross build environment, no build problems, but
      these new syscalls were not in the syscalls.c generated from the
      unistd.h file, which is a bug, this patch fixes it:
      
      perfbuilder@6e20056ed532:/git/perf$ tail /tmp/build/perf/arch/arm64/include/generated/asm/syscalls.c
      	[292] = "io_pgetevents",
      	[293] = "rseq",
      	[294] = "kexec_file_load",
      	[424] = "pidfd_send_signal",
      	[425] = "io_uring_setup",
      	[426] = "io_uring_enter",
      	[427] = "io_uring_register",
      	[428] = "syscalls",
      };
      perfbuilder@6e20056ed532:/git/perf$ strings /tmp/build/perf/perf | egrep '^(io_uring_|pidfd_|kexec_file)'
      kexec_file_load
      pidfd_send_signal
      io_uring_setup
      io_uring_enter
      io_uring_register
      perfbuilder@6e20056ed532:/git/perf$
      $
      
      Well, there is that last "syscalls" thing, but that looks like some
      other bug.
      Signed-off-by: NVitaly Chikunov <vt@altlinux.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: NMichael Petlan <mpetlan@redhat.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Hendrik Brueckner <brueckner@linux.ibm.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Kim Phillips <kim.phillips@arm.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
      Link: http://lkml.kernel.org/r/20190521030203.1447-1-vt@altlinux.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      f95d050c
    • S
      perf data: Fix 'strncat may truncate' build failure with recent gcc · 97acec7d
      Shawn Landden 提交于
      This strncat() is safe because the buffer was allocated with zalloc(),
      however gcc doesn't know that. Since the string always has 4 non-null
      bytes, just use memcpy() here.
      
          CC       /home/shawn/linux/tools/perf/util/data-convert-bt.o
        In file included from /usr/include/string.h:494,
                         from /home/shawn/linux/tools/lib/traceevent/event-parse.h:27,
                         from util/data-convert-bt.c:22:
        In function ‘strncat’,
            inlined from ‘string_set_value’ at util/data-convert-bt.c:274:4:
        /usr/include/powerpc64le-linux-gnu/bits/string_fortified.h:136:10: error: ‘__builtin_strncat’ output may be truncated copying 4 bytes from a string of length 4 [-Werror=stringop-truncation]
          136 |   return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
              |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Signed-off-by: NShawn Landden <shawn@git.icu>
      Cc: Adrian Hunter <adrian.hunter@intel.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      LPU-Reference: 20190518183238.10954-1-shawn@git.icu
      Link: https://lkml.kernel.org/n/tip-289f1jice17ta7tr3tstm9jm@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      97acec7d
  3. 24 5月, 2019 1 次提交