17 Feb, 2020

1 commit

  • Pull KVM fixes from Paolo Bonzini:
    "Bugfixes and improvements to selftests.

    On top of this, Mauro converted the KVM documentation to rst format,
    which was very welcome"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (44 commits)
    docs: virt: guest-halt-polling.txt convert to ReST
    docs: kvm: review-checklist.txt: rename to ReST
    docs: kvm: Convert timekeeping.txt to ReST format
    docs: kvm: Convert s390-diag.txt to ReST format
    docs: kvm: Convert ppc-pv.txt to ReST format
    docs: kvm: Convert nested-vmx.txt to ReST format
    docs: kvm: Convert mmu.txt to ReST format
    docs: kvm: Convert locking.txt to ReST format
    docs: kvm: Convert hypercalls.txt to ReST format
    docs: kvm: arm/psci.txt: convert to ReST
    docs: kvm: convert arm/hyp-abi.txt to ReST
    docs: kvm: Convert api.txt to ReST format
    docs: kvm: convert devices/xive.txt to ReST
    docs: kvm: convert devices/xics.txt to ReST
    docs: kvm: convert devices/vm.txt to ReST
    docs: kvm: convert devices/vfio.txt to ReST
    docs: kvm: convert devices/vcpu.txt to ReST
    docs: kvm: convert devices/s390_flic.txt to ReST
    docs: kvm: convert devices/mpic.txt to ReST
    docs: kvm: convert devices/arm-vgit.txt to ReST
    ...

    Linus Torvalds
     

16 Feb, 2020

1 commit

  • Pull perf fixes from Ingo Molnar:
    "Fixes and HW enablement patches:

    - Tooling fixes, most of which are tooling header synchronization
    with v5.6 changes

    - Fix kprobes fallout on ARM

    - Add Intel Elkhart Lake support and extend Tremont support, these
    are relatively simple and should only affect those models

    - Fix the AMD family 17h generic event table"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (30 commits)
    perf llvm: Fix script used to obtain kernel make directives to work with new kbuild
    tools headers kvm: Sync linux/kvm.h with the kernel sources
    tools headers kvm: Sync kvm headers with the kernel sources
    tools arch x86: Sync asm/cpufeatures.h with the kernel sources
    tools headers x86: Sync disabled-features.h
    tools include UAPI: Sync sound/asound.h copy
    tools headers UAPI: Sync asm-generic/mman-common.h with the kernel
    perf tools: Add arm64 version of get_cpuid()
    tools headers UAPI: Sync drm/i915_drm.h with the kernel sources
    tools headers uapi: Sync linux/fscrypt.h with the kernel sources
    tools headers UAPI: Sync sched.h with the kernel
    perf trace: Resolve prctl's 'option' arg strings to numbers
    perf beauty prctl: Export the 'options' strarray
    tools headers UAPI: Sync prctl.h with the kernel sources
    tools headers UAPI: Sync copy of arm64's asm/unistd.h with the kernel sources
    perf maps: Move kmap::kmaps setup to maps__insert()
    perf maps: Fix map__clone() for struct kmap
    perf maps: Mark ksymbol DSOs with kernel type
    perf maps: Mark module DSOs with kernel type
    tools include UAPI: Sync x86's syscalls_64.tbl, generic unistd.h and fcntl.h to pick up openat2 and pidfd_getfd
    ...

    Linus Torvalds
     

15 Feb, 2020

1 commit

  • Pull networking fixes from David Miller:

    1) Fix interrupt name truncation in mv88e6xxx dsa driver, from Andrew
    Lunn.

    2) Process generic XDP even if SKB is cloned, from Toke Høiland-Jørgensen.

    3) Fix leak of kernel memory to userspace in smc, from Eric Dumazet.

    4) Add some missing netlink attribute validation to matchall and
    flower, from Davide Caratti.

    5) Send icmp responses properly when NAT has been applied to the frame
    before we get to the tunnel emitting the icmp, from Jason Donenfeld.

    6) Make sure there is enough SKB headroom when adding dsa tags for qca
    and ar9331. From Per Forlin.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (62 commits)
    netdevice.h: fix all kernel-doc and Sphinx warnings
    net: dsa: tag_ar9331: Make sure there is headroom for tag
    net: dsa: tag_qca: Make sure there is headroom for tag
    net, ip6_tunnel: enhance tunnel locate with link check
    net/smc: no peer ID in CLC decline for SMCD
    net/smc: transfer fasync_list in case of fallback
    net: hns3: fix a copying IPv6 address error in hclge_fd_get_flow_tuples()
    net: hns3: fix VF bandwidth does not take effect in some case
    net: hns3: add management table after IMP reset
    mac80211: fix wrong 160/80+80 MHz setting
    cfg80211: add missing policy for NL80211_ATTR_STATUS_CODE
    xfrm: interface: use icmp_ndo_send helper
    wireguard: device: use icmp_ndo_send helper
    sunvnet: use icmp_ndo_send helper
    gtp: use icmp_ndo_send helper
    icmp: introduce helper for nat'd source address in network device context
    net/sched: flower: add missing validation of TCA_FLOWER_FLAGS
    net/sched: matchall: add missing validation of TCA_MATCHALL_FLAGS
    net/flow_dissector: remove unexist field description
    page_pool: refill page when alloc.count of pool is zero
    ...

    Linus Torvalds
     

