16 Apr, 2018

1 commit

  • Pull x86 fixes from Thomas Gleixner:
    "A set of fixes and updates for x86:

    - Address a swiotlb regression which was caused by the recent DMA
    rework and made driver fail because dma_direct_supported() returned
    false

    - Fix a signedness bug in the APIC ID validation which caused invalid
    APIC IDs to be detected as valid thereby bloating the CPU possible
    space.

    - Fix inconsisten config dependcy/select magic for the MFD_CS5535
    driver.

    - Fix a corruption of the physical address space bits when encryption
    has reduced the address space and late cpuinfo updates overwrite
    the reduced bit information with the original value.

    - Dominiks syscall rework which consolidates the architecture
    specific syscall functions so all syscalls can be wrapped with the
    same macros. This allows to switch x86/64 to struct pt_regs based
    syscalls. Extend the clearing of user space controlled registers in
    the entry patch to the lower registers"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/apic: Fix signedness bug in APIC ID validity checks
    x86/cpu: Prevent cpuinfo_x86::x86_phys_bits adjustment corruption
    x86/olpc: Fix inconsistent MFD_CS5535 configuration
    swiotlb: Use dma_direct_supported() for swiotlb_ops
    syscalls/x86: Adapt syscall_wrapper.h to the new syscall stub naming convention
    syscalls/core, syscalls/x86: Rename struct pt_regs-based sys_*() to __x64_sys_*()
    syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention
    syscalls/core, syscalls/x86: Clean up syscall stub naming convention
    syscalls/x86: Extend register clearing on syscall entry to lower registers
    syscalls/x86: Unconditionally enable 'struct pt_regs' based syscalls on x86_64
    syscalls/x86: Use 'struct pt_regs' based syscall calling for IA32_EMULATION and x32
    syscalls/core: Prepare CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y for compat syscalls
    syscalls/x86: Use 'struct pt_regs' based syscall calling convention for 64-bit syscalls
    syscalls/core: Introduce CONFIG_ARCH_HAS_SYSCALL_WRAPPER=y
    x86/syscalls: Don't pointlessly reload the system call number
    x86/mm: Fix documentation of module mapping range with 4-level paging
    x86/cpuid: Switch to 'static const' specifier

    Linus Torvalds
     

14 Apr, 2018

1 commit

  • The code to verify the new kernels sha digest is applicable for all
    architectures. Move it to common code.

    One problem is the string.c implementation on x86. Currently sha256
    includes x86/boot/string.h which defines memcpy and memset to be gcc
    builtins. By moving the sha256 implementation to common code and
    changing the include to linux/string.h both functions are no longer
    defined. Thus definitions have to be provided in x86/purgatory/string.c

    Link: http://lkml.kernel.org/r/20180321112751.22196-12-prudo@linux.vnet.ibm.com
    Signed-off-by: Philipp Rudo
    Acked-by: Dave Young
    Cc: AKASHI Takahiro
    Cc: Eric Biederman
    Cc: Heiko Carstens
    Cc: Ingo Molnar
    Cc: Martin Schwidefsky
    Cc: Michael Ellerman
    Cc: Thiago Jung Bauermann
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Philipp Rudo
     

13 Apr, 2018

3 commits

  • Pull more gfs2 updates from Bob Peterson:
    "We decided to request the latest three patches to be merged into this
    merge window while it's still open.

    - The first patch adds a new function to lockref:
    lockref_put_not_zero

    - The second patch fixes GFS2's glock dump code so it uses the new
    lockref function. This fixes a problem whereby lock dumps could
    miss glocks.

    - I made a minor patch to update some comments and fix the lock
    ordering text in our gfs2-glocks.txt Documentation file"

    * tag 'gfs2-4.17.fixes2' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
    GFS2: Minor improvements to comments and documentation
    gfs2: Stop using rhashtable_walk_peek
    lockref: Add lockref_put_not_zero

    Linus Torvalds
     
  • Pull dma-mapping fix from Christoph Hellwig:
    "Fix for one swiotlb regression in 2.16 from Takashi"

    * tag 'dma-mapping-4.17-2' of git://git.infradead.org/users/hch/dma-mapping:
    swiotlb: fix unexpected swiotlb_alloc_coherent failures

    Linus Torvalds
     
  • Put a lockref unless the lockref is dead or its count would become zero.
    This is the same as lockref_put_or_lock except that the lock is never
    left held.

    Signed-off-by: Andreas Gruenbacher
    Signed-off-by: Bob Peterson

    Andreas Gruenbacher
     

12 Apr, 2018

