03 Nov, 2020

1 commit

  • The GCC specific __attribute__((optimize)) attribute does not what is
    commonly expected and is explicitly recommended against using in
    production code by the GCC people.

    Unlike what is often expected, it doesn't add to the optimization flags,
    but it fully replaces them, loosing any and all optimization flags
    provided by the compiler commandline.

    The only guaranteed upon means of inhibiting tail-calls is by placing a
    volatile asm with side-effects after the call such that the tail-call simply
    cannot be done.

    Given the original commit wasn't specific on which calls were the problem, this
    removal might re-introduce the problem, which can then be re-analyzed and cured
    properly.

    Signed-off-by: Peter Zijlstra
    Acked-by: Ard Biesheuvel
    Acked-by: Miguel Ojeda
    Cc: Alexei Starovoitov
    Cc: Arnd Bergmann
    Cc: Arvind Sankar
    Cc: Daniel Borkmann
    Cc: Geert Uytterhoeven
    Cc: Ian Rogers
    Cc: Josh Poimboeuf
    Cc: Kees Kook
    Cc: Martin Liška
    Cc: Nick Desaulniers
    Cc: Randy Dunlap
    Cc: Thomas Gleixner
    Link: http://lore.kernel.org/lkml/20201028081123.GT2628@hirez.programming.kicks-ass.net
    Signed-off-by: Arnaldo Carvalho de Melo

    Peter Zijlstra
     

26 Oct, 2020

1 commit

  • Use a more generic form for __section that requires quotes to avoid
    complications with clang and gcc differences.

    Remove the quote operator # from compiler_attributes.h __section macro.

    Convert all unquoted __section(foo) uses to quoted __section("foo").
    Also convert __attribute__((section("foo"))) uses to __section("foo")
    even if the __attribute__ has multiple list entry forms.

    Conversion done using the script at:

    https://lore.kernel.org/lkml/75393e5ddc272dc7403de74d645e6c6e0f4e70eb.camel@perches.com/2-convert_section.pl

    Signed-off-by: Joe Perches
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Miguel Ojeda
    Signed-off-by: Linus Torvalds

    Joe Perches
     

16 Oct, 2020

