Skip to contentSkip to conversation

Linux 5.10.51

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jul 19, 2021 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.51 kernel.

All users of the 5.10 kernel series must upgrade.

The updated 5.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.10.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Makefile                                                                |    2 
 arch/arm64/boot/dts/rockchip/rk3328-rock64.dts                          |    5 
 arch/arm64/boot/dts/rockchip/rk3328.dtsi                                |   19 +
 arch/arm64/include/asm/tlb.h                                            |    4 
 arch/mips/Kconfig                                                       |    2 
 arch/mips/include/asm/cpu-features.h                                    |    4 
 arch/mips/include/asm/hugetlb.h                                         |    8 
 arch/mips/include/asm/mipsregs.h                                        |    8 
 arch/mips/include/asm/pgalloc.h                                         |   10 
 arch/mips/kernel/cpu-probe.c                                            |    5 
 arch/mips/loongson64/numa.c                                             |    3 
 arch/powerpc/include/asm/barrier.h                                      |    2 
 arch/powerpc/mm/fault.c                                                 |    4 
 arch/powerpc/platforms/powernv/vas-window.c                             |    9 
 block/blk-rq-qos.c                                                      |    4 
 drivers/ata/ahci_sunxi.c                                                |    2 
 drivers/atm/iphase.c                                                    |    2 
 drivers/atm/nicstar.c                                                   |   26 +
 drivers/block/loop.c                                                    |    3 
 drivers/bluetooth/btusb.c                                               |   24 +
 drivers/char/ipmi/ipmi_watchdog.c                                       |   22 -
 drivers/clk/renesas/r8a77995-cpg-mssr.c                                 |    1 
 drivers/clk/renesas/rcar-usb2-clock-sel.c                               |   24 +
 drivers/clk/tegra/clk-periph-gate.c                                     |   72 +++--
 drivers/clk/tegra/clk-periph.c                                          |   11 
 drivers/clk/tegra/clk-pll.c                                             |    9 
 drivers/clocksource/arm_arch_timer.c                                    |    2 
 drivers/extcon/extcon-intel-mrfld.c                                     |    9 
 drivers/firmware/qemu_fw_cfg.c                                          |    8 
 drivers/fpga/stratix10-soc.c                                            |    1 
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c                        |   21 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                              |    2 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c                                  |   11 
 drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h                                 |    5 
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c                                  |    4 
 drivers/gpu/drm/amd/amdgpu/umc_v8_7.c                                   |    2 
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c                   |   68 ++--
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                       |   24 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h                       |    1 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c                 |   41 ++
 drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c                        |    2 
 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c                   |    9 
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c                      |    2 
 drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c          |   78 ++---
 drivers/gpu/drm/amd/display/dc/irq_types.h                              |    2 
 drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c                         |    1 
 drivers/gpu/drm/amd/display/modules/hdcp/hdcp1_execution.c              |    4 
 drivers/gpu/drm/amd/include/navi10_enum.h                               |    2 
 drivers/gpu/drm/arm/malidp_planes.c                                     |    9 
 drivers/gpu/drm/ast/ast_dp501.c                                         |  139 +++++++---
 drivers/gpu/drm/ast/ast_drv.h                                           |   12 
 drivers/gpu/drm/ast/ast_main.c                                          |   11 
 drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c                     |    4 
 drivers/gpu/drm/bridge/cdns-dsi.c                                       |    2 
 drivers/gpu/drm/bridge/lontium-lt9611.c                                 |    1 
 drivers/gpu/drm/bridge/nwl-dsi.c                                        |   61 ++--
 drivers/gpu/drm/drm_dp_helper.c                                         |    7 
 drivers/gpu/drm/i915/display/intel_dp.c                                 |    2 
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c                                 |    2 
 drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c                                |    2 
 drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c                              |    8 
 drivers/gpu/drm/mxsfb/Kconfig                                           |    1 
 drivers/gpu/drm/nouveau/nouveau_display.c                               |    1 
 drivers/gpu/drm/radeon/radeon_display.c                                 |    1 
 drivers/gpu/drm/radeon/radeon_drv.c                                     |    8 
 drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c                         |    4 
 drivers/gpu/drm/rockchip/rockchip_vop_reg.c                             |   21 -
 drivers/gpu/drm/scheduler/sched_entity.c                                |    8 
 drivers/gpu/drm/scheduler/sched_main.c                                  |   24 +
 drivers/gpu/drm/tegra/dc.c                                              |   10 
 drivers/gpu/drm/tegra/drm.c                                             |    2 
 drivers/gpu/drm/vc4/vc4_crtc.c                                          |    5 
 drivers/gpu/drm/vc4/vc4_drv.h                                           |    2 
 drivers/gpu/drm/vc4/vc4_hdmi.c                                          |   10 
 drivers/gpu/drm/vc4/vc4_txp.c                                           |    2 
 drivers/gpu/drm/virtio/virtgpu_kms.c                                    |    1 
 drivers/gpu/drm/zte/Kconfig                                             |    1 
 drivers/hwtracing/coresight/coresight-core.c                            |    2 
 drivers/hwtracing/coresight/coresight-tmc-etf.c                         |    2 
 drivers/infiniband/core/cma.c                                           |    3 
 drivers/infiniband/hw/cxgb4/qp.c                                        |    1 
 drivers/infiniband/sw/rxe/rxe_mr.c                                      |    2 
 drivers/infiniband/ulp/isert/ib_isert.c                                 |    4 
 drivers/infiniband/ulp/isert/ib_isert.h                                 |    3 
 drivers/infiniband/ulp/rtrs/rtrs-pri.h                                  |   13 
 drivers/ipack/carriers/tpci200.c                                        |    5 
 drivers/isdn/hardware/mISDN/hfcpci.c                                    |    2 
 drivers/md/dm-writecache.c                                              |   48 ++-
 drivers/md/dm-zoned-metadata.c                                          |    7 
 drivers/md/dm.c                                                         |    8 
 drivers/md/persistent-data/dm-btree-remove.c                            |    3 
 drivers/md/persistent-data/dm-space-map-disk.c                          |    9 
 drivers/md/persistent-data/dm-space-map-metadata.c                      |    9 
 drivers/media/i2c/saa6588.c                                             |    4 
 drivers/media/pci/bt8xx/bttv-driver.c                                   |    6 
 drivers/media/pci/saa7134/saa7134-video.c                               |    6 
 drivers/media/platform/davinci/vpbe_display.c                           |    2 
 drivers/media/platform/davinci/vpbe_venc.c                              |    6 
 drivers/media/rc/bpf-lirc.c                                             |    3 
 drivers/media/usb/dvb-usb/dtv5100.c                                     |    7 
 drivers/media/usb/gspca/sq905.c                                         |    2 
 drivers/media/usb/gspca/sunplus.c                                       |    8 
 drivers/media/usb/uvc/uvc_video.c                                       |   27 +
 drivers/media/usb/zr364xx/zr364xx.c                                     |    1 
 drivers/mfd/syscon.c                                                    |    2 
 drivers/misc/lkdtm/bugs.c                                               |    3 
 drivers/mmc/core/core.c                                                 |    7 
 drivers/mmc/core/sd.c                                                   |   10 
 drivers/mmc/host/sdhci-acpi.c                                           |   11 
 drivers/mmc/host/sdhci.c                                                |    4 
 drivers/mmc/host/sdhci.h                                                |    1 
 drivers/net/dsa/ocelot/seville_vsc9953.c                                |    5 
 drivers/net/ethernet/broadcom/genet/bcmmii.c                            |    4 
 drivers/net/ethernet/freescale/fec_main.c                               |   32 ++
 drivers/net/ethernet/intel/e100.c                                       |   12 
 drivers/net/ethernet/intel/i40e/i40e_ptp.c                              |    8 
 drivers/net/ethernet/intel/ice/ice_ethtool.c                            |    6 
 drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h                          |    4 
 drivers/net/ethernet/intel/ice/ice_type.h                               |    2 
 drivers/net/ethernet/intel/igb/igb_main.c                               |    9 
 drivers/net/ethernet/intel/igbvf/netdev.c                               |    4 
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c                         |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c                         |    6 
 drivers/net/ethernet/mellanox/mlx5/core/lag.c                           |   19 -
 drivers/net/ethernet/micrel/ks8842.c                                    |    4 
 drivers/net/ethernet/moxa/moxart_ether.c                                |    5 
 drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c                    |   19 -
 drivers/net/ethernet/realtek/r8169_main.c                               |    1 
 drivers/net/ethernet/sfc/ef10_sriov.c                                   |   25 -
 drivers/net/ethernet/sgi/ioc3-eth.c                                     |    4 
 drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c                       |   21 +
 drivers/net/fjes/fjes_main.c                                            |    4 
 drivers/net/ipa/ipa_main.c                                              |    1 
 drivers/net/mdio/mdio-ipq8064.c                                         |   33 +-
 drivers/net/phy/realtek.c                                               |   15 +
 drivers/net/virtio_net.c                                                |   22 +
 drivers/net/wireless/ath/ath11k/mac.c                                   |    4 
 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c                       |   24 +
 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c                     |    4 
 drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c                |   15 -
 drivers/net/wireless/intel/iwlwifi/pcie/internal.h                      |    3 
 drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c                    |    3 
 drivers/net/wireless/mac80211_hwsim.c                                   |   48 ++-
 drivers/net/wireless/mediatek/mt76/mt7615/mac.c                         |   10 
 drivers/net/wireless/mediatek/mt76/mt7915/init.c                        |    6 
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h                        |   11 
 drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c                  |   59 +++-
 drivers/net/wireless/st/cw1200/cw1200_sdio.c                            |    1 
 drivers/net/wireless/ti/wl1251/cmd.c                                    |    9 
 drivers/net/wireless/ti/wl12xx/main.c                                   |    7 
 drivers/nvmem/core.c                                                    |    9 
 drivers/pci/controller/pci-aardvark.c                                   |   13 
 drivers/pci/quirks.c                                                    |   11 
 drivers/pinctrl/pinctrl-amd.c                                           |    1 
 drivers/pinctrl/pinctrl-equilibrium.c                                   |    1 
 drivers/pinctrl/pinctrl-mcp23s08.c                                      |   10 
 drivers/scsi/libiscsi.c                                                 |   26 -
 drivers/scsi/scsi_transport_iscsi.c                                     |   28 +-
 drivers/thermal/intel/int340x_thermal/processor_thermal_device.c        |   20 -
 fs/ext4/ext4.h                                                          |    4 
 fs/ext4/mmp.c                                                           |   28 --
 fs/ext4/super.c                                                         |   10 
 fs/f2fs/f2fs.h                                                          |    2 
 fs/f2fs/recovery.c                                                      |   23 +
 fs/f2fs/super.c                                                         |    8 
 fs/io-wq.c                                                              |    5 
 fs/io_uring.c                                                           |  118 +++-----
 fs/jfs/inode.c                                                          |    3 
 fs/reiserfs/journal.c                                                   |   14 +
 fs/ubifs/super.c                                                        |    1 
 fs/ubifs/ubifs.h                                                        |    2 
 fs/ubifs/xattr.c                                                        |   44 ++-
 fs/udf/namei.c                                                          |    4 
 include/linux/mfd/abx500/ux500_chargalg.h                               |    2 
 include/linux/netdev_features.h                                         |    2 
 include/linux/of_mdio.h                                                 |    7 
 include/linux/wait.h                                                    |    2 
 include/media/v4l2-subdev.h                                             |    4 
 include/net/flow_offload.h                                              |   12 
 include/net/sctp/structs.h                                              |    2 
 include/scsi/scsi_transport_iscsi.h                                     |    1 
 include/uapi/linux/ethtool.h                                            |    4 
 kernel/bpf/core.c                                                       |   61 +++-
 kernel/bpf/ringbuf.c                                                    |    2 
 kernel/cpu.c                                                            |   49 +++
 kernel/sched/fair.c                                                     |    6 
 kernel/sched/wait.c                                                     |    9 
 kernel/trace/trace.c                                                    |   91 +++---
 lib/seq_buf.c                                                           |    4 
 mm/memory-failure.c                                                     |    6 
 net/bluetooth/hci_core.c                                                |   16 -
 net/bluetooth/hci_event.c                                               |    6 
 net/bluetooth/l2cap_core.c                                              |    8 
 net/bluetooth/mgmt.c                                                    |    5 
 net/bridge/br_mrp.c                                                     |    6 
 net/core/dev.c                                                          |   11 
 net/ipv4/ip_output.c                                                    |   32 +-
 net/ipv4/tcp_input.c                                                    |   45 +--
 net/ipv6/ip6_output.c                                                   |   32 +-
 net/ipv6/output_core.c                                                  |   28 --
 net/mac80211/sta_info.c                                                 |   11 
 net/sched/act_api.c                                                     |    3 
 net/sched/cls_api.c                                                     |    2 
 net/sctp/bind_addr.c                                                    |   19 -
 net/sctp/input.c                                                        |    8 
 net/sctp/ipv6.c                                                         |    7 
 net/sctp/protocol.c                                                     |    7 
 net/sctp/sm_make_chunk.c                                                |   29 +-
 net/vmw_vsock/af_vsock.c                                                |    2 
 net/wireless/nl80211.c                                                  |    9 
 net/wireless/wext-spy.c                                                 |   14 -
 net/xfrm/xfrm_user.c                                                    |   28 +-
 security/selinux/avc.c                                                  |   13 
 security/smack/smackfs.c                                                |    2 
 sound/soc/tegra/tegra_alc5632.c                                         |    1 
 sound/soc/tegra/tegra_max98090.c                                        |    1 
 sound/soc/tegra/tegra_rt5640.c                                          |    1 
 sound/soc/tegra/tegra_rt5677.c                                          |    1 
 sound/soc/tegra/tegra_sgtl5000.c                                        |    1 
 sound/soc/tegra/tegra_wm8753.c                                          |    1 
 sound/soc/tegra/tegra_wm8903.c                                          |    1 
 sound/soc/tegra/tegra_wm9712.c                                          |    1 
 sound/soc/tegra/trimslice.c                                             |    1 
 tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_drops.sh      |    3 
 tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_exceptions.sh |    3 
 tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh            |    2 
 tools/testing/selftests/lkdtm/tests.txt                                 |    2 
 tools/testing/selftests/net/forwarding/pedit_dsfield.sh                 |    2 
 tools/testing/selftests/net/forwarding/pedit_l4port.sh                  |    2 
 tools/testing/selftests/net/forwarding/skbedit_priority.sh              |    2 
 tools/testing/selftests/resctrl/README                                  |    2 
 tools/testing/selftests/resctrl/resctrl_tests.c                         |    4 
 232 files changed, 1770 insertions(+), 902 deletions(-)

Aaron Liu (1):
drm/amdgpu: enable sdma0 tmz for Raven/Renoir(V2)

Al Cooper (1):
mmc: sdhci: Fix warning message when accessing RPMB in HS400 mode

Alex Bee (2):
drm: rockchip: add missing registers for RK3188
drm: rockchip: add missing registers for RK3066

Amber Lin (1):
drm/amdkfd: Fix circular lock in nocpsch path

Amit Cohen (1):
selftests: Clean forgotten resources as part of cleanup()

Andrey Grodzovsky (2):
drm/scheduler: Fix hang when sched_entity released drm/sched: Avoid data corruptions

Andy Shevchenko (1):
net: pch_gbe: Use proper accessors to BE data in pch_ptp_match()

Ansuel Smith (1):
net: mdio: ipq8064: add regmap config to disable REGCACHE

Arnd Bergmann (1):
media: subdev: disallow ioctl for saa6588/davinci

Arturo Giusti (1):
udf: Fix NULL pointer dereference in udf_symlink function

Benjamin Drung (1):
media: uvcvideo: Fix pixel format change for Elgato Cam Link 4K

Bibo Mao (1):
hugetlb: clear huge pte during flush function on mips platform

Bixuan Cui (1):
pinctrl: equilibrium: Add missing MODULE_DEVICE_TABLE

Brandon Syu (1):
drm/amd/display: fix HDCP reset sequence on reinitialize

Cameron Nemo (2):
arm64: dts: rockchip: add rk3328 dwc3 usb controller node
arm64: dts: rockchip: Enable USB3 for rk3328 Rock64

Chao Yu (1):
f2fs: fix to avoid racing on fsync_entry_slab by multi filesystem instances

Christian Löhle (1):
mmc: core: Allow UHS-I voltage switch for SDSC cards if supported

Christophe JAILLET (1):
nvmem: core: add a missing of_node_put

Christophe Leroy (1):
powerpc/mm: Fix lockup on kernel exec fault

Damien Le Moal (2):
dm: Fix dm_accept_partial_bio() relative to zone management commands dm zoned: check zone capacity

Dan Carpenter (2):
drm/vc4: fix argument ordering in vc4_crtc_get_margins()
ath11k: unlock on error path in ath11k_mac_op_add_interface()

Daniel Borkmann (1):
bpf: Fix up register-based shifts in interpreter to silence KUBSAN

Daniel Lenski (1):
Bluetooth: btusb: Add a new QCA_ROME device (0cf3:e500)

Daniel Vetter (4):
drm/tegra: Don't set allow_fb_modifiers explicitly drm/msm/mdp4: Fix modifier support enabling drm/arm/malidp: Always list modifiers drm/nouveau: Don't set allow_fb_modifiers explicitly

Davide Caratti (1):
net/sched: cls_api: increase max_reclassify_loop

Dinghao Liu (1):
clk: renesas: rcar-usb2-clock-sel: Fix error handling in .probe()

Dmitry Osipenko (3):
clk: tegra: Fix refcounting of gate clocks
clk: tegra: Ensure that PLLU configuration is applied properly
ASoC: tegra: Set driver_name=tegra for all machine drivers

Dmytro Laktyushkin (1):
drm/amd/display: fix use_max_lb flag for 420 pixel formats

Eli Cohen (1):
net/mlx5: Fix lag port remapping logic

Felix Fietkau (1):
mt76: mt7615: fix fixed-rate tx status reporting

Ferry Toth (1):
extcon: intel-mrfld: Sync hardware and software state on init

Fugang Duan (1):
net: fec: add ndo_select_queue to fix TX bandwidth fluctuations

Gerd Rausch (1):
RDMA/cma: Fix rdma_resolve_route() memory leak

Gioh Kim (1):
RDMA/rtrs: Change MAX_SESS_QUEUE_DEPTH

Greg Kroah-Hartman (1):

      Linux 5.10.51

Guchun Chen (1):
drm/amd/display: fix incorrrect valid irq check

Gulam Mohamed (1):
scsi: iscsi: Fix race condition between login and sync thread

Gustavo A. R. Silva (1):
wireless: wext-spy: Fix out-of-bounds warning

Hans de Goede (1):
mmc: sdhci-acpi: Disable write protect detection on Toshiba Encore 2 WT8-B

Haren Myneni (1):
powerpc/powernv/vas: Release reference to tgid during window close

Harry Wentland (1):
drm/amd/display: Reject non-zero src_y and src_x for video planes

Heiner Kallweit (1):
r8169: avoid link-up interrupt issue on RTL8106e if user enables ASPM

Hilda Wu (1):
Bluetooth: btusb: Add support USB ALT 3 for WBS

Horatiu Vultur (1):
net: bridge: mrp: Update ring transitions.

Hou Tao (1):
dm btree remove: assign new_root only when removal succeeds

Huang Pei (1):
MIPS: add PMD table accounting into MIPS'pmd_alloc_one

Huy Nguyen (1):
net/mlx5e: IPsec/rep_tc: Fix rep_tc_update_skb drops IPsec packet

Jack Zhang (1):
drm/amd/amdgpu/sriov disable all ip hw status by default

Jacob Keller (2):
ice: fix incorrect payload indicator on PTYPE
ice: mark PTYPE 2 as reserved

Jakub Kicinski (1):
net: ip: avoid OOM kills with large UDP sends over loopback

Jan Kara (1):
rq-qos: fix missed wake-ups in rq_qos_throttle try two

Jens Axboe (1):
io_uring: convert io_buffer_idr to XArray

Jeremy Linton (1):
coresight: Propagate symlink failure

Jesse Brandeburg (4):
e100: handle eeprom as little endian
igb: handle vlan types with checker enabled
igb: fix assignment on big endian machines
i40e: fix PTP on 5Gb links

Jian Shen (1):
net: fix mistake path for netdev_features_strings

Jiansong Chen (1):
drm/amdgpu: remove unsafe optimization to drop preamble ib

Jiapeng Chong (1):
RDMA/cxgb4: Fix missing error code in create_qp()

Jing Xiangfeng (1):
drm/radeon: Add the missed drm_gem_object_put() in radeon_user_framebuffer_create()

Joakim Zhang (1):
net: phy: realtek: add delay to fix RXC generation issue

Joe Thornber (1):
dm space maps: don't reset space map allocation cursor when committing

Johan Hovold (3):
media: dtv5100: fix control-request directions
media: gspca/sq905: fix control-request direction
media: gspca/sunplus: fix zero-length control requests

Johannes Berg (4):
iwlwifi: mvm: don't change band on bound PHY contexts
iwlwifi: pcie: free IML DMA memory allocation
iwlwifi: pcie: fix context info freeing
mac80211: consider per-CPU statistics if present

Jonathan Kim (1):
drm/amdkfd: fix circular locking on get_wave_state

Joseph Greathouse (1):
drm/amdgpu: Update NV SIMD-per-CU to 2

Kai-Heng Feng (1):
Bluetooth: Shutdown controller after workqueues are flushed or cancelled

Kees Cook (4):
drm/amd/display: Avoid HDCP over-read and corruption drm/i915/display: Do not zero past infoframes.vsc lkdtm/bugs: XFAIL UNALIGNED_LOAD_STORE_WRITE selftests/lkdtm: Fix expected text for CR4 pinning

Kiran K (1):
Bluetooth: Fix alt settings for incoming SCO with transparent coding format

Konstantin Kharlamov (1):
PCI: Leave Apple Thunderbolt controllers on for s2idle or standby

Kuninori Morimoto (1):

      clk: renesas: r8a77995: Add ZA2 clock

KuoHsiang Chou (1):
drm/ast: Fixed CVE for DP501

Lee Gibson (1):
wl1251: Fix possible buffer overflow in wl1251_cmd_scan

Limeng (1):
mfd: syscon: Free the allocated name field of struct regmap_config

Linus Walleij (1):
power: supply: ab8500: Fix an old bug

Liu Ying (1):

      drm/bridge: nwl-dsi: Force a full modeset when crtc_state->active is changed to be true

Liwei Song (1):
ice: set the value of global config lock timeout longer

Longpeng(Mike) (1):
vsock: notify server to shutdown when client has pending signal

Luiz Augusto von Dentz (2):
Bluetooth: L2CAP: Fix invalid access if ECRED Reconfigure fails
Bluetooth: L2CAP: Fix invalid access on ECRED Connection response

Lv Yunlong (1):
ipack/carriers/tpci200: Fix a double free in tpci200_pci_probe

Lyude Paul (1):
drm/dp: Handle zeroed port counts in drm_dp_read_downstream_info()

Marcelo Ricardo Leitner (2):
sctp: validate from_addr_param return
sctp: add size validation when walking chunks

Mark Yacoub (1):
drm/amd/display: Verify Gamma & Degamma LUT sizes in amdgpu_dm_atomic_check

Mateusz Kwiatkowski (1):
drm/vc4: Fix clock source for VEC PixelValve on BCM2711

Matthew Wilcox (Oracle) (1):
io_uring: Convert personality_idr to XArray

Mauricio Faria de Oliveira (1):
loop: fix I/O error on fsync() in detached loop devices

Max Gurtovoy (1):
IB/isert: Align target max I/O size to initiator size

Maxime Ripard (3):
drm/vc4: txp: Properly set the possible_crtcs mask drm/vc4: crtc: Skip the TXP
drm/vc4: hdmi: Prevent clock unbalance

Maximilian Luz (1):
pinctrl/amd: Add device HID for new AMD GPIO controller

Mike Christie (1):
scsi: iscsi: Fix iSCSI cls conn state

Mikulas Patocka (4):
dm writecache: don't split bios when overwriting contiguous cache content dm writecache: commit just one block, not a full page
dm writecache: flush origin device when writing and cache is full dm writecache: write at least 4k when committing

Minchan Kim (1):
selinux: use __GFP_NOWARN with GFP_NOWAIT in the AVC

Nathan Chancellor (2):
powerpc/barrier: Avoid collision with clang's __lwsync macro
qemu_fw_cfg: Make fw_cfg_rev_attr a proper kobj_attribute

Nick Desaulniers (1):
MIPS: set mips32r5 for virt extensions

Nikola Cornij (1):
drm/amd/display: Fix DCN 3.01 DSCCLK validation

Nirmoy Das (1):
drm/amdkfd: use allowed domain for vmbo validation

Odin Ugedal (1):
sched/fair: Ensure _sum and _avg values stay consistent

Oscar Salvador (1):
mm,hwpoison: return -EBUSY when migration fails

Pali Rohár (2):
PCI: aardvark: Fix checking for PIO Non-posted Request
PCI: aardvark: Implement workaround for the readback value of VEND_ID

Pascal Terjan (1):
rtl8xxxu: Fix device info for RTL8192EU devices

Paul Burton (2):
tracing: Simplify & fix saved_tgids logic
tracing: Resize tgid_map to pid_max, not PID_MAX_DEFAULT

Paul Cercueil (3):
MIPS: cpu-probe: Fix FPU detection on Ingenic JZ4760(B)
MIPS: ingenic: Select CPU_SUPPORTS_CPUFREQ && MIPS_EXTERNAL_TIMER
MIPS: MT extensions are not available on MIPS32r1

Paul M Stillwell Jr (1):
ice: fix clang warning regarding deadcode.DeadStores

Pavel Begunkov (1):
io_uring: fix false WARN_ONCE

Pavel Skripkin (4):
reiserfs: add check for invalid 1st journal block
media: zr364xx: fix memory leak in zr364xx_start_readpipe
jfs: fix GPF in diFree
ext4: fix memory leak in ext4_fill_super

Petr Pavlu (1):
ipmi/watchdog: Stop watchdog timer when the current action is 'none'

Ping-Ke Shih (1):
cfg80211: fix default HE tx bitrate mask in 2G band

Radim Pavlik (1):
pinctrl: mcp23s08: fix race condition in irq handler

Roman Li (1):
drm/amd/display: Update scaling settings on modeset

Russ Weight (1):
fpga: stratix10-soc: Add missing fpga_mgr_free() call

Rustam Kovhaev (1):
bpf: Fix false positive kmemleak report in bpf_ringbuf_area_alloc()

Ryder Lee (1):

      mt76: mt7915: fix IEEE80211_HE_PHY_CAP7_MAX_NC for station mode

Sai Prakash Ranjan (1):
coresight: tmc-etf: Fix global-out-of-bounds in tmc_update_etf_buffer()

Samuel Holland (1):
clocksource/arm_arch_timer: Improve Allwinner A64 timer workaround

Sean Young (1):
media, bpf: Do not copy more entries than user space requested

Sebastian Andrzej Siewior (1):
net: Treat __napi_schedule_irqoff() as __napi_schedule() on PREEMPT_RT

Shaul Triebitz (1):
iwlwifi: mvm: fix error print when session protection ends

Srinivas Pandruvada (1):

      thermal/drivers/int340x/processor_thermal: Fix tcc setting

Stanley.Yang (1):
drm/amdgpu: fix bad address translation for sienna_cichlid

Steffen Klassert (1):
xfrm: Fix error reporting in xfrm_state_construct.

Tedd Ho-Jeong An (1):
Bluetooth: mgmt: Fix the command returns garbage parameter value

Tetsuo Handa (1):
smackfs: restrict bytes count in smk_set_cipso()

Thomas Gleixner (1):
cpu/hotplug: Cure the cpusets trainwreck

Thomas Hebb (1):
drm/rockchip: dsi: remove extra component_del() call

Thomas Zimmermann (3):
drm/mxsfb: Don't select DRM_KMS_FB_HELPER drm/zte: Don't select DRM_KMS_FB_HELPER drm/ast: Remove reference to struct drm_device.pdev

Tiezhu Yang (1):
drm/radeon: Call radeon_suspend_kms() in radeon_pci_shutdown() for Loongson64

Tim Jiang (1):
Bluetooth: btusb: fix bt fiwmare downloading failure issue for qca btsoc.

Timo Sigurdsson (1):
ata: ahci_sunxi: Disable DIPM

Tony Lindgren (1):
wlcore/wl12xx: Fix wl12xx get_mac error if device is in ELP

Vladimir Oltean (2):
net: mdio: provide shim implementation of devm_of_mdiobus_register
net: stmmac: the XPCS obscures a potential "PHY not found" error

Vladimir Stempen (1):
drm/amd/display: Release MST resources on switch from MST to SST

Wang Li (1):
drm/mediatek: Fix PM reference leak in mtk_crtc_ddp_hw_init()

Weilun Du (1):
mac80211_hwsim: add concurrent channels scanning support over virtio

Wesley Chalmers (2):
drm/amd/display: Set DISPCLK_MAX_ERRDET_CYCLES to 7 drm/amd/display: Fix off-by-one error in DML

Willy Tarreau (1):
ipv6: use prandom_u32() for ID generation

Wolfram Sang (1):
mmc: core: clear flags before allowing to retune

Xianting Tian (1):
virtio_net: Remove BUG() to avoid machine dead

Xiao Yang (1):
RDMA/rxe: Don't overwrite errno from ib_umem_get()

Xiaochen Shen (1):
selftests/resctrl: Fix incorrect parsing of option "-t"

Xie Yongji (2):
drm/virtio: Fix double free on probe failure
virtio-net: Add validation for used length

Yang Yingliang (10):
net: mscc: ocelot: check return value after calling platform_get_resource()
net: bcmgenet: check return value after calling platform_get_resource()
net: mvpp2: check return value after calling platform_get_resource()
net: micrel: check return value after calling platform_get_resource()
net: moxa: Use devm_platform_get_and_ioremap_resource()
net: sgi: ioc3-eth: check return value after calling platform_get_resource()
fjes: check return value after calling platform_get_resource()
net: ipa: Add missing of_node_put() in ipa_firmware_load()
net: sched: fix error return code in tcf_del_walker()
io_uring: fix clear IORING_SETUP_R_DISABLED in wrong function

Yejune Deng (1):
io_uring: simplify io_remove_personalities()

Yu Kuai (1):
drm: bridge: cdns-mhdp8546: Fix PM reference leak in

Yu Liu (1):
Bluetooth: Fix the HCI to MGMT status conversion table

Yuchung Cheng (1):
net: tcp better handling of reordering then loss cases

Yun Zhou (1):
seq_buf: Fix overflow in seq_buf_putmem_hex()

Zhenyu Ye (1):
arm64: tlb: fix the TTL value of tlb_get_level

Zheyu Ma (2):
atm: nicstar: use 'dma_free_coherent' instead of 'kfree'
atm: nicstar: register the interrupt handler in the right place

Zhihao Cheng (1):
ubifs: Fix races between xattr_{set|get} and listxattr operations

Zou Wei (8):
atm: iphase: fix possible use-after-free in ia_module_exit()
mISDN: fix possible use-after-free in HFC_cleanup()
atm: nicstar: Fix possible use-after-free in nicstar_cleanup() drm/bridge: lt9611: Add missing MODULE_DEVICE_TABLE drm/vc4: hdmi: Fix PM reference leak in vc4_hdmi_encoder_pre_crtc_co() drm/bridge: cdns: Fix PM reference leak in cdns_dsi_transfer()
cw1200: add missing MODULE_DEVICE_TABLE
pinctrl: mcp23s08: Fix missing unlock on error in mcp23s08_irq()

gushengxian (1):
flow_offload: action should not be NULL when it is referenced

mark-yw.chen (1):
Bluetooth: btusb: Fixed too many in-token issue for Mediatek Chip.

xinhui pan (1):
drm/amdkfd: Walk through list with dqm lock hold

zhanglianjie (1):
MIPS: loongsoon64: Reserve memory below starting pfn to prevent Oops

Íñigo Huguet (2):
sfc: avoid double pci_remove of VFs
sfc: error code if SRIOV cannot be disabled

author maintainer
#1 lore raw
Makefile +1 -1
index 695f8e739a91..d0fad1e77493 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 50
+SUBLEVEL = 51
 EXTRAVERSION =
 NAME = Dare mighty things
 
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts +5 -0
index 86cfb5c50a94..95ab6928cfd4 100644
@@ -384,6 +384,11 @@ &usb20_otg {
 	status = "okay";
 };
 
+&usbdrd3 {
+	dr_mode = "host";
+	status = "okay";
+};
+
 &usb_host0_ehci {
 	status = "okay";
 };
arch/arm64/boot/dts/rockchip/rk3328.dtsi +19 -0
index 93c734d8a46c..de1e5e8a0e88 100644
@@ -984,6 +984,25 @@ usb_host0_ohci: usb@ff5d0000 {
 		status = "disabled";
 	};
 
+	usbdrd3: usb@ff600000 {
+		compatible = "rockchip,rk3328-dwc3", "snps,dwc3";
+		reg = <0x0 0xff600000 0x0 0x100000>;
+		interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&cru SCLK_USB3OTG_REF>, <&cru SCLK_USB3OTG_SUSPEND>,
+			 <&cru ACLK_USB3OTG>;
+		clock-names = "ref_clk", "suspend_clk",
+			      "bus_clk";
+		dr_mode = "otg";
+		phy_type = "utmi_wide";
+		snps,dis-del-phy-power-chg-quirk;
+		snps,dis_enblslpm_quirk;
+		snps,dis-tx-ipgap-linecheck-quirk;
+		snps,dis-u2-freeclk-exists-quirk;
+		snps,dis_u2_susphy_quirk;
+		snps,dis_u3_susphy_quirk;
+		status = "disabled";
+	};
+
 	gic: interrupt-controller@ff811000 {
 		compatible = "arm,gic-400";
 		#interrupt-cells = <3>;
arch/arm64/include/asm/tlb.h +4 -0
index 61c97d3b58c7..c995d1f4594f 100644
@@ -28,6 +28,10 @@ static void tlb_flush(struct mmu_gather *tlb);
  */
 static inline int tlb_get_level(struct mmu_gather *tlb)
 {
+	/* The TTL field is only valid for the leaf entry. */
+	if (tlb->freed_tables)
+		return 0;
+
 	if (tlb->cleared_ptes && !(tlb->cleared_pmds ||
 				   tlb->cleared_puds ||
 				   tlb->cleared_p4ds))
arch/mips/Kconfig +2 -0
index 1917ccd39256..1a63f592034e 100644
@@ -418,6 +418,8 @@ config MACH_INGENIC_SOC
 	select MIPS_GENERIC
 	select MACH_INGENIC
 	select SYS_SUPPORTS_ZBOOT_UART16550
+	select CPU_SUPPORTS_CPUFREQ
+	select MIPS_EXTERNAL_TIMER
 
 config LANTIQ
 	bool "Lantiq based platforms"
arch/mips/include/asm/cpu-features.h +3 -1
index f2e216eef7da..8294eaa6f902 100644
@@ -64,6 +64,8 @@
 	((MIPS_ISA_REV >= (ge)) && (MIPS_ISA_REV < (lt)))
 #define __isa_range_or_flag(ge, lt, flag) \
 	(__isa_range(ge, lt) || ((MIPS_ISA_REV < (lt)) && __isa(flag)))
+#define __isa_range_and_ase(ge, lt, ase) \
+	(__isa_range(ge, lt) && __ase(ase))
 
 /*
  * SMP assumption: Options of CPU 0 are a superset of all processors.
@@ -423,7 +425,7 @@
 #endif
 
 #ifndef cpu_has_mipsmt
-#define cpu_has_mipsmt		__isa_lt_and_ase(6, MIPS_ASE_MIPSMT)
+#define cpu_has_mipsmt		__isa_range_and_ase(2, 6, MIPS_ASE_MIPSMT)
 #endif
 
 #ifndef cpu_has_vp
arch/mips/include/asm/hugetlb.h +7 -1
index 10e3be870df7..c2144409c0c4 100644
@@ -46,7 +46,13 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
 static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
 					 unsigned long addr, pte_t *ptep)
 {
-	flush_tlb_page(vma, addr & huge_page_mask(hstate_vma(vma)));
+	/*
+	 * clear the huge pte entry firstly, so that the other smp threads will
+	 * not get old pte entry after finishing flush_tlb_page and before
+	 * setting new huge pte entry
+	 */
+	huge_ptep_get_and_clear(vma->vm_mm, addr, ptep);
+	flush_tlb_page(vma, addr);
 }
 
 #define __HAVE_ARCH_HUGE_PTE_NONE
arch/mips/include/asm/mipsregs.h +4 -4
index a0e8ae5497b6..7a7467d3f7f0 100644
@@ -2073,7 +2073,7 @@ _ASM_MACRO_0(tlbginvf, _ASM_INSN_IF_MIPS(0x4200000c)
 ({ int __res;								\
 	__asm__ __volatile__(						\
 		".set\tpush\n\t"					\
-		".set\tmips32r2\n\t"					\
+		".set\tmips32r5\n\t"					\
 		_ASM_SET_VIRT						\
 		"mfgc0\t%0, " #source ", %1\n\t"			\
 		".set\tpop"						\
@@ -2086,7 +2086,7 @@ _ASM_MACRO_0(tlbginvf, _ASM_INSN_IF_MIPS(0x4200000c)
 ({ unsigned long long __res;						\
 	__asm__ __volatile__(						\
 		".set\tpush\n\t"					\
-		".set\tmips64r2\n\t"					\
+		".set\tmips64r5\n\t"					\
 		_ASM_SET_VIRT						\
 		"dmfgc0\t%0, " #source ", %1\n\t"			\
 		".set\tpop"						\
@@ -2099,7 +2099,7 @@ _ASM_MACRO_0(tlbginvf, _ASM_INSN_IF_MIPS(0x4200000c)
 do {									\
 	__asm__ __volatile__(						\
 		".set\tpush\n\t"					\
-		".set\tmips32r2\n\t"					\
+		".set\tmips32r5\n\t"					\
 		_ASM_SET_VIRT						\
 		"mtgc0\t%z0, " #register ", %1\n\t"			\
 		".set\tpop"						\
@@ -2111,7 +2111,7 @@ do {									\
 do {									\
 	__asm__ __volatile__(						\
 		".set\tpush\n\t"					\
-		".set\tmips64r2\n\t"					\
+		".set\tmips64r5\n\t"					\
 		_ASM_SET_VIRT						\
 		"dmtgc0\t%z0, " #register ", %1\n\t"			\
 		".set\tpop"						\
arch/mips/include/asm/pgalloc.h +7 -3
index 8b18424b3120..d0cf997b4ba8 100644
@@ -59,11 +59,15 @@ do {							\
 
 static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
 {
-	pmd_t *pmd;
+	pmd_t *pmd = NULL;
+	struct page *pg;
 
-	pmd = (pmd_t *) __get_free_pages(GFP_KERNEL, PMD_ORDER);
-	if (pmd)
+	pg = alloc_pages(GFP_KERNEL | __GFP_ACCOUNT, PMD_ORDER);
+	if (pg) {
+		pgtable_pmd_page_ctor(pg);
+		pmd = (pmd_t *)page_address(pg);
 		pmd_init((unsigned long)pmd, (unsigned long)invalid_pte_table);
+	}
 	return pmd;
 }
 
arch/mips/kernel/cpu-probe.c +5 -0
index e6ae2bcdbeda..067cb3eb1614 100644
@@ -1827,6 +1827,11 @@ static inline void cpu_probe_ingenic(struct cpuinfo_mips *c, unsigned int cpu)
 		 */
 		case PRID_COMP_INGENIC_D0:
 			c->isa_level &= ~MIPS_CPU_ISA_M32R2;
+
+			/* FPU is not properly detected on JZ4760(B). */
+			if (c->processor_id == 0x2ed0024f)
+				c->options |= MIPS_CPU_FPU;
+
 			fallthrough;
 
 		/*
arch/mips/loongson64/numa.c +3 -0
index cf9459f79f9b..e4c461df3ee6 100644
@@ -182,6 +182,9 @@ static void __init node_mem_init(unsigned int node)
 		if (node_end_pfn(0) >= (0xffffffff >> PAGE_SHIFT))
 			memblock_reserve((node_addrspace_offset | 0xfe000000),
 					 32 << 20);
+
+		/* Reserve pfn range 0~node[0]->node_start_pfn */
+		memblock_reserve(0, PAGE_SIZE * start_pfn);
 	}
 }
 
arch/powerpc/include/asm/barrier.h +2 -0
index f53c42380832..8c14f84a8770 100644
@@ -46,6 +46,8 @@
 #    define SMPWMB      eieio
 #endif
 
+/* clang defines this macro for a builtin, which will not work with runtime patching */
+#undef __lwsync
 #define __lwsync()	__asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")
 #define dma_rmb()	__lwsync()
 #define dma_wmb()	__asm__ __volatile__ (stringify_in_c(SMPWMB) : : :"memory")
arch/powerpc/mm/fault.c +1 -3
index 72e1b51beb10..55fdba8ba21c 100644
@@ -198,9 +198,7 @@ static bool bad_kernel_fault(struct pt_regs *regs, unsigned long error_code,
 {
 	int is_exec = TRAP(regs) == 0x400;
 
-	/* NX faults set DSISR_PROTFAULT on the 8xx, DSISR_NOEXEC_OR_G on others */
-	if (is_exec && (error_code & (DSISR_NOEXEC_OR_G | DSISR_KEYFAULT |
-				      DSISR_PROTFAULT))) {
+	if (is_exec) {
 		pr_crit_ratelimited("kernel tried to execute %s page (%lx) - exploit attempt? (uid: %d)\n",
 				    address >= TASK_SIZE ? "exec-protected" : "user",
 				    address,
arch/powerpc/platforms/powernv/vas-window.c +5 -4
index 5f5fe63a3d1c..7ba0840fc3b5 100644
@@ -1093,9 +1093,9 @@ struct vas_window *vas_tx_win_open(int vasid, enum vas_cop_type cop,
 		/*
 		 * Process closes window during exit. In the case of
 		 * multithread application, the child thread can open
-		 * window and can exit without closing it. Expects parent
-		 * thread to use and close the window. So do not need
-		 * to take pid reference for parent thread.
+		 * window and can exit without closing it. so takes tgid
+		 * reference until window closed to make sure tgid is not
+		 * reused.
 		 */
 		txwin->tgid = find_get_pid(task_tgid_vnr(current));
 		/*
@@ -1339,8 +1339,9 @@ int vas_win_close(struct vas_window *window)
 	/* if send window, drop reference to matching receive window */
 	if (window->tx_win) {
 		if (window->user_win) {
-			/* Drop references to pid and mm */
+			/* Drop references to pid. tgid and mm */
 			put_pid(window->pid);
+			put_pid(window->tgid);
 			if (window->mm) {
 				mm_context_remove_vas_window(window->mm);
 				mmdrop(window->mm);
block/blk-rq-qos.c +2 -2
index 656460636ad3..e83af7bc7591 100644
@@ -266,8 +266,8 @@ void rq_qos_wait(struct rq_wait *rqw, void *private_data,
 	if (!has_sleeper && acquire_inflight_cb(rqw, private_data))
 		return;
 
-	prepare_to_wait_exclusive(&rqw->wait, &data.wq, TASK_UNINTERRUPTIBLE);
-	has_sleeper = !wq_has_single_sleeper(&rqw->wait);
+	has_sleeper = !prepare_to_wait_exclusive(&rqw->wait, &data.wq,
+						 TASK_UNINTERRUPTIBLE);
 	do {
 		/* The memory barrier in set_task_state saves us here. */
 		if (data.got_token)
drivers/ata/ahci_sunxi.c +1 -1
index cb69b737cb49..56b695136977 100644
@@ -200,7 +200,7 @@ static void ahci_sunxi_start_engine(struct ata_port *ap)
 }
 
 static const struct ata_port_info ahci_sunxi_port_info = {
-	.flags		= AHCI_FLAG_COMMON | ATA_FLAG_NCQ,
+	.flags		= AHCI_FLAG_COMMON | ATA_FLAG_NCQ | ATA_FLAG_NO_DIPM,
 	.pio_mask	= ATA_PIO4,
 	.udma_mask	= ATA_UDMA6,
 	.port_ops	= &ahci_platform_ops,
drivers/atm/iphase.c +1 -1
index eef637fd90b3..a59554e5b8b0 100644
@@ -3279,7 +3279,7 @@ static void __exit ia_module_exit(void)
 {
 	pci_unregister_driver(&ia_driver);
 
-        del_timer(&ia_timer);
+	del_timer_sync(&ia_timer);
 }
 
 module_init(ia_module_init);
drivers/atm/nicstar.c +14 -12
index 09ad73361879..6eb4ed256a7e 100644
@@ -297,7 +297,7 @@ static void __exit nicstar_cleanup(void)
 {
 	XPRINTK("nicstar: nicstar_cleanup() called.\n");
 
-	del_timer(&ns_timer);
+	del_timer_sync(&ns_timer);
 
 	pci_unregister_driver(&nicstar_driver);
 
@@ -525,6 +525,15 @@ static int ns_init_card(int i, struct pci_dev *pcidev)
 	/* Set the VPI/VCI MSb mask to zero so we can receive OAM cells */
 	writel(0x00000000, card->membase + VPM);
 
+	card->intcnt = 0;
+	if (request_irq
+	    (pcidev->irq, &ns_irq_handler, IRQF_SHARED, "nicstar", card) != 0) {
+		pr_err("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
+		error = 9;
+		ns_init_card_error(card, error);
+		return error;
+	}
+
 	/* Initialize TSQ */
 	card->tsq.org = dma_alloc_coherent(&card->pcidev->dev,
 					   NS_TSQSIZE + NS_TSQ_ALIGNMENT,
@@ -751,15 +760,6 @@ static int ns_init_card(int i, struct pci_dev *pcidev)
 
 	card->efbie = 1;
 
-	card->intcnt = 0;
-	if (request_irq
-	    (pcidev->irq, &ns_irq_handler, IRQF_SHARED, "nicstar", card) != 0) {
-		printk("nicstar%d: can't allocate IRQ %d.\n", i, pcidev->irq);
-		error = 9;
-		ns_init_card_error(card, error);
-		return error;
-	}
-
 	/* Register device */
 	card->atmdev = atm_dev_register("nicstar", &card->pcidev->dev, &atm_ops,
 					-1, NULL);
@@ -837,10 +837,12 @@ static void ns_init_card_error(ns_dev *card, int error)
 			dev_kfree_skb_any(hb);
 	}
 	if (error >= 12) {
-		kfree(card->rsq.org);
+		dma_free_coherent(&card->pcidev->dev, NS_RSQSIZE + NS_RSQ_ALIGNMENT,
+				card->rsq.org, card->rsq.dma);
 	}
 	if (error >= 11) {
-		kfree(card->tsq.org);
+		dma_free_coherent(&card->pcidev->dev, NS_TSQSIZE + NS_TSQ_ALIGNMENT,
+				card->tsq.org, card->tsq.dma);
 	}
 	if (error >= 10) {
 		free_irq(card->pcidev->irq, card);
drivers/block/loop.c +3 -0
index 06d44ae9701f..f0fa0c8e7ec6 100644
@@ -1224,6 +1224,9 @@ static int __loop_clr_fd(struct loop_device *lo, bool release)
 		goto out_unlock;
 	}
 
+	if (test_bit(QUEUE_FLAG_WC, &lo->lo_queue->queue_flags))
+		blk_queue_write_cache(lo->lo_queue, false, false);
+
 	/* freeze request queue during the transition */
 	blk_mq_freeze_queue(lo->lo_queue);
 
drivers/bluetooth/btusb.c +19 -5
index b1f0b13cc8bc..afd2b1f12d49 100644
@@ -269,6 +269,8 @@ static const struct usb_device_id blacklist_table[] = {
 						     BTUSB_WIDEBAND_SPEECH },
 	{ USB_DEVICE(0x0cf3, 0xe360), .driver_info = BTUSB_QCA_ROME |
 						     BTUSB_WIDEBAND_SPEECH },
+	{ USB_DEVICE(0x0cf3, 0xe500), .driver_info = BTUSB_QCA_ROME |
+						     BTUSB_WIDEBAND_SPEECH },
 	{ USB_DEVICE(0x0489, 0xe092), .driver_info = BTUSB_QCA_ROME |
 						     BTUSB_WIDEBAND_SPEECH },
 	{ USB_DEVICE(0x0489, 0xe09f), .driver_info = BTUSB_QCA_ROME |
@@ -1719,6 +1721,13 @@ static void btusb_work(struct work_struct *work)
 			 * which work with WBS at all.
 			 */
 			new_alts = btusb_find_altsetting(data, 6) ? 6 : 1;
+			/* Because mSBC frames do not need to be aligned to the
+			 * SCO packet boundary. If support the Alt 3, use the
+			 * Alt 3 for HCI payload >= 60 Bytes let air packet
+			 * data satisfy 60 bytes.
+			 */
+			if (new_alts == 1 && btusb_find_altsetting(data, 3))
+				new_alts = 3;
 		}
 
 		if (btusb_switch_alt_setting(hdev, new_alts) < 0)
@@ -2963,11 +2972,6 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
 	struct btmtk_wmt_hdr *hdr;
 	int err;
 
-	/* Submit control IN URB on demand to process the WMT event */
-	err = btusb_mtk_submit_wmt_recv_urb(hdev);
-	if (err < 0)
-		return err;
-
 	/* Send the WMT command and wait until the WMT event returns */
 	hlen = sizeof(*hdr) + wmt_params->dlen;
 	if (hlen > 255)
@@ -2989,6 +2993,11 @@ static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
 		return err;
 	}
 
+	/* Submit control IN URB on demand to process the WMT event */
+	err = btusb_mtk_submit_wmt_recv_urb(hdev);
+	if (err < 0)
+		return err;
+
 	/* The vendor specific WMT commands are all answered by a vendor
 	 * specific event and will have the Command Status or Command
 	 * Complete as with usual HCI command flow control.
@@ -3549,6 +3558,11 @@ static int btusb_setup_qca_download_fw(struct hci_dev *hdev,
 	sent += size;
 	count -= size;
 
+	/* ep2 need time to switch from function acl to function dfu,
+	 * so we add 20ms delay here.
+	 */
+	msleep(20);
+
 	while (count) {
 		size = min_t(size_t, count, QCA_DFU_PACKET_LEN);
 
drivers/char/ipmi/ipmi_watchdog.c +12 -10
index f78156d93c3f..6384510c48d6 100644
@@ -371,16 +371,18 @@ static int __ipmi_set_timeout(struct ipmi_smi_msg  *smi_msg,
 	data[0] = 0;
 	WDOG_SET_TIMER_USE(data[0], WDOG_TIMER_USE_SMS_OS);
 
-	if ((ipmi_version_major > 1)
-	    || ((ipmi_version_major == 1) && (ipmi_version_minor >= 5))) {
-		/* This is an IPMI 1.5-only feature. */
-		data[0] |= WDOG_DONT_STOP_ON_SET;
-	} else if (ipmi_watchdog_state != WDOG_TIMEOUT_NONE) {
-		/*
-		 * In ipmi 1.0, setting the timer stops the watchdog, we
-		 * need to start it back up again.
-		 */
-		hbnow = 1;
+	if (ipmi_watchdog_state != WDOG_TIMEOUT_NONE) {
+		if ((ipmi_version_major > 1) ||
+		    ((ipmi_version_major == 1) && (ipmi_version_minor >= 5))) {
+			/* This is an IPMI 1.5-only feature. */
+			data[0] |= WDOG_DONT_STOP_ON_SET;
+		} else {
+			/*
+			 * In ipmi 1.0, setting the timer stops the watchdog, we
+			 * need to start it back up again.
+			 */
+			hbnow = 1;
+		}
 	}
 
 	data[1] = 0;
drivers/clk/renesas/r8a77995-cpg-mssr.c +1 -0
index 5b4691117b47..026e2612c33c 100644
@@ -75,6 +75,7 @@ static const struct cpg_core_clk r8a77995_core_clks[] __initconst = {
 	DEF_RATE(".oco",       CLK_OCO,            8 * 1000 * 1000),
 
 	/* Core Clock Outputs */
+	DEF_FIXED("za2",       R8A77995_CLK_ZA2,   CLK_PLL0D3,     2, 1),
 	DEF_FIXED("z2",        R8A77995_CLK_Z2,    CLK_PLL0D3,     1, 1),
 	DEF_FIXED("ztr",       R8A77995_CLK_ZTR,   CLK_PLL1,       6, 1),
 	DEF_FIXED("zt",        R8A77995_CLK_ZT,    CLK_PLL1,       4, 1),
drivers/clk/renesas/rcar-usb2-clock-sel.c +15 -9
index d4c02986c34e..0ccc6e709a38 100644
@@ -128,10 +128,8 @@ static int rcar_usb2_clock_sel_resume(struct device *dev)
 static int rcar_usb2_clock_sel_remove(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
-	struct usb2_clock_sel_priv *priv = platform_get_drvdata(pdev);
 
 	of_clk_del_provider(dev->of_node);
-	clk_hw_unregister(&priv->hw);
 	pm_runtime_put(dev);
 	pm_runtime_disable(dev);
 
@@ -164,9 +162,6 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev)
 	if (IS_ERR(priv->rsts))
 		return PTR_ERR(priv->rsts);
 
-	pm_runtime_enable(dev);
-	pm_runtime_get_sync(dev);
-
 	clk = devm_clk_get(dev, "usb_extal");
 	if (!IS_ERR(clk) && !clk_prepare_enable(clk)) {
 		priv->extal = !!clk_get_rate(clk);
@@ -183,6 +178,8 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev)
 		return -ENOENT;
 	}
 
+	pm_runtime_enable(dev);
+	pm_runtime_get_sync(dev);
 	platform_set_drvdata(pdev, priv);
 	dev_set_drvdata(dev, priv);
 
@@ -193,11 +190,20 @@ static int rcar_usb2_clock_sel_probe(struct platform_device *pdev)
 	init.num_parents = 0;
 	priv->hw.init = &init;
 
-	clk = clk_register(NULL, &priv->hw);
-	if (IS_ERR(clk))
-		return PTR_ERR(clk);
+	ret = devm_clk_hw_register(NULL, &priv->hw);
+	if (ret)
+		goto pm_put;
+
+	ret = of_clk_add_hw_provider(np, of_clk_hw_simple_get, &priv->hw);
+	if (ret)
+		goto pm_put;
+
+	return 0;
 
-	return of_clk_add_hw_provider(np, of_clk_hw_simple_get, &priv->hw);
+pm_put:
+	pm_runtime_put(dev);
+	pm_runtime_disable(dev);
+	return ret;
 }
 
 static const struct dev_pm_ops rcar_usb2_clock_sel_pm_ops = {
drivers/clk/tegra/clk-periph-gate.c +47 -25

107 lines not on this page · raw message

drivers/clk/tegra/clk-periph.c +11 -0
index 67620c7ecd9e..79ca3aa072b7 100644
@@ -100,6 +100,15 @@ static void clk_periph_disable(struct clk_hw *hw)
 	gate_ops->disable(gate_hw);
 }
 
+static void clk_periph_disable_unused(struct clk_hw *hw)
+{
+	struct tegra_clk_periph *periph = to_clk_periph(hw);
+	const struct clk_ops *gate_ops = periph->gate_ops;
+	struct clk_hw *gate_hw = &periph->gate.hw;
+
+	gate_ops->disable_unused(gate_hw);
+}
+
 static void clk_periph_restore_context(struct clk_hw *hw)
 {
 	struct tegra_clk_periph *periph = to_clk_periph(hw);
@@ -126,6 +135,7 @@ const struct clk_ops tegra_clk_periph_ops = {
 	.is_enabled = clk_periph_is_enabled,
 	.enable = clk_periph_enable,
 	.disable = clk_periph_disable,
+	.disable_unused = clk_periph_disable_unused,
 	.restore_context = clk_periph_restore_context,
 };
 
@@ -135,6 +145,7 @@ static const struct clk_ops tegra_clk_periph_nodiv_ops = {
 	.is_enabled = clk_periph_is_enabled,
 	.enable = clk_periph_enable,
 	.disable = clk_periph_disable,
+	.disable_unused = clk_periph_disable_unused,
 	.restore_context = clk_periph_restore_context,
 };
 
drivers/clk/tegra/clk-pll.c +4 -5
index c5cc0a2dac6f..d709ecb7d8d7 100644
@@ -1131,7 +1131,8 @@ static int clk_pllu_enable(struct clk_hw *hw)
 	if (pll->lock)
 		spin_lock_irqsave(pll->lock, flags);
 
-	_clk_pll_enable(hw);
+	if (!clk_pll_is_enabled(hw))
+		_clk_pll_enable(hw);
 
 	ret = clk_pll_wait_for_lock(pll);
 	if (ret < 0)
@@ -1748,15 +1749,13 @@ static int clk_pllu_tegra114_enable(struct clk_hw *hw)
 		return -EINVAL;
 	}
 
-	if (clk_pll_is_enabled(hw))
-		return 0;
-
 	input_rate = clk_hw_get_rate(__clk_get_hw(osc));
 
 	if (pll->lock)
 		spin_lock_irqsave(pll->lock, flags);
 
-	_clk_pll_enable(hw);
+	if (!clk_pll_is_enabled(hw))
+		_clk_pll_enable(hw);
 
 	ret = clk_pll_wait_for_lock(pll);
 	if (ret < 0)
drivers/clocksource/arm_arch_timer.c +1 -1
index d0177824c518..f4881764bf8f 100644
@@ -352,7 +352,7 @@ static u64 notrace arm64_858921_read_cntvct_el0(void)
 	do {								\
 		_val = read_sysreg(reg);				\
 		_retries--;						\
-	} while (((_val + 1) & GENMASK(9, 0)) <= 1 && _retries);	\
+	} while (((_val + 1) & GENMASK(8, 0)) <= 1 && _retries);	\
 									\
 	WARN_ON_ONCE(!_retries);					\
 	_val;								\
drivers/extcon/extcon-intel-mrfld.c +9 -0
index f47016fb28a8..cd1a5f230077 100644
@@ -197,6 +197,7 @@ static int mrfld_extcon_probe(struct platform_device *pdev)
 	struct intel_soc_pmic *pmic = dev_get_drvdata(dev->parent);
 	struct regmap *regmap = pmic->regmap;
 	struct mrfld_extcon_data *data;
+	unsigned int status;
 	unsigned int id;
 	int irq, ret;
 
@@ -244,6 +245,14 @@ static int mrfld_extcon_probe(struct platform_device *pdev)
 	/* Get initial state */
 	mrfld_extcon_role_detect(data);
 
+	/*
+	 * Cached status value is used for cable detection, see comments
+	 * in mrfld_extcon_cable_detect(), we need to sync cached value
+	 * with a real state of the hardware.
+	 */
+	regmap_read(regmap, BCOVE_SCHGRIRQ1, &status);
+	data->status = status;
+
 	mrfld_extcon_clear(data, BCOVE_MIRQLVL1, BCOVE_LVL1_CHGR);
 	mrfld_extcon_clear(data, BCOVE_MCHGRIRQ1, BCOVE_CHGRIRQ_ALL);
 
drivers/firmware/qemu_fw_cfg.c +3 -5
index 0078260fbabe..172c751a4f6c 100644
@@ -299,15 +299,13 @@ static int fw_cfg_do_platform_probe(struct platform_device *pdev)
 	return 0;
 }
 
-static ssize_t fw_cfg_showrev(struct kobject *k, struct attribute *a, char *buf)
+static ssize_t fw_cfg_showrev(struct kobject *k, struct kobj_attribute *a,
+			      char *buf)
 {
 	return sprintf(buf, "%u\n", fw_cfg_rev);
 }
 
-static const struct {
-	struct attribute attr;
-	ssize_t (*show)(struct kobject *k, struct attribute *a, char *buf);
-} fw_cfg_rev_attr = {
+static const struct kobj_attribute fw_cfg_rev_attr = {
 	.attr = { .name = "rev", .mode = S_IRUSR },
 	.show = fw_cfg_showrev,
 };
drivers/fpga/stratix10-soc.c +1 -0
index 657a70c5fc99..9e34bbbce26e 100644
@@ -454,6 +454,7 @@ static int s10_remove(struct platform_device *pdev)
 	struct s10_priv *priv = mgr->priv;
 
 	fpga_mgr_unregister(mgr);
+	fpga_mgr_free(mgr);
 	stratix10_svc_free_channel(priv->chan);
 
 	return 0;
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +4 -17
index 5da487b64a66..26f8a2138377 100644
@@ -48,12 +48,6 @@ static struct {
 	spinlock_t mem_limit_lock;
 } kfd_mem_limit;
 
-/* Struct used for amdgpu_amdkfd_bo_validate */
-struct amdgpu_vm_parser {
-	uint32_t        domain;
-	bool            wait;
-};
-
 static const char * const domain_bit_to_string[] = {
 		"CPU",
 		"GTT",
@@ -337,11 +331,9 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain,
 	return ret;
 }
 
-static int amdgpu_amdkfd_validate(void *param, struct amdgpu_bo *bo)
+static int amdgpu_amdkfd_validate_vm_bo(void *_unused, struct amdgpu_bo *bo)
 {
-	struct amdgpu_vm_parser *p = param;
-
-	return amdgpu_amdkfd_bo_validate(bo, p->domain, p->wait);
+	return amdgpu_amdkfd_bo_validate(bo, bo->allowed_domains, false);
 }
 
 /* vm_validate_pt_pd_bos - Validate page table and directory BOs
@@ -355,20 +347,15 @@ static int vm_validate_pt_pd_bos(struct amdgpu_vm *vm)
 {
 	struct amdgpu_bo *pd = vm->root.base.bo;
 	struct amdgpu_device *adev = amdgpu_ttm_adev(pd->tbo.bdev);
-	struct amdgpu_vm_parser param;
 	int ret;
 
-	param.domain = AMDGPU_GEM_DOMAIN_VRAM;
-	param.wait = false;
-
-	ret = amdgpu_vm_validate_pt_bos(adev, vm, amdgpu_amdkfd_validate,
-					&param);
+	ret = amdgpu_vm_validate_pt_bos(adev, vm, amdgpu_amdkfd_validate_vm_bo, NULL);
 	if (ret) {
 		pr_err("failed to validate PT BOs\n");
 		return ret;
 	}
 
-	ret = amdgpu_amdkfd_validate(&param, pd);
+	ret = amdgpu_amdkfd_validate_vm_bo(NULL, pd);
 	if (ret) {
 		pr_err("failed to validate PD\n");
 		return ret;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +1 -1
index 87c7c45f1bb7..6948ab3c0d99 100644
@@ -2760,7 +2760,7 @@ static int amdgpu_device_ip_reinit_early_sriov(struct amdgpu_device *adev)
 		AMD_IP_BLOCK_TYPE_IH,
 	};
 
-	for (i = 0; i < ARRAY_SIZE(ip_order); i++) {
+	for (i = 0; i < adev->num_ip_blocks; i++) {
 		int j;
 		struct amdgpu_ip_block *block;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +1 -10
index 28f20f0b722f..163188ce02bd 100644
@@ -128,7 +128,7 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
 	struct amdgpu_device *adev = ring->adev;
 	struct amdgpu_ib *ib = &ibs[0];
 	struct dma_fence *tmp = NULL;
-	bool skip_preamble, need_ctx_switch;
+	bool need_ctx_switch;
 	unsigned patch_offset = ~0;
 	struct amdgpu_vm *vm;
 	uint64_t fence_ctx;
@@ -221,7 +221,6 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
 	if (need_ctx_switch)
 		status |= AMDGPU_HAVE_CTX_SWITCH;
 
-	skip_preamble = ring->current_ctx == fence_ctx;
 	if (job && ring->funcs->emit_cntxcntl) {
 		status |= job->preamble_status;
 		status |= job->preemption_status;
@@ -239,14 +238,6 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
 	for (i = 0; i < num_ibs; ++i) {
 		ib = &ibs[i];
 
-		/* drop preamble IBs if we don't have a context switch */
-		if ((ib->flags & AMDGPU_IB_FLAG_PREAMBLE) &&
-		    skip_preamble &&
-		    !(status & AMDGPU_PREAMBLE_IB_PRESENT_FIRST) &&
-		    !amdgpu_mcbp &&
-		    !amdgpu_sriov_vf(adev)) /* for SRIOV preemption, Preamble CE ib must be inserted anyway */
-			continue;
-
 		if (job && ring->funcs->emit_frame_cntl) {
 			if (secure != !!(ib->flags & AMDGPU_IB_FLAGS_SECURE)) {
 				amdgpu_ring_emit_frame_cntl(ring, false, secure);
drivers/gpu/drm/amd/amdgpu/amdgpu_umc.h +5 -0
index 183814493658..bda4438c3925 100644
@@ -21,6 +21,11 @@
 #ifndef __AMDGPU_UMC_H__
 #define __AMDGPU_UMC_H__
 
+/*
+ * (addr / 256) * 4096, the higher 26 bits in ErrorAddr
+ * is the index of 4KB block
+ */
+#define ADDR_OF_4KB_BLOCK(addr)			(((addr) & ~0xffULL) << 4)
 /*
  * (addr / 256) * 8192, the higher 26 bits in ErrorAddr
  * is the index of 8KB block
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +2 -2
index e82f49f62f6e..1f2e2460e121 100644
@@ -143,7 +143,7 @@ static const struct soc15_reg_golden golden_settings_sdma_4_1[] = {
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC0_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC1_IB_CNTL, 0x800f0111, 0x00000100),
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC1_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
-	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_PAGE, 0x000003ff, 0x000003c0),
+	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_PAGE, 0x000003ff, 0x000003e0),
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_WATERMK, 0xfc000000, 0x00000000)
 };
 
@@ -269,7 +269,7 @@ static const struct soc15_reg_golden golden_settings_sdma_4_3[] = {
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_POWER_CNTL, 0x003fff07, 0x40000051),
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC0_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_RLC1_RB_WPTR_POLL_CNTL, 0xfffffff7, 0x00403000),
-	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_PAGE, 0x000003ff, 0x000003c0),
+	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_PAGE, 0x000003ff, 0x000003e0),
 	SOC15_REG_GOLDEN_VALUE(SDMA0, 0, mmSDMA0_UTCL1_WATERMK, 0xfc000000, 0x03fbe1fe)
 };
 
drivers/gpu/drm/amd/amdgpu/umc_v8_7.c +1 -1
index 5665c77a9d58..afbbe9f05d5e 100644
@@ -233,7 +233,7 @@ static void umc_v8_7_query_error_address(struct amdgpu_device *adev,
 		err_addr &= ~((0x1ULL << lsb) - 1);
 
 		/* translate umc channel address to soc pa, 3 parts are included */
-		retired_page = ADDR_OF_8KB_BLOCK(err_addr) |
+		retired_page = ADDR_OF_4KB_BLOCK(err_addr) |
 				ADDR_OF_256B_BLOCK(channel_index) |
 				OFFSET_IN_256B_BLOCK(err_addr);
 
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +38 -30

138 lines not on this page · raw message

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +23 -1
index df26c07cb912..6eb308670f48 100644
@@ -3685,6 +3685,23 @@ static int fill_dc_scaling_info(const struct drm_plane_state *state,
 	scaling_info->src_rect.x = state->src_x >> 16;
 	scaling_info->src_rect.y = state->src_y >> 16;
 
+	/*
+	 * For reasons we don't (yet) fully understand a non-zero
+	 * src_y coordinate into an NV12 buffer can cause a
+	 * system hang. To avoid hangs (and maybe be overly cautious)
+	 * let's reject both non-zero src_x and src_y.
+	 *
+	 * We currently know of only one use-case to reproduce a
+	 * scenario with non-zero src_x and src_y for NV12, which
+	 * is to gesture the YouTube Android app into full screen
+	 * on ChromeOS.
+	 */
+	if (state->fb &&
+	    state->fb->format->format == DRM_FORMAT_NV12 &&
+	    (scaling_info->src_rect.x != 0 ||
+	     scaling_info->src_rect.y != 0))
+		return -EINVAL;
+
 	/*
 	 * For reasons we don't (yet) fully understand a non-zero
 	 * src_y coordinate into an NV12 buffer can cause a
@@ -8291,7 +8308,8 @@ static int dm_update_crtc_state(struct amdgpu_display_manager *dm,
 	BUG_ON(dm_new_crtc_state->stream == NULL);
 
 	/* Scaling or underscan settings */
-	if (is_scaling_state_different(dm_old_conn_state, dm_new_conn_state))
+	if (is_scaling_state_different(dm_old_conn_state, dm_new_conn_state) ||
+				drm_atomic_crtc_needs_modeset(new_crtc_state))
 		update_stream_scaling_settings(
 			&new_crtc_state->mode, dm_new_conn_state, dm_new_crtc_state->stream);
 
@@ -8744,6 +8762,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,
 		    old_crtc_state->vrr_enabled == new_crtc_state->vrr_enabled)
 			continue;
 
+		ret = amdgpu_dm_verify_lut_sizes(new_crtc_state);
+		if (ret)
+			goto fail;
+
 		if (!new_crtc_state->enable)
 			continue;
 
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +1 -0
index 1df7f1b18049..6c7235bb2f41 100644
@@ -498,6 +498,7 @@ void amdgpu_dm_trigger_timing_sync(struct drm_device *dev);
 #define MAX_COLOR_LEGACY_LUT_ENTRIES 256
 
 void amdgpu_dm_init_color_mod(void);
+int amdgpu_dm_verify_lut_sizes(const struct drm_crtc_state *crtc_state);
 int amdgpu_dm_update_crtc_color_mgmt(struct dm_crtc_state *crtc);
 int amdgpu_dm_update_plane_color_mgmt(struct dm_crtc_state *crtc,
 				      struct dc_plane_state *dc_plane_state);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c +35 -6

55 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c +2 -0
index 32b73ea86673..a7f8caf1086b 100644
@@ -1704,6 +1704,8 @@ static void set_dp_mst_mode(struct dc_link *link, bool mst_enable)
 		link->type = dc_connection_single;
 		link->local_sink = link->remote_sinks[0];
 		link->local_sink->sink_signal = SIGNAL_TYPE_DISPLAY_PORT;
+		dc_sink_retain(link->local_sink);
+		dm_helpers_dp_mst_stop_top_mgr(link->ctx, link);
 	} else if (mst_enable == true &&
 			link->type == dc_connection_single &&
 			link->remote_sinks[0] != NULL) {
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_dpp_dscl.c +6 -3
index fce37c527a0b..8bb5912d837d 100644
@@ -482,10 +482,13 @@ static enum lb_memory_config dpp1_dscl_find_lb_memory_config(struct dcn10_dpp *d
 	int vtaps_c = scl_data->taps.v_taps_c;
 	int ceil_vratio = dc_fixpt_ceil(scl_data->ratios.vert);
 	int ceil_vratio_c = dc_fixpt_ceil(scl_data->ratios.vert_c);
-	enum lb_memory_config mem_cfg = LB_MEMORY_CONFIG_0;
 
-	if (dpp->base.ctx->dc->debug.use_max_lb)
-		return mem_cfg;
+	if (dpp->base.ctx->dc->debug.use_max_lb) {
+		if (scl_data->format == PIXEL_FORMAT_420BPP8
+				|| scl_data->format == PIXEL_FORMAT_420BPP10)
+			return LB_MEMORY_CONFIG_3;
+		return LB_MEMORY_CONFIG_0;
+	}
 
 	dpp->base.caps->dscl_calc_lb_num_partitions(
 			scl_data, LB_MEMORY_CONFIG_1, &num_part_y, &num_part_c);
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +1 -1
index f1e9b3b06b92..9d3ccdd35582 100644
@@ -243,7 +243,7 @@ void dcn20_dccg_init(struct dce_hwseq *hws)
 	REG_WRITE(MILLISECOND_TIME_BASE_DIV, 0x1186a0);
 
 	/* This value is dependent on the hardware pipeline delay so set once per SOC */
-	REG_WRITE(DISPCLK_FREQ_CHANGE_CNTL, 0x801003c);
+	REG_WRITE(DISPCLK_FREQ_CHANGE_CNTL, 0xe01003c);
 }
 
 void dcn20_disable_vga(
drivers/gpu/drm/amd/display/dc/dml/dcn30/display_mode_vba_30.c +28 -50

129 lines not on this page · raw message

drivers/gpu/drm/amd/display/dc/irq_types.h +1 -1
index d0ccd81ad5b4..ad3e5621a174 100644
@@ -163,7 +163,7 @@ enum irq_type
 };
 
 #define DAL_VALID_IRQ_SRC_NUM(src) \
-	((src) <= DAL_IRQ_SOURCES_NUMBER && (src) > DC_IRQ_SOURCE_INVALID)
+	((src) < DAL_IRQ_SOURCES_NUMBER && (src) > DC_IRQ_SOURCE_INVALID)
 
 /* Number of Page Flip IRQ Sources. */
 #define DAL_PFLIP_IRQ_SRC_NUM \
drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c +0 -1
index 20e554e771d1..fa8aeec304ef 100644
@@ -260,7 +260,6 @@ enum mod_hdcp_status mod_hdcp_setup(struct mod_hdcp *hdcp,
 	struct mod_hdcp_output output;
 	enum mod_hdcp_status status = MOD_HDCP_STATUS_SUCCESS;
 
-	memset(hdcp, 0, sizeof(struct mod_hdcp));
 	memset(&output, 0, sizeof(output));
 	hdcp->config = *config;
 	HDCP_TOP_INTERFACE_TRACE(hdcp);
drivers/gpu/drm/amd/display/modules/hdcp/hdcp1_execution.c +3 -1
index f244b72e74e0..53eab2b8e2c8 100644
@@ -29,8 +29,10 @@ static inline enum mod_hdcp_status validate_bksv(struct mod_hdcp *hdcp)
 {
 	uint64_t n = 0;
 	uint8_t count = 0;
+	u8 bksv[sizeof(n)] = { };
 
-	memcpy(&n, hdcp->auth.msg.hdcp1.bksv, sizeof(uint64_t));
+	memcpy(bksv, hdcp->auth.msg.hdcp1.bksv, sizeof(hdcp->auth.msg.hdcp1.bksv));
+	n = *(uint64_t *)bksv;
 
 	while (n) {
 		count++;
drivers/gpu/drm/amd/include/navi10_enum.h +1 -1
index d5ead9680c6e..84bcb96f76ea 100644
@@ -430,7 +430,7 @@ ARRAY_2D_DEPTH                           = 0x00000001,
  */
 
 typedef enum ENUM_NUM_SIMD_PER_CU {
-NUM_SIMD_PER_CU                          = 0x00000004,
+NUM_SIMD_PER_CU                          = 0x00000002,
 } ENUM_NUM_SIMD_PER_CU;
 
 /*
drivers/gpu/drm/arm/malidp_planes.c +7 -2
index 351a85088d0e..f1e8bc39b16d 100644
@@ -922,6 +922,11 @@ static const struct drm_plane_helper_funcs malidp_de_plane_helper_funcs = {
 	.atomic_disable = malidp_de_plane_disable,
 };
 
+static const uint64_t linear_only_modifiers[] = {
+	DRM_FORMAT_MOD_LINEAR,
+	DRM_FORMAT_MOD_INVALID
+};
+
 int malidp_de_planes_init(struct drm_device *drm)
 {
 	struct malidp_drm *malidp = drm->dev_private;
@@ -985,8 +990,8 @@ int malidp_de_planes_init(struct drm_device *drm)
 		 */
 		ret = drm_universal_plane_init(drm, &plane->base, crtcs,
 				&malidp_de_plane_funcs, formats, n,
-				(id == DE_SMART) ? NULL : modifiers, plane_type,
-				NULL);
+				(id == DE_SMART) ? linear_only_modifiers : modifiers,
+				plane_type, NULL);
 
 		if (ret < 0)
 			goto cleanup;
drivers/gpu/drm/ast/ast_dp501.c +103 -36

166 lines not on this page · raw message

drivers/gpu/drm/ast/ast_drv.h +12 -0
index 467049ca8430..b68b1ddfecb7 100644
@@ -120,6 +120,7 @@ struct ast_private {
 
 	void __iomem *regs;
 	void __iomem *ioregs;
+	void __iomem *dp501_fw_buf;
 
 	enum ast_chip chip;
 	bool vga2_clone;
@@ -298,6 +299,17 @@ int ast_mode_config_init(struct ast_private *ast);
 #define AST_MM_ALIGN_SHIFT 4
 #define AST_MM_ALIGN_MASK ((1 << AST_MM_ALIGN_SHIFT) - 1)
 
+#define AST_DP501_FW_VERSION_MASK	GENMASK(7, 4)
+#define AST_DP501_FW_VERSION_1		BIT(4)
+#define AST_DP501_PNP_CONNECTED		BIT(1)
+
+#define AST_DP501_DEFAULT_DCLK	65
+
+#define AST_DP501_GBL_VERSION	0xf000
+#define AST_DP501_PNPMONITOR	0xf010
+#define AST_DP501_LINKRATE	0xf014
+#define AST_DP501_EDID_DATA	0xf020
+
 int ast_mm_init(struct ast_private *ast);
 
 /* ast post */
drivers/gpu/drm/ast/ast_main.c +9 -2
index ee82b2ddf932..cf08215a9f21 100644
@@ -98,7 +98,7 @@ static void ast_detect_config_mode(struct drm_device *dev, u32 *scu_rev)
 	if (!(jregd0 & 0x80) || !(jregd1 & 0x10)) {
 		/* Double check it's actually working */
 		data = ast_read32(ast, 0xf004);
-		if (data != 0xFFFFFFFF) {
+		if ((data != 0xFFFFFFFF) && (data != 0x00)) {
 			/* P2A works, grab silicon revision */
 			ast->config_mode = ast_use_p2a;
 
@@ -406,7 +406,6 @@ struct ast_private *ast_device_create(struct drm_driver *drv,
 		return ast;
 	dev = &ast->base;
 
-	dev->pdev = pdev;
 	pci_set_drvdata(pdev, dev);
 
 	ast->regs = pcim_iomap(pdev, 1, 0);
@@ -446,6 +445,14 @@ struct ast_private *ast_device_create(struct drm_driver *drv,
 	if (ret)
 		return ERR_PTR(ret);
 
+	/* map reserved buffer */
+	ast->dp501_fw_buf = NULL;
+	if (dev->vram_mm->vram_size < pci_resource_len(pdev, 0)) {
+		ast->dp501_fw_buf = pci_iomap_range(pdev, 0, dev->vram_mm->vram_size, 0);
+		if (!ast->dp501_fw_buf)
+			drm_info(dev, "failed to map reserved buffer!\n");
+	}
+
 	ret = ast_mode_config_init(ast);
 	if (ret)
 		return ERR_PTR(ret);
drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-core.c +2 -2
index d0c65610ebb5..f56ff97c9899 100644
@@ -2369,9 +2369,9 @@ static int cdns_mhdp_probe(struct platform_device *pdev)
 	clk_prepare_enable(clk);
 
 	pm_runtime_enable(dev);
-	ret = pm_runtime_get_sync(dev);
+	ret = pm_runtime_resume_and_get(dev);
 	if (ret < 0) {
-		dev_err(dev, "pm_runtime_get_sync failed\n");
+		dev_err(dev, "pm_runtime_resume_and_get failed\n");
 		pm_runtime_disable(dev);
 		goto clk_disable;
 	}
drivers/gpu/drm/bridge/cdns-dsi.c +1 -1
index 76373e31df92..b31281f76117 100644
@@ -1028,7 +1028,7 @@ static ssize_t cdns_dsi_transfer(struct mipi_dsi_host *host,
 	struct mipi_dsi_packet packet;
 	int ret, i, tx_len, rx_len;
 
-	ret = pm_runtime_get_sync(host->dev);
+	ret = pm_runtime_resume_and_get(host->dev);
 	if (ret < 0)
 		return ret;
 
drivers/gpu/drm/bridge/lontium-lt9611.c +1 -0
index d734d9402c35..c1926154eda8 100644
@@ -1209,6 +1209,7 @@ static struct i2c_device_id lt9611_id[] = {
 	{ "lontium,lt9611", 0 },
 	{}
 };
+MODULE_DEVICE_TABLE(i2c, lt9611_id);
 
 static const struct of_device_id lt9611_match_table[] = {
 	{ .compatible = "lontium,lt9611" },
drivers/gpu/drm/bridge/nwl-dsi.c +39 -22

103 lines not on this page · raw message

drivers/gpu/drm/drm_dp_helper.c +7 -0
index deeed73f4ed6..3c55753bab16 100644
@@ -602,7 +602,14 @@ int drm_dp_read_downstream_info(struct drm_dp_aux *aux,
 	    !(dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_PRESENT))
 		return 0;
 
+	/* Some branches advertise having 0 downstream ports, despite also advertising they have a
+	 * downstream port present. The DP spec isn't clear on if this is allowed or not, but since
+	 * some branches do it we need to handle it regardless.
+	 */
 	len = drm_dp_downstream_port_count(dpcd);
+	if (!len)
+		return 0;
+
 	if (dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DETAILED_CAP_INFO_AVAILABLE)
 		len *= 4;
 
drivers/gpu/drm/i915/display/intel_dp.c +1 -1
index eb02ecb6e345..65d73eb5e155 100644
@@ -5080,7 +5080,7 @@ static int intel_dp_vsc_sdp_unpack(struct drm_dp_vsc_sdp *vsc,
 	if (size < sizeof(struct dp_sdp))
 		return -EINVAL;
 
-	memset(vsc, 0, size);
+	memset(vsc, 0, sizeof(*vsc));
 
 	if (sdp->sdp_header.HB0 != 0)
 		return -EINVAL;
drivers/gpu/drm/mediatek/mtk_drm_crtc.c +1 -1
index ac038572164d..dfd5ed15a7f4 100644
@@ -274,7 +274,7 @@ static int mtk_crtc_ddp_hw_init(struct mtk_drm_crtc *mtk_crtc)
 		drm_connector_list_iter_end(&conn_iter);
 	}
 
-	ret = pm_runtime_get_sync(crtc->dev->dev);
+	ret = pm_runtime_resume_and_get(crtc->dev->dev);
 	if (ret < 0) {
 		DRM_ERROR("Failed to enable power domain: %d\n", ret);
 		return ret;
drivers/gpu/drm/msm/disp/mdp4/mdp4_kms.c +0 -2
index dbf8d429223e..2f75e3905202 100644
@@ -88,8 +88,6 @@ static int mdp4_hw_init(struct msm_kms *kms)
 	if (mdp4_kms->rev > 1)
 		mdp4_write(mdp4_kms, REG_MDP4_RESET_STATUS, 1);
 
-	dev->mode_config.allow_fb_modifiers = true;
-
 out:
 	pm_runtime_put_sync(dev->dev);
 
drivers/gpu/drm/msm/disp/mdp4/mdp4_plane.c +7 -1
index da3cc1d8c331..ee1dbb2b84af 100644
@@ -347,6 +347,12 @@ enum mdp4_pipe mdp4_plane_pipe(struct drm_plane *plane)
 	return mdp4_plane->pipe;
 }
 
+static const uint64_t supported_format_modifiers[] = {
+	DRM_FORMAT_MOD_SAMSUNG_64_32_TILE,
+	DRM_FORMAT_MOD_LINEAR,
+	DRM_FORMAT_MOD_INVALID
+};
+
 /* initialize plane */
 struct drm_plane *mdp4_plane_init(struct drm_device *dev,
 		enum mdp4_pipe pipe_id, bool private_plane)
@@ -375,7 +381,7 @@ struct drm_plane *mdp4_plane_init(struct drm_device *dev,
 	type = private_plane ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
 	ret = drm_universal_plane_init(dev, plane, 0xff, &mdp4_plane_funcs,
 				 mdp4_plane->formats, mdp4_plane->nformats,
-				 NULL, type, NULL);
+				 supported_format_modifiers, type, NULL);
 	if (ret)
 		goto fail;
 
drivers/gpu/drm/mxsfb/Kconfig +0 -1
index 0143d539f8f8..ee22cd25d3e3 100644
@@ -10,7 +10,6 @@ config DRM_MXSFB
 	depends on COMMON_CLK
 	select DRM_MXS
 	select DRM_KMS_HELPER
-	select DRM_KMS_FB_HELPER
 	select DRM_KMS_CMA_HELPER
 	select DRM_PANEL
 	select DRM_PANEL_BRIDGE
drivers/gpu/drm/nouveau/nouveau_display.c +0 -1
index bceb48a2dfca..f2ad6f49fb72 100644
@@ -700,7 +700,6 @@ nouveau_display_create(struct drm_device *dev)
 
 	dev->mode_config.preferred_depth = 24;
 	dev->mode_config.prefer_shadow = 1;
-	dev->mode_config.allow_fb_modifiers = true;
 
 	if (drm->client.device.info.chipset < 0x11)
 		dev->mode_config.async_page_flip = false;
drivers/gpu/drm/radeon/radeon_display.c +1 -0
index e0ae911ef427..71bdafac9210 100644
@@ -1334,6 +1334,7 @@ radeon_user_framebuffer_create(struct drm_device *dev,
 	/* Handle is imported dma-buf, so cannot be migrated to VRAM for scanout */
 	if (obj->import_attach) {
 		DRM_DEBUG_KMS("Cannot create framebuffer from imported dma_buf\n");
+		drm_gem_object_put(obj);
 		return ERR_PTR(-EINVAL);
 	}
 
drivers/gpu/drm/radeon/radeon_drv.c +4 -4
index 4cd30613fa1d..e9df5e8ef0a5 100644
@@ -416,13 +416,13 @@ radeon_pci_shutdown(struct pci_dev *pdev)
 	if (radeon_device_is_virtual())
 		radeon_pci_remove(pdev);
 
-#ifdef CONFIG_PPC64
+#if defined(CONFIG_PPC64) || defined(CONFIG_MACH_LOONGSON64)
 	/*
 	 * Some adapters need to be suspended before a
 	 * shutdown occurs in order to prevent an error
-	 * during kexec.
-	 * Make this power specific becauase it breaks
-	 * some non-power boards.
+	 * during kexec, shutdown or reboot.
+	 * Make this power and Loongson specific because
+	 * it breaks some other boards.
 	 */
 	radeon_suspend_kms(pci_get_drvdata(pdev), true, true, false);
 #endif
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c +0 -4
index 75a76408cb29..d0c9610ad220 100644
@@ -243,7 +243,6 @@ struct dw_mipi_dsi_rockchip {
 	struct dw_mipi_dsi *dmd;
 	const struct rockchip_dw_dsi_chip_data *cdata;
 	struct dw_mipi_dsi_plat_data pdata;
-	int devcnt;
 };
 
 struct dphy_pll_parameter_map {
@@ -1141,9 +1140,6 @@ static int dw_mipi_dsi_rockchip_remove(struct platform_device *pdev)
 {
 	struct dw_mipi_dsi_rockchip *dsi = platform_get_drvdata(pdev);
 
-	if (dsi->devcnt == 0)
-		component_del(dsi->dev, &dw_mipi_dsi_rockchip_ops);
-
 	dw_mipi_dsi_remove(dsi->dmd);
 
 	return 0;
drivers/gpu/drm/rockchip/rockchip_vop_reg.c +13 -8
index 80053d91a301..a6fe03c3748a 100644
@@ -349,8 +349,8 @@ static const struct vop_win_phy rk3066_win0_data = {
 	.nformats = ARRAY_SIZE(formats_win_full),
 	.format_modifiers = format_modifiers_win_full,
 	.enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 0),
-	.format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 4),
-	.rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 19),
+	.format = VOP_REG(RK3066_SYS_CTRL1, 0x7, 4),
+	.rb_swap = VOP_REG(RK3066_SYS_CTRL1, 0x1, 19),
 	.act_info = VOP_REG(RK3066_WIN0_ACT_INFO, 0x1fff1fff, 0),
 	.dsp_info = VOP_REG(RK3066_WIN0_DSP_INFO, 0x0fff0fff, 0),
 	.dsp_st = VOP_REG(RK3066_WIN0_DSP_ST, 0x1fff1fff, 0),
@@ -361,13 +361,12 @@ static const struct vop_win_phy rk3066_win0_data = {
 };
 
 static const struct vop_win_phy rk3066_win1_data = {
-	.scl = &rk3066_win_scl,
 	.data_formats = formats_win_full,
 	.nformats = ARRAY_SIZE(formats_win_full),
 	.format_modifiers = format_modifiers_win_full,
 	.enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 1),
-	.format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 7),
-	.rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 23),
+	.format = VOP_REG(RK3066_SYS_CTRL1, 0x7, 7),
+	.rb_swap = VOP_REG(RK3066_SYS_CTRL1, 0x1, 23),
 	.act_info = VOP_REG(RK3066_WIN1_ACT_INFO, 0x1fff1fff, 0),
 	.dsp_info = VOP_REG(RK3066_WIN1_DSP_INFO, 0x0fff0fff, 0),
 	.dsp_st = VOP_REG(RK3066_WIN1_DSP_ST, 0x1fff1fff, 0),
@@ -382,8 +381,8 @@ static const struct vop_win_phy rk3066_win2_data = {
 	.nformats = ARRAY_SIZE(formats_win_lite),
 	.format_modifiers = format_modifiers_win_lite,
 	.enable = VOP_REG(RK3066_SYS_CTRL1, 0x1, 2),
-	.format = VOP_REG(RK3066_SYS_CTRL0, 0x7, 10),
-	.rb_swap = VOP_REG(RK3066_SYS_CTRL0, 0x1, 27),
+	.format = VOP_REG(RK3066_SYS_CTRL1, 0x7, 10),
+	.rb_swap = VOP_REG(RK3066_SYS_CTRL1, 0x1, 27),
 	.dsp_info = VOP_REG(RK3066_WIN2_DSP_INFO, 0x0fff0fff, 0),
 	.dsp_st = VOP_REG(RK3066_WIN2_DSP_ST, 0x1fff1fff, 0),
 	.yrgb_mst = VOP_REG(RK3066_WIN2_MST, 0xffffffff, 0),
@@ -408,6 +407,9 @@ static const struct vop_common rk3066_common = {
 	.dither_down_en = VOP_REG(RK3066_DSP_CTRL0, 0x1, 11),
 	.dither_down_mode = VOP_REG(RK3066_DSP_CTRL0, 0x1, 10),
 	.dsp_blank = VOP_REG(RK3066_DSP_CTRL1, 0x1, 24),
+	.dither_up = VOP_REG(RK3066_DSP_CTRL0, 0x1, 9),
+	.dsp_lut_en = VOP_REG(RK3066_SYS_CTRL1, 0x1, 31),
+	.data_blank = VOP_REG(RK3066_DSP_CTRL1, 0x1, 25),
 };
 
 static const struct vop_win_data rk3066_vop_win_data[] = {
@@ -505,7 +507,10 @@ static const struct vop_common rk3188_common = {
 	.dither_down_sel = VOP_REG(RK3188_DSP_CTRL0, 0x1, 27),
 	.dither_down_en = VOP_REG(RK3188_DSP_CTRL0, 0x1, 11),
 	.dither_down_mode = VOP_REG(RK3188_DSP_CTRL0, 0x1, 10),
-	.dsp_blank = VOP_REG(RK3188_DSP_CTRL1, 0x3, 24),
+	.dsp_blank = VOP_REG(RK3188_DSP_CTRL1, 0x1, 24),
+	.dither_up = VOP_REG(RK3188_DSP_CTRL0, 0x1, 9),
+	.dsp_lut_en = VOP_REG(RK3188_SYS_CTRL, 0x1, 28),
+	.data_blank = VOP_REG(RK3188_DSP_CTRL1, 0x1, 25),
 };
 
 static const struct vop_win_data rk3188_vop_win_data[] = {
drivers/gpu/drm/scheduler/sched_entity.c +7 -1
index 146380118962..3f7f761df4cd 100644
@@ -113,7 +113,8 @@ static bool drm_sched_entity_is_idle(struct drm_sched_entity *entity)
 	rmb(); /* for list_empty to work without lock */
 
 	if (list_empty(&entity->list) ||
-	    spsc_queue_count(&entity->job_queue) == 0)
+	    spsc_queue_count(&entity->job_queue) == 0 ||
+	    entity->stopped)
 		return true;
 
 	return false;
@@ -218,11 +219,16 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f,
 static void drm_sched_entity_kill_jobs(struct drm_sched_entity *entity)
 {
 	struct drm_sched_job *job;
+	struct dma_fence *f;
 	int r;
 
 	while ((job = to_drm_sched_job(spsc_queue_pop(&entity->job_queue)))) {
 		struct drm_sched_fence *s_fence = job->s_fence;
 
+		/* Wait for all dependencies to avoid data corruptions */
+		while ((f = job->sched->ops->dependency(job, entity)))
+			dma_fence_wait(f, false);
+
 		drm_sched_fence_scheduled(s_fence);
 		dma_fence_set_error(&s_fence->finished, -ESRCH);
 
drivers/gpu/drm/scheduler/sched_main.c +24 -0
index 7111e0f527b0..b6c2757c3d83 100644
@@ -887,9 +887,33 @@ EXPORT_SYMBOL(drm_sched_init);
  */
 void drm_sched_fini(struct drm_gpu_scheduler *sched)
 {
+	struct drm_sched_entity *s_entity;
+	int i;
+
 	if (sched->thread)
 		kthread_stop(sched->thread);
 
+	for (i = DRM_SCHED_PRIORITY_COUNT - 1; i >= DRM_SCHED_PRIORITY_MIN; i--) {
+		struct drm_sched_rq *rq = &sched->sched_rq[i];
+
+		if (!rq)
+			continue;
+
+		spin_lock(&rq->lock);
+		list_for_each_entry(s_entity, &rq->entities, list)
+			/*
+			 * Prevents reinsertion and marks job_queue as idle,
+			 * it will removed from rq in drm_sched_entity_fini
+			 * eventually
+			 */
+			s_entity->stopped = true;
+		spin_unlock(&rq->lock);
+
+	}
+
+	/* Wakeup everyone stuck in drm_sched_entity_flush for this scheduler */
+	wake_up_all(&sched->job_scheduled);
+
 	/* Confirm no work left behind accessing device structures */
 	cancel_delayed_work_sync(&sched->work_tdr);
 
drivers/gpu/drm/tegra/dc.c +8 -2
index 3aa9a7406085..ceb86338c003 100644
@@ -947,6 +947,11 @@ static const struct drm_plane_helper_funcs tegra_cursor_plane_helper_funcs = {
 	.atomic_disable = tegra_cursor_atomic_disable,
 };
 
+static const uint64_t linear_modifiers[] = {
+	DRM_FORMAT_MOD_LINEAR,
+	DRM_FORMAT_MOD_INVALID
+};
+
 static struct drm_plane *tegra_dc_cursor_plane_create(struct drm_device *drm,
 						      struct tegra_dc *dc)
 {
@@ -975,7 +980,7 @@ static struct drm_plane *tegra_dc_cursor_plane_create(struct drm_device *drm,
 
 	err = drm_universal_plane_init(drm, &plane->base, possible_crtcs,
 				       &tegra_plane_funcs, formats,
-				       num_formats, NULL,
+				       num_formats, linear_modifiers,
 				       DRM_PLANE_TYPE_CURSOR, NULL);
 	if (err < 0) {
 		kfree(plane);
@@ -1094,7 +1099,8 @@ static struct drm_plane *tegra_dc_overlay_plane_create(struct drm_device *drm,
 
 	err = drm_universal_plane_init(drm, &plane->base, possible_crtcs,
 				       &tegra_plane_funcs, formats,
-				       num_formats, NULL, type, NULL);
+				       num_formats, linear_modifiers,
+				       type, NULL);
 	if (err < 0) {
 		kfree(plane);
 		return ERR_PTR(err);
drivers/gpu/drm/tegra/drm.c +0 -2
index e4baf07992a4..2c6ebc328b24 100644
@@ -1127,8 +1127,6 @@ static int host1x_drm_probe(struct host1x_device *dev)
 	drm->mode_config.max_width = 4096;
 	drm->mode_config.max_height = 4096;
 
-	drm->mode_config.allow_fb_modifiers = true;
-
 	drm->mode_config.normalize_zpos = true;
 
 	drm->mode_config.funcs = &tegra_drm_mode_config_funcs;
drivers/gpu/drm/vc4/vc4_crtc.c +4 -1
index 1d2416d466a3..f4ccca922e44 100644
@@ -1001,7 +1001,7 @@ static const struct vc4_pv_data bcm2711_pv3_data = {
 	.fifo_depth = 64,
 	.pixels_per_clock = 1,
 	.encoder_types = {
-		[0] = VC4_ENCODER_TYPE_VEC,
+		[PV_CONTROL_CLK_SELECT_VEC] = VC4_ENCODER_TYPE_VEC,
 	},
 };
 
@@ -1042,6 +1042,9 @@ static void vc4_set_crtc_possible_masks(struct drm_device *drm,
 		struct vc4_encoder *vc4_encoder;
 		int i;
 
+		if (encoder->encoder_type == DRM_MODE_ENCODER_VIRTUAL)
+			continue;
+
 		vc4_encoder = to_vc4_encoder(encoder);
 		for (i = 0; i < ARRAY_SIZE(pv_data->encoder_types); i++) {
 			if (vc4_encoder->type == encoder_types[i]) {
drivers/gpu/drm/vc4/vc4_drv.h +1 -1
index c5f2944d5bc6..9809c3a856c6 100644
@@ -837,7 +837,7 @@ void vc4_crtc_destroy_state(struct drm_crtc *crtc,
 void vc4_crtc_reset(struct drm_crtc *crtc);
 void vc4_crtc_handle_vblank(struct vc4_crtc *crtc);
 void vc4_crtc_get_margins(struct drm_crtc_state *state,
-			  unsigned int *right, unsigned int *left,
+			  unsigned int *left, unsigned int *right,
 			  unsigned int *top, unsigned int *bottom);
 
 /* vc4_debugfs.c */
drivers/gpu/drm/vc4/vc4_hdmi.c +9 -1
index 25a09aaf5883..c58b8840090a 100644
@@ -627,7 +627,7 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder)
 	unsigned long pixel_rate, hsm_rate;
 	int ret;
 
-	ret = pm_runtime_get_sync(&vc4_hdmi->pdev->dev);
+	ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
 	if (ret < 0) {
 		DRM_ERROR("Failed to retain power domain: %d\n", ret);
 		return;
@@ -1807,6 +1807,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 	if (vc4_hdmi->variant->reset)
 		vc4_hdmi->variant->reset(vc4_hdmi);
 
+	if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") ||
+	     of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi1")) &&
+	    HDMI_READ(HDMI_VID_CTL) & VC4_HD_VID_CTL_ENABLE) {
+		clk_prepare_enable(vc4_hdmi->pixel_clock);
+		clk_prepare_enable(vc4_hdmi->hsm_clock);
+		clk_prepare_enable(vc4_hdmi->pixel_bvb_clock);
+	}
+
 	pm_runtime_enable(dev);
 
 	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
drivers/gpu/drm/vc4/vc4_txp.c +1 -1
index 849dcafbfff1..d13502ae973d 100644
@@ -503,7 +503,7 @@ static int vc4_txp_bind(struct device *dev, struct device *master, void *data)
 		return ret;
 
 	encoder = &txp->connector.encoder;
-	encoder->possible_crtcs |= drm_crtc_mask(crtc);
+	encoder->possible_crtcs = drm_crtc_mask(crtc);
 
 	ret = devm_request_irq(dev, irq, vc4_txp_interrupt, 0,
 			       dev_name(dev), txp);
drivers/gpu/drm/virtio/virtgpu_kms.c +1 -0
index eed57a931309..a28b01f92793 100644
@@ -209,6 +209,7 @@ int virtio_gpu_init(struct drm_device *dev)
 err_vbufs:
 	vgdev->vdev->config->del_vqs(vgdev->vdev);
 err_vqs:
+	dev->dev_private = NULL;
 	kfree(vgdev);
 	return ret;
 }
drivers/gpu/drm/zte/Kconfig +0 -1
index 90ebaedc11fd..aa8594190b50 100644
@@ -3,7 +3,6 @@ config DRM_ZTE
 	tristate "DRM Support for ZTE SoCs"
 	depends on DRM && ARCH_ZX
 	select DRM_KMS_CMA_HELPER
-	select DRM_KMS_FB_HELPER
 	select DRM_KMS_HELPER
 	select SND_SOC_HDMI_CODEC if SND_SOC
 	select VIDEOMODE_HELPERS
drivers/hwtracing/coresight/coresight-core.c +1 -1
index b2088d2d386a..424c296845db 100644
@@ -1347,7 +1347,7 @@ static int coresight_fixup_device_conns(struct coresight_device *csdev)
 		}
 	}
 
-	return 0;
+	return ret;
 }
 
 static int coresight_remove_match(struct device *dev, void *data)
drivers/hwtracing/coresight/coresight-tmc-etf.c +1 -1
index 989d965f3d90..8978f3410bee 100644
@@ -528,7 +528,7 @@ static unsigned long tmc_update_etf_buffer(struct coresight_device *csdev,
 		buf_ptr = buf->data_pages[cur] + offset;
 		*buf_ptr = readl_relaxed(drvdata->base + TMC_RRD);
 
-		if (lost && *barrier) {
+		if (lost && i < CORESIGHT_BARRIER_PKT_SIZE) {
 			*buf_ptr = *barrier;
 			barrier++;
 		}
drivers/infiniband/core/cma.c +2 -1
index 0c879e40bd18..34b94e525390 100644
@@ -2793,7 +2793,8 @@ static int cma_resolve_ib_route(struct rdma_id_private *id_priv,
 
 	cma_init_resolve_route_work(work, id_priv);
 
-	route->path_rec = kmalloc(sizeof *route->path_rec, GFP_KERNEL);
+	if (!route->path_rec)
+		route->path_rec = kmalloc(sizeof *route->path_rec, GFP_KERNEL);
 	if (!route->path_rec) {
 		ret = -ENOMEM;
 		goto err1;
drivers/infiniband/hw/cxgb4/qp.c +1 -0
index 5df4bb52bb10..861e19fdfeb4 100644
@@ -295,6 +295,7 @@ static int create_qp(struct c4iw_rdev *rdev, struct t4_wq *wq,
 	if (user && (!wq->sq.bar2_pa || (need_rq && !wq->rq.bar2_pa))) {
 		pr_warn("%s: sqid %u or rqid %u not in BAR2 range\n",
 			pci_name(rdev->lldi.pdev), wq->sq.qid, wq->rq.qid);
+		ret = -EINVAL;
 		goto free_dma;
 	}
 
drivers/infiniband/sw/rxe/rxe_mr.c +1 -1
index d2ce852447c1..026285f7f36a 100644
@@ -139,7 +139,7 @@ int rxe_mem_init_user(struct rxe_pd *pd, u64 start,
 	if (IS_ERR(umem)) {
 		pr_warn("err %d from rxe_umem_get\n",
 			(int)PTR_ERR(umem));
-		err = -EINVAL;
+		err = PTR_ERR(umem);
 		goto err1;
 	}
 
drivers/infiniband/ulp/isert/ib_isert.c +2 -2
index e653c83f8a35..edea37da8a5b 100644
@@ -35,10 +35,10 @@ static const struct kernel_param_ops sg_tablesize_ops = {
 	.get = param_get_int,
 };
 
-static int isert_sg_tablesize = ISCSI_ISER_DEF_SG_TABLESIZE;
+static int isert_sg_tablesize = ISCSI_ISER_MIN_SG_TABLESIZE;
 module_param_cb(sg_tablesize, &sg_tablesize_ops, &isert_sg_tablesize, 0644);
 MODULE_PARM_DESC(sg_tablesize,
-		 "Number of gather/scatter entries in a single scsi command, should >= 128 (default: 256, max: 4096)");
+		 "Number of gather/scatter entries in a single scsi command, should >= 128 (default: 128, max: 4096)");
 
 static DEFINE_MUTEX(device_list_mutex);
 static LIST_HEAD(device_list);
drivers/infiniband/ulp/isert/ib_isert.h +0 -3
index 6c5af13db4e0..ca8cfebe26ca 100644
@@ -65,9 +65,6 @@
  */
 #define ISER_RX_SIZE		(ISCSI_DEF_MAX_RECV_SEG_LEN + 1024)
 
-/* Default I/O size is 1MB */
-#define ISCSI_ISER_DEF_SG_TABLESIZE 256
-
 /* Minimum I/O size is 512KB */
 #define ISCSI_ISER_MIN_SG_TABLESIZE 128
 
drivers/infiniband/ulp/rtrs/rtrs-pri.h +8 -5
index 8caad0a2322b..51c60f542876 100644
@@ -47,12 +47,15 @@ enum {
 	MAX_PATHS_NUM = 128,
 
 	/*
-	 * With the size of struct rtrs_permit allocated on the client, 4K
-	 * is the maximum number of rtrs_permits we can allocate. This number is
-	 * also used on the client to allocate the IU for the user connection
-	 * to receive the RDMA addresses from the server.
+	 * Max IB immediate data size is 2^28 (MAX_IMM_PAYL_BITS)
+	 * and the minimum chunk size is 4096 (2^12).
+	 * So the maximum sess_queue_depth is 65536 (2^16) in theory.
+	 * But mempool_create, create_qp and ib_post_send fail with
+	 * "cannot allocate memory" error if sess_queue_depth is too big.
+	 * Therefore the pratical max value of sess_queue_depth is
+	 * somewhere between 1 and 65536 and it depends on the system.
 	 */
-	MAX_SESS_QUEUE_DEPTH = 4096,
+	MAX_SESS_QUEUE_DEPTH = 65536,
 
 	RTRS_HB_INTERVAL_MS = 5000,
 	RTRS_HB_MISSED_MAX = 5,
drivers/ipack/carriers/tpci200.c +4 -1
index ec71063fff76..e1822e87ec3d 100644
@@ -596,8 +596,11 @@ static int tpci200_pci_probe(struct pci_dev *pdev,
 
 out_err_bus_register:
 	tpci200_uninstall(tpci200);
+	/* tpci200->info->cfg_regs is unmapped in tpci200_uninstall */
+	tpci200->info->cfg_regs = NULL;
 out_err_install:
-	iounmap(tpci200->info->cfg_regs);
+	if (tpci200->info->cfg_regs)
+		iounmap(tpci200->info->cfg_regs);
 out_err_ioremap:
 	pci_release_region(pdev, TPCI200_CFG_MEM_BAR);
 out_err_pci_request:
drivers/isdn/hardware/mISDN/hfcpci.c +1 -1
index 56bd2e9db6ed..e501cb03f211 100644
@@ -2342,7 +2342,7 @@ static void __exit
 HFC_cleanup(void)
 {
 	if (timer_pending(&hfc_tl))
-		del_timer(&hfc_tl);
+		del_timer_sync(&hfc_tl);
 
 	pci_unregister_driver(&hfc_driver);
 }
drivers/md/dm-writecache.c +37 -11

93 lines not on this page · raw message

drivers/md/dm-zoned-metadata.c +7 -0
index b298fefb022e..510090797461 100644
@@ -1390,6 +1390,13 @@ static int dmz_init_zone(struct blk_zone *blkz, unsigned int num, void *data)
 		return -ENXIO;
 	}
 
+	/*
+	 * Devices that have zones with a capacity smaller than the zone size
+	 * (e.g. NVMe zoned namespaces) are not supported.
+	 */
+	if (blkz->capacity != blkz->len)
+		return -ENXIO;
+
 	switch (blkz->type) {
 	case BLK_ZONE_TYPE_CONVENTIONAL:
 		set_bit(DMZ_RND, &zone->flags);
drivers/md/dm.c +6 -2
index 638c04f9e832..19a70f434029 100644
@@ -1230,8 +1230,8 @@ static int dm_dax_zero_page_range(struct dax_device *dax_dev, pgoff_t pgoff,
 
 /*
  * A target may call dm_accept_partial_bio only from the map routine.  It is
- * allowed for all bio types except REQ_PREFLUSH, REQ_OP_ZONE_RESET,
- * REQ_OP_ZONE_OPEN, REQ_OP_ZONE_CLOSE and REQ_OP_ZONE_FINISH.
+ * allowed for all bio types except REQ_PREFLUSH, REQ_OP_ZONE_* zone management
+ * operations and REQ_OP_ZONE_APPEND (zone append writes).
  *
  * dm_accept_partial_bio informs the dm that the target only wants to process
  * additional n_sectors sectors of the bio and the rest of the data should be
@@ -1261,9 +1261,13 @@ void dm_accept_partial_bio(struct bio *bio, unsigned n_sectors)
 {
 	struct dm_target_io *tio = container_of(bio, struct dm_target_io, clone);
 	unsigned bi_size = bio->bi_iter.bi_size >> SECTOR_SHIFT;
+
 	BUG_ON(bio->bi_opf & REQ_PREFLUSH);
+	BUG_ON(op_is_zone_mgmt(bio_op(bio)));
+	BUG_ON(bio_op(bio) == REQ_OP_ZONE_APPEND);
 	BUG_ON(bi_size > *tio->len_ptr);
 	BUG_ON(n_sectors > bi_size);
+
 	*tio->len_ptr -= bi_size - n_sectors;
 	bio->bi_iter.bi_size = n_sectors << SECTOR_SHIFT;
 }
drivers/md/persistent-data/dm-btree-remove.c +2 -1
index eff04fa23dfa..9e4d1212f4c1 100644
@@ -549,7 +549,8 @@ int dm_btree_remove(struct dm_btree_info *info, dm_block_t root,
 		delete_at(n, index);
 	}
 
-	*new_root = shadow_root(&spine);
+	if (!r)
+		*new_root = shadow_root(&spine);
 	exit_shadow_spine(&spine);
 
 	return r;
drivers/md/persistent-data/dm-space-map-disk.c +8 -1
index bf4c5e2ccb6f..e0acae7a3815 100644
@@ -171,6 +171,14 @@ static int sm_disk_new_block(struct dm_space_map *sm, dm_block_t *b)
 	 * Any block we allocate has to be free in both the old and current ll.
 	 */
 	r = sm_ll_find_common_free_block(&smd->old_ll, &smd->ll, smd->begin, smd->ll.nr_blocks, b);
+	if (r == -ENOSPC) {
+		/*
+		 * There's no free block between smd->begin and the end of the metadata device.
+		 * We search before smd->begin in case something has been freed.
+		 */
+		r = sm_ll_find_common_free_block(&smd->old_ll, &smd->ll, 0, smd->begin, b);
+	}
+
 	if (r)
 		return r;
 
@@ -199,7 +207,6 @@ static int sm_disk_commit(struct dm_space_map *sm)
 		return r;
 
 	memcpy(&smd->old_ll, &smd->ll, sizeof(smd->old_ll));
-	smd->begin = 0;
 	smd->nr_allocated_this_transaction = 0;
 
 	r = sm_disk_get_nr_free(sm, &nr_free);
drivers/md/persistent-data/dm-space-map-metadata.c +8 -1
index 9e3c64ec2026..da439ac85796 100644
@@ -452,6 +452,14 @@ static int sm_metadata_new_block_(struct dm_space_map *sm, dm_block_t *b)
 	 * Any block we allocate has to be free in both the old and current ll.
 	 */
 	r = sm_ll_find_common_free_block(&smm->old_ll, &smm->ll, smm->begin, smm->ll.nr_blocks, b);
+	if (r == -ENOSPC) {
+		/*
+		 * There's no free block between smm->begin and the end of the metadata device.
+		 * We search before smm->begin in case something has been freed.
+		 */
+		r = sm_ll_find_common_free_block(&smm->old_ll, &smm->ll, 0, smm->begin, b);
+	}
+
 	if (r)
 		return r;
 
@@ -503,7 +511,6 @@ static int sm_metadata_commit(struct dm_space_map *sm)
 		return r;
 
 	memcpy(&smm->old_ll, &smm->ll, sizeof(smm->old_ll));
-	smm->begin = 0;
 	smm->allocated_this_transaction = 0;
 
 	return 0;
drivers/media/i2c/saa6588.c +2 -2
index ecb491d5f2ab..d1e0716bdfff 100644
@@ -380,7 +380,7 @@ static void saa6588_configure(struct saa6588 *s)
 
 /* ---------------------------------------------------------------------- */
 
-static long saa6588_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
+static long saa6588_command(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
 {
 	struct saa6588 *s = to_saa6588(sd);
 	struct saa6588_command *a = arg;
@@ -433,7 +433,7 @@ static int saa6588_s_tuner(struct v4l2_subdev *sd, const struct v4l2_tuner *vt)
 /* ----------------------------------------------------------------------- */
 
 static const struct v4l2_subdev_core_ops saa6588_core_ops = {
-	.ioctl = saa6588_ioctl,
+	.command = saa6588_command,
 };
 
 static const struct v4l2_subdev_tuner_ops saa6588_tuner_ops = {
drivers/media/pci/bt8xx/bttv-driver.c +3 -3
index 8824dd0fb331..35a51e9b539d 100644
@@ -3187,7 +3187,7 @@ static int radio_release(struct file *file)
 
 	btv->radio_user--;
 
-	bttv_call_all(btv, core, ioctl, SAA6588_CMD_CLOSE, &cmd);
+	bttv_call_all(btv, core, command, SAA6588_CMD_CLOSE, &cmd);
 
 	if (btv->radio_user == 0)
 		btv->has_radio_tuner = 0;
@@ -3268,7 +3268,7 @@ static ssize_t radio_read(struct file *file, char __user *data,
 	cmd.result = -ENODEV;
 	radio_enable(btv);
 
-	bttv_call_all(btv, core, ioctl, SAA6588_CMD_READ, &cmd);
+	bttv_call_all(btv, core, command, SAA6588_CMD_READ, &cmd);
 
 	return cmd.result;
 }
@@ -3289,7 +3289,7 @@ static __poll_t radio_poll(struct file *file, poll_table *wait)
 	cmd.instance = file;
 	cmd.event_list = wait;
 	cmd.poll_mask = res;
-	bttv_call_all(btv, core, ioctl, SAA6588_CMD_POLL, &cmd);
+	bttv_call_all(btv, core, command, SAA6588_CMD_POLL, &cmd);
 
 	return cmd.poll_mask;
 }
drivers/media/pci/saa7134/saa7134-video.c +3 -3
index 9a6a6b68f8e3..85d082baaadc 100644
@@ -1178,7 +1178,7 @@ static int video_release(struct file *file)
 
 	saa_call_all(dev, tuner, standby);
 	if (vdev->vfl_type == VFL_TYPE_RADIO)
-		saa_call_all(dev, core, ioctl, SAA6588_CMD_CLOSE, &cmd);
+		saa_call_all(dev, core, command, SAA6588_CMD_CLOSE, &cmd);
 	mutex_unlock(&dev->lock);
 
 	return 0;
@@ -1197,7 +1197,7 @@ static ssize_t radio_read(struct file *file, char __user *data,
 	cmd.result = -ENODEV;
 
 	mutex_lock(&dev->lock);
-	saa_call_all(dev, core, ioctl, SAA6588_CMD_READ, &cmd);
+	saa_call_all(dev, core, command, SAA6588_CMD_READ, &cmd);
 	mutex_unlock(&dev->lock);
 
 	return cmd.result;
@@ -1213,7 +1213,7 @@ static __poll_t radio_poll(struct file *file, poll_table *wait)
 	cmd.event_list = wait;
 	cmd.poll_mask = 0;
 	mutex_lock(&dev->lock);
-	saa_call_all(dev, core, ioctl, SAA6588_CMD_POLL, &cmd);
+	saa_call_all(dev, core, command, SAA6588_CMD_POLL, &cmd);
 	mutex_unlock(&dev->lock);
 
 	return rc | cmd.poll_mask;
drivers/media/platform/davinci/vpbe_display.c +1 -1
index d19bad997f30..bf3c3e76b921 100644
@@ -47,7 +47,7 @@ static int venc_is_second_field(struct vpbe_display *disp_dev)
 
 	ret = v4l2_subdev_call(vpbe_dev->venc,
 			       core,
-			       ioctl,
+			       command,
 			       VENC_GET_FLD,
 			       &val);
 	if (ret < 0) {
drivers/media/platform/davinci/vpbe_venc.c +2 -4
index 8caa084e5704..bde241c26d79 100644
@@ -521,9 +521,7 @@ static int venc_s_routing(struct v4l2_subdev *sd, u32 input, u32 output,
 	return ret;
 }
 
-static long venc_ioctl(struct v4l2_subdev *sd,
-			unsigned int cmd,
-			void *arg)
+static long venc_command(struct v4l2_subdev *sd, unsigned int cmd, void *arg)
 {
 	u32 val;
 
@@ -542,7 +540,7 @@ static long venc_ioctl(struct v4l2_subdev *sd,
 }
 
 static const struct v4l2_subdev_core_ops venc_core_ops = {
-	.ioctl      = venc_ioctl,
+	.command      = venc_command,
 };
 
 static const struct v4l2_subdev_video_ops venc_video_ops = {
drivers/media/rc/bpf-lirc.c +2 -1
index 3fe3edd80876..afae0afe3f81 100644
@@ -326,7 +326,8 @@ int lirc_prog_query(const union bpf_attr *attr, union bpf_attr __user *uattr)
 	}
 
 	if (attr->query.prog_cnt != 0 && prog_ids && cnt)
-		ret = bpf_prog_array_copy_to_user(progs, prog_ids, cnt);
+		ret = bpf_prog_array_copy_to_user(progs, prog_ids,
+						  attr->query.prog_cnt);
 
 unlock:
 	mutex_unlock(&ir_raw_handler_lock);
drivers/media/usb/dvb-usb/dtv5100.c +5 -2
index fba06932a9e0..1c13e493322c 100644
@@ -26,6 +26,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,
 			   u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
 {
 	struct dtv5100_state *st = d->priv;
+	unsigned int pipe;
 	u8 request;
 	u8 type;
 	u16 value;
@@ -34,6 +35,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,
 	switch (wlen) {
 	case 1:
 		/* write { reg }, read { value } */
+		pipe = usb_rcvctrlpipe(d->udev, 0);
 		request = (addr == DTV5100_DEMOD_ADDR ? DTV5100_DEMOD_READ :
 							DTV5100_TUNER_READ);
 		type = USB_TYPE_VENDOR | USB_DIR_IN;
@@ -41,6 +43,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,
 		break;
 	case 2:
 		/* write { reg, value } */
+		pipe = usb_sndctrlpipe(d->udev, 0);
 		request = (addr == DTV5100_DEMOD_ADDR ? DTV5100_DEMOD_WRITE :
 							DTV5100_TUNER_WRITE);
 		type = USB_TYPE_VENDOR | USB_DIR_OUT;
@@ -54,7 +57,7 @@ static int dtv5100_i2c_msg(struct dvb_usb_device *d, u8 addr,
 
 	memcpy(st->data, rbuf, rlen);
 	msleep(1); /* avoid I2C errors */
-	return usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0), request,
+	return usb_control_msg(d->udev, pipe, request,
 			       type, value, index, st->data, rlen,
 			       DTV5100_USB_TIMEOUT);
 }
@@ -141,7 +144,7 @@ static int dtv5100_probe(struct usb_interface *intf,
 
 	/* initialize non qt1010/zl10353 part? */
 	for (i = 0; dtv5100_init[i].request; i++) {
-		ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
+		ret = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
 				      dtv5100_init[i].request,
 				      USB_TYPE_VENDOR | USB_DIR_OUT,
 				      dtv5100_init[i].value,
drivers/media/usb/gspca/sq905.c +1 -1
index 949111070971..32504ebcfd4d 100644
@@ -116,7 +116,7 @@ static int sq905_command(struct gspca_dev *gspca_dev, u16 index)
 	}
 
 	ret = usb_control_msg(gspca_dev->dev,
-			      usb_sndctrlpipe(gspca_dev->dev, 0),
+			      usb_rcvctrlpipe(gspca_dev->dev, 0),
 			      USB_REQ_SYNCH_FRAME,                /* request */
 			      USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
 			      SQ905_PING, 0, gspca_dev->usb_buf, 1,
drivers/media/usb/gspca/sunplus.c +6 -2
index ace3da40006e..971dee0a56da 100644
@@ -242,6 +242,10 @@ static void reg_r(struct gspca_dev *gspca_dev,
 		gspca_err(gspca_dev, "reg_r: buffer overflow\n");
 		return;
 	}
+	if (len == 0) {
+		gspca_err(gspca_dev, "reg_r: zero-length read\n");
+		return;
+	}
 	if (gspca_dev->usb_err < 0)
 		return;
 	ret = usb_control_msg(gspca_dev->dev,
@@ -250,7 +254,7 @@ static void reg_r(struct gspca_dev *gspca_dev,
 			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
 			0,		/* value */
 			index,
-			len ? gspca_dev->usb_buf : NULL, len,
+			gspca_dev->usb_buf, len,
 			500);
 	if (ret < 0) {
 		pr_err("reg_r err %d\n", ret);
@@ -727,7 +731,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
 		case MegaImageVI:
 			reg_w_riv(gspca_dev, 0xf0, 0, 0);
 			spca504B_WaitCmdStatus(gspca_dev);
-			reg_r(gspca_dev, 0xf0, 4, 0);
+			reg_w_riv(gspca_dev, 0xf0, 4, 0);
 			spca504B_WaitCmdStatus(gspca_dev);
 			break;
 		default:
drivers/media/usb/uvc/uvc_video.c +27 -0
index a6a441d92b94..5878c7833486 100644
@@ -124,10 +124,37 @@ int uvc_query_ctrl(struct uvc_device *dev, u8 query, u8 unit,
 static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
 	struct uvc_streaming_control *ctrl)
 {
+	static const struct usb_device_id elgato_cam_link_4k = {
+		USB_DEVICE(0x0fd9, 0x0066)
+	};
 	struct uvc_format *format = NULL;
 	struct uvc_frame *frame = NULL;
 	unsigned int i;
 
+	/*
+	 * The response of the Elgato Cam Link 4K is incorrect: The second byte
+	 * contains bFormatIndex (instead of being the second byte of bmHint).
+	 * The first byte is always zero. The third byte is always 1.
+	 *
+	 * The UVC 1.5 class specification defines the first five bits in the
+	 * bmHint bitfield. The remaining bits are reserved and should be zero.
+	 * Therefore a valid bmHint will be less than 32.
+	 *
+	 * Latest Elgato Cam Link 4K firmware as of 2021-03-23 needs this fix.
+	 * MCU: 20.02.19, FPGA: 67
+	 */
+	if (usb_match_one_id(stream->dev->intf, &elgato_cam_link_4k) &&
+	    ctrl->bmHint > 255) {
+		u8 corrected_format_index = ctrl->bmHint >> 8;
+
+		/* uvc_dbg(stream->dev, VIDEO,
+			"Correct USB video probe response from {bmHint: 0x%04x, bFormatIndex: %u} to {bmHint: 0x%04x, bFormatIndex: %u}\n",
+			ctrl->bmHint, ctrl->bFormatIndex,
+			1, corrected_format_index); */
+		ctrl->bmHint = 1;
+		ctrl->bFormatIndex = corrected_format_index;
+	}
+
 	for (i = 0; i < stream->nformats; ++i) {
 		if (stream->format[i].index == ctrl->bFormatIndex) {
 			format = &stream->format[i];
drivers/media/usb/zr364xx/zr364xx.c +1 -0
index 8c670934d920..1b79053b2a05 100644
@@ -1034,6 +1034,7 @@ static int zr364xx_start_readpipe(struct zr364xx_camera *cam)
 	DBG("submitting URB %p\n", pipe_info->stream_urb);
 	retval = usb_submit_urb(pipe_info->stream_urb, GFP_KERNEL);
 	if (retval) {
+		usb_free_urb(pipe_info->stream_urb);
 		printk(KERN_ERR KBUILD_MODNAME ": start read pipe failed\n");
 		return retval;
 	}
drivers/mfd/syscon.c +1 -1
index ca465794ea9c..df5cebb372a5 100644
@@ -108,6 +108,7 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)
 	syscon_config.max_register = resource_size(&res) - reg_io_width;
 
 	regmap = regmap_init_mmio(NULL, base, &syscon_config);
+	kfree(syscon_config.name);
 	if (IS_ERR(regmap)) {
 		pr_err("regmap init failed\n");
 		ret = PTR_ERR(regmap);
@@ -144,7 +145,6 @@ static struct syscon *of_syscon_register(struct device_node *np, bool check_clk)
 	regmap_exit(regmap);
 err_regmap:
 	iounmap(base);
-	kfree(syscon_config.name);
 err_map:
 	kfree(syscon);
 	return ERR_PTR(ret);
drivers/misc/lkdtm/bugs.c +3 -0
index a0675d4154d2..a337f97b30e2 100644
@@ -144,6 +144,9 @@ void lkdtm_UNALIGNED_LOAD_STORE_WRITE(void)
 	if (*p == 0)
 		val = 0x87654321;
 	*p = val;
+
+	if (IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS))
+		pr_err("XFAIL: arch has CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS\n");
 }
 
 void lkdtm_SOFTLOCKUP(void)
drivers/mmc/core/core.c +5 -2
index eaf4810fe656..b5f3f160c842 100644
@@ -936,11 +936,14 @@ int mmc_execute_tuning(struct mmc_card *card)
 
 	err = host->ops->execute_tuning(host, opcode);
 
-	if (err)
+	if (err) {
 		pr_err("%s: tuning execution failed: %d\n",
 			mmc_hostname(host), err);
-	else
+	} else {
+		host->retune_now = 0;
+		host->need_retune = 0;
 		mmc_retune_enable(host);
+	}
 
 	return err;
 }
drivers/mmc/core/sd.c +6 -4
index 636d4e3aa0e3..bac343a8d569 100644
@@ -847,11 +847,13 @@ int mmc_sd_get_cid(struct mmc_host *host, u32 ocr, u32 *cid, u32 *rocr)
 		return err;
 
 	/*
-	 * In case CCS and S18A in the response is set, start Signal Voltage
-	 * Switch procedure. SPI mode doesn't support CMD11.
+	 * In case the S18A bit is set in the response, let's start the signal
+	 * voltage switch procedure. SPI mode doesn't support CMD11.
+	 * Note that, according to the spec, the S18A bit is not valid unless
+	 * the CCS bit is set as well. We deliberately deviate from the spec in
+	 * regards to this, which allows UHS-I to be supported for SDSC cards.
 	 */
-	if (!mmc_host_is_spi(host) && rocr &&
-	   ((*rocr & 0x41000000) == 0x41000000)) {
+	if (!mmc_host_is_spi(host) && rocr && (*rocr & 0x01000000)) {
 		err = mmc_set_uhs_voltage(host, pocr);
 		if (err == -EAGAIN) {
 			retries--;
drivers/mmc/host/sdhci-acpi.c +11 -0
index 54205e3be9e8..a2cdb37fcbbe 100644
@@ -788,6 +788,17 @@ static const struct dmi_system_id sdhci_acpi_quirks[] = {
 		},
 		.driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT,
 	},
+	{
+		/*
+		 * The Toshiba WT8-B's microSD slot always reports the card being
+		 * write-protected.
+		 */
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "TOSHIBA ENCORE 2 WT8-B"),
+		},
+		.driver_data = (void *)DMI_QUIRK_SD_NO_WRITE_PROTECT,
+	},
 	{} /* Terminating entry */
 };
 
drivers/mmc/host/sdhci.c +4 -0
index 58c977d581e7..6cdadbb3accd 100644
@@ -1813,6 +1813,10 @@ static u16 sdhci_get_preset_value(struct sdhci_host *host)
 	u16 preset = 0;
 
 	switch (host->timing) {
+	case MMC_TIMING_MMC_HS:
+	case MMC_TIMING_SD_HS:
+		preset = sdhci_readw(host, SDHCI_PRESET_FOR_HIGH_SPEED);
+		break;
 	case MMC_TIMING_UHS_SDR12:
 		preset = sdhci_readw(host, SDHCI_PRESET_FOR_SDR12);
 		break;
drivers/mmc/host/sdhci.h +1 -0
index 0770c036e2ff..960fed78529e 100644
@@ -253,6 +253,7 @@
 
 /* 60-FB reserved */
 
+#define SDHCI_PRESET_FOR_HIGH_SPEED	0x64
 #define SDHCI_PRESET_FOR_SDR12 0x66
 #define SDHCI_PRESET_FOR_SDR25 0x68
 #define SDHCI_PRESET_FOR_SDR50 0x6A
drivers/net/dsa/ocelot/seville_vsc9953.c +5 -0
index ebbaf6817ec8..7026523f886c 100644
@@ -1214,6 +1214,11 @@ static int seville_probe(struct platform_device *pdev)
 	felix->info = &seville_info_vsc9953;
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res) {
+		err = -EINVAL;
+		dev_err(&pdev->dev, "Invalid resource\n");
+		goto err_alloc_felix;
+	}
 	felix->switch_base = res->start;
 
 	ds = kzalloc(sizeof(struct dsa_switch), GFP_KERNEL);
drivers/net/ethernet/broadcom/genet/bcmmii.c +4 -0
index 6fb6c3556285..f9e91304d232 100644
@@ -423,6 +423,10 @@ static int bcmgenet_mii_register(struct bcmgenet_priv *priv)
 	int id, ret;
 
 	pres = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!pres) {
+		dev_err(&pdev->dev, "Invalid resource\n");
+		return -EINVAL;
+	}
 	memset(&res, 0, sizeof(res));
 	memset(&ppd, 0, sizeof(ppd));
 
drivers/net/ethernet/freescale/fec_main.c +32 -0
index 960def41cc55..2cb73e850a32 100644
@@ -75,6 +75,8 @@ static void fec_enet_itr_coal_init(struct net_device *ndev);
 
 #define DRIVER_NAME	"fec"
 
+static const u16 fec_enet_vlan_pri_to_queue[8] = {0, 0, 1, 1, 1, 2, 2, 2};
+
 /* Pause frame feild and FIFO threshold */
 #define FEC_ENET_FCE	(1 << 5)
 #define FEC_ENET_RSEM_V	0x84
@@ -3222,10 +3224,40 @@ static int fec_set_features(struct net_device *netdev,
 	return 0;
 }
 
+static u16 fec_enet_get_raw_vlan_tci(struct sk_buff *skb)
+{
+	struct vlan_ethhdr *vhdr;
+	unsigned short vlan_TCI = 0;
+
+	if (skb->protocol == htons(ETH_P_ALL)) {
+		vhdr = (struct vlan_ethhdr *)(skb->data);
+		vlan_TCI = ntohs(vhdr->h_vlan_TCI);
+	}
+
+	return vlan_TCI;
+}
+
+static u16 fec_enet_select_queue(struct net_device *ndev, struct sk_buff *skb,
+				 struct net_device *sb_dev)
+{
+	struct fec_enet_private *fep = netdev_priv(ndev);
+	u16 vlan_tag;
+
+	if (!(fep->quirks & FEC_QUIRK_HAS_AVB))
+		return netdev_pick_tx(ndev, skb, NULL);
+
+	vlan_tag = fec_enet_get_raw_vlan_tci(skb);
+	if (!vlan_tag)
+		return vlan_tag;
+
+	return fec_enet_vlan_pri_to_queue[vlan_tag >> 13];
+}
+
 static const struct net_device_ops fec_netdev_ops = {
 	.ndo_open		= fec_enet_open,
 	.ndo_stop		= fec_enet_close,
 	.ndo_start_xmit		= fec_enet_start_xmit,
+	.ndo_select_queue       = fec_enet_select_queue,
 	.ndo_set_rx_mode	= set_multicast_list,
 	.ndo_validate_addr	= eth_validate_addr,
 	.ndo_tx_timeout		= fec_timeout,
drivers/net/ethernet/intel/e100.c +6 -6
index 8cc651d37a7f..609e47b8287d 100644
@@ -1395,7 +1395,7 @@ static int e100_phy_check_without_mii(struct nic *nic)
 	u8 phy_type;
 	int without_mii;
 
-	phy_type = (nic->eeprom[eeprom_phy_iface] >> 8) & 0x0f;
+	phy_type = (le16_to_cpu(nic->eeprom[eeprom_phy_iface]) >> 8) & 0x0f;
 
 	switch (phy_type) {
 	case NoSuchPhy: /* Non-MII PHY; UNTESTED! */
@@ -1515,7 +1515,7 @@ static int e100_phy_init(struct nic *nic)
 		mdio_write(netdev, nic->mii.phy_id, MII_BMCR, bmcr);
 	} else if ((nic->mac >= mac_82550_D102) || ((nic->flags & ich) &&
 	   (mdio_read(netdev, nic->mii.phy_id, MII_TPISTATUS) & 0x8000) &&
-		(nic->eeprom[eeprom_cnfg_mdix] & eeprom_mdix_enabled))) {
+	   (le16_to_cpu(nic->eeprom[eeprom_cnfg_mdix]) & eeprom_mdix_enabled))) {
 		/* enable/disable MDI/MDI-X auto-switching. */
 		mdio_write(netdev, nic->mii.phy_id, MII_NCONFIG,
 				nic->mii.force_media ? 0 : NCONFIG_AUTO_SWITCH);
@@ -2263,9 +2263,9 @@ static int e100_asf(struct nic *nic)
 {
 	/* ASF can be enabled from eeprom */
 	return (nic->pdev->device >= 0x1050) && (nic->pdev->device <= 0x1057) &&
-	   (nic->eeprom[eeprom_config_asf] & eeprom_asf) &&
-	   !(nic->eeprom[eeprom_config_asf] & eeprom_gcl) &&
-	   ((nic->eeprom[eeprom_smbus_addr] & 0xFF) != 0xFE);
+	   (le16_to_cpu(nic->eeprom[eeprom_config_asf]) & eeprom_asf) &&
+	   !(le16_to_cpu(nic->eeprom[eeprom_config_asf]) & eeprom_gcl) &&
+	   ((le16_to_cpu(nic->eeprom[eeprom_smbus_addr]) & 0xFF) != 0xFE);
 }
 
 static int e100_up(struct nic *nic)
@@ -2920,7 +2920,7 @@ static int e100_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
 	/* Wol magic packet can be enabled from eeprom */
 	if ((nic->mac >= mac_82558_D101_A4) &&
-	   (nic->eeprom[eeprom_id] & eeprom_id_wol)) {
+	   (le16_to_cpu(nic->eeprom[eeprom_id]) & eeprom_id_wol)) {
 		nic->flags |= wol_magic;
 		device_set_wakeup_enable(&pdev->dev, true);
 	}
drivers/net/ethernet/intel/i40e/i40e_ptp.c +6 -2
index 7a879614ca55..1dad6c93ac9c 100644
@@ -11,13 +11,14 @@
  * operate with the nanosecond field directly without fear of overflow.
  *
  * Much like the 82599, the update period is dependent upon the link speed:
- * At 40Gb link or no link, the period is 1.6ns.
- * At 10Gb link, the period is multiplied by 2. (3.2ns)
+ * At 40Gb, 25Gb, or no link, the period is 1.6ns.
+ * At 10Gb or 5Gb link, the period is multiplied by 2. (3.2ns)
  * At 1Gb link, the period is multiplied by 20. (32ns)
  * 1588 functionality is not supported at 100Mbps.
  */
 #define I40E_PTP_40GB_INCVAL		0x0199999999ULL
 #define I40E_PTP_10GB_INCVAL_MULT	2
+#define I40E_PTP_5GB_INCVAL_MULT	2
 #define I40E_PTP_1GB_INCVAL_MULT	20
 
 #define I40E_PRTTSYN_CTL1_TSYNTYPE_V1  BIT(I40E_PRTTSYN_CTL1_TSYNTYPE_SHIFT)
@@ -465,6 +466,9 @@ void i40e_ptp_set_increment(struct i40e_pf *pf)
 	case I40E_LINK_SPEED_10GB:
 		mult = I40E_PTP_10GB_INCVAL_MULT;
 		break;
+	case I40E_LINK_SPEED_5GB:
+		mult = I40E_PTP_5GB_INCVAL_MULT;
+		break;
 	case I40E_LINK_SPEED_1GB:
 		mult = I40E_PTP_1GB_INCVAL_MULT;
 		break;
drivers/net/ethernet/intel/ice/ice_ethtool.c +1 -5
index a7975afecf70..14eba9bc174d 100644
@@ -3492,13 +3492,9 @@ static int
 ice_get_rc_coalesce(struct ethtool_coalesce *ec, enum ice_container_type c_type,
 		    struct ice_ring_container *rc)
 {
-	struct ice_pf *pf;
-
 	if (!rc->ring)
 		return -EINVAL;
 
-	pf = rc->ring->vsi->back;
-
 	switch (c_type) {
 	case ICE_RX_CONTAINER:
 		ec->use_adaptive_rx_coalesce = ITR_IS_DYNAMIC(rc->itr_setting);
@@ -3510,7 +3506,7 @@ ice_get_rc_coalesce(struct ethtool_coalesce *ec, enum ice_container_type c_type,
 		ec->tx_coalesce_usecs = rc->itr_setting & ~ICE_ITR_DYNAMIC;
 		break;
 	default:
-		dev_dbg(ice_pf_to_dev(pf), "Invalid c_type %d\n", c_type);
+		dev_dbg(ice_pf_to_dev(rc->ring->vsi->back), "Invalid c_type %d\n", c_type);
 		return -EINVAL;
 	}
 
drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h +2 -2
index 4ec24c3e813f..c0ee0541e53f 100644
@@ -608,7 +608,7 @@ static const struct ice_rx_ptype_decoded ice_ptype_lkup[] = {
 	/* L2 Packet types */
 	ICE_PTT_UNUSED_ENTRY(0),
 	ICE_PTT(1, L2, NONE, NOF, NONE, NONE, NOF, NONE, PAY2),
-	ICE_PTT(2, L2, NONE, NOF, NONE, NONE, NOF, NONE, NONE),
+	ICE_PTT_UNUSED_ENTRY(2),
 	ICE_PTT_UNUSED_ENTRY(3),
 	ICE_PTT_UNUSED_ENTRY(4),
 	ICE_PTT_UNUSED_ENTRY(5),
@@ -722,7 +722,7 @@ static const struct ice_rx_ptype_decoded ice_ptype_lkup[] = {
 	/* Non Tunneled IPv6 */
 	ICE_PTT(88, IP, IPV6, FRG, NONE, NONE, NOF, NONE, PAY3),
 	ICE_PTT(89, IP, IPV6, NOF, NONE, NONE, NOF, NONE, PAY3),
-	ICE_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP,  PAY3),
+	ICE_PTT(90, IP, IPV6, NOF, NONE, NONE, NOF, UDP,  PAY4),
 	ICE_PTT_UNUSED_ENTRY(91),
 	ICE_PTT(92, IP, IPV6, NOF, NONE, NONE, NOF, TCP,  PAY4),
 	ICE_PTT(93, IP, IPV6, NOF, NONE, NONE, NOF, SCTP, PAY4),
drivers/net/ethernet/intel/ice/ice_type.h +1 -1
index 1bed183d96a0..ee3497d25464 100644
@@ -63,7 +63,7 @@ enum ice_aq_res_ids {
 /* FW update timeout definitions are in milliseconds */
 #define ICE_NVM_TIMEOUT			180000
 #define ICE_CHANGE_LOCK_TIMEOUT		1000
-#define ICE_GLOBAL_CFG_LOCK_TIMEOUT	3000
+#define ICE_GLOBAL_CFG_LOCK_TIMEOUT	5000
 
 enum ice_aq_res_access_type {
 	ICE_RES_READ = 1,
drivers/net/ethernet/intel/igb/igb_main.c +5 -4
index 5c87c0a7ce3d..4b9b5148c916 100644
@@ -2643,7 +2643,8 @@ static int igb_parse_cls_flower(struct igb_adapter *adapter,
 			}
 
 			input->filter.match_flags |= IGB_FILTER_FLAG_VLAN_TCI;
-			input->filter.vlan_tci = match.key->vlan_priority;
+			input->filter.vlan_tci =
+				(__force __be16)match.key->vlan_priority;
 		}
 	}
 
@@ -6288,12 +6289,12 @@ int igb_xmit_xdp_ring(struct igb_adapter *adapter,
 	cmd_type |= len | IGB_TXD_DCMD;
 	tx_desc->read.cmd_type_len = cpu_to_le32(cmd_type);
 
-	olinfo_status = cpu_to_le32(len << E1000_ADVTXD_PAYLEN_SHIFT);
+	olinfo_status = len << E1000_ADVTXD_PAYLEN_SHIFT;
 	/* 82575 requires a unique index per ring */
 	if (test_bit(IGB_RING_FLAG_TX_CTX_IDX, &tx_ring->flags))
 		olinfo_status |= tx_ring->reg_idx << 4;
 
-	tx_desc->read.olinfo_status = olinfo_status;
+	tx_desc->read.olinfo_status = cpu_to_le32(olinfo_status);
 
 	netdev_tx_sent_queue(txring_txq(tx_ring), tx_buffer->bytecount);
 
@@ -8617,7 +8618,7 @@ static void igb_process_skb_fields(struct igb_ring *rx_ring,
 
 		if (igb_test_staterr(rx_desc, E1000_RXDEXT_STATERR_LB) &&
 		    test_bit(IGB_RING_FLAG_RX_LB_VLAN_BSWAP, &rx_ring->flags))
-			vid = be16_to_cpu(rx_desc->wb.upper.vlan);
+			vid = be16_to_cpu((__force __be16)rx_desc->wb.upper.vlan);
 		else
 			vid = le16_to_cpu(rx_desc->wb.upper.vlan);
 
drivers/net/ethernet/intel/igbvf/netdev.c +2 -2
index ee9f8c1dca83..07c9e9e0546f 100644
@@ -83,14 +83,14 @@ static int igbvf_desc_unused(struct igbvf_ring *ring)
 static void igbvf_receive_skb(struct igbvf_adapter *adapter,
 			      struct net_device *netdev,
 			      struct sk_buff *skb,
-			      u32 status, u16 vlan)
+			      u32 status, __le16 vlan)
 {
 	u16 vid;
 
 	if (status & E1000_RXD_STAT_VP) {
 		if ((adapter->flags & IGBVF_FLAG_RX_LB_VLAN_BSWAP) &&
 		    (status & E1000_RXDEXT_STATERR_LB))
-			vid = be16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK;
+			vid = be16_to_cpu((__force __be16)vlan) & E1000_RXD_SPC_VLAN_MASK;
 		else
 			vid = le16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK;
 		if (test_bit(vid, adapter->active_vlans))
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +4 -0
index a9f65d667761..ec9b6c564300 100644
@@ -6871,6 +6871,10 @@ static int mvpp2_probe(struct platform_device *pdev)
 			return PTR_ERR(priv->lms_base);
 	} else {
 		res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
+		if (!res) {
+			dev_err(&pdev->dev, "Invalid resource\n");
+			return -EINVAL;
+		}
 		if (has_acpi_companion(&pdev->dev)) {
 			/* In case the MDIO memory region is declared in
 			 * the ACPI, it can already appear as 'in-use'
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +4 -2
index 7e1f8660dfec..f327b78261ec 100644
@@ -1318,7 +1318,8 @@ static void mlx5e_handle_rx_cqe_rep(struct mlx5e_rq *rq, struct mlx5_cqe64 *cqe)
 	if (rep->vlan && skb_vlan_tag_present(skb))
 		skb_vlan_pop(skb);
 
-	if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) {
+	if (unlikely(!mlx5_ipsec_is_rx_flow(cqe) &&
+		     !mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv))) {
 		dev_kfree_skb_any(skb);
 		goto free_wqe;
 	}
@@ -1375,7 +1376,8 @@ static void mlx5e_handle_rx_cqe_mpwrq_rep(struct mlx5e_rq *rq, struct mlx5_cqe64
 
 	mlx5e_complete_rx_cqe(rq, cqe, cqe_bcnt, skb);
 
-	if (!mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv)) {
+	if (unlikely(!mlx5_ipsec_is_rx_flow(cqe) &&
+		     !mlx5e_rep_tc_update_skb(cqe, skb, &tc_priv))) {
 		dev_kfree_skb_any(skb);
 		goto mpwrq_cqe_out;
 	}
drivers/net/ethernet/mellanox/mlx5/core/lag.c +13 -6
index 9025e5f38bb6..fe5476a76464 100644
@@ -118,17 +118,24 @@ static bool __mlx5_lag_is_sriov(struct mlx5_lag *ldev)
 static void mlx5_infer_tx_affinity_mapping(struct lag_tracker *tracker,
 					   u8 *port1, u8 *port2)
 {
+	bool p1en;
+	bool p2en;
+
+	p1en = tracker->netdev_state[MLX5_LAG_P1].tx_enabled &&
+	       tracker->netdev_state[MLX5_LAG_P1].link_up;
+
+	p2en = tracker->netdev_state[MLX5_LAG_P2].tx_enabled &&
+	       tracker->netdev_state[MLX5_LAG_P2].link_up;
+
 	*port1 = 1;
 	*port2 = 2;
-	if (!tracker->netdev_state[MLX5_LAG_P1].tx_enabled ||
-	    !tracker->netdev_state[MLX5_LAG_P1].link_up) {
-		*port1 = 2;
+	if ((!p1en && !p2en) || (p1en && p2en))
 		return;
-	}
 
-	if (!tracker->netdev_state[MLX5_LAG_P2].tx_enabled ||
-	    !tracker->netdev_state[MLX5_LAG_P2].link_up)
+	if (p1en)
 		*port2 = 1;
+	else
+		*port1 = 2;
 }
 
 void mlx5_modify_lag(struct mlx5_lag *ldev,
drivers/net/ethernet/micrel/ks8842.c +4 -0
index caa251d0e381..b27713906d3a 100644
@@ -1135,6 +1135,10 @@ static int ks8842_probe(struct platform_device *pdev)
 	unsigned i;
 
 	iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!iomem) {
+		dev_err(&pdev->dev, "Invalid resource\n");
+		return -EINVAL;
+	}
 	if (!request_mem_region(iomem->start, resource_size(iomem), DRV_NAME))
 		goto err_mem_region;
 
drivers/net/ethernet/moxa/moxart_ether.c +2 -3
index 49fd843c4c8a..a4380c45f668 100644
@@ -481,14 +481,13 @@ static int moxart_mac_probe(struct platform_device *pdev)
 	priv->ndev = ndev;
 	priv->pdev = pdev;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	ndev->base_addr = res->start;
-	priv->base = devm_ioremap_resource(p_dev, res);
+	priv->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
 	if (IS_ERR(priv->base)) {
 		dev_err(p_dev, "devm_ioremap_resource failed\n");
 		ret = PTR_ERR(priv->base);
 		goto init_fail;
 	}
+	ndev->base_addr = res->start;
 
 	spin_lock_init(&priv->txlock);
 
drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +6 -13
index 9a0870dc2f03..2942102efd48 100644
@@ -107,7 +107,7 @@ static int pch_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid)
 {
 	u8 *data = skb->data;
 	unsigned int offset;
-	u16 *hi, *id;
+	u16 hi, id;
 	u32 lo;
 
 	if (ptp_classify_raw(skb) == PTP_CLASS_NONE)
@@ -118,14 +118,11 @@ static int pch_ptp_match(struct sk_buff *skb, u16 uid_hi, u32 uid_lo, u16 seqid)
 	if (skb->len < offset + OFF_PTP_SEQUENCE_ID + sizeof(seqid))
 		return 0;
 
-	hi = (u16 *)(data + offset + OFF_PTP_SOURCE_UUID);
-	id = (u16 *)(data + offset + OFF_PTP_SEQUENCE_ID);
+	hi = get_unaligned_be16(data + offset + OFF_PTP_SOURCE_UUID + 0);
+	lo = get_unaligned_be32(data + offset + OFF_PTP_SOURCE_UUID + 2);
+	id = get_unaligned_be16(data + offset + OFF_PTP_SEQUENCE_ID);
 
-	memcpy(&lo, &hi[1], sizeof(lo));
-
-	return (uid_hi == *hi &&
-		uid_lo == lo &&
-		seqid  == *id);
+	return (uid_hi == hi && uid_lo == lo && seqid == id);
 }
 
 static void
@@ -135,7 +132,6 @@ pch_rx_timestamp(struct pch_gbe_adapter *adapter, struct sk_buff *skb)
 	struct pci_dev *pdev;
 	u64 ns;
 	u32 hi, lo, val;
-	u16 uid, seq;
 
 	if (!adapter->hwts_rx_en)
 		return;
@@ -151,10 +147,7 @@ pch_rx_timestamp(struct pch_gbe_adapter *adapter, struct sk_buff *skb)
 	lo = pch_src_uuid_lo_read(pdev);
 	hi = pch_src_uuid_hi_read(pdev);
 
-	uid = hi & 0xffff;
-	seq = (hi >> 16) & 0xffff;
-
-	if (!pch_ptp_match(skb, htons(uid), htonl(lo), htons(seq)))
+	if (!pch_ptp_match(skb, hi, lo, hi >> 16))
 		goto out;
 
 	ns = pch_rx_snap_read(pdev);
drivers/net/ethernet/realtek/r8169_main.c +0 -1
index a6bf80b52967..9010aabd9782 100644
@@ -3547,7 +3547,6 @@ static void rtl_hw_start_8106(struct rtl8169_private *tp)
 	rtl_eri_write(tp, 0x1b0, ERIAR_MASK_0011, 0x0000);
 
 	rtl_pcie_state_l2l3_disable(tp);
-	rtl_hw_aspm_clkreq_enable(tp, true);
 }
 
 DECLARE_RTL_COND(rtl_mac_ocp_e00e_cond)
drivers/net/ethernet/sfc/ef10_sriov.c +12 -13
index 21fa6c0e8873..84041cd587d7 100644
@@ -402,12 +402,17 @@ static int efx_ef10_pci_sriov_enable(struct efx_nic *efx, int num_vfs)
 	return rc;
 }
 
+/* Disable SRIOV and remove VFs
+ * If some VFs are attached to a guest (using Xen, only) nothing is
+ * done if force=false, and vports are freed if force=true (for the non
+ * attachedc ones, only) but SRIOV is not disabled and VFs are not
+ * removed in either case.
+ */
 static int efx_ef10_pci_sriov_disable(struct efx_nic *efx, bool force)
 {
 	struct pci_dev *dev = efx->pci_dev;
-	unsigned int vfs_assigned = 0;
-
-	vfs_assigned = pci_vfs_assigned(dev);
+	unsigned int vfs_assigned = pci_vfs_assigned(dev);
+	int rc = 0;
 
 	if (vfs_assigned && !force) {
 		netif_info(efx, drv, efx->net_dev, "VFs are assigned to guests; "
@@ -417,10 +422,12 @@ static int efx_ef10_pci_sriov_disable(struct efx_nic *efx, bool force)
 
 	if (!vfs_assigned)
 		pci_disable_sriov(dev);
+	else
+		rc = -EBUSY;
 
 	efx_ef10_sriov_free_vf_vswitching(efx);
 	efx->vf_count = 0;
-	return 0;
+	return rc;
 }
 
 int efx_ef10_sriov_configure(struct efx_nic *efx, int num_vfs)
@@ -439,7 +446,6 @@ int efx_ef10_sriov_init(struct efx_nic *efx)
 void efx_ef10_sriov_fini(struct efx_nic *efx)
 {
 	struct efx_ef10_nic_data *nic_data = efx->nic_data;
-	unsigned int i;
 	int rc;
 
 	if (!nic_data->vf) {
@@ -449,14 +455,7 @@ void efx_ef10_sriov_fini(struct efx_nic *efx)
 		return;
 	}
 
-	/* Remove any VFs in the host */
-	for (i = 0; i < efx->vf_count; ++i) {
-		struct efx_nic *vf_efx = nic_data->vf[i].efx;
-
-		if (vf_efx)
-			vf_efx->pci_dev->driver->remove(vf_efx->pci_dev);
-	}
-
+	/* Disable SRIOV and remove any VFs in the host */
 	rc = efx_ef10_pci_sriov_disable(efx, true);
 	if (rc)
 		netif_dbg(efx, drv, efx->net_dev,
drivers/net/ethernet/sgi/ioc3-eth.c +4 -0
index 6eef0f45b133..2b29fd4cbdf4 100644
@@ -835,6 +835,10 @@ static int ioc3eth_probe(struct platform_device *pdev)
 	int err;
 
 	regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!regs) {
+		dev_err(&pdev->dev, "Invalid resource\n");
+		return -EINVAL;
+	}
 	/* get mac addr from one wire prom */
 	if (ioc3eth_get_mac_addr(regs, mac_addr))
 		return -EPROBE_DEFER; /* not available yet */
drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +15 -6
index b2a707e2ef43..678726c62a8a 100644
@@ -441,6 +441,12 @@ int stmmac_mdio_register(struct net_device *ndev)
 		found = 1;
 	}
 
+	if (!found && !mdio_node) {
+		dev_warn(dev, "No PHY found\n");
+		err = -ENODEV;
+		goto no_phy_found;
+	}
+
 	/* Try to probe the XPCS by scanning all addresses. */
 	if (priv->hw->xpcs) {
 		struct mdio_xpcs_args *xpcs = &priv->hw->xpcs_args;
@@ -449,6 +455,7 @@ int stmmac_mdio_register(struct net_device *ndev)
 
 		xpcs->bus = new_bus;
 
+		found = 0;
 		for (addr = 0; addr < max_addr; addr++) {
 			xpcs->addr = addr;
 
@@ -458,13 +465,12 @@ int stmmac_mdio_register(struct net_device *ndev)
 				break;
 			}
 		}
-	}
 
-	if (!found && !mdio_node) {
-		dev_warn(dev, "No PHY found\n");
-		mdiobus_unregister(new_bus);
-		mdiobus_free(new_bus);
-		return -ENODEV;
+		if (!found && !mdio_node) {
+			dev_warn(dev, "No XPCS found\n");
+			err = -ENODEV;
+			goto no_xpcs_found;
+		}
 	}
 
 bus_register_done:
@@ -472,6 +478,9 @@ int stmmac_mdio_register(struct net_device *ndev)
 
 	return 0;
 
+no_xpcs_found:
+no_phy_found:
+	mdiobus_unregister(new_bus);
 bus_register_fail:
 	mdiobus_free(new_bus);
 	return err;
drivers/net/fjes/fjes_main.c +4 -0
index 466622664424..e449d9466122 100644
@@ -1262,6 +1262,10 @@ static int fjes_probe(struct platform_device *plat_dev)
 	adapter->interrupt_watch_enable = false;
 
 	res = platform_get_resource(plat_dev, IORESOURCE_MEM, 0);
+	if (!res) {
+		err = -EINVAL;
+		goto err_free_control_wq;
+	}
 	hw->hw_res.start = res->start;
 	hw->hw_res.size = resource_size(res);
 	hw->hw_res.irq = platform_get_irq(plat_dev, 0);
drivers/net/ipa/ipa_main.c +1 -0
index cd4d993b0bbb..4162a608a3bf 100644
@@ -589,6 +589,7 @@ static int ipa_firmware_load(struct device *dev)
 	}
 
 	ret = of_address_to_resource(node, 0, &res);
+	of_node_put(node);
 	if (ret) {
 		dev_err(dev, "error %d getting \"memory-region\" resource\n",
 			ret);
drivers/net/mdio/mdio-ipq8064.c +24 -9
index 1bd18857e1c5..f0a6bfa61645 100644
@@ -10,7 +10,7 @@
 #include <linux/module.h>
 #include <linux/regmap.h>
 #include <linux/of_mdio.h>
-#include <linux/phy.h>
+#include <linux/of_address.h>
 #include <linux/platform_device.h>
 #include <linux/mfd/syscon.h>
 
@@ -96,14 +96,34 @@ ipq8064_mdio_write(struct mii_bus *bus, int phy_addr, int reg_offset, u16 data)
 	return ipq8064_mdio_wait_busy(priv);
 }
 
+static const struct regmap_config ipq8064_mdio_regmap_config = {
+	.reg_bits = 32,
+	.reg_stride = 4,
+	.val_bits = 32,
+	.can_multi_write = false,
+	/* the mdio lock is used by any user of this mdio driver */
+	.disable_locking = true,
+
+	.cache_type = REGCACHE_NONE,
+};
+
 static int
 ipq8064_mdio_probe(struct platform_device *pdev)
 {
 	struct device_node *np = pdev->dev.of_node;
 	struct ipq8064_mdio *priv;
+	struct resource res;
 	struct mii_bus *bus;
+	void __iomem *base;
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/net/phy/realtek.c +14 -1
index 575580d3ffe0..b4879306bb8a 100644

Lines of this file are not shown. View the raw message.

drivers/net/virtio_net.c +14 -8
index 286f836a53bf..91e0e6254a01 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ath/ath11k/mac.c +2 -2
index cc0c30ceaa0d..63d70aecbd0f 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +18 -6
index d42165559df6..8cba923b1ec6 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/intel/iwlwifi/mvm/time-event.c +4 -0
index 3939eccd3d5a..394598b14a17 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +10 -5
index ec1d6025081d..56f63f5f5dd3 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/intel/iwlwifi/pcie/internal.h +3 -0
index ff542d2f0054..f05025e8d11d 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/intel/iwlwifi/pcie/trans-gen2.c +2 -1
index 4c3ca2a37696..b031e9304983 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mac80211_hwsim.c +38 -10

48 lines not on this page · raw message

drivers/net/wireless/mediatek/mt76/mt7615/mac.c +4 -6
index 5795e44f8a52..f44f478bb970 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/mediatek/mt76/mt7915/init.c +3 -3
index 0232b66acb4f..8f01ca1694bc 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h +3 -8
index d6d1be4169e5..acb6b0cd3667 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu_8192e.c +53 -6

59 lines not on this page · raw message

drivers/net/wireless/st/cw1200/cw1200_sdio.c +1 -0
index b65ec14136c7..4c30b5772ce0 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ti/wl1251/cmd.c +6 -3
index 9547aea01b0f..ea0215246c5c 100644

Lines of this file are not shown. View the raw message.

drivers/net/wireless/ti/wl12xx/main.c +7 -0
index 9d7dbfe7fe0c..c6da0cfb4afb 100644

Lines of this file are not shown. View the raw message.

drivers/nvmem/core.c +6 -3
index 9b6ab83956c3..bb8fb2b3711d 100644

Lines of this file are not shown. View the raw message.

drivers/pci/controller/pci-aardvark.c +12 -1
index 41be72c74e3a..b1b41b61e0bd 100644

Lines of this file are not shown. View the raw message.

drivers/pci/quirks.c +11 -0
index 16fb3d7714d5..41bcdfac03d8 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/pinctrl-amd.c +1 -0
index 899c16c17b6d..ef49402c0623 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/pinctrl-equilibrium.c +1 -0
index 067271b7d35a..ac1c47f542c1 100644

Lines of this file are not shown. View the raw message.

drivers/pinctrl/pinctrl-mcp23s08.c +5 -5
index ce2d8014b7e0..d0259577934e 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/libiscsi.c +3 -23
index 41b8192d207d..41023fc4bf2d 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/scsi_transport_iscsi.c +26 -2
index c520239082fc..2735178f15c7 100644

Lines of this file are not shown. View the raw message.

drivers/thermal/intel/int340x_thermal/processor_thermal_device.c +12 -8
index 81e8b15ef405..74158fa660dd 100644

Lines of this file are not shown. View the raw message.

fs/ext4/ext4.h +4 -0
index 7cae226b000f..115a77b96e5e 100644

Lines of this file are not shown. View the raw message.

fs/ext4/mmp.c +13 -15
index 68fbeedd627b..6cb598b549ca 100644

Lines of this file are not shown. View the raw message.

fs/ext4/super.c +4 -6
index 4956917b7cc2..099e4afa41e5 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/f2fs.h +2 -0
index 69a390c6064c..2d7799bd30b1 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/recovery.c +14 -9
index 4f12ade6410a..72ce13111679 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/super.c +7 -1
index abc469dd9aea..4af02719bb14 100644

Lines of this file are not shown. View the raw message.

fs/io-wq.c +4 -1
index f72d53848dcb..8bb17b6d4de3 100644

Lines of this file are not shown. View the raw message.

fs/io_uring.c +50 -68

118 lines not on this page · raw message

fs/jfs/inode.c +2 -1
index 6f65bfa9f18d..b0eb9c85eea0 100644

Lines of this file are not shown. View the raw message.

fs/reiserfs/journal.c +14 -0
index e98f99338f8f..df5fc12a6cee 100644

Lines of this file are not shown. View the raw message.

fs/ubifs/super.c +1 -0
index dacbb999ae34..cfd46753a685 100644

Lines of this file are not shown. View the raw message.

fs/ubifs/ubifs.h +2 -0
index 4ffd832e3b93..e7e48f3b179a 100644

Lines of this file are not shown. View the raw message.

fs/ubifs/xattr.c +33 -11

44 lines not on this page · raw message

fs/udf/namei.c +4 -0
index e169d8fe35b5..f4a72ff8cf95 100644

Lines of this file are not shown. View the raw message.

include/linux/mfd/abx500/ux500_chargalg.h +1 -1
index 9b97d284d0ce..bc3819dc33e1 100644

Lines of this file are not shown. View the raw message.

include/linux/netdev_features.h +1 -1
index 0b17c4322b09..f96b7f8d82e5 100644

Lines of this file are not shown. View the raw message.

include/linux/of_mdio.h +7 -0
index cfe8c607a628..f56c6a9230ac 100644

Lines of this file are not shown. View the raw message.

include/linux/wait.h +1 -1
index 27fb99cfeb02..f8b0704968a1 100644

Lines of this file are not shown. View the raw message.

include/media/v4l2-subdev.h +4 -0
index 1de960bfcab9..73150520c02d 100644

Lines of this file are not shown. View the raw message.

include/net/flow_offload.h +7 -5
index 123b1e9ea304..161b90979038 100644

Lines of this file are not shown. View the raw message.

include/net/sctp/structs.h +1 -1
index 0bdff38eb4bb..51d698f2656f 100644

Lines of this file are not shown. View the raw message.

include/scsi/scsi_transport_iscsi.h +1 -0
index 8a26a2ffa952..fc5a39839b4b 100644

Lines of this file are not shown. View the raw message.

include/uapi/linux/ethtool.h +2 -2
index cde753bb2093..13772f039c8d 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/core.c +43 -18

61 lines not on this page · raw message

kernel/bpf/ringbuf.c +2 -0
index add0b34f2b34..f9913bc65ef8 100644

Lines of this file are not shown. View the raw message.

kernel/cpu.c +49 -0

49 lines not on this page · raw message

kernel/sched/fair.c +3 -3
index 3d92de7909bf..32c0905bca84 100644

Lines of this file are not shown. View the raw message.

kernel/sched/wait.c +7 -2
index 01f5d3020589..21005b980a6b 100644

Lines of this file are not shown. View the raw message.

kernel/trace/trace.c +55 -36

91 lines not on this page · raw message

lib/seq_buf.c +3 -1
index 89c26c393bdb..6dafde851333 100644

Lines of this file are not shown. View the raw message.

mm/memory-failure.c +3 -3
index 25fb82320e3d..01445ddff58d 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_core.c +8 -8
index 86ebfc6ae698..0854f1b35683 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_event.c +3 -3
index d62ac4b73709..e59ae24a8f17 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/l2cap_core.c +4 -4
index cdc386337173..0ddbc415ce15 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/mgmt.c +5 -0
index 13520c7b4f2f..31a585fe0c7c 100644

Lines of this file are not shown. View the raw message.

net/bridge/br_mrp.c +2 -4
index d1336a7ad7ff..3259f5480127 100644

Lines of this file are not shown. View the raw message.

net/core/dev.c +9 -2
index 0c9ce36afc8c..2fdf30eefc59 100644

Lines of this file are not shown. View the raw message.

net/ipv4/ip_output.c +18 -14
index 97975bed491a..560d5dc43562 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_input.c +26 -19

45 lines not on this page · raw message

net/ipv6/ip6_output.c +17 -15
index 077d43af8226..e889655ca0e2 100644

Lines of this file are not shown. View the raw message.

net/ipv6/output_core.c +5 -23
index af36acc1a644..2880dc7d9a49 100644

Lines of this file are not shown. View the raw message.

net/mac80211/sta_info.c +3 -8
index 13250cadb420..e18c3855f616 100644

Lines of this file are not shown. View the raw message.

net/sched/act_api.c +2 -1
index 88e14cfeb5d5..f613299ca7f0 100644

Lines of this file are not shown. View the raw message.

net/sched/cls_api.c +1 -1
index a281da07bb1d..30090794b791 100644

Lines of this file are not shown. View the raw message.

net/sctp/bind_addr.c +11 -8
index 53e5ed79f63f..59e653b528b1 100644

Lines of this file are not shown. View the raw message.

net/sctp/input.c +5 -3
index d508f6f3dd08..f72bff93745c 100644

Lines of this file are not shown. View the raw message.

net/sctp/ipv6.c +6 -1
index c8074f435d3e..d594b949ae82 100644

Lines of this file are not shown. View the raw message.

net/sctp/protocol.c +6 -1
index 25833238fe93..47fb87ce489f 100644

Lines of this file are not shown. View the raw message.

net/sctp/sm_make_chunk.c +16 -13
index b9d6babe2870..7411fa442821 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/af_vsock.c +1 -1
index cf86c1376b1a..326250513570 100644

Lines of this file are not shown. View the raw message.

net/wireless/nl80211.c +4 -5
index daf3f29c7f0c..8fb0478888fb 100644

Lines of this file are not shown. View the raw message.

net/wireless/wext-spy.c +7 -7
index 33bef22e44e9..b379a0371653 100644

Lines of this file are not shown. View the raw message.

net/xfrm/xfrm_user.c +14 -14
index d0c32a8fcc4a..45f86a97eaf2 100644

Lines of this file are not shown. View the raw message.

security/selinux/avc.c +7 -6
index 3c05827608b6..884a014ce2b8 100644

Lines of this file are not shown. View the raw message.

security/smack/smackfs.c +2 -0
index 334299357e71..b88c1a953833 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_alc5632.c +1 -0
index 8661877bf4c6..13a956c6077b 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_max98090.c +1 -0
index 9d8e16473ab9..2fdf46bad2bf 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_rt5640.c +1 -0
index c73bd23b3d67..6c2689f5da22 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_rt5677.c +1 -0
index 7504507dd8b8..0588889d081a 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_sgtl5000.c +1 -0
index e1dc8e7d337a..3d35a57d8c0c 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_wm8753.c +1 -0
index fa41fa366daf..bdddda4eb913 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_wm8903.c +1 -0
index ef6652aaac9b..98adf93fb898 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/tegra_wm9712.c +1 -0
index 726edfa21a29..df7662258bc6 100644

Lines of this file are not shown. View the raw message.

sound/soc/tegra/trimslice.c +1 -0
index baae4cce7fc6..d8fbb22482d5 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_drops.sh +3 -0
index f5abb1ebd392..269b2680611b 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/drivers/net/mlxsw/devlink_trap_l3_exceptions.sh +3 -0
index 1fedfc9da434..1d157b1bd838 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/drivers/net/mlxsw/qos_dscp_bridge.sh +2 -0
index 5cbff8038f84..28a570006d4d 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/lkdtm/tests.txt +1 -1
index 74a8d329a72c..9b84cba9e911 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/forwarding/pedit_dsfield.sh +2 -0
index 55eeacf59241..64fbd211d907 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/forwarding/pedit_l4port.sh +2 -0
index 5f20d289ee43..10e594c55117 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/forwarding/skbedit_priority.sh +2 -0
index e3bd8a6bb8b4..bde11dc27873 100755

Lines of this file are not shown. View the raw message.

tools/testing/selftests/resctrl/README +1 -1
index 6e5a0ffa18e8..20502cb4791f 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/resctrl/resctrl_tests.c +2 -2
index ac2269610aa9..bd98746c6f85 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.