14 Feb, 2020

2 commits

  • Before this patch:

    # ./perf test 39 41
    39: LLVM search and compile :
    39.1: Basic BPF llvm compile : Ok
    39.2: kbuild searching : FAILED!
    39.3: Compile source for BPF prologue generation : Skip
    39.4: Compile source for BPF relocation : Skip
    41: BPF filter :
    41.1: Basic BPF filtering : Ok
    41.2: BPF pinning : Ok
    41.3: BPF prologue generation : FAILED!
    41.4: BPF relocation checker : Skip
    #

    Using 'perf test -v' for these tests shows that it is not finding
    uapi/linux/fs.h, which ends up being because we don't setup the right header
    path. Fix it.

    After this patch:

    # perf test 39 41
    39: LLVM search and compile :
    39.1: Basic BPF llvm compile : Ok
    39.2: kbuild searching : Ok
    39.3: Compile source for BPF prologue generation : Ok
    39.4: Compile source for BPF relocation : Ok
    41: BPF filter :
    41.1: Basic BPF filtering : Ok
    41.2: BPF pinning : Ok
    41.3: BPF prologue generation : Ok
    41.4: BPF relocation checker : Ok
    #

    Longer description:

    In llvm-utils.c we use some techniques to obtain the kbuild make
    directives and that recently stopped working as now 'ar' gets called and
    expects to find the dummy.o used to echo these variables:

    $(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS)

    Add the $(CC) line to satisfy that, making sure this works with all
    kernels, i.e. preserving the temp directory and files in it used for
    this technique we can see that it works everywhere:

    # make -s -C /lib/modules/5.4.18-100.fc30.x86_64/build M=/tmp/tmp.qgaFHgxjZ4/ clean
    # ls -la /tmp/tmp.qgaFHgxjZ4/
    total 4
    drwx------. 2 root root 80 Feb 14 09:42 .
    drwxrwxrwt. 47 root root 1200 Feb 14 09:42 ..
    -rw-r--r--. 1 root root 0 Feb 13 17:14 dummy.c
    -rw-r--r--. 1 root root 121 Feb 13 17:14 Makefile
    #
    # cat /tmp/tmp.qgaFHgxjZ4/Makefile
    obj-y := dummy.o
    $(obj)/%.o: $(src)/%.c
    @echo -n "$(NOSTDINC_FLAGS) $(LINUXINCLUDE) $(EXTRA_CFLAGS)"
    $(CC) -c -o $@ $<
    #

    Then build with an old kernel Makefile:

    # make -s -C /lib/modules/5.4.18-100.fc30.x86_64/build M=/tmp/tmp.qgaFHgxjZ4/ dummy.o
    -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/9/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h
    #
    # ls -la /tmp/tmp.qgaFHgxjZ4/
    total 8
    drwx------. 2 root root 100 Feb 14 09:43 .
    drwxrwxrwt. 47 root root 1200 Feb 14 09:43 ..
    -rw-r--r--. 1 root root 0 Feb 13 17:14 dummy.c
    -rw-r--r--. 1 root root 936 Feb 14 09:43 dummy.o
    -rw-r--r--. 1 root root 121 Feb 13 17:14 Makefile
    #

    And a new one:

    # make -s -C /lib/modules/5.4.18-100.fc30.x86_64/build M=/tmp/tmp.qgaFHgxjZ4/ clean
    # ls -la /tmp/tmp.qgaFHgxjZ4/
    total 4
    drwx------. 2 root root 80 Feb 14 09:43 .
    drwxrwxrwt. 47 root root 1200 Feb 14 09:43 ..
    -rw-r--r--. 1 root root 0 Feb 13 17:14 dummy.c
    -rw-r--r--. 1 root root 121 Feb 13 17:14 Makefile
    # make -s -C /lib/modules/5.6.0-rc1+/build M=/tmp/tmp.qgaFHgxjZ4/ dummy.o
    -nostdinc -isystem /usr/lib/gcc/x86_64-redhat-linux/9/include -I/home/acme/git/linux/arch/x86/include -I./arch/x86/include/generated -I/home/acme/git/linux/include -I./include -I/home/acme/git/linux/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/home/acme/git/linux/include/uapi -I./include/generated/uapi -include /home/acme/git/linux/include/linux/kconfig.h
    #
    # ls -la /tmp/tmp.qgaFHgxjZ4/
    total 16
    drwx------. 2 root root 160 Feb 14 09:44 .
    drwxrwxrwt. 47 root root 1200 Feb 14 09:44 ..
    -rw-r--r--. 1 root root 158 Feb 14 09:44 built-in.a
    -rw-r--r--. 1 root root 149 Feb 14 09:44 .built-in.a.cmd
    -rw-r--r--. 1 root root 0 Feb 13 17:14 dummy.c
    -rw-r--r--. 1 root root 936 Feb 14 09:44 dummy.o
    -rw-r--r--. 1 root root 121 Feb 13 17:14 Makefile
    -rw-r--r--. 1 root root 0 Feb 14 09:44 modules.order
    #

    Reported-by: Thomas Richter
    Tested-by: Thomas Richter
    Cc: Adrian Hunter
    Cc: Daniel Borkmann
    Cc: He Kuang
    Cc: Jiri Olsa
    Cc: Masahiro Yamada
    Cc: Namhyung Kim
    Cc: Sumanth Korikkar
    Cc: Vasily Gorbik
    Cc: Wang Nan
    Cc: Zefan Li
    Link: https://www.spinics.net/lists/linux-perf-users/msg10600.html
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Because wireguard is calling icmp from network device context, it should
    use the ndo helper so that the rate limiting applies correctly. This
    commit adds a small test to the wireguard test suite to ensure that the
    new functions continue doing the right thing in the context of
    wireguard. It does this by setting up a condition that will definately
    evoke an icmp error message from the driver, but along a nat'd path.

    Signed-off-by: Jason A. Donenfeld
    Signed-off-by: David S. Miller

    Jason A. Donenfeld
     

13 Feb, 2020

4 commits


12 Feb, 2020

20 commits

  • To pick up the changes from:

    7de3f1423ff9 ("KVM: s390: Add new reset vcpu API")

    So far we're ignoring those arch specific ioctls, we need to revisit
    this at some time to have arch specific tables, etc:

    $ grep S390 tools/perf/trace/beauty/kvm_ioctl.sh
    egrep -v " ((ARM|PPC|S390)_|[GS]ET_(DEBUGREGS|PIT2|XSAVE|TSC_KHZ)|CREATE_SPAPR_TCE_64)" | \
    $

    This addresses these tools/perf build warnings:

    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

    Cc: Adrian Hunter
    Cc: Christian Borntraeger
    Cc: Janosch Frank
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

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

    290a6bb06de9 ("arm64: KVM: Add UAPI notes for swapped registers")

    No tools changes are caused by this.

    This addresses these tools/perf build warnings:

    Cc: Adrian Hunter
    Cc: Andrew Jones
    Cc: Jiri Olsa
    Cc: Marc Zyngier
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

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

    85c17291e2eb ("x86/cpufeatures: Add flag to track whether MSR IA32_FEAT_CTL is configured")
    f444a5ff95dc ("x86/cpufeatures: Add support for fast short REP; MOVSB")

    These don't cause any changes in tooling, just 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
    Cc: Borislav Petkov
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Sean Christopherson
    Cc: Tony Luck
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To silence the following tools/perf build warning:

    Warning: Kernel ABI header at 'tools/arch/x86/include/asm/disabled-features.h' differs from latest version at 'arch/x86/include/asm/disabled-features.h'
    diff -u tools/arch/x86/include/asm/disabled-features.h arch/x86/include/asm/disabled-features.h

    Picking up the changes in:

    45fc24e89b7c ("x86/mpx: remove MPX from arch/x86")

    that didn't entail any functionality change in the tooling side.

    Cc: Adrian Hunter
    Cc: Dave Hansen
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Picking the changes from:

    46b770f720bd ("ALSA: uapi: Fix sparse warning")
    a103a3989993 ("ALSA: control: Fix incompatible protocol error")
    bd3eb4e87eb3 ("ALSA: ctl: bump protocol version up to v2.1.0")
    ff16351e3f30 ("ALSA: ctl: remove dimen member from elem_info structure")
    542283566679 ("ALSA: ctl: remove unused macro for timestamping of elem_value")
    7fd7d6c50451 ("ALSA: uapi: Fix typos and header inclusion in asound.h")
    1cfaef961703 ("ALSA: bump uapi version numbers")
    80fe7430c708 ("ALSA: add new 32-bit layout for snd_pcm_mmap_status/control")
    07094ae6f952 ("ALSA: Avoid using timespec for struct snd_timer_tread")
    d9e5582c4bb2 ("ALSA: Avoid using timespec for struct snd_rawmidi_status")
    3ddee7f88aaf ("ALSA: Avoid using timespec for struct snd_pcm_status")
    a4e7dd35b9da ("ALSA: Avoid using timespec for struct snd_ctl_elem_value")
    a07804cc7472 ("ALSA: Avoid using timespec for struct snd_timer_status")

    Which entails no changes in the tooling side.

    To silence this perf tools build warning:

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

    Cc: Adrian Hunter
    Cc: Arnd Bergmann
    Cc: Baolin Wang
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Ranjani Sridharan
    Cc: Takashi Iwai
    Cc: Takashi Sakamoto
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To pick the changes from:

    d41938d2cbee ("mm: Reserve asm-generic prot flags 0x10 and 0x20 for arch use")

    No changes in tooling, just a rebuild as files needed got touched.

    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: Dave Martin
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Will Deacon
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Add an arm64 version of get_cpuid(), which is used for various annotation
    and headers - for example, I now get the CPUID in "perf report --header",
    as shown in this snippet:

    # hostname : ubuntu
    # os release : 5.5.0-rc1-dirty
    # perf version : 5.5.rc1.gbf8a13dc9851
    # arch : aarch64
    # nrcpus online : 96
    # nrcpus avail : 96
    # cpuid : 0x00000000480fd010

    Since much of the code to read the MIDR is already in get_cpuid_str(),
    factor out this code.

    Tester notes:

    I tested this patch on my new ARM64 Kunpeng 920 server.
    [root@node1 zsk]# ./perf --version
    perf version 5.6.rc1.g2cdb955b7252

    Both perf list and perf stat can work.

    Signed-off-by: John Garry
    Tested-by: Shaokun Zhang
    Cc: Alexander Shishkin
    Cc: Jiri Olsa
    Cc: Mark Rutland
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Will Deacon
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linuxarm@huawei.com
    Link: http://lore.kernel.org/lkml/1576245255-210926-1-git-send-email-john.garry@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo

    John Garry
     
  • To pick the change in:

    cc662126b413 ("drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET")

    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: Abdiel Janulgue
    Cc: Adrian Hunter
    Cc: Chris Wilson
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To pick the changes from:

    e933adde6f97 ("fscrypt: include in UAPI header")
    93edd392cad7 ("fscrypt: support passing a keyring key to FS_IOC_ADD_ENCRYPTION_KEY")

    That don't trigger any changes in tooling.

    This silences this perf build warning:

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

    Cc: Adrian Hunter
    Cc: Eric Biggers
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Pull tracing fixes from Steven Rostedt:
    "Various fixes:

    - Fix an uninitialized variable

    - Fix compile bug to bootconfig userspace tool (in tools directory)

    - Suppress some error messages of bootconfig userspace tool

    - Remove unneded CONFIG_LIBXBC from bootconfig

    - Allocate bootconfig xbc_nodes dynamically. To ease complaints about
    taking up static memory at boot up

    - Use of parse_args() to parse bootconfig instead of strstr() usage
    Prevents issues of double quotes containing the interested string

    - Fix missing ring_buffer_nest_end() on synthetic event error path

    - Return zero not -EINVAL on soft disabled synthetic event (soft
    disabling must be the same as hard disabling, which returns zero)

    - Consolidate synthetic event code (remove duplicate code)"

    * tag 'trace-v5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    tracing: Consolidate trace() functions
    tracing: Don't return -EINVAL when tracing soft disabled synth events
    tracing: Add missing nest end to synth_event_trace_start() error case
    tools/bootconfig: Suppress non-error messages
    bootconfig: Allocate xbc_nodes array dynamically
    bootconfig: Use parse_args() to find bootconfig and '--'
    tracing/kprobe: Fix uninitialized variable bug
    bootconfig: Remove unneeded CONFIG_LIBXBC
    tools/bootconfig: Fix wrong __VA_ARGS__ usage

    Linus Torvalds
     
  • To get the changes in:

    769071ac9f20 ("ns: Introduce Time Namespace")

    Silencing this tools/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

    Which enables 'perf trace' to decode the CLONE_NEWTIME bit in the
    'flags' argument to the clone syscalls.

    Example of clone flags being decoded:

    [root@quaco ~]# perf trace -e clone*
    0.000 qemu-system-x8/23923 clone(clone_flags: VM|FS|FILES|SIGHAND|THREAD|SYSVSEM|SETTLS|PARENT_SETTID|CHILD_CLEARTID, newsp: 0x7f0dad7f9870, parent_tidptr: 0x7f0dad7fa9d0, child_tidptr: 0x7f0dad7fa9d0, tls: 0x7f0dad7fa700) = 6806 (qemu-system-x86)
    ? qemu-system-x8/6806 ... [continued]: clone()) = 0
    ^C[root@quaco ~]#

    At some point this should enable things like:

    # perf trace -e 'clone*/clone_flags&NEWTIME/'

    Cc: Adrian Hunter
    Cc: Andrei Vagin
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Thomas Gleixner
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • # perf trace -e syscalls:sys_enter_prctl --filter="option==SET_NAME"
    0.000 Socket Thread/3860 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7fc50b9733e8)
    0.053 SSL Cert #78/3860 syscalls:sys_enter_prctl(option: SET_NAME, arg2: 0x7fc50b9733e8)
    ^C #

    If one uses '-v' with 'perf trace', we can see the filter it puts in
    place:

    New filter for syscalls:sys_enter_prctl: (option==0xf) && (common_pid != 3859 && common_pid != 2757)

    We still need to allow using plain '-e prctl' and have this turn into
    creating a 'syscalls:sys_enter_prctl' event so that the filter can be
    applied only to it as right now '-e prctl' ends up using the
    'raw_syscalls:sys_enter/sys_exit'.

    The end goal is to have something like:

    # perf trace -e prctl/option==SET_NAME/

    And have that use tracepoint filters or eBPF ones.

    Cc: Adrian Hunter
    Cc: Christian Brauner
    Cc: Jiri Olsa
    Cc: Mike Christie
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • So that we can use it with strtoul, allowing string to number
    conversions in filter expressions.

    Cc: Adrian Hunter
    Cc: Christian Brauner
    Cc: Jiri Olsa
    Cc: Mike Christie
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To get the changes in:

    8d19f1c8e193 ("prctl: PR_{G,S}ET_IO_FLUSHER to support controlling memory reclaim")

    Which ends up having this effect in tooling, i.e. the addition of the
    support to those prctl's options:

    $ tools/perf/trace/beauty/prctl_option.sh > before
    $ cp include/uapi/linux/prctl.h tools/include/uapi/linux/prctl.h
    $ git diff
    diff --git a/tools/include/uapi/linux/prctl.h b/tools/include/uapi/linux/prctl.h
    index 7da1b37b27aa..07b4f8131e36 100644
    --- a/tools/include/uapi/linux/prctl.h
    +++ b/tools/include/uapi/linux/prctl.h
    @@ -234,4 +234,8 @@ struct prctl_mm_map {
    #define PR_GET_TAGGED_ADDR_CTRL 56
    # define PR_TAGGED_ADDR_ENABLE (1UL << 0)

    +/* Control reclaim behavior when allocating memory */
    +#define PR_SET_IO_FLUSHER 57
    +#define PR_GET_IO_FLUSHER 58
    +
    #endif /* _LINUX_PRCTL_H */
    $ tools/perf/trace/beauty/prctl_option.sh > after
    $ diff -u before after
    --- before 2020-02-11 15:24:35.339289912 -0300
    +++ after 2020-02-11 15:24:56.319711315 -0300
    @@ -51,6 +51,8 @@
    [54] = "PAC_RESET_KEYS",
    [55] = "SET_TAGGED_ADDR_CTRL",
    [56] = "GET_TAGGED_ADDR_CTRL",
    + [57] = "SET_IO_FLUSHER",
    + [58] = "GET_IO_FLUSHER",
    };
    static const char *prctl_set_mm_options[] = {
    [1] = "START_CODE",
    $

    Cc: Adrian Hunter
    Cc: Christian Brauner
    Cc: Jiri Olsa
    Cc: Mike Christie
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • To get the changes in:

    3e3c8ca5a351 ("arm64: Move __ARCH_WANT_SYS_CLONE3 definition to uapi headers")

    Silencing this tools/perf/ build warning:

    Warning: Kernel ABI header at 'tools/arch/arm64/include/uapi/asm/unistd.h' differs from latest version at 'arch/arm64/include/uapi/asm/unistd.h'
    diff -u tools/arch/arm64/include/uapi/asm/unistd.h arch/arm64/include/uapi/asm/unistd.h

    Which will probably end up enabling the use of "clone3" in 'perf trace -e',
    haven't checked the build with this change on an arm64 system.

    Cc: Adrian Hunter
    Cc: Amanieu d'Antras
    Cc: Christian Brauner
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • So the kmaps pointer setup is centralized and we do not need to update
    it in all those places (2 current places and few more missing) after
    calling maps__insert().

    Reported-by: Ravi Bangoria
    Signed-off-by: Jiri Olsa
    Tested-by: Ravi Bangoria
    Tested-by: Kim Phillips
    Cc: Alexander Shishkin
    Cc: Michael Petlan
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20200210143218.24948-5-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • The map__clone() function can be called on kernel maps as well, so it
    needs to duplicate the whole kmap data.

    Reported-by: Ravi Bangoria
    Signed-off-by: Jiri Olsa
    Tested-by: Ravi Bangoria
    Tested-by: Kim Phillips
    Cc: Alexander Shishkin
    Cc: Michael Petlan
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20200210143218.24948-4-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • We add ksymbol map into machine->kmaps, so it needs to be created as
    'struct kmap', which is dependent on its dso having kernel type.

    Reported-by: Ravi Bangoria
    Signed-off-by: Jiri Olsa
    Tested-by: Ravi Bangoria
    Tested-by: Kim Phillips
    Cc: Alexander Shishkin
    Cc: Michael Petlan
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20200210200847.GA36715@krava
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • We add kernel module map into machine->kmaps, so it needs to be created
    as 'struct kmap', which is dependent on its dso having kernel type.

    Reported-by: Ravi Bangoria
    Signed-off-by: Jiri Olsa
    Tested-by: Kim Phillips
    Tested-by: Ravi Bangoria
    Cc: Alexander Shishkin
    Cc: Michael Petlan
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20200210143218.24948-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • …pick up openat2 and pidfd_getfd

    fddb5d430ad9 ("open: introduce openat2(2) syscall")
    9a2cef09c801 ("arch: wire up pidfd_getfd syscall")

    We also need to grab a copy of uapi/linux/openat2.h since it is now
    needed by fcntl.h, add it to tools/perf/check_headers.h.

    $ diff -u tools/perf/arch/x86/entry/syscalls/syscall_64.tbl arch/x86/entry/syscalls/syscall_64.tbl
    --- tools/perf/arch/x86/entry/syscalls/syscall_64.tbl 2019-12-20 16:43:57.662429958 -0300
    +++ arch/x86/entry/syscalls/syscall_64.tbl 2020-02-10 16:36:22.070012468 -0300
    @@ -357,6 +357,8 @@
    433 common fspick __x64_sys_fspick
    434 common pidfd_open __x64_sys_pidfd_open
    435 common clone3 __x64_sys_clone3/ptregs
    +437 common openat2 __x64_sys_openat2
    +438 common pidfd_getfd __x64_sys_pidfd_getfd

    #
    # x32-specific system call numbers start at 512 to avoid cache impact
    $

    Update tools/'s copy of that file:

    $ cp arch/x86/entry/syscalls/syscall_64.tbl tools/perf/arch/x86/entry/syscalls/syscall_64.tbl

    See the result:

    $ diff -u /tmp/build/perf/arch/x86/include/generated/asm/syscalls_64.c.before /tmp/build/perf/arch/x86/include/generated/asm/syscalls_64.c
    --- /tmp/build/perf/arch/x86/include/generated/asm/syscalls_64.c.before 2020-02-10 16:42:59.010636041 -0300
    +++ /tmp/build/perf/arch/x86/include/generated/asm/syscalls_64.c 2020-02-10 16:43:24.149958337 -0300
    @@ -346,5 +346,7 @@
    [433] = "fspick",
    [434] = "pidfd_open",
    [435] = "clone3",
    + [437] = "openat2",
    + [438] = "pidfd_getfd",
    };
    -#define SYSCALLTBL_x86_64_MAX_ID 435
    +#define SYSCALLTBL_x86_64_MAX_ID 438
    $

    Now one can use:

    perf trace -e openat2,pidfd_getfd

    To get just those syscalls or use in things like:

    perf trace -e open*

    To get all the open variant (open, openat, openat2, etc) or:

    perf trace pidfd*

    To get the pidfd syscalls.

    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Aleksa Sarai <cyphar@cyphar.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Sargun Dhillon <sargun@sargun.me>
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

    Arnaldo Carvalho de Melo
     

