18 Aug, 2019

4 commits

  • Pull Hyper-V fixes from Sasha Levin:

    - A few fixes for the userspace hyper-v tools from Adrian Vladu.

    - A fix for the hyper-v MAINTAINERs entry from Lan Tianyu.

    - Fix for SPDX license identifier in the userspace tools from Nishad
    Kamdar.

    * tag 'hyperv-fixes-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux:
    MAINTAINERS: Fix Hyperv vIOMMU driver file name
    tools: hv: Use the correct style for SPDX License Identifier
    tools: hv: fix typos in toolchain
    tools: hv: fix KVP and VSS daemons exit code
    tools: hv: fixed Python pep8/flake8 warnings for lsvmbus

    Linus Torvalds
     
  • Fix typos in the HyperV toolchain.

    Signed-off-by: Adrian Vladu

    Cc: "K. Y. Srinivasan"
    Cc: Haiyang Zhang
    Cc: Stephen Hemminger
    Cc: Sasha Levin
    Cc: Alessandro Pilotti
    Signed-off-by: Sasha Levin

    Adrian Vladu
     
  • HyperV KVP and VSS daemons should exit with 0 when the '--help'
    or '-h' flags are used.

    Signed-off-by: Adrian Vladu

    Cc: "K. Y. Srinivasan"
    Cc: Haiyang Zhang
    Cc: Stephen Hemminger
    Cc: Sasha Levin
    Cc: Alessandro Pilotti
    Signed-off-by: Sasha Levin

    Adrian Vladu
     
  • Fixed pep8/flake8 python style code for lsvmbus tool.

    The TAB indentation was on purpose ignored (pep8 rule W191) to make
    sure the code is complying with the Linux code guideline.
    The following command doe not show any warnings now:
    pep8 --ignore=W191 lsvmbus
    flake8 --ignore=W191 lsvmbus

    Signed-off-by: Adrian Vladu

    Cc: "K. Y. Srinivasan"
    Cc: Haiyang Zhang
    Cc: Stephen Hemminger
    Cc: Sasha Levin
    Cc: Dexuan Cui
    Cc: Alessandro Pilotti
    Signed-off-by: Sasha Levin

    Adrian Vladu
     

11 Aug, 2019

1 commit

  • Pull perf tooling fixes from Thomas Gleixner:
    "Perf tooling fixes all over the place:

    - Fix the selection of the main thread COMM in db-export

    - Fix the disassemmbly display for BPF in annotate

    - Fix cpumap mask setup in perf ftrace when only one CPU is present

    - Add the missing 'cpu_clk_unhalted.core' event

    - Fix CPU 0 bindings in NUMA benchmarks

    - Fix the module size calculations for s390

    - Handle the gap between kernel end and module start on s390
    correctly

    - Build and typo fixes"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf pmu-events: Fix missing "cpu_clk_unhalted.core" event
    perf annotate: Fix s390 gap between kernel end and module start
    perf record: Fix module size on s390
    perf tools: Fix include paths in ui directory
    perf tools: Fix a typo in a variable name in the Documentation Makefile
    perf cpumap: Fix writing to illegal memory in handling cpumap mask
    perf ftrace: Fix failure to set cpumask when only one cpu is present
    perf db-export: Fix thread__exec_comm()
    perf annotate: Fix printing of unaugmented disassembled instructions from BPF
    perf bench numa: Fix cpu0 binding

    Linus Torvalds
     

10 Aug, 2019

1 commit

  • Pull kvm fixes from Paolo Bonzini:
    "Bugfixes (arm and x86) and cleanups"

    * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    selftests: kvm: Adding config fragments
    KVM: selftests: Update gitignore file for latest changes
    kvm: remove unnecessary PageReserved check
    KVM: arm/arm64: vgic: Reevaluate level sensitive interrupts on enable
    KVM: arm: Don't write junk to CP15 registers on reset
    KVM: arm64: Don't write junk to sysregs on reset
    KVM: arm/arm64: Sync ICH_VMCR_EL2 back when about to block
    x86: kvm: remove useless calls to kvm_para_available
    KVM: no need to check return value of debugfs_create functions
    KVM: remove kvm_arch_has_vcpu_debugfs()
    KVM: Fix leak vCPU's VMCS value into other pCPU
    KVM: Check preempted_in_kernel for involuntary preemption
    KVM: LAPIC: Don't need to wakeup vCPU twice afer timer fire
    arm64: KVM: hyp: debug-sr: Mark expected switch fall-through
    KVM: arm64: Update kvm_arm_exception_class and esr_class_str for new EC
    KVM: arm: vgic-v3: Mark expected switch fall-through
    arm64: KVM: regmap: Fix unexpected switch fall-through
    KVM: arm/arm64: Introduce kvm_pmu_vcpu_init() to setup PMU counter index

    Linus Torvalds
     