10 commits

  • Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Patch series "XArray", v9. (First part thereof).

    This patchset is, I believe, appropriate for merging for 4.17. It
    contains the XArray implementation, to eventually replace the radix
    tree, and converts the page cache to use it.

    This conversion keeps the radix tree and XArray data structures in sync
    at all times. That allows us to convert the page cache one function at
    a time and should allow for easier bisection. Other than renaming some
    elements of the structures, the data structures are fundamentally
    unchanged; a radix tree walk and an XArray walk will touch the same
    number of cachelines. I have changes planned to the XArray data
    structure, but those will happen in future patches.

    Improvements the XArray has over the radix tree:

    - The radix tree provides operations like other trees do; 'insert' and
    'delete'. But what most users really want is an automatically
    resizing array, and so it makes more sense to give users an API that
    is like an array -- 'load' and 'store'. We still have an 'insert'
    operation for users that really want that semantic.

    - The XArray considers locking as part of its API. This simplifies a
    lot of users who formerly had to manage their own locking just for
    the radix tree. It also improves code generation as we can now tell
    RCU that we're holding a lock and it doesn't need to generate as much
    fencing code. The other advantage is that tree nodes can be moved
    (not yet implemented).

    - GFP flags are now parameters to calls which may need to allocate
    memory. The radix tree forced users to decide what the allocation
    flags would be at creation time. It's much clearer to specify them at
    allocation time.

    - Memory is not preloaded; we don't tie up dozens of pages on the off
    chance that the slab allocator fails. Instead, we drop the lock,
    allocate a new node and retry the operation. We have to convert all
    the radix tree, IDA and IDR preload users before we can realise this
    benefit, but I have not yet found a user which cannot be converted.

    - The XArray provides a cmpxchg operation. The radix tree forces users
    to roll their own (and at least four have).

    - Iterators take a 'max' parameter. That simplifies many users and will
    reduce the amount of iteration done.

    - Iteration can proceed backwards. We only have one user for this, but
    since it's called as part of the pagefault readahead algorithm, that
    seemed worth mentioning.

    - RCU-protected pointers are not exposed as part of the API. There are
    some fun bugs where the page cache forgets to use rcu_dereference()
    in the current codebase.

    - Value entries gain an extra bit compared to radix tree exceptional
    entries. That gives us the extra bit we need to put huge page swap
    entries in the page cache.

    - Some iterators now take a 'filter' argument instead of having
    separate iterators for tagged/untagged iterations.

    The page cache is improved by this:

    - Shorter, easier to read code

    - More efficient iterations

    - Reduction in size of struct address_space

    - Fewer walks from the top of the data structure; the XArray API
    encourages staying at the leaf node and conducting operations there.

    This patch (of 8):

    None of these bits may be used for slab allocations, so we can use them
    as radix tree flags as long as we mask them off before passing them to
    the slab allocator. Move the IDR flag from the high bits to the
    GFP_ZONEMASK bits.

    Link: http://lkml.kernel.org/r/20180313132639.17387-3-willy@infradead.org
    Signed-off-by: Matthew Wilcox
    Acked-by: Jeff Layton
    Cc: Darrick J. Wong
    Cc: Dave Chinner
    Cc: Ryusuke Konishi
    Cc: Will Deacon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     
  • The entire point of printing the pointers in list_debug is to see if
    there's any useful information in them (eg poison values, ASCII, etc);
    obscuring them to see if they compare equal makes them much less useful.
    If an attacker can force this message to be printed, we've already lost.

    Link: http://lkml.kernel.org/r/20180401223237.GV13332@bombadil.infradead.org
    Signed-off-by: Matthew Wilcox
    Reviewed-by: Tobin C. Harding
    Reviewed-by: Andrew Morton
    Cc: Eric Biggers
    Cc: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matthew Wilcox
     
  • test_ubsan_misaligned_access() is local to the source and does not need
    to be in global scope, so make it static.

    Cleans up sparse warning:

    lib/test_ubsan.c:91:6: warning: symbol 'test_ubsan_misaligned_access' was not declared. Should it be static?

    Link: http://lkml.kernel.org/r/20180313103048.28513-1-colin.king@canonical.com
    Signed-off-by: Colin Ian King
    Cc: Jinbum Park
    Cc: Andrey Ryabinin
    Cc: Dmitry Vyukov
    Cc: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Colin Ian King
     
  • This is a test module for UBSAN. It triggers all undefined behaviors
    that linux supports now, and detect them.

    All test-cases have passed by compiling with gcc-5.5.0.

    If use gcc-4.9.x, misaligned, out-of-bounds, object-size-mismatch will not
    be detected. Because gcc-4.9.x doesn't support them.

    Link: http://lkml.kernel.org/r/20180309102247.GA2944@pjb1027-Latitude-E5410
    Signed-off-by: Jinbum Park
    Cc: Andrey Ryabinin
    Cc: Dmitry Vyukov
    Cc: Kees Cook
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jinbum Park
     
  • This avoids an accidental stack VLA (since the compiler thinks the value
    of "len" can change, even when marked "const"). This just replaces it
    with a #define so it will DTRT.

    Seen with -Wvla. Fixed as part of the directive to remove all VLAs from
    the kernel: https://lkml.org/lkml/2018/3/7/621

    Link: http://lkml.kernel.org/r/20180307212555.GA17927@beast
    Signed-off-by: Kees Cook
    Reviewed-by: Andrew Morton
    Cc: Yury Norov
    Cc: Andy Shevchenko
    Cc: Matthew Wilcox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kees Cook
     
  • Keep all of the SOFTLOCKUP kconfig symbols together (instead of
    injecting the HARDLOCKUP symbols in the midst of them) so that the
    config tools display them with their dependencies.

    Tested with 'make {menuconfig/nconfig/gconfig/xconfig}'.

    Link: http://lkml.kernel.org/r/6be2d9ed-4656-5b94-460d-7f051e2c7570@infradead.org
    Fixes: 05a4a9527931 ("kernel/watchdog: split up config options")
    Signed-off-by: Randy Dunlap
    Cc: Nicholas Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • seq_put_decimal_ull_w(m, str, val, width) prints a decimal number with a
    specified minimal field width.

    It is equivalent of seq_printf(m, "%s%*d", str, width, val), but it
    works much faster.

    == test_smaps.py
    num = 0
    with open("/proc/1/smaps") as f:
    for x in xrange(10000):
    data = f.read()
    f.seek(0, 0)
    ==

    == Before patch ==
    $ time python test_smaps.py
    real 0m4.593s
    user 0m0.398s
    sys 0m4.158s

    == After patch ==
    $ time python test_smaps.py
    real 0m3.828s
    user 0m0.413s
    sys 0m3.408s

    $ perf -g record python test_smaps.py
    == Before patch ==
    - 79.01% 3.36% python [kernel.kallsyms] [k] show_smap.isra.33
    - 75.65% show_smap.isra.33
    + 48.85% seq_printf
    + 15.75% __walk_page_range
    + 9.70% show_map_vma.isra.23
    0.61% seq_puts

    == After patch ==
    - 75.51% 4.62% python [kernel.kallsyms] [k] show_smap.isra.33
    - 70.88% show_smap.isra.33
    + 24.82% seq_put_decimal_ull_w
    + 19.78% __walk_page_range
    + 12.74% seq_printf
    + 11.08% show_map_vma.isra.23
    + 1.68% seq_puts

    [akpm@linux-foundation.org: fix drivers/of/unittest.c build]
    Link: http://lkml.kernel.org/r/20180212074931.7227-1-avagin@openvz.org
    Signed-off-by: Andrei Vagin
    Cc: Alexey Dobriyan
    Cc: KAMEZAWA Hiroyuki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrei Vagin
     
  • A compiler can optimize away memset calls by replacing them with mov
    instructions. There are KASAN tests that specifically test that KASAN
    correctly handles memset calls so we don't want this optimization to
    happen.

    The solution is to add -fno-builtin flag to test_kasan.ko

    Link: http://lkml.kernel.org/r/105ec9a308b2abedb1a0d1fdced0c22d765e4732.1519924383.git.andreyknvl@google.com
    Signed-off-by: Andrey Konovalov
    Acked-by: Andrey Ryabinin
    Cc: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc: Geert Uytterhoeven
    Cc: Nick Terrell
    Cc: Chris Mason
    Cc: Yury Norov
    Cc: Al Viro
    Cc: "Luis R . Rodriguez"
    Cc: Palmer Dabbelt
    Cc: "Paul E . McKenney"
    Cc: Jeff Layton
    Cc: "Jason A . Donenfeld"
    Cc: Kostya Serebryany
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrey Konovalov
     
  • When an invalid-free is triggered by one of the KASAN tests, the object
    doesn't actually get freed. This later leads to a BUG failure in
    kmem_cache_destroy that checks that there are no allocated objects in
    the cache that is being destroyed.

    Fix this by calling kmem_cache_free with the proper object address after
    the call that triggers invalid-free.

    Link: http://lkml.kernel.org/r/286eaefc0a6c3fa9b83b87e7d6dc0fbb5b5c9926.1519924383.git.andreyknvl@google.com
    Signed-off-by: Andrey Konovalov
    Acked-by: Andrey Ryabinin
    Cc: Alexander Potapenko
    Cc: Dmitry Vyukov
    Cc: Geert Uytterhoeven
    Cc: Nick Terrell
    Cc: Chris Mason
    Cc: Yury Norov
    Cc: Al Viro
    Cc: "Luis R . Rodriguez"
    Cc: Palmer Dabbelt
    Cc: "Paul E . McKenney"
    Cc: Jeff Layton
    Cc: "Jason A . Donenfeld"
    Cc: Kostya Serebryany
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrey Konovalov
     

11 Apr, 2018

