04 Feb, 2017

8 commits

  • [ Upstream commit 8ec3e8a192ba6f13be4522ee81227c792c86fb1a ]

    Due to alignment requirements of the hardware transmissions are split into
    two DMA descriptors, a small padding descriptor of 0 - 3 bytes in length
    followed by a descriptor for rest of the packet.

    In the case of IP packets the first descriptor will never be zero due to
    the way that the stack aligns buffers for IP packets. However, for non-IP
    packets it may be zero.

    In that case it has been reported that timeouts occur, presumably because
    transmission stops at the first zero-length DMA descriptor and thus the
    packet is not transmitted. However, in my environment a BUG is triggered as
    follows:

    [ 20.381417] ------------[ cut here ]------------
    [ 20.386054] kernel BUG at lib/swiotlb.c:495!
    [ 20.390324] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
    [ 20.395805] Modules linked in:
    [ 20.398862] CPU: 0 PID: 2089 Comm: mz Not tainted 4.10.0-rc3-00001-gf13ad2db193f #162
    [ 20.406689] Hardware name: Renesas Salvator-X board based on r8a7796 (DT)
    [ 20.413474] task: ffff80063b1f1900 task.stack: ffff80063a71c000
    [ 20.419404] PC is at swiotlb_tbl_map_single+0x178/0x2ec
    [ 20.424625] LR is at map_single+0x4c/0x98
    [ 20.428629] pc : [] lr : [] pstate: 800001c5
    [ 20.436019] sp : ffff80063a71f9b0
    [ 20.439327] x29: ffff80063a71f9b0 x28: ffff80063a20d500
    [ 20.444636] x27: ffff000008ed5000 x26: 0000000000000000
    [ 20.449944] x25: 000000067abe2adc x24: 0000000000000000
    [ 20.455252] x23: 0000000000200000 x22: 0000000000000001
    [ 20.460559] x21: 0000000000175ffe x20: ffff80063b2a0010
    [ 20.465866] x19: 0000000000000000 x18: 0000ffffcae6fb20
    [ 20.471173] x17: 0000ffffa09ba018 x16: ffff0000087c8b70
    [ 20.476480] x15: 0000ffffa084f588 x14: 0000ffffa09cfa14
    [ 20.481787] x13: 0000ffffcae87ff0 x12: 000000000063abe2
    [ 20.487098] x11: ffff000008096360 x10: ffff80063abe2adc
    [ 20.492407] x9 : 0000000000000000 x8 : 0000000000000000
    [ 20.497718] x7 : 0000000000000000 x6 : ffff000008ed50d0
    [ 20.503028] x5 : 0000000000000000 x4 : 0000000000000001
    [ 20.508338] x3 : 0000000000000000 x2 : 000000067abe2adc
    [ 20.513648] x1 : 00000000bafff000 x0 : 0000000000000000
    [ 20.518958]
    [ 20.520446] Process mz (pid: 2089, stack limit = 0xffff80063a71c000)
    [ 20.526798] Stack: (0xffff80063a71f9b0 to 0xffff80063a720000)
    [ 20.532543] f9a0: ffff80063a71fa30 ffff00000839c680
    [ 20.540374] f9c0: ffff80063b2a0010 ffff80063b2a0010 0000000000000001 0000000000000000
    [ 20.548204] f9e0: 000000000000006e ffff80063b23c000 ffff80063b23c000 0000000000000000
    [ 20.556034] fa00: ffff80063b23c000 ffff80063a20d500 000000013b1f1900 0000000000000000
    [ 20.563864] fa20: ffff80063ffd18e0 ffff80063b2a0010 ffff80063a71fa60 ffff00000839cd10
    [ 20.571694] fa40: ffff80063b2a0010 0000000000000000 ffff80063ffd18e0 000000067abe2adc
    [ 20.579524] fa60: ffff80063a71fa90 ffff000008096380 ffff80063b2a0010 0000000000000000
    [ 20.587353] fa80: 0000000000000000 0000000000000001 ffff80063a71fac0 ffff00000864f770
    [ 20.595184] faa0: ffff80063b23caf0 0000000000000000 0000000000000000 0000000000000140
    [ 20.603014] fac0: ffff80063a71fb60 ffff0000087e6498 ffff80063a20d500 ffff80063b23c000
    [ 20.610843] fae0: 0000000000000000 ffff000008daeaf0 0000000000000000 ffff000008daeb00
    [ 20.618673] fb00: ffff80063a71fc0c ffff000008da7000 ffff80063b23c090 ffff80063a44f000
    [ 20.626503] fb20: 0000000000000000 ffff000008daeb00 ffff80063a71fc0c ffff000008da7000
    [ 20.634333] fb40: ffff80063b23c090 0000000000000000 ffff800600000037 ffff0000087e63d8
    [ 20.642163] fb60: ffff80063a71fbc0 ffff000008807510 ffff80063a692400 ffff80063a20d500
    [ 20.649993] fb80: ffff80063a44f000 ffff80063b23c000 ffff80063a69249c 0000000000000000
    [ 20.657823] fba0: 0000000000000000 ffff80063a087800 ffff80063b23c000 ffff80063a20d500
    [ 20.665653] fbc0: ffff80063a71fc10 ffff0000087e67dc ffff80063a20d500 ffff80063a692400
    [ 20.673483] fbe0: ffff80063b23c000 0000000000000000 ffff80063a44f000 ffff80063a69249c
    [ 20.681312] fc00: ffff80063a5f1a10 000000103a087800 ffff80063a71fc70 ffff0000087e6b24
    [ 20.689142] fc20: ffff80063a5f1a80 ffff80063a71fde8 000000000000000f 00000000000005ea
    [ 20.696972] fc40: ffff80063a5f1a10 0000000000000000 000000000000000f ffff00000887fbd0
    [ 20.704802] fc60: fffffff43a5f1a80 0000000000000000 ffff80063a71fc80 ffff000008880240
    [ 20.712632] fc80: ffff80063a71fd90 ffff0000087c7a34 ffff80063afc7180 0000000000000000
    [ 20.720462] fca0: 0000ffffcae6fe18 0000000000000014 0000000060000000 0000000000000015
    [ 20.728292] fcc0: 0000000000000123 00000000000000ce ffff0000088d2000 ffff80063b1f1900
    [ 20.736122] fce0: 0000000000008933 ffff000008e7cb80 ffff80063a71fd80 ffff0000087c50a4
    [ 20.743951] fd00: 0000000000008933 ffff000008e7cb80 ffff000008e7cb80 000000100000000e
    [ 20.751781] fd20: ffff80063a71fe4c 0000ffff00000300 0000000000000123 0000000000000000
    [ 20.759611] fd40: 0000000000000000 ffff80063b1f0000 000000000000000e 0000000000000300
    [ 20.767441] fd60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    [ 20.775271] fd80: 0000000000000000 0000000000000000 ffff80063a71fda0 ffff0000087c8c20
    [ 20.783100] fda0: 0000000000000000 ffff000008082f30 0000000000000000 0000800637260000
    [ 20.790930] fdc0: ffffffffffffffff 0000ffffa0903078 0000000000000000 000000001ea87232
    [ 20.798760] fde0: 000000000000000f ffff80063a71fe40 ffff800600000014 ffff000000000001
    [ 20.806590] fe00: 0000000000000000 0000000000000000 ffff80063a71fde8 0000000000000000
    [ 20.814420] fe20: 0000000000000000 0000000000000000 0000000000000000 0000000000000001
    [ 20.822249] fe40: 0000000203000011 0000000000000000 0000000000000000 ffff80063a68aa00
    [ 20.830079] fe60: ffff80063a68aa00 0000000000000003 0000000000008933 ffff0000081f1b9c
    [ 20.837909] fe80: 0000000000000000 ffff000008082f30 0000000000000000 0000800637260000
    [ 20.845739] fea0: ffffffffffffffff 0000ffffa07ca81c 0000000060000000 0000000000000015
    [ 20.853569] fec0: 0000000000000003 000000001ea87232 000000000000000f 0000000000000000
    [ 20.861399] fee0: 0000ffffcae6fe18 0000000000000014 0000000000000300 0000000000000000
    [ 20.869228] ff00: 00000000000000ce 0000000000000000 00000000ffffffff 0000000000000000
    [ 20.877059] ff20: 0000000000000002 0000ffffcae87ff0 0000ffffa09cfa14 0000ffffa084f588
    [ 20.884888] ff40: 0000000000000000 0000ffffa09ba018 0000ffffcae6fb20 000000001ea87010
    [ 20.892718] ff60: 0000ffffa09b9000 0000ffffcae6fe30 0000ffffcae6fe18 000000000000000f
    [ 20.900548] ff80: 0000000000000003 000000001ea87232 0000000000000000 0000000000000000
    [ 20.908378] ffa0: 0000000000000000 0000ffffcae6fdc0 0000ffffa09a7824 0000ffffcae6fdc0
    [ 20.916208] ffc0: 0000ffffa0903078 0000000060000000 0000000000000003 00000000000000ce
    [ 20.924038] ffe0: 0000000000000000 0000000000000000 ffffffffffffffff ffffffffffffffff
    [ 20.931867] Call trace:
    [ 20.934312] Exception stack(0xffff80063a71f7e0 to 0xffff80063a71f910)
    [ 20.940750] f7e0: 0000000000000000 0001000000000000 ffff80063a71f9b0 ffff00000839c4c0
    [ 20.948580] f800: ffff80063a71f840 ffff00000888a6e4 ffff80063a24c418 ffff80063a24c448
    [ 20.956410] f820: 0000000000000000 ffff00000811cd54 ffff80063a71f860 ffff80063a24c458
    [ 20.964240] f840: ffff80063a71f870 ffff00000888b258 ffff80063a24c418 0000000000000001
    [ 20.972070] f860: ffff80063a71f910 ffff80063a7b7028 ffff80063a71f890 ffff0000088825e4
    [ 20.979899] f880: 0000000000000000 00000000bafff000 000000067abe2adc 0000000000000000
    [ 20.987729] f8a0: 0000000000000001 0000000000000000 ffff000008ed50d0 0000000000000000
    [ 20.995560] f8c0: 0000000000000000 0000000000000000 ffff80063abe2adc ffff000008096360
    [ 21.003390] f8e0: 000000000063abe2 0000ffffcae87ff0 0000ffffa09cfa14 0000ffffa084f588
    [ 21.011219] f900: ffff0000087c8b70 0000ffffa09ba018
    [ 21.016097] [] swiotlb_tbl_map_single+0x178/0x2ec
    [ 21.022362] [] map_single+0x4c/0x98
    [ 21.027411] [] swiotlb_map_page+0xa4/0x138
    [ 21.033072] [] __swiotlb_map_page+0x20/0x7c
    [ 21.038821] [] ravb_start_xmit+0x174/0x668
    [ 21.044484] [] dev_hard_start_xmit+0x8c/0x120
    [ 21.050407] [] sch_direct_xmit+0x108/0x1a0
    [ 21.056064] [] __dev_queue_xmit+0x194/0x4cc
    [ 21.061807] [] dev_queue_xmit+0x10/0x18
    [ 21.067214] [] packet_sendmsg+0xf40/0x1220
    [ 21.072873] [] sock_sendmsg+0x18/0x2c
    [ 21.078097] [] SyS_sendto+0xb0/0xf0
    [ 21.083150] [] el0_svc_naked+0x24/0x28
    [ 21.088462] Code: d34bfef7 2a1803f3 1a9f86d6 35fff878 (d4210000)
    [ 21.094611] ---[ end trace 5bc544ad491f3814 ]---
    [ 21.099234] Kernel panic - not syncing: Fatal exception in interrupt
    [ 21.105587] Kernel Offset: disabled
    [ 21.109073] Memory Limit: none
    [ 21.112126] ---[ end Kernel panic - not syncing: Fatal exception in interrupt

    Fixes: 2f45d1902acf ("ravb: minimize TX data copying")
    Signed-off-by: Masaru Nagai
    Acked-by: Sergei Shtylyov
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Masaru Nagai
     
  • [ Upstream commit 8cf699ec849f4ca1413cea01289bd7d37dbcc626 ]

    Disable BH around the call to napi_schedule() to avoid following warning

    [ 52.095499] NOHZ: local_softirq_pending 08
    [ 52.421291] NOHZ: local_softirq_pending 08
    [ 52.608313] NOHZ: local_softirq_pending 08

    Fixes: 8d59de8f7bb3 ("net/mlx4_en: Process all completions in RX rings after port goes up")
    Signed-off-by: Eric Dumazet
    Cc: Erez Shitrit
    Cc: Eugenia Emantayev
    Cc: Tariq Toukan
    Acked-by: Tariq Toukan
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Eric Dumazet
     
  • [ Upstream commit 148d3d021cf9724fcf189ce4e525a094bbf5ce89 ]

    The __bcm_sysport_tx_reclaim() function is used to reclaim transmit
    resources in different places within the driver. Most of them should
    not affect the state of the transit flow control.

    Introduce bcm_sysport_tx_clean() which cleans the ring, but does not
    re-enable flow control towards the networking stack, and make
    bcm_sysport_tx_reclaim() do the actual transmit queue flow control.

    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Florian Fainelli
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Florian Fainelli
     
  • [ Upstream commit 28e46a0f2e03ab4ed0e23cace1ea89a68c8c115b ]

    The event_data starts from address 0x00-0x0C and not from 0x08-0x014. This
    leads to duplication with other fields in the Event Queue Element such as
    sub-type, cqn and owner.

    Fixes: eda6500a987a0 ("mlxsw: Add PCI bus implementation")
    Signed-off-by: Elad Raz
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Elad Raz
     
  • [ Upstream commit 400fc0106dd8c27ed84781c929c1a184785b9c79 ]

    During transmission the skb is checked for headroom in order to
    add vendor specific header. In case the skb needs to be re-allocated,
    skb_realloc_headroom() is called to make a private copy of the original,
    but doesn't release it. Current code assumes that the original skb is
    released during reallocation and only releases it at the error path
    which causes a memory leak.

    Fix this by adding the original skb release to the main path.

    Fixes: d003462a50de ("mlxsw: Simplify mlxsw_sx_port_xmit function")
    Signed-off-by: Arkadi Sharshevsky
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Arkadi Sharshevsky
     
  • [ Upstream commit 36bf38d158d3482119b3e159c0619b3c1539b508 ]

    During transmission the skb is checked for headroom in order to
    add vendor specific header. In case the skb needs to be re-allocated,
    skb_realloc_headroom() is called to make a private copy of the original,
    but doesn't release it. Current code assumes that the original skb is
    released during reallocation and only releases it at the error path
    which causes a memory leak.

    Fix this by adding the original skb release to the main path.

    Fixes: 56ade8fe3fe1 ("mlxsw: spectrum: Add initial support for Spectrum ASIC")
    Signed-off-by: Arkadi Sharshevsky
    Reviewed-by: Ido Schimmel
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Arkadi Sharshevsky
     
  • [ Upstream commit 0719e72ccb801829a3d735d187ca8417f0930459 ]

    The receive callback (in tasklet context) is using RCU to get reference
    to associated VF network device but this is not safe. RCU read lock
    needs to be held. Found by running with full lockdep debugging
    enabled.

    Fixes: f207c10d9823 ("hv_netvsc: use RCU to protect vf_netdev")
    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    stephen hemminger
     
  • [ Upstream commit 19c0f40d4fca3a47b8f784a627f0467f0138ccc8 ]

    Fix the hw rx checksum is always enabled, and the user couldn't switch
    it to sw rx checksum.

    Note that the RTL_VER_01 only support sw rx checksum only. Besides,
    the hw rx checksum for RTL_VER_02 is disabled after
    commit b9a321b48af4 ("r8152: Fix broken RX checksums."). Re-enable it.

    Signed-off-by: Hayes Wang
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    hayeswang
     

01 Feb, 2017

32 commits

  • commit 4fc020d864647ea3ae8cb8f17d63e48e87ebd0bf upstream.

    The WaDisableLSQCROPERFforOCL workaround has the side effect of
    disabling an L3SQ optimization that has huge performance implications
    and is unlikely to be necessary for the correct functioning of usual
    graphic workloads. Userspace is free to re-enable the workaround on
    demand, and is generally in a better position to determine whether the
    workaround is necessary than the DRM is (e.g. only during the
    execution of compute kernels that rely on both L3 fences and HDC R/W
    requests).

    The same workaround seems to apply to BDW (at least to production
    stepping G1) and SKL as well (the internal workaround database claims
    that it does for all steppings, while the BSpec workaround table only
    mentions pre-production steppings), but the DRM doesn't do anything
    beyond whitelisting the L3SQCREG4 register so userspace can enable it
    when it sees fit. Do the same on KBL platforms.

    Improves performance of the GFXBench4 gl_manhattan31 benchmark by 60%,
    and gl_4 (AKA car chase) by 14% on a KBL GT2 running Mesa master --
    This is followed by a regression of 35% and 10% respectively for the
    same benchmarks and platform caused by my recent patch series
    switching userspace to use the dataport constant cache instead of the
    sampler to implement uniform pull constant loads, which caused us to
    hit more heavily the L3 cache (and on platforms other than KBL had the
    opposite effect of improving performance of the same two benchmarks).
    The overall effect on KBL of this change combined with the recent
    userspace change is respectively 4.6% and 2.6%. SynMark2 OglShMapPcf
    was affected by the constant cache changes (though it improved as it
    did on other platforms rather than regressing), but is not
    significantly affected by this patch (with statistical significance of
    5% and sample size 20).

    v2: Drop some more code to avoid unused variable warning.

    Fixes: 738fa1b3123f ("drm/i915/kbl: Add WaDisableLSQCROPERFforOCL")
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99256
    Signed-off-by: Francisco Jerez
    Cc: Matthew Auld
    Cc: Eero Tamminen
    Cc: Jani Nikula
    Cc: Mika Kuoppala
    Cc: beignet@lists.freedesktop.org
    Reviewed-by: Mika Kuoppala
    [Removed double Fixes tag]
    Signed-off-by: Mika Kuoppala
    Link: http://patchwork.freedesktop.org/patch/msgid/1484217894-20505-1-git-send-email-mika.kuoppala@intel.com
    (cherry picked from commit 8726f2faa371514fba2f594d799db95203dfeee0)
    Signed-off-by: Jani Nikula
    [ Francisco Jerez: Rebase on v4.9 branch. ]
    Signed-off-by: Francisco Jerez
    Signed-off-by: Greg Kroah-Hartman

    Francisco Jerez
     
  • commit 5a00b6c2438460b870a451f14593fc40d3c7edf6 upstream.

    The commit 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
    starts refusing misconfigured interrupt handlers. This makes
    intel_mid_powerbtn not working anymore.

    Add a mandatory flag to a threaded IRQ request in the driver.

    Fixes: 1c6c69525b40 ("genirq: Reject bogus threaded irq requests")
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Greg Kroah-Hartman

    Andy Shevchenko
     
  • commit f7f6634d23830ff74335734fbdb28ea109c1f349 upstream.

    Once DMA API usage is enabled, it becomes apparent that virtio-mmio is
    inadvertently relying on the default 32-bit DMA mask, which leads to
    problems like rapidly exhausting SWIOTLB bounce buffers.

    Ensure that we set the appropriate 64-bit DMA mask whenever possible,
    with the coherent mask suitably limited for the legacy vring as per
    a0be1db4304f ("virtio_pci: Limit DMA mask to 44 bits for legacy virtio
    devices").

    Cc: Andy Lutomirski
    Cc: Michael S. Tsirkin
    Reported-by: Jean-Philippe Brucker
    Fixes: b42111382f0e ("virtio_mmio: Use the DMA API if enabled")
    Signed-off-by: Robin Murphy
    Signed-off-by: Michael S. Tsirkin
    Signed-off-by: Greg Kroah-Hartman

    Robin Murphy
     
  • commit 8a1f780e7f28c7c1d640118242cf68d528c456cd upstream.

    online_{kernel|movable} is used to change the memory zone to
    ZONE_{NORMAL|MOVABLE} and online the memory.

    To check that memory zone can be changed, zone_can_shift() is used.
    Currently the function returns minus integer value, plus integer
    value and 0. When the function returns minus or plus integer value,
    it means that the memory zone can be changed to ZONE_{NORNAL|MOVABLE}.

    But when the function returns 0, there are two meanings.

    One of the meanings is that the memory zone does not need to be changed.
    For example, when memory is in ZONE_NORMAL and onlined by online_kernel
    the memory zone does not need to be changed.

    Another meaning is that the memory zone cannot be changed. When memory
    is in ZONE_NORMAL and onlined by online_movable, the memory zone may
    not be changed to ZONE_MOVALBE due to memory online limitation(see
    Documentation/memory-hotplug.txt). In this case, memory must not be
    onlined.

    The patch changes the return type of zone_can_shift() so that memory
    online operation fails when memory zone cannot be changed as follows:

    Before applying patch:
    # grep -A 35 "Node 2" /proc/zoneinfo
    Node 2, zone Normal

    node_scanned 0
    spanned 8388608
    present 7864320
    managed 7864320
    # echo online_movable > memory4097/state
    # grep -A 35 "Node 2" /proc/zoneinfo
    Node 2, zone Normal

    node_scanned 0
    spanned 8388608
    present 8388608
    managed 8388608

    online_movable operation succeeded. But memory is onlined as
    ZONE_NORMAL, not ZONE_MOVABLE.

    After applying patch:
    # grep -A 35 "Node 2" /proc/zoneinfo
    Node 2, zone Normal

    node_scanned 0
    spanned 8388608
    present 7864320
    managed 7864320
    # echo online_movable > memory4097/state
    bash: echo: write error: Invalid argument
    # grep -A 35 "Node 2" /proc/zoneinfo
    Node 2, zone Normal

    node_scanned 0
    spanned 8388608
    present 7864320
    managed 7864320

    online_movable operation failed because of failure of changing
    the memory zone from ZONE_NORMAL to ZONE_MOVABLE

    Fixes: df429ac03936 ("memory-hotplug: more general validation of zone during online")
    Link: http://lkml.kernel.org/r/2f9c3837-33d7-b6e5-59c0-6ca4372b2d84@gmail.com
    Signed-off-by: Yasuaki Ishimatsu
    Reviewed-by: Reza Arbab
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds
    Signed-off-by: Greg Kroah-Hartman

    Yasuaki Ishimatsu
     
  • commit 04ff5a095d662e0879f0eb04b9247e092210aeff upstream.

    The commit 658b476c742f ("pinctrl: baytrail: Add debounce configuration")
    implements debounce for Baytrail pin control, but seems wasn't tested properly.

    The register which keeps debounce value is separated from the configuration
    one. Writing wrong values to the latter will guarantee wrong behaviour of the
    driver and even might break something physically.

    Besides above there is missed case how to disable it, which is actually done
    through the bit in configuration register.

    Rectify implementation here by using proper register for debounce value.

    Fixes: 658b476c742f ("pinctrl: baytrail: Add debounce configuration")
    Cc: Cristina Ciocan
    Signed-off-by: Andy Shevchenko
    Acked-by: Mika Westerberg
    Signed-off-by: Linus Walleij
    Signed-off-by: Greg Kroah-Hartman

    Andy Shevchenko
     
  • commit df1539c25cce98e2ac69881958850c6535240707 upstream.

    Fix the pin-mux values for the MDC, MDIO, MDIO_INTL, PHYRSTL pins.

    Fixes: 1e359ab1285e ("pinctrl: uniphier: add Ethernet pin-mux settings")
    Signed-off-by: Masahiro Yamada
    Signed-off-by: Linus Walleij
    Signed-off-by: Greg Kroah-Hartman

    Masahiro Yamada
     
  • commit ecc8995363ee6231b32dad61c955b371b79cc4cf upstream.

    PADCFGLOCK (and PADCFGLOCK_TX) offset in Broxton actually starts at 0x060
    and not 0x090 as used in the driver. Fix it to use the correct offset.

    Signed-off-by: Mika Westerberg
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Linus Walleij
    Signed-off-by: Greg Kroah-Hartman

    Mika Westerberg
     
  • commit c739c0a7c3c2472d7562b8f802cdce44d2597c8b upstream.

    A rare randconfig build failure shows up in this driver when
    the CRC32 helper is not there:

    drivers/media/built-in.o: In function `s5k4ecgx_s_power':
    s5k4ecgx.c:(.text+0x9eb4): undefined reference to `crc32_le'

    This adds the 'select' that all other users of this function have.

    Fixes: 8b99312b7214 ("[media] Add v4l2 subdev driver for S5K4ECGX sensor")

    Signed-off-by: Arnd Bergmann
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Arnd Bergmann
     
  • commit 2d4b21e0a2913612274a69a3ba1bfee4cffc6e77 upstream.

    On UD QP completer tasklet is scheduled for each packet sent.

    If it is followed by a destroy_qp(), the kernel panic will
    happen as the completer tries to operate on a destroyed QP.

    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Yonatan Cohen
    Reviewed-by: Moni Shoua
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Yonatan Cohen
     
  • commit f39f775218a7520e3700de2003c84a042c3b5972 upstream.

    The first argument of list_add_tail is the new item and the second
    is the head of the list. Fix the code to pass arguments in the
    right order, otherwise not all the rxe devices will be removed
    during teardown.

    Fixes: 8700e3e7c4857 ('Soft RoCE driver')
    Signed-off-by: Maor Gottlieb
    Reviewed-by: Moni Shoua
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Maor Gottlieb
     
  • commit 828f6fa65ce7e80f77f5ab12942e44eb3d9d174e upstream.

    1. Release pid before enter odp flow
    2. Release pid when fail to allocate memory

    Fixes: 87773dd56d54 ("IB: ib_umem_release() should decrement mm->pinned_vm from ib_umem_get")
    Fixes: 8ada2c1c0c1d ("IB/core: Add support for on demand paging regions")
    Signed-off-by: Kenneth Lee
    Reviewed-by: Haggai Eran
    Reviewed-by: Leon Romanovsky
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Kenneth Lee
     
  • commit 6d1d427a4e24c403b4adf928d61994bdaa0ca03a upstream.

    In intel_crtc_disable_noatomic(), bail on a failure to allocate an
    atomic state to avoid a NULL pointer dereference.

    Fixes: 4a80655827af ("drm/i915: Pass atomic state to crtc enable/disable functions")
    Cc: Maarten Lankhorst
    Cc: Daniel Vetter
    Cc: Daniel Vetter
    Cc: Jani Nikula
    Cc: intel-gfx@lists.freedesktop.org
    Signed-off-by: Ander Conselvan de Oliveira
    Reviewed-by: Ville Syrjälä
    Link: http://patchwork.freedesktop.org/patch/msgid/1484922525-6131-4-git-send-email-ander.conselvan.de.oliveira@intel.com
    (cherry picked from commit 31bb2ef97ea9db343348f9b5ccaa9bb6f48fc655)
    Signed-off-by: Jani Nikula
    Signed-off-by: Greg Kroah-Hartman

    Ander Conselvan de Oliveira
     
  • commit 3781bd6e7d64d5f5bea9fdee11ab9460a700c0e4 upstream.

    Parameters tile_size, tile_width and tile_height were passed in the
    wrong order to _intel_adjust_tile_offset() when calculating the rotated
    offsets.

    This doesn't fix any user visible bug, since for packed formats new
    and old offset are the same and the rotated offsets are within a tile
    before they are fed to _intel_adjust_tile_offset(). In that case, the
    offsets are unchanged. That is not true for planar formats, but those
    are currently not supported.

    Fixes: 66a2d927cb0e ("drm/i915: Make intel_adjust_tile_offset() work for linear buffers")
    Cc: Ville Syrjälä
    Cc: Sivakumar Thulasimani
    Cc: Daniel Vetter
    Cc: Jani Nikula
    Cc: intel-gfx@lists.freedesktop.org
    Signed-off-by: Ander Conselvan de Oliveira
    Reviewed-by: Ville Syrjälä
    Link: http://patchwork.freedesktop.org/patch/msgid/1484922525-6131-3-git-send-email-ander.conselvan.de.oliveira@intel.com
    (cherry picked from commit 46a1bd289507dfcc428fb9daf65421ed6be6af8b)
    Signed-off-by: Jani Nikula
    Signed-off-by: Greg Kroah-Hartman

    Ander Conselvan de Oliveira
     
  • commit 21d6e0bde50713922a6520ef84e5fd245b05d468 upstream.

    An error in the condition for avoiding the call to intel_hpd_poll_init()
    for valleyview and cherryview from intel_runtime_suspend() caused it to
    be called unconditionally. Fix it.

    Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd")
    Cc: Ville Syrjälä
    Cc: Daniel Vetter
    Cc: Lyude
    Cc: Daniel Vetter
    Cc: Jani Nikula
    Cc: intel-gfx@lists.freedesktop.org
    Signed-off-by: Ander Conselvan de Oliveira
    Reviewed-by: Ville Syrjälä
    Link: http://patchwork.freedesktop.org/patch/msgid/1484922525-6131-2-git-send-email-ander.conselvan.de.oliveira@intel.com
    (cherry picked from commit 04313b00b79405f86d815100f85c47a2ee5b8ca0)
    Signed-off-by: Jani Nikula
    Signed-off-by: Greg Kroah-Hartman

    Ander Conselvan de Oliveira
     
  • commit c34f078675f505c4437919bb1897b1351f16a050 upstream.

    In the path where intel_crt_detect_ddc() detects a CRT, if would return
    true without freeing the edid.

    Fixes: a2bd1f541f19 ("drm/i915: check whether we actually received an edid in detect_ddc")
    Cc: Chris Wilson
    Cc: Daniel Vetter
    Cc: Daniel Vetter
    Cc: Jani Nikula
    Cc: intel-gfx@lists.freedesktop.org
    Signed-off-by: Ander Conselvan de Oliveira
    Reviewed-by: Ville Syrjälä
    Reviewed-by: Jani Nikula
    Link: http://patchwork.freedesktop.org/patch/msgid/1484922525-6131-1-git-send-email-ander.conselvan.de.oliveira@intel.com
    (cherry picked from commit c96b63a6a7ac4bd670ec2e663793a9a31418b790)
    Signed-off-by: Jani Nikula
    Signed-off-by: Greg Kroah-Hartman

    Ander Conselvan de Oliveira
     
  • commit 27892bbdc9233f33bf0f44e08aab8f12e0dec142 upstream.

    The .disable_display parameter was causing a fatal crash when fbdev
    was dereferenced during driver init.

    V1: protection in i915_drv.c
    V2: Moved protection to intel_fbdev.c

    Fixes: 43cee314345a ("drm/i915/fbdev: Limit the global async-domain synchronization")
    Testcase: igt/drv_module_reload/basic-no-display
    Cc: Chris Wilson
    Signed-off-by: Clint Taylor
    Link: http://patchwork.freedesktop.org/patch/msgid/1484775523-29428-1-git-send-email-clinton.a.taylor@intel.com
    Reviewed-by: Chris Wilson
    Cc: Lukas Wunner
    Cc: Daniel Vetter
    Cc: Jani Nikula
    Signed-off-by: Chris Wilson
    (cherry picked from commit 5b8cd0755f8a06a851c436a013e7be0823fb155a)
    Signed-off-by: Jani Nikula
    Signed-off-by: Greg Kroah-Hartman

    Clint Taylor
     
  • commit e88893fea17996018b2d68a22e677ea04f3baadf upstream.

    Missed when rebasing patches, I failed to set ret to zero before
    starting the unbind loop (which depends upon ret being zero).

    Reported-by: Matthew Auld
    Fixes: 9332f3b1b99a ("drm/i915: Combine loops within i915_gem_evict_something")
    Signed-off-by: Chris Wilson
    Cc: Matthew Auld
    Link: http://patchwork.freedesktop.org/patch/msgid/20170105155940.10033-1-chris@chris-wilson.co.uk
    Reviewed-by: Matthew Auld
    (cherry picked from commit 121dfbb2a2ef1c5f49e15c38ccc47ff0beb59446)
    Signed-off-by: Jani Nikula
    Signed-off-by: Greg Kroah-Hartman

    Chris Wilson
     
  • commit 79d6205a3f741c9fb89cfc47dfa0eddb1526726d upstream.

    The s_stream() handler incorrectly writes the whole MISC_CTL register to
    enable or disable the outputs, overriding the output pinmuxing
    configuration. Fix it to only touch the output enable bits.

    The CONF_SHARED_PIN register is also written by the same function,
    resulting in muxing the INTREQ signal instead of the VBLK/GPCL signal on
    the INTREQ/GPCL/VBLK pin. As the driver doesn't support interrupts this
    is obviously incorrect, and breaks operation on other devices. Fix it by
    removing the write.

    Signed-off-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Laurent Pinchart
     
  • commit b4b2de386bbb6589d81596999d4a924928dc119b upstream.

    The FID/GLCO/VLK/HVLK and INTREQ/GPCL/VBLK pins are muxed differently
    depending on whether the input is an S-Video or composite signal. The
    comment that explains the logic doesn't reflect the code. It appears
    that the comment is incorrect, as disabling the output data bus in
    composite mode makes no sense. Update the comment to match the code.

    While at it define macros for the MISC_CTL register bits, the code is
    too confusing with numerical values.

    Signed-off-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Laurent Pinchart
     
  • commit aff808e813fc2d311137754165cf53d4ee6ddcc2 upstream.

    The tvp5150 doesn't support format setting through the subdev pad API
    and thus implements the set format handler as a get format operation.
    The single handler, tvp5150_fill_fmt(), resets the device by calling
    tvp5150_reset(). This causes malfunction as the device can be reset at
    will, possibly from userspace when the subdev userspace API is enabled.

    The reset call was added in commit ec2c4f3f93cb ("[media] media:
    tvp5150: Add mbus_fmt callbacks"), probably as an attempt to set the
    device to a known state before detecting the current TV standard.
    However, the get format handler doesn't access the hardware to get the
    TV standard since commit 963ddc63e20d ("[media] media: tvp5150: Add
    cropping support"). There is thus no need to reset the device when
    getting the format.

    However, removing the tvp5150_reset() from the get/set format handlers
    results in the function not being called at all if the bridge driver
    doesn't use the .reset() operation. The operation is nowadays abused and
    shouldn't be used, so shouldn't expect bridge drivers to call it. To
    make sure the device is properly initialize, move the reset call from
    the format handlers to the probe function.

    Signed-off-by: Laurent Pinchart
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Laurent Pinchart
     
  • commit 48775cb73c2e26b7ca9d679875a6e570c8b8e124 upstream.

    commit 73d5c5c864f4 ("[media] pctv452e: don't do DMA on stack") caused
    a NULL pointer dereference which occurs when dvb_usb_init()
    calls dvb_usb_device_power_ctrl() for the first time, before the
    frontend has been attached. It also caused a recursive deadlock because
    tt3650_ci_msg_locked() has already locked the mutex.

    So, partially revert it, but move the buffer to the heap
    (DMA capable), not to the stack (may not be DMA capable).
    Instead of sharing one buffer which needs mutex protection,
    do a new heap allocation for each call.

    Fixes: commit 73d5c5c864f4 ("[media] pctv452e: don't do DMA on stack")

    Signed-off-by: Max Kellermann
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Max Kellermann
     
  • commit c12a67fec8d99bb554e8d4e99120d418f1a39c87 upstream.

    Commit ad61a4c7a9b7 ("iw_cxgb4: don't block in destroy_qp awaiting
    the last deref") introduced a bug where the RDMA QP EQ queue memory
    (and QIDs) are possibly freed before the underlying connection has been
    fully shutdown. The result being a possible DMA read issued by HW after
    the queue memory has been unmapped and freed. This results in possible
    WR corruption in the worst case, system bus errors if an IOMMU is in use,
    and SGE "bad WR" errors reported in the very least. The fix is to defer
    unmap/free of queue memory and QID resources until the QP struct has
    been fully dereferenced. To do this, the c4iw_ucontext must also be kept
    around until the last QP that references it is fully freed. In addition,
    since the last QP deref can happen in an IRQ disabled context, we need
    a new workqueue thread to do the final unmap/free of the EQ queue memory.

    Fixes: ad61a4c7a9b7 ("iw_cxgb4: don't block in destroy_qp awaiting the last deref")
    Signed-off-by: Steve Wise
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Steve Wise
     
  • commit befa60113ce7ea270cb51eada28443ca2756f480 upstream.

    In order to make the driver work with the common clock framework, this
    patch converts the clk_enable()/clk_disable() to
    clk_prepare_enable()/clk_disable_unprepare().

    Also add error checking for clk_prepare_enable().

    Signed-off-by: Yegor Yefremov
    Signed-off-by: Marc Kleine-Budde
    Signed-off-by: Greg Kroah-Hartman

    Yegor Yefremov
     
  • commit c97c52be78b8463ac5407f1cf1f22f8f6cf93a37 upstream.

    The priv->device pointer for c_can_pci is never set, but it is used
    without a NULL check in c_can_start(). Setting it in c_can_pci_probe()
    like c_can_plat_probe() prevents c_can_pci.ko from crashing, with and
    without CONFIG_PM.

    This might also cause the pm_runtime_*() functions in c_can.c to
    actually be executed for c_can_pci devices - they are the only other
    place where priv->device is used, but they all contain a null check.

    Signed-off-by: Einar Jón
    Signed-off-by: Marc Kleine-Budde
    Signed-off-by: Greg Kroah-Hartman

    Einar Jón
     
  • commit 0a475ef4226e305bdcffe12b401ca1eab06c4913 upstream.

    After setting indirect_sg_entries module_param to huge value (e.g 500,000),
    srp_alloc_req_data() fails to allocate indirect descriptors for the request
    ring (kmalloc fails). This commit enforces the maximum value of
    indirect_sg_entries to be SG_MAX_SEGMENTS as signified in module param
    description.

    Fixes: 65e8617fba17 (scsi: rename SCSI_MAX_{SG, SG_CHAIN}_SEGMENTS)
    Fixes: c07d424d6118 (IB/srp: add support for indirect tables that don't fit in SRP_CMD)
    Signed-off-by: Israel Rukshin
    Signed-off-by: Max Gurtovoy
    Reviewed-by: Laurence Oberman
    Reviewed-by: Bart Van Assche --
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Israel Rukshin
     
  • commit ad8e66b4a80182174f73487ed25fd2140cf43361 upstream.

    If the device support arbitrary sg list mapping (device cap
    IB_DEVICE_SG_GAPS_REG set) we allocate the memory regions with
    IB_MR_TYPE_SG_GAPS.

    Fixes: 509c5f33f4f6 ("IB/srp: Prevent mapping failures")
    Signed-off-by: Israel Rukshin
    Signed-off-by: Max Gurtovoy
    Reviewed-by: Leon Romanovsky
    Reviewed-by: Mark Bloch
    Reviewed-by: Yuval Shaia
    Reviewed-by: Bart Van Assche
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Israel Rukshin
     
  • commit 1e5db6c31ade4150c2e2b1a21e39f776c38fea39 upstream.

    For devices that can register page list that is bigger than
    USHRT_MAX, we actually take the wrong value for sg_tablesize.
    E.g: for CX4 max_fast_reg_page_list_len is 65536 (bigger than USHRT_MAX)
    so we set sg_tablesize to 0 by mistake. Therefore, each IO that is
    bigger than 4k splitted to "< 4k" chunks that cause performance degredation.
    Remove wrong sg_tablesize assignment, and use the value that was set during
    address resolution handler with the needed casting.

    Signed-off-by: Max Gurtovoy
    Reviewed-by: Sagi Grimberg
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Max Gurtovoy
     
  • commit b4cfe3971f6eab542dd7ecc398bfa1aeec889934 upstream.

    If IPV6 has not been enabled in the underlying kernel, we must avoid
    calling IPV6 procedures in rdma_cm.ko.

    This requires using "IS_ENABLED(CONFIG_IPV6)" in "if" statements
    surrounding any code which calls external IPV6 procedures.

    In the instance fixed here, procedure cma_bind_addr() called
    ipv6_addr_type() -- which resulted in calling external procedure
    __ipv6_addr_type().

    Fixes: 6c26a77124ff ("RDMA/cma: fix IPv6 address resolution")
    Cc: Spencer Baugh
    Signed-off-by: Jack Morgenstein
    Reviewed-by: Moni Shoua
    Signed-off-by: Leon Romanovsky
    Signed-off-by: Doug Ledford
    Signed-off-by: Greg Kroah-Hartman

    Jack Morgenstein
     
  • commit 950eabbd6ddedc1b08350b9169a6a51b130ebaaf upstream.

    With some gcc versions, we get a warning about the eicon driver,
    and that currently shows up as the only remaining warning in one
    of the build bots:

    In file included from ../drivers/isdn/hardware/eicon/message.c:30:0:
    eicon/message.c: In function 'mixer_notify_update':
    eicon/platform.h:333:18: warning: array subscript is above array bounds [-Warray-bounds]

    The code is easily changed to open-code the unusual PUT_WORD() line
    causing this to avoid the warning.

    Link: http://arm-soc.lixom.net/buildlogs/stable-rc/v4.4.45/
    Signed-off-by: Arnd Bergmann
    Signed-off-by: David S. Miller
    Signed-off-by: Greg Kroah-Hartman

    Arnd Bergmann
     
  • commit c7070619f3408d9a0dffbed9149e6f00479cf43b upstream.

    Booting Linux on an ARM fastmodel containing an SMMU emulation results
    in an unexpected I/O page fault from the legacy virtio-blk PCI device:

    [ 1.211721] arm-smmu-v3 2b400000.smmu: event 0x10 received:
    [ 1.211800] arm-smmu-v3 2b400000.smmu: 0x00000000fffff010
    [ 1.211880] arm-smmu-v3 2b400000.smmu: 0x0000020800000000
    [ 1.211959] arm-smmu-v3 2b400000.smmu: 0x00000008fa081002
    [ 1.212075] arm-smmu-v3 2b400000.smmu: 0x0000000000000000
    [ 1.212155] arm-smmu-v3 2b400000.smmu: event 0x10 received:
    [ 1.212234] arm-smmu-v3 2b400000.smmu: 0x00000000fffff010
    [ 1.212314] arm-smmu-v3 2b400000.smmu: 0x0000020800000000
    [ 1.212394] arm-smmu-v3 2b400000.smmu: 0x00000008fa081000
    [ 1.212471] arm-smmu-v3 2b400000.smmu: 0x0000000000000000

    This is because the legacy virtio-blk device is behind an SMMU, so we
    have consequently swizzled its DMA ops and configured the SMMU to
    translate accesses. This then requires the vring code to use the DMA API
    to establish translations, otherwise all transactions will result in
    fatal faults and termination.

    Given that ARM-based systems only see an SMMU if one is really present
    (the topology is all described by firmware tables such as device-tree or
    IORT), then we can safely use the DMA API for all legacy virtio devices.
    Modern devices can advertise the prescense of an IOMMU using the
    VIRTIO_F_IOMMU_PLATFORM feature flag.

    Cc: Andy Lutomirski
    Cc: Michael S. Tsirkin
    Fixes: 876945dbf649 ("arm64: Hook up IOMMU dma_ops")
    Signed-off-by: Will Deacon
    Signed-off-by: Michael S. Tsirkin
    Acked-by: Marc Zyngier
    Signed-off-by: Greg Kroah-Hartman

    Will Deacon
     
  • [Fixed differently in 4.10]

    The fence needs to be cleared out, otherwise the following commit
    might wait on a stale fence from the previous commit. This was fixed
    as a side effect of 9626014258a5 (drm/fence: add in-fences support)
    in kernel 4.10.

    As this commit introduces new functionality and as such can not be
    applied to stable, this patch is the minimal fix for the kernel 4.9
    stable series.

    Signed-off-by: Lucas Stach
    Reviewed-by: Daniel Vetter
    Tested-by: Fabio Estevam
    Signed-off-by: Greg Kroah-Hartman

    Lucas Stach
     
  • commit b9b487e494712c8e5905b724e12f5ef17e9ae6f9 upstream.

    This seems to break reboot on some evergreen systems.

    bugs:
    https://bugs.freedesktop.org/show_bug.cgi?id=99524
    https://bugzilla.kernel.org/show_bug.cgi?id=192271

    This reverts commit a481daa88fd4d6b54f25348972bba10b5f6a84d0.

    Signed-off-by: Alex Deucher
    Signed-off-by: Greg Kroah-Hartman

    Alex Deucher