09 Aug, 2019

12 commits

  • …t/kvmarm/kvmarm into HEAD

    KVM/arm fixes for 5.3

    - A bunch of switch/case fall-through annotation, fixing one actual bug
    - Fix PMU reset bug
    - Add missing exception class debug strings

    Paolo Bonzini
     
  • selftests kvm test cases need pre-required kernel configs for the test
    to get pass.

    Signed-off-by: Naresh Kamboju
    Signed-off-by: Paolo Bonzini

    Naresh Kamboju
     
  • The kvm_create_max_vcpus test has been moved to the main directory,
    and sync_regs_test is now available on s390x, too.

    Signed-off-by: Thomas Huth
    Acked-by: Shuah Khan
    Signed-off-by: Paolo Bonzini

    Thomas Huth
     
  • The events defined in pmu-events JSON are parsed and added into perf
    tool. For fixed counters, we handle the encodings between JSON and perf
    by using a static array fixed[].

    But the fixed[] has missed an important event "cpu_clk_unhalted.core".

    For example, on the Tremont platform,

    [root@localhost ~]# perf stat -e cpu_clk_unhalted.core -a
    event syntax error: 'cpu_clk_unhalted.core'
    \___ parser error

    With this patch, the event cpu_clk_unhalted.core can be parsed.

    [root@localhost perf]# ./perf stat -e cpu_clk_unhalted.core -a -vvv
    ------------------------------------------------------------
    perf_event_attr:
    type 4
    size 112
    config 0x3c
    sample_type IDENTIFIER
    read_format TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
    disabled 1
    inherit 1
    exclude_guest 1
    ------------------------------------------------------------
    ...

    Signed-off-by: Jin Yao
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jin Yao
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20190729072755.2166-1-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Jin Yao
     
  • During execution of command 'perf top' the error message:

    Not enough memory for annotating '__irf_end' symbol!)

    is emitted from this call sequence:
    __cmd_top
    perf_top__mmap_read
    perf_top__mmap_read_idx
    perf_event__process_sample
    hist_entry_iter__add
    hist_iter__top_callback
    perf_top__record_precise_ip
    hist_entry__inc_addr_samples
    symbol__inc_addr_samples
    symbol__get_annotation
    symbol__alloc_hist

    In this function the size of symbol __irf_end is calculated. The size of
    a symbol is the difference between its start and end address.

    When the symbol was read the first time, its start and end was set to:

    symbol__new: __irf_end 0xe954d0-0xe954d0

    which is correct and maps with /proc/kallsyms:

    root@s8360046:~/linux-4.15.0/tools/perf# fgrep _irf_end /proc/kallsyms
    0000000000e954d0 t __irf_end
    root@s8360046:~/linux-4.15.0/tools/perf#

    In function symbol__alloc_hist() the end of symbol __irf_end is

    symbol__alloc_hist sym:__irf_end start:0xe954d0 end:0x3ff80045a8

    which is identical with the first module entry in /proc/kallsyms

    This results in a symbol size of __irf_req for histogram analyses of
    70334140059072 bytes and a malloc() for this requested size fails.

    The root cause of this is function
    __dso__load_kallsyms()
    +-> symbols__fixup_end()

    Function symbols__fixup_end() enlarges the last symbol in the kallsyms
    map:

    # fgrep __irf_end /proc/kallsyms
    0000000000e954d0 t __irf_end
    #

    to the start address of the first module:
    # cat /proc/kallsyms | sort | egrep ' [tT] '
    ....
    0000000000e952d0 T __security_initcall_end
    0000000000e954d0 T __initramfs_size
    0000000000e954d0 t __irf_end
    000003ff800045a8 T fc_get_event_number [scsi_transport_fc]
    000003ff800045d0 t store_fc_vport_disable [scsi_transport_fc]
    000003ff800046a8 T scsi_is_fc_rport [scsi_transport_fc]
    000003ff800046d0 t fc_target_setup [scsi_transport_fc]

    On s390 the kernel is located around memory address 0x200, 0x10000 or
    0x100000, depending on linux version. Modules however start some- where
    around 0x3ff xxxx xxxx.

    This is different than x86 and produces a large gap for which histogram
    allocation fails.

    Fix this by detecting the kernel's last symbol and do no adjustment for
    it. Introduce a weak function and handle s390 specifics.

    Reported-by: Klaus Theurich
    Signed-off-by: Thomas Richter
    Acked-by: Heiko Carstens
    Cc: Hendrik Brueckner
    Cc: Vasily Gorbik
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190724122703.3996-2-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Thomas Richter
     
  • On s390 the modules loaded in memory have the text segment located after
    the GOT and Relocation table. This can be seen with this output:

    [root@m35lp76 perf]# fgrep qeth /proc/modules
    qeth 151552 1 qeth_l2, Live 0x000003ff800b2000
    ...
    [root@m35lp76 perf]# cat /sys/module/qeth/sections/.text
    0x000003ff800b3990
    [root@m35lp76 perf]#

    There is an offset of 0x1990 bytes. The size of the qeth module is
    151552 bytes (0x25000 in hex).

    The location of the GOT/relocation table at the beginning of a module is
    unique to s390.

    commit 203d8a4aa6ed ("perf s390: Fix 'start' address of module's map")
    adjusts the start address of a module in the map structures, but does
    not adjust the size of the modules. This leads to overlapping of module
    maps as this example shows:

    [root@m35lp76 perf] # ./perf report -D
    0 0 0xfb0 [0xa0]: PERF_RECORD_MMAP -1/0: [0x3ff800b3990(0x25000)
    @ 0]: x /lib/modules/.../qeth.ko.xz
    0 0 0x1050 [0xb0]: PERF_RECORD_MMAP -1/0: [0x3ff800d85a0(0x8000)
    @ 0]: x /lib/modules/.../ip6_tables.ko.xz

    The module qeth.ko has an adjusted start address modified to b3990, but
    its size is unchanged and the module ends at 0x3ff800d8990. This end
    address overlaps with the next modules start address of 0x3ff800d85a0.

    When the size of the leading GOT/Relocation table stored in the
    beginning of the text segment (0x1990 bytes) is subtracted from module
    qeth end address, there are no overlaps anymore:

    0x3ff800d8990 - 0x1990 = 0x0x3ff800d7000

    which is the same as

    0x3ff800b2000 + 0x25000 = 0x0x3ff800d7000.

    To fix this issue, also adjust the modules size in function
    arch__fix_module_text_start(). Add another function parameter named size
    and reduce the size of the module when the text segment start address is
    changed.

    Output after:
    0 0 0xfb0 [0xa0]: PERF_RECORD_MMAP -1/0: [0x3ff800b3990(0x23670)
    @ 0]: x /lib/modules/.../qeth.ko.xz
    0 0 0x1050 [0xb0]: PERF_RECORD_MMAP -1/0: [0x3ff800d85a0(0x7a60)
    @ 0]: x /lib/modules/.../ip6_tables.ko.xz

    Reported-by: Stefan Liebler
    Signed-off-by: Thomas Richter
    Acked-by: Heiko Carstens
    Cc: Hendrik Brueckner
    Cc: Vasily Gorbik
    Cc: stable@vger.kernel.org
    Fixes: 203d8a4aa6ed ("perf s390: Fix 'start' address of module's map")
    Link: http://lkml.kernel.org/r/20190724122703.3996-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Thomas Richter
     
  • These paths point to the wrong location but still work because they get
    picked up by a -I flag that happens to direct to the correct file. Fix
    paths to point to the correct location without -I flags.

    Signed-off-by: Ian Rogers
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/20190731225441.233800-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Ian Rogers
     
  • This patch fix a spelling typo in a variable name in the Documentation Makefile.

    Signed-off-by: Masanari Iida
    Reviewed-by: Mukesh Ojha
    Cc: Alexander Shishkin
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20190801032812.25018-1-standby24x7@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Masanari Iida
     
  • cpu_map__snprint_mask() would write to illegal memory pointed by
    zalloc(0) when there is only one cpu.

    This patch fixes the calculation and adds sanity check against the input
    parameters.

    Signed-off-by: He Zhe
    Cc: Alexander Shishkin
    Cc: Alexey Budankov
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Fixes: 4400ac8a9a90 ("perf cpumap: Introduce cpu_map__snprint_mask()")
    Link: http://lkml.kernel.org/r/1564734592-15624-2-git-send-email-zhe.he@windriver.com
    Signed-off-by: Arnaldo Carvalho de Melo

    He Zhe
     
  • The buffer containing the string used to set cpumask is overwritten at
    the end of the string later in cpu_map__snprint_mask due to not enough
    memory space, when there is only one cpu.

    And thus causes the following failure:

    $ perf ftrace ls
    failed to reset ftrace
    $

    This patch fixes the calculation of the cpumask string size.

    Signed-off-by: He Zhe
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Alexey Budankov
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Fixes: dc23103278c5 ("perf ftrace: Add support for -a and -C option")
    Link: http://lkml.kernel.org/r/1564734592-15624-1-git-send-email-zhe.he@windriver.com
    Signed-off-by: Arnaldo Carvalho de Melo

    He Zhe
     
  • Threads synthesized from /proc have comms with a start time of zero, and
    not marked as "exec". Currently, there can be 2 such comms. The first is
    created by processing a synthesized fork event and is set to the
    parent's comm string, and the second by processing a synthesized comm
    event set to the thread's current comm string.

    In the absence of an "exec" comm, thread__exec_comm() picks the last
    (oldest) comm, which, in the case above, is the parent's comm string.
    For a main thread, that is very probably wrong. Use the second-to-last
    in that case.

    This affects only db-export because it is the only user of
    thread__exec_comm().

    Example:

    $ sudo perf record -a -o pt-a-sleep-1 -e intel_pt//u -- sleep 1
    $ sudo chown ahunter pt-a-sleep-1

    Before:

    $ perf script -i pt-a-sleep-1 --itrace=bep -s tools/perf/scripts/python/export-to-sqlite.py pt-a-sleep-1.db branches calls
    $ sqlite3 -header -column pt-a-sleep-1.db 'select * from comm_threads_view'
    comm_id command thread_id pid tid
    ---------- ---------- ---------- ---------- ----------
    1 swapper 1 0 0
    2 rcu_sched 2 10 10
    3 kthreadd 3 78 78
    5 sudo 4 15180 15180
    5 sudo 5 15180 15182
    7 kworker/4: 6 10335 10335
    8 kthreadd 7 55 55
    10 systemd 8 865 865
    10 systemd 9 865 875
    13 perf 10 15181 15181
    15 sleep 10 15181 15181
    16 kworker/3: 11 14179 14179
    17 kthreadd 12 29376 29376
    19 systemd 13 746 746
    21 systemd 14 401 401
    23 systemd 15 879 879
    23 systemd 16 879 945
    25 kthreadd 17 556 556
    27 kworker/u1 18 14136 14136
    28 kworker/u1 19 15021 15021
    29 kthreadd 20 509 509
    31 systemd 21 836 836
    31 systemd 22 836 967
    33 systemd 23 1148 1148
    33 systemd 24 1148 1163
    35 kworker/2: 25 17988 17988
    36 kworker/0: 26 13478 13478

    After:

    $ perf script -i pt-a-sleep-1 --itrace=bep -s tools/perf/scripts/python/export-to-sqlite.py pt-a-sleep-1b.db branches calls
    $ sqlite3 -header -column pt-a-sleep-1b.db 'select * from comm_threads_view'
    comm_id command thread_id pid tid
    ---------- ---------- ---------- ---------- ----------
    1 swapper 1 0 0
    2 rcu_sched 2 10 10
    3 kswapd0 3 78 78
    4 perf 4 15180 15180
    4 perf 5 15180 15182
    6 kworker/4: 6 10335 10335
    7 kcompactd0 7 55 55
    8 accounts-d 8 865 865
    8 accounts-d 9 865 875
    10 perf 10 15181 15181
    12 sleep 10 15181 15181
    13 kworker/3: 11 14179 14179
    14 kworker/1: 12 29376 29376
    15 haveged 13 746 746
    16 systemd-jo 14 401 401
    17 NetworkMan 15 879 879
    17 NetworkMan 16 879 945
    19 irq/131-iw 17 556 556
    20 kworker/u1 18 14136 14136
    21 kworker/u1 19 15021 15021
    22 kworker/u1 20 509 509
    23 thermald 21 836 836
    23 thermald 22 836 967
    25 unity-sett 23 1148 1148
    25 unity-sett 24 1148 1163
    27 kworker/2: 25 17988 17988
    28 kworker/0: 26 13478 13478

    Signed-off-by: Adrian Hunter
    Cc: Jiri Olsa
    Cc: stable@vger.kernel.org
    Fixes: 65de51f93ebf ("perf tools: Identify which comms are from exec")
    Link: http://lkml.kernel.org/r/20190808064823.14846-1-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     
  • The code to disassemble BPF programs uses binutil's disassembling
    routines, and those use in turn fprintf to print to a memstream FILE,
    adding a newline at the end of each line, which ends up confusing the
    TUI routines called from:

    annotate_browser__write()
    annotate_line__write()
    annotate_browser__printf()
    ui_browser__vprintf()
    SLsmg_vprintf()

    The SLsmg_vprintf() function in the slang library gets confused with the
    terminating newline, so make the disasm_line__parse() function that
    parses the lines produced by the BPF specific disassembler (that uses
    binutil's libopcodes) and the lines produced by the objdump based
    disassembler used for everything else (and that doesn't adds this
    terminating newline) trim the end of the line in addition of the
    beginning.

    This way when disasm_line->ops.raw, i.e. for instructions without a
    special scnprintf() method, we'll not have that \n getting in the way of
    filling the screen right after the instruction with spaces to avoid
    leaving what was on the screen before and thus garbling the annotation
    screen, breaking scrolling, etc.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Song Liu
    Fixes: 6987561c9e86 ("perf annotate: Enable annotation of BPF programs")
    Link: https://lkml.kernel.org/n/tip-unbr5a5efakobfr6rhxq99ta@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

07 Aug, 2019

2 commits

  • Pull networking fixes from David Miller:
    "Yeah I should have sent a pull request last week, so there is a lot
    more here than usual:

    1) Fix memory leak in ebtables compat code, from Wenwen Wang.

    2) Several kTLS bug fixes from Jakub Kicinski (circular close on
    disconnect etc.)

    3) Force slave speed check on link state recovery in bonding 802.3ad
    mode, from Thomas Falcon.

    4) Clear RX descriptor bits before assigning buffers to them in
    stmmac, from Jose Abreu.

    5) Several missing of_node_put() calls, mostly wrt. for_each_*() OF
    loops, from Nishka Dasgupta.

    6) Double kfree_skb() in peak_usb can driver, from Stephane Grosjean.

    7) Need to hold sock across skb->destructor invocation, from Cong
    Wang.

    8) IP header length needs to be validated in ipip tunnel xmit, from
    Haishuang Yan.

    9) Use after free in ip6 tunnel driver, also from Haishuang Yan.

    10) Do not use MSI interrupts on r8169 chips before RTL8168d, from
    Heiner Kallweit.

    11) Upon bridge device init failure, we need to delete the local fdb.
    From Nikolay Aleksandrov.

    12) Handle erros from of_get_mac_address() properly in stmmac, from
    Martin Blumenstingl.

    13) Handle concurrent rename vs. dump in netfilter ipset, from Jozsef
    Kadlecsik.

    14) Setting NETIF_F_LLTX on mac80211 causes complete breakage with
    some devices, so revert. From Johannes Berg.

    15) Fix deadlock in rxrpc, from David Howells.

    16) Fix Kconfig deps of enetc driver, we must have PHYLIB. From Yue
    Haibing.

    17) Fix mvpp2 crash on module removal, from Matteo Croce.

    18) Fix race in genphy_update_link, from Heiner Kallweit.

    19) bpf_xdp_adjust_head() stopped working with generic XDP when we
    fixes generic XDP to support stacked devices properly, fix from
    Jesper Dangaard Brouer.

    20) Unbalanced RCU locking in rt6_update_exception_stamp_rt(), from
    David Ahern.

    21) Several memory leaks in new sja1105 driver, from Vladimir Oltean"

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (214 commits)
    net: dsa: sja1105: Fix memory leak on meta state machine error path
    net: dsa: sja1105: Fix memory leak on meta state machine normal path
    net: dsa: sja1105: Really fix panic on unregistering PTP clock
    net: dsa: sja1105: Use the LOCKEDS bit for SJA1105 E/T as well
    net: dsa: sja1105: Fix broken learning with vlan_filtering disabled
    net: dsa: qca8k: Add of_node_put() in qca8k_setup_mdio_bus()
    net: sched: sample: allow accessing psample_group with rtnl
    net: sched: police: allow accessing police->params with rtnl
    net: hisilicon: Fix dma_map_single failed on arm64
    net: hisilicon: fix hip04-xmit never return TX_BUSY
    net: hisilicon: make hip04_tx_reclaim non-reentrant
    tc-testing: updated vlan action tests with batch create/delete
    net sched: update vlan action for batched events operations
    net: stmmac: tc: Do not return a fragment entry
    net: stmmac: Fix issues when number of Queues >= 4
    net: stmmac: xgmac: Fix XGMAC selftests
    be2net: disable bh with spin_lock in be_process_mcc
    net: cxgb3_main: Fix a resource leak in a error path in 'init_one()'
    net: ethernet: sun4i-emac: Support phy-handle property for finding PHYs
    net: bridge: move default pvid init/deinit to NETDEV_REGISTER/UNREGISTER
    ...

    Linus Torvalds
     
  • Update TDC tests with cases varifying ability of TC to install or delete
    batches of vlan actions.

    Signed-off-by: Roman Mashak
    Signed-off-by: David S. Miller

    Roman Mashak
     