1 commit

  • Pull networking updates from Jakub Kicinski:

    - Add redirect_neigh() BPF packet redirect helper, allowing to limit
    stack traversal in common container configs and improving TCP
    back-pressure.

    Daniel reports ~10Gbps => ~15Gbps single stream TCP performance gain.

    - Expand netlink policy support and improve policy export to user
    space. (Ge)netlink core performs request validation according to
    declared policies. Expand the expressiveness of those policies
    (min/max length and bitmasks). Allow dumping policies for particular
    commands. This is used for feature discovery by user space (instead
    of kernel version parsing or trial and error).

    - Support IGMPv3/MLDv2 multicast listener discovery protocols in
    bridge.

    - Allow more than 255 IPv4 multicast interfaces.

    - Add support for Type of Service (ToS) reflection in SYN/SYN-ACK
    packets of TCPv6.

    - In Multi-patch TCP (MPTCP) support concurrent transmission of data on
    multiple subflows in a load balancing scenario. Enhance advertising
    addresses via the RM_ADDR/ADD_ADDR options.

    - Support SMC-Dv2 version of SMC, which enables multi-subnet
    deployments.

    - Allow more calls to same peer in RxRPC.

    - Support two new Controller Area Network (CAN) protocols - CAN-FD and
    ISO 15765-2:2016.

    - Add xfrm/IPsec compat layer, solving the 32bit user space on 64bit
    kernel problem.

    - Add TC actions for implementing MPLS L2 VPNs.

    - Improve nexthop code - e.g. handle various corner cases when nexthop
    objects are removed from groups better, skip unnecessary
    notifications and make it easier to offload nexthops into HW by
    converting to a blocking notifier.

    - Support adding and consuming TCP header options by BPF programs,
    opening the doors for easy experimental and deployment-specific TCP
    option use.

    - Reorganize TCP congestion control (CC) initialization to simplify
    life of TCP CC implemented in BPF.

    - Add support for shipping BPF programs with the kernel and loading
    them early on boot via the User Mode Driver mechanism, hence reusing
    all the user space infra we have.

    - Support sleepable BPF programs, initially targeting LSM and tracing.

    - Add bpf_d_path() helper for returning full path for given 'struct
    path'.

    - Make bpf_tail_call compatible with bpf-to-bpf calls.

    - Allow BPF programs to call map_update_elem on sockmaps.

    - Add BPF Type Format (BTF) support for type and enum discovery, as
    well as support for using BTF within the kernel itself (current use
    is for pretty printing structures).

    - Support listing and getting information about bpf_links via the bpf
    syscall.

    - Enhance kernel interfaces around NIC firmware update. Allow
    specifying overwrite mask to control if settings etc. are reset
    during update; report expected max time operation may take to users;
    support firmware activation without machine reboot incl. limits of
    how much impact reset may have (e.g. dropping link or not).

    - Extend ethtool configuration interface to report IEEE-standard
    counters, to limit the need for per-vendor logic in user space.

    - Adopt or extend devlink use for debug, monitoring, fw update in many
    drivers (dsa loop, ice, ionic, sja1105, qed, mlxsw, mv88e6xxx,
    dpaa2-eth).

    - In mlxsw expose critical and emergency SFP module temperature alarms.
    Refactor port buffer handling to make the defaults more suitable and
    support setting these values explicitly via the DCBNL interface.

    - Add XDP support for Intel's igb driver.

    - Support offloading TC flower classification and filtering rules to
    mscc_ocelot switches.

    - Add PTP support for Marvell Octeontx2 and PP2.2 hardware, as well as
    fixed interval period pulse generator and one-step timestamping in
    dpaa-eth.

    - Add support for various auth offloads in WiFi APs, e.g. SAE (WPA3)
    offload.

    - Add Lynx PHY/PCS MDIO module, and convert various drivers which have
    this HW to use it. Convert mvpp2 to split PCS.

    - Support Marvell Prestera 98DX3255 24-port switch ASICs, as well as
    7-port Mediatek MT7531 IP.

    - Add initial support for QCA6390 and IPQ6018 in ath11k WiFi driver,
    and wcn3680 support in wcn36xx.

    - Improve performance for packets which don't require much offloads on
    recent Mellanox NICs by 20% by making multiple packets share a
    descriptor entry.

    - Move chelsio inline crypto drivers (for TLS and IPsec) from the
    crypto subtree to drivers/net. Move MDIO drivers out of the phy
    directory.

    - Clean up a lot of W=1 warnings, reportedly the actively developed
    subsections of networking drivers should now build W=1 warning free.

    - Make sure drivers don't use in_interrupt() to dynamically adapt their
    code. Convert tasklets to use new tasklet_setup API (sadly this
    conversion is not yet complete).

    * tag 'net-next-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2583 commits)
    Revert "bpfilter: Fix build error with CONFIG_BPFILTER_UMH"
    net, sockmap: Don't call bpf_prog_put() on NULL pointer
    bpf, selftest: Fix flaky tcp_hdr_options test when adding addr to lo
    bpf, sockmap: Add locking annotations to iterator
    netfilter: nftables: allow re-computing sctp CRC-32C in 'payload' statements
    net: fix pos incrementment in ipv6_route_seq_next
    net/smc: fix invalid return code in smcd_new_buf_create()
    net/smc: fix valid DMBE buffer sizes
    net/smc: fix use-after-free of delayed events
    bpfilter: Fix build error with CONFIG_BPFILTER_UMH
    cxgb4/ch_ipsec: Replace the module name to ch_ipsec from chcr
    net: sched: Fix suspicious RCU usage while accessing tcf_tunnel_info
    bpf: Fix register equivalence tracking.
    rxrpc: Fix loss of final ack on shutdown
    rxrpc: Fix bundle counting for exclusive connections
    netfilter: restore NF_INET_NUMHOOKS
    ibmveth: Identify ingress large send packets.
    ibmveth: Switch order of ibmveth_helper calls.
    cxgb4: handle 4-tuple PEDIT to NAT mode translation
    selftests: Add VRF route leaking tests
    ...

    Linus Torvalds
     

22 Sep, 2020

1 commit

  • Add a convenience macro that allows defining a BTF ID list with
    a single item. This lets us cut down on repetitive macros.

    Suggested-by: Andrii Nakryiko
    Signed-off-by: Lorenz Bauer
    Signed-off-by: Alexei Starovoitov
    Acked-by: Martin KaFai Lau
    Link: https://lore.kernel.org/bpf/20200921121227.255763-4-lmb@cloudflare.com

    Lorenz Bauer
     

10 Sep, 2020

1 commit

  • Unwind hints are useful to provide objtool with information about stack
    states in non-standard functions/code.

    While the type of information being provided might be very arch
    specific, the mechanism to provide the information can be useful for
    other architectures.

    Move the relevant unwint hint definitions for all architectures to
    see.

    [ jpoimboe: REGS_IRET -> REGS_PARTIAL ]

    Signed-off-by: Julien Thierry
    Signed-off-by: Josh Poimboeuf

    Julien Thierry
     

01 Sep, 2020

