06 Feb, 2020

1 commit

  • commit 6c4798d3f08b81c2c52936b10e0fa872590c96ae upstream.

    Disable a couple of compilation warnings (which are treated as errors)
    on strlcpy() definition and declaration, allowing users to compile perf
    and kernel (objtool) when:

    1. glibc have strlcpy() (such as in ALT Linux since 2004) objtool and
    perf build fails with this (in gcc):

    In file included from exec-cmd.c:3:
    tools/include/linux/string.h:20:15: error: redundant redeclaration of ‘strlcpy’ [-Werror=redundant-decls]
    20 | extern size_t strlcpy(char *dest, const char *src, size_t size);

    2. clang ignores `-Wredundant-decls', but produces another warning when
    building perf:

    CC util/string.o
    ../lib/string.c:99:8: error: attribute declaration must precede definition [-Werror,-Wignored-attributes]
    size_t __weak strlcpy(char *dest, const char *src, size_t size)
    ../../tools/include/linux/compiler.h:66:34: note: expanded from macro '__weak'
    # define __weak __attribute__((weak))
    /usr/include/bits/string_fortified.h:151:8: note: previous definition is here
    __NTH (strlcpy (char *__restrict __dest, const char *__restrict __src,

    Committer notes:

    The

    #pragma GCC diagnostic

    directive was introduced in gcc 4.6, so check for that as well.

    Fixes: ce99091 ("perf tools: Move strlcpy() from perf to tools/lib/string.c")
    Fixes: 0215d59 ("tools lib: Reinstate strlcpy() header guard with __UCLIBC__")
    Resolves: https://bugzilla.kernel.org/show_bug.cgi?id=118481
    Signed-off-by: Vitaly Chikunov
    Reviewed-by: Dmitry Levin
    Cc: Dmitry Levin
    Cc: Josh Poimboeuf
    Cc: kbuild test robot
    Cc: Peter Zijlstra
    Cc: stable@vger.kernel.org
    Cc: Vineet Gupta
    Link: http://lore.kernel.org/lkml/20191224172029.19690-1-vt@altlinux.org
    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: Greg Kroah-Hartman

    Vitaly Chikunov
     

15 Oct, 2019

2 commits

  • To get the changes in:

    78f6face5af3 ("sched: add kernel-doc for struct clone_args")
    f14c234b4bc5 ("clone3: switch to copy_struct_from_user()")

    This file gets rebuilt, but no changes ensues:

    CC /tmp/build/perf/trace/beauty/clone.o

    This addresses this 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
    Cc: Aleksa Sarai
    Cc: Christian Brauner
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-xqruu8wohwlbc57udg1g0xzx@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To pick the changes in:

    344c6c804703 ("KVM/Hyper-V: Add new KVM capability KVM_CAP_HYPERV_DIRECT_TLBFLUSH")
    dee04eee9182 ("KVM: RISC-V: Add KVM_REG_RISCV for ONE_REG interface")

    These trigger the rebuild of this object:

    CC /tmp/build/perf/trace/beauty/ioctl.o

    But do not result in any change in tooling, as the additions are not
    being used in any table generatator.

    This silences this perf build warning:

    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

    Cc: Adrian Hunter
    Cc: Anup Patel
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Paolo Bonzini
    Cc: Paul Walmsley
    Cc: Tianyu Lan
    Link: https://lkml.kernel.org/n/tip-d1v48a0qfoe98u5v9tn3mu5u@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

01 Oct, 2019

4 commits

  • To pick the changes in:

    200824f55eef ("KVM: s390: Disallow invalid bits in kvm_valid_regs and kvm_dirty_regs")
    4a53d99dd0c2 ("KVM: VMX: Introduce exit reason for receiving INIT signal on guest-mode")
    7396d337cfad ("KVM: x86: Return to userspace with internal error on unexpected exit reason")
    92f35b751c71 ("KVM: arm/arm64: vgic: Allow more than 256 vcpus for KVM_IRQ_LINE")

    None of them trigger any changes in tooling, this time this is just to silence
    these perf build 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/x86/include/uapi/asm/vmx.h' differs from latest version at 'arch/x86/include/uapi/asm/vmx.h'
    diff -u tools/arch/x86/include/uapi/asm/vmx.h arch/x86/include/uapi/asm/vmx.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/arm/include/uapi/asm/kvm.h' differs from latest version at 'arch/arm/include/uapi/asm/kvm.h'
    diff -u tools/arch/arm/include/uapi/asm/kvm.h arch/arm/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
    Cc: Janosch Frank
    Cc: Jiri Olsa
    Cc: Liran Alon
    Cc: Marc Zyngier
    Cc: Namhyung Kim
    Cc: Paolo Bonzini
    Cc: Thomas Huth
    Link: https://lkml.kernel.org/n/tip-akuugvvjxte26kzv23zp5d2z@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To pick the changes from:

    78a1b96bcf7a ("fscrypt: add FS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS ioctl")
    23c688b54016 ("fscrypt: allow unprivileged users to add/remove keys for v2 policies")
    5dae460c2292 ("fscrypt: v2 encryption policy support")
    5a7e29924dac ("fscrypt: add FS_IOC_GET_ENCRYPTION_KEY_STATUS ioctl")
    b1c0ec3599f4 ("fscrypt: add FS_IOC_REMOVE_ENCRYPTION_KEY ioctl")
    22d94f493bfb ("fscrypt: add FS_IOC_ADD_ENCRYPTION_KEY ioctl")
    3b6df59bc4d2 ("fscrypt: use FSCRYPT_* definitions, not FS_*")
    2336d0deb2d4 ("fscrypt: use FSCRYPT_ prefix for uapi constants")
    7af0ab0d3aab ("fs, fscrypt: move uapi definitions to new header ")

    That don't trigger any changes in tooling, as it so far is used only
    for:

    $ grep -l 'fs\.h' tools/perf/trace/beauty/*.sh | xargs grep regex=
    tools/perf/trace/beauty/rename_flags.sh:regex='^[[:space:]]*#[[:space:]]*define[[:space:]]+RENAME_([[:alnum:]_]+)[[:space:]]+\(1[[:space:]]*<
    Cc: Eric Biggers
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-44g48exl9br9ba0t64chqb4i@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To pick up the changes from:

    4ed3350539aa ("USB: usbfs: Add a capability flag for runtime suspend")
    7794f486ed0b ("usbfs: Add ioctls for runtime power management")

    This triggers these changes in the kernel sources, automagically
    supporting these new ioctls in the 'perf trace' beautifiers.

    Soon this will be used in things like filter expressions for tracepoints
    in 'perf record', 'perf trace', 'perf top', i.e. filter expressions will
    do a lookup to turn things like USBDEVFS_WAIT_FOR_RESUME into _IO('U',
    35) before associating the tracepoint expression to tracepoint perf
    event.

    $ tools/perf/trace/beauty/usbdevfs_ioctl.sh > before
    $ cp include/uapi/linux/usbdevice_fs.h tools/include/uapi/linux/usbdevice_fs.h
    $ git diff
    diff --git a/tools/include/uapi/linux/usbdevice_fs.h b/tools/include/uapi/linux/usbdevice_fs.h
    index 78efe870c2b7..cf525cddeb94 100644
    --- a/tools/include/uapi/linux/usbdevice_fs.h
    +++ b/tools/include/uapi/linux/usbdevice_fs.h
    @@ -158,6 +158,7 @@ struct usbdevfs_hub_portinfo {
    #define USBDEVFS_CAP_MMAP 0x20
    #define USBDEVFS_CAP_DROP_PRIVILEGES 0x40
    #define USBDEVFS_CAP_CONNINFO_EX 0x80
    +#define USBDEVFS_CAP_SUSPEND 0x100

    /* USBDEVFS_DISCONNECT_CLAIM flags & struct */

    @@ -223,5 +224,8 @@ struct usbdevfs_streams {
    * extending size of the data returned.
    */
    #define USBDEVFS_CONNINFO_EX(len) _IOC(_IOC_READ, 'U', 32, len)
    +#define USBDEVFS_FORBID_SUSPEND _IO('U', 33)
    +#define USBDEVFS_ALLOW_SUSPEND _IO('U', 34)
    +#define USBDEVFS_WAIT_FOR_RESUME _IO('U', 35)

    #endif /* _UAPI_LINUX_USBDEVICE_FS_H */
    $ tools/perf/trace/beauty/usbdevfs_ioctl.sh > after
    $ diff -u before after
    --- before 2019-09-27 11:41:50.634867620 -0300
    +++ after 2019-09-27 11:42:07.453102978 -0300
    @@ -24,6 +24,9 @@
    [30] = "DROP_PRIVILEGES",
    [31] = "GET_SPEED",
    [32] = "CONNINFO_EX",
    + [33] = "FORBID_SUSPEND",
    + [34] = "ALLOW_SUSPEND",
    + [35] = "WAIT_FOR_RESUME",
    [3] = "RESETEP",
    [4] = "SETINTERFACE",
    [5] = "SETCONFIGURATION",
    $

    This addresses the following perf build warning:

    Warning: Kernel ABI header at 'tools/include/uapi/linux/usbdevice_fs.h' differs from latest version at 'include/uapi/linux/usbdevice_fs.h'
    diff -u tools/include/uapi/linux/usbdevice_fs.h include/uapi/linux/usbdevice_fs.h

    Cc: Alan Stern
    Cc: Adrian Hunter
    Cc: Brendan Gregg
    Cc: Greg Kroah-Hartman
    Cc: Jiri Olsa
    Cc: Luis Cláudio Gonçalves
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-x1rb109b9nfi7pukota82xhj@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To pick the changes from:

    1a4e58cce84e ("mm: introduce MADV_PAGEOUT")
    9c276cc65a58 ("mm: introduce MADV_COLD")

    That result in these changes in the tools:

    $ tools/perf/trace/beauty/madvise_behavior.sh > before
    $ cp include/uapi/asm-generic/mman-common.h tools/include/uapi/asm-generic/mman-common.h
    $ git diff
    diff --git a/tools/include/uapi/asm-generic/mman-common.h b/tools/include/uapi/asm-generic/mman-common.h
    index 63b1f506ea67..c160a5354eb6 100644
    --- a/tools/include/uapi/asm-generic/mman-common.h
    +++ b/tools/include/uapi/asm-generic/mman-common.h
    @@ -67,6 +67,9 @@
    #define MADV_WIPEONFORK 18 /* Zero memory on fork, child only */
    #define MADV_KEEPONFORK 19 /* Undo MADV_WIPEONFORK */

    +#define MADV_COLD 20 /* deactivate these pages */
    +#define MADV_PAGEOUT 21 /* reclaim these pages */
    +
    /* compatibility flags */
    #define MAP_FILE 0

    $ tools/perf/trace/beauty/madvise_behavior.sh > after
    $ diff -u before after
    --- before 2019-09-27 11:29:43.346320100 -0300
    +++ after 2019-09-27 11:30:03.838570439 -0300
    @@ -16,6 +16,8 @@
    [17] = "DODUMP",
    [18] = "WIPEONFORK",
    [19] = "KEEPONFORK",
    + [20] = "COLD",
    + [21] = "PAGEOUT",
    [100] = "HWPOISON",
    [101] = "SOFT_OFFLINE",
    };
    $

    I.e. now when madvise gets those behaviours as args, it will be able to
    translate from the number to a human readable string.

    This addresses the following perf build warning:

    Warning: Kernel ABI header at 'tools/include/uapi/asm-generic/mman-common.h' differs from latest version at 'include/uapi/asm-generic/mman-common.h'
    diff -u tools/include/uapi/asm-generic/mman-common.h include/uapi/asm-generic/mman-common.h

    Cc: Adrian Hunter
    Cc: Brendan Gregg
    Cc: Jiri Olsa
    Cc: Luis Cláudio Gonçalves
    Cc: Minchan Kim
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-n40y6c4sa49p29q6sl8w3ufx@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

27 Sep, 2019

2 commits

  • To pick the change in:

    bf73fc0fa9cf ("drm/i915: Show support for accurate sw PMU busyness tracking")

    That don't result in any changes in tooling, just 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
    Cc: Chris Wilson
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-o651nt7vpz93tu3nmx4f3xql@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Pull more perf updates from Ingo Molnar:
    "The only kernel change is comment typo fixes.

    The rest is mostly tooling fixes, but also new vendor event additions
    and updates, a bigger libperf/libtraceevent library and a header files
    reorganization that came in a bit late"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (108 commits)
    perf unwind: Fix libunwind build failure on i386 systems
    perf parser: Remove needless include directives
    perf build: Add detection of java-11-openjdk-devel package
    perf jvmti: Include JVMTI support for s390
    perf vendor events: Remove P8 HW events which are not supported
    perf evlist: Fix access of freed id arrays
    perf stat: Fix free memory access / memory leaks in metrics
    perf tools: Replace needless mmap.h with what is needed, event.h
    perf evsel: Move config terms to a separate header
    perf evlist: Remove unused perf_evlist__fprintf() method
    perf evsel: Introduce evsel_fprintf.h
    perf evsel: Remove need for symbol_conf in evsel_fprintf.c
    perf copyfile: Move copyfile routines to separate files
    libperf: Add perf_evlist__poll() function
    libperf: Add perf_evlist__add_pollfd() function
    libperf: Add perf_evlist__alloc_pollfd() function
    libperf: Add libperf_init() call to the tests
    libperf: Merge libperf_set_print() into libperf_init()
    libperf: Add libperf dependency for tests targets
    libperf: Use sys/types.h to get ssize_t, not unistd.h
    ...

    Linus Torvalds
     

26 Sep, 2019

4 commits

  • Change the definition of the RBCOMPUTE function. The propagate callback
    repeatedly calls RBCOMPUTE as it moves from leaf to root. it wants to
    stop recomputing once the augmented subtree information doesn't change.
    This was previously checked using the == operator, but that only works
    when the augmented subtree information is a scalar field. This commit
    modifies the RBCOMPUTE function so that it now sets the augmented subtree
    information instead of returning it, and returns a boolean value
    indicating if the propagate callback should stop.

    The motivation for this change is that I want to introduce augmented
    rbtree uses where the augmented data for the subtree is a struct instead
    of a scalar.

    Link: http://lkml.kernel.org/r/20190703040156.56953-4-walken@google.com
    Signed-off-by: Michel Lespinasse
    Acked-by: Peter Zijlstra (Intel)
    Cc: David Howells
    Cc: Davidlohr Bueso
    Cc: Uladzislau Rezki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Add RB_DECLARE_CALLBACKS_MAX, which generates augmented rbtree callbacks
    for the case where the augmented value is a scalar whose definition
    follows a max(f(node)) pattern. This actually covers all present uses of
    RB_DECLARE_CALLBACKS, and saves some (source) code duplication in the
    various RBCOMPUTE function definitions.

    [walken@google.com: fix mm/vmalloc.c]
    Link: http://lkml.kernel.org/r/CANN689FXgK13wDYNh1zKxdipeTuALG4eKvKpsdZqKFJ-rvtGiQ@mail.gmail.com
    [walken@google.com: re-add check to check_augmented()]
    Link: http://lkml.kernel.org/r/20190727022027.GA86863@google.com
    Link: http://lkml.kernel.org/r/20190703040156.56953-3-walken@google.com
    Signed-off-by: Michel Lespinasse
    Acked-by: Peter Zijlstra (Intel)
    Cc: David Howells
    Cc: Davidlohr Bueso
    Cc: Uladzislau Rezki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Patch series "make RB_DECLARE_CALLBACKS more generic", v3.

    These changes are intended to make the RB_DECLARE_CALLBACKS macro more
    generic (allowing the aubmented subtree information to be a struct instead
    of a scalar).

    I have verified the compiled lib/interval_tree.o and mm/mmap.o files to
    check that they didn't change. This held as expected for interval_tree.o;
    mmap.o did have some changes which could be reverted by marking
    __vma_link_rb as noinline. I did not add such a change to the patchset; I
    felt it was reasonable enough to leave the inlining decision up to the
    compiler.

    This patch (of 3):

    Add a short comment summarizing the arguments to RB_DECLARE_CALLBACKS.
    The arguments are also now capitalized. This copies the style of the
    INTERVAL_TREE_DEFINE macro.

    No functional changes in this commit, only comments and capitalization.

    Link: http://lkml.kernel.org/r/20190703040156.56953-2-walken@google.com
    Signed-off-by: Michel Lespinasse
    Acked-by: Davidlohr Bueso
    Acked-by: Peter Zijlstra (Intel)
    Cc: David Howells
    Cc: Uladzislau Rezki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • As was already noted in rbtree.h, the logic to cache rb_first (or
    rb_last) can easily be implemented externally to the core rbtree api.

    This commit takes the changes applied to the include/linux/ and lib/
    rbtree files in 9f973cb38088 ("lib/rbtree: avoid generating code twice
    for the cached versions"), and applies these to the
    tools/include/linux/ and tools/lib/ files as well to keep them
    synchronized.

    Link: http://lkml.kernel.org/r/20190703034812.53002-1-walken@google.com
    Signed-off-by: Michel Lespinasse
    Cc: David Howells
    Cc: Davidlohr Bueso
    Cc: Peter Zijlstra (Intel)
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     

25 Sep, 2019

1 commit

  • We have a direct fprintf() call in the header, so we need stdio.h
    include, otherwise it could fail compilation if there's no prior stdio.h
    include directive.

    Signed-off-by: Jiri Olsa
    Link: http://lkml.kernel.org/n/tip-8hvjgh24olfsa4non0a3ohnq@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

22 Sep, 2019

1 commit

  • Pull f2fs updates from Jaegeuk Kim:
    "In this round, we introduced casefolding support in f2fs, and fixed
    various bugs in individual features such as IO alignment,
    checkpoint=disable, quota, and swapfile.

    Enhancement:
    - support casefolding w/ enhancement in ext4
    - support fiemap for directory
    - support FS_IO_GET|SET_FSLABEL

    Bug fix:
    - fix IO stuck during checkpoint=disable
    - avoid infinite GC loop
    - fix panic/overflow related to IO alignment feature
    - fix livelock in swap file
    - fix discard command leak
    - disallow dio for atomic_write"

    * tag 'f2fs-for-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (51 commits)
    f2fs: add a condition to detect overflow in f2fs_ioc_gc_range()
    f2fs: fix to add missing F2FS_IO_ALIGNED() condition
    f2fs: fix to fallback to buffered IO in IO aligned mode
    f2fs: fix to handle error path correctly in f2fs_map_blocks
    f2fs: fix extent corrupotion during directIO in LFS mode
    f2fs: check all the data segments against all node ones
    f2fs: Add a small clarification to CONFIG_FS_F2FS_FS_SECURITY
    f2fs: fix inode rwsem regression
    f2fs: fix to avoid accessing uninitialized field of inode page in is_alive()
    f2fs: avoid infinite GC loop due to stale atomic files
    f2fs: Fix indefinite loop in f2fs_gc()
    f2fs: convert inline_data in prior to i_size_write
    f2fs: fix error path of f2fs_convert_inline_page()
    f2fs: add missing documents of reserve_root/resuid/resgid
    f2fs: fix flushing node pages when checkpoint is disabled
    f2fs: enhance f2fs_is_checkpoint_ready()'s readability
    f2fs: clean up __bio_alloc()'s parameter
    f2fs: fix wrong error injection path in inc_valid_block_count()
    f2fs: fix to writeout dirty inode during node flush
    f2fs: optimize case-insensitive lookups
    ...

    Linus Torvalds
     

21 Sep, 2019

2 commits

  • To pick the change from:

    78e05972c5e6 ("ipc: fix semtimedop for generic 32-bit architectures")

    Which doesn't trigger any change in tooling and silences this perf build
    warning:

    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
    Cc: Arnd Bergmann
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-hpnjuyjzoudltqe7dvbokqdt@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To get the changes in:

    63f0c6037965 ("arm64: Introduce prctl() options to control the tagged user addresses ABI")

    that introduces prctl options that then automagically gets catched by
    the prctl cmd table generator, and thus supported in the 'perf trace'
    prctl beautifier for the 'option' argument:

    $ tools/perf/trace/beauty/prctl_option.sh > after
    $ diff -u before after
    --- before 2019-09-20 14:38:41.386720870 -0300
    +++ after 2019-09-20 14:40:02.583990802 -0300
    @@ -49,6 +49,8 @@
    [52] = "GET_SPECULATION_CTRL",
    [53] = "SET_SPECULATION_CTRL",
    [54] = "PAC_RESET_KEYS",
    + [55] = "SET_TAGGED_ADDR_CTRL",
    + [56] = "GET_TAGGED_ADDR_CTRL",
    };
    static const char *prctl_set_mm_options[] = {
    [1] = "START_CODE",
    $

    For now just the translation of 55 and 56 to the respecting strings are
    done, more work needed to allow for filters to be used using strings.

    This, for instance, already works:

    # perf record -e syscalls:sys_enter_close --filter="fd==4"
    # perf script | head -5
    gpm 1018 [006] 21327.171436: syscalls:sys_enter_close: fd: 0x00000004
    gpm 1018 [006] 21329.171583: syscalls:sys_enter_close: fd: 0x00000004
    bash 4882 [002] 21330.785496: syscalls:sys_enter_close: fd: 0x00000004
    bash 20672 [001] 21330.785719: syscalls:sys_enter_close: fd: 0x00000004
    find 20672 [001] 21330.789082: syscalls:sys_enter_close: fd: 0x00000004
    # perf record -e syscalls:sys_enter_close --filter="fd>=4"
    ^C[ perf record: Woken up 1 times to write data ]
    # perf script | head -5
    gpm 1018 [005] 21401.178501: syscalls:sys_enter_close: fd: 0x00000004
    gsd-housekeepin 2287 [006] 21402.225365: syscalls:sys_enter_close: fd: 0x0000000b
    gsd-housekeepin 2287 [006] 21402.226234: syscalls:sys_enter_close: fd: 0x0000000b
    gsd-housekeepin 2287 [006] 21402.227255: syscalls:sys_enter_close: fd: 0x0000000b
    gsd-housekeepin 2287 [006] 21402.228088: syscalls:sys_enter_close: fd: 0x0000000b
    #

    Being able to pass something like:

    # perf record -e syscalls:sys_enter_prctl --filter="option=*TAGGED_ADDR*"

    Should be easy enough, first using tracepoint filters, then via the
    augmented_raw_syscalls.c BPF method.

    This addresses this perf build warning:

    Warning: Kernel ABI header at 'tools/include/uapi/linux/prctl.h' differs from latest version at 'include/uapi/linux/prctl.h'
    diff -u tools/include/uapi/linux/prctl.h include/uapi/linux/prctl.h

    Cc: Adrian Hunter
    Cc: Brendan Gregg
    Cc: Catalin Marinas
    Cc: Jiri Olsa
    Cc: Luis Cláudio Gonçalves
    Cc: Namhyung Kim
    Cc: Will Deacon
    Link: https://lkml.kernel.org/n/tip-y8u8kvflooyo9x0if1g3jska@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

19 Sep, 2019

1 commit

  • Pull networking updates from David Miller:

    1) Support IPV6 RA Captive Portal Identifier, from Maciej Żenczykowski.

    2) Use bio_vec in the networking instead of custom skb_frag_t, from
    Matthew Wilcox.

    3) Make use of xmit_more in r8169 driver, from Heiner Kallweit.

    4) Add devmap_hash to xdp, from Toke Høiland-Jørgensen.

    5) Support all variants of 5750X bnxt_en chips, from Michael Chan.

    6) More RTNL avoidance work in the core and mlx5 driver, from Vlad
    Buslov.

    7) Add TCP syn cookies bpf helper, from Petar Penkov.

    8) Add 'nettest' to selftests and use it, from David Ahern.

    9) Add extack support to drop_monitor, add packet alert mode and
    support for HW drops, from Ido Schimmel.

    10) Add VLAN offload to stmmac, from Jose Abreu.

    11) Lots of devm_platform_ioremap_resource() conversions, from
    YueHaibing.

    12) Add IONIC driver, from Shannon Nelson.

    13) Several kTLS cleanups, from Jakub Kicinski.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (1930 commits)
    mlxsw: spectrum_buffers: Add the ability to query the CPU port's shared buffer
    mlxsw: spectrum: Register CPU port with devlink
    mlxsw: spectrum_buffers: Prevent changing CPU port's configuration
    net: ena: fix incorrect update of intr_delay_resolution
    net: ena: fix retrieval of nonadaptive interrupt moderation intervals
    net: ena: fix update of interrupt moderation register
    net: ena: remove all old adaptive rx interrupt moderation code from ena_com
    net: ena: remove ena_restore_ethtool_params() and relevant fields
    net: ena: remove old adaptive interrupt moderation code from ena_netdev
    net: ena: remove code duplication in ena_com_update_nonadaptive_moderation_interval _*()
    net: ena: enable the interrupt_moderation in driver_supported_features
    net: ena: reimplement set/get_coalesce()
    net: ena: switch to dim algorithm for rx adaptive interrupt moderation
    net: ena: add intr_moder_rx_interval to struct ena_com_dev and use it
    net: phy: adin: implement Energy Detect Powerdown mode via phy-tunable
    ethtool: implement Energy Detect Powerdown support via phy-tunable
    xen-netfront: do not assume sk_buff_head list is empty in error handling
    s390/ctcm: Delete unnecessary checks before the macro call “dev_kfree_skb”
    net: ena: don't wake up tx queue when down
    drop_monitor: Better sanitize notified packets
    ...

    Linus Torvalds
     

06 Sep, 2019

1 commit

  • Daniel Borkmann says:

    ====================
    The following pull-request contains BPF updates for your *net-next* tree.

    The main changes are:

    1) Add the ability to use unaligned chunks in the AF_XDP umem. By
    relaxing where the chunks can be placed, it allows to use an
    arbitrary buffer size and place whenever there is a free
    address in the umem. Helps more seamless DPDK AF_XDP driver
    integration. Support for i40e, ixgbe and mlx5e, from Kevin and
    Maxim.

    2) Addition of a wakeup flag for AF_XDP tx and fill rings so the
    application can wake up the kernel for rx/tx processing which
    avoids busy-spinning of the latter, useful when app and driver
    is located on the same core. Support for i40e, ixgbe and mlx5e,
    from Magnus and Maxim.

    3) bpftool fixes for printf()-like functions so compiler can actually
    enforce checks, bpftool build system improvements for custom output
    directories, and addition of 'bpftool map freeze' command, from Quentin.

    4) Support attaching/detaching XDP programs from 'bpftool net' command,
    from Daniel.

    5) Automatic xskmap cleanup when AF_XDP socket is released, and several
    barrier/{read,write}_once fixes in AF_XDP code, from Björn.

    6) Relicense of bpf_helpers.h/bpf_endian.h for future libbpf
    inclusion as well as libbpf versioning improvements, from Andrii.

    7) Several new BPF kselftests for verifier precision tracking, from Alexei.

    8) Several BPF kselftest fixes wrt endianess to run on s390x, from Ilya.

    9) And more BPF kselftest improvements all over the place, from Stanislav.

    10) Add simple BPF map op cache for nfp driver to batch dumps, from Jakub.

    11) AF_XDP socket umem mapping improvements for 32bit archs, from Ivan.

    12) Add BPF-to-BPF call and BTF line info support for s390x JIT, from Yauheni.

    13) Small optimization in arm64 JIT to spare 1 insns for BPF_MOD, from Jerin.

    14) Fix an error check in bpf_tcp_gen_syncookie() helper, from Petar.

    15) Various minor fixes and cleanups, from Nathan, Masahiro, Masanari,
    Peter, Wei, Yue.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

31 Aug, 2019

1 commit

  • This patch adds a 'flags' field to the umem_config and umem_reg structs.
    This will allow for more options to be added for configuring umems.

    The first use for the flags field is to add a flag for unaligned chunks
    mode. These flags can either be user-provided or filled with a default.

    Since we change the size of the xsk_umem_config struct, we need to version
    the ABI. This patch includes the ABI versioning for xsk_umem__create. The
    Makefile was also updated to handle multiple function versions in
    check-abi.

    Signed-off-by: Kevin Laatz
    Signed-off-by: Ciara Loftus
    Acked-by: Jonathan Lemon
    Signed-off-by: Daniel Borkmann

    Kevin Laatz
     

28 Aug, 2019

1 commit


26 Aug, 2019

1 commit


23 Aug, 2019

1 commit


22 Aug, 2019

2 commits

  • We need perf_event.h include for 'struct perf_event_mmap_page'.

    Link: http://lkml.kernel.org/n/tip-bolqkmqajexhccjb0ib0an8w@git.kernel.org
    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Michael Petlan
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20190822111141.25823-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Fix a 'struct pt_reg' typo and clarify when bpf_trace_printk discards
    lines. Affects documentation only.

    Signed-off-by: Peter Wu
    Signed-off-by: Alexei Starovoitov

    Peter Wu
     

21 Aug, 2019

1 commit


20 Aug, 2019

5 commits

  • We were getting the file by luck, from one of the paths in -I, fix it to
    get it from the proper place:

    $ cd tools/include/uapi/asm/
    [acme@quaco asm]$ grep include bitsperlong.h
    #include "../../arch/x86/include/uapi/asm/bitsperlong.h"
    #include "../../arch/arm64/include/uapi/asm/bitsperlong.h"
    #include "../../arch/powerpc/include/uapi/asm/bitsperlong.h"
    #include "../../arch/s390/include/uapi/asm/bitsperlong.h"
    #include "../../arch/sparc/include/uapi/asm/bitsperlong.h"
    #include "../../arch/mips/include/uapi/asm/bitsperlong.h"
    #include "../../arch/ia64/include/uapi/asm/bitsperlong.h"
    #include "../../arch/riscv/include/uapi/asm/bitsperlong.h"
    #include "../../arch/alpha/include/uapi/asm/bitsperlong.h"
    #include
    $ ls -la ../../arch/x86/include/uapi/asm/bitsperlong.h
    ls: cannot access '../../arch/x86/include/uapi/asm/bitsperlong.h': No such file or directory
    $ ls -la ../../../arch/*/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 237 ../../../arch/alpha/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 841 ../../../arch/arm64/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 966 ../../../arch/hexagon/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 234 ../../../arch/ia64/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 100 ../../../arch/microblaze/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 244 ../../../arch/mips/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 352 ../../../arch/parisc/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 312 ../../../arch/powerpc/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 353 ../../../arch/riscv/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 292 ../../../arch/s390/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 323 ../../../arch/sparc/include/uapi/asm/bitsperlong.h
    -rw-rw-r--. 1 320 ../../../arch/x86/include/uapi/asm/bitsperlong.h
    $

    Found while fixing some other problem, before it was escaping the
    tools/ chroot and using stuff in the kernel sources:

    CC /tmp/build/perf/util/find_bit.o
    In file included from /git/linux/tools/include/../../arch/x86/include/uapi/asm/bitsperlong.h:11,
    from /git/linux/tools/include/uapi/asm/bitsperlong.h:3,
    from /git/linux/tools/include/linux/bits.h:6,
    from /git/linux/tools/include/linux/bitops.h:13,
    from ../lib/find_bit.c:17:

    # cd /git/linux/tools/include/../../arch/x86/include/uapi/asm/
    # pwd
    /git/linux/arch/x86/include/uapi/asm
    #

    Now it is getting the one we want it to, i.e. the one inside tools/:

    CC /tmp/build/perf/util/find_bit.o
    In file included from /git/linux/tools/arch/x86/include/uapi/asm/bitsperlong.h:11,
    from /git/linux/tools/include/linux/bits.h:6,
    from /git/linux/tools/include/linux/bitops.h:13,

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-8f8cfqywmf6jk8a3ucr0ixhu@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To pick up the changes in this cset:

    95b980d62d52 ("linux/bits.h: make BIT(), GENMASK(), and friends available in assembly")

    To address this tools/perf build warning:

    Warning: Kernel ABI header at 'tools/include/linux/bits.h' differs from latest version at 'include/linux/bits.h'
    diff -u tools/include/linux/bits.h include/linux/bits.h

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Masahiro Yamada
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-1if3iga5r3di6oyddgxsr225@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • So that can update the copy of linux/bits.h that now uses macros defined
    in const.h and that are not available in older systems.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-c2qfcbl58hxyfb5u5xivp7is@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • We need to make sure limits.h is included before checking if we can use
    __WORDSIZE, do it.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-5yfoed4rnsck2n3cwhm9mvth@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Merge conflict of mlx5 resolved using instructions in merge
    commit 9566e650bf7fdf58384bb06df634f7531ca3a97e.

    Signed-off-by: David S. Miller

    David S. Miller
     

18 Aug, 2019

2 commits

  • Sync new sk storage clone flag.

    Cc: Martin KaFai Lau
    Cc: Yonghong Song
    Acked-by: Martin KaFai Lau
    Acked-by: Yonghong Song
    Signed-off-by: Stanislav Fomichev
    Signed-off-by: Daniel Borkmann

    Stanislav Fomichev
     
  • This commit adds support for the new need_wakeup flag in AF_XDP. The
    xsk_socket__create function is updated to handle this and a new
    function is introduced called xsk_ring_prod__needs_wakeup(). This
    function can be used by the application to check if Rx and/or Tx
    processing needs to be explicitly woken up.

    Signed-off-by: Magnus Karlsson
    Acked-by: Jonathan Lemon
    Signed-off-by: Daniel Borkmann

    Magnus Karlsson
     

16 Aug, 2019

1 commit

  • Some functions in bpftool have a "__printf()" format attributes to tell
    the compiler they should expect printf()-like arguments. But because
    these attributes are not used for the function prototypes in the header
    files, the compiler does not run the checks everywhere the functions are
    used, and some mistakes on format string and corresponding arguments
    slipped in over time.

    Let's move the __printf() attributes to the correct places.

    Note: We add guards around the definition of GCC_VERSION in
    tools/include/linux/compiler-gcc.h to prevent a conflict in jit_disasm.c
    on GCC_VERSION from headers pulled via libbfd.

    Fixes: c101189bc968 ("tools: bpftool: fix -Wmissing declaration warnings")
    Reported-by: Jakub Kicinski
    Signed-off-by: Quentin Monnet
    Reviewed-by: Jakub Kicinski
    Signed-off-by: Alexei Starovoitov

    Quentin Monnet
     

14 Aug, 2019

2 commits

  • Add aux_output attribute flag to match the kernel's perf_event.h file.

    Signed-off-by: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20190806084606.4021-4-alexander.shishkin@linux.intel.com
    Signed-off-by: Alexander Shishkin
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • Daniel Borkmann says:

    ====================
    The following pull-request contains BPF updates for your *net-next* tree.

    There is a small merge conflict in libbpf (Cc Andrii so he's in the loop
    as well):

    for (i = 1; i info = BTF_INFO_ENC(BTF_KIND_INT, 0, 0);
    <<<<<<< HEAD
    /*
    * using size = 1 is the safest choice, 4 will be too
    * big and cause kernel BTF validation failure if
    * original variable took less than 4 bytes
    */
    t->size = 1;
    *(int *)(t+1) = BTF_INT_ENC(0, 0, 8);
    } else if (!has_datasec && kind == BTF_KIND_DATASEC) {
    =======
    t->size = sizeof(int);
    *(int *)(t + 1) = BTF_INT_ENC(0, 0, 32);
    } else if (!has_datasec && btf_is_datasec(t)) {
    >>>>>>> 72ef80b5ee131e96172f19e74b4f98fa3404efe8
    /* replace DATASEC with STRUCT */

    Conflict is between the two commits 1d4126c4e119 ("libbpf: sanitize VAR to
    conservative 1-byte INT") and b03bc6853c0e ("libbpf: convert libbpf code to
    use new btf helpers"), so we need to pick the sanitation fixup as well as
    use the new btf_is_datasec() helper and the whitespace cleanup. Looks like
    the following:

    [...]
    if (!has_datasec && btf_is_var(t)) {
    /* replace VAR with INT */
    t->info = BTF_INFO_ENC(BTF_KIND_INT, 0, 0);
    /*
    * using size = 1 is the safest choice, 4 will be too
    * big and cause kernel BTF validation failure if
    * original variable took less than 4 bytes
    */
    t->size = 1;
    *(int *)(t + 1) = BTF_INT_ENC(0, 0, 8);
    } else if (!has_datasec && btf_is_datasec(t)) {
    /* replace DATASEC with STRUCT */
    [...]

    The main changes are:

    1) Addition of core parts of compile once - run everywhere (co-re) effort,
    that is, relocation of fields offsets in libbpf as well as exposure of
    kernel's own BTF via sysfs and loading through libbpf, from Andrii.

    More info on co-re: http://vger.kernel.org/bpfconf2019.html#session-2
    and http://vger.kernel.org/lpc-bpf2018.html#session-2

    2) Enable passing input flags to the BPF flow dissector to customize parsing
    and allowing it to stop early similar to the C based one, from Stanislav.

    3) Add a BPF helper function that allows generating SYN cookies from XDP and
    tc BPF, from Petar.

    4) Add devmap hash-based map type for more flexibility in device lookup for
    redirects, from Toke.

    5) Improvements to XDP forwarding sample code now utilizing recently enabled
    devmap lookups, from Jesper.

    6) Add support for reporting the effective cgroup progs in bpftool, from Jakub
    and Takshak.

    7) Fix reading kernel config from bpftool via /proc/config.gz, from Peter.

    8) Fix AF_XDP umem pages mapping for 32 bit architectures, from Ivan.

    9) Follow-up to add two more BPF loop tests for the selftest suite, from Alexei.

    10) Add perf event output helper also for other skb-based program types, from Allan.

    11) Fix a co-re related compilation error in selftests, from Yonghong.
    ====================

    Signed-off-by: Jakub Kicinski

    Jakub Kicinski
     

10 Aug, 2019

1 commit


31 Jul, 2019

1 commit

  • Sync updated documentation for bpf_redirect_map.

    Sync the bpf_tcp_gen_syncookie helper function definition with the one
    in tools/uapi.

    Signed-off-by: Petar Penkov
    Reviewed-by: Lorenz Bauer
    Signed-off-by: Alexei Starovoitov

    Petar Penkov
     

30 Jul, 2019

2 commits

  • …inux/kernel/git/acme/linux into perf/urgent

    Pull perf/urgent fixes from Arnaldo Carvalho de Melo:

    perf header:

    Vince Weaver:

    - Fix divide by zero error if f_header.attr_size==0, found using a perf tool fuzzer.

    Numfor Mbiziwo-Tiapo:

    - Silence use of uninitialized value warning pointed out by clang's MSAN tool.

    libbpf:

    Andrii Nakryiko:

    - Fix missing __WORDSIZE definition in some systems, such as musl libc (Alpine Linux).

    tools header UAPI:

    Arnaldo Carvalho de Melo:

    - Sync headers to address perf build warnings:

    - syscalls_64.tbl and generic unistd.h to pick up clone3 and pidfd_open.

    - With new ioctls: kvm.h, drm.h and usbdevice_fs.h.

    - No tooling change: mman.h, sched.h and if_link.h.

    Documentation:

    Vince Weaver:

    - Fix perf.data documentation units for memory size, its kB, not bytes.

    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

    Ingo Molnar
     
  • This adds the devmap_hash BPF map type to the uapi headers in tools/.

    Signed-off-by: Toke Høiland-Jørgensen
    Acked-by: Yonghong Song
    Acked-by: Jesper Dangaard Brouer
    Signed-off-by: Alexei Starovoitov

    Toke Høiland-Jørgensen