commit 0d4f1b2afde8df3b0ca79818123a43a184a0e1ea
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jul 21 09:02:05 2019 +0200

    Linux 5.1.19

commit 0e921583b935d64e89c428ce1c313ae717d1edbd
Author: Jiri Slaby <jslaby@suse.cz>
Date:   Tue Jul 9 08:34:02 2019 +0200

    x86/entry/32: Fix ENDPROC of common_spurious
    
    [ Upstream commit 1cbec37b3f9cff074a67bef4fc34b30a09958a0a ]
    
    common_spurious is currently ENDed erroneously. common_interrupt is used
    in its ENDPROC. So fix this mistake.
    
    Found by my asm macros rewrite patchset.
    
    Fixes: f8a8fe61fec8 ("x86/irq: Seperate unused system vectors from spurious entry again")
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190709063402.19847-1-jslaby@suse.cz
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 845912c398165cc563ecc280ce429da98028e722
Author: Haren Myneni <haren@linux.vnet.ibm.com>
Date:   Tue Jun 18 12:09:22 2019 -0700

    crypto/NX: Set receive window credits to max number of CRBs in RxFIFO
    
    commit e52d484d9869eb291140545746ccbe5ffc7c9306 upstream.
    
    System gets checkstop if RxFIFO overruns with more requests than the
    maximum possible number of CRBs in FIFO at the same time. The max number
    of requests per window is controlled by window credits. So find max
    CRBs from FIFO size and set it to receive window credits.
    
    Fixes: b0d6c9bab5e4 ("crypto/nx: Add P9 NX support for 842 compression engine")
    CC: stable@vger.kernel.org # v4.14+
    Signed-off-by:Haren Myneni <haren@us.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

