06 Jan, 2019

1 commit

  • Pull ARM updates from Russell King:
    "Included in this update:

    - Florian Fainelli noticed that userspace segfaults caused by the
    lack of kernel-userspace helpers was hard to diagnose; we now issue
    a warning when userspace tries to use the helpers but the kernel
    has them disabled.

    - Ben Dooks wants compatibility for the old ATAG serial number with
    DT systems.

    - Some cleanup of assembly by Nicolas Pitre.

    - User accessors optimisation from Vincent Whitchurch.

    - More robust kdump on SMP systems from Yufen Wang.

    - Sebastian Andrzej Siewior noticed problems with the SMP "boot_lock"
    on RT kernels, and so we convert the Versatile series of platforms
    to use a raw spinlock instead, consolidating the Versatile
    implementation. We entirely remove the boot_lock on OMAP systems,
    where it's unnecessary. Further patches for other systems will be
    submitted for the following merge window.

    - Start switching old StrongARM-11x0 systems to use gpiolib rather
    than their private GPIO implementation - mostly PCMCIA bits.

    - ARM Kconfig cleanups.

    - Cleanup a mostly harmless mistake in the recent Spectre patch in
    4.20 (which had the effect that data that can be placed into the
    init sections was incorrectly always placed in the rodata section)"

    * tag 'for-4.21' of git://git.armlinux.org.uk/~rmk/linux-arm: (25 commits)
    ARM: omap2: remove unnecessary boot_lock
    ARM: versatile: rename and comment SMP implementation
    ARM: versatile: convert boot_lock to raw
    ARM: vexpress/realview: consolidate immitation CPU hotplug
    ARM: fix the cockup in the previous patch
    ARM: sa1100/cerf: switch to using gpio_led_register_device()
    ARM: sa1100/assabet: switch to using gpio leds
    ARM: sa1100/assabet: add gpio keys support for right-hand two buttons
    ARM: sa1111: remove legacy GPIO interfaces
    pcmcia: sa1100*: remove redundant bvd1/bvd2 setting
    ARM: pxa/lubbock: switch PCMCIA to MAX1600 library
    ARM: pxa/mainstone: switch PCMCIA to MAX1600 library and gpiod APIs
    ARM: sa1100/neponset: switch PCMCIA to MAX1600 library and gpiod APIs
    ARM: sa1100/jornada720: switch PCMCIA to gpiod APIs
    pcmcia: add MAX1600 library
    ARM: sa1100: explicitly register sa11x0-pcmcia devices
    ARM: 8813/1: Make aligned 2-byte getuser()/putuser() atomic on ARMv6+
    ARM: 8812/1: Optimise copy_{from/to}_user for !CPU_USE_DOMAINS
    ARM: 8811/1: always list both ldrd/strd registers explicitly
    ARM: 8808/1: kexec:offline panic_smp_self_stop CPU
    ...

    Linus Torvalds
     

05 Dec, 2018

6 commits


23 Nov, 2018

1 commit


27 Oct, 2018

1 commit

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

    - A large series to rewrite our SLB miss handling, replacing a lot of
    fairly complicated asm with much fewer lines of C.

    - Following on from that, we now maintain a cache of SLB entries for
    each process and preload them on context switch. Leading to a 27%
    speedup for our context switch benchmark on Power9.

    - Improvements to our handling of SLB multi-hit errors. We now print
    more debug information when they occur, and try to continue running
    by flushing the SLB and reloading, rather than treating them as
    fatal.

    - Enable THP migration on 64-bit Book3S machines (eg. Power7/8/9).

    - Add support for physical memory up to 2PB in the linear mapping on
    64-bit Book3S. We only support up to 512TB as regular system
    memory, otherwise the percpu allocator runs out of vmalloc space.

    - Add stack protector support for 32 and 64-bit, with a per-task
    canary.

    - Add support for PTRACE_SYSEMU and PTRACE_SYSEMU_SINGLESTEP.

    - Support recognising "big cores" on Power9, where two SMT4 cores are
    presented to us as a single SMT8 core.

    - A large series to cleanup some of our ioremap handling and PTE
    flags.

    - Add a driver for the PAPR SCM (storage class memory) interface,
    allowing guests to operate on SCM devices (acked by Dan).

    - Changes to our ftrace code to handle very large kernels, where we
    need to use a trampoline to get to ftrace_caller().

    And many other smaller enhancements and cleanups.

    Thanks to: Alan Modra, Alistair Popple, Aneesh Kumar K.V, Anton
    Blanchard, Aravinda Prasad, Bartlomiej Zolnierkiewicz, Benjamin
    Herrenschmidt, Breno Leitao, Cédric Le Goater, Christophe Leroy,
    Christophe Lombard, Dan Carpenter, Daniel Axtens, Finn Thain, Gautham
    R. Shenoy, Gustavo Romero, Haren Myneni, Hari Bathini, Jia Hongtao,
    Joel Stanley, John Allen, Laurent Dufour, Madhavan Srinivasan, Mahesh
    Salgaonkar, Mark Hairgrove, Masahiro Yamada, Michael Bringmann,
    Michael Neuling, Michal Suchanek, Murilo Opsfelder Araujo, Nathan
    Fontenot, Naveen N. Rao, Nicholas Piggin, Nick Desaulniers, Oliver
    O'Halloran, Paul Mackerras, Petr Vorel, Rashmica Gupta, Reza Arbab,
    Rob Herring, Sam Bobroff, Samuel Mendoza-Jonas, Scott Wood, Stan
    Johnson, Stephen Rothwell, Stewart Smith, Suraj Jitindar Singh, Tyrel
    Datwyler, Vaibhav Jain, Vasant Hegde, YueHaibing, zhong jiang"

    * tag 'powerpc-4.20-1' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux: (221 commits)
    Revert "selftests/powerpc: Fix out-of-tree build errors"
    powerpc/msi: Fix compile error on mpc83xx
    powerpc: Fix stack protector crashes on CPU hotplug
    powerpc/traps: restore recoverability of machine_check interrupts
    powerpc/64/module: REL32 relocation range check
    powerpc/64s/radix: Fix radix__flush_tlb_collapsed_pmd double flushing pmd
    selftests/powerpc: Add a test of wild bctr
    powerpc/mm: Fix page table dump to work on Radix
    powerpc/mm/radix: Display if mappings are exec or not
    powerpc/mm/radix: Simplify split mapping logic
    powerpc/mm/radix: Remove the retry in the split mapping logic
    powerpc/mm/radix: Fix small page at boundary when splitting
    powerpc/mm/radix: Fix overuse of small pages in splitting logic
    powerpc/mm/radix: Fix off-by-one in split mapping logic
    powerpc/ftrace: Handle large kernel configs
    powerpc/mm: Fix WARN_ON with THP NUMA migration
    selftests/powerpc: Fix out-of-tree build errors
    powerpc/time: no steal_time when CONFIG_PPC_SPLPAR is not selected
    powerpc/time: Only set CONFIG_ARCH_HAS_SCALED_CPUTIME on PPC64
    powerpc/time: isolate scaled cputime accounting in dedicated functions.
    ...

    Linus Torvalds
     

23 Oct, 2018

1 commit

  • Pull pcmcia fixes from Dominik Brodowski:
    "These are just a few odd fixes and improvements to the PCMCIA core and
    to a few PCMCIA device drivers"

    * 'pcmcia-next' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux:
    pcmcia: Implement CLKRUN protocol disabling for Ricoh bridges
    pcmcia: pcmcia_resource: Replace mdelay() with msleep()
    pcmcia: add error handling for pcmcia_enable_device in qlogic_stub
    char: pcmcia: cm4000_cs: Replace mdelay with usleep_range in set_protocol
    pcmcia: Use module_pcmcia_driver for scsi drivers
    pcmcia: remove KERN_INFO level from debug message

    Linus Torvalds
     

14 Oct, 2018

2 commits


01 Oct, 2018

2 commits

  • Currently, "disable_clkrun" yenta_socket module parameter is only
    implemented for TI CardBus bridges.
    Add also an implementation for Ricoh bridges that have the necessary
    setting documented in publicly available datasheets.

    Tested on a RL5C476II with a Sunrich C-160 CardBus NIC that doesn't work
    correctly unless the CLKRUN protocol is disabled.

    Let's also make it clear in its description that the "disable_clkrun"
    module parameter only works on these two previously mentioned brands of
    CardBus bridges.

    Signed-off-by: Maciej S. Szmigiero
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominik Brodowski

    Maciej S. Szmigiero
     
  • pcmcia_fixup_iowidth() and pcmcia_enable_device() are
    never called in atomic context.
    They call mdelay() to busily wait, which is not necessary.
    mdelay() can be replaced with msleep().

    This is found by a static analysis tool named DCNS written by myself.

    Signed-off-by: Jia-Ju Bai
    Signed-off-by: Dominik Brodowski

    Jia-Ju Bai
     

13 Sep, 2018

2 commits

  • In order to make use of array info obtained from gpiod_get_array() and
    speed up processing of arrays matching single GPIO chip layout, that
    information must be passed to get/set array functions. Extend the
    functions' API with that additional parameter and update all users.
    Pass NULL if a user builds an array itself from single GPIOs.

    Cc: Jonathan Corbet
    Cc: Miguel Ojeda Sandonis
    Cc: Geert Uytterhoeven
    Cc: Sebastien Bourdelin
    Cc: Lukas Wunner
    Cc: Peter Korsgaard
    Cc: Peter Rosin
    Cc: Andrew Lunn
    Cc: Florian Fainelli
    Cc: "David S. Miller"
    Cc: Rojhalat Ibrahim
    Cc: Dominik Brodowski
    Cc: Russell King
    Cc: Kishon Vijay Abraham I
    Cc: Tony Lindgren
    Cc: Lars-Peter Clausen
    Cc: Michael Hennerich
    Cc: Jonathan Cameron
    Cc: Hartmut Knaack
    Cc: Peter Meerwald-Stadler
    Cc: Greg Kroah-Hartman
    Cc: Jiri Slaby
    Cc: Yegor Yefremov
    Cc: Uwe Kleine-König
    Signed-off-by: Janusz Krzysztofik
    Acked-by: Ulf Hansson
    Signed-off-by: Linus Walleij

    Janusz Krzysztofik
     
  • Most users of get/set array functions iterate consecutive bits of data,
    usually a single integer, while processing array of results obtained
    from, or building an array of values to be passed to those functions.
    Save time wasted on those iterations by changing the functions' API to
    accept bitmaps.

    All current users are updated as well.

    More benefits from the change are expected as soon as planned support
    for accepting/passing those bitmaps directly from/to respective GPIO
    chip callbacks if applicable is implemented.

    Cc: Jonathan Corbet
    Cc: Miguel Ojeda Sandonis
    Cc: Sebastien Bourdelin
    Cc: Lukas Wunner
    Cc: Peter Korsgaard
    Cc: Peter Rosin
    Cc: Andrew Lunn
    Cc: Florian Fainelli
    Cc: "David S. Miller"
    Cc: Rojhalat Ibrahim
    Cc: Dominik Brodowski
    Cc: Russell King
    Cc: Kishon Vijay Abraham I
    Cc: Tony Lindgren
    Cc: Lars-Peter Clausen
    Cc: Michael Hennerich
    Cc: Jonathan Cameron
    Cc: Hartmut Knaack
    Cc: Peter Meerwald-Stadler
    Cc: Greg Kroah-Hartman
    Cc: Jiri Slaby
    Cc: Yegor Yefremov
    Cc: Uwe Kleine-König
    Signed-off-by: Janusz Krzysztofik
    Acked-by: Ulf Hansson
    Reviewed-by: Geert Uytterhoeven
    Tested-by: Geert Uytterhoeven
    Signed-off-by: Linus Walleij

    Janusz Krzysztofik
     

19 Aug, 2018

1 commit

  • This function was created as a deprecated fallback case back in 2010 by
    commit eb14120f743d ("pcmcia: re-work pcmcia_request_irq()") for legacy
    cases.

    Actual in-kernel users haven't been around for a long while. The last
    in-kernel user was apparently removed four years ago by commit
    5f5316fcd08e ("am2150: Update nmclan_cs.c to use update PCMCIA API").

    Just remove it entirely.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

13 Jun, 2018

2 commits

  • The kzalloc() function has a 2-factor argument form, kcalloc(). This
    patch replaces cases of:

    kzalloc(a * b, gfp)

    with:
    kcalloc(a * b, gfp)

    as well as handling cases of:

    kzalloc(a * b * c, gfp)

    with:

    kzalloc(array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    kzalloc_array(array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    kzalloc(4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    type TYPE;
    expression THING, E;
    @@

    (
    kzalloc(
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    kzalloc(
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    kzalloc(
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    identifier SIZE, COUNT;
    @@

    - kzalloc
    + kcalloc
    (
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    kzalloc(
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    kzalloc(
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    kzalloc(
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    kzalloc(sizeof(THING) * C2, ...)
    |
    kzalloc(sizeof(TYPE) * C2, ...)
    |
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(C1 * C2, ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     
  • The kmalloc() function has a 2-factor argument form, kmalloc_array(). This
    patch replaces cases of:

    kmalloc(a * b, gfp)

    with:
    kmalloc_array(a * b, gfp)

    as well as handling cases of:

    kmalloc(a * b * c, gfp)

    with:

    kmalloc(array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    kmalloc_array(array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    kmalloc(4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    The tools/ directory was manually excluded, since it has its own
    implementation of kmalloc().

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    type TYPE;
    expression THING, E;
    @@

    (
    kmalloc(
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    kmalloc(
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    kmalloc(
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    identifier SIZE, COUNT;
    @@

    - kmalloc
    + kmalloc_array
    (
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    kmalloc(
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    kmalloc(
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kmalloc(
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kmalloc(
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    kmalloc(
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    kmalloc(C1 * C2 * C3, ...)
    |
    kmalloc(
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kmalloc(
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kmalloc(
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    kmalloc(
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    kmalloc(sizeof(THING) * C2, ...)
    |
    kmalloc(sizeof(TYPE) * C2, ...)
    |
    kmalloc(C1 * C2 * C3, ...)
    |
    kmalloc(C1 * C2, ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

10 Apr, 2018

1 commit

  • Pull ARM SA1100 updates from Russell King:
    "We have support for arbitary MMIO registers providing platform GPIOs,
    which allows us to abstract some of the SA11x0 CF support.

    This set of updates makes that change"

    * 'for-linus-sa1100' of git://git.armlinux.org.uk/~rmk/linux-arm:
    ARM: sa1100/simpad: switch simpad CF to use gpiod APIs
    ARM: sa1100/shannon: convert to generic CF sockets
    ARM: sa1100/nanoengine: convert to generic CF sockets
    ARM: sa1100/h3xxx: switch h3xxx PCMCIA to use gpiod APIs
    ARM: sa1100/cerf: convert to generic CF sockets
    ARM: sa1100/assabet: convert to generic CF sockets
    ARM: sa1100: provide infrastructure to support generic CF sockets
    pcmcia: sa1100: provide generic CF support

    Linus Torvalds
     

06 Apr, 2018

3 commits


04 Apr, 2018

1 commit

  • Pull power management updates from Rafael Wysocki:
    "These update the cpuidle poll state definition to reduce excessive
    energy usage related to it, add new CPU ID to the RAPL power capping
    driver, update the ACPI system suspend code to handle some special
    cases better, extend the PM core's device links code slightly, add new
    sysfs attribute for better suspend-to-idle diagnostics and easier
    hibernation handling, update power management tools and clean up
    cpufreq quite a bit.

    Specifics:

    - Modify the cpuidle poll state implementation to prevent CPUs from
    staying in the loop in there for excessive times (Rafael Wysocki).

    - Add Intel Cannon Lake chips support to the RAPL power capping
    driver (Joe Konno).

    - Add reference counting to the device links handling code in the PM
    core (Lukas Wunner).

    - Avoid reconfiguring GPEs on suspend-to-idle in the ACPI system
    suspend code (Rafael Wysocki).

    - Allow devices to be put into deeper low-power states via ACPI if
    both _SxD and _SxW are missing (Daniel Drake).

    - Reorganize the core ACPI suspend-to-idle wakeup code to avoid a
    keyboard wakeup issue on Asus UX331UA (Chris Chiu).

    - Prevent the PCMCIA library code from aborting suspend-to-idle due
    to noirq suspend failures resulting from incorrect assumptions
    (Rafael Wysocki).

    - Add coupled cpuidle supprt to the Exynos3250 platform (Marek
    Szyprowski).

    - Add new sysfs file to make it easier to specify the image storage
    location during hibernation (Mario Limonciello).

    - Add sysfs files for collecting suspend-to-idle usage and time
    statistics for CPU idle states (Rafael Wysocki).

    - Update the pm-graph utilities (Todd Brandt).

    - Reduce the kernel log noise related to reporting Low-power Idle
    constraings by the ACPI system suspend code (Rafael Wysocki).

    - Make it easier to distinguish dedicated wakeup IRQs in the
    /proc/interrupts output (Tony Lindgren).

    - Add the frequency table validation in cpufreq to the core and drop
    it from a number of cpufreq drivers (Viresh Kumar).

    - Drop "cooling-{min|max}-level" for CPU nodes from a couple of DT
    bindings (Viresh Kumar).

    - Clean up the CPU online error code path in the cpufreq core (Viresh
    Kumar).

    - Fix assorted issues in the SCPI, CPPC, mediatek and tegra186
    cpufreq drivers (Arnd Bergmann, Chunyu Hu, George Cherian, Viresh
    Kumar).

    - Drop memory allocation error messages from a few places in cpufreq
    and cpuildle drivers (Markus Elfring)"

    * tag 'pm-4.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (56 commits)
    ACPI / PM: Fix keyboard wakeup from suspend-to-idle on ASUS UX331UA
    cpufreq: CPPC: Use transition_delay_us depending transition_latency
    PM / hibernate: Change message when writing to /sys/power/resume
    PM / hibernate: Make passing hibernate offsets more friendly
    cpuidle: poll_state: Avoid invoking local_clock() too often
    PM: cpuidle/suspend: Add s2idle usage and time state attributes
    cpuidle: Enable coupled cpuidle support on Exynos3250 platform
    cpuidle: poll_state: Add time limit to poll_idle()
    cpufreq: tegra186: Don't validate the frequency table twice
    cpufreq: speedstep: Don't validate the frequency table twice
    cpufreq: sparc: Don't validate the frequency table twice
    cpufreq: sh: Don't validate the frequency table twice
    cpufreq: sfi: Don't validate the frequency table twice
    cpufreq: scpi: Don't validate the frequency table twice
    cpufreq: sc520: Don't validate the frequency table twice
    cpufreq: s3c24xx: Don't validate the frequency table twice
    cpufreq: qoirq: Don't validate the frequency table twice
    cpufreq: pxa: Don't validate the frequency table twice
    cpufreq: ppc_cbe: Don't validate the frequency table twice
    cpufreq: powernow: Don't validate the frequency table twice
    ...

    Linus Torvalds
     

26 Mar, 2018

2 commits


24 Mar, 2018

4 commits


23 Feb, 2018

1 commit

  • There is a problem with PCMCIA system resume callbacks with respect
    to suspend-to-idle in which the ->suspend_noirq() callback may be
    invoked after the ->resume_noirq() one without resuming the system
    entirely in some cases. This doesn't work for PCMCIA because of
    the lack of symmetry between its system suspend and system resume
    "noirq" callbacks.

    The system resume handling in PCMCIA is split between
    socket_early_resume() and socket_late_resume() which are called in
    different phases of system resume and both need to run for
    socket_suspend() (invoked by the system suspend "noirq" callback)
    to work. Specifically, socket_suspend() returns an error when
    called after socket_early_resume() without socket_late_resume(),
    so if the suspend-to-idle core detects a spurious wakeup event and
    attempts to put the system back to sleep, that is aborted by the
    error coming from socket_suspend().

    Avoid that by using a new socket state flag, SOCKET_IN_RESUME,
    to indicate that socket_early_resume() has already run for the
    socket in which case socket_suspend() will do minimum handling
    and return 0.

    This change has been tested on my venerable Toshiba Portege R500
    (which is where the problem has been discovered in the first place),
    but admittedly I have no PCMCIA cards to test along with the socket
    itself.

    Fixes: 33e4f80ee69b (ACPI / PM: Ignore spurious SCI wakeups from suspend-to-idle)
    Signed-off-by: Rafael J. Wysocki
    [linux@dominikbrodowski.net: follow same codepaths for both suspend variants; call ->suspend()]
    Signed-off-by: Dominik Brodowski

    Rafael J. Wysocki
     

09 Feb, 2018

1 commit

  • Pull pcmcia updates from Dominik Brodowski:
    "The linux-pcmcia mailing list was shut down, so offer an alternative
    path for patches in MAINTAINERS.

    Also, throw in two odd fixes for the pcmcia subsystem"

    * 'pcmcia' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia:
    pcmcia: soc_common: Handle return value of clk_prepare_enable
    pcmcia: use proper printk format for resource
    pcmcia: remove mailing list, update MAINTAINERS

    Linus Torvalds
     

25 Jan, 2018

2 commits


30 Nov, 2017

1 commit

  • Fix ptr_ret.cocci warnings:
    drivers/pcmcia/at91_cf.c:239:1-3: WARNING: PTR_ERR_OR_ZERO can be used

    Use PTR_ERR_OR_ZERO rather than if(IS_ERR(...)) + PTR_ERR

    Generated by: scripts/coccinelle/api/ptr_ret.cocci

    Signed-off-by: Vasyl Gomonovych
    Acked-by: Nicolas Ferre
    Signed-off-by: Alexandre Belloni

    Vasyl Gomonovych
     

18 Nov, 2017

1 commit

  • pcmv_setup() is only used when the badge4 driver is built-in, but not
    when it is a loadable module:

    drivers/pcmcia/sa1111_badge4.c:153:122: error: 'pcmv_setup' defined but not used [-Werror=unused-function]

    This adds an #ifdef to avoid the definition of the unused function in
    the modular case.

    Link: http://lkml.kernel.org/r/20170911201133.3421636-1-arnd@arndb.de
    Signed-off-by: Arnd Bergmann
    Cc: Russell King
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arnd Bergmann
     

17 Nov, 2017

2 commits

  • Pull ARM updates from Russell King:

    - add support for ELF fdpic binaries on both MMU and noMMU platforms

    - linker script cleanups

    - support for compressed .data section for XIP images

    - discard memblock arrays when possible

    - various cleanups

    - atomic DMA pool updates

    - better diagnostics of missing/corrupt device tree

    - export information to allow userspace kexec tool to place images more
    inteligently, so that the device tree isn't overwritten by the
    booting kernel

    - make early_printk more efficient on semihosted systems

    - noMMU cleanups

    - SA1111 PCMCIA update in preparation for further cleanups

    * 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: (38 commits)
    ARM: 8719/1: NOMMU: work around maybe-uninitialized warning
    ARM: 8717/2: debug printch/printascii: translate '\n' to "\r\n" not "\n\r"
    ARM: 8713/1: NOMMU: Support MPU in XIP configuration
    ARM: 8712/1: NOMMU: Use more MPU regions to cover memory
    ARM: 8711/1: V7M: Add support for MPU to M-class
    ARM: 8710/1: Kconfig: Kill CONFIG_VECTORS_BASE
    ARM: 8709/1: NOMMU: Disallow MPU for XIP
    ARM: 8708/1: NOMMU: Rework MPU to be mostly done in C
    ARM: 8707/1: NOMMU: Update MPU accessors to use cp15 helpers
    ARM: 8706/1: NOMMU: Move out MPU setup in separate module
    ARM: 8702/1: head-common.S: Clear lr before jumping to start_kernel()
    ARM: 8705/1: early_printk: use printascii() rather than printch()
    ARM: 8703/1: debug.S: move hexbuf to a writable section
    ARM: add additional table to compressed kernel
    ARM: decompressor: fix BSS size calculation
    pcmcia: sa1111: remove special sa1111 mmio accessors
    pcmcia: sa1111: use sa1111_get_irq() to obtain IRQ resources
    ARM: better diagnostics with missing/corrupt dtb
    ARM: 8699/1: dma-mapping: Remove init_dma_coherent_pool_size()
    ARM: 8698/1: dma-mapping: Mark atomic_pool as __ro_after_init
    ..

    Linus Torvalds
     
  • …/git/gregkh/char-misc

    Pull char/misc updates from Greg KH:
    "Here is the big set of char/misc and other driver subsystem patches
    for 4.15-rc1.

    There are small changes all over here, hyperv driver updates, pcmcia
    driver updates, w1 driver updats, vme driver updates, nvmem driver
    updates, and lots of other little one-off driver updates as well. The
    shortlog has the full details.

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

    * tag 'char-misc-4.15-rc1' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (90 commits)
    VME: Return -EBUSY when DMA list in use
    w1: keep balance of mutex locks and refcnts
    MAINTAINERS: Update VME subsystem tree.
    nvmem: sunxi-sid: add support for A64/H5's SID controller
    nvmem: imx-ocotp: Update module description
    nvmem: imx-ocotp: Enable i.MX7D OTP write support
    nvmem: imx-ocotp: Add i.MX7D timing write clock setup support
    nvmem: imx-ocotp: Move i.MX6 write clock setup to dedicated function
    nvmem: imx-ocotp: Add support for banked OTP addressing
    nvmem: imx-ocotp: Pass parameters via a struct
    nvmem: imx-ocotp: Restrict OTP write to IMX6 processors
    nvmem: uniphier: add UniPhier eFuse driver
    dt-bindings: nvmem: add description for UniPhier eFuse
    nvmem: set nvmem->owner to nvmem->dev->driver->owner if unset
    nvmem: qfprom: fix different address space warnings of sparse
    nvmem: mtk-efuse: fix different address space warnings of sparse
    nvmem: mtk-efuse: use stack for nvmem_config instead of malloc'ing it
    nvmem: imx-iim: use stack for nvmem_config instead of malloc'ing it
    thunderbolt: tb: fix use after free in tb_activate_pcie_devices
    MAINTAINERS: Add git tree for Thunderbolt development
    ...

    Linus Torvalds
     

16 Nov, 2017

2 commits

  • Pull PCI updates from Bjorn Helgaas:

    - detach driver before tearing down procfs/sysfs (Alex Williamson)

    - disable PCIe services during shutdown (Sinan Kaya)

    - fix ASPM oops on systems with no Root Ports (Ard Biesheuvel)

    - fix ASPM LTR_L1.2_THRESHOLD programming (Bjorn Helgaas)

    - fix ASPM Common_Mode_Restore_Time computation (Bjorn Helgaas)

    - fix portdrv MSI/MSI-X vector allocation (Dongdong Liu, Bjorn
    Helgaas)

    - report non-fatal AER errors only to the affected endpoint (Gabriele
    Paoloni)

    - distribute bus numbers, MMIO, and I/O space among hotplug bridges to
    allow more devices to be hot-added (Mika Westerberg)

    - fix pciehp races during initialization and surprise link down (Mika
    Westerberg)

    - handle surprise-removed devices in PME handling (Qiang)

    - support resizable BARs for large graphics devices (Christian König)

    - expose SR-IOV offset, stride, and VF device ID via sysfs (Filippo
    Sironi)

    - create SR-IOV virtfn/physfn sysfs links before attaching driver
    (Stuart Hayes)

    - fix SR-IOV "ARI Capable Hierarchy" restore issue (Tony Nguyen)

    - enforce Kconfig IOV/REALLOC dependency (Sascha El-Sharkawy)

    - avoid slot reset if bridge itself is broken (Jan Glauber)

    - clean up pci_reset_function() path (Jan H. Schönherr)

    - make pci_map_rom() fail if the option ROM is invalid (Changbin Du)

    - convert timers to timer_setup() (Kees Cook)

    - move PCI_QUIRKS to PCI bus Kconfig menu (Randy Dunlap)

    - constify pci_dev_type and intel_mid_pci_ops (Bhumika Goyal)

    - remove unnecessary pci_dev, pci_bus, resource, pcibios_set_master()
    declarations (Bjorn Helgaas)

    - fix endpoint framework overflows and BUG()s (Dan Carpenter)

    - fix endpoint framework issues (Kishon Vijay Abraham I)

    - avoid broken Cavium CN8xxx bus reset behavior (David Daney)

    - extend Cavium ACS capability quirks (Vadim Lomovtsev)

    - support Synopsys DesignWare RC in ECAM mode (Ard Biesheuvel)

    - turn off dra7xx clocks cleanly on shutdown (Keerthy)

    - fix Faraday probe error path (Wei Yongjun)

    - support HiSilicon STB SoC PCIe host controller (Jianguo Sun)

    - fix Hyper-V interrupt affinity issue (Dexuan Cui)

    - remove useless ACPI warning for Hyper-V pass-through devices (Vitaly
    Kuznetsov)

    - support multiple MSI on iProc (Sandor Bodo-Merle)

    - support Layerscape LS1012a and LS1046a PCIe host controllers (Hou
    Zhiqiang)

    - fix Layerscape default error response (Minghuan Lian)

    - support MSI on Tango host controller (Marc Gonzalez)

    - support Tegra186 PCIe host controller (Manikanta Maddireddy)

    - use generic accessors on Tegra when possible (Thierry Reding)

    - support V3 Semiconductor PCI host controller (Linus Walleij)

    * tag 'pci-v4.15-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (85 commits)
    PCI/ASPM: Add L1 Substates definitions
    PCI/ASPM: Reformat ASPM register definitions
    PCI/ASPM: Use correct capability pointer to program LTR_L1.2_THRESHOLD
    PCI/ASPM: Account for downstream device's Port Common_Mode_Restore_Time
    PCI: xgene: Rename xgene_pcie_probe_bridge() to xgene_pcie_probe()
    PCI: xilinx: Rename xilinx_pcie_link_is_up() to xilinx_pcie_link_up()
    PCI: altera: Rename altera_pcie_link_is_up() to altera_pcie_link_up()
    PCI: Fix kernel-doc build warning
    PCI: Fail pci_map_rom() if the option ROM is invalid
    PCI: Move pci_map_rom() error path
    PCI: Move PCI_QUIRKS to the PCI bus menu
    alpha/PCI: Make pdev_save_srm_config() static
    PCI: Remove unused declarations
    PCI: Remove redundant pci_dev, pci_bus, resource declarations
    PCI: Remove redundant pcibios_set_master() declarations
    PCI/PME: Handle invalid data when reading Root Status
    PCI: hv: Use effective affinity mask
    PCI: pciehp: Do not clear Presence Detect Changed during initialization
    PCI: pciehp: Fix race condition handling surprise link down
    PCI: Distribute available resources to hotplug-capable bridges
    ...

    Linus Torvalds
     
  • Pull networking updates from David Miller:
    "Highlights:

    1) Maintain the TCP retransmit queue using an rbtree, with 1GB
    windows at 100Gb this really has become necessary. From Eric
    Dumazet.

    2) Multi-program support for cgroup+bpf, from Alexei Starovoitov.

    3) Perform broadcast flooding in hardware in mv88e6xxx, from Andrew
    Lunn.

    4) Add meter action support to openvswitch, from Andy Zhou.

    5) Add a data meta pointer for BPF accessible packets, from Daniel
    Borkmann.

    6) Namespace-ify almost all TCP sysctl knobs, from Eric Dumazet.

    7) Turn on Broadcom Tags in b53 driver, from Florian Fainelli.

    8) More work to move the RTNL mutex down, from Florian Westphal.

    9) Add 'bpftool' utility, to help with bpf program introspection.
    From Jakub Kicinski.

    10) Add new 'cpumap' type for XDP_REDIRECT action, from Jesper
    Dangaard Brouer.

    11) Support 'blocks' of transformations in the packet scheduler which
    can span multiple network devices, from Jiri Pirko.

    12) TC flower offload support in cxgb4, from Kumar Sanghvi.

    13) Priority based stream scheduler for SCTP, from Marcelo Ricardo
    Leitner.

    14) Thunderbolt networking driver, from Amir Levy and Mika Westerberg.

    15) Add RED qdisc offloadability, and use it in mlxsw driver. From
    Nogah Frankel.

    16) eBPF based device controller for cgroup v2, from Roman Gushchin.

    17) Add some fundamental tracepoints for TCP, from Song Liu.

    18) Remove garbage collection from ipv6 route layer, this is a
    significant accomplishment. From Wei Wang.

    19) Add multicast route offload support to mlxsw, from Yotam Gigi"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (2177 commits)
    tcp: highest_sack fix
    geneve: fix fill_info when link down
    bpf: fix lockdep splat
    net: cdc_ncm: GetNtbFormat endian fix
    openvswitch: meter: fix NULL pointer dereference in ovs_meter_cmd_reply_start
    netem: remove unnecessary 64 bit modulus
    netem: use 64 bit divide by rate
    tcp: Namespace-ify sysctl_tcp_default_congestion_control
    net: Protect iterations over net::fib_notifier_ops in fib_seq_sum()
    ipv6: set all.accept_dad to 0 by default
    uapi: fix linux/tls.h userspace compilation error
    usbnet: ipheth: prevent TX queue timeouts when device not ready
    vhost_net: conditionally enable tx polling
    uapi: fix linux/rxrpc.h userspace compilation errors
    net: stmmac: fix LPI transitioning for dwmac4
    atm: horizon: Fix irq release error
    net-sysfs: trigger netlink notification on ifalias change via sysfs
    openvswitch: Using kfree_rcu() to simplify the code
    openvswitch: Make local function ovs_nsh_key_attr_size() static
    openvswitch: Fix return value check in ovs_meter_cmd_features()
    ...

    Linus Torvalds