2 commits

  • GCC can turn our static_call(name)(args...) into a tail call, in which
    case we get a JMP.d32 into the trampoline (which then does a further
    tail-call).

    Teach objtool to recognise and mark these in .static_call_sites and
    adjust the code patching to deal with this.

    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Cc: Linus Torvalds
    Link: https://lore.kernel.org/r/20200818135805.101186767@infradead.org

    Peter Zijlstra
     
  • Add the inline static call implementation for x86-64. The generated code
    is identical to the out-of-line case, except we move the trampoline into
    it's own section.

    Objtool uses the trampoline naming convention to detect all the call
    sites. It then annotates those call sites in the .static_call_sites
    section.

    During boot (and module init), the call sites are patched to call
    directly into the destination function. The temporary trampoline is
    then no longer used.

    [peterz: merged trampolines, put trampoline in section]

    Signed-off-by: Josh Poimboeuf
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Ingo Molnar
    Cc: Linus Torvalds
    Link: https://lore.kernel.org/r/20200818135804.864271425@infradead.org

    Josh Poimboeuf
     

26 Aug, 2020

1 commit

  • Adding support to define sorted set of BTF ID values.

    Following defines sorted set of BTF ID values:

    BTF_SET_START(btf_allowlist_d_path)
    BTF_ID(func, vfs_truncate)
    BTF_ID(func, vfs_fallocate)
    BTF_ID(func, dentry_open)
    BTF_ID(func, vfs_getattr)
    BTF_ID(func, filp_close)
    BTF_SET_END(btf_allowlist_d_path)

    It defines following 'struct btf_id_set' variable to access
    values and count:

    struct btf_id_set btf_allowlist_d_path;

    Adding 'allowed' callback to struct bpf_func_proto, to allow
    verifier the check on allowed callers.

    Adding btf_id_set_contains function, which will be used by
    allowed callbacks to verify the caller's BTF ID value is
    within allowed set.

    Also removing extra '\' in __BTF_ID_LIST macro.

    Added BTF_SET_START_GLOBAL macro for global sets.

    Signed-off-by: Jiri Olsa
    Signed-off-by: Alexei Starovoitov
    Acked-by: Andrii Nakryiko
    Link: https://lore.kernel.org/bpf/20200825192124.710397-10-jolsa@kernel.org

    Jiri Olsa
     

08 Aug, 2020

1 commit

  • Rationale:
    Reduces attack surface on kernel devs opening the links for MITM
    as HTTPS traffic is much harder to manipulate.

    Signed-off-by: Alexander A. Klimov
    Signed-off-by: Andrew Morton
    Link: http://lkml.kernel.org/r/20200726120752.16768-1-grandmaster@al2klimov.de
    Signed-off-by: Linus Torvalds

    Alexander A. Klimov
     

06 Aug, 2020

1 commit

  • Pull networking updates from David Miller:

    1) Support 6Ghz band in ath11k driver, from Rajkumar Manoharan.

    2) Support UDP segmentation in code TSO code, from Eric Dumazet.

    3) Allow flashing different flash images in cxgb4 driver, from Vishal
    Kulkarni.

    4) Add drop frames counter and flow status to tc flower offloading,
    from Po Liu.

    5) Support n-tuple filters in cxgb4, from Vishal Kulkarni.

    6) Various new indirect call avoidance, from Eric Dumazet and Brian
    Vazquez.

    7) Fix BPF verifier failures on 32-bit pointer arithmetic, from
    Yonghong Song.

    8) Support querying and setting hardware address of a port function via
    devlink, use this in mlx5, from Parav Pandit.

    9) Support hw ipsec offload on bonding slaves, from Jarod Wilson.

    10) Switch qca8k driver over to phylink, from Jonathan McDowell.

    11) In bpftool, show list of processes holding BPF FD references to
    maps, programs, links, and btf objects. From Andrii Nakryiko.

    12) Several conversions over to generic power management, from Vaibhav
    Gupta.

    13) Add support for SO_KEEPALIVE et al. to bpf_setsockopt(), from Dmitry
    Yakunin.

    14) Various https url conversions, from Alexander A. Klimov.

    15) Timestamping and PHC support for mscc PHY driver, from Antoine
    Tenart.

    16) Support bpf iterating over tcp and udp sockets, from Yonghong Song.

    17) Support 5GBASE-T i40e NICs, from Aleksandr Loktionov.

    18) Add kTLS RX HW offload support to mlx5e, from Tariq Toukan.

    19) Fix the ->ndo_start_xmit() return type to be netdev_tx_t in several
    drivers. From Luc Van Oostenryck.

    20) XDP support for xen-netfront, from Denis Kirjanov.

    21) Support receive buffer autotuning in MPTCP, from Florian Westphal.

    22) Support EF100 chip in sfc driver, from Edward Cree.

    23) Add XDP support to mvpp2 driver, from Matteo Croce.

    24) Support MPTCP in sock_diag, from Paolo Abeni.

    25) Commonize UDP tunnel offloading code by creating udp_tunnel_nic
    infrastructure, from Jakub Kicinski.

    26) Several pci_ --> dma_ API conversions, from Christophe JAILLET.

    27) Add FLOW_ACTION_POLICE support to mlxsw, from Ido Schimmel.

    28) Add SK_LOOKUP bpf program type, from Jakub Sitnicki.

    29) Refactor a lot of networking socket option handling code in order to
    avoid set_fs() calls, from Christoph Hellwig.

    30) Add rfc4884 support to icmp code, from Willem de Bruijn.

    31) Support TBF offload in dpaa2-eth driver, from Ioana Ciornei.

    32) Support XDP_REDIRECT in qede driver, from Alexander Lobakin.

    33) Support PCI relaxed ordering in mlx5 driver, from Aya Levin.

    34) Support TCP syncookies in MPTCP, from Flowian Westphal.

    35) Fix several tricky cases of PMTU handling wrt. briding, from Stefano
    Brivio.

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2056 commits)
    net: thunderx: initialize VF's mailbox mutex before first usage
    usb: hso: remove bogus check for EINPROGRESS
    usb: hso: no complaint about kmalloc failure
    hso: fix bailout in error case of probe
    ip_tunnel_core: Fix build for archs without _HAVE_ARCH_IPV6_CSUM
    selftests/net: relax cpu affinity requirement in msg_zerocopy test
    mptcp: be careful on subflow creation
    selftests: rtnetlink: make kci_test_encap() return sub-test result
    selftests: rtnetlink: correct the final return value for the test
    net: dsa: sja1105: use detected device id instead of DT one on mismatch
    tipc: set ub->ifindex for local ipv6 address
    ipv6: add ipv6_dev_find()
    net: openvswitch: silence suspicious RCU usage warning
    Revert "vxlan: fix tos value before xmit"
    ptp: only allow phase values lower than 1 period
    farsync: switch from 'pci_' to 'dma_' API
    wan: wanxl: switch from 'pci_' to 'dma_' API
    hv_netvsc: do not use VF device if link is down
    dpaa2-eth: Fix passing zero to 'PTR_ERR' warning
    net: macb: Properly handle phylink on at91sam9x
    ...

    Linus Torvalds
     

05 Aug, 2020

1 commit

  • Pull uninitialized_var() macro removal from Kees Cook:
    "This is long overdue, and has hidden too many bugs over the years. The
    series has several "by hand" fixes, and then a trivial treewide
    replacement.

    - Clean up non-trivial uses of uninitialized_var()

    - Update documentation and checkpatch for uninitialized_var() removal

    - Treewide removal of uninitialized_var()"

    * tag 'uninit-macro-v5.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
    compiler: Remove uninitialized_var() macro
    treewide: Remove uninitialized_var() usage
    checkpatch: Remove awareness of uninitialized_var() macro
    mm/debug_vm_pgtable: Remove uninitialized_var() usage
    f2fs: Eliminate usage of uninitialized_var() macro
    media: sur40: Remove uninitialized_var() usage
    KVM: PPC: Book3S PR: Remove uninitialized_var() usage
    clk: spear: Remove uninitialized_var() usage
    clk: st: Remove uninitialized_var() usage
    spi: davinci: Remove uninitialized_var() usage
    ide: Remove uninitialized_var() usage
    rtlwifi: rtl8192cu: Remove uninitialized_var() usage
    b43: Remove uninitialized_var() usage
    drbd: Remove uninitialized_var() usage
    x86/mm/numa: Remove uninitialized_var() usage
    docs: deprecated.rst: Add uninitialized_var()

    Linus Torvalds
     

26 Jul, 2020

1 commit


22 Jul, 2020

3 commits

  • tcp and udp bpf_iter can reuse some socket ids in
    btf_sock_ids, so make it global.

    I put the extern definition in btf_ids.h as a central
    place so it can be easily discovered by developers.

    Signed-off-by: Yonghong Song
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20200720163402.1393427-1-yhs@fb.com

    Yonghong Song
     
  • Existing BTF_ID_LIST used a local static variable
    to store btf_ids. This patch provided a new macro
    BTF_ID_LIST_GLOBAL to store btf_ids in a global
    variable which can be shared among multiple files.

    The existing BTF_ID_LIST is still retained.
    Two reasons. First, BTF_ID_LIST is also used to build
    btf_ids for helper arguments which typically
    is an array of 5. Since typically different
    helpers have different signature, it makes
    little sense to share them. Second, some
    current computed btf_ids are indeed local.
    If later those btf_ids are shared between
    different files, they can use BTF_ID_LIST_GLOBAL then.

    Signed-off-by: Yonghong Song
    Signed-off-by: Alexei Starovoitov
    Acked-by: Jiri Olsa
    Link: https://lore.kernel.org/bpf/20200720163401.1393159-1-yhs@fb.com

    Yonghong Song
     
  • Sync kernel header btf_ids.h to tools directory.
    Also define macro CONFIG_DEBUG_INFO_BTF before
    including btf_ids.h in prog_tests/resolve_btfids.c
    since non-stub definitions for BTF_ID_LIST etc. macros
    are defined under CONFIG_DEBUG_INFO_BTF. This
    prevented test_progs from failing.

    Signed-off-by: Yonghong Song
    Signed-off-by: Alexei Starovoitov
    Link: https://lore.kernel.org/bpf/20200720163359.1393079-1-yhs@fb.com

    Yonghong Song
     