06 Aug, 2019

5 commits

  • Make sure that shutdown never works, and at the same time document how
    I tested to came to the conclusion that currently reuse is not possible.

    Signed-off-by: Jakub Kicinski
    Signed-off-by: David S. Miller

    Jakub Kicinski
     
  • …/git/shuah/linux-kselftest

    Pull kselftest fixes from Shuah Khan:
    "A fix to the Kselftest framework to save and restore errno and a fix
    to livepatch to push and pop dynamic debug config"

    * tag 'linux-kselftest-5.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftests/livepatch: push and pop dynamic debug config
    kselftest: save-and-restore errno to allow for %m formatting

    Linus Torvalds
     
  • Given the increasing number of BPF selftests, it makes sense to
    reduce the time to execute these tests. The ping parameters are
    adjusted to reduce the time from measures 9 sec to approx 2.8 sec.

    Signed-off-by: Jesper Dangaard Brouer
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     
  • In-order to test both native-XDP (xdpdrv) and generic-XDP (xdpgeneric)
    create two wrapper test scripts, that start the test_xdp_vlan.sh script
    with these modes.

    Signed-off-by: Jesper Dangaard Brouer
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     
  • Change BPF selftest test_xdp_vlan.sh to (default) use generic XDP.

    This selftest was created together with a fix for generic XDP, in commit
    297249569932 ("net: fix generic XDP to handle if eth header was
    mangled"). And was suppose to catch if generic XDP was broken again.

    The tests are using veth and assumed that veth driver didn't support
    native driver XDP, thus it used the (ip link set) 'xdp' attach that fell
    back to generic-XDP. But veth gained native-XDP support in 948d4f214fde
    ("veth: Add driver XDP"), which caused this test script to use
    native-XDP.

    Fixes: 948d4f214fde ("veth: Add driver XDP")
    Fixes: 97396ff0bc2d ("selftests/bpf: add XDP selftests for modifying and popping VLAN headers")
    Signed-off-by: Jesper Dangaard Brouer
    Signed-off-by: David S. Miller

    Jesper Dangaard Brouer
     

04 Aug, 2019

1 commit

  • Pull perf tooling fixes from Thomas Gleixner:
    "A set of updates for perf tools and documentation:

    perf header:
    - Prevent a division by zero
    - Deal with an uninitialized warning proper

    libbpf:
    - Fix the missiong __WORDSIZE definition for musl & al

    UAPI headers:
    - Synchronize kernel headers

    Documentation:
    - Fix the memory units for perf.data size"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    libbpf: fix missing __WORDSIZE definition
    perf tools: Fix perf.data documentation units for memory size
    perf header: Fix use of unitialized value warning
    perf header: Fix divide by zero error if f_header.attr_size==0
    tools headers UAPI: Sync if_link.h with the kernel
    tools headers UAPI: Sync sched.h with the kernel
    tools headers UAPI: Sync usbdevice_fs.h with the kernels to get new ioctl
    tools perf beauty: Fix usbdevfs_ioctl table generator to handle _IOC()
    tools headers UAPI: Update tools's copy of drm.h headers
    tools headers UAPI: Update tools's copy of mman.h headers
    tools headers UAPI: Update tools's copy of kvm.h headers
    tools include UAPI: Sync x86's syscalls_64.tbl and generic unistd.h to pick up clone3 and pidfd_open

    Linus Torvalds
     

03 Aug, 2019

1 commit

  • On my laptop most memcg kselftests were being skipped because it claimed
    cgroup v2 hierarchy wasn't mounted, but this isn't correct. Instead, it
    seems current systemd HEAD mounts it with the name "cgroup2" instead of
    "cgroup":

    % grep cgroup /proc/mounts
    cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0

    I can't think of a reason to need to check fs_spec explicitly
    since it's arbitrary, so we can just rely on fs_vfstype.

    After these changes, `make TARGETS=cgroup kselftest` actually runs the
    cgroup v2 tests in more cases.

    Link: http://lkml.kernel.org/r/20190723210737.GA487@chrisdown.name
    Signed-off-by: Chris Down
    Cc: Johannes Weiner
    Cc: Tejun Heo
    Cc: Roman Gushchin
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Chris Down
     

01 Aug, 2019

2 commits

  • Michael reported an issue with perf bench numa failing with binding to
    cpu0 with '-0' option.

    # perf bench numa mem -p 3 -t 1 -P 512 -s 100 -zZcm0 --thp 1 -M 1 -ddd
    # Running 'numa/mem' benchmark:

    # Running main, "perf bench numa numa-mem -p 3 -t 1 -P 512 -s 100 -zZcm0 --thp 1 -M 1 -ddd"
    binding to node 0, mask: 0000000000000001 => -1
    perf: bench/numa.c:356: bind_to_memnode: Assertion `!(ret)' failed.
    Aborted (core dumped)

    This happens when the cpu0 is not part of node0, which is the benchmark
    assumption and we can see that's not the case for some powerpc servers.

    Using correct node for cpu0 binding.

    Reported-by: Michael Petlan
    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Satheesh Rajendran
    Link: http://lkml.kernel.org/r/20190801142642.28004-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • Build bot reports some recent TLS tests are failing
    with CONFIG_TLS=n. Correct the expected return code
    and skip TLS installation if not supported.

    Tested with CONFIG_TLS=n and CONFIG_TLS=m.

    Reported-by: kernel test robot
    Fixes: cf32526c8842 ("selftests/tls: add a test for ULP but no keys")
    Fixes: 65d41fb317c6 ("selftests/tls: add a bidirectional test")
    Signed-off-by: Jakub Kicinski
    Signed-off-by: David S. Miller

    Jakub Kicinski
     

31 Jul, 2019

4 commits

  • The livepatching self-tests tweak the dynamic debug config to verify
    the kernel log during the tests. Enhance set_dynamic_debug() so that
    the config changes are restored when the script exits.

    Note this functionality needs to keep in sync with:
    - dynamic_debug input/output formatting
    - functions affected by set_dynamic_debug()

    For example, push_dynamic_debug() transforms:
    kernel/livepatch/transition.c:530 [livepatch]klp_init_transition =_ "'%s': initializing %s transition\012"
    to the following:
    file kernel/livepatch/transition.c line 530 =_

    Signed-off-by: Joe Lawrence
    Tested-by: Petr Mladek
    Signed-off-by: Shuah Khan

    Joe Lawrence
     
  • Previously, using "%m" in a ksft_* format string can result in strange
    output because the errno value wasn't saved before calling other libc
    functions. The solution is to simply save and restore the errno before
    we format the user-supplied format string.

    Signed-off-by: Aleksa Sarai
    Signed-off-by: Shuah Khan

    Aleksa Sarai
     
  • Pull pidfd fixes from Christian Brauner:
    "This makes setting the exit_state in exit_notify() consistent after
    fixing the pidfd polling race pre-rc1. Related to the race fix, this
    adds a WARN_ON() to do_notify_pidfd() to catch any future exit_state
    races.

    Last, this removes an obsolete comment from the pidfd tests"

    * tag 'for-linus-20190730' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
    exit: make setting exit_state consistent
    pidfd: Add warning if exit_state is 0 during notification
    pidfd: remove obsolete comments from test

    Linus Torvalds
     
  • …/git/shuah/linux-kselftest

    Pull kselftest fixes from Shuah Khan:
    "Minor fixes to tests and one major fix to livepatch test to add skip
    handling to avoid false fail reports when livepatch is disabled"

    * tag 'linux-kselftest-5.3-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
    selftests/livepatch: add test skip handling
    selftests: mlxsw: Fix typo in qos_mc_aware.sh
    selftests/x86: fix spelling mistake "FAILT" -> "FAIL"
    selftests: kmod: Fix typo in kmod.sh

    Linus Torvalds
     

30 Jul, 2019

1 commit

  • …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
     

29 Jul, 2019

6 commits

  • Since the introduction of CLONE_PIDFD pidfd_send_signal() is independent
    of CONFIG_PROC_FS.

    Signed-off-by: Christian Brauner

    Christian Brauner
     
  • hashmap.h depends on __WORDSIZE being defined. It is defined by
    glibc/musl in different headers. It's an explicit goal for musl to be
    "non-detectable" at compilation time, so instead include glibc header if
    glibc is explicitly detected and fall back to musl header otherwise.

    Reported-by: Arnaldo Carvalho de Melo
    Signed-off-by: Andrii Nakryiko
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexei Starovoitov
    Cc: Andrii Nakryiko
    Cc: Daniel Borkmann
    Fixes: e3b924224028 ("libbpf: add resizable non-thread safe internal hashmap")
    Link: https://lkml.kernel.org/r/20190718173021.2418606-1-andriin@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Andrii Nakryiko
     
  • The perf.data-file-format documentation incorrectly says the
    HEADER_TOTAL_MEM results are in bytes. The results are in kilobytes
    (perf reads the value from /proc/meminfo)

    Signed-off-by: Vince Weaver
    Cc: Alexander Shishkin
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/alpine.DEB.2.21.1907251155500.22624@macbook-air
    Signed-off-by: Arnaldo Carvalho de Melo

    Vince Weaver
     
  • When building our local version of perf with MSAN (Memory Sanitizer) and
    running the perf record command, MSAN throws a use of uninitialized
    value warning in "tools/perf/util/util.c:333:6".

    This warning stems from the "buf" variable being passed into "write".
    It originated as the variable "ev" with the type union perf_event*
    defined in the "perf_event__synthesize_attr" function in
    "tools/perf/util/header.c".

    In the "perf_event__synthesize_attr" function they allocate space with a malloc
    call using ev, then go on to only assign some of the member variables before
    passing "ev" on as a parameter to the "process" function therefore "ev"
    contains uninitialized memory. Changing the malloc call to zalloc to initialize
    all the members of "ev" which gets rid of the warning.

    To reproduce this warning, build perf by running:
    make -C tools/perf CLANG=1 CC=clang EXTRA_CFLAGS="-fsanitize=memory\
    -fsanitize-memory-track-origins"

    (Additionally, llvm might have to be installed and clang might have to
    be specified as the compiler - export CC=/usr/bin/clang)

    then running:
    tools/perf/perf record -o - ls / | tools/perf/perf --no-pager annotate\
    -i - --stdio

    Please see the cover letter for why false positive warnings may be
    generated.

    Signed-off-by: Numfor Mbiziwo-Tiapo
    Cc: Alexander Shishkin
    Cc: Ian Rogers
    Cc: Jiri Olsa
    Cc: Mark Drayton
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Song Liu
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/20190724234500.253358-2-nums@google.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Numfor Mbiziwo-Tiapo
     
  • So I have been having lots of trouble with hand-crafted perf.data files
    causing segfaults and the like, so I have started fuzzing the perf tool.

    First issue found:

    If f_header.attr_size is 0 in the perf.data file, then perf will crash
    with a divide-by-zero error.

    Committer note:

    Added a pr_err() to tell the user why the command failed.

    Signed-off-by: Vince Weaver
    Cc: Alexander Shishkin
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/alpine.DEB.2.21.1907231100440.14532@macbook-air
    Signed-off-by: Arnaldo Carvalho de Melo

    Vince Weaver
     
  • To pick the changes in:

    07a4ddec3ce9 ("bonding: add an option to specify a delay between peer notifications")

    And silence this build warning:

    Kernel ABI header at 'tools/include/uapi/linux/if_link.h' differs from latest version at 'include/uapi/linux/if_link.h'

    Cc: Adrian Hunter
    Cc: David S. Miller
    Cc: Jiri Olsa
    Cc: Luis Cláudio Gonçalves
    Cc: Namhyung Kim
    Cc: Vincent Bernat
    Link: https://lkml.kernel.org/n/tip-3liw4exxh8goc0rq9xryl2kv@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo