Skip to contentSkip to conversation

Linux 5.10.238

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jun 4, 2025 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.10.238 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

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

 Documentation/admin-guide/kernel-parameters.txt            |    2 
 Makefile                                                   |   14 
 arch/arm/boot/dts/tegra114.dtsi                            |    2 
 arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi             |    2 
 arch/arm64/include/asm/pgtable.h                           |    3 
 arch/mips/include/asm/ftrace.h                             |   16 
 arch/mips/include/asm/ptrace.h                             |    3 
 arch/mips/kernel/pm-cps.c                                  |   30 +
 arch/parisc/math-emu/driver.c                              |   16 
 arch/powerpc/kernel/prom_init.c                            |    4 
 arch/um/Makefile                                           |    1 
 arch/um/kernel/mem.c                                       |    1 
 arch/x86/events/amd/ibs.c                                  |    3 
 arch/x86/include/asm/nmi.h                                 |    2 
 arch/x86/include/asm/perf_event.h                          |    1 
 arch/x86/kernel/cpu/bugs.c                                 |   10 
 arch/x86/kernel/nmi.c                                      |   42 ++
 arch/x86/kernel/reboot.c                                   |   10 
 arch/x86/um/os-Linux/mcontext.c                            |    3 
 crypto/algif_hash.c                                        |    4 
 drivers/acpi/Kconfig                                       |    2 
 drivers/acpi/hed.c                                         |    7 
 drivers/acpi/pptt.c                                        |   11 
 drivers/char/tpm/tpm_tis_core.h                            |    2 
 drivers/clk/imx/clk-imx8mp.c                               |  151 +++++++++
 drivers/clocksource/i8253.c                                |    6 
 drivers/clocksource/mips-gic-timer.c                       |    6 
 drivers/cpuidle/governors/menu.c                           |   13 
 drivers/dma/dmatest.c                                      |    6 
 drivers/dma/ti/k3-udma.c                                   |   10 
 drivers/edac/altera_edac.c                                 |    9 
 drivers/edac/altera_edac.h                                 |    2 
 drivers/edac/ie31200_edac.c                                |   28 -
 drivers/fpga/altera-cvp.c                                  |    2 
 drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c                   |   10 
 drivers/gpu/drm/amd/amdkfd/kfd_process.c                   |   16 
 drivers/gpu/drm/amd/display/dc/core/dc.c                   |    1 
 drivers/gpu/drm/ast/ast_mode.c                             |   10 
 drivers/gpu/drm/drm_atomic_helper.c                        |   28 +
 drivers/gpu/drm/drm_edid.c                                 |    1 
 drivers/gpu/drm/i915/gvt/opregion.c                        |    8 
 drivers/gpu/drm/mediatek/mtk_dpi.c                         |    5 
 drivers/gpu/drm/meson/meson_vclk.c                         |    6 
 drivers/gpu/drm/nouveau/nouveau_fence.c                    |    2 
 drivers/gpu/drm/panel/panel-simple.c                       |   25 -
 drivers/gpu/drm/vmwgfx/vmwgfx_fence.c                      |   17 -
 drivers/hid/hid-ids.h                                      |    4 
 drivers/hid/hid-quirks.c                                   |    2 
 drivers/hid/usbhid/usbkbd.c                                |    2 
 drivers/hwmon/gpio-fan.c                                   |   16 
 drivers/hwmon/xgene-hwmon.c                                |    2 
 drivers/i2c/busses/i2c-imx-lpi2c.c                         |    4 
 drivers/i2c/busses/i2c-pxa.c                               |    5 
 drivers/i2c/busses/i2c-qup.c                               |   36 ++
 drivers/iio/accel/adis16201.c                              |    4 
 drivers/iio/adc/ad7606_spi.c                               |    2 
 drivers/iio/adc/ad7768-1.c                                 |    2 
 drivers/iio/adc/dln2-adc.c                                 |    2 
 drivers/iio/chemical/sps30.c                               |    2 
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c             |    6 
 drivers/infiniband/sw/rxe/rxe_cq.c                         |    5 
 drivers/input/mouse/synaptics.c                            |    5 
 drivers/iommu/amd/init.c                                   |    8 
 drivers/iommu/intel/iommu.c                                |    4 
 drivers/irqchip/irq-gic-v2m.c                              |    8 
 drivers/mailbox/mailbox.c                                  |    7 
 drivers/md/dm-cache-target.c                               |   24 +
 drivers/md/dm-integrity.c                                  |    2 
 drivers/md/dm-table.c                                      |    9 
 drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c      |    3 
 drivers/media/usb/cx231xx/cx231xx-417.c                    |    2 
 drivers/media/v4l2-core/v4l2-subdev.c                      |    2 
 drivers/mmc/host/renesas_sdhi_core.c                       |   10 
 drivers/mmc/host/sdhci-pci-core.c                          |    6 
 drivers/mmc/host/sdhci.c                                   |    9 
 drivers/net/bonding/bond_main.c                            |    2 
 drivers/net/can/c_can/c_can_platform.c                     |    2 
 drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c             |    2 
 drivers/net/dsa/b53/b53_common.c                           |   11 
 drivers/net/dsa/sja1105/sja1105_main.c                     |    6 
 drivers/net/ethernet/amd/xgbe/xgbe-desc.c                  |    9 
 drivers/net/ethernet/amd/xgbe/xgbe-dev.c                   |   24 +
 drivers/net/ethernet/amd/xgbe/xgbe-drv.c                   |   11 
 drivers/net/ethernet/amd/xgbe/xgbe.h                       |    4 
 drivers/net/ethernet/apm/xgene-v2/main.c                   |    4 
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c          |   36 +-
 drivers/net/ethernet/cadence/macb_main.c                   |   19 -
 drivers/net/ethernet/dlink/dl2k.c                          |    2 
 drivers/net/ethernet/dlink/dl2k.h                          |    2 
 drivers/net/ethernet/freescale/fec_main.c                  |    7 
 drivers/net/ethernet/intel/ice/ice_arfs.c                  |    9 
 drivers/net/ethernet/intel/ice/ice_lib.c                   |    5 
 drivers/net/ethernet/intel/ice/ice_main.c                  |   20 -
 drivers/net/ethernet/mellanox/mlx4/alloc.c                 |    6 
 drivers/net/ethernet/mellanox/mlx4/en_tx.c                 |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en_rep.c           |    5 
 drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c      |    3 
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c |    5 
 drivers/net/ethernet/mellanox/mlx5/core/events.c           |   11 
 drivers/net/ethernet/mellanox/mlx5/core/health.c           |    1 
 drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c          |    1 
 drivers/net/ethernet/mellanox/mlx5/core/rdma.c             |   12 
 drivers/net/ethernet/mellanox/mlx5/core/rdma.h             |    4 
 drivers/net/ethernet/microchip/lan743x_main.c              |    8 
 drivers/net/ethernet/microchip/lan743x_main.h              |    1 
 drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c   |    7 
 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c          |    2 
 drivers/net/ethernet/ti/cpsw_new.c                         |    1 
 drivers/net/ieee802154/ca8210.c                            |    9 
 drivers/net/vxlan/vxlan_core.c                             |   18 -
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c     |    6 
 drivers/net/wireless/mediatek/mt76/dma.c                   |    1 
 drivers/net/wireless/realtek/rtw88/main.c                  |   40 --
 drivers/net/wireless/realtek/rtw88/reg.h                   |    3 
 drivers/net/wireless/realtek/rtw88/rtw8822b.c              |   14 
 drivers/net/wireless/realtek/rtw88/util.c                  |    3 
 drivers/nvdimm/label.c                                     |    3 
 drivers/nvme/host/core.c                                   |    3 
 drivers/nvme/host/tcp.c                                    |   31 +
 drivers/nvme/target/tcp.c                                  |    3 
 drivers/of/device.c                                        |    7 
 drivers/pci/controller/dwc/pci-imx6.c                      |    5 
 drivers/pci/controller/pcie-brcmstb.c                      |    5 
 drivers/pci/setup-bus.c                                    |    6 
 drivers/perf/arm-cmn.c                                     |    2 
 drivers/phy/phy-core.c                                     |    7 
 drivers/phy/renesas/phy-rcar-gen3-usb2.c                   |    7 
 drivers/phy/tegra/xusb.c                                   |    8 
 drivers/pinctrl/bcm/pinctrl-bcm281xx.c                     |   44 +-
 drivers/pinctrl/devicetree.c                               |   10 
 drivers/pinctrl/meson/pinctrl-meson.c                      |    2 
 drivers/platform/x86/asus-wmi.c                            |    3 
 drivers/platform/x86/fujitsu-laptop.c                      |   33 +-
 drivers/platform/x86/thinkpad_acpi.c                       |    7 
 drivers/regulator/ad5398.c                                 |   12 
 drivers/rtc/rtc-ds1307.c                                   |    4 
 drivers/rtc/rtc-rv3032.c                                   |    2 
 drivers/scsi/lpfc/lpfc_hbadisc.c                           |   17 -
 drivers/scsi/mpt3sas/mpt3sas_ctl.c                         |   12 
 drivers/scsi/st.c                                          |   29 +
 drivers/scsi/st.h                                          |    2 
 drivers/soc/ti/k3-socinfo.c                                |   13 
 drivers/spi/spi-fsl-dspi.c                                 |   46 ++
 drivers/spi/spi-loopback-test.c                            |    2 
 drivers/spi/spi-sun4i.c                                    |    5 
 drivers/spi/spi-zynqmp-gqspi.c                             |   20 -
 drivers/staging/axis-fifo/axis-fifo.c                      |   14 
 drivers/staging/iio/adc/ad7816.c                           |    2 
 drivers/target/iscsi/iscsi_target.c                        |    2 
 drivers/target/target_core_file.c                          |    3 
 drivers/target/target_core_iblock.c                        |    4 
 drivers/target/target_core_sbc.c                           |    6 
 drivers/thermal/qoriq_thermal.c                            |   13 
 drivers/usb/chipidea/ci_hdrc_imx.c                         |   36 +-
 drivers/usb/class/usbtmc.c                                 |   59 ++-
 drivers/usb/gadget/udc/tegra-xudc.c                        |    4 
 drivers/usb/host/uhci-platform.c                           |    2 
 drivers/usb/host/xhci-tegra.c                              |    3 
 drivers/usb/typec/altmodes/displayport.c                   |   18 -
 drivers/usb/typec/tcpm/tcpm.c                              |    2 
 drivers/usb/typec/ucsi/displayport.c                       |    2 
 drivers/usb/typec/ucsi/ucsi_ccg.c                          |    5 
 drivers/video/fbdev/core/bitblit.c                         |    5 
 drivers/video/fbdev/core/fbcon.c                           |   10 
 drivers/video/fbdev/core/fbcon.h                           |   38 --
 drivers/video/fbdev/core/fbcon_ccw.c                       |    5 
 drivers/video/fbdev/core/fbcon_cw.c                        |    5 
 drivers/video/fbdev/core/fbcon_ud.c                        |    5 
 drivers/video/fbdev/core/tileblit.c                        |   45 ++
 drivers/video/fbdev/fsl-diu-fb.c                           |    1 
 drivers/xen/platform-pci.c                                 |    4 
 drivers/xen/swiotlb-xen.c                                  |   18 -
 drivers/xen/xenbus/xenbus.h                                |    2 
 drivers/xen/xenbus/xenbus_comms.c                          |    9 
 drivers/xen/xenbus/xenbus_dev_frontend.c                   |    2 
 drivers/xen/xenbus/xenbus_probe.c                          |   14 
 drivers/xen/xenbus/xenbus_xs.c                             |   18 -
 fs/btrfs/extent-tree.c                                     |   25 +
 fs/btrfs/extent_io.c                                       |    7 
 fs/btrfs/send.c                                            |    6 
 fs/cifs/readdir.c                                          |    7 
 fs/coredump.c                                              |   81 ++++-
 fs/ext4/balloc.c                                           |    4 
 fs/namespace.c                                             |    9 
 fs/nfs/delegation.c                                        |    3 
 fs/nfs/filelayout/filelayoutdev.c                          |    6 
 fs/nfs/flexfilelayout/flexfilelayout.c                     |    1 
 fs/nfs/flexfilelayout/flexfilelayoutdev.c                  |    6 
 fs/nfs/nfs4proc.c                                          |    9 
 fs/nfs/nfs4state.c                                         |   10 
 fs/nfs/pnfs.c                                              |    9 
 fs/nfs/pnfs.h                                              |    4 
 fs/nfs/pnfs_nfs.c                                          |    9 
 fs/ocfs2/journal.c                                         |   80 +++-
 fs/ocfs2/journal.h                                         |    1 
 fs/ocfs2/ocfs2.h                                           |   17 -
 fs/ocfs2/quota_local.c                                     |    9 
 fs/ocfs2/super.c                                           |    3 
 fs/orangefs/inode.c                                        |    7 
 include/drm/drm_atomic.h                                   |   23 +
 include/linux/binfmts.h                                    |    1 
 include/linux/dma-mapping.h                                |   12 
 include/linux/ipv6.h                                       |    1 
 include/linux/mlx4/device.h                                |    2 
 include/linux/pid.h                                        |    1 
 include/linux/rcupdate.h                                   |    3 
 include/linux/rcutree.h                                    |    2 
 include/linux/tpm.h                                        |    2 
 include/linux/types.h                                      |    3 
 include/media/v4l2-subdev.h                                |    4 
 include/net/netfilter/nf_tables.h                          |    2 
 include/net/sch_generic.h                                  |   15 
 include/sound/pcm.h                                        |    2 
 include/trace/events/btrfs.h                               |    2 
 include/uapi/linux/types.h                                 |    1 
 kernel/cgroup/cgroup.c                                     |    2 
 kernel/fork.c                                              |   98 +++++-
 kernel/padata.c                                            |    3 
 kernel/params.c                                            |    4 
 kernel/rcu/tree_plugin.h                                   |   11 
 kernel/time/posix-timers.c                                 |    1 
 kernel/trace/trace.c                                       |    5 
 lib/dynamic_queue_limits.c                                 |    2 
 mm/memcontrol.c                                            |    6 
 mm/page_alloc.c                                            |    8 
 net/bridge/br_nf_core.c                                    |    7 
 net/bridge/br_private.h                                    |    1 
 net/can/bcm.c                                              |   79 +++-
 net/can/gw.c                                               |  165 ++++++----
 net/core/pktgen.c                                          |   13 
 net/ipv4/fib_frontend.c                                    |   18 -
 net/ipv4/fib_rules.c                                       |    4 
 net/ipv4/fib_trie.c                                        |   22 -
 net/ipv4/inet_hashtables.c                                 |   37 +-
 net/ipv4/tcp_input.c                                       |   56 +--
 net/ipv4/udp_offload.c                                     |   61 +++
 net/ipv6/fib6_rules.c                                      |    4 
 net/ipv6/ip6_output.c                                      |    9 
 net/llc/af_llc.c                                           |    8 
 net/netfilter/ipset/ip_set_hash_gen.h                      |    2 
 net/netfilter/nf_conntrack_standalone.c                    |   12 
 net/netfilter/nf_tables_api.c                              |   54 ++-
 net/netfilter/nft_immediate.c                              |    2 
 net/openvswitch/actions.c                                  |    3 
 net/sched/act_mirred.c                                     |   22 -
 net/sched/sch_codel.c                                      |    2 
 net/sched/sch_drr.c                                        |    9 
 net/sched/sch_ets.c                                        |    9 
 net/sched/sch_fq.c                                         |    2 
 net/sched/sch_fq_codel.c                                   |    2 
 net/sched/sch_fq_pie.c                                     |    2 
 net/sched/sch_hfsc.c                                       |   15 
 net/sched/sch_hhf.c                                        |    2 
 net/sched/sch_pie.c                                        |    2 
 net/sched/sch_qfq.c                                        |   11 
 net/sunrpc/clnt.c                                          |    3 
 net/sunrpc/rpcb_clnt.c                                     |    5 
 net/tipc/crypto.c                                          |    5 
 net/xfrm/xfrm_policy.c                                     |    3 
 net/xfrm/xfrm_state.c                                      |    3 
 samples/ftrace/sample-trace-array.c                        |    2 
 scripts/config                                             |   26 -
 scripts/kconfig/merge_config.sh                            |    4 
 security/smack/smackfs.c                                   |    4 
 sound/core/oss/pcm_oss.c                                   |    3 
 sound/core/pcm_native.c                                    |   11 
 sound/pci/es1968.c                                         |    6 
 sound/pci/hda/patch_realtek.c                              |   42 ++
 sound/sh/Kconfig                                           |    2 
 sound/soc/codecs/tas2764.c                                 |   51 +--
 sound/soc/intel/boards/bytcr_rt5640.c                      |   13 
 sound/soc/qcom/qdsp6/q6afe-clocks.c                        |  209 ++++++-------
 sound/soc/qcom/qdsp6/q6afe.c                               |    2 
 sound/soc/qcom/qdsp6/q6afe.h                               |    2 
 sound/soc/soc-dai.c                                        |    8 
 sound/soc/soc-ops.c                                        |   29 +
 sound/usb/format.c                                         |    3 
 tools/bpf/bpftool/common.c                                 |    3 
 tools/build/Makefile.build                                 |    6 
 tools/lib/bpf/libbpf.c                                     |    2 
 tools/testing/selftests/vm/compaction_test.c               |   19 -
 281 files changed, 2381 insertions(+), 1039 deletions(-)

Abdun Nihaal (1):
qlcnic: fix memory leak in qlcnic_sriov_channel_cfg_cmd()

Aditya Garg (3):
Input: synaptics - enable InterTouch on Dynabook Portege X30L-G
Input: synaptics - enable InterTouch on Dell Precision M3800
Input: synaptics - enable InterTouch on TUXEDO InfinityBook Pro 14 v5

Ahmad Fatoum (1):
clk: imx8mp: inform CCF of maximum frequency of clocks

Al Viro (2):
do_umount(): add missing barrier before refcount checks in sync case __legitimize_mnt(): check for MNT_SYNC_UMOUNT should be under mount_lock

Alessandro Grassi (1):
spi: spi-sun4i: fix early activation

Alexander Lobakin (1):
ice: arfs: fix use-after-free when freeing @rx_cpu_rmap

Alexander Stein (2):
usb: chipidea: ci_hdrc_imx: use dev_err_probe()
hwmon: (gpio-fan) Add missing mutex locks

Alexander Sverdlin (1):
net: ethernet: ti: cpsw_new: populate netdev of_node

Alexandre Belloni (2):
rtc: rv3032: fix EERD location
rtc: ds1307: stop disabling alarms on probe

Alexei Lazar (1):
net/mlx5: Extend Ethtool loopback selftest to support non-linear SKB

Alexey Charkov (1):
usb: uhci-platform: Make the clock really optional

Alice Guo (1):
thermal/drivers/qoriq: Power down TMU on system suspend

Alistair Francis (1):
nvmet-tcp: don't restore null sk_state_change

Andreas Schwab (1):
powerpc/prom_init: Fixup missing #size-cells on PowerBook6,7

Andrei Kuchynski (1):
usb: typec: ucsi: displayport: Fix NULL pointer access

Andrew Davis (1):
soc: ti: k3-socinfo: Do not use syscon helper to build regmap

Andrey Vatoropin (1):
hwmon: (xgene-hwmon) use appropriate type for the latency value

Andy Shevchenko (2):
types: Complement the aligned types with signed 64-bit one
ieee802154: ca8210: Use proper setters and getters for bitwise types

Angelo Dureghello (1):
iio: adc: ad7606: fix serial register access

AngeloGioacchino Del Regno (1):
drm/mediatek: mtk_dpi: Add checks for reg_h_fre_con existence

Ankur Arora (2):
rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y
rcu: fix header guard for rcu_all_qs()

Arnd Bergmann (2):
net: xgene-v2: remove incorrect ACPI_PTR annotation EDAC/ie31200: work around false positive build warning

Artur Weber (1):
pinctrl: bcm281xx: Use "unsigned int" instead of bare "unsigned"

Benjamin Berg (1):
um: Store full CSGSFS and SS register from mcontext

Benjamin Marzinski (1):
dm: always update the array size in realloc_argv on success

Bibo Mao (1):
MIPS: Use arch specific syscall name match function

Bitterblue Smith (5):
wifi: rtw88: Fix rtw_init_vht_cap() for RTL8814AU
wifi: rtw88: Fix rtw_init_ht_cap() for RTL8814AU
wifi: rtw88: Fix rtw_desc_to_mcsrate() to handle MCS16-31
wifi: rtw88: Fix download_firmware_validate() for RTL8814AU
wifi: rtw88: Don't use static local variable in rtw8822b_set_tx_power_index_by_rate

Bogdan-Gabriel Roman (1):
spi: spi-fsl-dspi: Halt the module after a new message transfer

Breno Leitao (2):
x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2
memcg: always call cond_resched() after fn()

Chris Mi (1):
net/mlx5: E-switch, Fix error handling for enabling roce

Christian Brauner (4):
coredump: fix error handling for replace_fd()
pid: add pidfd_prepare()
fork: use pidfd_prepare()
coredump: hand a pidfd to the usermode coredump helper

Christian Göttsche (1):
ext4: reorder capability check last

Christian Hewitt (1):
Revert "drm/meson: vclk: fix calculation of 59.94 fractional rates"

Clark Wang (1):
i2c: imx-lpi2c: Fix clock count when probe defers

Claudiu Beznea (1):
phy: renesas: rcar-gen3-usb2: Set timing registers only once

Cong Wang (2):
net_sched: Flush gso_skb list too during ->change()
sch_hfsc: Fix qlen accounting bug when using peek in hfsc_enqueue()

Dan Carpenter (1):
usb: typec: fix potential array underflow in ucsi_ccg_sync_control()

Daniel Gomez (1):
kconfig: merge_config: use an empty file as initfile

Daniel Wagner (1):
nvme: unblock ctrl state transition for firmware update

Dave Penkler (3):
usb: usbtmc: Fix erroneous get_stb ioctl error returns
usb: usbtmc: Fix erroneous wait_srq ioctl return
usb: usbtmc: Fix erroneous generic_read ioctl return

David Lechner (1):
iio: chemical: sps30: use aligned_s64 for timestamp

Diogo Ivo (1):
arm64: tegra: p2597: Fix gpio for vdd-1v8-dis regulator

Dmitry Antipov (1):
module: ensure that kobject_put() is safe for module type kobjects

Dmitry Baryshkov (2):
ASoC: q6afe-clocks: fix reprobing of the driver
phy: core: don't require set_mode() callback for phy_get_mode() to work

Dmitry Bogdanov (1):
scsi: target: iscsi: Fix timeout on deleted connection

Dmitry Torokhov (1):
Input: synaptics - enable SMBus for HP Elitebook 850 G1

Dominik Grzegorzek (1):
padata: do not leak refcount in reorder_work

Eelco Chaudron (1):
openvswitch: Fix unsafe attribute parsing in output_userspace()

Eric Dumazet (3):
can: gw: use call_rcu() instead of costly synchronize_rcu()
posix-timers: Add cond_resched() to posix_timer_add() search loop
tcp: bring back NUMA dispersion in inet_ehash_locks_alloc()

Erick Shepherd (2):
mmc: host: Wait for Vdd to settle on card power off
mmc: sdhci: Disable SD card clock before changing parameters

Fedor Pchelkin (2):
usb: chipidea: ci_hdrc_imx: implement usb_phy_init() error handling
wifi: mt76: disable napi on driver removal

Felix Fietkau (1):
net: ipv6: fix UDPv6 GSO segmentation with NAT

Feng Tang (1):
selftests/mm: compaction_test: support platform with huge mount of memory

Filipe Manana (2):
btrfs: don't BUG_ON() when 0 reference count at btrfs_lookup_extent_info()
btrfs: send: return -ENAMETOOLONG when attempting a path that is too long

Florian Westphal (2):
netfilter: nf_tables: pass nft_chain to destroy function, not nft_ctx
netfilter: nf_tables: do not defer rule destruction via call_rcu

Frediano Ziglio (1):
xen: Add support for XenServer 6.1 platform device

GONG Ruiqi (1):
usb: typec: fix pm usage counter imbalance in ucsi_ccg_sync_control()

Gabriel Shahrouzi (4):
staging: iio: adc: ad7816: Correct conditional logic for store mode
staging: axis-fifo: Remove hardware resets for user errors
staging: axis-fifo: Correct handling of tx_fifo_depth for size validation
iio: adis16201: Correct inclinometer channel resolution

Geert Uytterhoeven (2):
spi: loopback-test: Do not split 1024-byte hexdumps
ALSA: sh: SND_AICA should depend on SH_DMA_API

Goldwyn Rodrigues (1):
btrfs: correct the order of prelim_ref arguments in btrfs__prelim_ref

Greg Kroah-Hartman (1):

      Linux 5.10.238

Hangbin Liu (1):
bonding: report duplicate MAC address in all situations

Hans Verkuil (1):
media: cx231xx: set device_caps for 417

Hans de Goede (1):
platform/x86: asus-wmi: Fix wlan_ctrl_by_user detection

Hector Martin (1):
ASoC: tas2764: Power up/down amp on mute ops

Helge Deller (1):
parisc: Fix double SIGFPE crash

Ian Rogers (1):
tools/build: Don't pass test log files to linker