17 Jul, 2020

1 commit

  • Using uninitialized_var() is dangerous as it papers over real bugs[1]
    (or can in the future), and suppresses unrelated compiler warnings
    (e.g. "unused variable"). If the compiler thinks it is uninitialized,
    either simply initialize the variable or make compiler changes.

    As recommended[2] by[3] Linus[4], remove the macro. With the recent
    change to disable -Wmaybe-uninitialized in v5.7 in commit 78a5255ffb6a
    ("Stop the ad-hoc games with -Wno-maybe-initialized"), this is likely
    the best time to make this treewide change.

    [1] https://lore.kernel.org/lkml/20200603174714.192027-1-glider@google.com/
    [2] https://lore.kernel.org/lkml/CA+55aFw+Vbj0i=1TGqCR5vQkCzWJ0QxK6CernOU6eedsudAixw@mail.gmail.com/
    [3] https://lore.kernel.org/lkml/CA+55aFwgbgqhbp1fkxvRKEpzyR5J8n1vKT1VZdz9knmPuXhOeg@mail.gmail.com/
    [4] https://lore.kernel.org/lkml/CA+55aFz2500WfbKXAx8s67wrm9=yVJu65TpLgN_ybYNv0VEOKA@mail.gmail.com/

    Suggested-by: Linus Torvalds
    Reviewed-by: Bart van Assche
    Reviewed-by: Miguel Ojeda
    Tested-by: Nathan Chancellor
    Tested-by: Sedat Dilek
    Signed-off-by: Kees Cook

    Kees Cook
     

14 Jul, 2020

2 commits

  • Alexei Starovoitov says:

    ====================
    pull-request: bpf-next 2020-07-13

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

    We've added 36 non-merge commits during the last 7 day(s) which contain
    a total of 62 files changed, 2242 insertions(+), 468 deletions(-).

    The main changes are:

    1) Avoid trace_printk warning banner by switching bpf_trace_printk to use
    its own tracing event, from Alan.

    2) Better libbpf support on older kernels, from Andrii.

    3) Additional AF_XDP stats, from Ciara.

    4) build time resolution of BTF IDs, from Jiri.

    5) BPF_CGROUP_INET_SOCK_RELEASE hook, from Stanislav.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • It will be needed by bpf selftest for resolve_btfids tool.

    Also adding __PASTE macro as btf_ids.h dependency, which is
    defined in:

    include/linux/compiler_types.h

    but because tools/include do not have this header, I'm putting
    the macro into linux/compiler.h header.

    Signed-off-by: Jiri Olsa
    Signed-off-by: Alexei Starovoitov
    Tested-by: Andrii Nakryiko
    Acked-by: Andrii Nakryiko
    Link: https://lore.kernel.org/bpf/20200711215329.41165-9-jolsa@kernel.org

    Jiri Olsa
     

10 Jul, 2020

1 commit


09 Jul, 2020

1 commit

  • I realize that we fairly recently raised it to 4.8, but the fact is, 4.9
    is a much better minimum version to target.

    We have a number of workarounds for actual bugs in pre-4.9 gcc versions
    (including things like internal compiler errors on ARM), but we also
    have some syntactic workarounds for lacking features.

    In particular, raising the minimum to 4.9 means that we can now just
    assume _Generic() exists, which is likely the much better replacement
    for a lot of very convoluted built-time magic with conditionals on
    sizeof and/or __builtin_choose_expr() with same_type() etc.

    Using _Generic also means that you will need to have a very recent
    version of 'sparse', but thats easy to build yourself, and much less of
    a hassle than some old gcc version can be.

    The latest (in a long string) of reasons for minimum compiler version
    upgrades was commit 5435f73d5c4a ("efi/x86: Fix build with gcc 4").

    Ard points out that RHEL 7 uses gcc-4.8, but the people who stay back on
    old RHEL versions persumably also don't build their own kernels anyway.
    And maybe they should cross-built or just have a little side affair with
    a newer compiler?

    Acked-by: Ard Biesheuvel
    Acked-by: Peter Zijlstra
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

10 Jun, 2020

