1. 04 Dec, 2020 4 commits
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2020-12-04' of git://anongit.freedesktop.org/drm/drm · e87297fa
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "This week's regular fixes.
      
        i915 has fixes for a few races, use-after-free, and gpu hangs. Tegra
        just has some minor fixes that I didn't see much point in hanging on
        to. The nouveau fix is for all pre-nv50 cards and was reported a few
        times. Otherwise it's just some amdgpu, and a few misc fixes.
      
        Summary:
      
        amdgpu:
         - SMU11 manual fan fix
         - Renoir display clock fix
         - VCN3 dynamic powergating fix
      
        i915:
         - Program mocs:63 for cache eviction on gen9 (Chris)
         - Protect context lifetime with RCU (Chris)
         - Split the breadcrumb spinlock between global and contexts (Chris)
         - Retain default context state across shrinking (Venkata)
         - Limit frequency drop to RPe on parking (Chris)
         - Return earlier from intel_modeset_init() without display (Jani)
         - Defer initial modeset until after GGTT is initialized (Chris)
      
        nouveau:
         - pre-nv50 regression fix
      
        rockchip:
         - uninitialised LVDS property fix
      
        omap:
         - bridge fix
      
        panel:
         - race fix
      
        mxsfb:
         - fence sync fix
         - modifiers fix
      
        tegra:
         - idr init fix
         - sor fixes
         - output/of cleanup fix"
      
      * tag 'drm-fixes-2020-12-04' of git://anongit.freedesktop.org/drm/drm: (22 commits)
        drm/amdgpu/vcn3.0: remove old DPG workaround
        drm/amdgpu/vcn3.0: stall DPG when WPTR/RPTR reset
        drm/amd/display: Init clock value by current vbios CLKs
        drm/amdgpu/pm/smu11: Fix fan set speed bug
        drm/i915/display: Defer initial modeset until after GGTT is initialised
        drm/i915/display: return earlier from intel_modeset_init() without display
        drm/i915/gt: Limit frequency drop to RPe on parking
        drm/i915/gt: Retain default context state across shrinking
        drm/i915/gt: Split the breadcrumb spinlock between global and contexts
        drm/i915/gt: Protect context lifetime with RCU
        drm/i915/gt: Program mocs:63 for cache eviction on gen9
        drm/omap: sdi: fix bridge enable/disable
        drm/panel: sony-acx565akm: Fix race condition in probe
        drm/rockchip: Avoid uninitialized use of endpoint id in LVDS
        drm/tegra: sor: Disable clocks on error in tegra_sor_init()
        drm/nouveau: make sure ret is initialized in nouveau_ttm_io_mem_reserve
        drm: mxsfb: Implement .format_mod_supported
        drm: mxsfb: fix fence synchronization
        drm/tegra: output: Do not put OF node twice
        drm/tegra: replace idr_init() by idr_init_base()
        ...
      e87297fa
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2020-12-03' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · de9b485d
      Dave Airlie authored
      One bridge fix for OMAP, one for a race condition in a panel, two for
      uninitialized variables in rockchip and nouveau, and two fixes for mxsfb
      to fix a regression with modifiers and a fix for a fence synchronization
      issue.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <maxime@cerno.tech>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201203125943.h2ft2xoywunt5orl@gilmour
      de9b485d
    • Dave Airlie's avatar
      Merge tag 'amd-drm-fixes-5.10-2020-12-02' of... · 5353219f
      Dave Airlie authored
      Merge tag 'amd-drm-fixes-5.10-2020-12-02' of git://people.freedesktop.org/~agd5f/linux into drm-fixes
      
      amd-drm-fixes-5.10-2020-12-02:
      
      amdgpu:
      - SMU11 manual fan fix
      - Renoir display clock fix
      - VCN3 dynamic powergating fix
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Alex Deucher <alexdeucher@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201203044815.41257-1-alexander.deucher@amd.com
      5353219f
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2020-12-03' of... · 94cfbd05
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2020-12-03' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      Fixes for GPU hang, null dereference, suspend-resume, power consumption, and use-after-free.
      
      - Program mocs:63 for cache eviction on gen9 (Chris)
      - Protect context lifetime with RCU (Chris)
      - Split the breadcrumb spinlock between global and contexts (Chris)
      - Retain default context state across shrinking (Venkata)
      - Limit frequency drop to RPe on parking (Chris)
      - Return earlier from intel_modeset_init() without display (Jani)
      - Defer initial modeset until after GGTT is initialized (Chris)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201203134705.GA1575873@intel.com
      94cfbd05
  2. 03 Dec, 2020 34 commits
    • Linus Torvalds's avatar
      Merge tag 'net-5.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · bbe2ba04
      Linus Torvalds authored
      Pull networking fixes from Jakub Kicinski:
       "Networking fixes for 5.10-rc7, including fixes from bpf, netfilter,
        wireless drivers, wireless mesh and can.
      
        Current release - regressions:
      
         - mt76: usb: fix crash on device removal
      
        Current release - always broken:
      
         - xsk: Fix umem cleanup from wrong context in socket destruct
      
        Previous release - regressions:
      
         - net: ip6_gre: set dev->hard_header_len when using header_ops
      
         - ipv4: Fix TOS mask in inet_rtm_getroute()
      
         - net, xsk: Avoid taking multiple skbuff references
      
        Previous release - always broken:
      
         - net/x25: prevent a couple of overflows
      
         - netfilter: ipset: prevent uninit-value in hash_ip6_add
      
         - geneve: pull IP header before ECN decapsulation
      
         - mpls: ensure LSE is pullable in TC and openvswitch paths
      
         - vxlan: respect needed_headroom of lower device
      
         - batman-adv: Consider fragmentation for needed packet headroom
      
         - can: drivers: don't count arbitration loss as an error
      
         - netfilter: bridge: reset skb->pkt_type after POST_ROUTING traversal
      
         - inet_ecn: Fix endianness of checksum update when setting ECT(1)
      
         - ibmvnic: fix various corner cases around reset handling
      
         - net/mlx5: fix rejecting unsupported Connect-X6DX SW steering
      
         - net/mlx5: Enforce HW TX csum offload with kTLS"
      
      * tag 'net-5.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (62 commits)
        net/mlx5: DR, Proper handling of unsupported Connect-X6DX SW steering
        net/mlx5e: kTLS, Enforce HW TX csum offload with kTLS
        net: mlx5e: fix fs_tcp.c build when IPV6 is not enabled
        net/mlx5: Fix wrong address reclaim when command interface is down
        net/sched: act_mpls: ensure LSE is pullable before reading it
        net: openvswitch: ensure LSE is pullable before reading it
        net: skbuff: ensure LSE is pullable before decrementing the MPLS ttl
        net: mvpp2: Fix error return code in mvpp2_open()
        chelsio/chtls: fix a double free in chtls_setkey()
        rtw88: debug: Fix uninitialized memory in debugfs code
        vxlan: fix error return code in __vxlan_dev_create()
        net: pasemi: fix error return code in pasemi_mac_open()
        cxgb3: fix error return code in t3_sge_alloc_qset()
        net/x25: prevent a couple of overflows
        dpaa_eth: copy timestamp fields to new skb in A-050385 workaround
        net: ip6_gre: set dev->hard_header_len when using header_ops
        mt76: usb: fix crash on device removal
        iwlwifi: pcie: add some missing entries for AX210
        iwlwifi: pcie: invert values of NO_160 device config entries
        iwlwifi: pcie: add one missing entry for AX210
        ...
      bbe2ba04
    • Linus Torvalds's avatar
      Merge tag 's390-5.10-6' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · fee5be18
      Linus Torvalds authored
      Pull s390 fixes from Heiko Carstens:
       "One commit is fixing lockdep irq state tracing which broke with -rc6.
      
        The other one fixes logical vs physical CPU address mixup in our PCI
        code.
      
        Summary:
      
         - fix lockdep irq state tracing
      
         - fix logical vs physical CPU address confusion in PCI code"
      
      * tag 's390-5.10-6' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390: fix irq state tracing
        s390/pci: fix CPU address in MSI for directed IRQ
      fee5be18
    • Linus Torvalds's avatar
      Merge tag '9p-for-5.10-rc7' of git://github.com/martinetd/linux · c82a505c
      Linus Torvalds authored
      Pull 9p fixes from Dominique Martinet:
       "Restore splice functionality for 9p"
      
      * tag '9p-for-5.10-rc7' of git://github.com/martinetd/linux:
        fs: 9p: add generic splice_write file operation
        fs: 9p: add generic splice_read file operations
      c82a505c
    • Jakub Kicinski's avatar
      Merge branch 'mlx5-fixes-2020-12-01' · 6f076ce6
      Jakub Kicinski authored
      Saeed Mahameed says:
      
      ====================
      mlx5 fixes 2020-12-01
      
      This series introduces some fixes to mlx5 driver.
      ====================
      
      Link: https://lore.kernel.org/r/20201203043946.235385-1-saeedm@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6f076ce6
    • Yevgeny Kliteynik's avatar
      net/mlx5: DR, Proper handling of unsupported Connect-X6DX SW steering · d421e466
      Yevgeny Kliteynik authored
      STEs format for Connect-X5 and Connect-X6DX different. Currently, on
      Connext-X6DX the SW steering would break at some point when building STEs
      w/o giving a proper error message. Fix this by checking the STE format of
      the current device when initializing domain: add mlx5_ifc definitions for
      Connect-X6DX SW steering, read FW capability to get the current format
      version, and check this version when domain is being created.
      
      Fixes: 26d688e3 ("net/mlx5: DR, Add Steering entry (STE) utilities")
      Signed-off-by: default avatarYevgeny Kliteynik <kliteyn@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      d421e466
    • Tariq Toukan's avatar
      net/mlx5e: kTLS, Enforce HW TX csum offload with kTLS · b336e6b2
      Tariq Toukan authored
      Checksum calculation cannot be done in SW for TX kTLS HW offloaded
      packets.
      Offload it to the device, disregard the declared state of the TX
      csum offload feature.
      
      Fixes: d2ead1f3 ("net/mlx5e: Add kTLS TX HW offload support")
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Reviewed-by: default avatarMaxim Mikityanskiy <maximmi@mellanox.com>
      Reviewed-by: default avatarBoris Pismenny <borisp@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b336e6b2
    • Randy Dunlap's avatar
      net: mlx5e: fix fs_tcp.c build when IPV6 is not enabled · 8a78a440
      Randy Dunlap authored
      Fix build when CONFIG_IPV6 is not enabled by making a function
      be built conditionally.
      
      Fixes these build errors and warnings:
      
      ../drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c: In function 'accel_fs_tcp_set_ipv6_flow':
      ../include/net/sock.h:380:34: error: 'struct sock_common' has no member named 'skc_v6_daddr'; did you mean 'skc_daddr'?
        380 | #define sk_v6_daddr  __sk_common.skc_v6_daddr
            |                                  ^~~~~~~~~~~~
      ../drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c:55:14: note: in expansion of macro 'sk_v6_daddr'
         55 |         &sk->sk_v6_daddr, 16);
            |              ^~~~~~~~~~~
      At top level:
      ../drivers/net/ethernet/mellanox/mlx5/core/en_accel/fs_tcp.c:47:13: warning: 'accel_fs_tcp_set_ipv6_flow' defined but not used [-Wunused-function]
         47 | static void accel_fs_tcp_set_ipv6_flow(struct mlx5_flow_spec *spec, struct sock *sk)
      
      Fixes: 5229a96e ("net/mlx5e: Accel, Expose flow steering API for rules add/del")
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      8a78a440
    • Eran Ben Elisha's avatar
      net/mlx5: Fix wrong address reclaim when command interface is down · 1d2bb5ad
      Eran Ben Elisha authored
      When command interface is down, driver to reclaim all 4K page chucks that
      were hold by the Firmeware. Fix a bug for 64K page size systems, where
      driver repeatedly released only the first chunk of the page.
      
      Define helper function to fill 4K chunks for a given Firmware pages.
      Iterate over all unreleased Firmware pages and call the hepler per each.
      
      Fixes: 5adff6a0 ("net/mlx5: Fix incorrect page count when in internal error")
      Signed-off-by: default avatarEran Ben Elisha <eranbe@nvidia.com>
      Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      1d2bb5ad
    • Davide Caratti's avatar
      net/sched: act_mpls: ensure LSE is pullable before reading it · 9608fa65
      Davide Caratti authored
      when 'act_mpls' is used to mangle the LSE, the current value is read from
      the packet dereferencing 4 bytes at mpls_hdr(): ensure that the label is
      contained in the skb "linear" area.
      
      Found by code inspection.
      
      v2:
       - use MPLS_HLEN instead of sizeof(new_lse), thanks to Jakub Kicinski
      
      Fixes: 2a2ea508 ("net: sched: add mpls manipulation actions to TC")
      Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
      Acked-by: default avatarGuillaume Nault <gnault@redhat.com>
      Link: https://lore.kernel.org/r/3243506cba43d14858f3bd21ee0994160e44d64a.1606987058.git.dcaratti@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      9608fa65
    • Davide Caratti's avatar
      net: openvswitch: ensure LSE is pullable before reading it · 43c13605
      Davide Caratti authored
      when openvswitch is configured to mangle the LSE, the current value is
      read from the packet dereferencing 4 bytes at mpls_hdr(): ensure that
      the label is contained in the skb "linear" area.
      
      Found by code inspection.
      
      Fixes: d27cf5c5 ("net: core: add MPLS update core helper and use in OvS")
      Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
      Link: https://lore.kernel.org/r/aa099f245d93218b84b5c056b67b6058ccf81a66.1606987185.git.dcaratti@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      43c13605
    • Davide Caratti's avatar
      net: skbuff: ensure LSE is pullable before decrementing the MPLS ttl · 13de4ed9
      Davide Caratti authored
      skb_mpls_dec_ttl() reads the LSE without ensuring that it is contained in
      the skb "linear" area. Fix this calling pskb_may_pull() before reading the
      current ttl.
      
      Found by code inspection.
      
      Fixes: 2a2ea508 ("net: sched: add mpls manipulation actions to TC")
      Reported-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavide Caratti <dcaratti@redhat.com>
      Link: https://lore.kernel.org/r/53659f28be8bc336c113b5254dc637cc76bbae91.1606987074.git.dcaratti@redhat.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      13de4ed9
    • Jakub Kicinski's avatar
      Merge tag 'wireless-drivers-2020-12-03' of... · 6392b5b2
      Jakub Kicinski authored
      Merge tag 'wireless-drivers-2020-12-03' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
      
      Kalle Valo says:
      
      ====================
      wireless-drivers fixes for v5.10
      
      Second, and most likely final, set of fixes for v5.10. Small fixes and
      PCI id addtions.
      
      iwlwifi
       * PCI id additions
      mt76
       * fix a kernel crash during device removal
      rtw88
       * fix uninitialized memory in debugfs code
      
      * tag 'wireless-drivers-2020-12-03' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers:
        rtw88: debug: Fix uninitialized memory in debugfs code
        mt76: usb: fix crash on device removal
        iwlwifi: pcie: add some missing entries for AX210
        iwlwifi: pcie: invert values of NO_160 device config entries
        iwlwifi: pcie: add one missing entry for AX210
        iwlwifi: update MAINTAINERS entry
      ====================
      
      Link: https://lore.kernel.org/r/20201203183408.EE88AC43461@smtp.codeaurora.orgSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6392b5b2
    • Wang Hai's avatar
      net: mvpp2: Fix error return code in mvpp2_open() · 82a10dc7
      Wang Hai authored
      Fix to return negative error code -ENOENT from invalid configuration
      error handling case instead of 0, as done elsewhere in this function.
      
      Fixes: 4bb04326 ("net: mvpp2: phylink support")
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarWang Hai <wanghai38@huawei.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Link: https://lore.kernel.org/r/20201203141806.37966-1-wanghai38@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      82a10dc7
    • Dan Carpenter's avatar
      chelsio/chtls: fix a double free in chtls_setkey() · 391119fb
      Dan Carpenter authored
      The "skb" is freed by the transmit code in cxgb4_ofld_send() and we
      shouldn't use it again.  But in the current code, if we hit an error
      later on in the function then the clean up code will call kfree_skb(skb)
      and so it causes a double free.
      
      Set the "skb" to NULL and that makes the kfree_skb() a no-op.
      
      Fixes: d25f2f71 ("crypto: chtls - Program the TLS session Key")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Link: https://lore.kernel.org/r/X8ilb6PtBRLWiSHp@mwandaSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      391119fb
    • Eric Sandeen's avatar
      uapi: fix statx attribute value overlap for DAX & MOUNT_ROOT · 72d1249e
      Eric Sandeen authored
      STATX_ATTR_MOUNT_ROOT and STATX_ATTR_DAX got merged with the same value,
      so one of them needs fixing.  Move STATX_ATTR_DAX.
      
      While we're in here, clarify the value-matching scheme for some of the
      attributes, and explain why the value for DAX does not match.
      
      Fixes: 80340fe3 ("statx: add mount_root")
      Fixes: 712b2698 ("fs/stat: Define DAX statx attribute")
      Link: https://lore.kernel.org/linux-fsdevel/7027520f-7c79-087e-1d00-743bdefa1a1e@redhat.com/
      Link: https://lore.kernel.org/lkml/20201202214629.1563760-1-ira.weiny@intel.com/Reported-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
      Reviewed-by: default avatarDavid Howells <dhowells@redhat.com>
      Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
      Cc: <stable@vger.kernel.org> # 5.8
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      72d1249e
    • Uwe Kleine-König's avatar
      pwm: sl28cpld: fix getting driver data in pwm callbacks · 062c9cdf
      Uwe Kleine-König authored
      Currently .get_state() and .apply() use dev_get_drvdata() on the struct
      device related to the pwm chip.  This only works after .probe() called
      platform_set_drvdata() which in this driver happens only after
      pwmchip_add() and so comes possibly too late.
      
      Instead of setting the driver data earlier use the traditional
      container_of approach as this way the driver data is conceptually and
      computational nearer.
      
      Fixes: 9db33d22 ("pwm: Add support for sl28cpld PWM controller")
      Tested-by: default avatarMichael Walle <michael@walle.cc>
      Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      062c9cdf
    • Willy Tarreau's avatar
      lib/syscall: fix syscall registers retrieval on 32-bit platforms · 4f134b89
      Willy Tarreau authored
      Lilith >_> and Claudio Bozzato of Cisco Talos security team reported
      that collect_syscall() improperly casts the syscall registers to 64-bit
      values leaking the uninitialized last 24 bytes on 32-bit platforms, that
      are visible in /proc/self/syscall.
      
      The cause is that info->data.args are u64 while syscall_get_arguments()
      uses longs, as hinted by the bogus pointer cast in the function.
      
      Let's just proceed like the other call places, by retrieving the
      registers into an array of longs before assigning them to the caller's
      array.  This was successfully tested on x86_64, i386 and ppc32.
      
      Reference: CVE-2020-28588, TALOS-2020-1211
      Fixes: 631b7aba ("ptrace: Remove maxargs from task_current_syscall()")
      Cc: Greg KH <greg@kroah.com>
      Reviewed-by: default avatarKees Cook <keescook@chromium.org>
      Tested-by: Michael Ellerman <mpe@ellerman.id.au> (ppc32)
      Signed-off-by: default avatarWilly Tarreau <w@1wt.eu>
      Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4f134b89
    • Dan Carpenter's avatar
      rtw88: debug: Fix uninitialized memory in debugfs code · 74a8c816
      Dan Carpenter authored
      This code does not ensure that the whole buffer is initialized and none
      of the callers check for errors so potentially none of the buffer is
      initialized.  Add a memset to eliminate this bug.
      
      Fixes: e3037485 ("rtw88: new Realtek 802.11ac driver")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
      Link: https://lore.kernel.org/r/X8ilOfVz3pf0T5ec@mwanda
      74a8c816
    • Boyuan Zhang's avatar
      drm/amdgpu/vcn3.0: remove old DPG workaround · efd6d85a
      Boyuan Zhang authored
      Port from VCN2.5
      SCRATCH2 is used to keep decode wptr as a workaround
      which fix a hardware DPG decode wptr update bug for
      vcn2.5 beforehand.
      Signed-off-by: default avatarBoyuan Zhang <boyuan.zhang@amd.com>
      Reviewed-by: default avatarJames Zhu <James.Zhu@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org # 5.9.x
      efd6d85a
    • Boyuan Zhang's avatar
      drm/amdgpu/vcn3.0: stall DPG when WPTR/RPTR reset · ac2db948
      Boyuan Zhang authored
      Port from VCN2.5
      Add vcn dpg harware synchronization to fix race condition
      issue between vcn driver and hardware.
      Signed-off-by: default avatarBoyuan Zhang <boyuan.zhang@amd.com>
      Reviewed-by: default avatarJames Zhu <James.Zhu@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org # 5.9.x
      ac2db948
    • Brandon Syu's avatar
      drm/amd/display: Init clock value by current vbios CLKs · 7e0b367d
      Brandon Syu authored
      [Why]
      While booting into OS, driver updates DPP/DISP CLKs.
      But init clock value is zero which is invalid.
      
      [How]
      Get current clocks value to update init clocks.
      To avoid underflow.
      Signed-off-by: default avatarBrandon Syu <Brandon.Syu@amd.com>
      Reviewed-by: default avatarTony Cheng <Tony.Cheng@amd.com>
      Acked-by: default avatarAurabindo Pillai <aurabindo.pillai@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      7e0b367d
    • Arunpravin's avatar
      drm/amdgpu/pm/smu11: Fix fan set speed bug · acab02c1
      Arunpravin authored
      Fix fan set speed calculation.
      Suggested-by: default avatarKenneth Feng <kenneth.feng@amd.com>
      Signed-off-by: default avatarArunpravin <Arunpravin.PaneerSelvam@amd.com>
      Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: default avatarKenneth Feng <kenneth.feng@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      acab02c1
    • Zhang Changzhong's avatar
      vxlan: fix error return code in __vxlan_dev_create() · 832e0979
      Zhang Changzhong authored
      Fix to return a negative error code from the error handling
      case instead of 0, as done elsewhere in this function.
      
      Fixes: 0ce1822c ("vxlan: add adjacent link to limit depth level")
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarZhang Changzhong <zhangchangzhong@huawei.com>
      Link: https://lore.kernel.org/r/1606903122-2098-1-git-send-email-zhangchangzhong@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      832e0979
    • Zhang Changzhong's avatar
      net: pasemi: fix error return code in pasemi_mac_open() · aba84871
      Zhang Changzhong authored
      Fix to return a negative error code from the error handling
      case instead of 0, as done elsewhere in this function.
      
      Fixes: 72b05b99 ("pasemi_mac: RX/TX ring management cleanup")
      Fixes: 8d636d8b ("pasemi_mac: jumbo frame support")
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarZhang Changzhong <zhangchangzhong@huawei.com>
      Link: https://lore.kernel.org/r/1606903035-1838-1-git-send-email-zhangchangzhong@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      aba84871
    • Zhang Changzhong's avatar
      cxgb3: fix error return code in t3_sge_alloc_qset() · ff992489
      Zhang Changzhong authored
      Fix to return a negative error code from the error handling
      case instead of 0, as done elsewhere in this function.
      
      Fixes: b1fb1f28 ("cxgb3 - Fix dma mapping error path")
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarZhang Changzhong <zhangchangzhong@huawei.com>
      Acked-by: default avatarRaju Rangoju <rajur@chelsio.com>
      Link: https://lore.kernel.org/r/1606902965-1646-1-git-send-email-zhangchangzhong@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      ff992489
    • Dave Airlie's avatar
      Merge tag 'drm/tegra/for-5.10-rc7' of ssh://git.freedesktop.org/git/tegra/linux into drm-fixes · aac06646
      Dave Airlie authored
      drm/tegra: Fixes for v5.10-rc7
      
      This is a set of small fixes for various issues found during the last
      couple of weeks.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Thierry Reding <thierry.reding@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201127145324.125776-1-thierry.reding@gmail.com
      aac06646
    • Dan Carpenter's avatar
      net/x25: prevent a couple of overflows · 6ee50c8e
      Dan Carpenter authored
      The .x25_addr[] address comes from the user and is not necessarily
      NUL terminated.  This leads to a couple problems.  The first problem is
      that the strlen() in x25_bind() can read beyond the end of the buffer.
      
      The second problem is more subtle and could result in memory corruption.
      The call tree is:
        x25_connect()
        --> x25_write_internal()
            --> x25_addr_aton()
      
      The .x25_addr[] buffers are copied to the "addresses" buffer from
      x25_write_internal() so it will lead to stack corruption.
      
      Verify that the strings are NUL terminated and return -EINVAL if they
      are not.
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Fixes: a9288525 ("X25: Dont let x25_bind use addresses containing characters")
      Reported-by: default avatar"kiyin(尹亮)" <kiyin@tencent.com>
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarMartin Schiller <ms@dev.tdt.de>
      Link: https://lore.kernel.org/r/X8ZeAKm8FnFpN//B@mwandaSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      6ee50c8e
    • Linus Torvalds's avatar
      Merge tag 'gfs2-v5.10-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 · 34816d20
      Linus Torvalds authored
      Pull gfs2 fixes from Andreas Gruenbacher:
       "Various gfs2 fixes"
      
      * tag 'gfs2-v5.10-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
        gfs2: Fix deadlock between gfs2_{create_inode,inode_lookup} and delete_work_func
        gfs2: Upgrade shared glocks for atime updates
        gfs2: Don't freeze the file system during unmount
        gfs2: check for empty rgrp tree in gfs2_ri_update
        gfs2: set lockdep subclass for iopen glocks
        gfs2: Fix deadlock dumping resource group glocks
      34816d20
    • Chris Wilson's avatar
      drm/i915/display: Defer initial modeset until after GGTT is initialised · ccc9e67a
      Chris Wilson authored
      Prior to sanitizing the GGTT, the only operations allowed in
      intel_display_init_nogem() are those to reserve the preallocated (and
      active) regions in the GGTT leftover from the BIOS. Trying to allocate a
      GGTT vma (such as intel_pin_and_fence_fb_obj during the initial modeset)
      may then conflict with other preallocated regions that have not yet been
      protected.
      
      Move the initial modesetting from the end of init_nogem to the beginning
      of init so that any vma pinning (either framebuffers or DSB, for example),
      is after the GGTT is ready to handle it.
      
      This will prevent the DSB object from being destroyed too early:
      
      [   53.449241] BUG: KASAN: use-after-free in i915_init_ggtt+0x324/0x9e0 [i915]
      [   53.449309] Read of size 8 at addr ffff88811b1e8070 by task systemd-udevd/345
      
      [   53.449399] CPU: 1 PID: 345 Comm: systemd-udevd Tainted: G        W         5.10.0-rc5+ #12
      [   53.449409] Call Trace:
      [   53.449418]  dump_stack+0x9a/0xcc
      [   53.449558]  ? i915_init_ggtt+0x324/0x9e0 [i915]
      [   53.449565]  print_address_description.constprop.0+0x3e/0x60
      [   53.449577]  ? _raw_spin_lock_irqsave+0x4e/0x50
      [   53.449718]  ? i915_init_ggtt+0x324/0x9e0 [i915]
      [   53.449849]  ? i915_init_ggtt+0x324/0x9e0 [i915]
      [   53.449857]  kasan_report.cold+0x1f/0x37
      [   53.449993]  ? i915_init_ggtt+0x324/0x9e0 [i915]
      [   53.450130]  i915_init_ggtt+0x324/0x9e0 [i915]
      [   53.450273]  ? i915_ggtt_suspend+0x1f0/0x1f0 [i915]
      [   53.450281]  ? static_obj+0x69/0x80
      [   53.450289]  ? lockdep_init_map_waits+0xa9/0x310
      [   53.450431]  ? intel_wopcm_init+0x96/0x3d0 [i915]
      [   53.450581]  ? i915_gem_init+0x75/0x2d0 [i915]
      [   53.450720]  i915_gem_init+0x75/0x2d0 [i915]
      [   53.450852]  i915_driver_probe+0x8c2/0x1210 [i915]
      [   53.450993]  ? i915_pm_prepare+0x630/0x630 [i915]
      [   53.451006]  ? check_chain_key+0x1e7/0x2e0
      [   53.451025]  ? __pm_runtime_resume+0x58/0xb0
      [   53.451157]  i915_pci_probe+0xa6/0x2b0 [i915]
      [   53.451285]  ? i915_pci_remove+0x40/0x40 [i915]
      [   53.451295]  ? lockdep_hardirqs_on_prepare+0x124/0x230
      [   53.451302]  ? _raw_spin_unlock_irqrestore+0x42/0x50
      [   53.451309]  ? lockdep_hardirqs_on+0xbf/0x130
      [   53.451315]  ? preempt_count_sub+0xf/0xb0
      [   53.451321]  ? _raw_spin_unlock_irqrestore+0x2f/0x50
      [   53.451335]  pci_device_probe+0xf9/0x190
      [   53.451350]  really_probe+0x17f/0x5b0
      [   53.451365]  driver_probe_device+0x13a/0x1c0
      [   53.451376]  device_driver_attach+0x82/0x90
      [   53.451386]  ? device_driver_attach+0x90/0x90
      [   53.451391]  __driver_attach+0xab/0x190
      [   53.451401]  ? device_driver_attach+0x90/0x90
      [   53.451407]  bus_for_each_dev+0xe4/0x140
      [   53.451414]  ? subsys_dev_iter_exit+0x10/0x10
      [   53.451423]  ? __list_add_valid+0x2b/0xa0
      [   53.451440]  bus_add_driver+0x227/0x2e0
      [   53.451454]  driver_register+0xd3/0x150
      [   53.451585]  i915_init+0x92/0xac [i915]
      [   53.451592]  ? 0xffffffffa0a20000
      [   53.451598]  do_one_initcall+0xb6/0x3b0
      [   53.451606]  ? trace_event_raw_event_initcall_finish+0x150/0x150
      [   53.451614]  ? __kasan_kmalloc.constprop.0+0xc2/0xd0
      [   53.451627]  ? kmem_cache_alloc_trace+0x4a4/0x8e0
      [   53.451634]  ? kasan_unpoison_shadow+0x33/0x40
      [   53.451649]  do_init_module+0xf8/0x350
      [   53.451662]  load_module+0x43de/0x47f0
      [   53.451716]  ? module_frob_arch_sections+0x20/0x20
      [   53.451731]  ? rw_verify_area+0x5f/0x130
      [   53.451780]  ? __do_sys_finit_module+0x10d/0x1a0
      [   53.451785]  __do_sys_finit_module+0x10d/0x1a0
      [   53.451792]  ? __ia32_sys_init_module+0x40/0x40
      [   53.451800]  ? seccomp_do_user_notification.isra.0+0x5c0/0x5c0
      [   53.451829]  ? rcu_read_lock_bh_held+0xb0/0xb0
      [   53.451835]  ? mark_held_locks+0x24/0x90
      [   53.451856]  do_syscall_64+0x33/0x80
      [   53.451863]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [   53.451868] RIP: 0033:0x7fde09b4470d
      [   53.451875] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 53 f7 0c 00 f7 d8 64 89 01 48
      [   53.451880] RSP: 002b:00007ffd6abc1718 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
      [   53.451890] RAX: ffffffffffffffda RBX: 000056444e528150 RCX: 00007fde09b4470d
      [   53.451895] RDX: 0000000000000000 RSI: 00007fde09a21ded RDI: 000000000000000f
      [   53.451899] RBP: 0000000000020000 R08: 0000000000000000 R09: 0000000000000000
      [   53.451904] R10: 000000000000000f R11: 0000000000000246 R12: 00007fde09a21ded
      [   53.451909] R13: 0000000000000000 R14: 000056444e329200 R15: 000056444e528150
      
      [   53.451957] Allocated by task 345:
      [   53.451995]  kasan_save_stack+0x1b/0x40
      [   53.452001]  __kasan_kmalloc.constprop.0+0xc2/0xd0
      [   53.452006]  kmem_cache_alloc+0x1cd/0x8d0
      [   53.452146]  i915_vma_instance+0x126/0xb70 [i915]
      [   53.452304]  i915_gem_object_ggtt_pin_ww+0x222/0x3f0 [i915]
      [   53.452446]  intel_dsb_prepare+0x14f/0x230 [i915]
      [   53.452588]  intel_atomic_commit+0x183/0x690 [i915]
      [   53.452730]  intel_initial_commit+0x2bc/0x2f0 [i915]
      [   53.452871]  intel_modeset_init_nogem+0xa02/0x2af0 [i915]
      [   53.452995]  i915_driver_probe+0x8af/0x1210 [i915]
      [   53.453120]  i915_pci_probe+0xa6/0x2b0 [i915]
      [   53.453125]  pci_device_probe+0xf9/0x190
      [   53.453131]  really_probe+0x17f/0x5b0
      [   53.453136]  driver_probe_device+0x13a/0x1c0
      [   53.453142]  device_driver_attach+0x82/0x90
      [   53.453148]  __driver_attach+0xab/0x190
      [   53.453153]  bus_for_each_dev+0xe4/0x140
      [   53.453158]  bus_add_driver+0x227/0x2e0
      [   53.453164]  driver_register+0xd3/0x150
      [   53.453286]  i915_init+0x92/0xac [i915]
      [   53.453292]  do_one_initcall+0xb6/0x3b0
      [   53.453297]  do_init_module+0xf8/0x350
      [   53.453302]  load_module+0x43de/0x47f0
      [   53.453307]  __do_sys_finit_module+0x10d/0x1a0
      [   53.453312]  do_syscall_64+0x33/0x80
      [   53.453318]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      
      [   53.453345] Freed by task 82:
      [   53.453379]  kasan_save_stack+0x1b/0x40
      [   53.453384]  kasan_set_track+0x1c/0x30
      [   53.453389]  kasan_set_free_info+0x1b/0x30
      [   53.453394]  __kasan_slab_free+0x112/0x160
      [   53.453399]  kmem_cache_free+0xb2/0x3f0
      [   53.453536]  i915_gem_flush_free_objects+0x31a/0x3b0 [i915]
      [   53.453542]  process_one_work+0x519/0x9f0
      [   53.453547]  worker_thread+0x75/0x5c0
      [   53.453552]  kthread+0x1da/0x230
      [   53.453557]  ret_from_fork+0x22/0x30
      
      [   53.453584] The buggy address belongs to the object at ffff88811b1e8040
                      which belongs to the cache i915_vma of size 968
      [   53.453692] The buggy address is located 48 bytes inside of
                      968-byte region [ffff88811b1e8040, ffff88811b1e8408)
      [   53.453792] The buggy address belongs to the page:
      [   53.453842] page:00000000b35f7048 refcount:1 mapcount:0 mapping:0000000000000000 index:0xffff88811b1ef940 pfn:0x11b1e8
      [   53.453847] head:00000000b35f7048 order:3 compound_mapcount:0 compound_pincount:0
      [   53.453853] flags: 0x8000000000010200(slab|head)
      [   53.453860] raw: 8000000000010200 ffff888115596248 ffff888115596248 ffff8881155b6340
      [   53.453866] raw: ffff88811b1ef940 0000000000170001 00000001ffffffff 0000000000000000
      [   53.453870] page dumped because: kasan: bad access detected
      
      [   53.453895] Memory state around the buggy address:
      [   53.453944]  ffff88811b1e7f00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      [   53.454011]  ffff88811b1e7f80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
      [   53.454079] >ffff88811b1e8000: fc fc fc fc fc fc fc fc fa fb fb fb fb fb fb fb
      [   53.454146]                                                              ^
      [   53.454211]  ffff88811b1e8080: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      [   53.454279]  ffff88811b1e8100: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      [   53.454347] ==================================================================
      [   53.454414] Disabling lock debugging due to kernel taint
      [   53.454434] general protection fault, probably for non-canonical address 0xdead0000000000d0: 0000 [#1] PREEMPT SMP KASAN PTI
      [   53.454446] CPU: 1 PID: 345 Comm: systemd-udevd Tainted: G    B   W         5.10.0-rc5+ #12
      [   53.454592] RIP: 0010:i915_init_ggtt+0x26f/0x9e0 [i915]
      [   53.454602] Code: 89 8d 48 ff ff ff 4c 8d 60 d0 49 39 c7 0f 84 37 02 00 00 4c 89 b5 40 ff ff ff 4d 8d bc 24 90 00 00 00 4c 89 ff e8 c1 97 f8 e0 <49> 83 bc 24 90 00 00 00 00 0f 84 0f 02 00 00 49 8d 7c 24 08 e8 a8
      [   53.454618] RSP: 0018:ffff88812247f430 EFLAGS: 00010286
      [   53.454625] RAX: 0000000000000000 RBX: ffff888136440000 RCX: ffffffffa03fb78f
      [   53.454633] RDX: 0000000000000000 RSI: 0000000000000008 RDI: dead000000000160
      [   53.454641] RBP: ffff88812247f500 R08: ffffffff8113589f R09: 0000000000000000
      [   53.454648] R10: ffffffff83063843 R11: fffffbfff060c708 R12: dead0000000000d0
      [   53.454656] R13: ffff888136449ba0 R14: 0000000000002000 R15: dead000000000160
      [   53.454664] FS:  00007fde095c4880(0000) GS:ffff88840c880000(0000) knlGS:0000000000000000
      [   53.454672] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   53.454679] CR2: 00007fef132b4f28 CR3: 000000012245c002 CR4: 00000000003706e0
      [   53.454686] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   53.454693] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [   53.454700] Call Trace:
      [   53.454833]  ? i915_ggtt_suspend+0x1f0/0x1f0 [i915]
      Reported-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Fixes: afeda4f3 ("drm/i915/dsb: Pre allocate and late cleanup of cmd buffer")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: Lucas De Marchi <lucas.demarchi@intel.com>
      Tested-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Reviewed-by: default avatarMatthew Auld <matthew.auld@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201125193032.29282-1-chris@chris-wilson.co.uk
      (cherry picked from commit b3bf99da)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      ccc9e67a
    • Jani Nikula's avatar
      drm/i915/display: return earlier from intel_modeset_init() without display · 37eade64
      Jani Nikula authored
      !HAS_DISPLAY() implies !HAS_OVERLAY(), skipping overlay setup anyway, so
      return earlier from intel_modeset_init() for clarity.
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
      Reviewed-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201106225531.920641-4-lucas.demarchi@intel.com
      (cherry picked from commit 71c8415d)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      37eade64
    • Chris Wilson's avatar
      drm/i915/gt: Limit frequency drop to RPe on parking · aff76ab7
      Chris Wilson authored
      We treat idling the GT (intel_rps_park) as a downclock event, and reduce
      the frequency we intend to restart the GT with. Since the two workloads
      are likely related (e.g. a compositor rendering every 16ms), we want to
      carry the frequency and load information from across the idling.
      However, we do also need to update the frequencies so that workloads
      that run for less than 1ms are autotuned by RPS (otherwise we leave
      compositors running at max clocks, draining excess power). Conversely,
      if we try to run too slowly, the next workload has to run longer. Since
      there is a hysteresis in the power graph, below a certain frequency
      running a short workload for longer consumes more energy than running it
      slightly higher for less time. The exact balance point is unknown
      beforehand, but measurements with 30fps media playback indicate that RPe
      is a better choice.
      Reported-by: default avatarEdward Baker <edward.baker@intel.com>
      Tested-by: default avatarEdward Baker <edward.baker@intel.com>
      Fixes: 043cd2d1 ("drm/i915/gt: Leave rps->cur_freq on unpark")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Edward Baker <edward.baker@intel.com>
      Cc: Andi Shyti <andi.shyti@intel.com>
      Cc: Lyude Paul <lyude@redhat.com>
      Cc: <stable@vger.kernel.org> # v5.8+
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: default avatarAndi Shyti <andi.shyti@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201124183521.28623-1-chris@chris-wilson.co.uk
      (cherry picked from commit f7ed83cc)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      aff76ab7
    • Venkata Ramana Nayana's avatar
      drm/i915/gt: Retain default context state across shrinking · 78b2eb8a
      Venkata Ramana Nayana authored
      As we use a shmemfs file to hold the context state, when not in use it
      may be swapped out, such as across suspend. Since we wrote into the
      shmemfs without marking the pages as dirty, the contents may be dropped
      instead of being written back to swap. On re-using the shmemfs file,
      such as creating a new context after resume, the contents of that file
      were likely garbage and so the new context could then hang the GPU.
      
      Simply mark the page as being written when copying into the shmemfs
      file, and it the new contents will be retained across swapout.
      
      Fixes: be1cb55a ("drm/i915/gt: Keep a no-frills swappable copy of the default context state")
      Cc: Sudeep Dutt <sudeep.dutt@intel.com>
      Cc: Matthew Auld <matthew.auld@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Ramalingam C <ramalingam.c@intel.com>
      Signed-off-by: default avatarCQ Tang <cq.tang@intel.com>
      Signed-off-by: default avatarVenkata Ramana Nayana <venkata.ramana.nayana@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: <stable@vger.kernel.org> # v5.8+
      Link: https://patchwork.freedesktop.org/patch/msgid/20201127120718.454037-161-matthew.auld@intel.com
      (cherry picked from commit a9d71f76)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      78b2eb8a
    • Chris Wilson's avatar
      drm/i915/gt: Split the breadcrumb spinlock between global and contexts · 2bfdf302
      Chris Wilson authored
      As we funnel more and more contexts into the breadcrumbs on an engine,
      the hold time of b->irq_lock grows. As we may then contend with the
      b->irq_lock during request submission, this increases the burden upon
      the engine->active.lock and so directly impacts both our execution
      latency and client latency. If we split the b->irq_lock by introducing a
      per-context spinlock to manage the signalers within a context, we then
      only need the b->irq_lock for enabling/disabling the interrupt and can
      avoid taking the lock for walking the list of contexts within the signal
      worker. Even with the current setup, this greatly reduces the number of
      times we have to take and fight for b->irq_lock.
      
      Furthermore, this closes the race between enabling the signaling context
      while it is in the process of being signaled and removed:
      
      <4>[  416.208555] list_add corruption. prev->next should be next (ffff8881951d5910), but was dead000000000100. (prev=ffff8882781bb870).
      <4>[  416.208573] WARNING: CPU: 7 PID: 0 at lib/list_debug.c:28 __list_add_valid+0x4d/0x70
      <4>[  416.208575] Modules linked in: i915(+) vgem snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio mei_hdcp x86_pkg_temp_thermal coretemp ax88179_178a usbnet mii crct10dif_pclmul snd_intel_dspcfg crc32_pclmul snd_hda_codec snd_hwdep ghash_clmulni_intel snd_hda_core e1000e snd_pcm ptp pps_core mei_me mei prime_numbers intel_lpss_pci [last unloaded: i915]
      <4>[  416.208611] CPU: 7 PID: 0 Comm: swapper/7 Tainted: G     U            5.8.0-CI-CI_DRM_8852+ #1
      <4>[  416.208614] Hardware name: Intel Corporation Ice Lake Client Platform/IceLake Y LPDDR4x T4 RVP TLC, BIOS ICLSFWR1.R00.3212.A00.1905212112 05/21/2019
      <4>[  416.208627] RIP: 0010:__list_add_valid+0x4d/0x70
      <4>[  416.208631] Code: c3 48 89 d1 48 c7 c7 60 18 33 82 48 89 c2 e8 ea e0 b6 ff 0f 0b 31 c0 c3 48 89 c1 4c 89 c6 48 c7 c7 b0 18 33 82 e8 d3 e0 b6 ff <0f> 0b 31 c0 c3 48 89 f2 4c 89 c1 48 89 fe 48 c7 c7 00 19 33 82 e8
      <4>[  416.208633] RSP: 0018:ffffc90000280e18 EFLAGS: 00010086
      <4>[  416.208636] RAX: 0000000000000000 RBX: ffff888250a44880 RCX: 0000000000000105
      <4>[  416.208639] RDX: 0000000000000105 RSI: ffffffff82320c5b RDI: 00000000ffffffff
      <4>[  416.208641] RBP: ffff8882781bb870 R08: 0000000000000000 R09: 0000000000000001
      <4>[  416.208643] R10: 00000000054d2957 R11: 000000006abbd991 R12: ffff8881951d58c8
      <4>[  416.208646] R13: ffff888286073880 R14: ffff888286073848 R15: ffff8881951d5910
      <4>[  416.208669] FS:  0000000000000000(0000) GS:ffff88829c180000(0000) knlGS:0000000000000000
      <4>[  416.208671] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[  416.208673] CR2: 0000556231326c48 CR3: 0000000005610001 CR4: 0000000000760ee0
      <4>[  416.208675] PKRU: 55555554
      <4>[  416.208677] Call Trace:
      <4>[  416.208679]  <IRQ>
      <4>[  416.208751]  i915_request_enable_breadcrumb+0x278/0x400 [i915]
      <4>[  416.208839]  __i915_request_submit+0xca/0x2a0 [i915]
      <4>[  416.208892]  __execlists_submission_tasklet+0x480/0x1830 [i915]
      <4>[  416.208942]  execlists_submission_tasklet+0xc4/0x130 [i915]
      <4>[  416.208947]  tasklet_action_common.isra.17+0x6c/0x1c0
      <4>[  416.208954]  __do_softirq+0xdf/0x498
      <4>[  416.208960]  ? handle_fasteoi_irq+0x150/0x150
      <4>[  416.208964]  asm_call_on_stack+0xf/0x20
      <4>[  416.208966]  </IRQ>
      <4>[  416.208969]  do_softirq_own_stack+0xa1/0xc0
      <4>[  416.208972]  irq_exit_rcu+0xb5/0xc0
      <4>[  416.208976]  common_interrupt+0xf7/0x260
      <4>[  416.208980]  asm_common_interrupt+0x1e/0x40
      <4>[  416.208985] RIP: 0010:cpuidle_enter_state+0xb6/0x410
      <4>[  416.208987] Code: 00 31 ff e8 9c 3e 89 ff 80 7c 24 0b 00 74 12 9c 58 f6 c4 02 0f 85 31 03 00 00 31 ff e8 e3 6c 90 ff e8 fe a4 94 ff fb 45 85 ed <0f> 88 c7 02 00 00 49 63 c5 4c 2b 24 24 48 8d 14 40 48 8d 14 90 48
      <4>[  416.208989] RSP: 0018:ffffc90000143e70 EFLAGS: 00000206
      <4>[  416.208991] RAX: 0000000000000007 RBX: ffffe8ffffda8070 RCX: 0000000000000000
      <4>[  416.208993] RDX: 0000000000000000 RSI: ffffffff8238b4ee RDI: ffffffff8233184f
      <4>[  416.208995] RBP: ffffffff826b4e00 R08: 0000000000000000 R09: 0000000000000000
      <4>[  416.208997] R10: 0000000000000001 R11: 0000000000000000 R12: 00000060e7f24a8f
      <4>[  416.208998] R13: 0000000000000003 R14: 0000000000000003 R15: 0000000000000003
      <4>[  416.209012]  cpuidle_enter+0x24/0x40
      <4>[  416.209016]  do_idle+0x22f/0x2d0
      <4>[  416.209022]  cpu_startup_entry+0x14/0x20
      <4>[  416.209025]  start_secondary+0x158/0x1a0
      <4>[  416.209030]  secondary_startup_64+0xa4/0xb0
      <4>[  416.209039] irq event stamp: 10186977
      <4>[  416.209042] hardirqs last  enabled at (10186976): [<ffffffff810b9363>] tasklet_action_common.isra.17+0xe3/0x1c0
      <4>[  416.209044] hardirqs last disabled at (10186977): [<ffffffff81a5e5ed>] _raw_spin_lock_irqsave+0xd/0x50
      <4>[  416.209047] softirqs last  enabled at (10186968): [<ffffffff810b9a1a>] irq_enter_rcu+0x6a/0x70
      <4>[  416.209049] softirqs last disabled at (10186969): [<ffffffff81c00f4f>] asm_call_on_stack+0xf/0x20
      
      <4>[  416.209317] list_del corruption, ffff8882781bb870->next is LIST_POISON1 (dead000000000100)
      <4>[  416.209317] WARNING: CPU: 7 PID: 46 at lib/list_debug.c:47 __list_del_entry_valid+0x4e/0x90
      <4>[  416.209317] Modules linked in: i915(+) vgem snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic ledtrig_audio mei_hdcp x86_pkg_temp_thermal coretemp ax88179_178a usbnet mii crct10dif_pclmul snd_intel_dspcfg crc32_pclmul snd_hda_codec snd_hwdep ghash_clmulni_intel snd_hda_core e1000e snd_pcm ptp pps_core mei_me mei prime_numbers intel_lpss_pci [last unloaded: i915]
      <4>[  416.209317] CPU: 7 PID: 46 Comm: ksoftirqd/7 Tainted: G     U  W         5.8.0-CI-CI_DRM_8852+ #1
      <4>[  416.209317] Hardware name: Intel Corporation Ice Lake Client Platform/IceLake Y LPDDR4x T4 RVP TLC, BIOS ICLSFWR1.R00.3212.A00.1905212112 05/21/2019
      <4>[  416.209317] RIP: 0010:__list_del_entry_valid+0x4e/0x90
      <4>[  416.209317] Code: 2e 48 8b 32 48 39 fe 75 3a 48 8b 50 08 48 39 f2 75 48 b8 01 00 00 00 c3 48 89 fe 48 89 c2 48 c7 c7 38 19 33 82 e8 62 e0 b6 ff <0f> 0b 31 c0 c3 48 89 fe 48 c7 c7 70 19 33 82 e8 4e e0 b6 ff 0f 0b
      <4>[  416.209317] RSP: 0018:ffffc90000280de8 EFLAGS: 00010086
      <4>[  416.209317] RAX: 0000000000000000 RBX: ffff8882781bb848 RCX: 0000000000010104
      <4>[  416.209317] RDX: 0000000000010104 RSI: ffffffff8238b4ee RDI: 00000000ffffffff
      <4>[  416.209317] RBP: ffff8882781bb880 R08: 0000000000000000 R09: 0000000000000001
      <4>[  416.209317] R10: 000000009fb6666e R11: 00000000feca9427 R12: ffffc90000280e18
      <4>[  416.209317] R13: ffff8881951d5930 R14: dead0000000000d8 R15: ffff8882781bb880
      <4>[  416.209317] FS:  0000000000000000(0000) GS:ffff88829c180000(0000) knlGS:0000000000000000
      <4>[  416.209317] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[  416.209317] CR2: 0000556231326c48 CR3: 0000000005610001 CR4: 0000000000760ee0
      <4>[  416.209317] PKRU: 55555554
      <4>[  416.209317] Call Trace:
      <4>[  416.209317]  <IRQ>
      <4>[  416.209317]  remove_signaling_context.isra.13+0xd/0x70 [i915]
      <4>[  416.209513]  signal_irq_work+0x1f7/0x4b0 [i915]
      
      This is caused by virtual engines where although we take the breadcrumb
      lock on each of the active engines, they may be different engines on
      different requests, It turns out that the b->irq_lock was not a
      sufficient proxy for the engine->active.lock in the case of more than
      one request, so introduce an explicit lock around ce->signals.
      
      v2: ce->signal_lock is acquired with only RCU protection and so must be
      treated carefully and not cleared during reallocation. We also then need
      to confirm that the ce we lock is the same as we found in the breadcrumb
      list.
      
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/2276
      Fixes: c18636f7 ("drm/i915: Remove requirement for holding i915_request.lock for breadcrumbs")
      Fixes: 2854d866 ("drm/i915/gt: Replace intel_engine_transfer_stale_breadcrumbs")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201126140407.31952-4-chris@chris-wilson.co.uk
      (cherry picked from commit c744d503)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      2bfdf302
    • Chris Wilson's avatar
      drm/i915/gt: Protect context lifetime with RCU · 9261a1db
      Chris Wilson authored
      Allow a brief period for continued access to a dead intel_context by
      deferring the release of the struct until after an RCU grace period.
      As we are using a dedicated slab cache for the contexts, we can defer
      the release of the slab pages via RCU, with the caveat that individual
      structs may be reused from the freelist within an RCU grace period. To
      handle that, we have to avoid clearing members of the zombie struct.
      
      This is required for a later patch to handle locking around virtual
      requests in the signaler, as those requests may want to move between
      engines and be destroyed while we are holding b->irq_lock on a physical
      engine.
      
      v2: Drop mutex_reinit(), if we never mark the mutex as destroyed we
      don't need to reset the debug code, at the loss of having the mutex
      debug code spot us attempting to destroy a locked mutex.
      v3: As the intended use will remain strongly referenced counted, with
      very little inflight access across reuse, drop the ctor.
      v4: Drop the unrequired change to remove the temporary reference around
      dropping the active context, and add back some more missing ctor
      operations.
      v5: The ctor is back. Tvrtko spotted that ce->signal_lock [introduced
      later] maybe accessed under RCU and so needs special care not to be
      reinitialised.
      v6: Don't mix SLAB_TYPESAFE_BY_RCU and RCU list iteration.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201126140407.31952-3-chris@chris-wilson.co.uk
      (cherry picked from commit 14d1eaf0)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      9261a1db
  3. 02 Dec, 2020 2 commits
    • Linus Torvalds's avatar
      Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux · 3bb61aa6
      Linus Torvalds authored
      Pull arm64 fixes from Will Deacon:
       "I'm sad to say that we've got an unusually large arm64 fixes pull for
        rc7 which addresses numerous significant instrumentation issues with
        our entry code.
      
        Without these patches, lockdep is hopelessly unreliable in some
        configurations [1,2] and syzkaller is therefore not a lot of use
        because it's so noisy.
      
        Although much of this has always been broken, it appears to have been
        exposed more readily by other changes such as 044d0d6d ("lockdep:
        Only trace IRQ edges") and general lockdep improvements around IRQ
        tracing and NMIs.
      
        Fixing this properly required moving much of the instrumentation hooks
        from our entry assembly into C, which Mark has been working on for the
        last few weeks. We're not quite ready to move to the recently added
        generic functions yet, but the code here has been deliberately written
        to mimic that closely so we can look at cleaning things up once we
        have a bit more breathing room.
      
        Having said all that, the second version of these patches was posted
        last week and I pushed it into our CI (kernelci and cki) along with a
        commit which forced on PROVE_LOCKING, NOHZ_FULL and
        CONTEXT_TRACKING_FORCE. The result? We found a real bug in the
        md/raid10 code [3].
      
        Oh, and there's also a really silly typo patch that's unrelated.
      
        Summary:
      
         - Fix numerous issues with instrumentation and exception entry
      
         - Fix hideous typo in unused register field definition"
      
      [1] https://lore.kernel.org/r/CACT4Y+aAzoJ48Mh1wNYD17pJqyEcDnrxGfApir=-j171TnQXhw@mail.gmail.com
      [2] https://lore.kernel.org/r/20201119193819.GA2601289@elver.google.com
      [3] https://lore.kernel.org/r/94c76d5e-466a-bc5f-e6c2-a11b65c39f83@redhat.com
      
      * tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux:
        arm64: mte: Fix typo in macro definition
        arm64: entry: fix EL1 debug transitions
        arm64: entry: fix NMI {user, kernel}->kernel transitions
        arm64: entry: fix non-NMI kernel<->kernel transitions
        arm64: ptrace: prepare for EL1 irq/rcu tracking
        arm64: entry: fix non-NMI user<->kernel transitions
        arm64: entry: move el1 irq/nmi logic to C
        arm64: entry: prepare ret_to_user for function call
        arm64: entry: move enter_from_user_mode to entry-common.c
        arm64: entry: mark entry code as noinstr
        arm64: mark idle code as noinstr
        arm64: syscall: exit userspace before unmasking exceptions
      3bb61aa6
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · 2c6ffa9e
      Linus Torvalds authored
      Pull vdpa fixes from Michael Tsirkin:
       "A couple of fixes that surfaced at the last minute"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        vhost_vdpa: return -EFAULT if copy_to_user() fails
        vdpa: mlx5: fix vdpa/vhost dependencies
      2c6ffa9e