commit 5b7e03647e91ededb1f6e52961c298d6927b1947
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Jun 24 07:20:16 2019 +0000

    crypto: talitos - fix hash on SEC1.
    
    commit 58cdbc6d2263beb36954408522762bbe73169306 upstream.
    
    On SEC1, hash provides wrong result when performing hashing in several
    steps with input data SG list has more than one element. This was
    detected with CONFIG_CRYPTO_MANAGER_EXTRA_TESTS:
    
    [   44.185947] alg: hash: md5-talitos test failed (wrong result) on test vector 6, cfg="random: may_sleep use_finup src_divs=[<reimport>25.88%@+8063, <flush>24.19%@+9588, 28.63%@+16333, <reimport>4.60%@+6756, 16.70%@+16281] dst_divs=[71.61%@alignmask+16361, 14.36%@+7756, 14.3%@+"
    [   44.325122] alg: hash: sha1-talitos test failed (wrong result) on test vector 3, cfg="random: inplace use_final src_divs=[<flush,nosimd>16.56%@+16378, <reimport>52.0%@+16329, 21.42%@alignmask+16380, 10.2%@alignmask+16380] iv_offset=39"
    [   44.493500] alg: hash: sha224-talitos test failed (wrong result) on test vector 4, cfg="random: use_final nosimd src_divs=[<reimport>52.27%@+7401, <reimport>17.34%@+16285, <flush>17.71%@+26, 12.68%@+10644] iv_offset=43"
    [   44.673262] alg: hash: sha256-talitos test failed (wrong result) on test vector 4, cfg="random: may_sleep use_finup src_divs=[<reimport>60.6%@+12790, 17.86%@+1329, <reimport>12.64%@alignmask+16300, 8.29%@+15, 0.40%@+13506, <reimport>0.51%@+16322, <reimport>0.24%@+16339] dst_divs"
    
    This is due to two issues:
    - We have an overlap between the buffer used for copying the input
    data (SEC1 doesn't do scatter/gather) and the chained descriptor.
    - Data copy is wrong when the previous hash left less than one
    blocksize of data to hash, implying a complement of the previous
    block with a few bytes from the new request.
    
    Fix it by:
    - Moving the second descriptor after the buffer, as moving the buffer
    after the descriptor would make it more complex for other cipher
    operations (AEAD, ABLKCIPHER)
    - Skip the bytes taken from the new request to complete the previous
    one by moving the SG list forward.
    
    Fixes: 37b5e8897eb5 ("crypto: talitos - chain in buffered data for ahash on SEC1")
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5da292580bd23cf67e7abd850349176ef6973571
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Jun 24 07:20:15 2019 +0000

    crypto: talitos - move struct talitos_edesc into talitos.h
    
    commit d44769e4ccb636e8238adbc151f25467a536711b upstream.
    
    Moves struct talitos_edesc into talitos.h so that it can be used
    from any place in talitos.c
    
    It will be required for next patch ("crypto: talitos - fix hash
    on SEC1")
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ca71f3de797898184e55ca2a56748b6748fb041
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Tue Jun 18 13:12:20 2019 +0200

    s390/qdio: don't touch the dsci in tiqdio_add_input_queues()
    
    commit ac6639cd3db607d386616487902b4cc1850a7be5 upstream.
    
    Current code sets the dsci to 0x00000080. Which doesn't make any sense,
    as the indicator area is located in the _left-most_ byte.
    
    Worse: if the dsci is the _shared_ indicator, this potentially clears
    the indication of activity for a _different_ device.
    tiqdio_thinint_handler() will then have no reason to call that device's
    IRQ handler, and the device ends up stalling.
    
    Fixes: d0c9d4a89fff ("[S390] qdio: set correct bit in dsci")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f5dcaa9207fb9cea3d31c3312388f679d00e569
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Tue Jun 18 11:25:59 2019 +0200

    s390/qdio: (re-)initialize tiqdio list entries
    
    commit e54e4785cb5cb4896cf4285964aeef2125612fb2 upstream.
    
    When tiqdio_remove_input_queues() removes a queue from the tiq_list as
    part of qdio_shutdown(), it doesn't re-initialize the queue's list entry
    and the prev/next pointers go stale.
    
    If a subsequent qdio_establish() fails while sending the ESTABLISH cmd,
    it calls qdio_shutdown() again in QDIO_IRQ_STATE_ERR state and
    tiqdio_remove_input_queues() will attempt to remove the queue entry a
    second time. This dereferences the stale pointers, and bad things ensue.
    Fix this by re-initializing the list entry after removing it from the
    list.
    
    For good practice also initialize the list entry when the queue is first
    allocated, and remove the quirky checks that papered over this omission.
    Note that prior to
    commit e521813468f7 ("s390/qdio: fix access to uninitialized qdio_q fields"),
    these checks were bogus anyway.
    
    setup_queues_misc() clears the whole queue struct, and thus needs to
    re-init the prev/next pointers as well.
    
    Fixes: 779e6e1c724d ("[S390] qdio: new qdio driver.")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6e7f5e8a13d4037ad1f1efc794989edb223d81b
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Mon Jun 17 14:02:41 2019 +0200

    s390: fix stfle zero padding
    
    commit 4f18d869ffd056c7858f3d617c71345cf19be008 upstream.
    
    The stfle inline assembly returns the number of double words written
    (condition code 0) or the double words it would have written
    (condition code 3), if the memory array it got as parameter would have
    been large enough.
    
    The current stfle implementation assumes that the array is always
    large enough and clears those parts of the array that have not been
    written to with a subsequent memset call.
    
    If however the array is not large enough memset will get a negative
    length parameter, which means that memset clears memory until it gets
    an exception and the kernel crashes.
    
    To fix this simply limit the maximum length. Move also the inline
    assembly to an extra function to avoid clobbering of register 0, which
    might happen because of the added min_t invocation together with code
    instrumentation.
    
    The bug was introduced with commit 14375bc4eb8d ("[S390] cleanup
    facility list handling") but was rather harmless, since it would only
    write to a rather large array. It became a potential problem with
    commit 3ab121ab1866 ("[S390] kernel: Add z/VM LGR detection"). Since
    then it writes to an array with only four double words, while some
    machines already deliver three double words. As soon as machines have
    a facility bit within the fifth double a crash on IPL would happen.
    
    Fixes: 14375bc4eb8d ("[S390] cleanup facility list handling")
    Cc: <stable@vger.kernel.org> # v2.6.37+
    Reviewed-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6d65a2fc7cd6d538f42a50a3b8ef5852f900cdc
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jul 3 15:39:25 2019 +0200

    ARC: hide unused function unw_hdr_alloc
    
    commit fd5de2721ea7d16e2b16c4049ac49f229551b290 upstream.
    
    As kernelci.org reports, this function is not used in
    vdk_hs38_defconfig:
    
    arch/arc/kernel/unwind.c:188:14: warning: 'unw_hdr_alloc' defined but not used [-Wunused-function]
    
    Fixes: bc79c9a72165 ("ARC: dw2 unwind: Reinstante unwinding out of modules")
    Link: https://kernelci.org/build/id/5d1cae3f59b514300340c132/logs/
    Cc: stable@vger.kernel.org
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ac893646c2e7a234d0242ac7a02f675a923fd16
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jun 28 13:11:54 2019 +0200

    x86/irq: Seperate unused system vectors from spurious entry again
    
    commit f8a8fe61fec8006575699559ead88b0b833d5cad upstream.
    
    Quite some time ago the interrupt entry stubs for unused vectors in the
    system vector range got removed and directly mapped to the spurious
    interrupt vector entry point.
    
    Sounds reasonable, but it's subtly broken. The spurious interrupt vector
    entry point pushes vector number 0xFF on the stack which makes the whole
    logic in __smp_spurious_interrupt() pointless.
    
    As a consequence any spurious interrupt which comes from a vector != 0xFF
    is treated as a real spurious interrupt (vector 0xFF) and not
    acknowledged. That subsequently stalls all interrupt vectors of equal and
    lower priority, which brings the system to a grinding halt.
    
    This can happen because even on 64-bit the system vector space is not
    guaranteed to be fully populated. A full compile time handling of the
    unused vectors is not possible because quite some of them are conditonally
    populated at runtime.
    
    Bring the entry stubs back, which wastes 160 bytes if all stubs are unused,
    but gains the proper handling back. There is no point to selectively spare
    some of the stubs which are known at compile time as the required code in
    the IDT management would be way larger and convoluted.
    
    Do not route the spurious entries through common_interrupt and do_IRQ() as
    the original code did. Route it to smp_spurious_interrupt() which evaluates
    the vector number and acts accordingly now that the real vector numbers are
    handed in.
    
    Fixup the pr_warn so the actual spurious vector (0xff) is clearly
    distiguished from the other vectors and also note for the vectored case
    whether it was pending in the ISR or not.
    
     "Spurious APIC interrupt (vector 0xFF) on CPU#0, should never happen."
     "Spurious interrupt vector 0xed on CPU#1. Acked."
     "Spurious interrupt vector 0xee on CPU#1. Not pending!."
    
    Fixes: 2414e021ac8d ("x86: Avoid building unused IRQ entry stubs")
    Reported-by: Jan Kiszka <jan.kiszka@siemens.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Jan Beulich <jbeulich@suse.com>
    Link: https://lkml.kernel.org/r/20190628111440.550568228@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fa8d2a72fbab7745175339dfcfd15717a62ab3c
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jun 28 13:11:53 2019 +0200

    x86/irq: Handle spurious interrupt after shutdown gracefully
    
    commit b7107a67f0d125459fe41f86e8079afd1a5e0b15 upstream.
    
    Since the rework of the vector management, warnings about spurious
    interrupts have been reported. Robert provided some more information and
    did an initial analysis. The following situation leads to these warnings:
    
       CPU 0                  CPU 1               IO_APIC
    
                                                  interrupt is raised
                                                  sent to CPU1
                              Unable to handle
                              immediately
                              (interrupts off,
                               deep idle delay)
       mask()
       ...
       free()
         shutdown()
         synchronize_irq()
         clear_vector()
                              do_IRQ()
                                -> vector is clear
    
    Before the rework the vector entries of legacy interrupts were statically
    assigned and occupied precious vector space while most of them were
    unused. Due to that the above situation was handled silently because the
    vector was handled and the core handler of the assigned interrupt
    descriptor noticed that it is shut down and returned.
    
    While this has been usually observed with legacy interrupts, this situation
    is not limited to them. Any other interrupt source, e.g. MSI, can cause the
    same issue.
    
    After adding proper synchronization for level triggered interrupts, this
    can only happen for edge triggered interrupts where the IO-APIC obviously
    cannot provide information about interrupts in flight.
    
    While the spurious warning is actually harmless in this case it worries
    users and driver developers.
    
    Handle it gracefully by marking the vector entry as VECTOR_SHUTDOWN instead
    of VECTOR_UNUSED when the vector is freed up.
    
    If that above late handling happens the spurious detector will not complain
    and switch the entry to VECTOR_UNUSED. Any subsequent spurious interrupt on
    that line will trigger the spurious warning as before.
    
    Fixes: 464d12309e1b ("x86/vector: Switch IOAPIC to global reservation mode")
    Reported-by: Robert Hodaszi <Robert.Hodaszi@digi.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>-
    Tested-by: Robert Hodaszi <Robert.Hodaszi@digi.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Link: https://lkml.kernel.org/r/20190628111440.459647741@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 557f2d49240bdff6aa3be2e3646aba5d5f83240c
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jun 28 13:11:52 2019 +0200

    x86/ioapic: Implement irq_get_irqchip_state() callback
    
    commit dfe0cf8b51b07e56ded571e3de0a4a9382517231 upstream.
    
    When an interrupt is shut down in free_irq() there might be an inflight
    interrupt pending in the IO-APIC remote IRR which is not yet serviced. That
    means the interrupt has been sent to the target CPUs local APIC, but the
    target CPU is in a state which delays the servicing.
    
    So free_irq() would proceed to free resources and to clear the vector
    because synchronize_hardirq() does not see an interrupt handler in
    progress.
    
    That can trigger a spurious interrupt warning, which is harmless and just
    confuses users, but it also can leave the remote IRR in a stale state
    because once the handler is invoked the interrupt resources might be freed
    already and therefore acknowledgement is not possible anymore.
    
    Implement the irq_get_irqchip_state() callback for the IO-APIC irq chip. The
    callback is invoked from free_irq() via __synchronize_hardirq(). Check the
    remote IRR bit of the interrupt and return 'in flight' if it is set and the
    interrupt is configured in level mode. For edge mode the remote IRR has no
    meaning.
    
    As this is only meaningful for level triggered interrupts this won't cure
    the potential spurious interrupt warning for edge triggered interrupts, but
    the edge trigger case does not result in stale hardware state. This has to
    be addressed at the vector/interrupt entry level seperately.
    
    Fixes: 464d12309e1b ("x86/vector: Switch IOAPIC to global reservation mode")
    Reported-by: Robert Hodaszi <Robert.Hodaszi@digi.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Link: https://lkml.kernel.org/r/20190628111440.370295517@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9926c40e4d3a69a8400400c2fd8d6c777c71972
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jun 28 13:11:51 2019 +0200

    genirq: Add optional hardware synchronization for shutdown
    
    commit 62e0468650c30f0298822c580f382b16328119f6 upstream.
    
    free_irq() ensures that no hardware interrupt handler is executing on a
    different CPU before actually releasing resources and deactivating the
    interrupt completely in a domain hierarchy.
    
    But that does not catch the case where the interrupt is on flight at the
    hardware level but not yet serviced by the target CPU. That creates an
    interesing race condition:
    
       CPU 0                  CPU 1               IRQ CHIP
    
                                                  interrupt is raised
                                                  sent to CPU1
                              Unable to handle
                              immediately
                              (interrupts off,
                               deep idle delay)
       mask()
       ...
       free()
         shutdown()
         synchronize_irq()
         release_resources()
                              do_IRQ()
                                -> resources are not available
    
    That might be harmless and just trigger a spurious interrupt warning, but
    some interrupt chips might get into a wedged state.
    
    Utilize the existing irq_get_irqchip_state() callback for the
    synchronization in free_irq().
    
    synchronize_hardirq() is not using this mechanism as it might actually
    deadlock unter certain conditions, e.g. when called with interrupts
    disabled and the target CPU is the one on which the synchronization is
    invoked. synchronize_irq() uses it because that function cannot be called
    from non preemtible contexts as it might sleep.
    
    No functional change intended and according to Marc the existing GIC
    implementations where the driver supports the callback should be able
    to cope with that core change. Famous last words.
    
    Fixes: 464d12309e1b ("x86/vector: Switch IOAPIC to global reservation mode")
    Reported-by: Robert Hodaszi <Robert.Hodaszi@digi.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    Tested-by: Marc Zyngier <marc.zyngier@arm.com>
    Link: https://lkml.kernel.org/r/20190628111440.279463375@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd0222960d81391e387416e5b5170b84947d4cdf
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jun 28 13:11:50 2019 +0200

    genirq: Fix misleading synchronize_irq() documentation
    
    commit 1d21f2af8571c6a6a44e7c1911780614847b0253 upstream.
    
    The function might sleep, so it cannot be called from interrupt
    context. Not even with care.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Link: https://lkml.kernel.org/r/20190628111440.189241552@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 284f5105e493181f9a4e1015f0635999257580fa
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jun 28 13:11:49 2019 +0200

    genirq: Delay deactivation in free_irq()
    
    commit 4001d8e8762f57d418b66e4e668601791900a1dd upstream.
    
    When interrupts are shutdown, they are immediately deactivated in the
    irqdomain hierarchy. While this looks obviously correct there is a subtle
    issue:
    
    There might be an interrupt in flight when free_irq() is invoking the
    shutdown. This is properly handled at the irq descriptor / primary handler
    level, but the deactivation might completely disable resources which are
    required to acknowledge the interrupt.
    
    Split the shutdown code and deactivate the interrupt after synchronization
    in free_irq(). Fixup all other usage sites where this is not an issue to
    invoke the combined shutdown_and_deactivate() function instead.
    
    This still might be an issue if the interrupt in flight servicing is
    delayed on a remote CPU beyond the invocation of synchronize_irq(), but
    that cannot be handled at that level and needs to be handled in the
    synchronize_irq() context.
    
    Fixes: f8264e34965a ("irqdomain: Introduce new interfaces to support hierarchy irqdomains")
    Reported-by: Robert Hodaszi <Robert.Hodaszi@digi.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    Link: https://lkml.kernel.org/r/20190628111440.098196390@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbf125668acb30648e254b9669097e15d01aa601
Author: Vinod Koul <vkoul@kernel.org>
Date:   Fri Jun 28 12:07:21 2019 -0700

    linux/kernel.h: fix overflow for DIV_ROUND_UP_ULL
    
    [ Upstream commit 8f9fab480c7a87b10bb5440b5555f370272a5d59 ]
    
    DIV_ROUND_UP_ULL adds the two arguments and then invokes
    DIV_ROUND_DOWN_ULL.  But on a 32bit system the addition of two 32 bit
    values can overflow.  DIV_ROUND_DOWN_ULL does it correctly and stashes
    the addition into a unsigned long long so cast the result to unsigned
    long long here to avoid the overflow condition.
    
    [akpm@linux-foundation.org: DIV_ROUND_UP_ULL must be an rval]
    Link: http://lkml.kernel.org/r/20190625100518.30753-1-vkoul@kernel.org
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e97fe6ea900b72f98ab92ddce8947923bf67e239
Author: Andrea Arcangeli <aarcange@redhat.com>
Date:   Fri Jun 28 12:07:14 2019 -0700

    fork,memcg: alloc_thread_stack_node needs to set tsk->stack
    
    [ Upstream commit 1bf4580e00a248a2c86269125390eb3648e1877c ]
    
    Commit 5eed6f1dff87 ("fork,memcg: fix crash in free_thread_stack on
    memcg charge fail") corrected two instances, but there was a third
    instance of this bug.
    
    Without setting tsk->stack, if memcg_charge_kernel_stack fails, it'll
    execute free_thread_stack() on a dangling pointer.
    
    Enterprise kernels are compiled with VMAP_STACK=y so this isn't
    critical, but custom VMAP_STACK=n builds should have some performance
    advantage, with the drawback of risking to fail fork because compaction
    didn't succeed.  So as long as VMAP_STACK=n is a supported option it's
    worth fixing it upstream.
    
    Link: http://lkml.kernel.org/r/20190619011450.28048-1-aarcange@redhat.com
    Fixes: 9b6f7e163cd0 ("mm: rework memcg kernel stack accounting")
    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Reviewed-by: Rik van Riel <riel@surriel.com>
    Acked-by: Roman Gushchin <guro@fb.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1451f5647ae04b2f038aba58379888008a2f5d0e
Author: Yafang Shao <laoar.shao@gmail.com>
Date:   Fri Jun 28 12:06:59 2019 -0700

    mm/oom_kill.c: fix uninitialized oc->constraint
    
    [ Upstream commit 432b1de0de02a83f64695e69a2d83cbee10c236f ]
    
    In dump_oom_summary() oc->constraint is used to show oom_constraint_text,
    but it hasn't been set before.  So the value of it is always the default
    value 0.  We should inititialize it before.
    
    Bellow is the output when memcg oom occurs,
    
    before this patch:
      oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null), cpuset=/,mems_allowed=0,oom_memcg=/foo,task_memcg=/foo,task=bash,pid=7997,uid=0
    
    after this patch:
      oom-kill:constraint=CONSTRAINT_MEMCG,nodemask=(null), cpuset=/,mems_allowed=0,oom_memcg=/foo,task_memcg=/foo,task=bash,pid=13681,uid=0
    
    Link: http://lkml.kernel.org/r/1560522038-15879-1-git-send-email-laoar.shao@gmail.com
    Fixes: ef8444ea01d7 ("mm, oom: reorganize the oom report in dump_header")
    Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Wind Yu <yuzhoujian@didichuxing.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 056432bed244cb8c3229f875b51d59c477e70054
Author: Nicolas Boichat <drinkcat@chromium.org>
Date:   Wed Jun 26 11:54:45 2019 +0800

    pinctrl: mediatek: Update cur_mask in mask/mask ops
    
    [ Upstream commit 9d957a959bc8c3dfe37572ac8e99affb5a885965 ]
    
    During suspend/resume, mtk_eint_mask may be called while
    wake_mask is active. For example, this happens if a wake-source
    with an active interrupt handler wakes the system:
    irq/pm.c:irq_pm_check_wakeup would disable the interrupt, so
    that it can be handled later on in the resume flow.
    
    However, this may happen before mtk_eint_do_resume is called:
    in this case, wake_mask is loaded, and cur_mask is restored
    from an older copy, re-enabling the interrupt, and causing
    an interrupt storm (especially for level interrupts).
    
    Step by step, for a line that has both wake and interrupt enabled:
     1. cur_mask[irq] = 1; wake_mask[irq] = 1; EINT_EN[irq] = 1 (interrupt
        enabled at hardware level)
     2. System suspends, resumes due to that line (at this stage EINT_EN
        == wake_mask)
     3. irq_pm_check_wakeup is called, and disables the interrupt =>
        EINT_EN[irq] = 0, but we still have cur_mask[irq] = 1
     4. mtk_eint_do_resume is called, and restores EINT_EN = cur_mask, so
        it reenables EINT_EN[irq] = 1 => interrupt storm as the driver
        is not yet ready to handle the interrupt.
    
    This patch fixes the issue in step 3, by recording all mask/unmask
    changes in cur_mask. This also avoids the need to read the current
    mask in eint_do_suspend, and we can remove mtk_eint_chip_read_mask
    function.
    
    The interrupt will be re-enabled properly later on, sometimes after
    mtk_eint_do_resume, when the driver is ready to handle it.
    
    Fixes: 58a5e1b64bb0 ("pinctrl: mediatek: Implement wake handler and suspend resume")
    Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
    Acked-by: Sean Wang <sean.wang@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2970a55466e8d904ad41969c16c64f5d67c82332
Author: Eiichi Tsukata <devel@etsukata.com>
Date:   Thu Jun 27 11:47:32 2019 +0900

    cpu/hotplug: Fix out-of-bounds read when setting fail state
    
    [ Upstream commit 33d4a5a7a5b4d02915d765064b2319e90a11cbde ]
    
    Setting invalid value to /sys/devices/system/cpu/cpuX/hotplug/fail
    can control `struct cpuhp_step *sp` address, results in the following
    global-out-of-bounds read.
    
    Reproducer:
    
      # echo -2 > /sys/devices/system/cpu/cpu0/hotplug/fail
    
    KASAN report:
    
      BUG: KASAN: global-out-of-bounds in write_cpuhp_fail+0x2cd/0x2e0
      Read of size 8 at addr ffffffff89734438 by task bash/1941
    
      CPU: 0 PID: 1941 Comm: bash Not tainted 5.2.0-rc6+ #31
      Call Trace:
       write_cpuhp_fail+0x2cd/0x2e0
       dev_attr_store+0x58/0x80
       sysfs_kf_write+0x13d/0x1a0
       kernfs_fop_write+0x2bc/0x460
       vfs_write+0x1e1/0x560
       ksys_write+0x126/0x250
       do_syscall_64+0xc1/0x390
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x7f05e4f4c970
    
      The buggy address belongs to the variable:
       cpu_hotplug_lock+0x98/0xa0
    
      Memory state around the buggy address:
       ffffffff89734300: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 00
       ffffffff89734380: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 00
      >ffffffff89734400: 00 00 00 00 fa fa fa fa 00 00 00 00 fa fa fa fa
                                              ^
       ffffffff89734480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
       ffffffff89734500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Add a sanity check for the value written from user space.
    
    Fixes: 1db49484f21ed ("smp/hotplug: Hotplug state fail injection")
    Signed-off-by: Eiichi Tsukata <devel@etsukata.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: peterz@infradead.org
    Link: https://lkml.kernel.org/r/20190627024732.31672-1-devel@etsukata.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea722ba498eb510f395e94814121d401add7648e
Author: Nicolas Boichat <drinkcat@chromium.org>
Date:   Mon Apr 29 11:55:14 2019 +0800

    pinctrl: mediatek: Ignore interrupts that are wake only during resume
    
    [ Upstream commit 35594bc7cecf3a78504b590e350570e8f4d7779e ]
    
    Before suspending, mtk-eint would set the interrupt mask to the
    one in wake_mask. However, some of these interrupts may not have a
    corresponding interrupt handler, or the interrupt may be disabled.
    
    On resume, the eint irq handler would trigger nevertheless,
    and irq/pm.c:irq_pm_check_wakeup would be called, which would
    try to call irq_disable. However, if the interrupt is not enabled
    (irqd_irq_disabled(&desc->irq_data) is true), the call does nothing,
    and the interrupt is left enabled in the eint driver.
    
    Especially for level-sensitive interrupts, this will lead to an
    interrupt storm on resume.
    
    If we detect that an interrupt is only in wake_mask, but not in
    cur_mask, we can just mask it out immediately (as mtk_eint_resume
    would do anyway at a later stage in the resume sequence, when
    restoring cur_mask).
    
    Fixes: bf22ff45bed6 ("genirq: Avoid unnecessary low level irq function calls")
    Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
    Acked-by: Sean Wang <sean.wang@kernel.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b9cdcdf70289260d79517dc51e8771498375bb15
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Jun 14 16:56:55 2019 +0800

    HID: multitouch: Add pointstick support for ALPS Touchpad
    
    [ Upstream commit 0a95fc733da375de0688d0f1fd3a2869a1c1d499 ]
    
    There's a new ALPS touchpad/pointstick combo device that requires
    MT_CLS_WIN_8_DUAL to make its pointsitck work as a mouse.
    
    The device can be found on HP ZBook 17 G5.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c82aaf094557c1e43723cd0bffab932506a8c573
Author: Kyle Godbey <me@kyle.ee>
Date:   Sat Jun 15 18:15:06 2019 -0500

    HID: uclogic: Add support for Huion HS64 tablet
    
    [ Upstream commit 315ffcc9a1e054bb460f9203058b52dc26b1173d ]
    
    Add support for Huion HS64 drawing tablet to hid-uclogic
    
    Signed-off-by: Kyle Godbey <me@kyle.ee>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 499380084c040d22b78581021c8ce3559ff6ebbd
Author: Oleksandr Natalenko <oleksandr@redhat.com>
Date:   Fri Jun 21 11:17:36 2019 +0200

    HID: chicony: add another quirk for PixArt mouse
    
    [ Upstream commit dcf768b0ac868630e7bdb6f2f1c9fe72788012fa ]
    
    I've spotted another Chicony PixArt mouse in the wild, which requires
    HID_QUIRK_ALWAYS_POLL quirk, otherwise it disconnects each minute.
    
    USB ID of this device is 0x04f2:0x0939.
    
    We've introduced quirks like this for other models before, so lets add
    this mouse too.
    
    Link: https://github.com/sriemer/fix-linux-mouse#usb-mouse-disconnectsreconnects-every-minute-on-linux
    Signed-off-by: Oleksandr Natalenko <oleksandr@redhat.com>
    Acked-by: Sebastian Parschauer <s.parschauer@gmx.de>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3dee6a914f5c3c0621ede93205c39278a41865ec
Author: Kirill A. Shutemov <kirill@shutemov.name>
Date:   Thu Jun 20 14:24:22 2019 +0300

    x86/boot/64: Add missing fixup_pointer() for next_early_pgt access
    
    [ Upstream commit c1887159eb48ba40e775584cfb2a443962cf1a05 ]
    
    __startup_64() uses fixup_pointer() to access global variables in a
    position-independent fashion. Access to next_early_pgt was wrapped into the
    helper, but one instance in the 5-level paging branch was missed.
    
    GCC generates a R_X86_64_PC32 PC-relative relocation for the access which
    doesn't trigger the issue, but Clang emmits a R_X86_64_32S which leads to
    an invalid memory access and system reboot.
    
    Fixes: 187e91fe5e91 ("x86/boot/64/clang: Use fixup_pointer() to access 'next_early_pgt'")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Alexander Potapenko <glider@google.com>
    Link: https://lkml.kernel.org/r/20190620112422.29264-1-kirill.shutemov@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 840b12259097779e6dd908388aeda23bb94fbbe4
Author: Kirill A. Shutemov <kirill@shutemov.name>
Date:   Thu Jun 20 14:23:45 2019 +0300

    x86/boot/64: Fix crash if kernel image crosses page table boundary
    
    [ Upstream commit 81c7ed296dcd02bc0b4488246d040e03e633737a ]
    
    A kernel which boots in 5-level paging mode crashes in a small percentage
    of cases if KASLR is enabled.
    
    This issue was tracked down to the case when the kernel image unpacks in a
    way that it crosses an 1G boundary. The crash is caused by an overrun of
    the PMD page table in __startup_64() and corruption of P4D page table
    allocated next to it. This particular issue is not visible with 4-level
    paging as P4D page tables are not used.
    
    But the P4D and the PUD calculation have similar problems.
    
    The PMD index calculation is wrong due to operator precedence, which fails
    to confine the PMDs in the PMD array on wrap around.
    
    The P4D calculation for 5-level paging and the PUD calculation calculate
    the first index correctly, but then blindly increment it which causes the
    same issue when a kernel image is located across a 512G and for 5-level
    paging across a 46T boundary.
    
    This wrap around mishandling was introduced when these parts moved from
    assembly to C.
    
    Restore it to the correct behaviour.
    
    Fixes: c88d71508e36 ("x86/boot/64: Rewrite startup_64() in C")
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20190620112345.28833-1-kirill.shutemov@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 79231082b13a11601113e87201e3a1cdd13c8724
Author: Milan Broz <gmazyland@gmail.com>
Date:   Thu Jun 20 13:00:19 2019 +0200

    dm verity: use message limit for data block corruption message
    
    [ Upstream commit 2eba4e640b2c4161e31ae20090a53ee02a518657 ]
    
    DM verity should also use DMERR_LIMIT to limit repeat data block
    corruption messages.
    
    Signed-off-by: Milan Broz <gmazyland@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 929f7f169066a23e61c6bcb3588feeab00ab59d7
Author: Jerome Marchand <jmarchan@redhat.com>
Date:   Wed Jun 12 18:22:26 2019 +0200

    dm table: don't copy from a NULL pointer in realloc_argv()
    
    [ Upstream commit a0651926553cfe7992166432e418987760882652 ]
    
    For the first call to realloc_argv() in dm_split_args(), old_argv is
    NULL and size is zero. Then memcpy is called, with the NULL old_argv
    as the source argument and a zero size argument. AFAIK, this is
    undefined behavior and generates the following warning when compiled
    with UBSAN on ppc64le:
    
    In file included from ./arch/powerpc/include/asm/paca.h:19,
                     from ./arch/powerpc/include/asm/current.h:16,
                     from ./include/linux/sched.h:12,
                     from ./include/linux/kthread.h:6,
                     from drivers/md/dm-core.h:12,
                     from drivers/md/dm-table.c:8:
    In function 'memcpy',
        inlined from 'realloc_argv' at drivers/md/dm-table.c:565:3,
        inlined from 'dm_split_args' at drivers/md/dm-table.c:588:9:
    ./include/linux/string.h:345:9: error: argument 2 null where non-null expected [-Werror=nonnull]
      return __builtin_memcpy(p, q, size);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/md/dm-table.c: In function 'dm_split_args':
    ./include/linux/string.h:345:9: note: in a call to built-in function '__builtin_memcpy'
    
    Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e9734fd9acb68d2d1c397b007062bbf7be4451e
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Thu Jun 20 20:30:37 2019 +0200

    pinctrl: ocelot: fix pinmuxing for pins after 31
    
    [ Upstream commit 4b36082e2e09c2769710756390d54cfca563ed96 ]
    
    The actual layout for OCELOT_GPIO_ALT[01] when there are more than 32 pins
    is interleaved, i.e. OCELOT_GPIO_ALT0[0], OCELOT_GPIO_ALT1[0],
    OCELOT_GPIO_ALT0[1], OCELOT_GPIO_ALT1[1]. Introduce a new REG_ALT macro to
    facilitate the register offset calculation and use it where necessary.
    
    Fixes: da801ab56ad8 pinctrl: ocelot: add MSCC Jaguar2 support
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fc8f20ce6167be49f58bb347c30ea143a016965a
Author: Alexandre Belloni <alexandre.belloni@bootlin.com>
Date:   Thu Jun 20 20:30:36 2019 +0200

    pinctrl: ocelot: fix gpio direction for pins after 31
    
    [ Upstream commit f2818ba3a0125670cb9999bb5a65ebb631a8da2f ]
    
    The third argument passed to REG is not the correct one and
    ocelot_gpio_set_direction is not working for pins after 31. Fix that by
    passing the pin number instead of the modulo 32 value.
    
    Fixes: da801ab56ad8 pinctrl: ocelot: add MSCC Jaguar2 support
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e6c2076b1421249682f02b345b484d9fcb3538f2
Author: Phil Reid <preid@electromag.com.au>
Date:   Thu Jun 13 12:10:23 2019 +0800

    pinctrl: mcp23s08: Fix add_data and irqchip_add_nested call order
    
    [ Upstream commit 6dbc6e6f58556369bf999cd7d9793586f1b0e4b4 ]
    
    Currently probing of the mcp23s08 results in an error message
    "detected irqchip that is shared with multiple gpiochips:
    please fix the driver"
    
    This is due to the following:
    
    Call to mcp23s08_irqchip_setup() with call hierarchy:
    mcp23s08_irqchip_setup()
      gpiochip_irqchip_add_nested()
        gpiochip_irqchip_add_key()
          gpiochip_set_irq_hooks()
    
    Call to devm_gpiochip_add_data() with call hierarchy:
    devm_gpiochip_add_data()
      gpiochip_add_data_with_key()
        gpiochip_add_irqchip()
          gpiochip_set_irq_hooks()
    
    The gpiochip_add_irqchip() returns immediately if there isn't a irqchip
    but we added a irqchip due to the previous mcp23s08_irqchip_setup()
    call. So it calls gpiochip_set_irq_hooks() a second time.
    
    Fix this by moving the call to devm_gpiochip_add_data before
    the call to mcp23s08_irqchip_setup
    
    Fixes: 02e389e63e35 ("pinctrl: mcp23s08: fix irq setup order")
    Suggested-by: Marco Felsch <m.felsch@pengutronix.de>
    Signed-off-by: Phil Reid <preid@electromag.com.au>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa08b940a00313b3c6704f5eec15f21ef69b6e5e
Author: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
Date:   Tue Jun 18 17:58:34 2019 +0200

    ARM: dts: imx6ul: fix PWM[1-4] interrupts
    
    [ Upstream commit 3cf10132ac8d536565f2c02f60a3aeb315863a52 ]
    
    According to the i.MX6UL/L RM, table 3.1 "ARM Cortex A7 domain interrupt
    summary", the interrupts for the PWM[1-4] go from 83 to 86.
    
    Fixes: b9901fe84f02 ("ARM: dts: imx6ul: add pwm[1-4] nodes")
    Signed-off-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1bca8f4566795d383b3b74966d21b2c1802ab8ef
Author: Sergej Benilov <sergej.benilov@googlemail.com>
Date:   Thu Jun 20 11:02:18 2019 +0200

    sis900: fix TX completion
    
    [ Upstream commit 8ac8a01092b2added0749ef937037bf1912e13e3 ]
    
    Since commit 605ad7f184b60cfaacbc038aa6c55ee68dee3c89 "tcp: refine TSO autosizing",
    outbound throughput is dramatically reduced for some connections, as sis900
    is doing TX completion within idle states only.
    
    Make TX completion happen after every transmitted packet.
    
    Test:
    netperf
    
    before patch:
    > netperf -H remote -l -2000000 -- -s 1000000
    MIGRATED TCP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 95.223.112.76 () port 0 AF_INET : demo
    Recv   Send    Send
    Socket Socket  Message  Elapsed
    Size   Size    Size     Time     Throughput
    bytes  bytes   bytes    secs.    10^6bits/sec
    
     87380 327680 327680    253.44      0.06
    
    after patch:
    > netperf -H remote -l -10000000 -- -s 1000000
    MIGRATED TCP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 95.223.112.76 () port 0 AF_INET : demo
    Recv   Send    Send
    Socket Socket  Message  Elapsed
    Size   Size    Size     Time     Throughput
    bytes  bytes   bytes    secs.    10^6bits/sec
    
     87380 327680 327680    5.38       14.89
    
    Thx to Dave Miller and Eric Dumazet for helpful hints
    
    Signed-off-by: Sergej Benilov <sergej.benilov@googlemail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 390431e628c697f6823cb9f73d59bebac92f637a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jun 19 15:34:07 2019 +0200

    ppp: mppe: Add softdep to arc4
    
    [ Upstream commit aad1dcc4f011ea409850e040363dff1e59aa4175 ]
    
    The arc4 crypto is mandatory at ppp_mppe probe time, so let's put a
    softdep line, so that the corresponding module gets prepared
    gracefully.  Without this, a simple inclusion to initrd via dracut
    failed due to the missing dependency, for example.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8bc37f617447d2fa416ba0deab17324452c7aaa
Author: Petr Oros <poros@redhat.com>
Date:   Wed Jun 19 14:29:42 2019 +0200

    be2net: fix link failure after ethtool offline test
    
    [ Upstream commit 2e5db6eb3c23e5dc8171eb8f6af7a97ef9fcf3a9 ]
    
    Certain cards in conjunction with certain switches need a little more
    time for link setup that results in ethtool link test failure after
    offline test. Patch adds a loop that waits for a link setup finish.
    
    Changes in v2:
    - added fixes header
    
    Fixes: 4276e47e2d1c ("be2net: Add link test to list of ethtool self tests.")
    Signed-off-by: Petr Oros <poros@redhat.com>
    Reviewed-by: Ivan Vecera <ivecera@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99a40d66b87657ce27b13e6c98fcdfa8b924e0c1
Author: Colin Ian King <colin.king@canonical.com>
Date:   Wed Jun 19 19:14:46 2019 +0100

    x86/apic: Fix integer overflow on 10 bit left shift of cpu_khz
    
    [ Upstream commit ea136a112d89bade596314a1ae49f748902f4727 ]
    
    The left shift of unsigned int cpu_khz will overflow for large values of
    cpu_khz, so cast it to a long long before shifting it to avoid overvlow.
    For example, this can happen when cpu_khz is 4194305, i.e. ~4.2 GHz.
    
    Addresses-Coverity: ("Unintentional integer overflow")
    Fixes: 8c3ba8d04924 ("x86, apic: ack all pending irqs when crashed/on kexec")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H . Peter Anvin" <hpa@zytor.com>
    Cc: kernel-janitors@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190619181446.13635-1-colin.king@canonical.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5f7bb2a5d565c33310f8bb57322affdd707b3e2a
Author: Qian Cai <cai@lca.pw>
Date:   Wed Jun 19 13:47:44 2019 -0400

    x86/efi: fix a -Wtype-limits compilation warning
    
    [ Upstream commit 919aef44d73d5d0c04213cb1bc31149cc074e65e ]
    
    Compiling a kernel with W=1 generates this warning,
    
    arch/x86/platform/efi/quirks.c:731:16: warning: comparison of unsigned
    expression >= 0 is always true [-Wtype-limits]
    
    Fixes: 3425d934fc03 ("efi/x86: Handle page faults occurring while running ...")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Acked-by: "Prakhya, Sai Praneeth" <sai.praneeth.prakhya@intel.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b0ef1ba26048ac3ca00408c6d689a717e65cf58
Author: David Howells <dhowells@redhat.com>
Date:   Thu Jun 20 16:49:35 2019 +0100

    afs: Fix uninitialised spinlock afs_volume::cb_break_lock
    
    [ Upstream commit 90fa9b64523a645a97edc0bdcf2d74759957eeee ]
    
    Fix the cb_break_lock spinlock in afs_volume struct by initialising it when
    the volume record is allocated.
    
    Also rename the lock to cb_v_break_lock to distinguish it from the lock of
    the same name in the afs_server struct.
    
    Without this, the following trace may be observed when a volume-break
    callback is received:
    
      INFO: trying to register non-static key.
      the code is fine but needs lockdep annotation.
      turning off the locking correctness validator.
      CPU: 2 PID: 50 Comm: kworker/2:1 Not tainted 5.2.0-rc1-fscache+ #3045
      Hardware name: ASUS All Series/H97-PLUS, BIOS 2306 10/09/2014
      Workqueue: afs SRXAFSCB_CallBack
      Call Trace:
       dump_stack+0x67/0x8e
       register_lock_class+0x23b/0x421
       ? check_usage_forwards+0x13c/0x13c
       __lock_acquire+0x89/0xf73
       lock_acquire+0x13b/0x166
       ? afs_break_callbacks+0x1b2/0x3dd
       _raw_write_lock+0x2c/0x36
       ? afs_break_callbacks+0x1b2/0x3dd
       afs_break_callbacks+0x1b2/0x3dd
       ? trace_event_raw_event_afs_server+0x61/0xac
       SRXAFSCB_CallBack+0x11f/0x16c
       process_one_work+0x2c5/0x4ee
       ? worker_thread+0x234/0x2ac
       worker_thread+0x1d8/0x2ac
       ? cancel_delayed_work_sync+0xf/0xf
       kthread+0x11f/0x127
       ? kthread_park+0x76/0x76
       ret_from_fork+0x24/0x30
    
    Fixes: 68251f0a6818 ("afs: Fix whole-volume callback handling")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae795e3f53c6fb84d60af5cda92fc693d4b983d3
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jun 19 15:04:54 2019 +0200

    ARM: omap2: remove incorrect __init annotation
    
    [ Upstream commit 27e23d8975270df6999f8b5b3156fc0c04927451 ]
    
    omap3xxx_prm_enable_io_wakeup() is marked __init, but its caller is not, so
    we get a warning with clang-8:
    
    WARNING: vmlinux.o(.text+0x343c8): Section mismatch in reference from the function omap3xxx_prm_late_init() to the function .init.text:omap3xxx_prm_enable_io_wakeup()
    The function omap3xxx_prm_late_init() references
    the function __init omap3xxx_prm_enable_io_wakeup().
    This is often because omap3xxx_prm_late_init lacks a __init
    annotation or the annotation of omap3xxx_prm_enable_io_wakeup is wrong.
    
    When building with gcc, omap3xxx_prm_enable_io_wakeup() is always
    inlined, so we never noticed in the past.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Acked-by: Tony Lindgren <tony@atomide.com>
    Reviewed-by: Andrew Murray <andrew.murray@arm.com>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ac287b813982a90479a4e3a9fd2a9ff023807d3
Author: Linus Walleij <linus.walleij@linaro.org>
Date:   Sun Jun 16 23:40:13 2019 +0200

    ARM: dts: gemini Fix up DNS-313 compatible string
    
    [ Upstream commit 36558020128b1a48b7bddd5792ee70e3f64b04b0 ]
    
    It's a simple typo in the DNS file, which was pretty serious.
    No scripts were working properly. Fix it up.
    
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 69f295c5fc2476c5fb92c0f422a26acb51611b2e
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Wed May 29 14:37:24 2019 +0200

    perf/core: Fix perf_sample_regs_user() mm check
    
    [ Upstream commit 085ebfe937d7a7a5df1729f35a12d6d655fea68c ]
    
    perf_sample_regs_user() uses 'current->mm' to test for the presence of
    userspace, but this is insufficient, consider use_mm().
    
    A better test is: '!(current->flags & PF_KTHREAD)', exec() clears
    PF_KTHREAD after it sets the new ->mm but before it drops to userspace
    for the first time.
    
    Possibly obsoletes: bf05fc25f268 ("powerpc/perf: Fix oops when kthread execs user process")
    
    Reported-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
    Reported-by: Young Xiao <92siuyang@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 4018994f3d87 ("perf: Add ability to attach user level registers dump to sample")
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f2030f88188cf909b2c3d31707800c92627d8d9
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu Jun 13 12:07:59 2019 +1000

    selftests/powerpc: Add test of fork with mapping above 512TB
    
    [ Upstream commit 16391bfc862342f285195013b73c1394fab28b97 ]
    
    This tests that when a process with a mapping above 512TB forks we
    correctly separate the parent and child address spaces. This exercises
    the bug in the context id handling fixed in the previous commit.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6cb7e771924af3f970a21ee06ffabf0dbe3ef92d
Author: Ran Wang <ran.wang_1@nxp.com>
Date:   Fri May 17 12:57:53 2019 +0800

    arm64: dts: ls1028a: Fix CPU idle fail.
    
    [ Upstream commit 53f2ac9d3aa881ed419054076042898b77c27ee4 ]
    
    PSCI spec define 1st parameter's bit 16 of function CPU_SUSPEND to
    indicate CPU State Type: 0 for standby, 1 for power down. In this
    case, we want to select standby for CPU idle feature. But current
    setting wrongly select power down and cause CPU SUSPEND fail every
    time. Need this fix.
    
    Fixes: 8897f3255c9c ("arm64: dts: Add support for NXP LS1028A SoC")
    Signed-off-by: Ran Wang <ran.wang_1@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f93e24e365781a4882532f9fb6eb7322aa1e331
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Wed May 29 15:28:28 2019 +0200

    efi/bgrt: Drop BGRT status field reserved bits check
    
    [ Upstream commit a483fcab38b43fb34a7f12ab1daadd3907f150e2 ]
    
    Starting with ACPI 6.2 bits 1 and 2 of the BGRT status field are no longer
    reserved. These bits are now used to indicate if the image needs to be
    rotated before being displayed.
    
    The first device using these bits has now shown up (the GPD MicroPC) and
    the reserved bits check causes us to reject the valid BGRT table on this
    device.
    
    Rather then changing the reserved bits check, allowing only the 2 new bits,
    instead just completely remove it so that we do not end up with a similar
    problem when more bits are added in the future.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bfa9a4107def2aec5658cf66f160cc9aac32dfbe
Author: Tony Lindgren <tony@atomide.com>
Date:   Wed May 29 23:55:57 2019 -0700

    clk: ti: clkctrl: Fix returning uninitialized data
    
    [ Upstream commit 41b3588dba6ef4b7995735a97e47ff0aeea6c276 ]
    
    If we do a clk_get() for a clock that does not exists, we have
    _ti_omap4_clkctrl_xlate() return uninitialized data if no match
    is found. This can be seen in some cases with SLAB_DEBUG enabled:
    
    Unable to handle kernel paging request at virtual address 5a5a5a5a
    ...
    clk_hw_create_clk.part.33
    sysc_notifier_call
    notifier_call_chain
    blocking_notifier_call_chain
    device_add
    
    Let's fix this by setting a found flag only when we find a match.
    
    Reported-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Fixes: 88a172526c32 ("clk: ti: add support for clkctrl clocks")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Tested-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8f05b163958982af2e3a0b1cc6477d4c3bc904f
Author: Heyi Guo <guoheyi@huawei.com>
Date:   Mon May 13 19:42:06 2019 +0800

    irqchip/gic-v3-its: Fix command queue pointer comparison bug
    
    [ Upstream commit a050fa5476d418fc16b25abe168b3d38ba11e13c ]
    
    When we run several VMs with PCI passthrough and GICv4 enabled, not
    pinning vCPUs, we will occasionally see below warnings in dmesg:
    
    ITS queue timeout (65440 65504 480)
    ITS cmd its_build_vmovp_cmd failed
    
    The reason for the above issue is that in BUILD_SINGLE_CMD_FUNC:
    1. Post the write command.
    2. Release the lock.
    3. Start to read GITS_CREADR to get the reader pointer.
    4. Compare the reader pointer to the target pointer.
    5. If reader pointer does not reach the target, sleep 1us and continue
    to try.
    
    If we have several processors running the above concurrently, other
    CPUs will post write commands while the 1st CPU is waiting the
    completion. So we may have below issue:
    
    phase 1:
    ---rd_idx-----from_idx-----to_idx--0---------
    
    wait 1us:
    
    phase 2:
    --------------from_idx-----to_idx--0-rd_idx--
    
    That is the rd_idx may fly ahead of to_idx, and if in case to_idx is
    near the wrap point, rd_idx will wrap around. So the below condition
    will not be met even after 1s:
    
    if (from_idx < to_idx && rd_idx >= to_idx)
    
    There is another theoretical issue. For a slow and busy ITS, the
    initial rd_idx may fall behind from_idx a lot, just as below:
    
    ---rd_idx---0--from_idx-----to_idx-----------
    
    This will cause the wait function exit too early.
    
    Actually, it does not make much sense to use from_idx to judge if
    to_idx is wrapped, but we need a initial rd_idx when lock is still
    acquired, and it can be used to judge whether to_idx is wrapped and
    the current rd_idx is wrapped.
    
    We switch to a method of calculating the delta of two adjacent reads
    and accumulating it to get the sum, so that we can get the real rd_idx
    from the wrapped value even when the queue is almost full.
    
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Signed-off-by: Heyi Guo <guoheyi@huawei.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 97b1f5aa15bde870943a87e394c5c2753b836dbc
Author: Guo Ren <ren_guo@c-sky.com>
Date:   Tue May 21 15:54:05 2019 +0800

    irqchip/irq-csky-mpintc: Support auto irq deliver to all cpus
    
    [ Upstream commit db56c5128e6625cb16efc4910b60627e46f608e3 ]
    
    The csky,mpintc could deliver a external irq to one cpu or all cpus, but
    it couldn't deliver a external irq to a group of cpus with cpu_mask. So
    we only use auto deliver mode when affinity mask_val is equal to
    cpu_present_mask.
    
    There is no limitation for only two cpus in SMP system.
    
    Signed-off-by: Guo Ren <ren_guo@c-sky.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f71b47b37e29099fbf968a48dbbd1bfd99d42bec
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sun May 12 21:39:36 2019 +0200

    ARM: dts: meson8b: fix the operating voltage of the Mali GPU
    
    [ Upstream commit 26d65140e92a626e39c73c9abf769fd174bf5076 ]
    
    Amlogic's vendor kernel defines an OPP for the GPU on Meson8b boards
    with a voltage of 1.15V. It turns out that the vendor kernel relies on
    the bootloader to set up the voltage. The bootloader however sets a
    fixed voltage of 1.10V.
    
    Amlogic's patched u-boot sources (uboot-2015-01-15-23a3562521) confirm
    this:
    $ grep -oiE "VDD(EE|AO)_VOLTAGE[ ]+[0-9]+" board/amlogic/configs/m8b_*
      board/amlogic/configs/m8b_m100_v1.h:VDDAO_VOLTAGE            1100
      board/amlogic/configs/m8b_m101_v1.h:VDDAO_VOLTAGE            1100
      board/amlogic/configs/m8b_m102_v1.h:VDDAO_VOLTAGE            1100
      board/amlogic/configs/m8b_m200_v1.h:VDDAO_VOLTAGE            1100
      board/amlogic/configs/m8b_m201_v1.h:VDDEE_VOLTAGE            1100
      board/amlogic/configs/m8b_m201_v1.h:VDDEE_VOLTAGE            1100
      board/amlogic/configs/m8b_m202_v1.h:VDDEE_VOLTAGE            1100
    
    Another hint at this is the VDDEE voltage on the EC-100 and Odroid-C1
    boards. The VDDEE regulator supplies the Mali GPU. It's basically a copy
    of the VCCK (CPU supply) which means it's limited to 0.86V to 1.14V.
    
    Update the operating voltage of the Mali GPU on Meson8b to 1.10V so it
    matches with what the vendor u-boot sets.
    
    Fixes: c3ea80b6138cae ("ARM: dts: meson8b: add the Mali-450 MP2 GPU")
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eb1cf49961a4d38e8098daecfc2be6589e955ef2
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sat Apr 20 11:32:57 2019 +0200

    ARM: dts: meson8: fix GPU interrupts and drop an undocumented property
    
    [ Upstream commit 01dfdd7b4693496854ac92d1ebfb18d7b108f777 ]
    
    The interrupts in Amlogic's vendor kernel sources are all contiguous.
    There are two typos leading to pp2 and pp4 as well as ppmmu2 and ppmmu4
    incorrectly sharing the same interrupt line.
    Fix this by using interrupt 170 for pp2 and 171 for ppmmu2.
    
    Also drop the undocumented "switch-delay" which is a left-over from my
    experiments with an early lima kernel driver when it was still
    out-of-tree and required this property on Amlogic SoCs.
    
    Fixes: 7d3f6b536e72c9 ("ARM: dts: meson8: add the Mali-450 MP6 GPU")
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f42cde4aa63d0bdb9a54c7d36cedf4c0fc5d8843
Author: Sven Van Asbroeck <thesven73@gmail.com>
Date:   Mon Jun 17 14:23:54 2019 -0400

    firmware: improve LSM/IMA security behaviour
    
    commit 2472d64af2d3561954e2f05365a67692bb852f2a upstream.
    
    The firmware loader queries if LSM/IMA permits it to load firmware
    via the sysfs fallback. Unfortunately, the code does the opposite:
    it expressly permits sysfs fw loading if security_kernel_load_data(
    LOADING_FIRMWARE) returns -EACCES. This happens because a
    zero-on-success return value is cast to a bool that's true on success.
    
    Fix the return value handling so we get the correct behaviour.
    
    Fixes: 6e852651f28e ("firmware: add call to LSM hook before firmware sysfs fallback")
    Cc: Stable <stable@vger.kernel.org>
    Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Cc: Kees Cook <keescook@chromium.org>
    To: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
    Reviewed-by: Mimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d08e0972ed77b00bf62b3173e60f1fd255cd8ae
Author: James Morse <james.morse@arm.com>
Date:   Mon Jun 24 18:36:56 2019 +0100

    drivers: base: cacheinfo: Ensure cpu hotplug work is done before Intel RDT
    
    commit 83b44fe343b5abfcb1b2261289bd0cfcfcfd60a8 upstream.
    
    The cacheinfo structures are alloced/freed by cpu online/offline
    callbacks. Originally these were only used by sysfs to expose the
    cache topology to user space. Without any in-kernel dependencies
    CPUHP_AP_ONLINE_DYN was an appropriate choice.
    
    resctrl has started using these structures to identify CPUs that
    share a cache. It updates its 'domain' structures from cpu
    online/offline callbacks. These depend on the cacheinfo structures
    (resctrl_online_cpu()->domain_add_cpu()->get_cache_id()->
     get_cpu_cacheinfo()).
    These also run as CPUHP_AP_ONLINE_DYN.
    
    Now that there is an in-kernel dependency, move the cacheinfo
    work earlier so we know its done before resctrl's CPUHP_AP_ONLINE_DYN
    work runs.
    
    Fixes: 2264d9c74dda1 ("x86/intel_rdt: Build structures for each resource based on cache topology")
    Cc: <stable@vger.kernel.org>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Reinette Chatre <reinette.chatre@intel.com>
    Signed-off-by: James Morse <james.morse@arm.com>
    Link: https://lore.kernel.org/r/20190624173656.202407-1-james.morse@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b6539699f4ea42bb5901fa5d3b0c61b0424c11a
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Thu Jul 11 20:52:18 2019 -0700

    nilfs2: do not use unexported cpu_to_le32()/le32_to_cpu() in uapi header
    
    commit c32cc30c0544f13982ee0185d55f4910319b1a79 upstream.
    
    cpu_to_le32/le32_to_cpu is defined in include/linux/byteorder/generic.h,
    which is not exported to user-space.
    
    UAPI headers must use the ones prefixed with double-underscore.
    
    Detected by compile-testing exported headers:
    
      include/linux/nilfs2_ondisk.h: In function `nilfs_checkpoint_set_snapshot':
      include/linux/nilfs2_ondisk.h:536:17: error: implicit declaration of function `cpu_to_le32' [-Werror=implicit-function-declaration]
        cp->cp_flags = cpu_to_le32(le32_to_cpu(cp->cp_flags) |  \
                       ^
      include/linux/nilfs2_ondisk.h:552:1: note: in expansion of macro `NILFS_CHECKPOINT_FNS'
       NILFS_CHECKPOINT_FNS(SNAPSHOT, snapshot)
       ^~~~~~~~~~~~~~~~~~~~
      include/linux/nilfs2_ondisk.h:536:29: error: implicit declaration of function `le32_to_cpu' [-Werror=implicit-function-declaration]
        cp->cp_flags = cpu_to_le32(le32_to_cpu(cp->cp_flags) |  \
                                   ^
      include/linux/nilfs2_ondisk.h:552:1: note: in expansion of macro `NILFS_CHECKPOINT_FNS'
       NILFS_CHECKPOINT_FNS(SNAPSHOT, snapshot)
       ^~~~~~~~~~~~~~~~~~~~
      include/linux/nilfs2_ondisk.h: In function `nilfs_segment_usage_set_clean':
      include/linux/nilfs2_ondisk.h:622:19: error: implicit declaration of function `cpu_to_le64' [-Werror=implicit-function-declaration]
        su->su_lastmod = cpu_to_le64(0);
                         ^~~~~~~~~~~
    
    Link: http://lkml.kernel.org/r/20190605053006.14332-1-yamada.masahiro@socionext.com
    Fixes: e63e88bc53ba ("nilfs2: move ioctl interface and disk layout to uapi separately")
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Acked-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Joe Perches <joe@perches.com>
    Cc: <stable@vger.kernel.org>    [4.9+]
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 662ec5a3689684ed90978622f0b1a2bb6a32ad5d
Author: Cole Rogers <colerogers@disroot.org>
Date:   Mon Jul 1 00:47:48 2019 -0700

    Input: synaptics - enable SMBUS on T480 thinkpad trackpad
    
    commit abbe3acd7d72ab4633ade6bd24e8306b67e0add3 upstream.
    
    Thinkpad t480 laptops had some touchpad features disabled, resulting in the
    loss of pinch to activities in GNOME, on wayland, and other touch gestures
    being slower. This patch adds the touchpad of the t480 to the smbus_pnp_ids
    whitelist to enable the extra features. In my testing this does not break
    suspend (on fedora, with wayland, and GNOME, using the rc-6 kernel), while
    also fixing the feature on a T480.
    
    Signed-off-by: Cole Rogers <colerogers@disroot.org>
    Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90b9d474043f58ec469c6f9343c0883abff11f2b
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Apr 17 11:13:20 2019 +0300

    e1000e: start network tx queue only when link is up
    
    commit d17ba0f616a08f597d9348c372d89b8c0405ccf3 upstream.
    
    Driver does not want to keep packets in Tx queue when link is lost.
    But present code only reset NIC to flush them, but does not prevent
    queuing new packets. Moreover reset sequence itself could generate
    new packets via netconsole and NIC falls into endless reset loop.
    
    This patch wakes Tx queue only when NIC is ready to send packets.
    
    This is proper fix for problem addressed by commit 0f9e980bf5ee
    ("e1000e: fix cyclic resets at link up with active tx").
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
    Tested-by: Joseph Yasi <joe.yasi@gmail.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Tested-by: Oleksandr Natalenko <oleksandr@redhat.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8449ec9be283b9803e4b356445390fd1ed08e68
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Apr 17 11:13:16 2019 +0300

    Revert "e1000e: fix cyclic resets at link up with active tx"
    
    commit caff422ea81e144842bc44bab408d85ac449377b upstream.
    
    This reverts commit 0f9e980bf5ee1a97e2e401c846b2af989eb21c61.
    
    That change cased false-positive warning about hardware hang:
    
    e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
    IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
    e1000e 0000:00:1f.6 eth0: Detected Hardware Unit Hang:
       TDH                  <0>
       TDT                  <1>
       next_to_use          <1>
       next_to_clean        <0>
    buffer_info[next_to_clean]:
       time_stamp           <fffba7a7>
       next_to_watch        <0>
       jiffies              <fffbb140>
       next_to_watch.status <0>
    MAC Status             <40080080>
    PHY Status             <7949>
    PHY 1000BASE-T Status  <0>
    PHY Extended Status    <3000>
    PCI Status             <10>
    e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx
    
    Besides warning everything works fine.
    Original issue will be fixed property in following patch.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Reported-by: Joseph Yasi <joe.yasi@gmail.com>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=203175
    Tested-by: Joseph Yasi <joe.yasi@gmail.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Tested-by: Oleksandr Natalenko <oleksandr@redhat.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>