2 commits

  • The code refactoring by commit 0176adb00406 ("swiotlb: refactor coherent
    buffer allocation") made swiotlb_alloc_buffer almost always failing due
    to a thinko: namely, the function evaluates the dma_coherent_ok call
    incorrectly and dealing as if it's invalid. This ends up with weird
    errors like iwlwifi probe failure or amdgpu screen flickering.

    This patch corrects the logic error.

    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1088658
    Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=1088902
    Fixes: 0176adb00406 ("swiotlb: refactor coherent buffer allocation")
    Cc: # v4.16+
    Signed-off-by: Takashi Iwai
    Signed-off-by: Christoph Hellwig

    Takashi Iwai
     
  • Pull tracing updates from Steven Rostedt:
    "New features:

    - Tom Zanussi's extended histogram work.

    This adds the synthetic events to have histograms from multiple
    event data Adds triggers "onmatch" and "onmax" to call the
    synthetic events Several updates to the histogram code from this

    - Allow way to nest ring buffer calls in the same context

    - Allow absolute time stamps in ring buffer

    - Rewrite of filter code parsing based on Al Viro's suggestions

    - Setting of trace_clock to global if TSC is unstable (on boot)

    - Better OOM handling when allocating large ring buffers

    - Added initcall tracepoints (consolidated initcall_debug code with
    them)

    And other various fixes and clean ups"

    * tag 'trace-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (68 commits)
    init: Have initcall_debug still work without CONFIG_TRACEPOINTS
    init, tracing: Have printk come through the trace events for initcall_debug
    init, tracing: instrument security and console initcall trace events
    init, tracing: Add initcall trace events
    tracing: Add rcu dereference annotation for test func that touches filter->prog
    tracing: Add rcu dereference annotation for filter->prog
    tracing: Fixup logic inversion on setting trace_global_clock defaults
    tracing: Hide global trace clock from lockdep
    ring-buffer: Add set/clear_current_oom_origin() during allocations
    ring-buffer: Check if memory is available before allocation
    lockdep: Add print_irqtrace_events() to __warn
    vsprintf: Do not preprocess non-dereferenced pointers for bprintf (%px and %pK)
    tracing: Uninitialized variable in create_tracing_map_fields()
    tracing: Make sure variable string fields are NULL-terminated
    tracing: Add action comparisons when testing matching hist triggers
    tracing: Don't add flag strings when displaying variable references
    tracing: Fix display of hist trigger expressions containing timestamps
    ftrace: Drop a VLA in module_exists()
    tracing: Mention trace_clock=global when warning about unstable clocks
    tracing: Default to using trace_global_clock if sched_clock is unstable
    ...

    Linus Torvalds
     

10 Apr, 2018

1 commit

  • swiotlb_alloc() calls dma_direct_alloc(), which can satisfy lower than 32-bit
    DMA mask requests using GFP_DMA if the architecture supports it. Various
    x86 drivers rely on that, so we need to support that. At the same time
    the whole kernel expects a 32-bit DMA mask to just work, so the other magic
    in swiotlb_dma_supported() isn't actually needed either.

    Reported-by: Dominik Brodowski
    Signed-off-by: Christoph Hellwig
    Cc: Konrad Rzeszutek Wilk
    Cc: Linus Torvalds
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Cc: iommu@lists.linux-foundation.org
    Fixes: 6e4bf5867783 ("x86/dma: Use generic swiotlb_ops")
    Link: http://lkml.kernel.org/r/20180409091517.6619-2-hch@lst.de
    Signed-off-by: Ingo Molnar

    Christoph Hellwig
     

08 Apr, 2018

1 commit

  • Pull powerpc updates from Michael Ellerman:
    "Notable changes:

    - Support for 4PB user address space on 64-bit, opt-in via mmap().

    - Removal of POWER4 support, which was accidentally broken in 2016
    and no one noticed, and blocked use of some modern instructions.

    - Workarounds so that the hypervisor can enable Transactional Memory
    on Power9.

    - A series to disable the DAWR (Data Address Watchpoint Register) on
    Power9.

    - More information displayed in the meltdown/spectre_v1/v2 sysfs
    files.

    - A vpermxor (Power8 Altivec) implementation for the raid6 Q
    Syndrome.

    - A big series to make the allocation of our pacas (per cpu area),
    kernel page tables, and per-cpu stacks NUMA aware when using the
    Radix MMU on Power9.

    And as usual many fixes, reworks and cleanups.

    Thanks to: Aaro Koskinen, Alexandre Belloni, Alexey Kardashevskiy,
    Alistair Popple, Andy Shevchenko, Aneesh Kumar K.V, Anshuman Khandual,
    Balbir Singh, Benjamin Herrenschmidt, Christophe Leroy, Christophe
    Lombard, Cyril Bur, Daniel Axtens, Dave Young, Finn Thain, Frederic
    Barrat, Gustavo Romero, Horia Geantă, Jonathan Neuschäfer, Kees Cook,
    Larry Finger, Laurent Dufour, Laurent Vivier, Logan Gunthorpe,
    Madhavan Srinivasan, Mark Greer, Mark Hairgrove, Markus Elfring,
    Mathieu Malaterre, Matt Brown, Matt Evans, Mauricio Faria de Oliveira,
    Michael Neuling, Naveen N. Rao, Nicholas Piggin, Paul Mackerras,
    Philippe Bergheaud, Ram Pai, Rob Herring, Sam Bobroff, Segher
    Boessenkool, Simon Guo, Simon Horman, Stewart Smith, Sukadev
    Bhattiprolu, Suraj Jitindar Singh, Thiago Jung Bauermann, Vaibhav
    Jain, Vaidyanathan Srinivasan, Vasant Hegde, Wei Yongjun"

    * tag 'powerpc-4.17-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (207 commits)
    powerpc/64s/idle: Fix restore of AMOR on POWER9 after deep sleep
    powerpc/64s: Fix POWER9 DD2.2 and above in cputable features
    powerpc/64s: Fix pkey support in dt_cpu_ftrs, add CPU_FTR_PKEY bit
    powerpc/64s: Fix dt_cpu_ftrs to have restore_cpu clear unwanted LPCR bits
    Revert "powerpc/64s/idle: POWER9 ESL=0 stop avoid save/restore overhead"
    powerpc: iomap.c: introduce io{read|write}64_{lo_hi|hi_lo}
    powerpc: io.h: move iomap.h include so that it can use readq/writeq defs
    cxl: Fix possible deadlock when processing page faults from cxllib
    powerpc/hw_breakpoint: Only disable hw breakpoint if cpu supports it
    powerpc/mm/radix: Update command line parsing for disable_radix
    powerpc/mm/radix: Parse disable_radix commandline correctly.
    powerpc/mm/hugetlb: initialize the pagetable cache correctly for hugetlb
    powerpc/mm/radix: Update pte fragment count from 16 to 256 on radix
    powerpc/mm/keys: Update documentation and remove unnecessary check
    powerpc/64s/idle: POWER9 ESL=0 stop avoid save/restore overhead
    powerpc/64s/idle: Consolidate power9_offline_stop()/power9_idle_stop()
    powerpc/powernv: Always stop secondaries before reboot/shutdown
    powerpc: hard disable irqs in smp_send_stop loop
    powerpc: use NMI IPI for smp_send_stop
    powerpc/powernv: Fix SMT4 forcing idle code
    ...

    Linus Torvalds
     

07 Apr, 2018

2 commits

  • Pull PCI updates from Bjorn Helgaas:

    - move pci_uevent_ers() out of pci.h (Michael Ellerman)

    - skip ASPM common clock warning if BIOS already configured it (Sinan
    Kaya)

    - fix ASPM Coverity warning about threshold_ns (Gustavo A. R. Silva)

    - remove last user of pci_get_bus_and_slot() and the function itself
    (Sinan Kaya)

    - add decoding for 16 GT/s link speed (Jay Fang)

    - add interfaces to get max link speed and width (Tal Gilboa)

    - add pcie_bandwidth_capable() to compute max supported link bandwidth
    (Tal Gilboa)

    - add pcie_bandwidth_available() to compute bandwidth available to
    device (Tal Gilboa)

    - add pcie_print_link_status() to log link speed and whether it's
    limited (Tal Gilboa)

    - use PCI core interfaces to report when device performance may be
    limited by its slot instead of doing it in each driver (Tal Gilboa)

    - fix possible cpqphp NULL pointer dereference (Shawn Lin)

    - rescan more of the hierarchy on ACPI hotplug to fix Thunderbolt/xHCI
    hotplug (Mika Westerberg)

    - add support for PCI I/O port space that's neither directly accessible
    via CPU in/out instructions nor directly mapped into CPU physical
    memory space. This is fairly intrusive and includes minor changes to
    interfaces used for I/O space on most platforms (Zhichang Yuan, John
    Garry)

    - add support for HiSilicon Hip06/Hip07 LPC I/O space (Zhichang Yuan,
    John Garry)

    - use PCI_EXP_DEVCTL2_COMP_TIMEOUT in rapidio/tsi721 (Bjorn Helgaas)

    - remove possible NULL pointer dereference in of_pci_bus_find_domain_nr()
    (Shawn Lin)

    - report quirk timings with dev_info (Bjorn Helgaas)

    - report quirks that take longer than 10ms (Bjorn Helgaas)

    - add and use Altera Vendor ID (Johannes Thumshirn)

    - tidy Makefiles and comments (Bjorn Helgaas)

    - don't set up INTx if MSI or MSI-X is enabled to align cris, frv,
    ia64, and mn10300 with x86 (Bjorn Helgaas)

    - move pcieport_if.h to drivers/pci/pcie/ to encapsulate it (Frederick
    Lawler)

    - merge pcieport_if.h into portdrv.h (Bjorn Helgaas)

    - move workaround for BIOS PME issue from portdrv to PCI core (Bjorn
    Helgaas)

    - completely disable portdrv with "pcie_ports=compat" (Bjorn Helgaas)

    - remove portdrv link order dependency (Bjorn Helgaas)

    - remove support for unused VC portdrv service (Bjorn Helgaas)

    - simplify portdrv feature permission checking (Bjorn Helgaas)

    - remove "pcie_hp=nomsi" parameter (use "pci=nomsi" instead) (Bjorn
    Helgaas)

    - remove unnecessary "pcie_ports=auto" parameter (Bjorn Helgaas)

    - use cached AER capability offset (Frederick Lawler)

    - don't enable DPC if BIOS hasn't granted AER control (Mika Westerberg)

    - rename pcie-dpc.c to dpc.c (Bjorn Helgaas)

    - use generic pci_mmap_resource_range() instead of powerpc and xtensa
    arch-specific versions (David Woodhouse)

    - support arbitrary PCI host bridge offsets on sparc (Yinghai Lu)

    - remove System and Video ROM reservations on sparc (Bjorn Helgaas)

    - probe for device reset support during enumeration instead of runtime
    (Bjorn Helgaas)

    - add ACS quirk for Ampere (née APM) root ports (Feng Kan)

    - add function 1 DMA alias quirk for Marvell 88SE9220 (Thomas
    Vincent-Cross)

    - protect device restore with device lock (Sinan Kaya)

    - handle failure of FLR gracefully (Sinan Kaya)

    - handle CRS (config retry status) after device resets (Sinan Kaya)

    - skip various config reads for SR-IOV VFs as an optimization
    (KarimAllah Ahmed)

    - consolidate VPD code in vpd.c (Bjorn Helgaas)

    - add Tegra dependency on PCI_MSI_IRQ_DOMAIN (Arnd Bergmann)

    - add DT support for R-Car r8a7743 (Biju Das)

    - fix a PCI_EJECT vs PCI_BUS_RELATIONS race condition in Hyper-V host
    bridge driver that causes a general protection fault (Dexuan Cui)

    - fix Hyper-V host bridge hang in MSI setup on 1-vCPU VMs with SR-IOV
    (Dexuan Cui)

    - fix Hyper-V host bridge hang when ejecting a VF before setting up MSI
    (Dexuan Cui)

    - make several structures static (Fengguang Wu)

    - increase number of MSI IRQs supported by Synopsys DesignWare bridges
    from 32 to 256 (Gustavo Pimentel)

    - implemented multiplexed IRQ domain API and remove obsolete MSI IRQ
    API from DesignWare drivers (Gustavo Pimentel)

    - add Tegra power management support (Manikanta Maddireddy)

    - add Tegra loadable module support (Manikanta Maddireddy)

    - handle 64-bit BARs correctly in endpoint support (Niklas Cassel)

    - support optional regulator for HiSilicon STB (Shawn Guo)

    - use regulator bulk API for Qualcomm apq8064 (Srinivas Kandagatla)

    - support power supplies for Qualcomm msm8996 (Srinivas Kandagatla)

    * tag 'pci-v4.17-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (123 commits)
    MAINTAINERS: Add John Garry as maintainer for HiSilicon LPC driver
    HISI LPC: Add ACPI support
    ACPI / scan: Do not enumerate Indirect IO host children
    ACPI / scan: Rename acpi_is_serial_bus_slave() for more general use
    HISI LPC: Support the LPC host on Hip06/Hip07 with DT bindings
    of: Add missing I/O range exception for indirect-IO devices
    PCI: Apply the new generic I/O management on PCI IO hosts
    PCI: Add fwnode handler as input param of pci_register_io_range()
    PCI: Remove __weak tag from pci_register_io_range()
    MAINTAINERS: Add missing /drivers/pci/cadence directory entry
    fm10k: Report PCIe link properties with pcie_print_link_status()
    net/mlx5e: Use pcie_bandwidth_available() to compute bandwidth
    net/mlx5: Report PCIe link properties with pcie_print_link_status()
    net/mlx4_core: Report PCIe link properties with pcie_print_link_status()
    PCI: Add pcie_print_link_status() to log link speed and whether it's limited
    PCI: Add pcie_bandwidth_available() to compute bandwidth available to device
    misc: pci_endpoint_test: Handle 64-bit BARs properly
    PCI: designware-ep: Make dw_pcie_ep_reset_bar() handle 64-bit BARs properly
    PCI: endpoint: Make sure that BAR_5 does not have 64-bit flag set when clearing
    PCI: endpoint: Make epc->ops->clear_bar()/pci_epc_clear_bar() take struct *epf_bar
    ...

    Linus Torvalds
     
  • Merge updates from Andrew Morton:

    - a few misc things

    - ocfs2 updates

    - the v9fs maintainers have been missing for a long time. I've taken
    over v9fs patch slinging.

    - most of MM

    * emailed patches from Andrew Morton : (116 commits)
    mm,oom_reaper: check for MMF_OOM_SKIP before complaining
    mm/ksm: fix interaction with THP
    mm/memblock.c: cast constant ULLONG_MAX to phys_addr_t
    headers: untangle kmemleak.h from mm.h
    include/linux/mmdebug.h: make VM_WARN* non-rvals
    mm/page_isolation.c: make start_isolate_page_range() fail if already isolated
    mm: change return type to vm_fault_t
    mm, oom: remove 3% bonus for CAP_SYS_ADMIN processes
    mm, page_alloc: wakeup kcompactd even if kswapd cannot free more memory
    kernel/fork.c: detect early free of a live mm
    mm: make counting of list_lru_one::nr_items lockless
    mm/swap_state.c: make bool enable_vma_readahead and swap_vma_readahead() static
    block_invalidatepage(): only release page if the full page was invalidated
    mm: kernel-doc: add missing parameter descriptions
    mm/swap.c: remove @cold parameter description for release_pages()
    mm/nommu: remove description of alloc_vm_area
    zram: drop max_zpage_size and use zs_huge_class_size()
    zsmalloc: introduce zs_huge_class_size()
    mm: fix races between swapoff and flush dcache
    fs/direct-io.c: minor cleanups in do_blockdev_direct_IO
    ...

    Linus Torvalds
     

06 Apr, 2018

6 commits

  • Commit 841a915d20c7b2 ("printf: Do not have bprintf dereference pointers")
    would preprocess various pointers that are dereferenced in the bprintf()
    because the recording and printing are done at two different times. Some
    pointers stayed dereferenced in the ring buffer because user space could
    handle them (namely "%pS" and friends). Pointers that are not dereferenced
    should not be processed immediately but instead just saved directly.

    Cc: stable@vger.kernel.org
    Fixes: 841a915d20c7b2 ("printf: Do not have bprintf dereference pointers")
    Signed-off-by: Steven Rostedt (VMware)

    Steven Rostedt (VMware)
     
  • Currently #includes for no obvious
    reason. It looks like it's only a convenience, so remove kmemleak.h
    from slab.h and add to any users of kmemleak_* that
    don't already #include it. Also remove from source
    files that do not use it.

    This is tested on i386 allmodconfig and x86_64 allmodconfig. It would
    be good to run it through the 0day bot for other $ARCHes. I have
    neither the horsepower nor the storage space for the other $ARCHes.

    Update: This patch has been extensively build-tested by both the 0day
    bot & kisskb/ozlabs build farms. Both of them reported 2 build failures
    for which patches are included here (in v2).

    [ slab.h is the second most used header file after module.h; kernel.h is
    right there with slab.h. There could be some minor error in the
    counting due to some #includes having comments after them and I didn't
    combine all of those. ]

    [akpm@linux-foundation.org: security/keys/big_key.c needs vmalloc.h, per sfr]
    Link: http://lkml.kernel.org/r/e4309f98-3749-93e1-4bb7-d9501a39d015@infradead.org
    Link: http://kisskb.ellerman.id.au/kisskb/head/13396/
    Signed-off-by: Randy Dunlap
    Reviewed-by: Ingo Molnar
    Reported-by: Michael Ellerman [2 build failures]
    Reported-by: Fengguang Wu [2 build failures]
    Reviewed-by: Andrew Morton
    Cc: Wei Yongjun
    Cc: Luis R. Rodriguez
    Cc: Greg Kroah-Hartman
    Cc: Mimi Zohar
    Cc: John Johansen
    Cc: Stephen Rothwell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • syzbot is catching stalls at __bitmap_parselist()
    (https://syzkaller.appspot.com/bug?id=ad7e0351fbc90535558514a71cd3edc11681997a).
    The trigger is

    unsigned long v = 0;
    bitmap_parselist("7:,", &v, BITS_PER_LONG);

    which results in hitting infinite loop at

    while (a
    Reported-by: Tetsuo Handa
    Reported-by: syzbot
    Cc: Noam Camus
    Cc: Rasmus Villemoes
    Cc: Matthew Wilcox
    Cc: Mauro Carvalho Chehab
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yury Norov
     
  • Pull printk updates from Petr Mladek:

    - Add info about loaded kdump kernel into the dump stack header

    - Move dump-stack related code from printk.c to lib/dump_stack.c

    - Write message about suspending consoles in KERN_INFO log level

    * 'for-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk:
    printk: change message to pr_info
    printk: move dump stack related code to lib/dump_stack.c
    print kdump kernel loaded status in stack dump

    Linus Torvalds
     
  • Pull block layer updates from Jens Axboe:
    "It's a pretty quiet round this time, which is nice. This contains:

    - series from Bart, cleaning up the way we set/test/clear atomic
    queue flags.

    - series from Bart, fixing races between gendisk and queue
    registration and removal.

    - set of bcache fixes and improvements from various folks, by way of
    Michael Lyle.

    - set of lightnvm updates from Matias, most of it being the 1.2 to
    2.0 transition.

    - removal of unused DIO flags from Nikolay.

    - blk-mq/sbitmap memory ordering fixes from Omar.

    - divide-by-zero fix for BFQ from Paolo.

    - minor documentation patches from Randy.

    - timeout fix from Tejun.

    - Alpha "can't write a char atomically" fix from Mikulas.

    - set of NVMe fixes by way of Keith.

    - bsg and bsg-lib improvements from Christoph.

    - a few sed-opal fixes from Jonas.

    - cdrom check-disk-change deadlock fix from Maurizio.

    - various little fixes, comment fixes, etc from various folks"

    * tag 'for-4.17/block-20180402' of git://git.kernel.dk/linux-block: (139 commits)
    blk-mq: Directly schedule q->timeout_work when aborting a request
    blktrace: fix comment in blktrace_api.h
    lightnvm: remove function name in strings
    lightnvm: pblk: remove some unnecessary NULL checks
    lightnvm: pblk: don't recover unwritten lines
    lightnvm: pblk: implement 2.0 support
    lightnvm: pblk: implement get log report chunk
    lightnvm: pblk: rename ppaf* to addrf*
    lightnvm: pblk: check for supported version
    lightnvm: implement get log report chunk helpers
    lightnvm: make address conversions depend on generic device
    lightnvm: add support for 2.0 address format
    lightnvm: normalize geometry nomenclature
    lightnvm: complete geo structure with maxoc*
    lightnvm: add shorten OCSSD version in geo
    lightnvm: add minor version to generic geometry
    lightnvm: simplify geometry structure
    lightnvm: pblk: refactor init/exit sequences
    lightnvm: Avoid validation of default op value
    lightnvm: centralize permission check for lightnvm ioctl
    ...

    Linus Torvalds
     
  • Pull trivial tree updates from Jiri Kosina.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial:
    kfifo: fix inaccurate comment
    tools/thermal: tmon: fix for segfault
    net: Spelling s/stucture/structure/
    edd: don't spam log if no EDD information is present
    Documentation: Fix early-microcode.txt references after file rename
    tracing: Block comments should align the * on each line
    treewide: Fix typos in printk
    GenWQE: Fix a typo in two comments
    treewide: Align function definition open/close braces

    Linus Torvalds
     

05 Apr, 2018

4 commits

  • Pull char/misc updates from Greg KH:
    "Here is the big set of char/misc driver patches for 4.17-rc1.

    There are a lot of little things in here, nothing huge, but all
    important to the different hardware types involved:

    - thunderbolt driver updates

    - parport updates (people still care...)

    - nvmem driver updates

    - mei updates (as always)

    - hwtracing driver updates

    - hyperv driver updates

    - extcon driver updates

    - ... and a handful of even smaller driver subsystem and individual
    driver updates

    All of these have been in linux-next with no reported issues"

    * tag 'char-misc-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (149 commits)
    hwtracing: Add HW tracing support menu
    intel_th: Add ACPI glue layer
    intel_th: Allow forcing host mode through drvdata
    intel_th: Pick up irq number from resources
    intel_th: Don't touch switch routing in host mode
    intel_th: Use correct method of finding hub
    intel_th: Add SPDX GPL-2.0 header to replace GPLv2 boilerplate
    stm class: Make dummy's master/channel ranges configurable
    stm class: Add SPDX GPL-2.0 header to replace GPLv2 boilerplate
    MAINTAINERS: Bestow upon myself the care for drivers/hwtracing
    hv: add SPDX license id to Kconfig
    hv: add SPDX license to trace
    Drivers: hv: vmbus: do not mark HV_PCIE as perf_device
    Drivers: hv: vmbus: respect what we get from hv_get_synint_state()
    /dev/mem: Avoid overwriting "err" in read_mem()
    eeprom: at24: use SPDX identifier instead of GPL boiler-plate
    eeprom: at24: simplify the i2c functionality checking
    eeprom: at24: fix a line break
    eeprom: at24: tweak newlines
    eeprom: at24: refactor at24_probe()
    ...

    Linus Torvalds
     
  • Pull driver core updates from Greg KH:
    "Here is the "big" set of driver core patches for 4.17-rc1.

    There's really not much here, just a bunch of firmware code
    refactoring from Luis as he attempts to wrangle that codebase into
    something that is managable, along with a bunch of userspace tests for
    it. Other than that, a handful of small bugfixes and reverts of things
    that didn't work out.

    Full details are in the shortlog, it's not all that much.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'driver-core-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (30 commits)
    drivers: base: remove check for callback in coredump_store()
    mt7601u: use firmware_request_cache() to address cache on reboot
    firmware: add firmware_request_cache() to help with cache on reboot
    firmware: fix typo on pr_info_once() when ignore_sysfs_fallback is used
    firmware: explicitly include vmalloc.h
    firmware: ensure the firmware cache is not used on incompatible calls
    test_firmware: modify custom fallback tests to use unique files
    firmware: add helper to check to see if fw cache is setup
    firmware: fix checking for return values for fw_add_devm_name()
    rename: _request_firmware_load() fw_load_sysfs_fallback()
    test_firmware: test three firmware kernel configs using a proc knob
    test_firmware: expand on library with shared helpers
    firmware: enable to force disable the fallback mechanism at run time
    firmware: enable run time change of forcing fallback loader
    firmware: move firmware loader into its own directory
    firmware: split firmware fallback functionality into its own file
    firmware: move loading timeout under struct firmware_fallback_config
    firmware: use helpers for setting up a temporary cache timeout
    firmware: simplify CONFIG_FW_LOADER_USER_HELPER_FALLBACK further
    drivers: base: add description for .coredump() callback
    ...

    Linus Torvalds
     
  • Pull staging/IIO updates from Greg KH:
    "Here is the big set of Staging/IIO driver patches for 4.17-rc1.

    It is a lot, over 500 changes, but not huge by previous kernel release
    standards. We deleted more lines than we added again (27k added vs.
    91k remvoed), thanks to finally being able to delete the IRDA drivers
    and networking code.

    We also deleted the ccree crypto driver, but that's coming back in
    through the crypto tree to you, in a much cleaned-up form.

    Added this round is at lot of "mt7621" device support, which is for an
    embedded device that Neil Brown cares about, and of course a handful
    of new IIO drivers as well.

    And finally, the fsl-mc core code moved out of the staging tree to the
    "real" part of the kernel, which is nice to see happen as well.

    Full details are in the shortlog, which has all of the tiny cleanup
    patches described.

    All of these have been in linux-next for a while with no reported
    issues"

    * tag 'staging-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (579 commits)
    staging: rtl8723bs: Remove yield call, replace with cond_resched()
    staging: rtl8723bs: Replace yield() call with cond_resched()
    staging: rtl8723bs: Remove unecessary newlines from 'odm.h'.
    staging: rtl8723bs: Rework 'struct _ODM_Phy_Status_Info_' coding style.
    staging: rtl8723bs: Rework 'struct _ODM_Per_Pkt_Info_' coding style.
    staging: rtl8723bs: Replace NULL pointer comparison with '!'.
    staging: rtl8723bs: Factor out rtl8723bs_recv_tasklet() sections.
    staging: rtl8723bs: Fix function signature that goes over 80 characters.
    staging: rtl8723bs: Fix lines too long in update_recvframe_attrib().
    staging: rtl8723bs: Remove unnecessary blank lines in 'rtl8723bs_recv.c'.
    staging: rtl8723bs: Change camel case to snake case in 'rtl8723bs_recv.c'.
    staging: rtl8723bs: Add missing braces in else statement.
    staging: rtl8723bs: Add spaces around ternary operators.
    staging: rtl8723bs: Fix lines with trailing open parentheses.
    staging: rtl8723bs: Remove unnecessary length #define's.
    staging: rtl8723bs: Fix IEEE80211 authentication algorithm constants.
    staging: rtl8723bs: Fix alignment in rtw_wx_set_auth().
    staging: rtl8723bs: Remove braces from single statement conditionals.
    staging: rtl8723bs: Remove unecessary braces from switch statement.
    staging: rtl8723bs: Fix newlines in rtw_wx_set_auth().
    ...

    Linus Torvalds
     
  • Pull btrfs updates from David Sterba:
    "There are a several user visible changes, the rest is mostly invisible
    and continues to clean up the whole code base.

    User visible changes:
    - new mount option nossd_spread (pair for ssd_spread)

    - mount option subvolid will detect junk after the number and fail
    the mount

    - add message after cancelled device replace

    - direct module dependency on libcrc32, removed own crc wrappers

    - removed user space transaction ioctls

    - use lighter locking when reading /proc/self/mounts, RCU instead of
    mutex to avoid unnecessary contention

    Enhancements:
    - skip writeback of last page when truncating file to same size

    - send: do not issue unnecessary truncate operations

    - mount option token specifiers: use %u for unsigned values, more
    validation

    - selftests: more tree block validations

    qgroups:
    - preparatory work for splitting reservation types for data and
    metadata, this should allow for more accurate tracking and fix some
    issues with underflows or do further enhancements

    - split metadata reservations for started and joined transaction so
    they do not get mixed up and are accounted correctly at commit time

    - with the above, it's possible to revert patch that potentially
    deadlocks when trying to make more space by explicitly committing
    when the quota limit is hit

    - fix root item corruption when multiple same source snapshots are
    created with quota enabled

    RAID56:
    - make sure target is identical to source when raid56 rebuild fails
    after dev-replace

    - faster rebuild during scrub, batch by stripes and not
    block-by-block

    - make more use of cached data when rebuilding from a missing device

    Fixes:
    - null pointer deref when device replace target is missing

    - fix fsync after hole punching when using no-holes feature

    - fix lockdep splat when allocating percpu data with wrong GFP flags

    Cleanups, refactoring, core changes:
    - drop redunant parameters from various functions

    - kill and opencode trivial helpers

    - __cold/__exit function annotations

    - dead code removal

    - continued audit and documentation of memory barriers

    - error handling: handle removal from uuid tree

    - error handling: remove handling of impossible condtitons

    - more debugging or error messages

    - updated tracepoints

    - one VLA use removal (and one still left)"

    * tag 'for-4.17-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (164 commits)
    btrfs: lift errors from add_extent_changeset to the callers
    Btrfs: print error messages when failing to read trees
    btrfs: user proper type for btrfs_mask_flags flags
    btrfs: split dev-replace locking helpers for read and write
    btrfs: remove stale comments about fs_mutex
    btrfs: use RCU in btrfs_show_devname for device list traversal
    btrfs: update barrier in should_cow_block
    btrfs: use lockdep_assert_held for mutexes
    btrfs: use lockdep_assert_held for spinlocks
    btrfs: Validate child tree block's level and first key
    btrfs: tests/qgroup: Fix wrong tree backref level
    Btrfs: fix copy_items() return value when logging an inode
    Btrfs: fix fsync after hole punching when using no-holes feature
    btrfs: use helper to set ulist aux from a qgroup
    Revert "btrfs: qgroups: Retry after commit on getting EDQUOT"
    btrfs: qgroup: Update trace events for metadata reservation
    btrfs: qgroup: Use root::qgroup_meta_rsv_* to record qgroup meta reserved space
    btrfs: delayed-inode: Use new qgroup meta rsv for delayed inode and item
    btrfs: qgroup: Use separate meta reservation type for delalloc
    btrfs: qgroup: Introduce function to convert META_PREALLOC into META_PERTRANS
    ...

    Linus Torvalds
     

04 Apr, 2018

2 commits

  • Pull Kbuild updates from Masahiro Yamada:

    - add a shell script to get Clang version

    - improve portability of build scripts

    - drop always-enabled CONFIG_THIN_ARCHIVE and remove unused code

    - rename built-in.o which is now thin archive to built-in.a

    - process clean/build targets one by one to get along with -j option

    - simplify ld-option

    - improve building with CONFIG_TRIM_UNUSED_KSYMS

    - define KBUILD_MODNAME even for objects shared among multiple modules

    - avoid linking multiple instances of same objects from composite
    objects

    - move to c_flags to include it only for C
    files

    - clean-up various Makefiles

    * tag 'kbuild-v4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild: (29 commits)
    kbuild: get out of
    kbuild: clean up link rule of composite modules
    kbuild: clean up archive rule of built-in.a
    kbuild: remove partial section mismatch detection for built-in.a
    net: liquidio: clean up Makefile for simpler composite object handling
    lib: zstd: clean up Makefile for simpler composite object handling
    kbuild: link $(real-obj-y) instead of $(obj-y) into built-in.a
    kbuild: rename real-objs-y/m to real-obj-y/m
    kbuild: move modname and modname-multi close to modname_flags
    kbuild: simplify modname calculation
    kbuild: fix modname for composite modules
    kbuild: define KBUILD_MODNAME even if multiple modules share objects
    kbuild: remove unnecessary $(subst $(obj)/, , ...) in modname-multi
    kbuild: Use ls(1) instead of stat(1) to obtain file size
    kbuild: link vmlinux only once for CONFIG_TRIM_UNUSED_KSYMS
    kbuild: move include/config/ksym/* to include/ksym/*
    kbuild: move CONFIG_TRIM_UNUSED_KSYMS code unneeded for external module
    kbuild: restore autoksyms.h touch to the top Makefile
    kbuild: move 'scripts' target below
    kbuild: remove wrong 'touch' in adjust_autoksyms.sh
    ...

    Linus Torvalds
     
  • Pull networking updates from David Miller:

    1) Support offloading wireless authentication to userspace via
    NL80211_CMD_EXTERNAL_AUTH, from Srinivas Dasari.

    2) A lot of work on network namespace setup/teardown from Kirill Tkhai.
    Setup and cleanup of namespaces now all run asynchronously and thus
    performance is significantly increased.

    3) Add rx/tx timestamping support to mv88e6xxx driver, from Brandon
    Streiff.

    4) Support zerocopy on RDS sockets, from Sowmini Varadhan.

    5) Use denser instruction encoding in x86 eBPF JIT, from Daniel
    Borkmann.

    6) Support hw offload of vlan filtering in mvpp2 dreiver, from Maxime
    Chevallier.

    7) Support grafting of child qdiscs in mlxsw driver, from Nogah
    Frankel.

    8) Add packet forwarding tests to selftests, from Ido Schimmel.

    9) Deal with sub-optimal GSO packets better in BBR congestion control,
    from Eric Dumazet.

    10) Support 5-tuple hashing in ipv6 multipath routing, from David Ahern.

    11) Add path MTU tests to selftests, from Stefano Brivio.

    12) Various bits of IPSEC offloading support for mlx5, from Aviad
    Yehezkel, Yossi Kuperman, and Saeed Mahameed.

    13) Support RSS spreading on ntuple filters in SFC driver, from Edward
    Cree.

    14) Lots of sockmap work from John Fastabend. Applications can use eBPF
    to filter sendmsg and sendpage operations.

    15) In-kernel receive TLS support, from Dave Watson.

    16) Add XDP support to ixgbevf, this is significant because it should
    allow optimized XDP usage in various cloud environments. From Tony
    Nguyen.

    17) Add new Intel E800 series "ice" ethernet driver, from Anirudh
    Venkataramanan et al.

    18) IP fragmentation match offload support in nfp driver, from Pieter
    Jansen van Vuuren.

    19) Support XDP redirect in i40e driver, from Björn Töpel.

    20) Add BPF_RAW_TRACEPOINT program type for accessing the arguments of
    tracepoints in their raw form, from Alexei Starovoitov.

    21) Lots of striding RQ improvements to mlx5 driver with many
    performance improvements, from Tariq Toukan.

    22) Use rhashtable for inet frag reassembly, from Eric Dumazet.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1678 commits)
    net: mvneta: improve suspend/resume
    net: mvneta: split rxq/txq init and txq deinit into SW and HW parts
    ipv6: frags: fix /proc/sys/net/ipv6/ip6frag_low_thresh
    net: bgmac: Fix endian access in bgmac_dma_tx_ring_free()
    net: bgmac: Correctly annotate register space
    route: check sysctl_fib_multipath_use_neigh earlier than hash
    fix typo in command value in drivers/net/phy/mdio-bitbang.
    sky2: Increase D3 delay to sky2 stops working after suspend
    net/mlx5e: Set EQE based as default TX interrupt moderation mode
    ibmvnic: Disable irqs before exiting reset from closed state
    net: sched: do not emit messages while holding spinlock
    vlan: also check phy_driver ts_info for vlan's real device
    Bluetooth: Mark expected switch fall-throughs
    Bluetooth: Set HCI_QUIRK_SIMULTANEOUS_DISCOVERY for BTUSB_QCA_ROME
    Bluetooth: btrsi: remove unused including
    Bluetooth: hci_bcm: Remove DMI quirk for the MINIX Z83-4
    sh_eth: kill useless check in __sh_eth_get_regs()
    sh_eth: add sh_eth_cpu_data::no_xdfar flag
    ipv6: factorize sk_wmem_alloc updates done by __ip6_append_data()
    ipv4: factorize sk_wmem_alloc updates done by __ip_append_data()
    ...

    Linus Torvalds
     

03 Apr, 2018

4 commits

  • Pul removal of obsolete architecture ports from Arnd Bergmann:
    "This removes the entire architecture code for blackfin, cris, frv,
    m32r, metag, mn10300, score, and tile, including the associated device
    drivers.

    I have been working with the (former) maintainers for each one to
    ensure that my interpretation was right and the code is definitely
    unused in mainline kernels. Many had fond memories of working on the
    respective ports to start with and getting them included in upstream,
    but also saw no point in keeping the port alive without any users.

    In the end, it seems that while the eight architectures are extremely
    different, they all suffered the same fate: There was one company in
    charge of an SoC line, a CPU microarchitecture and a software
    ecosystem, which was more costly than licensing newer off-the-shelf
    CPU cores from a third party (typically ARM, MIPS, or RISC-V). It
    seems that all the SoC product lines are still around, but have not
    used the custom CPU architectures for several years at this point. In
    contrast, CPU instruction sets that remain popular and have actively
    maintained kernel ports tend to all be used across multiple licensees.

    [ See the new nds32 port merged in the previous commit for the next
    generation of "one company in charge of an SoC line, a CPU
    microarchitecture and a software ecosystem" - Linus ]

    The removal came out of a discussion that is now documented at
    https://lwn.net/Articles/748074/. Unlike the original plans, I'm not
    marking any ports as deprecated but remove them all at once after I
    made sure that they are all unused. Some architectures (notably tile,
    mn10300, and blackfin) are still being shipped in products with old
    kernels, but those products will never be updated to newer kernel
    releases.

    After this series, we still have a few architectures without mainline
    gcc support:

    - unicore32 and hexagon both have very outdated gcc releases, but the
    maintainers promised to work on providing something newer. At least
    in case of hexagon, this will only be llvm, not gcc.

    - openrisc, risc-v and nds32 are still in the process of finishing
    their support or getting it added to mainline gcc in the first
    place. They all have patched gcc-7.3 ports that work to some
    degree, but complete upstream support won't happen before gcc-8.1.
    Csky posted their first kernel patch set last week, their situation
    will be similar

    [ Palmer Dabbelt points out that RISC-V support is in mainline gcc
    since gcc-7, although gcc-7.3.0 is the recommended minimum - Linus ]"

    This really says it all:

    2498 files changed, 95 insertions(+), 467668 deletions(-)

    * tag 'arch-removal' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic: (74 commits)
    MAINTAINERS: UNICORE32: Change email account
    staging: iio: remove iio-trig-bfin-timer driver
    tty: hvc: remove tile driver
    tty: remove bfin_jtag_comm and hvc_bfin_jtag drivers
    serial: remove tile uart driver
    serial: remove m32r_sio driver
    serial: remove blackfin drivers
    serial: remove cris/etrax uart drivers
    usb: Remove Blackfin references in USB support
    usb: isp1362: remove blackfin arch glue
    usb: musb: remove blackfin port
    usb: host: remove tilegx platform glue
    pwm: remove pwm-bfin driver
    i2c: remove bfin-twi driver
    spi: remove blackfin related host drivers
    watchdog: remove bfin_wdt driver
    can: remove bfin_can driver
    mmc: remove bfin_sdh driver
    input: misc: remove blackfin rotary driver
    input: keyboard: remove bf54x driver
    ...

    Linus Torvalds
     
  • Pull x86 dma mapping updates from Ingo Molnar:
    "This tree, by Christoph Hellwig, switches over the x86 architecture to
    the generic dma-direct and swiotlb code, and also unifies more of the
    dma-direct code between architectures. The now unused x86-only
    primitives are removed"

    * 'x86-dma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    dma-mapping: Don't clear GFP_ZERO in dma_alloc_attrs
    swiotlb: Make swiotlb_{alloc,free}_buffer depend on CONFIG_DMA_DIRECT_OPS
    dma/swiotlb: Remove swiotlb_{alloc,free}_coherent()
    dma/direct: Handle force decryption for DMA coherent buffers in common code
    dma/direct: Handle the memory encryption bit in common code
    dma/swiotlb: Remove swiotlb_set_mem_attributes()
    set_memory.h: Provide set_memory_{en,de}crypted() stubs
    x86/dma: Remove dma_alloc_coherent_gfp_flags()
    iommu/intel-iommu: Enable CONFIG_DMA_DIRECT_OPS=y and clean up intel_{alloc,free}_coherent()
    iommu/amd_iommu: Use CONFIG_DMA_DIRECT_OPS=y and dma_direct_{alloc,free}()
    x86/dma/amd_gart: Use dma_direct_{alloc,free}()
    x86/dma/amd_gart: Look at dev->coherent_dma_mask instead of GFP_DMA
    x86/dma: Use generic swiotlb_ops
    x86/dma: Use DMA-direct (CONFIG_DMA_DIRECT_OPS=y)
    x86/dma: Remove dma_alloc_coherent_mask()

    Linus Torvalds
     
  • Pull locking updates from Ingo Molnar:
    "The main changes in the locking subsystem in this cycle were:

    - Add the Linux Kernel Memory Consistency Model (LKMM) subsystem,
    which is an an array of tools in tools/memory-model/ that formally
    describe the Linux memory coherency model (a.k.a.
    Documentation/memory-barriers.txt), and also produce 'litmus tests'
    in form of kernel code which can be directly executed and tested.

    Here's a high level background article about an earlier version of
    this work on LWN.net:

    https://lwn.net/Articles/718628/

    The design principles:

    "There is reason to believe that Documentation/memory-barriers.txt
    could use some help, and a major purpose of this patch is to
    provide that help in the form of a design-time tool that can
    produce all valid executions of a small fragment of concurrent
    Linux-kernel code, which is called a "litmus test". This tool's
    functionality is roughly similar to a full state-space search.
    Please note that this is a design-time tool, not useful for
    regression testing. However, we hope that the underlying
    Linux-kernel memory model will be incorporated into other tools
    capable of analyzing large bodies of code for regression-testing
    purposes."

    [...]

    "A second tool is klitmus7, which converts litmus tests to
    loadable kernel modules for direct testing. As with herd7, the
    klitmus7 code is freely available from

    http://diy.inria.fr/sources/index.html

    (and via "git" at https://github.com/herd/herdtools7)"

    [...]

    Credits go to:

    "This patch was the result of a most excellent collaboration
    founded by Jade Alglave and also including Alan Stern, Andrea
    Parri, and Luc Maranget."

    ... and to the gents listed in the MAINTAINERS entry:

    LINUX KERNEL MEMORY CONSISTENCY MODEL (LKMM)
    M: Alan Stern
    M: Andrea Parri
    M: Will Deacon
    M: Peter Zijlstra
    M: Boqun Feng
    M: Nicholas Piggin
    M: David Howells
    M: Jade Alglave
    M: Luc Maranget
    M: "Paul E. McKenney"

    The LKMM project already found several bugs in Linux locking
    primitives and improved the understanding and the documentation of
    the Linux memory model all around.

    - Add KASAN instrumentation to atomic APIs (Dmitry Vyukov)

    - Add RWSEM API debugging and reorganize the lock debugging Kconfig
    (Waiman Long)

    - ... misc cleanups and other smaller changes"

    * 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (31 commits)
    locking/Kconfig: Restructure the lock debugging menu
    locking/Kconfig: Add LOCK_DEBUGGING_SUPPORT to make it more readable
    locking/rwsem: Add DEBUG_RWSEMS to look for lock/unlock mismatches
    lockdep: Make the lock debug output more useful
    locking/rtmutex: Handle non enqueued waiters gracefully in remove_waiter()
    locking/atomic, asm-generic, x86: Add comments for atomic instrumentation
    locking/atomic, asm-generic: Add KASAN instrumentation to atomic operations
    locking/atomic/x86: Switch atomic.h to use atomic-instrumented.h
    locking/atomic, asm-generic: Add asm-generic/atomic-instrumented.h
    locking/xchg/alpha: Remove superfluous memory barriers from the _local() variants
    tools/memory-model: Finish the removal of rb-dep, smp_read_barrier_depends(), and lockless_dereference()
    tools/memory-model: Add documentation of new litmus test
    tools/memory-model: Remove mention of docker/gentoo image
    locking/memory-barriers: De-emphasize smp_read_barrier_depends() some more
    locking/lockdep: Show unadorned pointers
    mutex: Drop linkage.h from mutex.h
    tools/memory-model: Remove rb-dep, smp_read_barrier_depends, and lockless_dereference
    tools/memory-model: Convert underscores to hyphens
    tools/memory-model: Add a S lock-based external-view litmus test
    tools/memory-model: Add required herd7 version to README file
    ...

    Linus Torvalds
     
  • Pull debugobjects updates from Ingo Molnar:
    "Misc improvements:

    - add better instrumentation/debugging

    - optimize the freeing logic improve performance"

    * 'core-debugobjects-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    debugobjects: Avoid another unused variable warning
    debugobjects: Fix debug_objects_freed accounting
    debugobjects: Use global free list in __debug_check_no_obj_freed()
    debugobjects: Use global free list in free_object()
    debugobjects: Add global free list and the counter
    debugobjects: Export max loops counter

    Linus Torvalds
     

01 Apr, 2018

2 commits

  • Daniel Borkmann says:

    ====================
    pull-request: bpf-next 2018-03-31

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

    The main changes are:

    1) Add raw BPF tracepoint API in order to have a BPF program type that
    can access kernel internal arguments of the tracepoints in their
    raw form similar to kprobes based BPF programs. This infrastructure
    also adds a new BPF_RAW_TRACEPOINT_OPEN command to BPF syscall which
    returns an anon-inode backed fd for the tracepoint object that allows
    for automatic detach of the BPF program resp. unregistering of the
    tracepoint probe on fd release, from Alexei.

    2) Add new BPF cgroup hooks at bind() and connect() entry in order to
    allow BPF programs to reject, inspect or modify user space passed
    struct sockaddr, and as well a hook at post bind time once the port
    has been allocated. They are used in FB's container management engine
    for implementing policy, replacing fragile LD_PRELOAD wrapper
    intercepting bind() and connect() calls that only works in limited
    scenarios like glibc based apps but not for other runtimes in
    containerized applications, from Andrey.

    3) BPF_F_INGRESS flag support has been added to sockmap programs for
    their redirect helper call bringing it in line with cls_bpf based
    programs. Support is added for both variants of sockmap programs,
    meaning for tx ULP hooks as well as recv skb hooks, from John.

    4) Various improvements on BPF side for the nfp driver, besides others
    this work adds BPF map update and delete helper call support from
    the datapath, JITing of 32 and 64 bit XADD instructions as well as
    offload support of bpf_get_prandom_u32() call. Initial implementation
    of nfp packet cache has been tackled that optimizes memory access
    (see merge commit for further details), from Jakub and Jiong.

    5) Removal of struct bpf_verifier_env argument from the print_bpf_insn()
    API has been done in order to prepare to use print_bpf_insn() soon
    out of perf tool directly. This makes the print_bpf_insn() API more
    generic and pushes the env into private data. bpftool is adjusted
    as well with the print_bpf_insn() argument removal, from Jiri.

    6) Couple of cleanups and prep work for the upcoming BTF (BPF Type
    Format). The latter will reuse the current BPF verifier log as
    well, thus bpf_verifier_log() is further generalized, from Martin.

    7) For bpf_getsockopt() and bpf_setsockopt() helpers, IPv4 IP_TOS read
    and write support has been added in similar fashion to existing
    IPv6 IPV6_TCLASS socket option we already have, from Nikita.

    8) Fixes in recent sockmap scatterlist API usage, which did not use
    sg_init_table() for initialization thus triggering a BUG_ON() in
    scatterlist API when CONFIG_DEBUG_SG was enabled. This adds and
    uses a small helper sg_init_marker() to properly handle the affected
    cases, from Prashant.

    9) Let the BPF core follow IDR code convention and therefore use the
    idr_preload() and idr_preload_end() helpers, which would also help
    idr_alloc_cyclic() under GFP_ATOMIC to better succeed under memory
    pressure, from Shaohua.

    10) Last but not least, a spelling fix in an error message for the
    BPF cookie UID helper under BPF sample code, from Colin.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     
  • Rehashing and destroying large hash table takes a lot of time,
    and happens in process context. It is safe to add cond_resched()
    in rhashtable_rehash_table() and rhashtable_free_and_destroy()

    Signed-off-by: Eric Dumazet
    Acked-by: Herbert Xu
    Signed-off-by: David S. Miller

    Eric Dumazet
     

31 Mar, 2018

1 commit

  • Two config options in the lock debugging menu that are probably the most
    frequently used, as far as I am concerned, is the PROVE_LOCKING and
    LOCK_STAT. From a UI perspective, they should be front and center. So
    these two options are now moved to the top of the lock debugging menu.

    The DEBUG_WW_MUTEX_SLOWPATH option is also added to the PROVE_LOCKING
    umbrella.

    Signed-off-by: Waiman Long
    Acked-by: Davidlohr Bueso
    Cc: Andrew Morton
    Cc: Linus Torvalds
    Cc: Paul E. McKenney
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1522445280-7767-4-git-send-email-longman@redhat.com
    Signed-off-by: Ingo Molnar

    Waiman Long