Ido Schimmel (2):
vxlan: Annotate FDB data races
bridge: netfilter: Fix forwarding of fragmented packets

Ilia Gavrilov (1):
llc: fix data loss when reading from a socket in llc_ui_recvmsg()

Ilpo Järvinen (2):
tcp: reorganize tcp_in_ack_event() and tcp_count_delivered()
PCI: Fix old_size lower bound in calculate_iosize() too

Isaac Scott (1):
regulator: ad5398: Add device tree support

Ivan Pravdin (1):
crypto: algif_hash - fix double free in hash_accept

Jakub Kicinski (2):
net/sched: act_mirred: don't override retval if we already lost the skb
eth: mlx4: don't try to complete XDP frames in netpoll

Jan Kara (3):
ocfs2: switch osb->disable_recovery to enum
ocfs2: implement handshaking with ocfs2 recovery thread
ocfs2: stop quota recovery before disabling quotas

Jani Nikula (1):
drm/i915/gvt: fix unterminated-string-initialization warning

Jason Andryuk (2):
xenbus: Use kref to track req lifetime
xenbus: Allow PVH dom0 a non-local xenstore

Jeff Layton (1):
nfs: don't share pNFS DS connections between net namespaces

Jeongjun Park (1):
tracing: Fix oob write in trace_seq_to_buffer()

Jeremy Linton (1):
ACPI: PPTT: Fix processor subtable walk

Jessica Zhang (1):
drm: Add valid clones check

Jim Lin (1):
usb: host: tegra: Prevent host controller crash when OTG port is used

Jing Su (1):

      dql: Fix dql->limit value when reset.

Joachim Priesner (1):
ALSA: usb-audio: Add second USB ID for Jabra Evolve 65 headset

John Chau (1):
platform/x86: thinkpad_acpi: Support also NEC Lavie X1475JAS

Jonas Gorski (3):
net: dsa: b53: allow leaky reserved multicast
net: dsa: b53: fix VLAN ID for untagged vlan on bridge leave
net: dsa: b53: fix learning on VLAN unaware bridges

Jonathan Cameron (2):
iio: adc: dln2: Use aligned_s64 for timestamp
iio: adc: ad7768-1: Fix insufficient alignment of timestamp.

Jozsef Kadlecsik (1):
netfilter: ipset: fix region locking in hash types

Juergen Gross (1):
xen/swiotlb: relax alignment requirements

Justin Tee (1):
scsi: lpfc: Handle duplicate D_IDs in ndlp search-by D_ID routine

Kai Mäkisara (3):
scsi: st: Tighten the page format heuristics with MODE SELECT
scsi: st: ERASE does not change tape location
scsi: st: Restore some drive settings after reset

Kees Cook (1):
net/mlx4_core: Avoid impossible mlx4_db_alloc() order value

Kevin Baker (1):
drm/panel: simple: Update timings for AUO G101EVN010

Konstantin Andreev (1):
smack: recognize ipv4 CIPSO w/o categories

Krzysztof Kozlowski (1):
can: c_can: Use of_property_present() to test existence of DT property

Kuhanh Murugasen Krishnan (1):
fpga: altera-cvp: Increase credit timeout

Kuninori Morimoto (1):
ASoC: soc-dai: check return value at snd_soc_dai_set_tdm_slot()

Kuniyuki Iwashima (2):
ipv4: fib: Move fib_valid_key_len() to rtm_to_fib_config().
ip: fib_rules: Fetch net from fib_rule in fib[46]_rule_configure().

Larisa Grigore (2):
spi: spi-fsl-dspi: restrict register range for regmap access
spi: spi-fsl-dspi: Reset SR flags before sending a new message

Li Lingfeng (1):
nfs: handle failure of nfs_get_lock_context in unlock path

Ma Ke (1):
phy: Fix error handling in tegra_xusb_port_init

Manuel Fombuena (1):
Input: synaptics - enable InterTouch on Dynabook Portege X30-D

Maor Gottlieb (1):
net/mlx5: E-Switch, Initialize MAC Address for Default GID

Marc Kleine-Budde (1):
can: mcp251xfd: mcp251xfd_remove(): fix order of unregistration calls

Marek Szyprowski (1):
dma-mapping: avoid potential unused data compilation warning

Mark Harmstone (1):
btrfs: avoid linker error in btrfs_find_create_tree_block()

Mark Pearson (1):
platform/x86: thinkpad_acpi: Ignore battery threshold change event notification

Markus Elfring (1):
media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe()

Martin Blumenstingl (1):
pinctrl: meson: define the pull up/down resistor value as 60 kOhm

Martin Povišer (1):
ASoC: ops: Enforce platform maximum on initial value

Masahiro Yamada (1):
um: let 'make clean' properly clean underlying SUBARCH as well

Mathieu Othacehe (1):
net: cadence: macb: Fix a possible deadlock in macb_halt_tx.

Matthew Wilcox (Oracle) (1):
orangefs: Do not truncate file size

Mattias Barthel (1):
net: fec: ERR007885 Workaround for conventional TX

Michael Chan (1):
bnxt_en: Fix ethtool -d byte order for 32-bit values

Michael Liang (1):
nvme-tcp: fix premature queue removal and I/O failover

Michal Suchanek (1):
tpm: tis: Double the timeout B to 4s

Mike Christie (1):
scsi: target: Fix WRITE_SAME No Data Buffer crash

Mikulas Patocka (2):
dm-integrity: fix a warning on invalid table line
dm: restrict dm device size to 2^63-512 bytes

Milton Barrera (1):
HID: quirks: Add ADATA XPG alpha wireless mouse support

Ming-Hung Tsai (1):
dm cache: prevent BUG_ON by blocking retries on failed device resumes

Mingcong Bai (1):

      iommu/vt-d: Apply quirk_iommu_igfx for 8086:0044 (QM57/QS57)

Moshe Shemesh (1):
net/mlx5: Avoid report two health errors on same syndrome

Nandakumar Edamana (1):
libbpf: Fix out-of-bound read

Nathan Chancellor (1):
kbuild: Disable -Wdefault-const-init-unsafe

Nathan Lynch (1):
dmaengine: Revert "dmaengine: dmatest: Fix dmatest waiting less when interrupted"

Nicolas Bouchinet (1):
netfilter: conntrack: Bound nf_conntrack sysctl writes

Niravkumar L Rabara (2):
EDAC/altera: Test the correct error reg offset EDAC/altera: Set DDR and SDMMC interrupt mask before registration

Oliver Hartkopp (3):
can: gw: fix RCU/BH usage in cgw_create_job()
can: bcm: add locking for bcm_op runtime updates
can: bcm: add missing rcu read protection for procfs content

Oliver Neukum (1):
USB: usbtmc: use interruptible sleep in usbtmc_read

Pablo Neira Ayuso (1):
netfilter: nf_tables: wait for rcu grace period on net_device removal

Paul Burton (2):
MIPS: pm-cps: Use per-CPU variables as per-CPU, not per-core
clocksource: mips-gic-timer: Enable counter when CPUs start

Paul Chaignon (1):
xfrm: Sanitize marks before insert

Paul Kocialkowski (1):
net: dwmac-sun8i: Use parsed internal PHY address instead of 1

Pavel Paklov (1):
iommu/amd: Fix potential buffer overflow in parse_ivrs_acpihid

Pedro Tammela (1):
net_sched: hfsc: Address reentrant enqueue adding class to eltree twice

Peter Seiderer (2):
net: pktgen: fix mpls maximum labels list parsing
net: pktgen: fix access outside of user given buffer in pktgen_thread_write()

Philip Yang (1):
drm/amdkfd: KFD release_work possible circular locking

Philipp Stanner (1):
drm/nouveau: Fix WARN_ON in nouveau_fence_context_kill()

RD Babiera (2):
usb: typec: tcpm: delay SNK_TRY_WAIT_DEBOUNCE to SRC_TRYWAIT transition
usb: typec: altmodes/displayport: create sysfs nodes as driver's default device attribute group

Rafael J. Wysocki (1):
cpuidle: menu: Avoid discarding useful information

Ravi Bangoria (1):
perf/amd/ibs: Fix perf_ibs_op.cnt_mask for CurCnt

Richard Zhu (1):
PCI: imx6: Skip controller_id generation logic for i.MX7D

Robert Richter (1):
libnvdimm/labels: Fix divide error in nd_label_data_init()

Robin Murphy (1):

      perf/arm-cmn: Initialise cmn->cpu earlier

Ronald Wahl (1):
dmaengine: ti: k3-udma: Add missing locking

Ruslan Piasetskyi (1):
mmc: renesas_sdhi: Fix error handling in renesas_sdhi_probe

Ryan Roberts (1):
arm64/mm: Check PUD_TYPE_TABLE in pud_bad()

Sakari Ailus (1):
media: v4l: Memset argument to 0 before calling get_mbus_config pad op

Sean Anderson (1):
spi: zynqmp-gqspi: Always acknowledge interrupts

Sebastian Andrzej Siewior (1):
clocksource/i8253: Use raw_spinlock_irqsave() in clockevent_i8253_disable()

Sergey Shtylyov (1):
of: module: add buffer overflow check in of_modalias()

Seyediman Seyedarab (1):
kbuild: fix argument parsing in scripts/config

Shahar Shitrit (2):
net/mlx5: Modify LSB bitmask in temperature event to include only the first bit net/mlx5: Apply rate-limiting to high temperature warning

Shivasharan S (1):
scsi: mpt3sas: Send a diag reset if target reset fails

Shixiong Ou (1):
fbdev: fsl-diu-fb: add missing device_remove_file()

Silvano Seva (2):
iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_fifo
iio: imu: st_lsm6dsx: fix possible lockup in st_lsm6dsx_read_tagged_fifo

Simon Horman (1):
net: dlink: Correct endianness handling of led_mode

Simona Vetter (1):

      drm/atomic: clarify the rules around drm_atomic_state->allow_modeset

Stanimir Varbanov (2):
PCI: brcmstb: Expand inbound window size up to 64GB
PCI: brcmstb: Add a softdep to MIP MSI-X driver

Stephan Gerhold (1):
i2c: qup: Vote for interconnect bandwidth to DRAM

Steven Rostedt (1):
tracing: samples: Initialize trace_array_printk() with the correct function

Suzuki K Poulose (1):
irqchip/gic-v2m: Prevent use after free of gicv2m_get_fwnode()

Svyatoslav Ryhel (1):
ARM: tegra: Switch DSI-B clock parent to PLLD on Tegra114

Takashi Iwai (3):
ASoC: Intel: bytcr_rt5640: Add DMI quirk for Acer Aspire SW3-013
ALSA: hda/realtek: Add quirk for HP Spectre x360 15-df1xxx
ALSA: pcm: Fix race of buffer access at PCM OSS layer

Thangaraj Samynathan (1):
net: lan743x: Fix memleak issue when GSO enabled

Thomas Gleixner (1):
irqchip/gic-v2m: Mark a few functions __init

Thomas Zimmermann (1):
drm/ast: Find VBIOS mode from regular display size

Thorsten Blum (1):
MIPS: Fix MAX_REG_OFFSET

Tianyang Zhang (1):
mm/page_alloc.c: avoid infinite retries caused by cpuset race

Tiwei Bie (1):
um: Update min_low_pfn to match changes in uml_reserved

Tom Chung (1):
drm/amd/display: Initial psr_version with correct setting

Trond Myklebust (6):
NFSv4/pnfs: Reset the layout state after a layoutreturn
NFSv4: Check for delegation validity in nfs_start_delegation_return_locked()
NFSv4: Treat ENETUNREACH errors as fatal for state recovery
SUNRPC: rpc_clnt_set_transport() must not change the autobind setting
SUNRPC: rpcbind should never reset the port to the value '0' pNFS/flexfiles: Report ENETDOWN as a connection error

Tudor Ambarus (2):
dm: fix copying after src array boundaries
mailbox: use error ret code of of_parse_phandle_with_args()

Uladzislau Rezki (Sony) (1):
rcu/kvfree: Add kvfree_rcu_mightsleep() and kfree_rcu_mightsleep()

Valentin Caron (1):
pinctrl: devicetree: do not goto err when probing hogs in pinctrl_dt_to_map

Valtteri Koskivuori (1):
platform/x86: fujitsu-laptop: Support Lifebook S2110 hotkeys

Victor Lu (1):
drm/amdgpu: Do not program AGP BAR regs under SRIOV in gfxhub_v1_0.c

Victor Nogueira (4):
net_sched: drr: Fix double list add in class with netem as child qdisc
net_sched: hfsc: Fix a UAF vulnerability in class with netem as child qdisc
net_sched: ets: Fix double list add in class with netem as child qdisc
net_sched: qfq: Fix double list add in class with netem as child qdisc

Viktor Malik (1):
bpftool: Fix readlink usage in get_fd_type

Vishal Badole (1):
amd-xgbe: Fix to ensure dependent features are toggled with RX checksum offload

Vitalii Mordan (1):

      i2c: pxa: fix call balance of i2c->clk handling routines

Vladimir Oltean (1):
net: dsa: sja1105: discard incoming frames in BR_STATE_LISTENING

Waiman Long (1):
x86/nmi: Add an emergency handler in nmi_desc & use it in nmi_shootdown_cpus()

Wang Liang (1):
net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done

Wang Zhaolong (2):
smb: client: Fix use-after-free in cifs_fill_dirent
smb: client: Reset all search buffer pointers when releasing buffer

Wayne Chang (1):
usb: gadget: tegra-xudc: ACK ST_RC after clearing CTRL_RUN

Wenpeng Liang (1):
net/mlx5: Remove return statement exist at the end of void function

Wentao Liang (2):
wifi: brcm80211: fmac: Add error handling for brcmf_usb_dl_writeimage()
ALSA: es1968: Add error handling for snd_pcm_hw_constraint_pow2()

Willem de Bruijn (1):
ipv6: save dontfrag in cork

William Tu (2):
net/mlx5e: set the tx_queue_len for pfifo_fast net/mlx5e: reduce rep rxq depth to 256 for ECPF

Xiang wangx (1):
irqchip/gic-v2m: Add const to of_device_id

Xiaofei Tan (1):
ACPI: HED: Always initialize before evged

Yemike Abhilash Chandra (1):
dmaengine: ti: k3-udma: Use cap_mask directly from dma_device structure instead of a local copy

Zack Rusin (1):
drm/vmwgfx: Fix a deadlock in dma buf fence polling

Zhu Yanjun (1):
RDMA/rxe: Fix slab-use-after-free Read in rxe_queue_cleanup bug

Zsolt Kajtar (2):
fbcon: Use correct erase colour for clearing in fbcon
fbdev: core: tileblit: Implement missing margin clearing for tileblit

feijuan.li (1):
drm/edid: fixed the bug that hdr metadata was not reset

gaoxu (1):
cgroup: Fix compilation issue due to cgroup_mutex not being exported

junan (1):
HID: usbkbd: Fix the bit shift number for LED_KANA

author maintainer
#1 lore raw
Documentation/admin-guide/kernel-parameters.txt +2 -0
index 88110e74b3f7..12af5b0ecc8e 100644
@@ -5122,6 +5122,8 @@
 
 			Selecting 'on' will also enable the mitigation
 			against user space to user space task attacks.
+			Selecting specific mitigation does not force enable
+			user mitigations.
 
 			Selecting 'off' will disable both the kernel and
 			the user space protections.
Makefile +13 -1
index b0e2f455eb87..7d94034c906d 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 10
-SUBLEVEL = 237
+SUBLEVEL = 238
 EXTRAVERSION =
 NAME = Dare mighty things
 
@@ -795,6 +795,18 @@ KBUILD_CFLAGS += -Wno-gnu
 # source of a reference will be _MergedGlobals and not on of the whitelisted names.
 # See modpost pattern 2
 KBUILD_CFLAGS += -mno-global-merge
+
+# Clang may emit a warning when a const variable, such as the dummy variables
+# in typecheck(), or const member of an aggregate type are not initialized,
+# which can result in unexpected behavior. However, in many audited cases of
+# the "field" variant of the warning, this is intentional because the field is
+# never used within a particular call path, the field is within a union with
+# other non-const members, or the containing object is not const so the field
+# can be modified via memcpy() / memset(). While the variable warning also gets
+# disabled with this same switch, there should not be too much coverage lost
+# because -Wuninitialized will still flag when an uninitialized const variable
+# is used.
+KBUILD_CFLAGS += $(call cc-disable-warning, default-const-init-unsafe)
 else
 
 # Warn about unmarked fall-throughs in switch statement.
arch/arm/boot/dts/tegra114.dtsi +1 -1
index fb99b3e971c3..c00097794dab 100644
@@ -126,7 +126,7 @@ dsi@54400000 {
 			reg = <0x54400000 0x00040000>;
 			clocks = <&tegra_car TEGRA114_CLK_DSIB>,
 				 <&tegra_car TEGRA114_CLK_DSIBLP>,
-				 <&tegra_car TEGRA114_CLK_PLL_D2_OUT0>;
+				 <&tegra_car TEGRA114_CLK_PLL_D_OUT0>;
 			clock-names = "dsi", "lp", "parent";
 			resets = <&tegra_car 82>;
 			reset-names = "dsi";
arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi +1 -1
index a9caaf7c0d67..c04772a9740e 100644
@@ -1638,7 +1638,7 @@ vdd_1v8_dis: regulator@7 {
 		regulator-min-microvolt = <1800000>;
 		regulator-max-microvolt = <1800000>;
 		regulator-always-on;
-		gpio = <&exp1 14 GPIO_ACTIVE_HIGH>;
+		gpio = <&exp1 9 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 		vin-supply = <&vdd_1v8>;
 	};
arch/arm64/include/asm/pgtable.h +2 -1
index 7756a365d4c4..d92b5aed354e 100644
@@ -601,7 +601,8 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd)
 	pr_err("%s:%d: bad pmd %016llx.\n", __FILE__, __LINE__, pmd_val(e))
 
 #define pud_none(pud)		(!pud_val(pud))
-#define pud_bad(pud)		(!pud_table(pud))
+#define pud_bad(pud)		((pud_val(pud) & PUD_TYPE_MASK) != \
+				 PUD_TYPE_TABLE)
 #define pud_present(pud)	pte_present(pud_pte(pud))
 #define pud_leaf(pud)		(pud_present(pud) && !pud_table(pud))
 #define pud_valid(pud)		pte_valid(pud_pte(pud))
arch/mips/include/asm/ftrace.h +16 -0
index b463f2aa5a61..7acbe701afd6 100644
@@ -87,4 +87,20 @@ struct dyn_arch_ftrace {
 #endif /*  CONFIG_DYNAMIC_FTRACE */
 #endif /* __ASSEMBLY__ */
 #endif /* CONFIG_FUNCTION_TRACER */
+
+#ifdef CONFIG_FTRACE_SYSCALLS
+#ifndef __ASSEMBLY__
+/*
+ * Some syscall entry functions on mips start with "__sys_" (fork and clone,
+ * for instance). We should also match the sys_ variant with those.
+ */
+#define ARCH_HAS_SYSCALL_MATCH_SYM_NAME
+static inline bool arch_syscall_match_sym_name(const char *sym,
+					       const char *name)
+{
+	return !strcmp(sym, name) ||
+		(!strncmp(sym, "__sys_", 6) && !strcmp(sym + 6, name + 4));
+}
+#endif /* __ASSEMBLY__ */
+#endif /* CONFIG_FTRACE_SYSCALLS */
 #endif /* _ASM_MIPS_FTRACE_H */
arch/mips/include/asm/ptrace.h +2 -1
index ae578860f729..4ec9b306556f 100644
@@ -65,7 +65,8 @@ static inline void instruction_pointer_set(struct pt_regs *regs,
 
 /* Query offset/name of register from its name/offset */
 extern int regs_query_register_offset(const char *name);
-#define MAX_REG_OFFSET (offsetof(struct pt_regs, __last))
+#define MAX_REG_OFFSET \
+	(offsetof(struct pt_regs, __last) - sizeof(unsigned long))
 
 /**
  * regs_get_register() - get register value from its offset
arch/mips/kernel/pm-cps.c +17 -13
index 9bf60d7d44d3..a7bcf2b814c8 100644
@@ -56,10 +56,7 @@ static DEFINE_PER_CPU_ALIGNED(u32*, ready_count);
 /* Indicates online CPUs coupled with the current CPU */
 static DEFINE_PER_CPU_ALIGNED(cpumask_t, online_coupled);
 
-/*
- * Used to synchronize entry to deep idle states. Actually per-core rather
- * than per-CPU.
- */
+/* Used to synchronize entry to deep idle states */
 static DEFINE_PER_CPU_ALIGNED(atomic_t, pm_barrier);
 
 /* Saved CPU state across the CPS_PM_POWER_GATED state */
@@ -118,9 +115,10 @@ int cps_pm_enter_state(enum cps_pm_state state)
 	cps_nc_entry_fn entry;
 	struct core_boot_config *core_cfg;
 	struct vpe_boot_config *vpe_cfg;
+	atomic_t *barrier;
 
 	/* Check that there is an entry function for this state */
-	entry = per_cpu(nc_asm_enter, core)[state];
+	entry = per_cpu(nc_asm_enter, cpu)[state];
 	if (!entry)
 		return -EINVAL;
 
@@ -156,7 +154,7 @@ int cps_pm_enter_state(enum cps_pm_state state)
 	smp_mb__after_atomic();
 
 	/* Create a non-coherent mapping of the core ready_count */
-	core_ready_count = per_cpu(ready_count, core);
+	core_ready_count = per_cpu(ready_count, cpu);
 	nc_addr = kmap_noncoherent(virt_to_page(core_ready_count),
 				   (unsigned long)core_ready_count);
 	nc_addr += ((unsigned long)core_ready_count & ~PAGE_MASK);
@@ -164,7 +162,8 @@ int cps_pm_enter_state(enum cps_pm_state state)
 
 	/* Ensure ready_count is zero-initialised before the assembly runs */
 	WRITE_ONCE(*nc_core_ready_count, 0);
-	coupled_barrier(&per_cpu(pm_barrier, core), online);
+	barrier = &per_cpu(pm_barrier, cpumask_first(&cpu_sibling_map[cpu]));
+	coupled_barrier(barrier, online);
 
 	/* Run the generated entry code */
 	left = entry(online, nc_core_ready_count);
@@ -635,12 +634,14 @@ static void *cps_gen_entry_code(unsigned cpu, enum cps_pm_state state)
 
 static int cps_pm_online_cpu(unsigned int cpu)
 {
-	enum cps_pm_state state;
-	unsigned core = cpu_core(&cpu_data[cpu]);
+	unsigned int sibling, core;
 	void *entry_fn, *core_rc;
+	enum cps_pm_state state;
+
+	core = cpu_core(&cpu_data[cpu]);
 
 	for (state = CPS_PM_NC_WAIT; state < CPS_PM_STATE_COUNT; state++) {
-		if (per_cpu(nc_asm_enter, core)[state])
+		if (per_cpu(nc_asm_enter, cpu)[state])
 			continue;
 		if (!test_bit(state, state_support))
 			continue;
@@ -652,16 +653,19 @@ static int cps_pm_online_cpu(unsigned int cpu)
 			clear_bit(state, state_support);
 		}
 
-		per_cpu(nc_asm_enter, core)[state] = entry_fn;
+		for_each_cpu(sibling, &cpu_sibling_map[cpu])
+			per_cpu(nc_asm_enter, sibling)[state] = entry_fn;
 	}
 
-	if (!per_cpu(ready_count, core)) {
+	if (!per_cpu(ready_count, cpu)) {
 		core_rc = kmalloc(sizeof(u32), GFP_KERNEL);
 		if (!core_rc) {
 			pr_err("Failed allocate core %u ready_count\n", core);
 			return -ENOMEM;
 		}
-		per_cpu(ready_count, core) = core_rc;
+
+		for_each_cpu(sibling, &cpu_sibling_map[cpu])
+			per_cpu(ready_count, sibling) = core_rc;
 	}
 
 	return 0;
arch/parisc/math-emu/driver.c +13 -3
index 6ce427b58836..ecd27b48d61f 100644
@@ -103,9 +103,19 @@ handle_fpe(struct pt_regs *regs)
 
 	memcpy(regs->fr, frcopy, sizeof regs->fr);
 	if (signalcode != 0) {
-	    force_sig_fault(signalcode >> 24, signalcode & 0xffffff,
-			    (void __user *) regs->iaoq[0]);
-	    return -1;
+		int sig = signalcode >> 24;
+
+		if (sig == SIGFPE) {
+			/*
+			 * Clear floating point trap bit to avoid trapping
+			 * again on the first floating-point instruction in
+			 * the userspace signal handler.
+			 */
+			regs->fr[0] &= ~(1ULL << 38);
+		}
+		force_sig_fault(sig, signalcode & 0xffffff,
+				(void __user *) regs->iaoq[0]);
+		return -1;
 	}
 
 	return signalcode ? -1 : 0;
arch/powerpc/kernel/prom_init.c +2 -2
index 9a753c4dafab..b29135dd7334 100644
@@ -2944,11 +2944,11 @@ static void __init fixup_device_tree_pmac(void)
 	char type[8];
 	phandle node;
 
-	// Some pmacs are missing #size-cells on escc nodes
+	// Some pmacs are missing #size-cells on escc or i2s nodes
 	for (node = 0; prom_next_node(&node); ) {
 		type[0] = '\0';
 		prom_getprop(node, "device_type", type, sizeof(type));
-		if (prom_strcmp(type, "escc"))
+		if (prom_strcmp(type, "escc") && prom_strcmp(type, "i2s"))
 			continue;
 
 		if (prom_getproplen(node, "#size-cells") != PROM_ERROR)
arch/um/Makefile +1 -0
index 4211e23a2f68..e2caca06c155 100644
@@ -153,5 +153,6 @@ MRPROPER_FILES += $(HOST_DIR)/include/generated
 archclean:
 	@find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \
 		-o -name '*.gcov' \) -type f -print | xargs rm -f
+	$(Q)$(MAKE) -f $(srctree)/Makefile ARCH=$(HEADER_ARCH) clean
 
 export HEADER_ARCH SUBARCH USER_CFLAGS CFLAGS_NO_HARDENING OS DEV_NULL_PATH
arch/um/kernel/mem.c +1 -0
index 9242dc91d751..268a238f4f9c 100644
@@ -49,6 +49,7 @@ void __init mem_init(void)
 	map_memory(brk_end, __pa(brk_end), uml_reserved - brk_end, 1, 1, 0);
 	memblock_free(__pa(brk_end), uml_reserved - brk_end);
 	uml_reserved = brk_end;
+	min_low_pfn = PFN_UP(__pa(uml_reserved));
 
 	/* this will put all low memory onto the freelists */
 	memblock_free_all();
arch/x86/events/amd/ibs.c +2 -1
index 354d52e17ef5..8525b7960787 100644
@@ -808,7 +808,8 @@ static __init int perf_event_ibs_init(void)
 	if (ibs_caps & IBS_CAPS_OPCNTEXT) {
 		perf_ibs_op.max_period  |= IBS_OP_MAX_CNT_EXT_MASK;
 		perf_ibs_op.config_mask	|= IBS_OP_MAX_CNT_EXT_MASK;
-		perf_ibs_op.cnt_mask    |= IBS_OP_MAX_CNT_EXT_MASK;
+		perf_ibs_op.cnt_mask    |= (IBS_OP_MAX_CNT_EXT_MASK |
+					    IBS_OP_CUR_CNT_EXT_MASK);
 	}
 
 	ret = perf_ibs_pmu_init(&perf_ibs_op, "ibs_op");
arch/x86/include/asm/nmi.h +2 -0
index 9d5d949e662e..dfb483c8c98b 100644
@@ -59,6 +59,8 @@ int __register_nmi_handler(unsigned int, struct nmiaction *);
 
 void unregister_nmi_handler(unsigned int, const char *);
 
+void set_emergency_nmi_handler(unsigned int type, nmi_handler_t handler);
+
 void stop_nmi(void);
 void restart_nmi(void);
 void local_touch_nmi(void);
arch/x86/include/asm/perf_event.h +1 -0
index a4e4bbb7795d..63fc0f50cd38 100644
@@ -402,6 +402,7 @@ struct pebs_xmm {
  */
 #define IBS_OP_CUR_CNT		(0xFFF80ULL<<32)
 #define IBS_OP_CUR_CNT_RAND	(0x0007FULL<<32)
+#define IBS_OP_CUR_CNT_EXT_MASK	(0x7FULL<<52)
 #define IBS_OP_CNT_CTL		(1ULL<<19)
 #define IBS_OP_VAL		(1ULL<<18)
 #define IBS_OP_ENABLE		(1ULL<<17)
arch/x86/kernel/cpu/bugs.c +7 -3
index 045ab6d0a98b..9b3611e4cb80 100644
@@ -1231,9 +1231,13 @@ static __ro_after_init enum spectre_v2_mitigation_cmd spectre_v2_cmd;
 static enum spectre_v2_user_cmd __init
 spectre_v2_parse_user_cmdline(void)
 {
+	enum spectre_v2_user_cmd mode;
 	char arg[20];
 	int ret, i;
 
+	mode = IS_ENABLED(CONFIG_MITIGATION_SPECTRE_V2) ?
+		SPECTRE_V2_USER_CMD_AUTO : SPECTRE_V2_USER_CMD_NONE;
+
 	switch (spectre_v2_cmd) {
 	case SPECTRE_V2_CMD_NONE:
 		return SPECTRE_V2_USER_CMD_NONE;
@@ -1246,7 +1250,7 @@ spectre_v2_parse_user_cmdline(void)
 	ret = cmdline_find_option(boot_command_line, "spectre_v2_user",
 				  arg, sizeof(arg));
 	if (ret < 0)
-		return SPECTRE_V2_USER_CMD_AUTO;
+		return mode;
 
 	for (i = 0; i < ARRAY_SIZE(v2_user_options); i++) {
 		if (match_option(arg, ret, v2_user_options[i].option)) {
@@ -1256,8 +1260,8 @@ spectre_v2_parse_user_cmdline(void)
 		}
 	}
 
-	pr_err("Unknown user space protection option (%s). Switching to AUTO select\n", arg);
-	return SPECTRE_V2_USER_CMD_AUTO;
+	pr_err("Unknown user space protection option (%s). Switching to default\n", arg);
+	return mode;
 }
 
 static inline bool spectre_v2_in_eibrs_mode(enum spectre_v2_mitigation mode)
arch/x86/kernel/nmi.c +42 -0

65 lines not on this page · raw message

arch/x86/kernel/reboot.c +3 -7
index 4d8c0e258150..a09060b9bd15 100644
@@ -874,15 +874,11 @@ void nmi_shootdown_cpus(nmi_shootdown_cb callback)
 	shootdown_callback = callback;
 
 	atomic_set(&waiting_for_crash_ipi, num_online_cpus() - 1);
-	/* Would it be better to replace the trap vector here? */
-	if (register_nmi_handler(NMI_LOCAL, crash_nmi_callback,
-				 NMI_FLAG_FIRST, "crash"))
-		return;		/* Return what? */
+
 	/*
-	 * Ensure the new callback function is set before sending
-	 * out the NMI
+	 * Set emergency handler to preempt other handlers.
 	 */
-	wmb();
+	set_emergency_nmi_handler(NMI_LOCAL, crash_nmi_callback);
 
 	apic_send_IPI_allbutself(NMI_VECTOR);
 
arch/x86/um/os-Linux/mcontext.c +1 -2
index 49c3744cac37..81b9d1f9f4e6 100644
@@ -26,7 +26,6 @@ void get_regs_from_mc(struct uml_pt_regs *regs, mcontext_t *mc)
 	COPY(RIP);
 	COPY2(EFLAGS, EFL);
 	COPY2(CS, CSGSFS);
-	regs->gp[CS / sizeof(unsigned long)] &= 0xffff;
-	regs->gp[CS / sizeof(unsigned long)] |= 3;
+	regs->gp[SS / sizeof(unsigned long)] = mc->gregs[REG_CSGSFS] >> 48;
 #endif
 }
crypto/algif_hash.c +0 -4
index 50f7b22f1b48..be21cfdc6dbc 100644
@@ -262,10 +262,6 @@ static int hash_accept(struct socket *sock, struct socket *newsock, int flags,
 		return err;
 
 	err = crypto_ahash_import(&ctx2->req, state);
-	if (err) {
-		sock_orphan(sk2);
-		sock_put(sk2);
-	}
 
 	return err;
 }
drivers/acpi/Kconfig +1 -1
index b5ea34c340cc..3ef66a39111c 100644
@@ -432,7 +432,7 @@ config ACPI_SBS
 	  the modules will be called sbs and sbshc.
 
 config ACPI_HED
-	tristate "Hardware Error Device"
+	bool "Hardware Error Device"
 	help
 	  This driver supports the Hardware Error Device (PNP0C33),
 	  which is used to report some hardware errors notified via
drivers/acpi/hed.c +6 -1
index cf148287e2ba..75166839c99e 100644
@@ -72,7 +72,12 @@ static struct acpi_driver acpi_hed_driver = {
 		.notify = acpi_hed_notify,
 	},
 };
-module_acpi_driver(acpi_hed_driver);
+
+static int __init acpi_hed_driver_init(void)
+{
+	return acpi_bus_register_driver(&acpi_hed_driver);
+}
+subsys_initcall(acpi_hed_driver_init);
 
 ACPI_MODULE_NAME("hed");
 MODULE_AUTHOR("Huang Ying");
drivers/acpi/pptt.c +8 -3
index 38581001811b..78be329c2d7c 100644
@@ -219,16 +219,18 @@ static int acpi_pptt_leaf_node(struct acpi_table_header *table_hdr,
 			     sizeof(struct acpi_table_pptt));
 	proc_sz = sizeof(struct acpi_pptt_processor);
 
-	while ((unsigned long)entry + proc_sz < table_end) {
+	/* ignore subtable types that are smaller than a processor node */
+	while ((unsigned long)entry + proc_sz <= table_end) {
 		cpu_node = (struct acpi_pptt_processor *)entry;
+
 		if (entry->type == ACPI_PPTT_TYPE_PROCESSOR &&
 		    cpu_node->parent == node_entry)
 			return 0;
 		if (entry->length == 0)
 			return 0;
+
 		entry = ACPI_ADD_PTR(struct acpi_subtable_header, entry,
 				     entry->length);
-
 	}
 	return 1;
 }
@@ -261,15 +263,18 @@ static struct acpi_pptt_processor *acpi_find_processor_node(struct acpi_table_he
 	proc_sz = sizeof(struct acpi_pptt_processor);
 
 	/* find the processor structure associated with this cpuid */
-	while ((unsigned long)entry + proc_sz < table_end) {
+	while ((unsigned long)entry + proc_sz <= table_end) {
 		cpu_node = (struct acpi_pptt_processor *)entry;
 
 		if (entry->length == 0) {
 			pr_warn("Invalid zero length subtable\n");
 			break;
 		}
+		/* entry->length may not equal proc_sz, revalidate the processor structure length */
 		if (entry->type == ACPI_PPTT_TYPE_PROCESSOR &&
 		    acpi_cpu_id == cpu_node->acpi_processor_id &&
+		    (unsigned long)entry + entry->length <= table_end &&
+		    entry->length == proc_sz + cpu_node->number_of_priv_resources * sizeof(u32) &&
 		     acpi_pptt_leaf_node(table_hdr, cpu_node)) {
 			return (struct acpi_pptt_processor *)entry;
 		}
drivers/char/tpm/tpm_tis_core.h +1 -1
index 464ed352ab2e..ed7b2caa9ebb 100644
@@ -53,7 +53,7 @@ enum tis_int_flags {
 enum tis_defaults {
 	TIS_MEM_LEN = 0x5000,
 	TIS_SHORT_TIMEOUT = 750,	/* ms */
-	TIS_LONG_TIMEOUT = 2000,	/* 2 sec */
+	TIS_LONG_TIMEOUT = 4000,	/* 4 secs */
 	TIS_TIMEOUT_MIN_ATML = 14700,	/* usecs */
 	TIS_TIMEOUT_MAX_ATML = 15000,	/* usecs */
 };
drivers/clk/imx/clk-imx8mp.c +151 -0

174 lines not on this page · raw message

drivers/clocksource/i8253.c +4 -2
index 39f7c2d736d1..9a91ce66e16e 100644
@@ -103,7 +103,9 @@ int __init clocksource_i8253_init(void)
 #ifdef CONFIG_CLKEVT_I8253
 void clockevent_i8253_disable(void)
 {
-	raw_spin_lock(&i8253_lock);
+	unsigned long flags;
+
+	raw_spin_lock_irqsave(&i8253_lock, flags);
 
 	/*
 	 * Writing the MODE register should stop the counter, according to
@@ -133,7 +135,7 @@ void clockevent_i8253_disable(void)
 
 	outb_p(0x30, PIT_MODE);
 
-	raw_spin_unlock(&i8253_lock);
+	raw_spin_unlock_irqrestore(&i8253_lock, flags);
 }
 
 static int pit_shutdown(struct clock_event_device *evt)
drivers/clocksource/mips-gic-timer.c +3 -3
index be4175f415ba..1946691f6b32 100644
@@ -119,6 +119,9 @@ static void gic_update_frequency(void *data)
 
 static int gic_starting_cpu(unsigned int cpu)
 {
+	/* Ensure the GIC counter is running */
+	clear_gic_config(GIC_CONFIG_COUNTSTOP);
+
 	gic_clockevent_cpu_init(cpu, this_cpu_ptr(&gic_clockevent_device));
 	return 0;
 }
@@ -253,9 +256,6 @@ static int __init gic_clocksource_of_init(struct device_node *node)
 			pr_warn("Unable to register clock notifier\n");
 	}
 
-	/* And finally start the counter */
-	clear_gic_config(GIC_CONFIG_COUNTSTOP);
-
 	/*
 	 * It's safe to use the MIPS GIC timer as a sched clock source only if
 	 * its ticks are stable, which is true on either the platforms with
drivers/cpuidle/governors/menu.c +12 -1
index b0a7ad566081..a95cc8f024fd 100644
@@ -249,8 +249,19 @@ static unsigned int get_typical_interval(struct menu_device *data,
 	 * This can deal with workloads that have long pauses interspersed
 	 * with sporadic activity with a bunch of short pauses.
 	 */
-	if ((divisor * 4) <= INTERVALS * 3)
+	if (divisor * 4 <= INTERVALS * 3) {
+		/*
+		 * If there are sufficiently many data points still under
+		 * consideration after the outliers have been eliminated,
+		 * returning without a prediction would be a mistake because it
+		 * is likely that the next interval will not exceed the current
+		 * maximum, so return the latter in that case.
+		 */
+		if (divisor >= INTERVALS / 2)
+			return max;
+
 		return UINT_MAX;
+	}
 
 	thresh = max - 1;
 	goto again;
drivers/dma/dmatest.c +3 -3
index 915724fd7ea6..a3a172173e34 100644
@@ -825,9 +825,9 @@ static int dmatest_func(void *data)
 		} else {
 			dma_async_issue_pending(chan);
 
-			wait_event_timeout(thread->done_wait,
-					   done->done,
-					   msecs_to_jiffies(params->timeout));
+			wait_event_freezable_timeout(thread->done_wait,
+					done->done,
+					msecs_to_jiffies(params->timeout));
 
 			status = dma_async_is_tx_complete(chan, cookie, NULL,
 							  NULL);
drivers/dma/ti/k3-udma.c +8 -2
index 15eecb757619..1f01bd483c6b 100644
@@ -962,8 +962,11 @@ static void udma_check_tx_completion(struct work_struct *work)
 	u32 residue_diff;
 	ktime_t time_diff;
 	unsigned long delay;
+	unsigned long flags;
 
 	while (1) {
+		spin_lock_irqsave(&uc->vc.lock, flags);
+
 		if (uc->desc) {
 			/* Get previous residue and time stamp */
 			residue_diff = uc->tx_drain.residue;
@@ -998,6 +1001,8 @@ static void udma_check_tx_completion(struct work_struct *work)
 				break;
 			}
 
+			spin_unlock_irqrestore(&uc->vc.lock, flags);
+
 			usleep_range(ktime_to_us(delay),
 				     ktime_to_us(delay) + 10);
 			continue;
@@ -1014,6 +1019,8 @@ static void udma_check_tx_completion(struct work_struct *work)
 
 		break;
 	}
+
+	spin_unlock_irqrestore(&uc->vc.lock, flags);
 }
 
 static irqreturn_t udma_ring_irq_handler(int irq, void *data)
@@ -3075,7 +3082,6 @@ static struct dma_chan *udma_of_xlate(struct of_phandle_args *dma_spec,
 				      struct of_dma *ofdma)
 {
 	struct udma_dev *ud = ofdma->of_dma_data;
-	dma_cap_mask_t mask = ud->ddev.cap_mask;
 	struct udma_filter_param filter_param;
 	struct dma_chan *chan;
 
@@ -3088,7 +3094,7 @@ static struct dma_chan *udma_of_xlate(struct of_phandle_args *dma_spec,
 	else
 		filter_param.atype = 0;
 
-	chan = __dma_request_channel(&mask, udma_dma_filter_fn, &filter_param,
+	chan = __dma_request_channel(&ud->ddev.cap_mask, udma_dma_filter_fn, &filter_param,
 				     ofdma->of_node);
 	if (!chan) {
 		dev_err(ud->dev, "get channel fail in %s.\n", __func__);
drivers/edac/altera_edac.c +5 -4
index be38fd71f731..99aaada3a2d9 100644
@@ -97,7 +97,7 @@ static irqreturn_t altr_sdram_mc_err_handler(int irq, void *dev_id)
 	if (status & priv->ecc_stat_ce_mask) {
 		regmap_read(drvdata->mc_vbase, priv->ecc_saddr_offset,
 			    &err_addr);
-		if (priv->ecc_uecnt_offset)
+		if (priv->ecc_cecnt_offset)
 			regmap_read(drvdata->mc_vbase,  priv->ecc_cecnt_offset,
 				    &err_count);
 		edac_mc_handle_error(HW_EVENT_ERR_CORRECTED, mci, err_count,
@@ -1006,9 +1006,6 @@ altr_init_a10_ecc_block(struct device_node *np, u32 irq_mask,
 		}
 	}
 
-	/* Interrupt mode set to every SBERR */
-	regmap_write(ecc_mgr_map, ALTR_A10_ECC_INTMODE_OFST,
-		     ALTR_A10_ECC_INTMODE);
 	/* Enable ECC */
 	ecc_set_bits(ecc_ctrl_en_mask, (ecc_block_base +
 					ALTR_A10_ECC_CTRL_OFST));
@@ -2089,6 +2086,10 @@ static int altr_edac_a10_probe(struct platform_device *pdev)
 		return PTR_ERR(edac->ecc_mgr_map);
 	}
 
+	/* Set irq mask for DDR SBE to avoid any pending irq before registration */
+	regmap_write(edac->ecc_mgr_map, A10_SYSMGR_ECC_INTMASK_SET_OFST,
+		     (A10_SYSMGR_ECC_INTMASK_SDMMCB | A10_SYSMGR_ECC_INTMASK_DDR0));
+
 	edac->irq_chip.name = pdev->dev.of_node->name;
 	edac->irq_chip.irq_mask = a10_eccmgr_irq_mask;
 	edac->irq_chip.irq_unmask = a10_eccmgr_irq_unmask;
drivers/edac/altera_edac.h +2 -0
index 3727e72c8c2e..7248d24c4908 100644
@@ -249,6 +249,8 @@ struct altr_sdram_mc_data {
 #define A10_SYSMGR_ECC_INTMASK_SET_OFST   0x94
 #define A10_SYSMGR_ECC_INTMASK_CLR_OFST   0x98
 #define A10_SYSMGR_ECC_INTMASK_OCRAM      BIT(1)
+#define A10_SYSMGR_ECC_INTMASK_SDMMCB     BIT(16)
+#define A10_SYSMGR_ECC_INTMASK_DDR0       BIT(17)
 
 #define A10_SYSMGR_ECC_INTSTAT_SERR_OFST  0x9C
 #define A10_SYSMGR_ECC_INTSTAT_DERR_OFST  0xA0
drivers/edac/ie31200_edac.c +13 -15
index cad20e87783b..79a6612bd01e 100644
@@ -398,10 +398,9 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx)
 	int i, j, ret;
 	struct mem_ctl_info *mci = NULL;
 	struct edac_mc_layer layers[2];
-	struct dimm_data dimm_info[IE31200_CHANNELS][IE31200_DIMMS_PER_CHANNEL];
 	void __iomem *window;
 	struct ie31200_priv *priv;
-	u32 addr_decode, mad_offset;
+	u32 addr_decode[IE31200_CHANNELS], mad_offset;
 
 	/*
 	 * Kaby Lake, Coffee Lake seem to work like Skylake. Please re-visit
@@ -459,19 +458,10 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx)
 		mad_offset = IE31200_MAD_DIMM_0_OFFSET;
 	}
 
-	/* populate DIMM info */
 	for (i = 0; i < IE31200_CHANNELS; i++) {
-		addr_decode = readl(window + mad_offset +
+		addr_decode[i] = readl(window + mad_offset +
 					(i * 4));
-		edac_dbg(0, "addr_decode: 0x%x\n", addr_decode);
-		for (j = 0; j < IE31200_DIMMS_PER_CHANNEL; j++) {
-			populate_dimm_info(&dimm_info[i][j], addr_decode, j,
-					   skl);
-			edac_dbg(0, "size: 0x%x, rank: %d, width: %d\n",
-				 dimm_info[i][j].size,
-				 dimm_info[i][j].dual_rank,
-				 dimm_info[i][j].x16_width);
-		}
+		edac_dbg(0, "addr_decode: 0x%x\n", addr_decode[i]);
 	}
 
 	/*
@@ -482,14 +472,22 @@ static int ie31200_probe1(struct pci_dev *pdev, int dev_idx)
 	 */
 	for (i = 0; i < IE31200_DIMMS_PER_CHANNEL; i++) {
 		for (j = 0; j < IE31200_CHANNELS; j++) {
+			struct dimm_data dimm_info;
 			struct dimm_info *dimm;
 			unsigned long nr_pages;
 
-			nr_pages = IE31200_PAGES(dimm_info[j][i].size, skl);
+			populate_dimm_info(&dimm_info, addr_decode[j], i,
+					   skl);
+			edac_dbg(0, "size: 0x%x, rank: %d, width: %d\n",
+				 dimm_info.size,
+				 dimm_info.dual_rank,
+				 dimm_info.x16_width);
+
+			nr_pages = IE31200_PAGES(dimm_info.size, skl);
 			if (nr_pages == 0)
 				continue;
 
-			if (dimm_info[j][i].dual_rank) {
+			if (dimm_info.dual_rank) {
 				nr_pages = nr_pages / 2;
 				dimm = edac_get_dimm(mci, (i * 2) + 1, j, 0);
 				dimm->nr_pages = nr_pages;
drivers/fpga/altera-cvp.c +1 -1
index 4e0edb60bfba..d107ad73a188 100644
@@ -52,7 +52,7 @@
 /* V2 Defines */
 #define VSE_CVP_TX_CREDITS		0x49	/* 8bit */
 
-#define V2_CREDIT_TIMEOUT_US		20000
+#define V2_CREDIT_TIMEOUT_US		40000
 #define V2_CHECK_CREDIT_US		10
 #define V2_POLL_TIMEOUT_US		1000000
 #define V2_USER_TIMEOUT_US		500000
drivers/gpu/drm/amd/amdgpu/gfxhub_v1_0.c +5 -5
index fad887a66886..7949a87b03a8 100644
@@ -70,12 +70,12 @@ static void gfxhub_v1_0_init_system_aperture_regs(struct amdgpu_device *adev)
 {
 	uint64_t value;
 
-	/* Program the AGP BAR */
-	WREG32_SOC15_RLC(GC, 0, mmMC_VM_AGP_BASE, 0);
-	WREG32_SOC15_RLC(GC, 0, mmMC_VM_AGP_BOT, adev->gmc.agp_start >> 24);
-	WREG32_SOC15_RLC(GC, 0, mmMC_VM_AGP_TOP, adev->gmc.agp_end >> 24);
-
 	if (!amdgpu_sriov_vf(adev) || adev->asic_type <= CHIP_VEGA10) {
+		/* Program the AGP BAR */
+		WREG32_SOC15_RLC(GC, 0, mmMC_VM_AGP_BASE, 0);
+		WREG32_SOC15_RLC(GC, 0, mmMC_VM_AGP_BOT, adev->gmc.agp_start >> 24);
+		WREG32_SOC15_RLC(GC, 0, mmMC_VM_AGP_TOP, adev->gmc.agp_end >> 24);
+
 		/* Program the system aperture low logical page number. */
 		WREG32_SOC15_RLC(GC, 0, mmMC_VM_SYSTEM_APERTURE_LOW_ADDR,
 			min(adev->gmc.fb_start, adev->gmc.agp_start) >> 18);
drivers/gpu/drm/amd/amdkfd/kfd_process.c +8 -8
index 184527afe2bd..05d2598f516d 100644
@@ -755,6 +755,14 @@ struct kfd_process *kfd_create_process(struct file *filep)
 	if (thread->group_leader->mm != thread->mm)
 		return ERR_PTR(-EINVAL);
 
+	/* If the process just called exec(3), it is possible that the
+	 * cleanup of the kfd_process (following the release of the mm
+	 * of the old process image) is still in the cleanup work queue.
+	 * Make sure to drain any job before trying to recreate any
+	 * resource for this process.
+	 */
+	flush_workqueue(kfd_process_wq);
+
 	/*
 	 * take kfd processes mutex before starting of process creation
 	 * so there won't be a case where two threads of the same process
@@ -767,14 +775,6 @@ struct kfd_process *kfd_create_process(struct file *filep)
 	if (process) {
 		pr_debug("Process already found\n");
 	} else {
-		/* If the process just called exec(3), it is possible that the
-		 * cleanup of the kfd_process (following the release of the mm
-		 * of the old process image) is still in the cleanup work queue.
-		 * Make sure to drain any job before trying to recreate any
-		 * resource for this process.
-		 */
-		flush_workqueue(kfd_process_wq);
-
 		process = create_process(thread);
 		if (IS_ERR(process))
 			goto out;
drivers/gpu/drm/amd/display/dc/core/dc.c +1 -0
index 84fb1377ec93..88a9473ccf53 100644
@@ -228,6 +228,7 @@ static bool create_links(
 		link->link_id.type = OBJECT_TYPE_CONNECTOR;
 		link->link_id.id = CONNECTOR_ID_VIRTUAL;
 		link->link_id.enum_id = ENUM_ID_1;
+		link->psr_settings.psr_version = DC_PSR_VERSION_UNSUPPORTED;
 		link->link_enc = kzalloc(sizeof(*link->link_enc), GFP_KERNEL);
 
 		if (!link->link_enc) {
drivers/gpu/drm/ast/ast_mode.c +6 -4
index d27f2840b955..9c8595a98609 100644
@@ -104,7 +104,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format,
 		return false;
 	}
 
-	switch (mode->crtc_hdisplay) {
+	switch (mode->hdisplay) {
 	case 640:
 		vbios_mode->enh_table = &res_640x480[refresh_rate_index];
 		break;
@@ -115,7 +115,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format,
 		vbios_mode->enh_table = &res_1024x768[refresh_rate_index];
 		break;
 	case 1280:
-		if (mode->crtc_vdisplay == 800)
+		if (mode->vdisplay == 800)
 			vbios_mode->enh_table = &res_1280x800[refresh_rate_index];
 		else
 			vbios_mode->enh_table = &res_1280x1024[refresh_rate_index];
@@ -127,7 +127,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format,
 		vbios_mode->enh_table = &res_1440x900[refresh_rate_index];
 		break;
 	case 1600:
-		if (mode->crtc_vdisplay == 900)
+		if (mode->vdisplay == 900)
 			vbios_mode->enh_table = &res_1600x900[refresh_rate_index];
 		else
 			vbios_mode->enh_table = &res_1600x1200[refresh_rate_index];
@@ -136,7 +136,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format,
 		vbios_mode->enh_table = &res_1680x1050[refresh_rate_index];
 		break;
 	case 1920:
-		if (mode->crtc_vdisplay == 1080)
+		if (mode->vdisplay == 1080)
 			vbios_mode->enh_table = &res_1920x1080[refresh_rate_index];
 		else
 			vbios_mode->enh_table = &res_1920x1200[refresh_rate_index];
@@ -180,6 +180,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format,
 	hborder = (vbios_mode->enh_table->flags & HBorder) ? 8 : 0;
 	vborder = (vbios_mode->enh_table->flags & VBorder) ? 8 : 0;
 
+	adjusted_mode->crtc_hdisplay = vbios_mode->enh_table->hde;
 	adjusted_mode->crtc_htotal = vbios_mode->enh_table->ht;
 	adjusted_mode->crtc_hblank_start = vbios_mode->enh_table->hde + hborder;
 	adjusted_mode->crtc_hblank_end = vbios_mode->enh_table->ht - hborder;
@@ -189,6 +190,7 @@ static bool ast_get_vbios_mode_info(const struct drm_format_info *format,
 					 vbios_mode->enh_table->hfp +
 					 vbios_mode->enh_table->hsync);
 
+	adjusted_mode->crtc_vdisplay = vbios_mode->enh_table->vde;
 	adjusted_mode->crtc_vtotal = vbios_mode->enh_table->vt;
 	adjusted_mode->crtc_vblank_start = vbios_mode->enh_table->vde + vborder;
 	adjusted_mode->crtc_vblank_end = vbios_mode->enh_table->vt - vborder;
drivers/gpu/drm/drm_atomic_helper.c +28 -0
index dee3b81dec58..8612dd552d39 100644
@@ -557,6 +557,30 @@ mode_valid(struct drm_atomic_state *state)
 	return 0;
 }
 
+static int drm_atomic_check_valid_clones(struct drm_atomic_state *state,
+					 struct drm_crtc *crtc)
+{
+	struct drm_encoder *drm_enc;
+	struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
+									  crtc);
+
+	drm_for_each_encoder_mask(drm_enc, crtc->dev, crtc_state->encoder_mask) {
+		if (!drm_enc->possible_clones) {
+			DRM_DEBUG("enc%d possible_clones is 0\n", drm_enc->base.id);
+			continue;
+		}
+
+		if ((crtc_state->encoder_mask & drm_enc->possible_clones) !=
+		    crtc_state->encoder_mask) {
+			DRM_DEBUG("crtc%d failed valid clone check for mask 0x%x\n",
+				  crtc->base.id, crtc_state->encoder_mask);
+			return -EINVAL;
+		}
+	}
+
+	return 0;
+}
+
 /**
  * drm_atomic_helper_check_modeset - validate state object for modeset changes
  * @dev: DRM device
@@ -720,6 +744,10 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
 		ret = drm_atomic_add_affected_planes(state, crtc);
 		if (ret != 0)
 			return ret;
+
+		ret = drm_atomic_check_valid_clones(state, crtc);
+		if (ret != 0)
+			return ret;
 	}
 
 	/*
drivers/gpu/drm/drm_edid.c +1 -0
index 39eb39e78d7a..c3b4a84a9f91 100644
@@ -5097,6 +5097,7 @@ drm_reset_display_info(struct drm_connector *connector)
 	info->has_hdmi_infoframe = false;
 	info->rgb_quant_range_selectable = false;
 	memset(&info->hdmi, 0, sizeof(info->hdmi));
+	memset(&connector->hdr_sink_metadata, 0, sizeof(connector->hdr_sink_metadata));
 
 	info->non_desktop = 0;
 	memset(&info->monitor_range, 0, sizeof(info->monitor_range));
drivers/gpu/drm/i915/gvt/opregion.c +5 -3
index 33569b910ed5..fbf1e67913f6 100644
@@ -222,7 +222,8 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
 	u8 *buf;
 	struct opregion_header *header;
 	struct vbt v;
-	const char opregion_signature[16] = OPREGION_SIGNATURE;
+
+	static_assert(sizeof(header->signature) == sizeof(OPREGION_SIGNATURE) - 1);
 
 	gvt_dbg_core("init vgpu%d opregion\n", vgpu->id);
 	vgpu_opregion(vgpu)->va = (void *)__get_free_pages(GFP_KERNEL |
@@ -236,8 +237,9 @@ int intel_vgpu_init_opregion(struct intel_vgpu *vgpu)
 	/* emulated opregion with VBT mailbox only */
 	buf = (u8 *)vgpu_opregion(vgpu)->va;
 	header = (struct opregion_header *)buf;
-	memcpy(header->signature, opregion_signature,
-	       sizeof(opregion_signature));
+
+	memcpy(header->signature, OPREGION_SIGNATURE, sizeof(header->signature));
+
 	header->size = 0x8;
 	header->opregion_ver = 0x02000000;
 	header->mboxes = MBOX_VBT;
drivers/gpu/drm/mediatek/mtk_dpi.c +3 -2
index ac75c10aed2f..3a58d3dfd558 100644
@@ -340,12 +340,13 @@ static void mtk_dpi_config_swap_input(struct mtk_dpi *dpi, bool enable)
 
 static void mtk_dpi_config_2n_h_fre(struct mtk_dpi *dpi)
 {
-	mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, H_FRE_2N, H_FRE_2N);
+	if (dpi->conf->reg_h_fre_con)
+		mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, H_FRE_2N, H_FRE_2N);
 }
 
 static void mtk_dpi_config_disable_edge(struct mtk_dpi *dpi)
 {
-	if (dpi->conf->edge_sel_en)
+	if (dpi->conf->edge_sel_en && dpi->conf->reg_h_fre_con)
 		mtk_dpi_mask(dpi, dpi->conf->reg_h_fre_con, 0, EDGE_SEL_EN);
 }
 
drivers/gpu/drm/meson/meson_vclk.c +3 -3
index 37127ba40aa9..0eb86943a358 100644
@@ -790,13 +790,13 @@ meson_vclk_vic_supported_freq(struct meson_drm *priv, unsigned int phy_freq,
 				 FREQ_1000_1001(params[i].pixel_freq));
 		DRM_DEBUG_DRIVER("i = %d phy_freq = %d alt = %d\n",
 				 i, params[i].phy_freq,
-				 FREQ_1000_1001(params[i].phy_freq/1000)*1000);
+				 FREQ_1000_1001(params[i].phy_freq/10)*10);
 		/* Match strict frequency */
 		if (phy_freq == params[i].phy_freq &&
 		    vclk_freq == params[i].vclk_freq)
 			return MODE_OK;
 		/* Match 1000/1001 variant */
-		if (phy_freq == (FREQ_1000_1001(params[i].phy_freq/1000)*1000) &&
+		if (phy_freq == (FREQ_1000_1001(params[i].phy_freq/10)*10) &&
 		    vclk_freq == FREQ_1000_1001(params[i].vclk_freq))
 			return MODE_OK;
 	}
@@ -1070,7 +1070,7 @@ void meson_vclk_setup(struct meson_drm *priv, unsigned int target,
 
 	for (freq = 0 ; params[freq].pixel_freq ; ++freq) {
 		if ((phy_freq == params[freq].phy_freq ||
-		     phy_freq == FREQ_1000_1001(params[freq].phy_freq/1000)*1000) &&
+		     phy_freq == FREQ_1000_1001(params[freq].phy_freq/10)*10) &&
 		    (vclk_freq == params[freq].vclk_freq ||
 		     vclk_freq == FREQ_1000_1001(params[freq].vclk_freq))) {
 			if (vclk_freq != params[freq].vclk_freq)
drivers/gpu/drm/nouveau/nouveau_fence.c +1 -1
index e5dcbf67de7e..d31bf9e49bcd 100644
@@ -95,7 +95,7 @@ nouveau_fence_context_kill(struct nouveau_fence_chan *fctx, int error)
 	while (!list_empty(&fctx->pending)) {
 		fence = list_entry(fctx->pending.next, typeof(*fence), head);
 
-		if (error)
+		if (error && !dma_fence_is_signaled_locked(&fence->base))
 			dma_fence_set_error(&fence->base, error);
 
 		if (nouveau_fence_signal(fence))
drivers/gpu/drm/panel/panel-simple.c +13 -12
index 07b59021008e..9cc9c950604a 100644
@@ -964,27 +964,28 @@ static const struct panel_desc auo_g070vvn01 = {
 	},
 };
 
-static const struct drm_display_mode auo_g101evn010_mode = {
-	.clock = 68930,
-	.hdisplay = 1280,
-	.hsync_start = 1280 + 82,
-	.hsync_end = 1280 + 82 + 2,
-	.htotal = 1280 + 82 + 2 + 84,
-	.vdisplay = 800,
-	.vsync_start = 800 + 8,
-	.vsync_end = 800 + 8 + 2,
-	.vtotal = 800 + 8 + 2 + 6,
+static const struct display_timing auo_g101evn010_timing = {
+	.pixelclock = { 64000000, 68930000, 85000000 },
+	.hactive = { 1280, 1280, 1280 },
+	.hfront_porch = { 8, 64, 256 },
+	.hback_porch = { 8, 64, 256 },
+	.hsync_len = { 40, 168, 767 },
+	.vactive = { 800, 800, 800 },
+	.vfront_porch = { 4, 8, 100 },
+	.vback_porch = { 4, 8, 100 },
+	.vsync_len = { 8, 16, 223 },
 };
 
 static const struct panel_desc auo_g101evn010 = {
-	.modes = &auo_g101evn010_mode,
-	.num_modes = 1,
+	.timings = &auo_g101evn010_timing,
+	.num_timings = 1,
 	.bpc = 6,
 	.size = {
 		.width = 216,
 		.height = 135,
 	},
 	.bus_format = MEDIA_BUS_FMT_RGB666_1X7X3_SPWG,
+	.bus_flags = DRM_BUS_FLAG_DE_HIGH,
 	.connector_type = DRM_MODE_CONNECTOR_LVDS,
 };
 
drivers/gpu/drm/vmwgfx/vmwgfx_fence.c +7 -10
index 6bacdb7583df..0505f87d13c0 100644
@@ -32,7 +32,6 @@
 #define VMW_FENCE_WRAP (1 << 31)
 
 struct vmw_fence_manager {
-	int num_fence_objects;
 	struct vmw_private *dev_priv;
 	spinlock_t lock;
 	struct list_head fence_list;
@@ -113,13 +112,13 @@ static void vmw_fence_obj_destroy(struct dma_fence *f)
 {
 	struct vmw_fence_obj *fence =
 		container_of(f, struct vmw_fence_obj, base);
-
 	struct vmw_fence_manager *fman = fman_from_fence(fence);
 
-	spin_lock(&fman->lock);
-	list_del_init(&fence->head);
-	--fman->num_fence_objects;
-	spin_unlock(&fman->lock);
+	if (!list_empty(&fence->head)) {
+		spin_lock(&fman->lock);
+		list_del_init(&fence->head);
+		spin_unlock(&fman->lock);
+	}
 	fence->destroy(fence);
 }
 
@@ -250,7 +249,6 @@ static const struct dma_fence_ops vmw_fence_ops = {
 	.release = vmw_fence_obj_destroy,
 };
 
-
 /**
  * Execute signal actions on fences recently signaled.
  * This is done from a workqueue so we don't have to execute
@@ -353,7 +351,6 @@ static int vmw_fence_obj_init(struct vmw_fence_manager *fman,
 		goto out_unlock;
 	}
 	list_add_tail(&fence->head, &fman->fence_list);
-	++fman->num_fence_objects;
 
 out_unlock:
 	spin_unlock(&fman->lock);
@@ -402,7 +399,7 @@ static bool vmw_fence_goal_new_locked(struct vmw_fence_manager *fman,
 {
 	u32 goal_seqno;
 	u32 *fifo_mem;
-	struct vmw_fence_obj *fence;
+	struct vmw_fence_obj *fence, *next_fence;
 
 	if (likely(!fman->seqno_valid))
 		return false;
@@ -413,7 +410,7 @@ static bool vmw_fence_goal_new_locked(struct vmw_fence_manager *fman,
 		return false;
 
 	fman->seqno_valid = false;
-	list_for_each_entry(fence, &fman->fence_list, head) {
+	list_for_each_entry_safe(fence, next_fence, &fman->fence_list, head) {
 		if (!list_empty(&fence->seq_passed_actions)) {
 			fman->seqno_valid = true;
 			vmw_mmio_write(fence->base.seqno,
drivers/hid/hid-ids.h +4 -0
index d86720fce48f..4b8f8e0ce8ca 100644
@@ -41,6 +41,10 @@
 #define USB_VENDOR_ID_ACTIONSTAR	0x2101
 #define USB_DEVICE_ID_ACTIONSTAR_1011	0x1011
 
+#define USB_VENDOR_ID_ADATA_XPG 0x125f
+#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE 0x7505
+#define USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE 0x7506
+
 #define USB_VENDOR_ID_ADS_TECH		0x06e1
 #define USB_DEVICE_ID_ADS_TECH_RADIO_SI470X	0xa155
 
drivers/hid/hid-quirks.c +2 -0
index 9c1afe9cdddf..b3e7ede8f398 100644
@@ -27,6 +27,8 @@
 static const struct hid_device_id hid_quirks[] = {
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_GAMEPAD), HID_QUIRK_BADPAD },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AASHIMA, USB_DEVICE_ID_AASHIMA_PREDATOR), HID_QUIRK_BADPAD },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE), HID_QUIRK_ALWAYS_POLL },
+	{ HID_USB_DEVICE(USB_VENDOR_ID_ADATA_XPG, USB_VENDOR_ID_ADATA_XPG_WL_GAMING_MOUSE_DONGLE), HID_QUIRK_ALWAYS_POLL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AFATECH, USB_DEVICE_ID_AFATECH_AF9016), HID_QUIRK_FULLSPEED_INTERVAL },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AIREN, USB_DEVICE_ID_AIREN_SLIMPLUS), HID_QUIRK_NOGET },
 	{ HID_USB_DEVICE(USB_VENDOR_ID_AKAI_09E8, USB_DEVICE_ID_AKAI_09E8_MIDIMIX), HID_QUIRK_NO_INIT_REPORTS },
drivers/hid/usbhid/usbkbd.c +1 -1
index d5b7a696a68c..50c5b204bf04 100644
@@ -160,7 +160,7 @@ static int usb_kbd_event(struct input_dev *dev, unsigned int type,
 		return -1;
 
 	spin_lock_irqsave(&kbd->leds_lock, flags);
-	kbd->newleds = (!!test_bit(LED_KANA,    dev->led) << 3) | (!!test_bit(LED_COMPOSE, dev->led) << 3) |
+	kbd->newleds = (!!test_bit(LED_KANA,    dev->led) << 4) | (!!test_bit(LED_COMPOSE, dev->led) << 3) |
 		       (!!test_bit(LED_SCROLLL, dev->led) << 2) | (!!test_bit(LED_CAPSL,   dev->led) << 1) |
 		       (!!test_bit(LED_NUML,    dev->led));
 
drivers/hwmon/gpio-fan.c +15 -1
index d96e435cc42b..e0b3917dfe6f 100644
@@ -394,7 +394,12 @@ static int gpio_fan_set_cur_state(struct thermal_cooling_device *cdev,
 	if (state >= fan_data->num_speed)
 		return -EINVAL;
 
+	mutex_lock(&fan_data->lock);
+
 	set_fan_speed(fan_data, state);
+
+	mutex_unlock(&fan_data->lock);
+
 	return 0;
 }
 
@@ -490,7 +495,11 @@ MODULE_DEVICE_TABLE(of, of_gpio_fan_match);
 
 static void gpio_fan_stop(void *data)
 {
+	struct gpio_fan_data *fan_data = data;
+
+	mutex_lock(&fan_data->lock);
 	set_fan_speed(data, 0);
+	mutex_unlock(&fan_data->lock);
 }
 
 static int gpio_fan_probe(struct platform_device *pdev)
@@ -564,7 +573,9 @@ static int gpio_fan_suspend(struct device *dev)
 
 	if (fan_data->gpios) {
 		fan_data->resume_speed = fan_data->speed_index;
+		mutex_lock(&fan_data->lock);
 		set_fan_speed(fan_data, 0);
+		mutex_unlock(&fan_data->lock);
 	}
 
 	return 0;
@@ -574,8 +585,11 @@ static int gpio_fan_resume(struct device *dev)
 {
 	struct gpio_fan_data *fan_data = dev_get_drvdata(dev);
 
-	if (fan_data->gpios)
+	if (fan_data->gpios) {
+		mutex_lock(&fan_data->lock);
 		set_fan_speed(fan_data, fan_data->resume_speed);
+		mutex_unlock(&fan_data->lock);
+	}
 
 	return 0;
 }
drivers/hwmon/xgene-hwmon.c +1 -1
index 559a73bab51e..15889bcc8587 100644
@@ -110,7 +110,7 @@ struct xgene_hwmon_dev {
 
 	phys_addr_t		comm_base_addr;
 	void			*pcc_comm_addr;
-	u64			usecs_lat;
+	unsigned int		usecs_lat;
 };
 
 /*
drivers/i2c/busses/i2c-imx-lpi2c.c +2 -2
index c688f11ae5c9..96a4ce9c8d25 100644
@@ -616,9 +616,9 @@ static int lpi2c_imx_probe(struct platform_device *pdev)
 	return 0;
 
 rpm_disable:
-	pm_runtime_put(&pdev->dev);
-	pm_runtime_disable(&pdev->dev);
 	pm_runtime_dont_use_autosuspend(&pdev->dev);
+	pm_runtime_put_sync(&pdev->dev);
+	pm_runtime_disable(&pdev->dev);
 
 	return ret;
 }
drivers/i2c/busses/i2c-pxa.c +4 -1
index 35ca2c02c9b9..7fdc7f213b11 100644
@@ -1508,7 +1508,10 @@ static int i2c_pxa_probe(struct platform_device *dev)
 				i2c->adap.name);
 	}
 
-	clk_prepare_enable(i2c->clk);
+	ret = clk_prepare_enable(i2c->clk);
+	if (ret)
+		return dev_err_probe(&dev->dev, ret,
+				     "failed to enable clock\n");
 
 	if (i2c->use_pio) {
 		i2c->adap.algo = &i2c_pxa_pio_algorithm;
drivers/i2c/busses/i2c-qup.c +36 -0
index 576c12670bd8..8fd51de64d96 100644
@@ -14,6 +14,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/err.h>
 #include <linux/i2c.h>
+#include <linux/interconnect.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
 #include <linux/module.h>
@@ -150,6 +151,8 @@
 /* TAG length for DATA READ in RX FIFO  */
 #define READ_RX_TAGS_LEN		2
 
+#define QUP_BUS_WIDTH			8
+
 static unsigned int scl_freq;
 module_param_named(scl_freq, scl_freq, uint, 0444);
 MODULE_PARM_DESC(scl_freq, "SCL frequency override");
@@ -227,6 +230,7 @@ struct qup_i2c_dev {
 	int			irq;
 	struct clk		*clk;
 	struct clk		*pclk;
+	struct icc_path		*icc_path;
 	struct i2c_adapter	adap;
 
 	int			clk_ctl;
@@ -255,6 +259,10 @@ struct qup_i2c_dev {
 	/* To configure when bus is in run state */
 	u32			config_run;
 
+	/* bandwidth votes */
+	u32			src_clk_freq;
+	u32			cur_bw_clk_freq;
+
 	/* dma parameters */
 	bool			is_dma;
 	/* To check if the current transfer is using DMA */
@@ -453,6 +461,23 @@ static int qup_i2c_bus_active(struct qup_i2c_dev *qup, int len)
 	return ret;
 }
 
+static int qup_i2c_vote_bw(struct qup_i2c_dev *qup, u32 clk_freq)
+{
+	u32 needed_peak_bw;
+	int ret;
+
+	if (qup->cur_bw_clk_freq == clk_freq)
+		return 0;
+
+	needed_peak_bw = Bps_to_icc(clk_freq * QUP_BUS_WIDTH);
+	ret = icc_set_bw(qup->icc_path, 0, needed_peak_bw);
+	if (ret)
+		return ret;
+
+	qup->cur_bw_clk_freq = clk_freq;
+	return 0;
+}
+
 static void qup_i2c_write_tx_fifo_v1(struct qup_i2c_dev *qup)
 {
 	struct qup_i2c_block *blk = &qup->blk;
@@ -840,6 +865,10 @@ static int qup_i2c_bam_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,
 	int ret = 0;
 	int idx = 0;
 
+	ret = qup_i2c_vote_bw(qup, qup->src_clk_freq);
+	if (ret)
+		return ret;
+
 	enable_irq(qup->irq);
 	ret = qup_i2c_req_dma(qup);
 
@@ -1645,6 +1674,7 @@ static void qup_i2c_disable_clocks(struct qup_i2c_dev *qup)
 	config = readl(qup->base + QUP_CONFIG);
 	config |= QUP_CLOCK_AUTO_GATE;
 	writel(config, qup->base + QUP_CONFIG);
+	qup_i2c_vote_bw(qup, 0);
 	clk_disable_unprepare(qup->pclk);
 }
 
@@ -1745,6 +1775,11 @@ static int qup_i2c_probe(struct platform_device *pdev)
 			goto fail_dma;
 		}
 		qup->is_dma = true;
+
+		qup->icc_path = devm_of_icc_get(&pdev->dev, NULL);
+		if (IS_ERR(qup->icc_path))
+			return dev_err_probe(&pdev->dev, PTR_ERR(qup->icc_path),
+					     "failed to get interconnect path\n");
 	}
 
 nodma:
@@ -1793,6 +1828,7 @@ static int qup_i2c_probe(struct platform_device *pdev)
 		qup_i2c_enable_clocks(qup);
 		src_clk_freq = clk_get_rate(qup->clk);
 	}
+	qup->src_clk_freq = src_clk_freq;
 
 	/*
 	 * Bootloaders might leave a pending interrupt on certain QUP's,
drivers/iio/accel/adis16201.c +2 -2
index b4ae4f86da3e..9b60ac5dadf0 100644
@@ -214,9 +214,9 @@ static const struct iio_chan_spec adis16201_channels[] = {
 			BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 14),
 	ADIS_AUX_ADC_CHAN(ADIS16201_AUX_ADC_REG, ADIS16201_SCAN_AUX_ADC, 0, 12),
 	ADIS_INCLI_CHAN(X, ADIS16201_XINCL_OUT_REG, ADIS16201_SCAN_INCLI_X,
-			BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 14),
+			BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 12),
 	ADIS_INCLI_CHAN(Y, ADIS16201_YINCL_OUT_REG, ADIS16201_SCAN_INCLI_Y,
-			BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 14),
+			BIT(IIO_CHAN_INFO_CALIBBIAS), 0, 12),
 	IIO_CHAN_SOFT_TIMESTAMP(7)
 };
 
drivers/iio/adc/ad7606_spi.c +1 -1
index e1ad2cd61b7f..e9f4043966ae 100644
@@ -127,7 +127,7 @@ static int ad7606_spi_reg_read(struct ad7606_state *st, unsigned int addr)
 		{
 			.tx_buf = &st->d16[0],
 			.len = 2,
-			.cs_change = 0,
+			.cs_change = 1,
 		}, {
 			.rx_buf = &st->d16[1],
 			.len = 2,
drivers/iio/adc/ad7768-1.c +1 -1
index 2445ebc551dd..9580a7f7f73d 100644
@@ -168,7 +168,7 @@ struct ad7768_state {
 	union {
 		struct {
 			__be32 chan;
-			s64 timestamp;
+			aligned_s64 timestamp;
 		} scan;
 		__be32 d32;
 		u8 d8[2];
drivers/iio/adc/dln2-adc.c +1 -1
index 58b3f6065db0..e29eb38a5069 100644
@@ -483,7 +483,7 @@ static irqreturn_t dln2_adc_trigger_h(int irq, void *p)
 	struct iio_dev *indio_dev = pf->indio_dev;
 	struct {
 		__le16 values[DLN2_ADC_MAX_CHANNELS];
-		int64_t timestamp_space;
+		aligned_s64 timestamp_space;
 	} data;
 	struct dln2_adc_get_all_vals dev_data;
 	struct dln2_adc *dln2 = iio_priv(indio_dev);
drivers/iio/chemical/sps30.c +1 -1
index 2ea9a5c4d846..002628e31b5c 100644
@@ -232,7 +232,7 @@ static irqreturn_t sps30_trigger_handler(int irq, void *p)
 	int ret;
 	struct {
 		s32 data[4]; /* PM1, PM2P5, PM4, PM10 */
-		s64 ts;
+		aligned_s64 ts;
 	} scan;
 
 	mutex_lock(&state->lock);
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_buffer.c +6 -0
index 12ed0a2e55e4..2e6c634c56c7 100644
@@ -369,6 +369,9 @@ int st_lsm6dsx_read_fifo(struct st_lsm6dsx_hw *hw)
 	if (fifo_status & cpu_to_le16(ST_LSM6DSX_FIFO_EMPTY_MASK))
 		return 0;
 
+	if (!pattern_len)
+		pattern_len = ST_LSM6DSX_SAMPLE_SIZE;
+
 	fifo_len = (le16_to_cpu(fifo_status) & fifo_diff_mask) *
 		   ST_LSM6DSX_CHAN_SIZE;
 	fifo_len = (fifo_len / pattern_len) * pattern_len;
@@ -586,6 +589,9 @@ int st_lsm6dsx_read_tagged_fifo(struct st_lsm6dsx_hw *hw)
 	if (!fifo_len)
 		return 0;
 
+	if (!pattern_len)
+		pattern_len = ST_LSM6DSX_TAGGED_SAMPLE_SIZE;
+
 	for (read_len = 0; read_len < fifo_len; read_len += pattern_len) {
 		err = st_lsm6dsx_read_block(hw,
 					    ST_LSM6DSX_REG_FIFO_OUT_TAG_ADDR,
drivers/infiniband/sw/rxe/rxe_cq.c +1 -4
index 43394c3f29d4..129576a79698 100644
@@ -69,11 +69,8 @@ int rxe_cq_from_init(struct rxe_dev *rxe, struct rxe_cq *cq, int cqe,
 
 	err = do_mmap_info(rxe, uresp ? &uresp->mi : NULL, udata,
 			   cq->queue->buf, cq->queue->buf_size, &cq->queue->ip);
-	if (err) {
-		vfree(cq->queue->buf);
-		kfree(cq->queue);
+	if (err)
 		return err;
-	}
 
 	if (uresp)
 		cq->is_user = 1;
drivers/input/mouse/synaptics.c +5 -0
index 82504b0ce01b..284eb7e4a2ae 100644
@@ -163,6 +163,7 @@ static const char * const topbuttonpad_pnp_ids[] = {
 
 static const char * const smbus_pnp_ids[] = {
 	/* all of the topbuttonpad_pnp_ids are valid, we just add some extras */
+	"DLL060d", /* Dell Precision M3800 */
 	"LEN0048", /* X1 Carbon 3 */
 	"LEN0046", /* X250 */
 	"LEN0049", /* Yoga 11e */
@@ -187,11 +188,15 @@ static const char * const smbus_pnp_ids[] = {
 	"LEN2054", /* E480 */
 	"LEN2055", /* E580 */
 	"LEN2068", /* T14 Gen 1 */
+	"SYN1221", /* TUXEDO InfinityBook Pro 14 v5 */
+	"SYN3003", /* HP EliteBook 850 G1 */
 	"SYN3015", /* HP EliteBook 840 G2 */
 	"SYN3052", /* HP EliteBook 840 G4 */
 	"SYN3221", /* HP 15-ay000 */
 	"SYN323d", /* HP Spectre X360 13-w013dx */
 	"SYN3257", /* HP Envy 13-ad105ng */
+	"TOS01f6", /* Dynabook Portege X30L-G */
+	"TOS0213", /* Dynabook Portege X30-D */
 	NULL
 };
 
drivers/iommu/amd/init.c +8 -0
index 917ee5a67e78..e09391ab3deb 100644
@@ -3243,6 +3243,14 @@ static int __init parse_ivrs_acpihid(char *str)
 	while (*uid == '0' && *(uid + 1))
 		uid++;
 
+	if (strlen(hid) >= ACPIHID_HID_LEN) {
+		pr_err("Invalid command line: hid is too long\n");
+		return 1;
+	} else if (strlen(uid) >= ACPIHID_UID_LEN) {
+		pr_err("Invalid command line: uid is too long\n");
+		return 1;
+	}
+
 	i = early_acpihid_map_size++;
 	memcpy(early_acpihid_map[i].hid, hid, strlen(hid));
 	memcpy(early_acpihid_map[i].uid, uid, strlen(uid));
drivers/iommu/intel/iommu.c +3 -1
index c694ecbd304e..4c100e192223 100644
@@ -6234,6 +6234,9 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e30, quirk_iommu_igfx);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e40, quirk_iommu_igfx);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x2e90, quirk_iommu_igfx);
 
+/* QM57/QS57 integrated gfx malfunctions with dmar */
+DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0044, quirk_iommu_igfx);
+
 /* Broadwell igfx malfunctions with dmar */
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x1606, quirk_iommu_igfx);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x160B, quirk_iommu_igfx);
@@ -6311,7 +6314,6 @@ static void quirk_calpella_no_shadow_gtt(struct pci_dev *dev)
        }
 }
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0040, quirk_calpella_no_shadow_gtt);
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0044, quirk_calpella_no_shadow_gtt);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x0062, quirk_calpella_no_shadow_gtt);
 DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x006a, quirk_calpella_no_shadow_gtt);
 
drivers/irqchip/irq-gic-v2m.c +4 -4
index 205a27519607..b17deec1c5d4 100644
@@ -263,7 +263,7 @@ static struct msi_domain_info gicv2m_pmsi_domain_info = {
 	.chip	= &gicv2m_pmsi_irq_chip,
 };
 
-static void gicv2m_teardown(void)
+static void __init gicv2m_teardown(void)
 {
 	struct v2m_data *v2m, *tmp;
 
@@ -278,7 +278,7 @@ static void gicv2m_teardown(void)
 	}
 }
 
-static int gicv2m_allocate_domains(struct irq_domain *parent)
+static __init int gicv2m_allocate_domains(struct irq_domain *parent)
 {
 	struct irq_domain *inner_domain, *pci_domain, *plat_domain;
 	struct v2m_data *v2m;
@@ -408,7 +408,7 @@ static int __init gicv2m_init_one(struct fwnode_handle *fwnode,
 	return ret;
 }
 
-static struct of_device_id gicv2m_device_id[] = {
+static __initconst struct of_device_id gicv2m_device_id[] = {
 	{	.compatible	= "arm,gic-v2m-frame",	},
 	{},
 };
@@ -473,7 +473,7 @@ static struct fwnode_handle *gicv2m_get_fwnode(struct device *dev)
 	return data->fwnode;
 }
 
-static bool acpi_check_amazon_graviton_quirks(void)
+static __init bool acpi_check_amazon_graviton_quirks(void)
 {
 	static struct acpi_table_madt *madt;
 	acpi_status status;
drivers/mailbox/mailbox.c +4 -3
index 4229b9b5da98..6f54501dc776 100644
@@ -350,11 +350,12 @@ struct mbox_chan *mbox_request_channel(struct mbox_client *cl, int index)
 
 	mutex_lock(&con_mutex);
 
-	if (of_parse_phandle_with_args(dev->of_node, "mboxes",
-				       "#mbox-cells", index, &spec)) {
+	ret = of_parse_phandle_with_args(dev->of_node, "mboxes", "#mbox-cells",
+					 index, &spec);
+	if (ret) {
 		dev_dbg(dev, "%s: can't parse \"mboxes\" property\n", __func__);
 		mutex_unlock(&con_mutex);
-		return ERR_PTR(-ENODEV);
+		return ERR_PTR(ret);
 	}
 
 	chan = ERR_PTR(-EPROBE_DEFER);
drivers/md/dm-cache-target.c +24 -0
index 8a03357f8c93..fc6ad47c08b5 100644
@@ -2958,6 +2958,27 @@ static dm_cblock_t get_cache_dev_size(struct cache *cache)
 	return to_cblock(size);
 }
 
+static bool can_resume(struct cache *cache)
+{
+	/*
+	 * Disallow retrying the resume operation for devices that failed the
+	 * first resume attempt, as the failure leaves the policy object partially
+	 * initialized. Retrying could trigger BUG_ON when loading cache mappings
+	 * into the incomplete policy object.
+	 */
+	if (cache->sized && !cache->loaded_mappings) {
+		if (get_cache_mode(cache) != CM_WRITE)
+			DMERR("%s: unable to resume a failed-loaded cache, please check metadata.",
+			      cache_device_name(cache));
+		else
+			DMERR("%s: unable to resume cache due to missing proper cache table reload",
+			      cache_device_name(cache));
+		return false;
+	}
+
+	return true;
+}
+
 static bool can_resize(struct cache *cache, dm_cblock_t new_size)
 {
 	if (from_cblock(new_size) > from_cblock(cache->cache_size)) {
@@ -3006,6 +3027,9 @@ static int cache_preresume(struct dm_target *ti)
 	struct cache *cache = ti->private;
 	dm_cblock_t csize = get_cache_dev_size(cache);
 
+	if (!can_resume(cache))
+		return -EINVAL;
+
 	/*
 	 * Check to see if the cache has resized.
 	 */
drivers/md/dm-integrity.c +1 -1
index 934887f8a855..07a7b4e51f0e 100644
@@ -4392,7 +4392,7 @@ static void dm_integrity_dtr(struct dm_target *ti)
 	BUG_ON(!RB_EMPTY_ROOT(&ic->in_progress));
 	BUG_ON(!list_empty(&ic->wait_list));
 
-	if (ic->mode == 'B')
+	if (ic->mode == 'B' && ic->bitmap_flush_work.work.func)
 		cancel_delayed_work_sync(&ic->bitmap_flush_work);
 	if (ic->metadata_wq)
 		destroy_workqueue(ic->metadata_wq);
drivers/md/dm-table.c +7 -2
index 31bcdcd93c7a..4351de47fa77 100644
@@ -513,8 +513,9 @@ static char **realloc_argv(unsigned *size, char **old_argv)
 		gfp = GFP_NOIO;
 	}
 	argv = kmalloc_array(new_size, sizeof(*argv), gfp);
-	if (argv && old_argv) {
-		memcpy(argv, old_argv, *size * sizeof(*argv));
+	if (argv) {
+		if (old_argv)
+			memcpy(argv, old_argv, *size * sizeof(*argv));
 		*size = new_size;
 	}
 
@@ -681,6 +682,10 @@ int dm_table_add_target(struct dm_table *t, const char *type,
 		DMERR("%s: zero-length target", dm_device_name(t->md));
 		return -EINVAL;
 	}
+	if (start + len < start || start + len > LLONG_MAX >> SECTOR_SHIFT) {
+		DMERR("%s: too large device", dm_device_name(t->md));
+		return -EINVAL;
+	}
 
 	tgt->type = dm_get_target_type(type);
 	if (!tgt->type) {
drivers/media/platform/sti/c8sectpfe/c8sectpfe-core.c +1 -2
index b7e0ec265b70..6e3b3643a2cd 100644
@@ -811,13 +811,12 @@ static int c8sectpfe_probe(struct platform_device *pdev)
 		}
 		tsin->i2c_adapter =
 			of_find_i2c_adapter_by_node(i2c_bus);
+		of_node_put(i2c_bus);
 		if (!tsin->i2c_adapter) {
 			dev_err(&pdev->dev, "No i2c adapter found\n");
-			of_node_put(i2c_bus);
 			ret = -ENODEV;
 			goto err_clk_disable;
 		}
-		of_node_put(i2c_bus);
 
 		tsin->rst_gpio = of_get_named_gpio(child, "reset-gpios", 0);
 
drivers/media/usb/cx231xx/cx231xx-417.c +2 -0
index c5e21785fafe..02343e88cc61 100644
@@ -1722,6 +1722,8 @@ static void cx231xx_video_dev_init(
 	vfd->lock = &dev->lock;
 	vfd->release = video_device_release_empty;
 	vfd->ctrl_handler = &dev->mpeg_ctrl_handler.hdl;
+	vfd->device_caps = V4L2_CAP_READWRITE | V4L2_CAP_STREAMING |
+			   V4L2_CAP_VIDEO_CAPTURE;
 	video_set_drvdata(vfd, dev);
 	if (dev->tuner_type == TUNER_ABSENT) {
 		v4l2_disable_ioctl(vfd, VIDIOC_G_FREQUENCY);
drivers/media/v4l2-core/v4l2-subdev.c +2 -0
index fbf0dcb313c8..67d3e6511a14 100644
@@ -312,6 +312,8 @@ static int call_enum_dv_timings(struct v4l2_subdev *sd,
 static int call_get_mbus_config(struct v4l2_subdev *sd, unsigned int pad,
 				struct v4l2_mbus_config *config)
 {
+	memset(config, 0, sizeof(*config));
+
 	return check_pad(sd, pad) ? :
 	       sd->ops->pad->get_mbus_config(sd, pad, config);
 }
drivers/mmc/host/renesas_sdhi_core.c +4 -6
index 24e524a1b927..a15b44ca87d3 100644
@@ -1108,26 +1108,26 @@ int renesas_sdhi_probe(struct platform_device *pdev,
 	num_irqs = platform_irq_count(pdev);
 	if (num_irqs < 0) {
 		ret = num_irqs;
-		goto eirq;
+		goto edisclk;
 	}
 
 	/* There must be at least one IRQ source */
 	if (!num_irqs) {
 		ret = -ENXIO;
-		goto eirq;
+		goto edisclk;
 	}
 
 	for (i = 0; i < num_irqs; i++) {
 		irq = platform_get_irq(pdev, i);
 		if (irq < 0) {
 			ret = irq;
-			goto eirq;
+			goto edisclk;
 		}
 
 		ret = devm_request_irq(&pdev->dev, irq, tmio_mmc_irq, 0,
 				       dev_name(&pdev->dev), host);
 		if (ret)
-			goto eirq;
+			goto edisclk;
 	}
 
 	ret = tmio_mmc_host_probe(host);
@@ -1139,8 +1139,6 @@ int renesas_sdhi_probe(struct platform_device *pdev,
 
 	return ret;
 
-eirq:
-	tmio_mmc_host_remove(host);
 edisclk:
 	renesas_sdhi_clk_disable(host);
 efree:
drivers/mmc/host/sdhci-pci-core.c +5 -1
index 67d9dd2165ec..376959569353 100644
@@ -666,8 +666,12 @@ static void sdhci_intel_set_power(struct sdhci_host *host, unsigned char mode,
 
 	sdhci_set_power(host, mode, vdd);
 
-	if (mode == MMC_POWER_OFF)
+	if (mode == MMC_POWER_OFF) {
+		if (slot->chip->pdev->device == PCI_DEVICE_ID_INTEL_APL_SD ||
+		    slot->chip->pdev->device == PCI_DEVICE_ID_INTEL_BYT_SD)
+			usleep_range(15000, 17500);
 		return;
+	}
 
 	/*
 	 * Bus power might not enable after D3 -> D0 transition due to the
drivers/mmc/host/sdhci.c +7 -2
index 9091930f5859..3d601a3f31c1 100644
@@ -2010,10 +2010,15 @@ void sdhci_set_clock(struct sdhci_host *host, unsigned int clock)
 
 	host->mmc->actual_clock = 0;
 
-	sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL);
+	clk = sdhci_readw(host, SDHCI_CLOCK_CONTROL);
+	if (clk & SDHCI_CLOCK_CARD_EN)
+		sdhci_writew(host, clk & ~SDHCI_CLOCK_CARD_EN,
+			SDHCI_CLOCK_CONTROL);
 
-	if (clock == 0)
+	if (clock == 0) {
+		sdhci_writew(host, 0, SDHCI_CLOCK_CONTROL);
 		return;
+	}
 
 	clk = sdhci_calc_clk(host, clock, &host->mmc->actual_clock);
 	sdhci_enable_clk(host, clk);
drivers/net/bonding/bond_main.c +1 -1
index 7caaf5b49c7b..c5ccd42af528 100644
@@ -2239,7 +2239,7 @@ static int __bond_release_one(struct net_device *bond_dev,
 
 	RCU_INIT_POINTER(bond->current_arp_slave, NULL);
 
-	if (!all && (!bond->params.fail_over_mac ||
+	if (!all && (bond->params.fail_over_mac != BOND_FOM_ACTIVE ||
 		     BOND_MODE(bond) != BOND_MODE_ACTIVEBACKUP)) {
 		if (ether_addr_equal_64bits(bond_dev->dev_addr, slave->perm_hwaddr) &&
 		    bond_has_slaves(bond))
drivers/net/can/c_can/c_can_platform.c +1 -1
index 8f0dde85e3da..1e0bf3405394 100644
@@ -330,7 +330,7 @@ static int c_can_plat_probe(struct platform_device *pdev)
 		/* Check if we need custom RAMINIT via syscon. Mostly for TI
 		 * platforms. Only supported with DT boot.
 		 */
-		if (np && of_property_read_bool(np, "syscon-raminit")) {
+		if (np && of_property_present(np, "syscon-raminit")) {
 			u32 id;
 			struct c_can_raminit *raminit = &priv->raminit_sys;
 
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +1 -1
index 189d22658813..3d1ac72f689e 100644
@@ -2889,8 +2889,8 @@ static int mcp251xfd_remove(struct spi_device *spi)
 	struct mcp251xfd_priv *priv = spi_get_drvdata(spi);
 	struct net_device *ndev = priv->ndev;
 
-	can_rx_offload_del(&priv->offload);
 	mcp251xfd_unregister(priv);
+	can_rx_offload_del(&priv->offload);
 	spi->max_speed_hz = priv->spi_max_speed_hz_orig;
 	free_candev(ndev);
 
drivers/net/dsa/b53/b53_common.c +7 -4
index d3428e62bef2..39a56cedbc1f 100644
@@ -373,15 +373,17 @@ static void b53_enable_vlan(struct b53_device *dev, bool enable,
 		b53_read8(dev, B53_VLAN_PAGE, B53_VLAN_CTRL5, &vc5);
 	}
 
+	vc1 &= ~VC1_RX_MCST_FWD_EN;
+
 	if (enable) {
 		vc0 |= VC0_VLAN_EN | VC0_VID_CHK_EN | VC0_VID_HASH_VID;
-		vc1 |= VC1_RX_MCST_UNTAG_EN | VC1_RX_MCST_FWD_EN;
+		vc1 |= VC1_RX_MCST_UNTAG_EN;
 		vc4 &= ~VC4_ING_VID_CHECK_MASK;
 		if (enable_filtering) {
 			vc4 |= VC4_ING_VID_VIO_DROP << VC4_ING_VID_CHECK_S;
 			vc5 |= VC5_DROP_VTABLE_MISS;
 		} else {
-			vc4 |= VC4_ING_VID_VIO_FWD << VC4_ING_VID_CHECK_S;
+			vc4 |= VC4_NO_ING_VID_CHK << VC4_ING_VID_CHECK_S;
 			vc5 &= ~VC5_DROP_VTABLE_MISS;
 		}
 
@@ -393,7 +395,7 @@ static void b53_enable_vlan(struct b53_device *dev, bool enable,
 
 	} else {
 		vc0 &= ~(VC0_VLAN_EN | VC0_VID_CHK_EN | VC0_VID_HASH_VID);
-		vc1 &= ~(VC1_RX_MCST_UNTAG_EN | VC1_RX_MCST_FWD_EN);
+		vc1 &= ~VC1_RX_MCST_UNTAG_EN;
 		vc4 &= ~VC4_ING_VID_CHECK_MASK;
 		vc5 &= ~VC5_DROP_VTABLE_MISS;
 
@@ -1870,7 +1872,7 @@ EXPORT_SYMBOL(b53_br_join);
 void b53_br_leave(struct dsa_switch *ds, int port, struct net_device *br)
 {
 	struct b53_device *dev = ds->priv;
-	struct b53_vlan *vl = &dev->vlans[0];
+	struct b53_vlan *vl;
 	s8 cpu_port = dsa_to_port(ds, port)->cpu_dp->index;
 	unsigned int i;
 	u16 pvlan, reg, pvid;
@@ -1896,6 +1898,7 @@ void b53_br_leave(struct dsa_switch *ds, int port, struct net_device *br)
 	dev->ports[port].vlan_ctl_mask = pvlan;
 
 	pvid = b53_default_pvid(dev);
+	vl = &dev->vlans[pvid];
 
 	/* Make this port join all VLANs without VLAN entries */
 	if (is58xx(dev)) {
drivers/net/dsa/sja1105/sja1105_main.c +1 -5
index 4362fe0f346d..5f5e5b8267e0 100644
@@ -1644,6 +1644,7 @@ static void sja1105_bridge_stp_state_set(struct dsa_switch *ds, int port,
 	switch (state) {
 	case BR_STATE_DISABLED:
 	case BR_STATE_BLOCKING:
+	case BR_STATE_LISTENING:
 		/* From UM10944 description of DRPDTAG (why put this there?):
 		 * "Management traffic flows to the port regardless of the state
 		 * of the INGRESS flag". So BPDUs are still be allowed to pass.
@@ -1653,11 +1654,6 @@ static void sja1105_bridge_stp_state_set(struct dsa_switch *ds, int port,
 		mac[port].egress    = false;
 		mac[port].dyn_learn = false;
 		break;
-	case BR_STATE_LISTENING:
-		mac[port].ingress   = true;
-		mac[port].egress    = false;
-		mac[port].dyn_learn = false;
-		break;
 	case BR_STATE_LEARNING:
 		mac[port].ingress   = true;
 		mac[port].egress    = false;
drivers/net/ethernet/amd/xgbe/xgbe-desc.c +7 -2
index 230726d7b74f..d41b58fad37b 100644
@@ -373,8 +373,13 @@ static int xgbe_map_rx_buffer(struct xgbe_prv_data *pdata,
 	}
 
 	/* Set up the header page info */
-	xgbe_set_buffer_data(&rdata->rx.hdr, &ring->rx_hdr_pa,
-			     XGBE_SKB_ALLOC_SIZE);
+	if (pdata->netdev->features & NETIF_F_RXCSUM) {
+		xgbe_set_buffer_data(&rdata->rx.hdr, &ring->rx_hdr_pa,
+				     XGBE_SKB_ALLOC_SIZE);
+	} else {
+		xgbe_set_buffer_data(&rdata->rx.hdr, &ring->rx_hdr_pa,
+				     pdata->rx_buf_size);
+	}
 
 	/* Set up the buffer page info */
 	xgbe_set_buffer_data(&rdata->rx.buf, &ring->rx_buf_pa,
drivers/net/ethernet/amd/xgbe/xgbe-dev.c +22 -2
index decc1c09a031..0f7d33632853 100644
@@ -320,6 +320,18 @@ static void xgbe_config_sph_mode(struct xgbe_prv_data *pdata)
 	XGMAC_IOWRITE_BITS(pdata, MAC_RCR, HDSMS, XGBE_SPH_HDSMS_SIZE);
 }
 
+static void xgbe_disable_sph_mode(struct xgbe_prv_data *pdata)
+{
+	unsigned int i;
+
+	for (i = 0; i < pdata->channel_count; i++) {
+		if (!pdata->channel[i]->rx_ring)
+			break;
+
+		XGMAC_DMA_IOWRITE_BITS(pdata->channel[i], DMA_CH_CR, SPH, 0);
+	}
+}
+
 static int xgbe_write_rss_reg(struct xgbe_prv_data *pdata, unsigned int type,
 			      unsigned int index, unsigned int val)
 {
@@ -3495,8 +3507,12 @@ static int xgbe_init(struct xgbe_prv_data *pdata)
 	xgbe_config_tx_coalesce(pdata);
 	xgbe_config_rx_buffer_size(pdata);
 	xgbe_config_tso_mode(pdata);
-	xgbe_config_sph_mode(pdata);
-	xgbe_config_rss(pdata);
+
+	if (pdata->netdev->features & NETIF_F_RXCSUM) {
+		xgbe_config_sph_mode(pdata);
+		xgbe_config_rss(pdata);
+	}
+
 	desc_if->wrapper_tx_desc_init(pdata);
 	desc_if->wrapper_rx_desc_init(pdata);
 	xgbe_enable_dma_interrupts(pdata);
@@ -3650,5 +3666,9 @@ void xgbe_init_function_ptrs_dev(struct xgbe_hw_if *hw_if)
 	hw_if->disable_vxlan = xgbe_disable_vxlan;
 	hw_if->set_vxlan_id = xgbe_set_vxlan_id;
 
+	/* For Split Header*/
+	hw_if->enable_sph = xgbe_config_sph_mode;
+	hw_if->disable_sph = xgbe_disable_sph_mode;
+
 	DBGPR("<--xgbe_init_function_ptrs\n");
 }
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +9 -2
index 23401958bc13..8926011604e3 100644
@@ -2264,10 +2264,17 @@ static int xgbe_set_features(struct net_device *netdev,
 	if (ret)
 		return ret;
 
-	if ((features & NETIF_F_RXCSUM) && !rxcsum)
+	if ((features & NETIF_F_RXCSUM) && !rxcsum) {
+		hw_if->enable_sph(pdata);
+		hw_if->enable_vxlan(pdata);
 		hw_if->enable_rx_csum(pdata);
-	else if (!(features & NETIF_F_RXCSUM) && rxcsum)
+		schedule_work(&pdata->restart_work);
+	} else if (!(features & NETIF_F_RXCSUM) && rxcsum) {
+		hw_if->disable_sph(pdata);
+		hw_if->disable_vxlan(pdata);
 		hw_if->disable_rx_csum(pdata);
+		schedule_work(&pdata->restart_work);
+	}
 
 	if ((features & NETIF_F_HW_VLAN_CTAG_RX) && !rxvlan)
 		hw_if->enable_rx_vlan_stripping(pdata);
drivers/net/ethernet/amd/xgbe/xgbe.h +4 -0
index e0b8f3c4cc0b..0493de8ee545 100644
@@ -833,6 +833,10 @@ struct xgbe_hw_if {
 	void (*enable_vxlan)(struct xgbe_prv_data *);
 	void (*disable_vxlan)(struct xgbe_prv_data *);
 	void (*set_vxlan_id)(struct xgbe_prv_data *);
+
+	/* For Split Header */
+	void (*enable_sph)(struct xgbe_prv_data *pdata);
+	void (*disable_sph)(struct xgbe_prv_data *pdata);
 };
 
 /* This structure represents implementation specific routines for an
drivers/net/ethernet/apm/xgene-v2/main.c +1 -3
index 80399c8980bd..627f86014100 100644
@@ -9,8 +9,6 @@
 
 #include "main.h"
 
-static const struct acpi_device_id xge_acpi_match[];
-
 static int xge_get_resources(struct xge_pdata *pdata)
 {
 	struct platform_device *pdev;
@@ -733,7 +731,7 @@ MODULE_DEVICE_TABLE(acpi, xge_acpi_match);
 static struct platform_driver xge_driver = {
 	.driver = {
 		   .name = "xgene-enet-v2",
-		   .acpi_match_table = ACPI_PTR(xge_acpi_match),
+		   .acpi_match_table = xge_acpi_match,
 	},
 	.probe = xge_probe,
 	.remove = xge_remove,
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +31 -5
index 2984234df67e..4dfb65b0bf1c 100644
@@ -1344,6 +1344,17 @@ static int bnxt_get_regs_len(struct net_device *dev)
 	return reg_len;
 }
 
+#define BNXT_PCIE_32B_ENTRY(start, end)			\
+	 { offsetof(struct pcie_ctx_hw_stats, start),	\
+	   offsetof(struct pcie_ctx_hw_stats, end) }
+
+static const struct {
+	u16 start;
+	u16 end;
+} bnxt_pcie_32b_entries[] = {
+	BNXT_PCIE_32B_ENTRY(pcie_ltssm_histogram[0], pcie_ltssm_histogram[3]),
+};
+
 static void bnxt_get_regs(struct net_device *dev, struct ethtool_regs *regs,
 			  void *_p)
 {
@@ -1372,12 +1383,27 @@ static void bnxt_get_regs(struct net_device *dev, struct ethtool_regs *regs,
 	mutex_lock(&bp->hwrm_cmd_lock);
 	rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT);
 	if (!rc) {
-		__le64 *src = (__le64 *)hw_pcie_stats;
-		u64 *dst = (u64 *)(_p + BNXT_PXP_REG_LEN);
-		int i;
+		u8 *dst = (u8 *)(_p + BNXT_PXP_REG_LEN);
+		u8 *src = (u8 *)hw_pcie_stats;
+		int i, j;
+
+		for (i = 0, j = 0; i < sizeof(*hw_pcie_stats); ) {
+			if (i >= bnxt_pcie_32b_entries[j].start &&
+			    i <= bnxt_pcie_32b_entries[j].end) {
+				u32 *dst32 = (u32 *)(dst + i);
+
+				*dst32 = le32_to_cpu(*(__le32 *)(src + i));
+				i += 4;
+				if (i > bnxt_pcie_32b_entries[j].end &&
+				    j < ARRAY_SIZE(bnxt_pcie_32b_entries) - 1)
+					j++;
+			} else {
+				u64 *dst64 = (u64 *)(dst + i);
 
-		for (i = 0; i < sizeof(*hw_pcie_stats) / sizeof(__le64); i++)
-			dst[i] = le64_to_cpu(src[i]);
+				*dst64 = le64_to_cpu(*(__le64 *)(src + i));
+				i += 8;
+			}
+		}
 	}
 	mutex_unlock(&bp->hwrm_cmd_lock);
 	dma_free_coherent(&bp->pdev->dev, sizeof(*hw_pcie_stats), hw_pcie_stats,
drivers/net/ethernet/cadence/macb_main.c +6 -13
index 0f18837def3c..74f3cabf8ed6 100644
@@ -826,22 +826,15 @@ static void macb_update_stats(struct macb *bp)
 
 static int macb_halt_tx(struct macb *bp)
 {
-	unsigned long	halt_time, timeout;
-	u32		status;
+	u32 status;
 
 	macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(THALT));
 
-	timeout = jiffies + usecs_to_jiffies(MACB_HALT_TIMEOUT);
-	do {
-		halt_time = jiffies;
-		status = macb_readl(bp, TSR);
-		if (!(status & MACB_BIT(TGO)))
-			return 0;
-
-		udelay(250);
-	} while (time_before(halt_time, timeout));
-
-	return -ETIMEDOUT;
+	/* Poll TSR until TGO is cleared or timeout. */
+	return read_poll_timeout_atomic(macb_readl, status,
+					!(status & MACB_BIT(TGO)),
+					250, MACB_HALT_TIMEOUT, false,
+					bp, TSR);
 }
 
 static void macb_tx_unmap(struct macb *bp, struct macb_tx_skb *tx_skb)
drivers/net/ethernet/dlink/dl2k.c +1 -1
index 734acb834c98..66e0fbdcef22 100644
@@ -353,7 +353,7 @@ parse_eeprom (struct net_device *dev)
 		dev->dev_addr[i] = psrom->mac_addr[i];
 
 	if (np->chip_id == CHIP_IP1000A) {
-		np->led_mode = psrom->led_mode;
+		np->led_mode = le16_to_cpu(psrom->led_mode);
 		return 0;
 	}
 
drivers/net/ethernet/dlink/dl2k.h +1 -1
index 195dc6cfd895..0e33e2eaae96 100644
@@ -335,7 +335,7 @@ typedef struct t_SROM {
 	u16 sub_system_id;	/* 0x06 */
 	u16 pci_base_1;		/* 0x08 (IP1000A only) */
 	u16 pci_base_2;		/* 0x0a (IP1000A only) */
-	u16 led_mode;		/* 0x0c (IP1000A only) */
+	__le16 led_mode;	/* 0x0c (IP1000A only) */
 	u16 reserved1[9];	/* 0x0e-0x1f */
 	u8 mac_addr[6];		/* 0x20-0x25 */
 	u8 reserved2[10];	/* 0x26-0x2f */
drivers/net/ethernet/freescale/fec_main.c +6 -1
index 8e30e999456d..805434ba3035 100644
@@ -602,7 +602,12 @@ static int fec_enet_txq_submit_skb(struct fec_enet_priv_tx_q *txq,
 	txq->bd.cur = bdp;
 
 	/* Trigger transmission start */
-	writel(0, txq->bd.reg_desc_active);
+	if (!(fep->quirks & FEC_QUIRK_ERR007885) ||
+	    !readl(txq->bd.reg_desc_active) ||
+	    !readl(txq->bd.reg_desc_active) ||
+	    !readl(txq->bd.reg_desc_active) ||
+	    !readl(txq->bd.reg_desc_active))
+		writel(0, txq->bd.reg_desc_active);
 
 	return 0;
 }
drivers/net/ethernet/intel/ice/ice_arfs.c +2 -7
index 632f16ffee40..085b1a0d67c5 100644
@@ -577,7 +577,7 @@ void ice_free_cpu_rx_rmap(struct ice_vsi *vsi)
 {
 	struct net_device *netdev;
 
-	if (!vsi || vsi->type != ICE_VSI_PF || !vsi->arfs_fltr_list)
+	if (!vsi || vsi->type != ICE_VSI_PF)
 		return;
 
 	netdev = vsi->netdev;
@@ -600,7 +600,7 @@ int ice_set_cpu_rx_rmap(struct ice_vsi *vsi)
 	int base_idx, i;
 
 	if (!vsi || vsi->type != ICE_VSI_PF)
-		return -EINVAL;
+		return 0;
 
 	pf = vsi->back;
 	netdev = vsi->netdev;
@@ -638,7 +638,6 @@ void ice_remove_arfs(struct ice_pf *pf)
 	if (!pf_vsi)
 		return;
 
-	ice_free_cpu_rx_rmap(pf_vsi);
 	ice_clear_arfs(pf_vsi);
 }
 
@@ -655,9 +654,5 @@ void ice_rebuild_arfs(struct ice_pf *pf)
 		return;
 
 	ice_remove_arfs(pf);
-	if (ice_set_cpu_rx_rmap(pf_vsi)) {
-		dev_err(ice_pf_to_dev(pf), "Failed to rebuild aRFS\n");
-		return;
-	}
 	ice_init_arfs(pf_vsi);
 }
drivers/net/ethernet/intel/ice/ice_lib.c +4 -1
index e99c8c10bc61..d3e5bf180c37 100644
@@ -2411,6 +2411,8 @@ void ice_vsi_free_irq(struct ice_vsi *vsi)
 		return;
 
 	vsi->irqs_ready = false;
+	ice_free_cpu_rx_rmap(vsi);
+
 	ice_for_each_q_vector(vsi, i) {
 		u16 vector = i + base;
 		int irq_num;
@@ -2424,7 +2426,8 @@ void ice_vsi_free_irq(struct ice_vsi *vsi)
 			continue;
 
 		/* clear the affinity notifier in the IRQ descriptor */
-		irq_set_affinity_notifier(irq_num, NULL);
+		if (!IS_ENABLED(CONFIG_RFS_ACCEL))
+			irq_set_affinity_notifier(irq_num, NULL);
 
 		/* clear the affinity_mask in the IRQ descriptor */
 		irq_set_affinity_hint(irq_num, NULL);
drivers/net/ethernet/intel/ice/ice_main.c +8 -12
index 035bc90c8124..a337a6826a84 100644
@@ -2247,6 +2247,13 @@ static int ice_vsi_req_irq_msix(struct ice_vsi *vsi, char *basename)
 		irq_set_affinity_hint(irq_num, &q_vector->affinity_mask);
 	}
 
+	err = ice_set_cpu_rx_rmap(vsi);
+	if (err) {
+		netdev_err(vsi->netdev, "Failed to setup CPU RMAP on VSI %u: %pe\n",
+			   vsi->vsi_num, ERR_PTR(err));
+		goto free_q_irqs;
+	}
+
 	vsi->irqs_ready = true;
 	return 0;
 
@@ -3242,22 +3249,12 @@ static int ice_setup_pf_sw(struct ice_pf *pf)
 	 */
 	ice_napi_add(vsi);
 
-	status = ice_set_cpu_rx_rmap(vsi);
-	if (status) {
-		dev_err(ice_pf_to_dev(pf), "Failed to set CPU Rx map VSI %d error %d\n",
-			vsi->vsi_num, status);
-		status = -EINVAL;
-		goto unroll_napi_add;
-	}
 	status = ice_init_mac_fltr(pf);
 	if (status)
-		goto free_cpu_rx_map;
+		goto unroll_napi_add;
 
 	return status;
 
-free_cpu_rx_map:
-	ice_free_cpu_rx_rmap(vsi);
-
 unroll_napi_add:
 	if (vsi) {
 		ice_napi_del(vsi);
@@ -4598,7 +4595,6 @@ static int __maybe_unused ice_suspend(struct device *dev)
 			continue;
 		ice_vsi_free_q_vectors(pf->vsi[v]);
 	}
-	ice_free_cpu_rx_rmap(ice_get_main_vsi(pf));
 	ice_clear_interrupt_scheme(pf);
 
 	pci_save_state(pdev);
drivers/net/ethernet/mellanox/mlx4/alloc.c +3 -3
index b330020dc0d6..f2bded847e61 100644
@@ -682,9 +682,9 @@ static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device)
 }
 
 static int mlx4_alloc_db_from_pgdir(struct mlx4_db_pgdir *pgdir,
-				    struct mlx4_db *db, int order)
+				    struct mlx4_db *db, unsigned int order)
 {
-	int o;
+	unsigned int o;
 	int i;
 
 	for (o = order; o <= 1; ++o) {
@@ -712,7 +712,7 @@ static int mlx4_alloc_db_from_pgdir(struct mlx4_db_pgdir *pgdir,
 	return 0;
 }
 
-int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order)
+int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, unsigned int order)
 {
 	struct mlx4_priv *priv = mlx4_priv(dev);
 	struct mlx4_db_pgdir *pgdir;
drivers/net/ethernet/mellanox/mlx4/en_tx.c +2 -0
index 59b097cda327..6c52ddef88a6 100644
@@ -445,6 +445,8 @@ int mlx4_en_process_tx_cq(struct net_device *dev,
 
 	if (unlikely(!priv->port_up))
 		return 0;
+	if (unlikely(!napi_budget) && cq->type == TX_XDP)
+		return 0;
 
 	netdev_txq_bql_complete_prefetchw(ring->tx_queue);
 
drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +5 -0
index 6512bb231e7e..2fb1fe9a8eee 100644
@@ -53,6 +53,7 @@
 #define MLX5E_REP_PARAMS_DEF_LOG_SQ_SIZE \
         max(0x7, MLX5E_PARAMS_MINIMUM_LOG_SQ_SIZE)
 #define MLX5E_REP_PARAMS_DEF_NUM_CHANNELS 1
+#define MLX5E_REP_PARAMS_DEF_LOG_RQ_SIZE 0x8
 
 static const char mlx5e_rep_driver_name[] = "mlx5e_rep";
 
@@ -702,6 +703,8 @@ static void mlx5e_build_rep_params(struct net_device *netdev)
 
 	/* RQ */
 	mlx5e_build_rq_params(mdev, params);
+	if (!mlx5e_is_uplink_rep(priv) && mlx5_core_is_ecpf(mdev))
+		params->log_rq_mtu_frames = MLX5E_REP_PARAMS_DEF_LOG_RQ_SIZE;
 
 	/* CQ moderation params */
 	params->rx_dim_enabled = MLX5_CAP_GEN(mdev, cq_moderation);
@@ -740,6 +743,8 @@ static void mlx5e_build_rep_netdev(struct net_device *netdev)
 	}
 
 	netdev->watchdog_timeo    = 15 * HZ;
+	if (mlx5_core_is_ecpf(mdev))
+		netdev->tx_queue_len = 1 << MLX5E_REP_PARAMS_DEF_LOG_SQ_SIZE;
 
 	netdev->features       |= NETIF_F_NETNS_LOCAL;
 
drivers/net/ethernet/mellanox/mlx5/core/en_selftest.c +3 -0
index ce8ab1f01876..c380340b8166 100644
@@ -188,6 +188,9 @@ mlx5e_test_loopback_validate(struct sk_buff *skb,
 	struct udphdr *udph;
 	struct iphdr *iph;
 
+	if (skb_linearize(skb))
+		goto out;
+
 	/* We are only going to peek, no need to clone the SKB */
 	if (MLX5E_TEST_PKT_SIZE - ETH_HLEN > skb_headlen(skb))
 		goto out;
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +4 -1
index ccc7dd3e738a..7c6646f932b6 100644
@@ -2317,7 +2317,9 @@ int esw_offloads_enable(struct mlx5_eswitch *esw)
 		esw->offloads.encap = DEVLINK_ESWITCH_ENCAP_MODE_NONE;
 
 	mutex_init(&esw->offloads.termtbl_mutex);
-	mlx5_rdma_enable_roce(esw->dev);
+	err = mlx5_rdma_enable_roce(esw->dev);
+	if (err)
+		goto err_roce;
 
 	err = mlx5_esw_host_number_init(esw);
 	if (err)
@@ -2366,6 +2368,7 @@ int esw_offloads_enable(struct mlx5_eswitch *esw)
 err_metadata:
 	esw->flags &= ~MLX5_ESWITCH_VPORT_MATCH_METADATA;
 	mlx5_rdma_disable_roce(esw->dev);
+err_roce:
 	mutex_destroy(&esw->offloads.termtbl_mutex);
 	return err;
 }
drivers/net/ethernet/mellanox/mlx5/core/events.c +8 -3
index 3ce17c3d7a00..5e8db7a6185a 100644
@@ -156,11 +156,16 @@ static int temp_warn(struct notifier_block *nb, unsigned long type, void *data)
 	u64 value_msb;
 
 	value_lsb = be64_to_cpu(eqe->data.temp_warning.sensor_warning_lsb);
+	/* bit 1-63 are not supported for NICs,
+	 * hence read only bit 0 (asic) from lsb.
+	 */
+	value_lsb &= 0x1;
 	value_msb = be64_to_cpu(eqe->data.temp_warning.sensor_warning_msb);
 
-	mlx5_core_warn(events->dev,
-		       "High temperature on sensors with bit set %llx %llx",
-		       value_msb, value_lsb);
+	if (net_ratelimit())
+		mlx5_core_warn(events->dev,
+			       "High temperature on sensors with bit set %llx %llx",
+			       value_msb, value_lsb);
 
 	return NOTIFY_OK;
 }
drivers/net/ethernet/mellanox/mlx5/core/health.c +1 -0
index f42e118f3290..d48912d7afe5 100644
@@ -733,6 +733,7 @@ static void poll_health(struct timer_list *t)
 	health->prev = count;
 	if (health->miss_counter == MAX_MISSES) {
 		mlx5_core_err(dev, "device's health compromised - reached miss count\n");
+		health->synd = ioread8(&h->synd);
 		print_health_info(dev);
 		queue_work(health->wq, &health->report_work);
 	}
drivers/net/ethernet/mellanox/mlx5/core/pci_irq.c +0 -1
index 6fd974920394..2f886bd77664 100644
@@ -88,7 +88,6 @@ static void irq_set_name(char *name, int vecidx)
 
 	snprintf(name, MLX5_MAX_IRQ_NAME, "mlx5_comp%d",
 		 vecidx - MLX5_IRQ_VEC_COMP_BASE);
-	return;
 }
 
 static int request_irqs(struct mlx5_core_dev *dev, int nvec)
drivers/net/ethernet/mellanox/mlx5/core/rdma.c +6 -6
index 2389239acadc..e61a4fa46d77 100644
@@ -130,8 +130,8 @@ static void mlx5_rdma_make_default_gid(struct mlx5_core_dev *dev, union ib_gid *
 
 static int mlx5_rdma_add_roce_addr(struct mlx5_core_dev *dev)
 {
+	u8 mac[ETH_ALEN] = {};
 	union ib_gid gid;
-	u8 mac[ETH_ALEN];
 
 	mlx5_rdma_make_default_gid(dev, &gid);
 	return mlx5_core_roce_gid_set(dev, 0,
@@ -152,17 +152,17 @@ void mlx5_rdma_disable_roce(struct mlx5_core_dev *dev)
 	mlx5_nic_vport_disable_roce(dev);
 }
 
-void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev)
+int mlx5_rdma_enable_roce(struct mlx5_core_dev *dev)
 {
 	int err;
 
 	if (!MLX5_CAP_GEN(dev, roce))
-		return;
+		return 0;
 
 	err = mlx5_nic_vport_enable_roce(dev);
 	if (err) {
 		mlx5_core_err(dev, "Failed to enable RoCE: %d\n", err);
-		return;
+		return err;
 	}
 
 	err = mlx5_rdma_add_roce_addr(dev);
@@ -177,11 +177,11 @@ void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev)
 		goto del_roce_addr;
 	}
 
-	return;
+	return err;
 
 del_roce_addr:
 	mlx5_rdma_del_roce_addr(dev);
 disable_roce:
 	mlx5_nic_vport_disable_roce(dev);
-	return;
+	return err;
 }
drivers/net/ethernet/mellanox/mlx5/core/rdma.h +2 -2
index 750cff2a71a4..3d9e76c3d42f 100644
@@ -8,12 +8,12 @@
 
 #ifdef CONFIG_MLX5_ESWITCH
 
-void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev);
+int mlx5_rdma_enable_roce(struct mlx5_core_dev *dev);
 void mlx5_rdma_disable_roce(struct mlx5_core_dev *dev);
 
 #else /* CONFIG_MLX5_ESWITCH */
 
-static inline void mlx5_rdma_enable_roce(struct mlx5_core_dev *dev) {}
+static inline int mlx5_rdma_enable_roce(struct mlx5_core_dev *dev) { return 0; }
 static inline void mlx5_rdma_disable_roce(struct mlx5_core_dev *dev) {}
 
 #endif /* CONFIG_MLX5_ESWITCH */
drivers/net/ethernet/microchip/lan743x_main.c +6 -2
index 50cb1c5251f7..a0f490a90757 100644
@@ -1475,6 +1475,7 @@ static void lan743x_tx_frame_add_lso(struct lan743x_tx *tx,
 	if (nr_frags <= 0) {
 		tx->frame_data0 |= TX_DESC_DATA0_LS_;
 		tx->frame_data0 |= TX_DESC_DATA0_IOC_;
+		tx->frame_last = tx->frame_first;
 	}
 	tx_descriptor = &tx->ring_cpu_ptr[tx->frame_tail];
 	tx_descriptor->data0 = cpu_to_le32(tx->frame_data0);
@@ -1544,6 +1545,7 @@ static int lan743x_tx_frame_add_fragment(struct lan743x_tx *tx,
 		tx->frame_first = 0;
 		tx->frame_data0 = 0;
 		tx->frame_tail = 0;
+		tx->frame_last = 0;
 		return -ENOMEM;
 	}
 
@@ -1584,16 +1586,18 @@ static void lan743x_tx_frame_end(struct lan743x_tx *tx,
 	    TX_DESC_DATA0_DTYPE_DATA_) {
 		tx->frame_data0 |= TX_DESC_DATA0_LS_;
 		tx->frame_data0 |= TX_DESC_DATA0_IOC_;
+		tx->frame_last = tx->frame_tail;
 	}
 
-	tx_descriptor = &tx->ring_cpu_ptr[tx->frame_tail];
-	buffer_info = &tx->buffer_info[tx->frame_tail];
+	tx_descriptor = &tx->ring_cpu_ptr[tx->frame_last];
+	buffer_info = &tx->buffer_info[tx->frame_last];
 	buffer_info->skb = skb;
 	if (time_stamp)
 		buffer_info->flags |= TX_BUFFER_INFO_FLAG_TIMESTAMP_REQUESTED;
 	if (ignore_sync)
 		buffer_info->flags |= TX_BUFFER_INFO_FLAG_IGNORE_SYNC;
 
+	tx_descriptor = &tx->ring_cpu_ptr[tx->frame_tail];
 	tx_descriptor->data0 = cpu_to_le32(tx->frame_data0);
 	tx->frame_tail = lan743x_tx_next_index(tx, tx->frame_tail);
 	tx->last_tail = tx->frame_tail;
drivers/net/ethernet/microchip/lan743x_main.h +1 -0
index 751f2bc9ce84..2a40cc827b18 100644
@@ -657,6 +657,7 @@ struct lan743x_tx {
 	u32		frame_first;
 	u32		frame_data0;
 	u32		frame_tail;
+	u32		frame_last;
 
 	struct lan743x_tx_buffer_info *buffer_info;
 
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c +5 -2
index 256b19f68cae..bf510d3882cf 100644
@@ -1485,8 +1485,11 @@ static int qlcnic_sriov_channel_cfg_cmd(struct qlcnic_adapter *adapter, u8 cmd_o
 	}
 
 	cmd_op = (cmd.rsp.arg[0] & 0xff);
-	if (cmd.rsp.arg[0] >> 25 == 2)
-		return 2;
+	if (cmd.rsp.arg[0] >> 25 == 2) {
+		ret = 2;
+		goto out;
+	}
+
 	if (cmd_op == QLCNIC_BC_CMD_CHANNEL_INIT)
 		set_bit(QLC_BC_VF_STATE, &vf->state);
 	else
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +1 -1
index 958bbcfc2668..d04bc6597e0f 100644
@@ -936,7 +936,7 @@ static int sun8i_dwmac_set_syscon(struct device *dev,
 		/* of_mdio_parse_addr returns a valid (0 ~ 31) PHY
 		 * address. No need to mask it again.
 		 */
-		reg |= 1 << H3_EPHY_ADDR_SHIFT;
+		reg |= ret << H3_EPHY_ADDR_SHIFT;
 	} else {
 		/* For SoCs without internal PHY the PHY selection bit should be
 		 * set to 0 (external PHY).
drivers/net/ethernet/ti/cpsw_new.c +1 -0
index a1ee205d6a88..d6f8d3e757a2 100644
@@ -1427,6 +1427,7 @@ static int cpsw_create_ports(struct cpsw_common *cpsw)
 		ndev->netdev_ops = &cpsw_netdev_ops;
 		ndev->ethtool_ops = &cpsw_ethtool_ops;
 		SET_NETDEV_DEV(ndev, dev);
+		ndev->dev.of_node = slave_data->slave_node;
 
 		if (!napi_ndev) {
 			/* CPSW Host port CPDMA interface is shared between
drivers/net/ieee802154/ca8210.c +4 -5
index 9a082910ec59..35e2b7eb3076 100644
@@ -1488,8 +1488,7 @@ static u8 mcps_data_request(
 	command.pdata.data_req.src_addr_mode = src_addr_mode;
 	command.pdata.data_req.dst.mode = dst_address_mode;
 	if (dst_address_mode != MAC_MODE_NO_ADDR) {
-		command.pdata.data_req.dst.pan_id[0] = LS_BYTE(dst_pan_id);
-		command.pdata.data_req.dst.pan_id[1] = MS_BYTE(dst_pan_id);
+		put_unaligned_le16(dst_pan_id, command.pdata.data_req.dst.pan_id);
 		if (dst_address_mode == MAC_MODE_SHORT_ADDR) {
 			command.pdata.data_req.dst.address[0] = LS_BYTE(
 				dst_addr->short_address
@@ -1838,12 +1837,12 @@ static int ca8210_skb_rx(
 	}
 	hdr.source.mode = data_ind[0];
 	dev_dbg(&priv->spi->dev, "srcAddrMode: %#03x\n", hdr.source.mode);
-	hdr.source.pan_id = *(u16 *)&data_ind[1];
+	hdr.source.pan_id = cpu_to_le16(get_unaligned_le16(&data_ind[1]));
 	dev_dbg(&priv->spi->dev, "srcPanId: %#06x\n", hdr.source.pan_id);
 	memcpy(&hdr.source.extended_addr, &data_ind[3], 8);
 	hdr.dest.mode = data_ind[11];
 	dev_dbg(&priv->spi->dev, "dstAddrMode: %#03x\n", hdr.dest.mode);
-	hdr.dest.pan_id = *(u16 *)&data_ind[12];
+	hdr.dest.pan_id = cpu_to_le16(get_unaligned_le16(&data_ind[12]));
 	dev_dbg(&priv->spi->dev, "dstPanId: %#06x\n", hdr.dest.pan_id);
 	memcpy(&hdr.dest.extended_addr, &data_ind[14], 8);
 
@@ -1970,7 +1969,7 @@ static int ca8210_skb_tx(
 	status =  mcps_data_request(
 		header.source.mode,
 		header.dest.mode,
-		header.dest.pan_id,
+		le16_to_cpu(header.dest.pan_id),
 		(union macaddr *)&header.dest.extended_addr,
 		skb->len - mac_len,
 		&skb->data[mac_len],
drivers/net/vxlan/vxlan_core.c +9 -9
index ec67d2eb05ec..7d7aa7d76880 100644
@@ -333,9 +333,9 @@ static int vxlan_fdb_info(struct sk_buff *skb, struct vxlan_dev *vxlan,
 			be32_to_cpu(fdb->vni)))
 		goto nla_put_failure;
 
-	ci.ndm_used	 = jiffies_to_clock_t(now - fdb->used);
+	ci.ndm_used	 = jiffies_to_clock_t(now - READ_ONCE(fdb->used));
 	ci.ndm_confirmed = 0;
-	ci.ndm_updated	 = jiffies_to_clock_t(now - fdb->updated);
+	ci.ndm_updated	 = jiffies_to_clock_t(now - READ_ONCE(fdb->updated));
 	ci.ndm_refcnt	 = 0;
 
 	if (nla_put(skb, NDA_CACHEINFO, sizeof(ci), &ci))
@@ -541,8 +541,8 @@ static struct vxlan_fdb *vxlan_find_mac(struct vxlan_dev *vxlan,
 	struct vxlan_fdb *f;
 
 	f = __vxlan_find_mac(vxlan, mac, vni);
-	if (f && f->used != jiffies)
-		f->used = jiffies;
+	if (f && READ_ONCE(f->used) != jiffies)
+		WRITE_ONCE(f->used, jiffies);
 
 	return f;
 }
@@ -1072,12 +1072,12 @@ static int vxlan_fdb_update_existing(struct vxlan_dev *vxlan,
 	    !(f->flags & NTF_VXLAN_ADDED_BY_USER)) {
 		if (f->state != state) {
 			f->state = state;
-			f->updated = jiffies;
+			WRITE_ONCE(f->updated, jiffies);
 			notify = 1;
 		}
 		if (f->flags != fdb_flags) {
 			f->flags = fdb_flags;
-			f->updated = jiffies;
+			WRITE_ONCE(f->updated, jiffies);
 			notify = 1;
 		}
 	}
@@ -1111,7 +1111,7 @@ static int vxlan_fdb_update_existing(struct vxlan_dev *vxlan,
 	}
 
 	if (ndm_flags & NTF_USE)
-		f->used = jiffies;
+		WRITE_ONCE(f->used, jiffies);
 
 	if (notify) {
 		if (rd == NULL)
@@ -1524,7 +1524,7 @@ static bool vxlan_snoop(struct net_device *dev,
 				    src_mac, &rdst->remote_ip.sa, &src_ip->sa);
 
 		rdst->remote_ip = *src_ip;
-		f->updated = jiffies;
+		WRITE_ONCE(f->updated, jiffies);
 		vxlan_fdb_notify(vxlan, f, rdst, RTM_NEWNEIGH, true, NULL);
 	} else {
 		u32 hash_index = fdb_head_index(vxlan, src_mac, vni);
@@ -2999,7 +2999,7 @@ static void vxlan_cleanup(struct timer_list *t)
 			if (f->flags & NTF_EXT_LEARNED)
 				continue;
 
-			timeout = f->used + vxlan->cfg.age_interval * HZ;
+			timeout = READ_ONCE(f->used) + vxlan->cfg.age_interval * HZ;
 			if (time_before_eq(timeout, jiffies)) {
 				netdev_dbg(vxlan->dev,
 					   "garbage collect %pM\n",
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c +4 -2
index 9fb68c2dc7e3..8c12aaffe719 100644
@@ -903,14 +903,16 @@ brcmf_usb_dl_writeimage(struct brcmf_usbdev_info *devinfo, u8 *fw, int fwlen)
 	}
 
 	/* 1) Prepare USB boot loader for runtime image */
-	brcmf_usb_dl_cmd(devinfo, DL_START, &state, sizeof(state));
+	err = brcmf_usb_dl_cmd(devinfo, DL_START, &state, sizeof(state));
+	if (err)
+		goto fail;
 
 	rdlstate = le32_to_cpu(state.state);
 	rdlbytes = le32_to_cpu(state.bytes);
 
 	/* 2) Check we are in the Waiting state */
 	if (rdlstate != DL_WAITING) {
-		brcmf_err("Failed to DL_START\n");
+		brcmf_err("Invalid DL state: %u\n", rdlstate);
 		err = -EINVAL;
 		goto fail;
 	}
drivers/net/wireless/mediatek/mt76/dma.c +1 -0
index 7991705e9d13..082eec4208c5 100644
@@ -666,6 +666,7 @@ void mt76_dma_cleanup(struct mt76_dev *dev)
 	int i;
 
 	mt76_worker_disable(&dev->tx_worker);
+	napi_disable(&dev->tx_napi);
 	netif_napi_del(&dev->tx_napi);
 	for (i = 0; i < ARRAY_SIZE(dev->q_tx); i++)
 		mt76_dma_tx_cleanup(dev, i, true);
drivers/net/wireless/realtek/rtw88/main.c +15 -25
index 91eea38f62cd..ab302e2ce9a2 100644
@@ -1141,6 +1141,7 @@ static void rtw_init_ht_cap(struct rtw_dev *rtwdev,
 			    struct ieee80211_sta_ht_cap *ht_cap)
 {
 	struct rtw_efuse *efuse = &rtwdev->efuse;
+	int i;
 
 	ht_cap->ht_supported = true;
 	ht_cap->cap = 0;
@@ -1158,25 +1159,20 @@ static void rtw_init_ht_cap(struct rtw_dev *rtwdev,
 	ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
 	ht_cap->ampdu_density = IEEE80211_HT_MPDU_DENSITY_16;
 	ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
-	if (efuse->hw_cap.nss > 1) {
-		ht_cap->mcs.rx_mask[0] = 0xFF;
-		ht_cap->mcs.rx_mask[1] = 0xFF;
-		ht_cap->mcs.rx_mask[4] = 0x01;
-		ht_cap->mcs.rx_highest = cpu_to_le16(300);
-	} else {
-		ht_cap->mcs.rx_mask[0] = 0xFF;
-		ht_cap->mcs.rx_mask[1] = 0x00;
-		ht_cap->mcs.rx_mask[4] = 0x01;
-		ht_cap->mcs.rx_highest = cpu_to_le16(150);
-	}
+
+	for (i = 0; i < efuse->hw_cap.nss; i++)
+		ht_cap->mcs.rx_mask[i] = 0xFF;
+	ht_cap->mcs.rx_mask[4] = 0x01;
+	ht_cap->mcs.rx_highest = cpu_to_le16(150 * efuse->hw_cap.nss);
 }
 
 static void rtw_init_vht_cap(struct rtw_dev *rtwdev,
 			     struct ieee80211_sta_vht_cap *vht_cap)
 {
 	struct rtw_efuse *efuse = &rtwdev->efuse;
-	u16 mcs_map;
+	u16 mcs_map = 0;
 	__le16 highest;
+	int i;
 
 	if (efuse->hw_cap.ptcl != EFUSE_HW_CAP_IGNORE &&
 	    efuse->hw_cap.ptcl != EFUSE_HW_CAP_PTCL_VHT)
@@ -1199,21 +1195,15 @@ static void rtw_init_vht_cap(struct rtw_dev *rtwdev,
 	if (rtw_chip_has_rx_ldpc(rtwdev))
 		vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC;
 
-	mcs_map = IEEE80211_VHT_MCS_SUPPORT_0_9 << 0 |
-		  IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 |
-		  IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 |
-		  IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 |
-		  IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 |
-		  IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 |
-		  IEEE80211_VHT_MCS_NOT_SUPPORTED << 14;
-	if (efuse->hw_cap.nss > 1) {
-		highest = cpu_to_le16(780);
-		mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << 2;
-	} else {
-		highest = cpu_to_le16(390);
-		mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << 2;
+	for (i = 0; i < 8; i++) {
+		if (i < efuse->hw_cap.nss)
+			mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i * 2);
+		else
+			mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2);
 	}
 
+	highest = cpu_to_le16(390 * efuse->hw_cap.nss);
+
 	vht_cap->vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map);
 	vht_cap->vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
 	vht_cap->vht_mcs.rx_highest = highest;
drivers/net/wireless/realtek/rtw88/reg.h +2 -1
index 9088bfb2a315..27de6eeb4ad6 100644
@@ -107,6 +107,7 @@
 #define BIT_SHIFT_ROM_PGE	16
 #define BIT_FW_INIT_RDY		BIT(15)
 #define BIT_FW_DW_RDY		BIT(14)
+#define BIT_CPU_CLK_SEL		(BIT(12) | BIT(13))
 #define BIT_RPWM_TOGGLE		BIT(7)
 #define BIT_RAM_DL_SEL		BIT(7)	/* legacy only */
 #define BIT_DMEM_CHKSUM_OK	BIT(6)
@@ -124,7 +125,7 @@
 				 BIT_CHECK_SUM_OK)
 #define FW_READY_LEGACY		(BIT_MCUFWDL_RDY | BIT_FWDL_CHK_RPT |	       \
 				 BIT_WINTINI_RDY | BIT_RAM_DL_SEL)
-#define FW_READY_MASK		0xffff
+#define FW_READY_MASK		(0xffff & ~BIT_CPU_CLK_SEL)
 
 #define REG_MCU_TST_CFG		0x84
 #define VAL_FW_TRIGGER		0x1
drivers/net/wireless/realtek/rtw88/rtw8822b.c +8 -6
index dbfd67c3f598..1478cb22cf5f 100644
@@ -954,11 +954,11 @@ static void rtw8822b_query_rx_desc(struct rtw_dev *rtwdev, u8 *rx_desc,
 }
 
 static void
-rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
+rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path,
+				    u8 rs, u32 *phy_pwr_idx)
 {
 	struct rtw_hal *hal = &rtwdev->hal;
 	static const u32 offset_txagc[2] = {0x1d00, 0x1d80};
-	static u32 phy_pwr_idx;
 	u8 rate, rate_idx, pwr_index, shift;
 	int j;
 
@@ -966,12 +966,12 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
 		rate = rtw_rate_section[rs][j];
 		pwr_index = hal->tx_pwr_tbl[path][rate];
 		shift = rate & 0x3;
-		phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
+		*phy_pwr_idx |= ((u32)pwr_index << (shift * 8));
 		if (shift == 0x3) {
 			rate_idx = rate & 0xfc;
 			rtw_write32(rtwdev, offset_txagc[path] + rate_idx,
-				    phy_pwr_idx);
-			phy_pwr_idx = 0;
+				    *phy_pwr_idx);
+			*phy_pwr_idx = 0;
 		}
 	}
 }
@@ -979,11 +979,13 @@ rtw8822b_set_tx_power_index_by_rate(struct rtw_dev *rtwdev, u8 path, u8 rs)
 static void rtw8822b_set_tx_power_index(struct rtw_dev *rtwdev)
 {
 	struct rtw_hal *hal = &rtwdev->hal;
+	u32 phy_pwr_idx = 0;
 	int rs, path;
 
 	for (path = 0; path < hal->rf_path_num; path++) {
 		for (rs = 0; rs < RTW_RATE_SECTION_MAX; rs++)
-			rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs);
+			rtw8822b_set_tx_power_index_by_rate(rtwdev, path, rs,
+							    &phy_pwr_idx);
 	}
 }
 
drivers/net/wireless/realtek/rtw88/util.c +2 -1
index 2c515af214e7..bfd017d53fef 100644
@@ -101,7 +101,8 @@ void rtw_desc_to_mcsrate(u16 rate, u8 *mcs, u8 *nss)
 		*nss = 4;
 		*mcs = rate - DESC_RATEVHT4SS_MCS0;
 	} else if (rate >= DESC_RATEMCS0 &&
-		   rate <= DESC_RATEMCS15) {
+		   rate <= DESC_RATEMCS31) {
+		*nss = 0;
 		*mcs = rate - DESC_RATEMCS0;
 	}
 }
drivers/nvdimm/label.c +2 -1
index 9251441fd8a3..5251058adc4d 100644
@@ -421,7 +421,8 @@ int nd_label_data_init(struct nvdimm_drvdata *ndd)
 	if (ndd->data)
 		return 0;
 
-	if (ndd->nsarea.status || ndd->nsarea.max_xfer == 0) {
+	if (ndd->nsarea.status || ndd->nsarea.max_xfer == 0 ||
+	    ndd->nsarea.config_size == 0) {
 		dev_dbg(ndd->dev, "failed to init config data area: (%u:%u)\n",
 			ndd->nsarea.max_xfer, ndd->nsarea.config_size);
 		return -ENXIO;
drivers/nvme/host/core.c +2 -1
index b19fba64beb0..cb9b38e142ed 100644
@@ -4429,7 +4429,8 @@ static void nvme_fw_act_work(struct work_struct *work)
 		msleep(100);
 	}
 
-	if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_LIVE))
+	if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_CONNECTING) ||
+	    !nvme_change_ctrl_state(ctrl, NVME_CTRL_LIVE))
 		return;
 
 	nvme_start_queues(ctrl);
drivers/nvme/host/tcp.c +29 -2
index 93835c019b8e..7709a604d0be 100644
@@ -1573,7 +1573,7 @@ static void __nvme_tcp_stop_queue(struct nvme_tcp_queue *queue)
 	cancel_work_sync(&queue->io_work);
 }
 
-static void nvme_tcp_stop_queue(struct nvme_ctrl *nctrl, int qid)
+static void nvme_tcp_stop_queue_nowait(struct nvme_ctrl *nctrl, int qid)
 {
 	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
 	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
@@ -1584,6 +1584,31 @@ static void nvme_tcp_stop_queue(struct nvme_ctrl *nctrl, int qid)
 	mutex_unlock(&queue->queue_lock);
 }
 
+static void nvme_tcp_wait_queue(struct nvme_ctrl *nctrl, int qid)
+{
+	struct nvme_tcp_ctrl *ctrl = to_tcp_ctrl(nctrl);
+	struct nvme_tcp_queue *queue = &ctrl->queues[qid];
+	int timeout = 100;
+
+	while (timeout > 0) {
+		if (!test_bit(NVME_TCP_Q_ALLOCATED, &queue->flags) ||
+		    !sk_wmem_alloc_get(queue->sock->sk))
+			return;
+		msleep(2);
+		timeout -= 2;
+	}
+	dev_warn(nctrl->device,
+		 "qid %d: timeout draining sock wmem allocation expired\n",
+		 qid);
+}
+
+static void nvme_tcp_stop_queue(struct nvme_ctrl *nctrl, int qid)
+{
+	nvme_tcp_stop_queue_nowait(nctrl, qid);
+	nvme_tcp_wait_queue(nctrl, qid);
+}
+
+
 static void nvme_tcp_setup_sock_ops(struct nvme_tcp_queue *queue)
 {
 	write_lock_bh(&queue->sock->sk->sk_callback_lock);
@@ -1691,7 +1716,9 @@ static void nvme_tcp_stop_io_queues(struct nvme_ctrl *ctrl)
 	int i;
 
 	for (i = 1; i < ctrl->queue_count; i++)
-		nvme_tcp_stop_queue(ctrl, i);
+		nvme_tcp_stop_queue_nowait(ctrl, i);
+	for (i = 1; i < ctrl->queue_count; i++)
+		nvme_tcp_wait_queue(ctrl, i);
 }
 
 static int nvme_tcp_start_io_queues(struct nvme_ctrl *ctrl)
drivers/nvme/target/tcp.c +3 -0
index 754a963867dc..6019eee1f9bd 100644
@@ -1395,6 +1395,9 @@ static void nvmet_tcp_restore_socket_callbacks(struct nvmet_tcp_queue *queue)
 {
 	struct socket *sock = queue->sock;
 
+	if (!queue->state_change)
+		return;
+
 	write_lock_bh(&sock->sk->sk_callback_lock);
 	sock->sk->sk_data_ready =  queue->data_ready;
 	sock->sk->sk_state_change = queue->state_change;
drivers/of/device.c +4 -3
index 3a547793135c..93f08f18f6b3 100644
@@ -231,14 +231,15 @@ static ssize_t of_device_get_modalias(struct device *dev, char *str, ssize_t len
 	csize = snprintf(str, len, "of:N%pOFn%c%s", dev->of_node, 'T',
 			 of_node_get_device_type(dev->of_node));
 	tsize = csize;
+	if (csize >= len)
+		csize = len > 0 ? len - 1 : 0;
 	len -= csize;
-	if (str)
-		str += csize;
+	str += csize;
 
 	of_property_for_each_string(dev->of_node, "compatible", p, compat) {
 		csize = strlen(compat) + 1;
 		tsize += csize;
-		if (csize > len)
+		if (csize >= len)
 			continue;
 
 		csize = snprintf(str, len, "C%s", compat);
drivers/pci/controller/dwc/pci-imx6.c +2 -3
index 8117f2dad86c..a68c7e273586 100644
@@ -1092,11 +1092,10 @@ static int imx6_pcie_probe(struct platform_device *pdev)
 		if (IS_ERR(imx6_pcie->pcie_aux))
 			return dev_err_probe(dev, PTR_ERR(imx6_pcie->pcie_aux),
 					     "pcie_aux clock source missing or invalid\n");
-		fallthrough;
-	case IMX7D:
 		if (dbi_base->start == IMX8MQ_PCIE2_BASE_ADDR)
 			imx6_pcie->controller_id = 1;
-
+		fallthrough;
+	case IMX7D:
 		imx6_pcie->pciephy_reset = devm_reset_control_get_exclusive(dev,
 									    "pciephy");
 		if (IS_ERR(imx6_pcie->pciephy_reset)) {
drivers/pci/controller/pcie-brcmstb.c +3 -2
index bbc9786bc36c..85be07e8b418 100644
@@ -300,8 +300,8 @@ static int brcm_pcie_encode_ibar_size(u64 size)
 	if (log2_in >= 12 && log2_in <= 15)
 		/* Covers 4KB to 32KB (inclusive) */
 		return (log2_in - 12) + 0x1c;
-	else if (log2_in >= 16 && log2_in <= 35)
-		/* Covers 64KB to 32GB, (inclusive) */
+	else if (log2_in >= 16 && log2_in <= 36)
+		/* Covers 64KB to 64GB, (inclusive) */
 		return log2_in - 15;
 	/* Something is awry so disable */
 	return 0;
@@ -1326,3 +1326,4 @@ module_platform_driver(brcm_pcie_driver);
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Broadcom STB PCIe RC driver");
 MODULE_AUTHOR("Broadcom");
+MODULE_SOFTDEP("pre: irq_bcm2712_mip");
drivers/pci/setup-bus.c +2 -4
index a159bfdfa251..04c3ae8efc0f 100644
@@ -806,11 +806,9 @@ static resource_size_t calculate_iosize(resource_size_t size,
 	size = (size & 0xff) + ((size & ~0xffUL) << 2);
 #endif
 	size = size + size1;
-	if (size < old_size)
-		size = old_size;
 
-	size = ALIGN(max(size, add_size) + children_add_size, align);
-	return size;
+	size = max(size, add_size) + children_add_size;
+	return ALIGN(max(size, old_size), align);
 }
 
 static resource_size_t calculate_memsize(resource_size_t size,
drivers/perf/arm-cmn.c +1 -1
index ac4428e8fae9..4294ba946b9c 100644
@@ -1512,6 +1512,7 @@ static int arm_cmn_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	cmn->dev = &pdev->dev;
+	cmn->cpu = raw_smp_processor_id();
 	platform_set_drvdata(pdev, cmn);
 
 	if (has_acpi_companion(cmn->dev))
@@ -1533,7 +1534,6 @@ static int arm_cmn_probe(struct platform_device *pdev)
 	if (err)
 		return err;
 
-	cmn->cpu = raw_smp_processor_id();
 	cmn->pmu = (struct pmu) {
 		.module = THIS_MODULE,
 		.attr_groups = arm_cmn_attr_groups,
drivers/phy/phy-core.c +4 -3
index 1bcdef37e8aa..dac0f7f4f3d3 100644
@@ -360,13 +360,14 @@ EXPORT_SYMBOL_GPL(phy_power_off);
 
 int phy_set_mode_ext(struct phy *phy, enum phy_mode mode, int submode)
 {
-	int ret;
+	int ret = 0;
 
-	if (!phy || !phy->ops->set_mode)
+	if (!phy)
 		return 0;
 
 	mutex_lock(&phy->mutex);
-	ret = phy->ops->set_mode(phy, mode, submode);
+	if (phy->ops->set_mode)
+		ret = phy->ops->set_mode(phy, mode, submode);
 	if (!ret)
 		phy->attrs.mode = mode;
 	mutex_unlock(&phy->mutex);
drivers/phy/renesas/phy-rcar-gen3-usb2.c +5 -2
index c0802152f30b..ea01a121b8fc 100644
@@ -429,8 +429,11 @@ static int rcar_gen3_phy_usb2_init(struct phy *p)
 	val = readl(usb2_base + USB2_INT_ENABLE);
 	val |= USB2_INT_ENABLE_UCOM_INTEN | rphy->int_enable_bits;
 	writel(val, usb2_base + USB2_INT_ENABLE);
-	writel(USB2_SPD_RSM_TIMSET_INIT, usb2_base + USB2_SPD_RSM_TIMSET);
-	writel(USB2_OC_TIMSET_INIT, usb2_base + USB2_OC_TIMSET);
+
+	if (!rcar_gen3_is_any_rphy_initialized(channel)) {
+		writel(USB2_SPD_RSM_TIMSET_INIT, usb2_base + USB2_SPD_RSM_TIMSET);
+		writel(USB2_OC_TIMSET_INIT, usb2_base + USB2_OC_TIMSET);
+	}
 
 	/* Initialize otg part */
 	if (channel->is_otg_channel) {
drivers/phy/tegra/xusb.c +4 -4
index 8bd8d1f8eba2..e654ddb1a42b 100644
@@ -536,16 +536,16 @@ static int tegra_xusb_port_init(struct tegra_xusb_port *port,
 
 	err = dev_set_name(&port->dev, "%s-%u", name, index);
 	if (err < 0)
-		goto unregister;
+		goto put_device;
 
 	err = device_add(&port->dev);
 	if (err < 0)
-		goto unregister;
+		goto put_device;
 
 	return 0;
 
-unregister:
-	device_unregister(&port->dev);
+put_device:
+	put_device(&port->dev);
 	return err;
 }
 
drivers/pinctrl/bcm/pinctrl-bcm281xx.c +22 -22

136 lines not on this page · raw message

drivers/pinctrl/devicetree.c +8 -2
index 0220228c5040..d9279fc7be83 100644
@@ -143,10 +143,14 @@ static int dt_to_map_one_config(struct pinctrl *p,
 		pctldev = get_pinctrl_dev_from_of_node(np_pctldev);
 		if (pctldev)
 			break;
-		/* Do not defer probing of hogs (circular loop) */
+		/*
+		 * Do not defer probing of hogs (circular loop)
+		 *
+		 * Return 1 to let the caller catch the case.
+		 */
 		if (np_pctldev == p->dev->of_node) {
 			of_node_put(np_pctldev);
-			return -ENODEV;
+			return 1;
 		}
 	}
 	of_node_put(np_pctldev);
@@ -265,6 +269,8 @@ int pinctrl_dt_to_map(struct pinctrl *p, struct pinctrl_dev *pctldev)
 			ret = dt_to_map_one_config(p, pctldev, statename,
 						   np_config);
 			of_node_put(np_config);
+			if (ret == 1)
+				continue;
 			if (ret < 0)
 				goto err;
 		}
drivers/pinctrl/meson/pinctrl-meson.c +1 -1
index 20683cd072bb..ae72edba8a1f 100644
@@ -483,7 +483,7 @@ static int meson_pinconf_get(struct pinctrl_dev *pcdev, unsigned int pin,
 	case PIN_CONFIG_BIAS_PULL_DOWN:
 	case PIN_CONFIG_BIAS_PULL_UP:
 		if (meson_pinconf_get_pull(pc, pin) == param)
-			arg = 1;
+			arg = 60000;
 		else
 			return -EINVAL;
 		break;
drivers/platform/x86/asus-wmi.c +2 -1
index 931656494768..265232d1b9a8 100644
@@ -2739,7 +2739,8 @@ static int asus_wmi_add(struct platform_device *pdev)
 		goto fail_leds;
 
 	asus_wmi_get_devstate(asus, ASUS_WMI_DEVID_WLAN, &result);
-	if (result & (ASUS_WMI_DSTS_PRESENCE_BIT | ASUS_WMI_DSTS_USER_BIT))
+	if ((result & (ASUS_WMI_DSTS_PRESENCE_BIT | ASUS_WMI_DSTS_USER_BIT)) ==
+	    (ASUS_WMI_DSTS_PRESENCE_BIT | ASUS_WMI_DSTS_USER_BIT))
 		asus->driver->wlan_ctrl_by_user = 1;
 
 	if (!(asus->driver->wlan_ctrl_by_user && ashs_present())) {
drivers/platform/x86/fujitsu-laptop.c +29 -4
index 80929380ec7e..04ccfdd99e27 100644
@@ -17,13 +17,13 @@
 /*
  * fujitsu-laptop.c - Fujitsu laptop support, providing access to additional
  * features made available on a range of Fujitsu laptops including the
- * P2xxx/P5xxx/S6xxx/S7xxx series.
+ * P2xxx/P5xxx/S2xxx/S6xxx/S7xxx series.
  *
  * This driver implements a vendor-specific backlight control interface for
  * Fujitsu laptops and provides support for hotkeys present on certain Fujitsu
  * laptops.
  *
- * This driver has been tested on a Fujitsu Lifebook S6410, S7020 and
+ * This driver has been tested on a Fujitsu Lifebook S2110, S6410, S7020 and
  * P8010.  It should work on most P-series and S-series Lifebooks, but
  * YMMV.
  *
@@ -102,7 +102,11 @@
 #define KEY2_CODE			0x411
 #define KEY3_CODE			0x412
 #define KEY4_CODE			0x413
-#define KEY5_CODE			0x420
+#define KEY5_CODE			0x414
+#define KEY6_CODE			0x415
+#define KEY7_CODE			0x416
+#define KEY8_CODE			0x417
+#define KEY9_CODE			0x420
 
 /* Hotkey ringbuffer limits */
 #define MAX_HOTKEY_RINGBUFFER_SIZE	100
@@ -450,7 +454,7 @@ static const struct key_entry keymap_default[] = {
 	{ KE_KEY, KEY2_CODE,            { KEY_PROG2 } },
 	{ KE_KEY, KEY3_CODE,            { KEY_PROG3 } },
 	{ KE_KEY, KEY4_CODE,            { KEY_PROG4 } },
-	{ KE_KEY, KEY5_CODE,            { KEY_RFKILL } },
+	{ KE_KEY, KEY9_CODE,            { KEY_RFKILL } },
 	/* Soft keys read from status flags */
 	{ KE_KEY, FLAG_RFKILL,          { KEY_RFKILL } },
 	{ KE_KEY, FLAG_TOUCHPAD_TOGGLE, { KEY_TOUCHPAD_TOGGLE } },
@@ -474,6 +478,18 @@ static const struct key_entry keymap_p8010[] = {
 	{ KE_END, 0 }
 };
 
+static const struct key_entry keymap_s2110[] = {
+	{ KE_KEY, KEY1_CODE, { KEY_PROG1 } }, /* "A" */
+	{ KE_KEY, KEY2_CODE, { KEY_PROG2 } }, /* "B" */
+	{ KE_KEY, KEY3_CODE, { KEY_WWW } },   /* "Internet" */
+	{ KE_KEY, KEY4_CODE, { KEY_EMAIL } }, /* "E-mail" */
+	{ KE_KEY, KEY5_CODE, { KEY_STOPCD } },
+	{ KE_KEY, KEY6_CODE, { KEY_PLAYPAUSE } },
+	{ KE_KEY, KEY7_CODE, { KEY_PREVIOUSSONG } },
+	{ KE_KEY, KEY8_CODE, { KEY_NEXTSONG } },
+	{ KE_END, 0 }
+};
+
 static const struct key_entry *keymap = keymap_default;
 
 static int fujitsu_laptop_dmi_keymap_override(const struct dmi_system_id *id)
@@ -511,6 +527,15 @@ static const struct dmi_system_id fujitsu_laptop_dmi_table[] = {
 		},
 		.driver_data = (void *)keymap_p8010
 	},
+	{
+		.callback = fujitsu_laptop_dmi_keymap_override,
+		.ident = "Fujitsu LifeBook S2110",
+		.matches = {
+			DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
+			DMI_MATCH(DMI_PRODUCT_NAME, "LIFEBOOK S2110"),
+		},
+		.driver_data = (void *)keymap_s2110
+	},
 	{}
 };
 
drivers/platform/x86/thinkpad_acpi.c +7 -0
index c07b3bcbf795..5a8434da60e7 100644
@@ -195,6 +195,7 @@ enum tpacpi_hkey_event_t {
 	/* Thermal events */
 	TP_HKEY_EV_ALARM_BAT_HOT	= 0x6011, /* battery too hot */
 	TP_HKEY_EV_ALARM_BAT_XHOT	= 0x6012, /* battery critically hot */
+	TP_HKEY_EV_ALARM_BAT_LIM_CHANGE	= 0x6013, /* battery charge limit changed*/
 	TP_HKEY_EV_ALARM_SENSOR_HOT	= 0x6021, /* sensor too hot */
 	TP_HKEY_EV_ALARM_SENSOR_XHOT	= 0x6022, /* sensor critically hot */
 	TP_HKEY_EV_THM_TABLE_CHANGED	= 0x6030, /* windows; thermal table changed */
@@ -4049,6 +4050,10 @@ static bool hotkey_notify_6xxx(const u32 hkey,
 		pr_alert("THERMAL EMERGENCY: battery is extremely hot!\n");
 		/* recommended action: immediate sleep/hibernate */
 		break;
+	case TP_HKEY_EV_ALARM_BAT_LIM_CHANGE:
+		pr_debug("Battery Info: battery charge threshold changed\n");
+		/* User changed charging threshold. No action needed */
+		return true;
 	case TP_HKEY_EV_ALARM_SENSOR_HOT:
 		pr_crit("THERMAL ALARM: a sensor reports something is too hot!\n");
 		/* recommended action: warn user through gui, that */
@@ -10233,6 +10238,8 @@ static int __must_check __init get_thinkpad_model_data(
 		tp->vendor = PCI_VENDOR_ID_IBM;
 	else if (dmi_name_in_vendors("LENOVO"))
 		tp->vendor = PCI_VENDOR_ID_LENOVO;
+	else if (dmi_name_in_vendors("NEC"))
+		tp->vendor = PCI_VENDOR_ID_LENOVO;
 	else
 		return 0;
 
drivers/regulator/ad5398.c +9 -3
index 75f432f61e91..f4d6e62bd963 100644
@@ -14,6 +14,7 @@
 #include <linux/platform_device.h>
 #include <linux/regulator/driver.h>
 #include <linux/regulator/machine.h>
+#include <linux/regulator/of_regulator.h>
 
 #define AD5398_CURRENT_EN_MASK	0x8000
 
@@ -221,15 +222,20 @@ static int ad5398_probe(struct i2c_client *client,
 	const struct ad5398_current_data_format *df =
 			(struct ad5398_current_data_format *)id->driver_data;
 
-	if (!init_data)
-		return -EINVAL;
-
 	chip = devm_kzalloc(&client->dev, sizeof(*chip), GFP_KERNEL);
[… more lines in the raw message]

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

drivers/rtc/rtc-ds1307.c +1 -3
index 07a9cc91671b..3a2401ce2ec9 100644

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

drivers/rtc/rtc-rv3032.c +1 -1
index 9e6166864bd7..acae15c34d12 100644

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

drivers/scsi/lpfc/lpfc_hbadisc.c +12 -5
index 3ff76ca147a5..353c360b0c6a 100644

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

drivers/scsi/mpt3sas/mpt3sas_ctl.c +10 -2
index edd26a2570fa..8ce77fbe4e3f 100644

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

drivers/scsi/st.c +24 -5
index 465fe83b49e9..23bbb062c2aa 100644

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

drivers/scsi/st.h +2 -0
index 95d2e7a7988d..c9947abb0a45 100644

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

drivers/soc/ti/k3-socinfo.c +12 -1
index bbbc2d2b7091..4d8948165487 100644

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

drivers/spi/spi-fsl-dspi.c +45 -1

46 lines not on this page · raw message

drivers/spi/spi-loopback-test.c +1 -1
index 4d4f77a186a9..89fccb9da1b8 100644

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

drivers/spi/spi-sun4i.c +4 -1
index 1fdfc6e6691d..a8fba310d700 100644

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

drivers/spi/spi-zynqmp-gqspi.c +8 -12
index 3d3ac48243eb..408b83882dae 100644

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

drivers/staging/axis-fifo/axis-fifo.c +3 -11
index 2bb1c2e9cb57..a005ddd6bc47 100644

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

drivers/staging/iio/adc/ad7816.c +1 -1
index 6c14d7bcdd67..081b17f49863 100644

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

drivers/target/iscsi/iscsi_target.c +1 -1
index 075e2a6fb474..48fe53323f84 100644

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

drivers/target/target_core_file.c +3 -0
index 18fbbe510d01..eb3eae8f799a 100644

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

drivers/target/target_core_iblock.c +4 -0
index f2bd2e207e0b..db4f1ae3d6fc 100644

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

drivers/target/target_core_sbc.c +6 -0
index 47c5f26e6012..f2809c44988b 100644

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

drivers/thermal/qoriq_thermal.c +13 -0
index 73049f9bea25..34a5fbcc3d20 100644

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

drivers/usb/chipidea/ci_hdrc_imx.c +17 -19
index a54c3cff6c28..03d883f5a4cc 100644

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

drivers/usb/class/usbtmc.c +36 -23

59 lines not on this page · raw message

drivers/usb/gadget/udc/tegra-xudc.c +4 -0
index 9d3e36c867e8..7f159ed1fa41 100644

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

drivers/usb/host/uhci-platform.c +1 -1
index be9e9db7cad1..c0834bac4c95 100644

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

drivers/usb/host/xhci-tegra.c +3 -0
index ffb09737b5d0..e2cd145ed495 100644

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

drivers/usb/typec/altmodes/displayport.c +9 -9
index def903e9d2ab..e0456e5e10b6 100644

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

drivers/usb/typec/tcpm/tcpm.c +1 -1
index c37240a34899..a6ee9fae875a 100644

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

drivers/usb/typec/ucsi/displayport.c +2 -0
index 4446c4066679..60c871fa58d6 100644

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

drivers/usb/typec/ucsi/ucsi_ccg.c +5 -0
index fb6211efb5d8..dffdb5eb506b 100644

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

drivers/video/fbdev/core/bitblit.c +2 -3
index 8e095b0982db..bb821b68f88c 100644

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

drivers/video/fbdev/core/fbcon.c +6 -4
index 6d58c8a5cb44..080b615a5581 100644

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

drivers/video/fbdev/core/fbcon.h +1 -37
index 0f16cbc99e6a..3e1ec454b8aa 100644

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

drivers/video/fbdev/core/fbcon_ccw.c +2 -3
index f75b24c32d49..40c7d5793ccf 100644

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

drivers/video/fbdev/core/fbcon_cw.c +2 -3
index cf03dc62f35d..933e4ed52d39 100644

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

drivers/video/fbdev/core/fbcon_ud.c +2 -3
index c5d2da731d68..abd23f37815f 100644

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

drivers/video/fbdev/core/tileblit.c +39 -6

45 lines not on this page · raw message

drivers/video/fbdev/fsl-diu-fb.c +1 -0
index 5d564e8670c5..6f2606932867 100644

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

drivers/xen/platform-pci.c +4 -0
index 804d8f4d0e73..e7a95f7926c4 100644

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

drivers/xen/swiotlb-xen.c +11 -7
index 000d02ea4f7d..d8efb8ea23a0 100644

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

drivers/xen/xenbus/xenbus.h +2 -0
index 2a93b7c9c159..f1576988a28a 100644

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

drivers/xen/xenbus/xenbus_comms.c +4 -5
index e5fda0256feb..82df2da1b880 100644

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

drivers/xen/xenbus/xenbus_dev_frontend.c +1 -1
index 0792fda49a15..c495cff3da30 100644

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

drivers/xen/xenbus/xenbus_probe.c +8 -6
index 743795d402cb..fb5358a73820 100644

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

drivers/xen/xenbus/xenbus_xs.c +16 -2
index 12e02eb01f59..a4dd92719e7a 100644

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

fs/btrfs/extent-tree.c +20 -5
index cf2b65be04b5..d652d4091b2b 100644

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

fs/btrfs/extent_io.c +5 -2
index 9cef930c4ecf..8498994ef5c6 100644

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

fs/btrfs/send.c +2 -4
index a9e72f42e91e..3e7bb24eb227 100644

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

fs/cifs/readdir.c +5 -2
index 799be3a5d25e..9e62d75f2465 100644

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

fs/coredump.c +75 -6

81 lines not on this page · raw message

fs/ext4/balloc.c +2 -2
index bdbf130416c7..be267cd9dea7 100644

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

fs/namespace.c +3 -6
index 2f97112657ad..869cc6e06d88 100644

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

fs/nfs/delegation.c +2 -1
index dbed8d44d805..f3bb987e9dba 100644

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

fs/nfs/filelayout/filelayoutdev.c +3 -3
index 86c3f7e69ec4..e6bf55e37521 100644

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

fs/nfs/flexfilelayout/flexfilelayout.c +1 -0
index 1af0b8ad83f2..ce9c2d1f54ae 100644

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

fs/nfs/flexfilelayout/flexfilelayoutdev.c +3 -3
index bfa7202ca7be..4b0cdddce6eb 100644

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

fs/nfs/nfs4proc.c +8 -1
index ac3fab214df1..1005ecf7c250 100644

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

fs/nfs/nfs4state.c +9 -1
index 807dd6f17e1b..e3cabced1aea 100644

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

fs/nfs/pnfs.c +9 -0
index 39ac4824b97d..1800836306a5 100644

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

fs/nfs/pnfs.h +3 -1
index a7cf84a6673b..f88b0cf00f21 100644

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

fs/nfs/pnfs_nfs.c +5 -4
index a2ad8bb87e2d..461c00c1338c 100644

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

fs/ocfs2/journal.c +58 -22

80 lines not on this page · raw message

fs/ocfs2/journal.h +1 -0
index bc5d77cb3c50..141182422eab 100644

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

fs/ocfs2/ocfs2.h +16 -1
index 0a8cd8e59a92..5cea6942c1bd 100644

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

fs/ocfs2/quota_local.c +2 -7
index 77d5aa90338f..1baa68c01c67 100644

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

fs/ocfs2/super.c +3 -0
index 1c59eca29b22..41ecdfa9b31e 100644

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

fs/orangefs/inode.c +3 -4
index 48f0547d4850..cd70ded309e4 100644

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

include/drm/drm_atomic.h +21 -2
index d07c851d255b..4a245d79ba6b 100644

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

include/linux/binfmts.h +1 -0
index c26ce73dcb08..2218121cf8f2 100644

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

include/linux/dma-mapping.h +8 -4
index a7d70cdee25e..fb48f8ba5dcc 100644

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

include/linux/ipv6.h +1 -0
index d758c131ed5e..89b3527e0367 100644

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

include/linux/mlx4/device.h +1 -1
index eb8169c03d89..0eb04d537038 100644

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

include/linux/pid.h +1 -0
index af308e15f174..f47868537209 100644

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

include/linux/rcupdate.h +3 -0
index 9db6710e6ee7..9b3e01db654e 100644

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

include/linux/rcutree.h +1 -1
index 59eb5cd567d7..92f04fcb8947 100644

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

include/linux/tpm.h +1 -1
index 95c3069823f9..7868e847eee0 100644

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

include/linux/types.h +2 -1
index a147977602b5..cb496d6a8d79 100644

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

include/media/v4l2-subdev.h +3 -1
index 73150520c02d..ffc6d122f91e 100644

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

include/net/netfilter/nf_tables.h +1 -1
index cb13e604dc34..25dd157728a3 100644

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

include/net/sch_generic.h +15 -0
index 4db11c4695cf..a4c670ad8c4a 100644

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

include/sound/pcm.h +2 -0
index 6554a9f71c62..c573c6a7da12 100644

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

include/trace/events/btrfs.h +1 -1
index 041be3ce1071..d8aa1d357024 100644

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

include/uapi/linux/types.h +1 -0
index f6d2f83cbe29..aa96c4589b71 100644

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

kernel/cgroup/cgroup.c +1 -1
index efeb0b742750..37d7a99be8f0 100644

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

kernel/fork.c +87 -11

98 lines not on this page · raw message

kernel/padata.c +2 -1
index c7aa60907fdf..1bd61add0915 100644

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

kernel/params.c +3 -1
index eb00abef7076..0df4a315760d 100644

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

kernel/rcu/tree_plugin.h +7 -4
index f5ba0740f9b5..c07a84197173 100644

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

kernel/time/posix-timers.c +1 -0
index 29569b1c3d8c..3a68c650ff2a 100644

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

kernel/trace/trace.c +3 -2
index ca39a647f2ef..d63d388acffc 100644

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

lib/dynamic_queue_limits.c +1 -1
index fde0aa244148..a75a9ca46b59 100644

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

mm/memcontrol.c +2 -4
index 14f26b3b0204..142b4d5e08fe 100644

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

mm/page_alloc.c +8 -0
index 4675a8df0ec9..59e1fcc05566 100644

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

net/bridge/br_nf_core.c +2 -5
index 8c69f0c95a8e..b8c8deb87407 100644

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

net/bridge/br_private.h +1 -0
index 2b88b17cc8b2..259b43b435a9 100644

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

net/can/bcm.c +54 -25

79 lines not on this page · raw message

net/can/gw.c +100 -65

165 lines not on this page · raw message

net/core/pktgen.c +8 -5
index c1e3d3bea128..57502e862846 100644

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

net/ipv4/fib_frontend.c +16 -2
index 5e2a003cd83c..f902cd8cb852 100644

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

net/ipv4/fib_rules.c +2 -2
index d279cb8ac158..a270951386e1 100644

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

net/ipv4/fib_trie.c +0 -22
index 1bdcdc79d43f..6c53381fa36f 100644

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

net/ipv4/inet_hashtables.c +26 -11
index 0fb5d758264f..fea74ab2a4be 100644

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

net/ipv4/tcp_input.c +32 -24

56 lines not on this page · raw message

net/ipv4/udp_offload.c +60 -1

61 lines not on this page · raw message

net/ipv6/fib6_rules.c +2 -2
index cf9a44fb8243..0d4e82744921 100644

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

net/ipv6/ip6_output.c +5 -4
index 426330b8dfa4..f024d89cb0f8 100644

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

net/llc/af_llc.c +4 -4
index dae978badd26..5065b9622ada 100644

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

net/netfilter/ipset/ip_set_hash_gen.h +1 -1
index 093ec5214008..636118b0f2ef 100644

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

net/netfilter/nf_conntrack_standalone.c +9 -3
index 8498bf27a353..abf558868db1 100644

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

net/netfilter/nf_tables_api.c +39 -15

54 lines not on this page · raw message

net/netfilter/nft_immediate.c +1 -1
index d154fe67ca8a..a889cf1d863e 100644

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

net/openvswitch/actions.c +1 -2
index a02ea493c269..c3ca4ae11c09 100644

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

net/sched/act_mirred.c +13 -9
index 91a19460cb57..07b9f8335f05 100644

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

net/sched/sch_codel.c +1 -1
index 30169b3adbbb..d99c7386e24e 100644

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

net/sched/sch_drr.c +6 -3
index 08424aac6da8..7ddf73f5a418 100644

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

net/sched/sch_ets.c +6 -3
index 0afd9187f836..35b8577aef7d 100644

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

net/sched/sch_fq.c +1 -1
index 5a1274199fe3..65b12b39e2ec 100644

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

net/sched/sch_fq_codel.c +1 -1
index 01d6eea5b0ce..60dbc549e991 100644

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

net/sched/sch_fq_pie.c +1 -1
index a5b63158f081..d4bfa3382e11 100644

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

net/sched/sch_hfsc.c +11 -4
index aad090fd165b..443db2c08a09 100644

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

net/sched/sch_hhf.c +1 -1
index 420ede875322..433bddcbc0c7 100644

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

net/sched/sch_pie.c +1 -1
index c65077f0c0f3..47f5d4adb5a3 100644

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

net/sched/sch_qfq.c +7 -4
index ebf9f473c939..1ee15db5fcc8 100644

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

net/sunrpc/clnt.c +0 -3
index 7ec5b0bc48eb..0a4b4870c4d9 100644

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

net/sunrpc/rpcb_clnt.c +3 -2
index 8fad45320e1b..f1bb4fd2a270 100644

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

net/tipc/crypto.c +5 -0
index bf384bd12696..159d891b81c5 100644

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

net/xfrm/xfrm_policy.c +3 -0
index a1a662a55c2a..64b971bb1d36 100644

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

net/xfrm/xfrm_state.c +3 -0
index 94179ff475f2..da2d7012e5c7 100644

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

samples/ftrace/sample-trace-array.c +1 -1
index 6aba02a31c96..77685a7eb767 100644

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

scripts/config +16 -10
index 8c8d7c3d7acc..330bef88fd5e 100755

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

scripts/kconfig/merge_config.sh +2 -2
index d7d5c58b8b6a..557f37f481fd 100755

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

security/smack/smackfs.c +4 -0
index 44f0b5148a5b..6402626e47c6 100644

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

sound/core/oss/pcm_oss.c +1 -2
index de6f94bee50b..8eb5fef41dbe 100644

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

sound/core/pcm_native.c +11 -0
index 9425fcd30c4c..98bd6fe850d3 100644

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

sound/pci/es1968.c +4 -2
index 34332d008b27..32e38a70af93 100644

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

sound/pci/hda/patch_realtek.c +42 -0

42 lines not on this page · raw message

sound/sh/Kconfig +1 -1
index b75fbb3236a7..f5fa09d740b4 100644

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

sound/soc/codecs/tas2764.c +21 -30

51 lines not on this page · raw message

sound/soc/intel/boards/bytcr_rt5640.c +13 -0
index 06559f2afe32..b4b2781ad22e 100644

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

sound/soc/qcom/qdsp6/q6afe-clocks.c +106 -103

209 lines not on this page · raw message

sound/soc/qcom/qdsp6/q6afe.c +1 -1
index 0ca1e4aae518..7be495336446 100644

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

sound/soc/qcom/qdsp6/q6afe.h +1 -1
index 22e10269aa10..3845b56c0ed3 100644

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

sound/soc/soc-dai.c +5 -3
index 4705c3da6280..f9aba413e495 100644

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

sound/soc/soc-ops.c +28 -1
index a83cd8d8a963..55f7c7999330 100644

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

sound/usb/format.c +2 -1
index 552094012c49..593f1acd8fd3 100644

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

tools/bpf/bpftool/common.c +2 -1
index eefa2b34e641..33065b17900f 100644

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

tools/build/Makefile.build +5 -1
index cd72016c3cfa..ab0630ae6be8 100644

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

tools/lib/bpf/libbpf.c +1 -1
index 33cdcfe10634..f65e03e7cf94 100644

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

tools/testing/selftests/vm/compaction_test.c +14 -5
index 7c260060a1a6..00ebd9d508ff 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.