11 Feb, 2020

6 commits

  • Suppress non-error messages when applying new bootconfig
    to initrd image. To enable it, replace printf for error
    message with pr_err() macro.
    This also adds a testcase for this fix.

    Link: http://lkml.kernel.org/r/158125351377.16911.13283712972275131160.stgit@devnote2

    Reported-by: Michael Ellerman
    Tested-by: Michael Ellerman
    Signed-off-by: Masami Hiramatsu
    Signed-off-by: Steven Rostedt (VMware)

    Masami Hiramatsu
     
  • To reduce the large static array from kernel data, allocate
    xbc_nodes array dynamically only if the kernel loads a
    bootconfig.

    Note that this also add dummy memblock.h for user-spacae
    bootconfig tool.

    Link: http://lkml.kernel.org/r/158108569699.3187.6512834527603883707.stgit@devnote2

    Signed-off-by: Masami Hiramatsu
    Signed-off-by: Steven Rostedt (VMware)

    Masami Hiramatsu
     
  • Use the more optimized strlist implementation to do the idle function
    lookup.

    Signed-off-by: Kim Phillips
    Acked-by: Song Liu
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Cong Wang
    Cc: Davidlohr Bueso
    Cc: Jin Yao
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Mark Rutland
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20200210163147.25358-1-kim.phillips@amd.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Kim Phillips
     
  • The "acpi_idle_do_entry", "acpi_processor_ffh_cstate_enter", and
    "idle_cpu" symbols appear in 'perf top' output, at least on AMD systems.

    Add them to perf's idle_symbols list, so they don't dominate 'perf top'
    output.

    Signed-off-by: Kim Phillips
    Acked-by: Jiri Olsa
    Acked-by: Song Liu
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Cong Wang
    Cc: Davidlohr Bueso
    Cc: Jin Yao
    Cc: Kan Liang
    Cc: Mark Rutland
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20200207230613.26709-2-kim.phillips@amd.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Kim Phillips
     
  • For data collected on machines with front end stalled cycles supported,
    such as found on modern AMD CPU families, commit 146540fb545b ("perf
    stat: Always separate stalled cycles per insn") introduces a new line in
    CSV output with a leading comma that upsets some automated scripts.
    Scripts have to use "-e ex_ret_instr" to work around this issue, after
    upgrading to a version of perf with that commit.

    We could add "if (have_frontend_stalled && !config->csv_sep)" to the not
    (total && avg) else clause, to emphasize that CSV users are usually
    scripts, and are written to do only what is needed, i.e., they wouldn't
    typically invoke "perf stat" without specifying an explicit event list.

    But - let alone CSV output - why should users now tolerate a constant
    0-reporting extra line in regular terminal output?:

    BEFORE:

    $ sudo perf stat --all-cpus -einstructions,cycles -- sleep 1

    Performance counter stats for 'system wide':

    181,110,981 instructions # 0.58 insn per cycle
    # 0.00 stalled cycles per insn
    309,876,469 cycles

    1.002202582 seconds time elapsed

    The user would not like to see the now permanent:

    "0.00 stalled cycles per insn"

    line fixture, as it gives no useful information.

    So this patch removes the printing of the zeroed stalled cycles line
    altogether, almost reverting the very original commit fb4605ba47e7
    ("perf stat: Check for frontend stalled for metrics"), which seems like
    it was written to normalize --metric-only column output of common Intel
    machines at the time: modern Intel machines have ceased to support the
    genericised frontend stalled metrics AFAICT.

    AFTER:

    $ sudo perf stat --all-cpus -einstructions,cycles -- sleep 1

    Performance counter stats for 'system wide':

    244,071,432 instructions # 0.69 insn per cycle
    355,353,490 cycles

    1.001862516 seconds time elapsed

    Output behaviour when stalled cycles is indeed measured is not affected
    (BEFORE == AFTER):

    $ sudo perf stat --all-cpus -einstructions,cycles,stalled-cycles-frontend -- sleep 1

    Performance counter stats for 'system wide':

    247,227,799 instructions # 0.63 insn per cycle
    # 0.26 stalled cycles per insn
    394,745,636 cycles
    63,194,485 stalled-cycles-frontend # 16.01% frontend cycles idle

    1.002079770 seconds time elapsed

    Fixes: 146540fb545b ("perf stat: Always separate stalled cycles per insn")
    Signed-off-by: Kim Phillips
    Acked-by: Andi Kleen
    Acked-by: Jiri Olsa
    Acked-by: Song Liu
    Cc: Alexander Shishkin
    Cc: Cong Wang
    Cc: Davidlohr Bueso
    Cc: Jin Yao
    Cc: Kan Liang
    Cc: Mark Rutland
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20200207230613.26709-1-kim.phillips@amd.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Kim Phillips
     
  • Since printk() wrapper macro uses __VA_ARGS__ without "##" prefix, it causes
    a build error if there is no variable arguments (e.g. only fmt is
    specified.) To fix this error, use ##__VA_ARGS__ instead of __VAR_ARGS__.

    Link: http://lkml.kernel.org/r/158108370130.2758.10893830923800978011.stgit@devnote2

    Fixes: 950313ebf79c ("tools: bootconfig: Add bootconfig command")
    Reported-by: Michael Ellerman
    Tested-by: Michael Ellerman
    Signed-off-by: Masami Hiramatsu
    Signed-off-by: Steven Rostedt (VMware)

    Masami Hiramatsu
     

10 Feb, 2020

1 commit

  • Pull perf fixes from Thomas Gleixner:
    "A set of fixes and improvements for the perf subsystem:

    Kernel fixes:

    - Install cgroup events to the correct CPU context to prevent a
    potential list double add

    - Prevent an integer underflow in the perf mlock accounting

    - Add a missing prototype for arch_perf_update_userpage()

    Tooling:

    - Add a missing unlock in the error path of maps__insert() in perf
    maps.

    - Fix the build with the latest libbfd

    - Fix the perf parser so it does not delete parse event terms, which
    caused a regression for using perf with the ARM CoreSight as the
    sink configuration was missing due to the deletion.

    - Fix the double free in the perf CPU map merging test case

    - Add the missing ustring support for the perf probe command"

    * tag 'perf-urgent-2020-02-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf maps: Add missing unlock to maps__insert() error case
    perf probe: Add ustring support for perf probe command
    perf: Make perf able to build with latest libbfd
    perf test: Fix test case Merge cpu map
    perf parse: Copy string to perf_evsel_config_term
    perf parse: Refactor 'struct perf_evsel_config_term'
    kernel/events: Add a missing prototype for arch_perf_update_userpage()
    perf/cgroups: Install cgroup events to correct cpuctx
    perf/core: Fix mlock accounting in perf_mmap()

    Linus Torvalds
     

09 Feb, 2020

1 commit

  • Pull networking fixes from David Miller:

    1) Unbalanced locking in mwifiex_process_country_ie, from Brian Norris.

    2) Fix thermal zone registration in iwlwifi, from Andrei
    Otcheretianski.

    3) Fix double free_irq in sgi ioc3 eth, from Thomas Bogendoerfer.

    4) Use after free in mptcp, from Florian Westphal.

    5) Use after free in wireguard's root_remove_peer_lists, from Eric
    Dumazet.

    6) Properly access packets heads in bonding alb code, from Eric
    Dumazet.

    7) Fix data race in skb_queue_len(), from Qian Cai.

    8) Fix regression in r8169 on some chips, from Heiner Kallweit.

    9) Fix XDP program ref counting in hv_netvsc, from Haiyang Zhang.

    10) Certain kinds of set link netlink operations can cause a NULL deref
    in the ipv6 addrconf code. Fix from Eric Dumazet.

    11) Don't cancel uninitialized work queue in drop monitor, from Ido
    Schimmel.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (84 commits)
    net: thunderx: use proper interface type for RGMII
    mt76: mt7615: fix max_nss in mt7615_eeprom_parse_hw_cap
    bpf: Improve bucket_log calculation logic
    selftests/bpf: Test freeing sockmap/sockhash with a socket in it
    bpf, sockhash: Synchronize_rcu before free'ing map
    bpf, sockmap: Don't sleep while holding RCU lock on tear-down
    bpftool: Don't crash on missing xlated program instructions
    bpf, sockmap: Check update requirements after locking
    drop_monitor: Do not cancel uninitialized work item
    mlxsw: spectrum_dpipe: Add missing error path
    mlxsw: core: Add validation of hardware device types for MGPIR register
    mlxsw: spectrum_router: Clear offload indication from IPv6 nexthops on abort
    selftests: mlxsw: Add test cases for local table route replacement
    mlxsw: spectrum_router: Prevent incorrect replacement of local table routes
    net: dsa: microchip: enable module autoprobe
    ipv6/addrconf: fix potential NULL deref in inet6_set_link_af()
    dpaa_eth: support all modes with rate adapting PHYs
    net: stmmac: update pci platform data to use phy_interface
    net: stmmac: xgmac: fix missing IFF_MULTICAST checki in dwxgmac2_set_filter
    net: stmmac: fix missing IFF_MULTICAST check in dwmac4_set_filter
    ...

    Linus Torvalds
     