1 commit

  • Patch series "Add log level to show_stack()", v3.

    Add log level argument to show_stack().

    Done in three stages:
    1. Introducing show_stack_loglvl() for every architecture
    2. Migrating old users with an explicit log level
    3. Renaming show_stack_loglvl() into show_stack()

    Justification:

    - It's a design mistake to move a business-logic decision into platform
    realization detail.

    - I have currently two patches sets that would benefit from this work:
    Removing console_loglevel jumps in sysrq driver [1] Hung task warning
    before panic [2] - suggested by Tetsuo (but he probably didn't realise
    what it would involve).

    - While doing (1), (2) the backtraces were adjusted to headers and other
    messages for each situation - so there won't be a situation when the
    backtrace is printed, but the headers are missing because they have
    lesser log level (or the reverse).

    - As the result in (2) plays with console_loglevel for kdb are removed.

    The least important for upstream, but maybe still worth to note that every
    company I've worked in so far had an off-list patch to print backtrace
    with the needed log level (but only for the architecture they cared
    about). If you have other ideas how you will benefit from show_stack()
    with a log level - please, reply to this cover letter.

    See also discussion on v1:
    https://lore.kernel.org/linux-riscv/20191106083538.z5nlpuf64cigxigh@pathway.suse.cz/

    This patch (of 50):

    print_ip_sym() needs to have a log level parameter to comply with other
    parts being printed. Otherwise, half of the expected backtrace would be
    printed and other may be missing with some logging level.

    The following callee(s) are using now the adjusted log level:
    - microblaze/unwind: the same level as headers & userspace unwind.
    Note that pr_debug()'s there are for debugging the unwinder itself.
    - nds32/traps: symbol addresses are printed with the same log level
    as backtrace headers.
    - lockdep: ip for locking issues is printed with the same log level
    as other part of the warning.
    - sched: ip where preemption was disabled is printed as error like
    the rest part of the message.
    - ftrace: bug reports are now consistent in the log level being used.

    Signed-off-by: Dmitry Safonov
    Signed-off-by: Andrew Morton
    Acked-by: Steven Rostedt (VMware)
    Cc: Albert Ou
    Cc: Ben Segall
    Cc: Dietmar Eggemann
    Cc: Greentime Hu
    Cc: Greg Kroah-Hartman
    Cc: Ingo Molnar
    Cc: James Hogan
    Cc: Juri Lelli
    Cc: Mel Gorman
    Cc: Michal Simek
    Cc: Palmer Dabbelt
    Cc: Paul Burton
    Cc: Paul Walmsley
    Cc: Peter Zijlstra
    Cc: Ralf Baechle
    Cc: Thomas Gleixner
    Cc: Vincent Chen
    Cc: Vincent Guittot
    Cc: Will Deacon
    Cc: Dmitry Safonov
    Cc: Dmitry Safonov
    Cc: Jiri Slaby
    Cc: Petr Mladek
    Cc: Sergey Senozhatsky
    Cc: Ivan Kokshaysky
    Cc: Matt Turner
    Cc: Richard Henderson
    Cc: Vineet Gupta
    Cc: Russell King
    Cc: Catalin Marinas
    Cc: Aurelien Jacquiot
    Cc: Mark Salter
    Cc: Guo Ren
    Cc: Yoshinori Sato
    Cc: Brian Cain
    Cc: Fenghua Yu
    Cc: Tony Luck
    Cc: Geert Uytterhoeven
    Cc: Ley Foon Tan
    Cc: Jonas Bonn
    Cc: Stafford Horne
    Cc: Stefan Kristiansson
    Cc: Helge Deller
    Cc: "James E.J. Bottomley"
    Cc: Benjamin Herrenschmidt
    Cc: Michael Ellerman
    Cc: Paul Mackerras
    Cc: Christian Borntraeger
    Cc: Heiko Carstens
    Cc: Vasily Gorbik
    Cc: Rich Felker
    Cc: "David S. Miller"
    Cc: Anton Ivanov
    Cc: Jeff Dike
    Cc: Richard Weinberger
    Cc: Guan Xuetao
    Cc: Borislav Petkov
    Cc: "H. Peter Anvin"
    Cc: Chris Zankel
    Cc: Max Filippov
    Cc: Len Brown
    Cc: Pavel Machek
    Cc: "Rafael J. Wysocki"
    Cc: "Rafael J. Wysocki"
    Cc: Daniel Thompson
    Cc: Douglas Anderson
    Cc: Jason Wessel
    Link: http://lkml.kernel.org/r/20200418201944.482088-2-dima@arista.com
    Signed-off-by: Linus Torvalds

    Dmitry Safonov
     

05 Jun, 2020