08 Feb, 2020

3 commits

  • Daniel Borkmann says:

    ====================
    pull-request: bpf 2020-02-07

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

    We've added 15 non-merge commits during the last 10 day(s) which contain
    a total of 12 files changed, 114 insertions(+), 31 deletions(-).

    The main changes are:

    1) Various BPF sockmap fixes related to RCU handling in the map's tear-
    down code, from Jakub Sitnicki.

    2) Fix macro state explosion in BPF sk_storage map when calculating its
    bucket_log on allocation, from Martin KaFai Lau.

    3) Fix potential BPF sockmap update race by rechecking socket's established
    state under lock, from Lorenz Bauer.

    4) Fix crash in bpftool on missing xlated instructions when kptr_restrict
    sysctl is set, from Toke Høiland-Jørgensen.

    5) Fix i40e's XSK wakeup code to return proper error in busy state and
    various misc fixes in xdpsock BPF sample code, from Maciej Fijalkowski.

    6) Fix the way modifiers are skipped in BTF in the verifier while walking
    pointers to avoid program rejection, from Alexei Starovoitov.

    7) Fix Makefile for runqslower BPF tool to i) rebuild on libbpf changes and
    ii) to fix undefined reference linker errors for older gcc version due to
    order of passed gcc parameters, from Yulia Kartseva and Song Liu.

    8) Fix a trampoline_count BPF kselftest warning about missing braces around
    initializer, from Andrii Nakryiko.

    9) Fix up redundant "HAVE" prefix from large INSN limit kernel probe in
    bpftool, from Michal Rostecki.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Commit 7e81a3530206 ("bpf: Sockmap, ensure sock lock held during tear
    down") introduced sleeping issues inside RCU critical sections and while
    holding a spinlock on sockmap/sockhash tear-down. There has to be at least
    one socket in the map for the problem to surface.

    This adds a test that triggers the warnings for broken locking rules. Not a
    fix per se, but rather tooling to verify the accompanying fixes. Run on a
    VM with 1 vCPU to reproduce the warnings.

    Fixes: 7e81a3530206 ("bpf: Sockmap, ensure sock lock held during tear down")
    Signed-off-by: Jakub Sitnicki
    Signed-off-by: Daniel Borkmann
    Acked-by: John Fastabend
    Link: https://lore.kernel.org/bpf/20200206111652.694507-4-jakub@cloudflare.com

    Jakub Sitnicki
     
  • Turns out the xlated program instructions can also be missing if
    kptr_restrict sysctl is set. This means that the previous fix to check the
    jited_prog_insns pointer was insufficient; add another check of the
    xlated_prog_insns pointer as well.

    Fixes: 5b79bcdf0362 ("bpftool: Don't crash on missing jited insns or ksyms")
    Fixes: cae73f233923 ("bpftool: use bpf_program__get_prog_info_linear() in prog.c:do_dump()")
    Signed-off-by: Toke Høiland-Jørgensen
    Signed-off-by: Daniel Borkmann
    Reviewed-by: Quentin Monnet
    Link: https://lore.kernel.org/bpf/20200206102906.112551-1-toke@redhat.com

    Toke Høiland-Jørgensen