1 commit

  • Pull perf tooling updates from Arnaldo Carvalho de Melo:
    "These are additional changes to the perf tools, on top of what Ingo
    already submitted.

    - Further Intel PT call-trace fixes

    - Improve SELinux docs and tool warnings

    - Fix race at exit in 'perf record' using eventfd.

    - Add missing build tests to the default set of 'make -C tools/perf
    build-test'

    - Sync msr-index.h getting new AMD MSRs to decode and filter in 'perf
    trace'.

    - Fix fallback to libaudit in 'perf trace' for arches not using
    per-arch *.tbl files.

    - Fixes for 'perf ftrace'.

    - Fixes and improvements for the 'perf stat' metrics.

    - Use dummy event to get PERF_RECORD_{FORK,MMAP,etc} while
    synthesizing those metadata events for pre-existing threads.

    - Fix leaks detected using clang tooling.

    - Improvements to PMU event metric testing.

    - Report summary for 'perf stat' interval mode at the end, summing up
    all the intervals.

    - Improve pipe mode, i.e. this now works as expected, continuously
    dumping samples:

    # perf record -g -e raw_syscalls:sys_enter | perf --no-pager script

    - Fixes for event grouping, detecting incompatible groups such as:

    # perf stat -e '{cycles,power/energy-cores/}' -v
    WARNING: group events cpu maps do not match, disabling group:
    anon group { power/energy-cores/, cycles }
    power/energy-cores/: 0
    cycles: 0-7

    - Fixes for 'perf probe': blacklist address checking, number of
    kretprobe instances, etc.

    - JIT processing improvements and fixes plus the addition of a 'perf
    test' entry for the java demangler.

    - Add support for synthesizing first/last level cache, TLB and remove
    access events from HW tracing in the auxtrace code, first to use is
    ARM SPE.

    - Vendor events updates and fixes, including for POWER9 and Intel.

    - Allow using ~/.perfconfig for removing the ',' separators in 'perf
    stat' output.

    - Opt-in support for libpfm4"

    * tag 'perf-tools-2020-06-02' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux: (120 commits)
    perf tools: Remove some duplicated includes
    perf symbols: Fix kernel maps for kcore and eBPF
    tools arch x86: Sync the msr-index.h copy with the kernel sources
    perf stat: Ensure group is defined on top of the same cpu mask
    perf libdw: Fix off-by 1 relative directory includes
    perf arm-spe: Support synthetic events
    perf auxtrace: Add four itrace options
    perf tools: Move arm-spe-pkt-decoder.h/c to the new dir
    perf test: Initialize memory in dwarf-unwind
    perf tests: Don't tail call optimize in unwind test
    tools compiler.h: Add attribute to disable tail calls
    perf build: Add a LIBPFM4=1 build test entry
    perf tools: Add optional support for libpfm4
    perf tools: Correct license on jsmn JSON parser
    perf jit: Fix inaccurate DWARF line table
    perf jvmti: Remove redundant jitdump line table entries
    perf build: Add NO_SDT=1 to the default set of build tests
    perf build: Add NO_LIBCRYPTO=1 to the default set of build tests
    perf build: Add NO_SYSCALL_TABLE=1 to the build tests
    perf build: Remove libaudit from the default feature checks
    ...

    Linus Torvalds
     

02 Jun, 2020

1 commit

  • Pull documentation updates from Jonathan Corbet:
    "A fair amount of stuff this time around, dominated by yet another
    massive set from Mauro toward the completion of the RST conversion. I
    *really* hope we are getting close to the end of this. Meanwhile,
    those patches reach pretty far afield to update document references
    around the tree; there should be no actual code changes there. There
    will be, alas, more of the usual trivial merge conflicts.

    Beyond that we have more translations, improvements to the sphinx
    scripting, a number of additions to the sysctl documentation, and lots
    of fixes"

    * tag 'docs-5.8' of git://git.lwn.net/linux: (130 commits)
    Documentation: fixes to the maintainer-entry-profile template
    zswap: docs/vm: Fix typo accept_threshold_percent in zswap.rst
    tracing: Fix events.rst section numbering
    docs: acpi: fix old http link and improve document format
    docs: filesystems: add info about efivars content
    Documentation: LSM: Correct the basic LSM description
    mailmap: change email for Ricardo Ribalda
    docs: sysctl/kernel: document unaligned controls
    Documentation: admin-guide: update bug-hunting.rst
    docs: sysctl/kernel: document ngroups_max
    nvdimm: fixes to maintainter-entry-profile
    Documentation/features: Correct RISC-V kprobes support entry
    Documentation/features: Refresh the arch support status files
    Revert "docs: sysctl/kernel: document ngroups_max"
    docs: move locking-specific documents to locking/
    docs: move digsig docs to the security book
    docs: move the kref doc into the core-api book
    docs: add IRQ documentation at the core-api book
    docs: debugging-via-ohci1394.txt: add it to the core-api book
    docs: fix references for ipmi.rst file
    ...

    Linus Torvalds
     

01 Jun, 2020

1 commit

  • Tail call optimizations can remove stack frames that are used in
    unwinding tests. Add an attribute that can be used to disable the tail
    call optimization. Tested on clang and GCC.

    Committer notes:

    Old versions of clang don't like that __attribute__((optimize)), so add
    an ifdef to make it go away.

    Signed-off-by: Ian Rogers
    Cc: Alexander Shishkin
    Cc: Alexei Starovoitov
    Cc: clang-built-linux@googlegroups.com
    Cc: Jakub Kicinski
    Cc: Jiri Olsa
    Cc: Mark Rutland
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Quentin Monnet
    Cc: Stephane Eranian
    Link: http://lore.kernel.org/lkml/20200530082015.39162-2-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Ian Rogers
     

22 Apr, 2020

1 commit


14 Apr, 2020

3 commits

  • To pick up the changes in these csets:

    295bcca84916 ("linux/bits.h: add compile time sanity check of GENMASK inputs")
    3945ff37d2f4 ("linux/bits.h: Extract common header for vDSO")

    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

    This clashes with usage of userspace's static_assert(), that, at least
    on glibc, is guarded by a ifnded/endif pair, do the same to our copy of
    build_bug.h and avoid that diff in check_headers.sh so that we continue
    checking for drifts with the kernel sources master copy.

    This will all be tested with the set of build containers that includes
    uCLibc, musl libc, lots of glibc versions in lots of distros and cross
    build environments.

    The tools/objtool, tools/bpf, etc were tested as well.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Rikard Falkeborn
    Cc: Thomas Gleixner
    Cc: Vincenzo Frascino
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • Will be needed when syncing the linux/bits.h header, in the next cset.

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

    Arnaldo Carvalho de Melo
     
  • To get in line with:

    8165b57bca21 ("linux/const.h: Extract common header for vDSO")

    And silence this tools/perf/ build warning:

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

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

    Arnaldo Carvalho de Melo
     

21 Mar, 2020

2 commits

  • Continue what commit:

    d820ac4c2fa8 ("locking: rename trace_softirq_[enter|exit] => lockdep_softirq_[enter|exit]")

    started, rename these to avoid confusing them with tracepoints.

    git grep -l "trace_\(soft\|hard\)\(irq_context\|irqs_enabled\)" | while read file;
    do
    sed -ie 's/trace_\(soft\|hard\)\(irq_context\|irqs_enabled\)/lockdep_\1\2/g' $file;
    done

    Reported-by: Thomas Gleixner
    Signed-off-by: Peter Zijlstra (Intel)
    Signed-off-by: Thomas Gleixner
    Reviewed-by: Thomas Gleixner
    Acked-by: Will Deacon
    Link: https://lkml.kernel.org/r/20200320115859.178626842@infradead.org

    Peter Zijlstra
     
  • Continue what commit:

    d820ac4c2fa8 ("locking: rename trace_softirq_[enter|exit] => lockdep_softirq_[enter|exit]")

    started, rename these to avoid confusing them with tracepoints.

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Thomas Gleixner
    Acked-by: Will Deacon
    Link: https://lkml.kernel.org/r/20200320115859.060481361@infradead.org

    Thomas Gleixner
     

04 Feb, 2020

1 commit

  • Introduce BITS_TO_U64, BITS_TO_U32 and BITS_TO_BYTES as they are handy in
    the following patches (BITS_TO_U32 specifically). Reimplement tools/
    version of the macros according to the kernel implementation.

    Also fix indentation for BITS_PER_TYPE definition.

    Link: http://lkml.kernel.org/r/20200102043031.30357-3-yury.norov@gmail.com
    Signed-off-by: Yury Norov
    Reviewed-by: Andy Shevchenko
    Cc: Amritha Nambiar
    Cc: Arnaldo Carvalho de Melo
    Cc: Chris Wilson
    Cc: Kees Cook
    Cc: Matthew Wilcox
    Cc: Miklos Szeredi
    Cc: Rasmus Villemoes
    Cc: Steffen Klassert
    Cc: "Tobin C . Harding"
    Cc: Vineet Gupta
    Cc: Will Deacon
    Cc: Willem de Bruijn
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     

06 Jan, 2020

2 commits

  • 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

    Vitaly Chikunov
     
  • Extend tools bitmap API with bitmap_equal() implementation.

    The implementation has been derived from the kernel.

    Extend tools bitmap API with bitmap_free() implementation for symmetry
    with bitmap_alloc() function.

    Signed-off-by: Alexey Budankov
    Acked-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/43757993-0b28-d8af-a6c7-ede12e3a6877@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Alexey Budankov
     

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
     

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
     

22 Aug, 2019

1 commit

  • 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
     

20 Aug, 2019

1 commit

  • 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