Skip to contentSkip to conversation

Linux 5.7.11

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jul 29, 2020 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.7.11 kernel.

All users of the 5.7 kernel series must upgrade.

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

thanks,

greg k-h

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

 Makefile                                                      |    6 
 arch/arm/boot/dts/omap3-n900.dts                              |   12 +
 arch/arm64/boot/dts/marvell/armada-8040-clearfog-gt-8k.dts    |    5 
 arch/arm64/kernel/debug-monitors.c                            |    4 
 arch/arm64/kernel/vdso32/Makefile                             |    2 
 arch/mips/pci/pci-xtalk-bridge.c                              |    5 
 arch/parisc/include/asm/atomic.h                              |    2 
 arch/riscv/include/asm/barrier.h                              |   10 +
 arch/riscv/mm/init.c                                          |   33 +++-
 arch/s390/kernel/perf_cpum_cf_events.c                        |    4 
 arch/x86/boot/compressed/Makefile                             |    4 
 arch/x86/kernel/apic/io_apic.c                                |   10 -
 arch/x86/kernel/apic/msi.c                                    |   18 +-
 arch/x86/kernel/apic/vector.c                                 |    1 
 arch/x86/kernel/vmlinux.lds.S                                 |    1 
 arch/x86/math-emu/wm_sqrt.S                                   |    2 
 arch/x86/platform/uv/uv_irq.c                                 |    3 
 arch/xtensa/kernel/setup.c                                    |    3 
 arch/xtensa/kernel/xtensa_ksyms.c                             |    4 
 drivers/android/binder_alloc.c                                |    2 
 drivers/base/regmap/regmap.c                                  |    2 
 drivers/char/mem.c                                            |   10 -
 drivers/crypto/chelsio/chtls/chtls_io.c                       |    7 
 drivers/dma/fsl-edma-common.c                                 |   26 +--
 drivers/dma/ioat/dma.c                                        |   12 +
 drivers/dma/ioat/dma.h                                        |    2 
 drivers/dma/tegra210-adma.c                                   |    5 
 drivers/dma/ti/k3-udma-private.c                              |    1 
 drivers/dma/ti/k3-udma.c                                      |   33 ++--
 drivers/firmware/efi/efi-pstore.c                             |    5 
 drivers/firmware/efi/efi.c                                    |   12 +
 drivers/firmware/efi/efivars.c                                |    5 
 drivers/firmware/efi/vars.c                                   |    6 
 drivers/firmware/psci/psci_checker.c                          |    5 
 drivers/fpga/dfl-afu-main.c                                   |    3 
 drivers/fpga/dfl-pci.c                                        |    3 
 drivers/gpio/gpio-arizona.c                                   |    7 
 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c                   |   20 ++
 drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c                        |    9 -
 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c                        |    9 +
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c             |    7 
 drivers/gpu/drm/amd/powerplay/smumgr/vegam_smumgr.c           |   10 -
 drivers/gpu/drm/nouveau/nouveau_svm.c                         |    1 
 drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.c              |    4 
 drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c            |    4 
 drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c                        |    2 
 drivers/hid/hid-alps.c                                        |    2 
 drivers/hid/hid-apple.c                                       |   18 ++
 drivers/hid/hid-steam.c                                       |    6 
 drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c                      |    8 +
 drivers/hwmon/aspeed-pwm-tacho.c                              |    2 
 drivers/hwmon/nct6775.c                                       |    6 
 drivers/hwmon/pmbus/adm1275.c                                 |   10 +
 drivers/hwmon/scmi-hwmon.c                                    |    2 
 drivers/i2c/busses/i2c-qcom-geni.c                            |    6 
 drivers/i2c/busses/i2c-rcar.c                                 |    3 
 drivers/infiniband/core/cm.c                                  |    2 
 drivers/infiniband/core/rdma_core.c                           |    6 
 drivers/infiniband/hw/mlx5/odp.c                              |   22 ++-
 drivers/infiniband/hw/mlx5/srq_cmd.c                          |    4 
 drivers/input/mouse/elan_i2c_core.c                           |    9 -
 drivers/input/mouse/synaptics.c                               |    1 
 drivers/interconnect/qcom/msm8916.c                           |   14 -
 drivers/iommu/amd_iommu.c                                     |    5 
 drivers/iommu/hyperv-iommu.c                                  |    5 
 drivers/iommu/intel_irq_remapping.c                           |    2 
 drivers/iommu/qcom_iommu.c                                    |   37 ++---
 drivers/md/dm-integrity.c                                     |    4 
 drivers/md/dm.c                                               |   22 ++-
 drivers/mfd/ioc3.c                                            |    5 
 drivers/mmc/host/sdhci-of-aspeed.c                            |    2 
 drivers/net/bonding/bond_main.c                               |   10 -
 drivers/net/bonding/bond_netlink.c                            |    3 
 drivers/net/dsa/microchip/ksz9477.c                           |   42 +++--
 drivers/net/dsa/microchip/ksz_common.c                        |    2 
 drivers/net/dsa/microchip/ksz_common.h                        |    2 
 drivers/net/dsa/mv88e6xxx/chip.c                              |   22 ++-
 drivers/net/dsa/mv88e6xxx/chip.h                              |    1 
 drivers/net/ethernet/atheros/ag71xx.c                         |    3 
 drivers/net/ethernet/broadcom/bnxt/bnxt.c                     |   22 ++-
 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c             |    5 
 drivers/net/ethernet/broadcom/genet/bcmgenet.c                |    2 
 drivers/net/ethernet/freescale/dpaa/dpaa_eth.c                |    2 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c              |    2 
 drivers/net/ethernet/freescale/enetc/enetc_pf.c               |    1 
 drivers/net/ethernet/freescale/fec.h                          |    1 
 drivers/net/ethernet/freescale/fec_main.c                     |   23 ++-
 drivers/net/ethernet/freescale/fec_ptp.c                      |   12 +
 drivers/net/ethernet/hisilicon/hns3/hnae3.h                   |    1 
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c               |   10 +
 drivers/net/ethernet/hisilicon/hns3/hns3_enet.h               |    2 
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c       |   49 +++---
 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h       |    3 
 drivers/net/ethernet/marvell/sky2.c                           |    2 
 drivers/net/ethernet/mellanox/mlxsw/core.c                    |    3 
 drivers/net/ethernet/mellanox/mlxsw/core_env.c                |   48 ++++--
 drivers/net/ethernet/pensando/ionic/ionic_ethtool.c           |    7 
 drivers/net/ethernet/pensando/ionic/ionic_lif.c               |   50 +++----
 drivers/net/ethernet/pensando/ionic/ionic_lif.h               |    8 -
 drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c         |   29 ++++
 drivers/net/ethernet/pensando/ionic/ionic_txrx.c              |    6 
 drivers/net/ethernet/qlogic/qed/qed_cxt.c                     |    4 
 drivers/net/ethernet/qlogic/qed/qed_dev.c                     |    2 
 drivers/net/ethernet/qlogic/qed/qed_int.c                     |   50 ++++---
 drivers/net/ethernet/qlogic/qed/qed_int.h                     |    4 
 drivers/net/ethernet/smsc/smc91x.c                            |    4 
 drivers/net/ethernet/socionext/sni_ave.c                      |    2 
 drivers/net/geneve.c                                          |    2 
 drivers/net/hippi/rrunner.c                                   |    2 
 drivers/net/ieee802154/adf7242.c                              |    4 
 drivers/net/netdevsim/netdev.c                                |    4 
 drivers/net/phy/dp83640.c                                     |    4 
 drivers/net/usb/ax88172a.c                                    |    1 
 drivers/net/wan/lapbether.c                                   |    9 +
 drivers/net/wireless/ath/ath9k/hif_usb.c                      |   52 +++++--
 drivers/net/wireless/ath/ath9k/hif_usb.h                      |    5 
 drivers/net/wireless/intel/iwlwifi/mvm/sta.c                  |    8 -
 drivers/net/wireless/intel/iwlwifi/pcie/drv.c                 |    2 
 drivers/net/wireless/mediatek/mt76/mt76.h                     |    1 
 drivers/net/wireless/mediatek/mt76/mt76x0/pci.c               |    2 
 drivers/net/wireless/mediatek/mt76/mt76x02.h                  |    2 
 drivers/net/wireless/mediatek/mt76/mt76x02_mcu.c              |    3 
 drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c             |   16 ++
 drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c          |    1 
 drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c          |   19 --
 drivers/pci/controller/vmd.c                                  |    5 
 drivers/pci/pci.c                                             |   30 +---
 drivers/perf/arm-cci.c                                        |    1 
 drivers/perf/arm-ccn.c                                        |    1 
 drivers/perf/arm_dsu_pmu.c                                    |    1 
 drivers/perf/arm_smmuv3_pmu.c                                 |    2 
 drivers/perf/arm_spe_pmu.c                                    |    1 
 drivers/perf/fsl_imx8_ddr_perf.c                              |    2 
 drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c                 |    2 
 drivers/perf/hisilicon/hisi_uncore_hha_pmu.c                  |    2 
 drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c                  |    2 
 drivers/perf/qcom_l2_pmu.c                                    |    1 
 drivers/perf/qcom_l3_pmu.c                                    |    1 
 drivers/perf/thunderx2_pmu.c                                  |    1 
 drivers/perf/xgene_pmu.c                                      |    1 
 drivers/pinctrl/pinctrl-amd.h                                 |    2 
 drivers/platform/x86/asus-wmi.c                               |    1 
 drivers/platform/x86/intel_speed_select_if/isst_if_common.h   |    3 
 drivers/platform/x86/intel_speed_select_if/isst_if_mbox_pci.c |    1 
 drivers/platform/x86/intel_speed_select_if/isst_if_mmio.c     |    1 
 drivers/scsi/mpt3sas/mpt3sas_ctl.c                            |   12 -
 drivers/scsi/scsi_devinfo.c                                   |    1 
 drivers/scsi/scsi_dh.c                                        |    1 
 drivers/scsi/scsi_transport_spi.c                             |    2 
 drivers/soc/amlogic/meson-gx-socinfo.c                        |    8 -
 drivers/soc/qcom/rpmh.c                                       |    8 -
 drivers/spi/spi-mt65xx.c                                      |   15 +-
 drivers/staging/comedi/drivers/addi_apci_1032.c               |   20 +-
 drivers/staging/comedi/drivers/addi_apci_1500.c               |   24 ++-
 drivers/staging/comedi/drivers/addi_apci_1564.c               |   20 +-
 drivers/staging/comedi/drivers/ni_6527.c                      |    2 
 drivers/staging/wlan-ng/prism2usb.c                           |   16 ++
 drivers/tty/serial/8250/8250_core.c                           |    2 
 drivers/tty/serial/8250/8250_exar.c                           |   12 +
 drivers/tty/serial/8250/8250_mtk.c                            |   18 ++
 drivers/tty/serial/serial-tegra.c                             |    7 
 drivers/tty/serial/xilinx_uartps.c                            |    8 -
 drivers/tty/vt/vt.c                                           |   29 ++--
 drivers/usb/cdns3/ep0.c                                       |   30 ++--
 drivers/usb/cdns3/trace.h                                     |    6 
 drivers/usb/dwc3/dwc3-pci.c                                   |    8 +
 drivers/usb/gadget/udc/gr_udc.c                               |    7 
 drivers/usb/host/xhci-mtk-sch.c                               |    4 
 drivers/usb/host/xhci-pci.c                                   |    3 
 drivers/usb/host/xhci-tegra.c                                 |    2 
 drivers/video/fbdev/core/bitblit.c                            |    4 
 drivers/video/fbdev/core/fbcon_ccw.c                          |    4 
 drivers/video/fbdev/core/fbcon_cw.c                           |    4 
 drivers/video/fbdev/core/fbcon_ud.c                           |    4 
 fs/btrfs/backref.c                                            |    1 
 fs/btrfs/disk-io.c                                            |    1 
 fs/btrfs/extent_io.c                                          |    3 
 fs/btrfs/relocation.c                                         |    2 
 fs/btrfs/volumes.c                                            |    8 +
 fs/cifs/inode.c                                               |   10 -
 fs/efivarfs/super.c                                           |    6 
 fs/exfat/dir.c                                                |    2 
 fs/exfat/exfat_fs.h                                           |    2 
 fs/exfat/file.c                                               |    2 
 fs/exfat/nls.c                                                |    8 -
 fs/fuse/dev.c                                                 |    3 
 fs/nfs/direct.c                                               |   13 -
 fs/nfs/file.c                                                 |    1 
 fs/nfsd/nfs4state.c                                           |   20 ++
 include/asm-generic/mmiowb.h                                  |    6 
 include/asm-generic/vmlinux.lds.h                             |    5 
 include/linux/device-mapper.h                                 |    1 
 include/linux/efi.h                                           |    1 
 include/linux/io-mapping.h                                    |    5 
 include/linux/mod_devicetable.h                               |    2 
 include/linux/xattr.h                                         |    3 
 include/sound/rt5670.h                                        |    1 
 include/uapi/linux/idxd.h                                     |    3 
 include/uapi/linux/input-event-codes.h                        |    3 
 kernel/bpf/verifier.c                                         |   10 +
 kernel/events/uprobes.c                                       |    2 
 mm/hugetlb.c                                                  |   15 +-
 mm/khugepaged.c                                               |    3 
 mm/memcontrol.c                                               |    4 
 mm/mmap.c                                                     |   16 +-
 mm/shmem.c                                                    |    2 
 mm/slab_common.c                                              |   35 +++-
 net/mac80211/rx.c                                             |   26 +++
 net/netfilter/ipvs/ip_vs_sync.c                               |   12 +
 net/netfilter/nf_tables_api.c                                 |   41 +----
 net/vmw_vsock/virtio_transport.c                              |    2 
 scripts/decode_stacktrace.sh                                  |    4 
 scripts/gdb/linux/symbols.py                                  |    2 
 sound/core/info.c                                             |    4 
 sound/pci/hda/patch_hdmi.c                                    |   36 +++--
 sound/pci/hda/patch_realtek.c                                 |    2 
 sound/soc/codecs/rt5670.c                                     |   71 +++++++---
 sound/soc/codecs/rt5670.h                                     |    2 
 sound/soc/intel/boards/bdw-rt5677.c                           |    1 
 sound/soc/intel/boards/bytcht_es8316.c                        |    4 
 sound/soc/intel/boards/cht_bsw_rt5672.c                       |   23 +--
 sound/soc/qcom/Kconfig                                        |    2 
 sound/soc/soc-topology.c                                      |   24 ++-
 tools/perf/pmu-events/arch/s390/cf_z15/extended.json          |    2 
 224 files changed, 1283 insertions(+), 636 deletions(-)

Aaron Ma (1):
drm/amd/display: add dmcub check on RENOIR

Alessio Bonfiglio (1):
iwlwifi: Make some Killer Wireless-AC 1550 cards work again

Alexander Lobakin (2):
qed: suppress "don't support RoCE & iWARP" flooding on HW init
qed: suppress false-positives interrupt error messages on HW init

Angelo Dureghello (1):
dmaengine: fsl-edma: fix wrong tcd endianness for big-endian cpu

Ard Biesheuvel (1):
efi/efivars: Expose RT service availability via efivars abstraction

Arnd Bergmann (1):
x86: math-emu: Fix up 'cmp' insn for clang ias

Arvind Sankar (1):
x86/boot: Don't add the EFI stub to targets

Atish Patra (1):
RISC-V: Do not rely on initrd_start/end computed during early dt parsing

Barry Song (1):
mm/hugetlb: avoid hardcoding while checking if cma is enabled

Ben Skeggs (1):
drm/nouveau/i2c/g94-: increase NV_PMGR_DP_AUXCTL_TRANSACTREQ timeout

Bjorn Helgaas (1):
Revert "PCI/PM: Assume ports without DLL Link Active train links in 100 ms"

Boris Burkov (1):
btrfs: fix mount failure caused by race with umount

Caiyuan Xie (1):
HID: alps: support devices with report id 2

Chen-Yu Tsai (1):
drm: sun4i: hdmi: Fix inverted HPD result

Chengguang Xu (1):
vfs/xattr: mm/shmem: kernfs: release simple xattr entry in a right way

Christian Hewitt (1):
soc: amlogic: meson-gx-socinfo: Fix S905X3 and S905D3 ID's

Christoph Hellwig (1):
dm: use bio_uninit instead of bio_disassociate_blkg

Christophe JAILLET (1):
hippi: Fix a size used in a 'pci_free_consistent()' in an error handling path

Chu Lin (1):
hwmon: (adm1275) Make sure we are reading enough data for different chips

Chunfeng Yun (1):
usb: xhci-mtk: fix the failure of bandwidth allocation

Claudiu Manoil (1):
enetc: Remove the mdio bus on PF probe bailout

Cong Wang (2):
bonding: check return value of register_netdevice() in bond_newlink()
geneve: fix an uninitialized value in geneve_changelink()

Cristian Marussi (1):
hwmon: (scmi) Fix potential buffer overflow in scmi_hwmon_probe()

Damien Le Moal (1):
scsi: mpt3sas: Fix unlock imbalance

Dave Jiang (1):
dmaengine: idxd: fix hw descriptor fields for delta record

Derek Basehore (1):
Input: elan_i2c - only increment wakeup count on touch

Dinghao Liu (1):
dmaengine: tegra210-adma: Fix runtime PM imbalance on error

Douglas Anderson (2):
soc: qcom: rpmh: Dirt can only make you dirtier, not cleaner
i2c: i2c-qcom-geni: Fix DMA transfer race

Eddie James (1):
mmc: sdhci-of-aspeed: Fix clock divider calculation

Eric Biggers (1):
/dev/mem: Add missing memory barriers for devmem_inode

Evgeny Novikov (2):
hwmon: (aspeed-pwm-tacho) Avoid possible buffer overflow
usb: gadget: udc: gr_udc: fix memleak on error handling path in gr_ep_init()

Fangrui Song (1):
Makefile: Fix GCC_TOOLCHAIN_DIR prefix for Clang cross compilation

Federico Ricchiuto (1):
HID: i2c-hid: add Mediacom FlexBook edge13 to descriptor override

Felix Fietkau (1):
mt76: mt76x02: fix handling MCU timeouts during hw restart

Filipe Manana (1):
btrfs: fix double free on ulist after backref resolution failure

Florian Westphal (1):
netfilter: nf_tables: fix nat hook table deletion

Forest Crossman (1):
usb: xhci: Fix ASM2142/ASM3142 DMA addressing

Gavin Shan (1):
drivers/firmware/psci: Fix memory leakage in alloc_init_cpu_groups()

Geert Uytterhoeven (1):
ASoC: qcom: Drop HAS_DMA dependency to fix link failure

George Kennedy (1):

      ax88172a: fix ax88172a_unbind() failures

Georgi Djakov (1):
interconnect: msm8916: Fix buswidth of pcnoc_s nodes

Greg Kroah-Hartman (1):

      Linux 5.7.11

Guenter Roeck (1):
hwmon: (nct6775) Accept PECI Calibration as temperature source for NCT6798D

Hans de Goede (4):
ASoC: rt5670: Correct RT5670_LDO_SEL_MASK
ASoC: Intel: cht_bsw_rt5672: Change bus format to I2S 2 channel
HID: apple: Disable Fn-key key-re-mapping on clone keyboards
ASoC: rt5670: Add new gpio1_is_ext_spk_en quirk and enable it on the Lenovo Miix 2 10

Heikki Krogerus (2):
usb: dwc3: pci: add support for the Intel Tiger Lake PCH -H variant
usb: dwc3: pci: add support for the Intel Jasper Lake

Helmut Grohne (2):
net: dsa: microchip: call phy_remove_link_mode during probe
tty: xilinx_uartps: Really fix id assignment

Huang Guobin (1):
net: ag71xx: add missed clk_disable_unprepare in error path of probe

Hugh Dickins (1):
mm/memcg: fix refcount error while moving and swapping

Hyeongseok Kim (1):
exfat: fix wrong size update of stream entry by typo

Ian Abbott (4):
staging: comedi: addi_apci_1032: check INSN_CONFIG_DIGITAL_TRIG shift
staging: comedi: ni_6527: fix INSN_CONFIG_DIGITAL_TRIG support
staging: comedi: addi_apci_1500: check INSN_CONFIG_DIGITAL_TRIG shift
staging: comedi: addi_apci_1564: check INSN_CONFIG_DIGITAL_TRIG shift

Ilya Katsnelson (1):
Input: synaptics - enable InterTouch for ThinkPad X1E 1st gen

Ilya Ponetayev (1):
exfat: fix name_hash computation on big endian systems

Ioana Ciornei (1):
dpaa2-eth: check fsl_mc_get_endpoint for IS_ERR_OR_NULL()

J. Bruce Fields (1):
nfsd4: fix NULL dereference in nfsd/clients display code

Jack Xiao (2):
drm/amdgpu/gfx10: fix race condition for kiq drm/amdgpu: fix preemption unit test

Jacky Hu (1):
pinctrl: amd: fix npins for uart0 in kerncz_groups

Jason Gunthorpe (1):
RDMA/mlx5: Prevent prefetch from racing with implicit destruction

Jerry (Fangzhi) Zuo (1):
drm/amd/display: Check DMCU Exists Before Loading

Jian Shen (1):
net: hns3: fix return value error when query MAC link status fail

Jing Xiangfeng (1):
ASoC: Intel: bytcht_es8316: Add missed put_device()

Joerg Roedel (1):
x86, vmlinux.lds: Page-align end of ..page_aligned sections

Johan Hovold (1):
serial: tegra: fix CREAD handling for PIO

Johannes Berg (1):
iwlwifi: mvm: don't call iwl_mvm_free_inactive_queue() under RCU

Johannes Thumshirn (1):
scsi: mpt3sas: Fix error returns in BRM_status_show

John David Anglin (1):
parisc: Add atomic64_set_release() define to avoid CPU soft lockups

Jon Hunter (1):
usb: tegra: Fix allocation for the FPCI context

Joonho Wohn (1):
ALSA: hda/realtek: Fixed ALC298 sound bug by adding quirk for Samsung Notebook Pen S

Kai Vehmanen (1):
ALSA: hda/hdmi: fix failures at PCM open on Intel ICL and later

Kirill A. Shutemov (2):
mm/mmap.c: close race between munmap() and expand_upwards()/downwards()
khugepaged: fix null-pointer dereference due to race

Leon Romanovsky (1):
RDMA/core: Fix race in rdma_alloc_commit_uobject()

Leonid Ravich (1):
dmaengine: ioat setting ioat timeout as module parameter

Liu Jian (3):
ieee802154: fix one possible memleak in adf7242_probe
dpaa_eth: Fix one possible memleak in dpaa_eth_probe
mlxsw: destroy workqueue when trap_register in mlxsw_emad_init

Maor Gottlieb (2):
RDMA/mlx5: Use xa_lock_irq when access to SRQ table RDMA/cm: Protect access to remote_sidr_table

Marc Kleine-Budde (1):
regmap: dev_get_regmap_match(): fix string comparison

Mark O'Donovan (1):
ath9k: Fix regression with Atheros 9271

Markus Theil (1):
mac80211: allow rx of mesh eapol frames with default rx key

Masahiro Yamada (1):
kbuild: fix single target builds for external modules

Matthew Gerlach (1):
fpga: dfl: fix bug in port reset handshake

Matthew Howell (1):
serial: exar: Fix GPIO configuration for Sealevel cards based on XR17V35X

Max Filippov (2):
xtensa: fix __sync_fetch_and_{and,or}_4 declarations
xtensa: update *pos in cpuinfo_op.next

Merlijn Wajer (2):
Input: add SW_MACHINE_COVER
ARM: dts: n900: remove mmc1 card detect gpio

Michael Chan (1):
bnxt_en: Fix completion ring sizing with TPA enabled.

Michael J. Ruhl (1):
io-mapping: indicate mapping failure

Miklos Szeredi (1):
fuse: fix weird page warning

Mikulas Patocka (1):
dm integrity: fix integrity recalculation that is improperly skipped

Muchun Song (1):
mm: memcg/slab: fix memory leak at non-root kmem_cache destroy

Namjae Jeon (2):
exfat: fix overflow issue in exfat_cluster_to_sector()
exfat: fix wrong hint_stat initialization in exfat_find_dir_entry()

Nathan Chancellor (1):
arm64: vdso32: Fix '--prefix=' value for newer versions of clang

Navid Emamdoost (2):
gpio: arizona: handle pm_runtime_get_sync failure case
gpio: arizona: put pm_runtime in case of failure

Oleg Nesterov (1):
uprobes: Change handle_swbp() to send SIGTRAP with si_code=SI_KERNEL, to fix GDB regression

Olga Kornievskaia (1):
SUNRPC reverting d03727b248d0 ("NFSv4 fix CLOSE not waiting for direct IO compeletion")

Palmer Dabbelt (1):
RISC-V: Upgrade smp_mb__after_spinlock() to iorw,iorw

Paweł Gronowski (1):
drm/amdgpu: Fix NULL dereference in dpm sysfs handlers

PeiSen Hou (1):
ALSA: hda/realtek - fixup for yet another Intel reference board

Peter Chen (2):
usb: cdns3: ep0: fix some endian issues
usb: cdns3: trace: fix some endian issues

Peter Ujfalusi (2):
dmaengine: ti: k3-udma: Fix cleanup code for alloc_chan_resources
dmaengine: ti: k3-udma: Fix the running channel handling in alloc_chan_resources

Pi-Hsun Shih (1):
scripts/decode_stacktrace: strip basepath from all paths

Pierre-Louis Bossart (3):
ASoC: topology: fix kernel oops on route addition error
ASoC: topology: fix tlvs in error handling for widget_dmixer
ASoC: Intel: bdw-rt5677: fix non BE conversion

Qi Liu (2):
drivers/perf: Fix kernel panic when rmmod PMU modules during perf sampling drivers/perf: Prevent forced unbinding of PMU drivers

Qiu Wenbo (1):
drm/amd/powerplay: fix a crash when overclocking Vega M

Qiujun Huang (1):
ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb

Qu Wenruo (1):
btrfs: reloc: clear DEAD_RELOC_TREE bit for orphan roots to prevent runaway balance

Ralph Campbell (1):
drm/nouveau/nouveau: fix page fault on device private memory

Rob Clark (1):
iommu/qcom: Use domain rather than dev as tlb cookie

Robbie Ko (1):
btrfs: fix page leaks after failure to lock page for delalloc

Rodrigo Rivas Costa (1):
HID: steam: fixes race in handling device list.

Russell King (2):
net: dsa: mv88e6xxx: fix in-band AN link establishment
arm64: dts: clearfog-gt-8k: fix switch link configuration

Rustam Kovhaev (1):
staging: wlan-ng: properly check endpoint types

Serge Semin (1):
serial: 8250_mtk: Fix high-speed baud rates clamping

Sergey Organov (2):
net: fec: fix hardware time stamping by external devices
net: dp83640: fix SIOCSHWTSTAMP to update the struct with actual configuration

Shannon Nelson (5):
ionic: use offset for ethtool regs data
ionic: fix up filter locks and debug msgs
ionic: update filter id after replay
ionic: keep rss hash after fw update
ionic: use mutex to protect queue operations

Srinivas Pandruvada (1):
platform/x86: ISST: Add new PCI device ids

Stefano Garzarella (2):
vsock/virtio: annotate 'the_virtio_vsock' RCU pointer scripts/gdb: fix lx-symbols 'gdb.error' while loading modules

Steve French (1):
Revert "cifs: Fix the target file was deleted when rename failed."

Steve Schremmer (1):
scsi: dh: Add Fujitsu device to devinfo and dh lists

Taehee Yoo (2):
bonding: check error value of register_netdevice() immediately
netdevsim: fix unbalaced locking in nsim_create()

Takashi Iwai (1):
ALSA: info: Drop WARN_ON() from buffer NULL sanity check

Tetsuo Handa (3):
binder: Don't use mmput() from shrinker function.
fbdev: Detect integer underflow at "struct fbcon_ops"->clear_margins.
vt: Reject zero-sized screen buffer size.

Thomas Gleixner (1):
irqdomain/treewide: Keep firmware node unconditionally allocated

Thomas Richter (1):
s390/cpum_cf,perf: change DFLT_CCERROR counter name

Tom Rix (2):
scsi: scsi_transport_spi: Fix function pointer check
net: sky2: initialize return of gm_phy_read

Vadim Pasternak (1):
mlxsw: core: Fix wrong SFP EEPROM reading for upper pages 1-3

Vasiliy Kupriakov (1):
platform/x86: asus-wmi: allow BAT1 battery name

Vasundhara Volam (2):
bnxt_en: Fix race when modifying pause settings.
bnxt_en: Init ethtool link settings after reading updated PHY configuration.

Vinay Kumar Yadav (1):
crypto/chtls: fix tls alert messages corrupted by tls data

Wang Hai (2):
net: smc91x: Fix possible memory leak in smc_drv_probe()
net: ethernet: ave: Fix error returns in ave_init

Will Deacon (2):
arm64: Use test_tsk_thread_flag() for checking TIF_SINGLESTEP asm-generic/mmiowb: Allow mmiowb_set_pending() when preemptible()

Wolfram Sang (1):
i2c: rcar: always clear ICSAR to avoid side effects

Xie He (1):
drivers/net/wan/lapbether: Fixed the value of hard_header_len

Xu Yilun (1):
fpga: dfl: pci: reduce the scope of variable 'ret'

Yang Yingliang (1):

      serial: 8250: fix null-ptr-deref in serial8250_start_tx()

Yonghong Song (1):
bpf: Set the number of exception entries properly for subprograms

Yu Kuai (1):
dmaengine: ti: k3-udma: add missing put_device() call in of_xudma_dev_get()

Yunsheng Lin (2):
net: hns3: fix for not calculating TX BD send size correctly
net: hns3: fix error handling for desc filling

Zhang Changzhong (1):
net: bcmgenet: fix error returns in bcmgenet_probe()

guodeqing (1):
ipvs: fix the connection sync failed in some cases

leilk.liu (1):
spi: mediatek: use correct SPI_CFG2_REG MACRO

author maintainer
#1 lore raw
Makefile +3 -3
index e622e084e7e2..12777a95833f 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 7
-SUBLEVEL = 10
+SUBLEVEL = 11
 EXTRAVERSION =
 NAME = Kleptomaniac Octopus
 
@@ -549,7 +549,7 @@ ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),)
 ifneq ($(CROSS_COMPILE),)
 CLANG_FLAGS	+= --target=$(notdir $(CROSS_COMPILE:%-=%))
 GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
-CLANG_FLAGS	+= --prefix=$(GCC_TOOLCHAIN_DIR)
+CLANG_FLAGS	+= --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
 GCC_TOOLCHAIN	:= $(realpath $(GCC_TOOLCHAIN_DIR)/..)
 endif
 ifneq ($(GCC_TOOLCHAIN),)
@@ -1730,7 +1730,7 @@ PHONY += descend $(build-dirs)
 descend: $(build-dirs)
 $(build-dirs): prepare
 	$(Q)$(MAKE) $(build)=$@ \
-	single-build=$(if $(filter-out $@/, $(filter $@/%, $(single-no-ko))),1) \
+	single-build=$(if $(filter-out $@/, $(filter $@/%, $(KBUILD_SINGLE_TARGETS))),1) \
 	need-builtin=1 need-modorder=1
 
 clean-dirs := $(addprefix _clean_, $(clean-dirs))
arch/arm/boot/dts/omap3-n900.dts +8 -4
index 4089d97405c9..3dbcae3d60d2 100644
@@ -105,6 +105,14 @@ proximity_sensor {
 			linux,code = <SW_FRONT_PROXIMITY>;
 			linux,can-disable;
 		};
+
+		machine_cover {
+			label = "Machine Cover";
+			gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
+			linux,input-type = <EV_SW>;
+			linux,code = <SW_MACHINE_COVER>;
+			linux,can-disable;
+		};
 	};
 
 	isp1707: isp1707 {
@@ -819,10 +827,6 @@ &mmc1 {
 	pinctrl-0 = <&mmc1_pins>;
 	vmmc-supply = <&vmmc1>;
 	bus-width = <4>;
-	/* For debugging, it is often good idea to remove this GPIO.
-	   It means you can remove back cover (to reboot by removing
-	   battery) and still use the MMC card. */
-	cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
 };
 
 /* most boards use vaux3, only some old versions use vmmc2 instead */
arch/arm64/boot/dts/marvell/armada-8040-clearfog-gt-8k.dts +1 -4
index b90d78a5724b..e32a491e909f 100644
@@ -454,10 +454,7 @@ &cp1_eth2 {
 	status = "okay";
 	phy-mode = "2500base-x";
 	phys = <&cp1_comphy5 2>;
-	fixed-link {
-		speed = <2500>;
-		full-duplex;
-	};
+	managed = "in-band-status";
 };
 
 &cp1_spi1 {
arch/arm64/kernel/debug-monitors.c +2 -2
index 7569deb1eac1..d64a3c1e1b6b 100644
@@ -396,14 +396,14 @@ void user_rewind_single_step(struct task_struct *task)
 	 * If single step is active for this thread, then set SPSR.SS
 	 * to 1 to avoid returning to the active-pending state.
 	 */
-	if (test_ti_thread_flag(task_thread_info(task), TIF_SINGLESTEP))
+	if (test_tsk_thread_flag(task, TIF_SINGLESTEP))
 		set_regs_spsr_ss(task_pt_regs(task));
 }
 NOKPROBE_SYMBOL(user_rewind_single_step);
 
 void user_fastforward_single_step(struct task_struct *task)
 {
-	if (test_ti_thread_flag(task_thread_info(task), TIF_SINGLESTEP))
+	if (test_tsk_thread_flag(task, TIF_SINGLESTEP))
 		clear_regs_spsr_ss(task_pt_regs(task));
 }
 
arch/arm64/kernel/vdso32/Makefile +1 -1
index 3964738ebbde..0433bb58ce52 100644
@@ -14,7 +14,7 @@ COMPAT_GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE_COMPAT)elfedit))
 COMPAT_GCC_TOOLCHAIN := $(realpath $(COMPAT_GCC_TOOLCHAIN_DIR)/..)
 
 CC_COMPAT_CLANG_FLAGS := --target=$(notdir $(CROSS_COMPILE_COMPAT:%-=%))
-CC_COMPAT_CLANG_FLAGS += --prefix=$(COMPAT_GCC_TOOLCHAIN_DIR)
+CC_COMPAT_CLANG_FLAGS += --prefix=$(COMPAT_GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE_COMPAT))
 CC_COMPAT_CLANG_FLAGS += -no-integrated-as -Qunused-arguments
 ifneq ($(COMPAT_GCC_TOOLCHAIN),)
 CC_COMPAT_CLANG_FLAGS += --gcc-toolchain=$(COMPAT_GCC_TOOLCHAIN)
arch/mips/pci/pci-xtalk-bridge.c +3 -2
index 3b2552fb7735..5958217861b8 100644
@@ -627,9 +627,10 @@ static int bridge_probe(struct platform_device *pdev)
 		return -ENOMEM;
 	domain = irq_domain_create_hierarchy(parent, 0, 8, fn,
 					     &bridge_domain_ops, NULL);
-	irq_domain_free_fwnode(fn);
-	if (!domain)
+	if (!domain) {
+		irq_domain_free_fwnode(fn);
 		return -ENOMEM;
+	}
 
 	pci_set_flags(PCI_PROBE_ONLY);
 
arch/parisc/include/asm/atomic.h +2 -0
index 118953d41763..6dd4171c9530 100644
@@ -212,6 +212,8 @@ atomic64_set(atomic64_t *v, s64 i)
 	_atomic_spin_unlock_irqrestore(v, flags);
 }
 
+#define atomic64_set_release(v, i)	atomic64_set((v), (i))
+
 static __inline__ s64
 atomic64_read(const atomic64_t *v)
 {
arch/riscv/include/asm/barrier.h +9 -1
index 3f1737f301cc..d0e24aaa2aa0 100644
@@ -58,8 +58,16 @@ do {									\
  * The AQ/RL pair provides a RCpc critical section, but there's not really any
  * way we can take advantage of that here because the ordering is only enforced
  * on that one lock.  Thus, we're just doing a full fence.
+ *
+ * Since we allow writeX to be called from preemptive regions we need at least
+ * an "o" in the predecessor set to ensure device writes are visible before the
+ * task is marked as available for scheduling on a new hart.  While I don't see
+ * any concrete reason we need a full IO fence, it seems safer to just upgrade
+ * this in order to avoid any IO crossing a scheduling boundary.  In both
+ * instances the scheduler pairs this with an mb(), so nothing is necessary on
+ * the new hart.
  */
-#define smp_mb__after_spinlock()	RISCV_FENCE(rw,rw)
+#define smp_mb__after_spinlock()	RISCV_FENCE(iorw,iorw)
 
 #include <asm-generic/barrier.h>
 
arch/riscv/mm/init.c +27 -6
index fdc772f57edc..81493cee0a16 100644
@@ -94,19 +94,40 @@ void __init mem_init(void)
 #ifdef CONFIG_BLK_DEV_INITRD
 static void __init setup_initrd(void)
 {
+	phys_addr_t start;
 	unsigned long size;
 
-	if (initrd_start >= initrd_end) {
-		pr_info("initrd not found or empty");
+	/* Ignore the virtul address computed during device tree parsing */
+	initrd_start = initrd_end = 0;
+
+	if (!phys_initrd_size)
+		return;
+	/*
+	 * Round the memory region to page boundaries as per free_initrd_mem()
+	 * This allows us to detect whether the pages overlapping the initrd
+	 * are in use, but more importantly, reserves the entire set of pages
+	 * as we don't want these pages allocated for other purposes.
+	 */
+	start = round_down(phys_initrd_start, PAGE_SIZE);
+	size = phys_initrd_size + (phys_initrd_start - start);
+	size = round_up(size, PAGE_SIZE);
+
+	if (!memblock_is_region_memory(start, size)) {
+		pr_err("INITRD: 0x%08llx+0x%08lx is not a memory region",
+		       (u64)start, size);
 		goto disable;
 	}
-	if (__pa_symbol(initrd_end) > PFN_PHYS(max_low_pfn)) {
-		pr_err("initrd extends beyond end of memory");
+
+	if (memblock_is_region_reserved(start, size)) {
+		pr_err("INITRD: 0x%08llx+0x%08lx overlaps in-use memory region\n",
+		       (u64)start, size);
 		goto disable;
 	}
 
-	size = initrd_end - initrd_start;
-	memblock_reserve(__pa_symbol(initrd_start), size);
+	memblock_reserve(start, size);
+	/* Now convert initrd to virtual addresses */
+	initrd_start = (unsigned long)__va(phys_initrd_start);
+	initrd_end = initrd_start + phys_initrd_size;
 	initrd_below_start_ok = 1;
 
 	pr_info("Initial ramdisk at: 0x%p (%lu bytes)\n",
arch/s390/kernel/perf_cpum_cf_events.c +2 -2
index 1e3df52b2b65..37265f551a11 100644
@@ -292,7 +292,7 @@ CPUMF_EVENT_ATTR(cf_z15, TX_C_TABORT_SPECIAL, 0x00f5);
 CPUMF_EVENT_ATTR(cf_z15, DFLT_ACCESS, 0x00f7);
 CPUMF_EVENT_ATTR(cf_z15, DFLT_CYCLES, 0x00fc);
 CPUMF_EVENT_ATTR(cf_z15, DFLT_CC, 0x00108);
-CPUMF_EVENT_ATTR(cf_z15, DFLT_CCERROR, 0x00109);
+CPUMF_EVENT_ATTR(cf_z15, DFLT_CCFINISH, 0x00109);
 CPUMF_EVENT_ATTR(cf_z15, MT_DIAG_CYCLES_ONE_THR_ACTIVE, 0x01c0);
 CPUMF_EVENT_ATTR(cf_z15, MT_DIAG_CYCLES_TWO_THR_ACTIVE, 0x01c1);
 
@@ -629,7 +629,7 @@ static struct attribute *cpumcf_z15_pmu_event_attr[] __initdata = {
 	CPUMF_EVENT_PTR(cf_z15, DFLT_ACCESS),
 	CPUMF_EVENT_PTR(cf_z15, DFLT_CYCLES),
 	CPUMF_EVENT_PTR(cf_z15, DFLT_CC),
-	CPUMF_EVENT_PTR(cf_z15, DFLT_CCERROR),
+	CPUMF_EVENT_PTR(cf_z15, DFLT_CCFINISH),
 	CPUMF_EVENT_PTR(cf_z15, MT_DIAG_CYCLES_ONE_THR_ACTIVE),
 	CPUMF_EVENT_PTR(cf_z15, MT_DIAG_CYCLES_TWO_THR_ACTIVE),
 	NULL,
arch/x86/boot/compressed/Makefile +2 -2
index 5f7c262bcc99..20aac9968315 100644
@@ -88,8 +88,8 @@ endif
 
 vmlinux-objs-$(CONFIG_ACPI) += $(obj)/acpi.o
 
-vmlinux-objs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/firmware/efi/libstub/lib.a
 vmlinux-objs-$(CONFIG_EFI_MIXED) += $(obj)/efi_thunk_$(BITS).o
+efi-obj-$(CONFIG_EFI_STUB) = $(objtree)/drivers/firmware/efi/libstub/lib.a
 
 # The compressed kernel is built with -fPIC/-fPIE so that a boot loader
 # can place it anywhere in memory and it will still run. However, since
@@ -113,7 +113,7 @@ endef
 quiet_cmd_check-and-link-vmlinux = LD      $@
       cmd_check-and-link-vmlinux = $(cmd_check_data_rel); $(cmd_ld)
 
-$(obj)/vmlinux: $(vmlinux-objs-y) FORCE
+$(obj)/vmlinux: $(vmlinux-objs-y) $(efi-obj-y) FORCE
 	$(call if_changed,check-and-link-vmlinux)
 
 OBJCOPYFLAGS_vmlinux.bin :=  -R .comment -S
arch/x86/kernel/apic/io_apic.c +5 -5
index 913c88617848..57447f03ee87 100644
@@ -2329,12 +2329,12 @@ static int mp_irqdomain_create(int ioapic)
 	ip->irqdomain = irq_domain_create_linear(fn, hwirqs, cfg->ops,
 						 (void *)(long)ioapic);
 
-	/* Release fw handle if it was allocated above */
-	if (!cfg->dev)
-		irq_domain_free_fwnode(fn);
-
-	if (!ip->irqdomain)
+	if (!ip->irqdomain) {
+		/* Release fw handle if it was allocated above */
+		if (!cfg->dev)
+			irq_domain_free_fwnode(fn);
 		return -ENOMEM;
+	}
 
 	ip->irqdomain->parent = parent;
 
arch/x86/kernel/apic/msi.c +12 -6
index 159bd0cb8548..a20873bbbed6 100644
@@ -262,12 +262,13 @@ void __init arch_init_msi_domain(struct irq_domain *parent)
 		msi_default_domain =
 			pci_msi_create_irq_domain(fn, &pci_msi_domain_info,
 						  parent);
-		irq_domain_free_fwnode(fn);
 	}
-	if (!msi_default_domain)
+	if (!msi_default_domain) {
+		irq_domain_free_fwnode(fn);
 		pr_warn("failed to initialize irqdomain for MSI/MSI-x.\n");
-	else
+	} else {
 		msi_default_domain->flags |= IRQ_DOMAIN_MSI_NOMASK_QUIRK;
+	}
 }
 
 #ifdef CONFIG_IRQ_REMAP
@@ -300,7 +301,8 @@ struct irq_domain *arch_create_remap_msi_irq_domain(struct irq_domain *parent,
 	if (!fn)
 		return NULL;
 	d = pci_msi_create_irq_domain(fn, &pci_msi_ir_domain_info, parent);
-	irq_domain_free_fwnode(fn);
+	if (!d)
+		irq_domain_free_fwnode(fn);
 	return d;
 }
 #endif
@@ -363,7 +365,8 @@ static struct irq_domain *dmar_get_irq_domain(void)
 	if (fn) {
 		dmar_domain = msi_create_irq_domain(fn, &dmar_msi_domain_info,
 						    x86_vector_domain);
-		irq_domain_free_fwnode(fn);
+		if (!dmar_domain)
+			irq_domain_free_fwnode(fn);
 	}
 out:
 	mutex_unlock(&dmar_lock);
@@ -488,7 +491,10 @@ struct irq_domain *hpet_create_irq_domain(int hpet_id)
 	}
 
 	d = msi_create_irq_domain(fn, domain_info, parent);
-	irq_domain_free_fwnode(fn);
+	if (!d) {
+		irq_domain_free_fwnode(fn);
+		kfree(domain_info);
+	}
 	return d;
 }
 
arch/x86/kernel/apic/vector.c +0 -1
index cf8b6ebc6031..410363e60968 100644
@@ -707,7 +707,6 @@ int __init arch_early_irq_init(void)
 	x86_vector_domain = irq_domain_create_tree(fn, &x86_vector_domain_ops,
 						   NULL);
 	BUG_ON(x86_vector_domain == NULL);
-	irq_domain_free_fwnode(fn);
 	irq_set_default_host(x86_vector_domain);
 
 	arch_init_msi_domain(x86_vector_domain);
arch/x86/kernel/vmlinux.lds.S +1 -0
index 7c35556c7827..1b165813892f 100644
@@ -359,6 +359,7 @@ SECTIONS
 	.bss : AT(ADDR(.bss) - LOAD_OFFSET) {
 		__bss_start = .;
 		*(.bss..page_aligned)
+		. = ALIGN(PAGE_SIZE);
 		*(BSS_MAIN)
 		BSS_DECRYPTED
 		. = ALIGN(PAGE_SIZE);
arch/x86/math-emu/wm_sqrt.S +1 -1
index 3b2b58164ec1..40526dd85137 100644
@@ -209,7 +209,7 @@ sqrt_stage_2_finish:
 
 #ifdef PARANOID
 /* It should be possible to get here only if the arg is ffff....ffff */
-	cmp	$0xffffffff,FPU_fsqrt_arg_1
+	cmpl	$0xffffffff,FPU_fsqrt_arg_1
 	jnz	sqrt_stage_2_error
 #endif /* PARANOID */
 
arch/x86/platform/uv/uv_irq.c +2 -1
index fc13cbbb2dce..abb6075397f0 100644
@@ -167,9 +167,10 @@ static struct irq_domain *uv_get_irq_domain(void)
 		goto out;
 
 	uv_domain = irq_domain_create_tree(fn, &uv_domain_ops, NULL);
-	irq_domain_free_fwnode(fn);
 	if (uv_domain)
 		uv_domain->parent = x86_vector_domain;
+	else
+		irq_domain_free_fwnode(fn);
 out:
 	mutex_unlock(&uv_lock);
 
arch/xtensa/kernel/setup.c +2 -1
index 3880c765d448..0271e2e47bcd 100644
@@ -725,7 +725,8 @@ c_start(struct seq_file *f, loff_t *pos)
 static void *
 c_next(struct seq_file *f, void *v, loff_t *pos)
 {
-	return NULL;
+	++*pos;
+	return c_start(f, pos);
 }
 
 static void
arch/xtensa/kernel/xtensa_ksyms.c +2 -2
index 4092555828b1..24cf6972eace 100644
@@ -87,13 +87,13 @@ void __xtensa_libgcc_window_spill(void)
 }
 EXPORT_SYMBOL(__xtensa_libgcc_window_spill);
 
-unsigned long __sync_fetch_and_and_4(unsigned long *p, unsigned long v)
+unsigned int __sync_fetch_and_and_4(volatile void *p, unsigned int v)
 {
 	BUG();
 }
 EXPORT_SYMBOL(__sync_fetch_and_and_4);
 
-unsigned long __sync_fetch_and_or_4(unsigned long *p, unsigned long v)
+unsigned int __sync_fetch_and_or_4(volatile void *p, unsigned int v)
 {
 	BUG();
 }
drivers/android/binder_alloc.c +1 -1
index 2d8b9b91dee0..1dadca3d381e 100644
@@ -947,7 +947,7 @@ enum lru_status binder_alloc_free_page(struct list_head *item,
 		trace_binder_unmap_user_end(alloc, index);
 	}
 	up_read(&mm->mmap_sem);
-	mmput(mm);
+	mmput_async(mm);
 
 	trace_binder_unmap_kernel_start(alloc, index);
 
drivers/base/regmap/regmap.c +1 -1
index 320d23de02c2..927ebde1607b 100644
@@ -1363,7 +1363,7 @@ static int dev_get_regmap_match(struct device *dev, void *res, void *data)
 
 	/* If the user didn't specify a name match any */
 	if (data)
-		return (*r)->name == data;
+		return !strcmp((*r)->name, data);
 	else
 		return 1;
 }
drivers/char/mem.c +7 -3
index 31cae88a730b..6b56bff9b68c 100644
@@ -814,7 +814,8 @@ static struct inode *devmem_inode;
 #ifdef CONFIG_IO_STRICT_DEVMEM
 void revoke_devmem(struct resource *res)
 {
-	struct inode *inode = READ_ONCE(devmem_inode);
+	/* pairs with smp_store_release() in devmem_init_inode() */
+	struct inode *inode = smp_load_acquire(&devmem_inode);
 
 	/*
 	 * Check that the initialization has completed. Losing the race
@@ -1028,8 +1029,11 @@ static int devmem_init_inode(void)
 		return rc;
 	}
 
-	/* publish /dev/mem initialized */
-	WRITE_ONCE(devmem_inode, inode);
+	/*
+	 * Publish /dev/mem initialized.
+	 * Pairs with smp_load_acquire() in revoke_devmem().
+	 */
+	smp_store_release(&devmem_inode, inode);
 
 	return 0;
 }
drivers/crypto/chelsio/chtls/chtls_io.c +4 -3
index e1401d9cc756..2e9acae1cba3 100644
@@ -1052,14 +1052,15 @@ int chtls_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
 							  &record_type);
 				if (err)
 					goto out_err;
+
+				/* Avoid appending tls handshake, alert to tls data */
+				if (skb)
+					tx_skb_finalize(skb);
 			}
 
 			recordsz = size;
 			csk->tlshws.txleft = recordsz;
 			csk->tlshws.type = record_type;
-
-			if (skb)
-				ULP_SKB_CB(skb)->ulp.tls.type = record_type;
 		}
 
 		if (!skb || (ULP_SKB_CB(skb)->flags & ULPCB_FLAG_NO_APPEND) ||
drivers/dma/fsl-edma-common.c +14 -12
index 5697c3622699..9285884758b2 100644
@@ -352,26 +352,28 @@ static void fsl_edma_set_tcd_regs(struct fsl_edma_chan *fsl_chan,
 	/*
 	 * TCD parameters are stored in struct fsl_edma_hw_tcd in little
 	 * endian format. However, we need to load the TCD registers in
-	 * big- or little-endian obeying the eDMA engine model endian.
+	 * big- or little-endian obeying the eDMA engine model endian,
+	 * and this is performed from specific edma_write functions
 	 */
 	edma_writew(edma, 0,  &regs->tcd[ch].csr);
-	edma_writel(edma, le32_to_cpu(tcd->saddr), &regs->tcd[ch].saddr);
-	edma_writel(edma, le32_to_cpu(tcd->daddr), &regs->tcd[ch].daddr);
 
-	edma_writew(edma, le16_to_cpu(tcd->attr), &regs->tcd[ch].attr);
-	edma_writew(edma, le16_to_cpu(tcd->soff), &regs->tcd[ch].soff);
+	edma_writel(edma, (s32)tcd->saddr, &regs->tcd[ch].saddr);
+	edma_writel(edma, (s32)tcd->daddr, &regs->tcd[ch].daddr);
 
-	edma_writel(edma, le32_to_cpu(tcd->nbytes), &regs->tcd[ch].nbytes);
-	edma_writel(edma, le32_to_cpu(tcd->slast), &regs->tcd[ch].slast);
+	edma_writew(edma, (s16)tcd->attr, &regs->tcd[ch].attr);
+	edma_writew(edma, tcd->soff, &regs->tcd[ch].soff);
 
-	edma_writew(edma, le16_to_cpu(tcd->citer), &regs->tcd[ch].citer);
-	edma_writew(edma, le16_to_cpu(tcd->biter), &regs->tcd[ch].biter);
-	edma_writew(edma, le16_to_cpu(tcd->doff), &regs->tcd[ch].doff);
+	edma_writel(edma, (s32)tcd->nbytes, &regs->tcd[ch].nbytes);
+	edma_writel(edma, (s32)tcd->slast, &regs->tcd[ch].slast);
 
-	edma_writel(edma, le32_to_cpu(tcd->dlast_sga),
+	edma_writew(edma, (s16)tcd->citer, &regs->tcd[ch].citer);
+	edma_writew(edma, (s16)tcd->biter, &regs->tcd[ch].biter);
+	edma_writew(edma, (s16)tcd->doff, &regs->tcd[ch].doff);
+
+	edma_writel(edma, (s32)tcd->dlast_sga,
 			&regs->tcd[ch].dlast_sga);
 
-	edma_writew(edma, le16_to_cpu(tcd->csr), &regs->tcd[ch].csr);
+	edma_writew(edma, (s16)tcd->csr, &regs->tcd[ch].csr);
 }
 
 static inline
drivers/dma/ioat/dma.c +12 -0
index 18c011e57592..8e2a4d1f0be5 100644
@@ -26,6 +26,18 @@
 
 #include "../dmaengine.h"
 
+int completion_timeout = 200;
+module_param(completion_timeout, int, 0644);
+MODULE_PARM_DESC(completion_timeout,
+		"set ioat completion timeout [msec] (default 200 [msec])");
+int idle_timeout = 2000;
+module_param(idle_timeout, int, 0644);
+MODULE_PARM_DESC(idle_timeout,
+		"set ioat idel timeout [msec] (default 2000 [msec])");
+
+#define IDLE_TIMEOUT msecs_to_jiffies(idle_timeout)
+#define COMPLETION_TIMEOUT msecs_to_jiffies(completion_timeout)
+
 static char *chanerr_str[] = {
 	"DMA Transfer Source Address Error",
 	"DMA Transfer Destination Address Error",
drivers/dma/ioat/dma.h +0 -2
index b8e8e0b9693c..4ac9134962f3 100644
@@ -99,8 +99,6 @@ struct ioatdma_chan {
 	#define IOAT_RUN 5
 	#define IOAT_CHAN_ACTIVE 6
 	struct timer_list timer;
-	#define COMPLETION_TIMEOUT msecs_to_jiffies(100)
-	#define IDLE_TIMEOUT msecs_to_jiffies(2000)
 	#define RESET_DELAY msecs_to_jiffies(100)
 	struct ioatdma_device *ioat_dma;
 	dma_addr_t completion_dma;
drivers/dma/tegra210-adma.c +4 -1
index db58d7e4f9fe..c5fa2ef74abc 100644
@@ -658,6 +658,7 @@ static int tegra_adma_alloc_chan_resources(struct dma_chan *dc)
 
 	ret = pm_runtime_get_sync(tdc2dev(tdc));
 	if (ret < 0) {
+		pm_runtime_put_noidle(tdc2dev(tdc));
 		free_irq(tdc->irq, tdc);
 		return ret;
 	}
@@ -869,8 +870,10 @@ static int tegra_adma_probe(struct platform_device *pdev)
 	pm_runtime_enable(&pdev->dev);
 
 	ret = pm_runtime_get_sync(&pdev->dev);
-	if (ret < 0)
+	if (ret < 0) {
+		pm_runtime_put_noidle(&pdev->dev);
 		goto rpm_disable;
+	}
 
 	ret = tegra_adma_init(tdma);
 	if (ret)
drivers/dma/ti/k3-udma-private.c +1 -0
index 0b8f3dd6b146..77e8e67d995b 100644
@@ -42,6 +42,7 @@ struct udma_dev *of_xudma_dev_get(struct device_node *np, const char *property)
 	ud = platform_get_drvdata(pdev);
 	if (!ud) {
 		pr_debug("UDMA has not been probed\n");
+		put_device(&pdev->dev);
 		return ERR_PTR(-EPROBE_DEFER);
 	}
 
drivers/dma/ti/k3-udma.c +17 -16
index 7cab23fe5c73..b777f1924968 100644
@@ -1773,7 +1773,8 @@ static int udma_alloc_chan_resources(struct dma_chan *chan)
 			dev_err(ud->ddev.dev,
 				"Descriptor pool allocation failed\n");
 			uc->use_dma_pool = false;
-			return -ENOMEM;
+			ret = -ENOMEM;
+			goto err_cleanup;
 		}
 	}
 
@@ -1793,16 +1794,18 @@ static int udma_alloc_chan_resources(struct dma_chan *chan)
 
 		ret = udma_get_chan_pair(uc);
 		if (ret)
-			return ret;
+			goto err_cleanup;
 
 		ret = udma_alloc_tx_resources(uc);
-		if (ret)
-			return ret;
+		if (ret) {
+			udma_put_rchan(uc);
+			goto err_cleanup;
+		}
 
 		ret = udma_alloc_rx_resources(uc);
 		if (ret) {
 			udma_free_tx_resources(uc);
-			return ret;
+			goto err_cleanup;
 		}
 
 		uc->config.src_thread = ud->psil_base + uc->tchan->id;
@@ -1820,10 +1823,8 @@ static int udma_alloc_chan_resources(struct dma_chan *chan)
 			uc->id);
 
 		ret = udma_alloc_tx_resources(uc);
-		if (ret) {
-			uc->config.remote_thread_id = -1;
-			return ret;
-		}
+		if (ret)
+			goto err_cleanup;
 
 		uc->config.src_thread = ud->psil_base + uc->tchan->id;
 		uc->config.dst_thread = uc->config.remote_thread_id;
@@ -1840,10 +1841,8 @@ static int udma_alloc_chan_resources(struct dma_chan *chan)
 			uc->id);
 
 		ret = udma_alloc_rx_resources(uc);
-		if (ret) {
-			uc->config.remote_thread_id = -1;
-			return ret;
-		}
+		if (ret)
+			goto err_cleanup;
 
 		uc->config.src_thread = uc->config.remote_thread_id;
 		uc->config.dst_thread = (ud->psil_base + uc->rchan->id) |
@@ -1858,7 +1857,9 @@ static int udma_alloc_chan_resources(struct dma_chan *chan)
 		/* Can not happen */
 		dev_err(uc->ud->dev, "%s: chan%d invalid direction (%u)\n",
 			__func__, uc->id, uc->config.dir);
-		return -EINVAL;
+		ret = -EINVAL;
+		goto err_cleanup;
+
 	}
 
 	/* check if the channel configuration was successful */
@@ -1867,7 +1868,7 @@ static int udma_alloc_chan_resources(struct dma_chan *chan)
 
 	if (udma_is_chan_running(uc)) {
 		dev_warn(ud->dev, "chan%d: is running!\n", uc->id);
-		udma_stop(uc);
+		udma_reset_chan(uc, false);
 		if (udma_is_chan_running(uc)) {
 			dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
 			goto err_res_free;
@@ -1936,7 +1937,7 @@ static int udma_alloc_chan_resources(struct dma_chan *chan)
 err_res_free:
 	udma_free_tx_resources(uc);
 	udma_free_rx_resources(uc);
-
+err_cleanup:
 	udma_reset_uchan(uc);
 
 	if (uc->use_dma_pool) {
drivers/firmware/efi/efi-pstore.c +1 -4
index c2f1d4e6630b..feb7fe6f2da7 100644
@@ -356,10 +356,7 @@ static struct pstore_info efi_pstore_info = {
 
 static __init int efivars_pstore_init(void)
 {
-	if (!efi_rt_services_supported(EFI_RT_SUPPORTED_VARIABLE_SERVICES))
-		return 0;
-
-	if (!efivars_kobject())
+	if (!efivars_kobject() || !efivar_supports_writes())
 		return 0;
 
 	if (efivars_pstore_disable)
drivers/firmware/efi/efi.c +8 -4
index 20a7ba47a792..99446b384726 100644
@@ -176,11 +176,13 @@ static struct efivar_operations generic_ops;
 static int generic_ops_register(void)
 {
 	generic_ops.get_variable = efi.get_variable;
-	generic_ops.set_variable = efi.set_variable;
-	generic_ops.set_variable_nonblocking = efi.set_variable_nonblocking;
 	generic_ops.get_next_variable = efi.get_next_variable;
 	generic_ops.query_variable_store = efi_query_variable_store;
 
+	if (efi_rt_services_supported(EFI_RT_SUPPORTED_SET_VARIABLE)) {
+		generic_ops.set_variable = efi.set_variable;
+		generic_ops.set_variable_nonblocking = efi.set_variable_nonblocking;
+	}
 	return efivars_register(&generic_efivars, &generic_ops, efi_kobj);
 }
 
@@ -382,7 +384,8 @@ static int __init efisubsys_init(void)
 		return -ENOMEM;
 	}
 
-	if (efi_rt_services_supported(EFI_RT_SUPPORTED_VARIABLE_SERVICES)) {
+	if (efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE |
+				      EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME)) {
 		efivar_ssdt_load();
 		error = generic_ops_register();
 		if (error)
@@ -416,7 +419,8 @@ static int __init efisubsys_init(void)
 err_remove_group:
 	sysfs_remove_group(efi_kobj, &efi_subsys_attr_group);
 err_unregister:
-	if (efi_rt_services_supported(EFI_RT_SUPPORTED_VARIABLE_SERVICES))
+	if (efi_rt_services_supported(EFI_RT_SUPPORTED_GET_VARIABLE |
+				      EFI_RT_SUPPORTED_GET_NEXT_VARIABLE_NAME))
 		generic_ops_unregister();
 err_put:
 	kobject_put(efi_kobj);
drivers/firmware/efi/efivars.c +1 -4
index 26528a46d99e..dcea137142b3 100644
@@ -680,11 +680,8 @@ int efivars_sysfs_init(void)
 	struct kobject *parent_kobj = efivars_kobject();
 	int error = 0;
 
-	if (!efi_rt_services_supported(EFI_RT_SUPPORTED_VARIABLE_SERVICES))
-		return -ENODEV;
-
 	/* No efivars has been registered yet */
-	if (!parent_kobj)
+	if (!parent_kobj || !efivar_supports_writes())
 		return 0;
 
 	printk(KERN_INFO "EFI Variables Facility v%s %s\n", EFIVARS_VERSION,
drivers/firmware/efi/vars.c +6 -0
index 5f2a4d162795..973eef234b36 100644
@@ -1229,3 +1229,9 @@ int efivars_unregister(struct efivars *efivars)
 	return rv;
 }
 EXPORT_SYMBOL_GPL(efivars_unregister);
+
+int efivar_supports_writes(void)
+{
+	return __efivars && __efivars->ops->set_variable;
+}
+EXPORT_SYMBOL_GPL(efivar_supports_writes);
drivers/firmware/psci/psci_checker.c +4 -1
index 873841af8d57..d9b1a2d71223 100644
@@ -157,8 +157,10 @@ static int alloc_init_cpu_groups(cpumask_var_t **pcpu_groups)
 
 	cpu_groups = kcalloc(nb_available_cpus, sizeof(cpu_groups),
 			     GFP_KERNEL);
-	if (!cpu_groups)
+	if (!cpu_groups) {
+		free_cpumask_var(tmp);
 		return -ENOMEM;
+	}
 
 	cpumask_copy(tmp, cpu_online_mask);
 
@@ -167,6 +169,7 @@ static int alloc_init_cpu_groups(cpumask_var_t **pcpu_groups)
 			topology_core_cpumask(cpumask_any(tmp));
 
 		if (!alloc_cpumask_var(&cpu_groups[num_groups], GFP_KERNEL)) {
+			free_cpumask_var(tmp);
 			free_cpu_groups(num_groups, &cpu_groups);
 			return -ENOMEM;
 		}
drivers/fpga/dfl-afu-main.c +2 -1
index 65437b6a6842..77e257c88a1d 100644
@@ -83,7 +83,8 @@ int __afu_port_disable(struct platform_device *pdev)
 	 * on this port and minimum soft reset pulse width has elapsed.
 	 * Driver polls port_soft_reset_ack to determine if reset done by HW.
 	 */
-	if (readq_poll_timeout(base + PORT_HDR_CTRL, v, v & PORT_CTRL_SFTRST,
+	if (readq_poll_timeout(base + PORT_HDR_CTRL, v,
+			       v & PORT_CTRL_SFTRST_ACK,
 			       RST_POLL_INVL, RST_POLL_TIMEOUT)) {
 		dev_err(&pdev->dev, "timeout, fail to reset device\n");
 		return -ETIMEDOUT;
drivers/fpga/dfl-pci.c +2 -1
index 538755062ab7..a78c409bf2c4 100644
@@ -227,7 +227,6 @@ static int cci_pci_sriov_configure(struct pci_dev *pcidev, int num_vfs)
 {
 	struct cci_drvdata *drvdata = pci_get_drvdata(pcidev);
 	struct dfl_fpga_cdev *cdev = drvdata->cdev;
-	int ret = 0;
 
 	if (!num_vfs) {
 		/*
@@ -239,6 +238,8 @@ static int cci_pci_sriov_configure(struct pci_dev *pcidev, int num_vfs)
 		dfl_fpga_cdev_config_ports_pf(cdev);
 
 	} else {
+		int ret;
+
 		/*
 		 * before enable SRIOV, put released ports into VF access mode
 		 * first of all.
drivers/gpio/gpio-arizona.c +6 -1
index 5640efe5e750..5bda38e0780f 100644
@@ -64,6 +64,7 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset)
 		ret = pm_runtime_get_sync(chip->parent);
 		if (ret < 0) {
 			dev_err(chip->parent, "Failed to resume: %d\n", ret);
+			pm_runtime_put_autosuspend(chip->parent);
 			return ret;
 		}
 
@@ -72,12 +73,15 @@ static int arizona_gpio_get(struct gpio_chip *chip, unsigned offset)
 		if (ret < 0) {
 			dev_err(chip->parent, "Failed to drop cache: %d\n",
 				ret);
+			pm_runtime_put_autosuspend(chip->parent);
 			return ret;
 		}
 
 		ret = regmap_read(arizona->regmap, reg, &val);
-		if (ret < 0)
+		if (ret < 0) {
+			pm_runtime_put_autosuspend(chip->parent);
 			return ret;
+		}
 
 		pm_runtime_mark_last_busy(chip->parent);
 		pm_runtime_put_autosuspend(chip->parent);
@@ -106,6 +110,7 @@ static int arizona_gpio_direction_out(struct gpio_chip *chip,
 		ret = pm_runtime_get_sync(chip->parent);
 		if (ret < 0) {
 			dev_err(chip->parent, "Failed to resume: %d\n", ret);
+			pm_runtime_put(chip->parent);
 			return ret;
 		}
 	}
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c +15 -5
index c0f9a651dc06..92b18c4760e5 100644
@@ -1156,27 +1156,37 @@ static void amdgpu_ib_preempt_job_recovery(struct drm_gpu_scheduler *sched)
 static void amdgpu_ib_preempt_mark_partial_job(struct amdgpu_ring *ring)
 {
 	struct amdgpu_job *job;
-	struct drm_sched_job *s_job;
+	struct drm_sched_job *s_job, *tmp;
 	uint32_t preempt_seq;
 	struct dma_fence *fence, **ptr;
 	struct amdgpu_fence_driver *drv = &ring->fence_drv;
 	struct drm_gpu_scheduler *sched = &ring->sched;
+	bool preempted = true;
 
 	if (ring->funcs->type != AMDGPU_RING_TYPE_GFX)
 		return;
 
 	preempt_seq = le32_to_cpu(*(drv->cpu_addr + 2));
-	if (preempt_seq <= atomic_read(&drv->last_seq))
-		return;
+	if (preempt_seq <= atomic_read(&drv->last_seq)) {
+		preempted = false;
+		goto no_preempt;
+	}
 
 	preempt_seq &= drv->num_fences_mask;
 	ptr = &drv->fences[preempt_seq];
 	fence = rcu_dereference_protected(*ptr, 1);
 
+no_preempt:
 	spin_lock(&sched->job_list_lock);
-	list_for_each_entry(s_job, &sched->ring_mirror_list, node) {
+	list_for_each_entry_safe(s_job, tmp, &sched->ring_mirror_list, node) {
+		if (dma_fence_is_signaled(&s_job->s_fence->finished)) {
+			/* remove job from ring_mirror_list */
+			list_del_init(&s_job->node);
+			sched->ops->free_job(s_job);
+			continue;
+		}
 		job = to_amdgpu_job(s_job);
-		if (job->fence == fence)
+		if (preempted && job->fence == fence)
 			/* mark the job as preempted */
 			job->preemption_status |= AMDGPU_IB_PREEMPTED;
 	}
drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c +3 -6
index 96b8feb77b15..b14b0b4ffeb2 100644
@@ -775,8 +775,7 @@ static ssize_t amdgpu_set_pp_od_clk_voltage(struct device *dev,
 		tmp_str++;
 	while (isspace(*++tmp_str));
 
-	while (tmp_str[0]) {
-		sub_str = strsep(&tmp_str, delimiter);
+	while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) {
 		ret = kstrtol(sub_str, 0, &parameter[parameter_size]);
 		if (ret)
 			return -EINVAL;
@@ -1036,8 +1035,7 @@ static ssize_t amdgpu_read_mask(const char *buf, size_t count, uint32_t *mask)
 	memcpy(buf_cpy, buf, bytes);
 	buf_cpy[bytes] = '\0';
 	tmp = buf_cpy;
-	while (tmp[0]) {
-		sub_str = strsep(&tmp, delimiter);
+	while ((sub_str = strsep(&tmp, delimiter)) != NULL) {
 		if (strlen(sub_str)) {
 			ret = kstrtol(sub_str, 0, &level);
 			if (ret)
@@ -1634,8 +1632,7 @@ static ssize_t amdgpu_set_pp_power_profile_mode(struct device *dev,
 			i++;
 		memcpy(buf_cpy, buf, count-i);
 		tmp_str = buf_cpy;
-		while (tmp_str[0]) {
-			sub_str = strsep(&tmp_str, delimiter);
+		while ((sub_str = strsep(&tmp_str, delimiter)) != NULL) {
 			ret = kstrtol(sub_str, 0, &parameter[parameter_size]);
 			if (ret)
 				return -EINVAL;
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +8 -1
index 0e0daf0021b6..ff94f756978d 100644
@@ -4746,12 +4746,17 @@ static int gfx_v10_0_ring_preempt_ib(struct amdgpu_ring *ring)
 	struct amdgpu_device *adev = ring->adev;
 	struct amdgpu_kiq *kiq = &adev->gfx.kiq;
 	struct amdgpu_ring *kiq_ring = &kiq->ring;
+	unsigned long flags;
 
 	if (!kiq->pmf || !kiq->pmf->kiq_unmap_queues)
 		return -EINVAL;
 
-	if (amdgpu_ring_alloc(kiq_ring, kiq->pmf->unmap_queues_size))
+	spin_lock_irqsave(&kiq->ring_lock, flags);
+
+	if (amdgpu_ring_alloc(kiq_ring, kiq->pmf->unmap_queues_size)) {
+		spin_unlock_irqrestore(&kiq->ring_lock, flags);
 		return -ENOMEM;
+	}
 
 	/* assert preemption condition */
 	amdgpu_ring_set_preempt_cond_exec(ring, false);
@@ -4762,6 +4767,8 @@ static int gfx_v10_0_ring_preempt_ib(struct amdgpu_ring *ring)
 				   ++ring->trail_seq);
 	amdgpu_ring_commit(kiq_ring);
 
+	spin_unlock_irqrestore(&kiq->ring_lock, flags);
+
 	/* poll the trailing fence */
 	for (i = 0; i < adev->usec_timeout; i++) {
 		if (ring->trail_seq ==
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +6 -1
index d06fa6380179..837a286469ec 100644
@@ -1342,9 +1342,14 @@ static int dm_late_init(void *handle)
 	struct dmcu_iram_parameters params;
 	unsigned int linear_lut[16];
 	int i;
-	struct dmcu *dmcu = adev->dm.dc->res_pool->dmcu;
+	struct dmcu *dmcu = NULL;
 	bool ret;
 
+	if (!adev->dm.fw_dmcu && !adev->dm.dmub_fw)
+		return detect_mst_link_for_all_connectors(adev->ddev);
+
+	dmcu = adev->dm.dc->res_pool->dmcu;
+
 	for (i = 0; i < 16; i++)
 		linear_lut[i] = 0xFFFF * i / 15;
 
drivers/gpu/drm/amd/powerplay/smumgr/vegam_smumgr.c +6 -4
index b0e0d67cd54b..2a081a792c6b 100644
@@ -642,9 +642,6 @@ static int vegam_get_dependency_volt_by_clk(struct pp_hwmgr *hwmgr,
 
 	/* sclk is bigger than max sclk in the dependence table */
 	*voltage |= (dep_table->entries[i - 1].vddc * VOLTAGE_SCALE) << VDDC_SHIFT;
-	vddci = phm_find_closest_vddci(&(data->vddci_voltage_table),
-			(dep_table->entries[i - 1].vddc -
-					(uint16_t)VDDC_VDDCI_DELTA));
 
 	if (SMU7_VOLTAGE_CONTROL_NONE == data->vddci_control)
 		*voltage |= (data->vbios_boot_state.vddci_bootup_value *
@@ -652,8 +649,13 @@ static int vegam_get_dependency_volt_by_clk(struct pp_hwmgr *hwmgr,
 	else if (dep_table->entries[i - 1].vddci)
 		*voltage |= (dep_table->entries[i - 1].vddci *
 				VOLTAGE_SCALE) << VDDC_SHIFT;
-	else
+	else {
+		vddci = phm_find_closest_vddci(&(data->vddci_voltage_table),
+				(dep_table->entries[i - 1].vddc -
+						(uint16_t)VDDC_VDDCI_DELTA));
+
 		*voltage |= (vddci * VOLTAGE_SCALE) << VDDCI_SHIFT;
+	}
 
 	if (SMU7_VOLTAGE_CONTROL_NONE == data->mvdd_control)
 		*mvdd = data->vbios_boot_state.mvdd_bootup_value * VOLTAGE_SCALE;
drivers/gpu/drm/nouveau/nouveau_svm.c +1 -0
index 645fedd77e21..a9ce86740799 100644
@@ -534,6 +534,7 @@ static int nouveau_range_fault(struct nouveau_svmm *svmm,
 		.flags = nouveau_svm_pfn_flags,
 		.values = nouveau_svm_pfn_values,
 		.pfn_shift = NVIF_VMM_PFNMAP_V0_ADDR_SHIFT,
+		.dev_private_owner = drm->dev,
 	};
 	struct mm_struct *mm = notifier->notifier.mm;
 	long ret;
drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.c +2 -2
index c8ab1b5741a3..db7769cb33eb 100644
@@ -118,10 +118,10 @@ g94_i2c_aux_xfer(struct nvkm_i2c_aux *obj, bool retry,
 		if (retries)
 			udelay(400);
 
-		/* transaction request, wait up to 1ms for it to complete */
+		/* transaction request, wait up to 2ms for it to complete */
 		nvkm_wr32(device, 0x00e4e4 + base, 0x00010000 | ctrl);
 
-		timeout = 1000;
+		timeout = 2000;
 		do {
 			ctrl = nvkm_rd32(device, 0x00e4e4 + base);
 			udelay(1);
drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c +2 -2
index 7ef60895f43a..edb6148cbca0 100644
@@ -118,10 +118,10 @@ gm200_i2c_aux_xfer(struct nvkm_i2c_aux *obj, bool retry,
 		if (retries)
 			udelay(400);
 
-		/* transaction request, wait up to 1ms for it to complete */
+		/* transaction request, wait up to 2ms for it to complete */
 		nvkm_wr32(device, 0x00d954 + base, 0x00010000 | ctrl);
 
-		timeout = 1000;
+		timeout = 2000;
 		do {
 			ctrl = nvkm_rd32(device, 0x00d954 + base);
 			udelay(1);
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c +1 -1
index f07e0c32b93a..4c5072a578bf 100644
@@ -263,7 +263,7 @@ sun4i_hdmi_connector_detect(struct drm_connector *connector, bool force)
 	unsigned long reg;
 
 	reg = readl(hdmi->base + SUN4I_HDMI_HPD_REG);
-	if (reg & SUN4I_HDMI_HPD_HIGH) {
+	if (!(reg & SUN4I_HDMI_HPD_HIGH)) {
 		cec_phys_addr_invalidate(hdmi->cec_adap);
 		return connector_status_disconnected;
 	}
drivers/hid/hid-alps.c +2 -0
index b2ad319a74b9..d33f5abc8f64 100644
@@ -25,6 +25,7 @@
 
 #define U1_MOUSE_REPORT_ID			0x01 /* Mouse data ReportID */
 #define U1_ABSOLUTE_REPORT_ID		0x03 /* Absolute data ReportID */
+#define U1_ABSOLUTE_REPORT_ID_SECD  0x02 /* FW-PTP Absolute data ReportID */
 #define U1_FEATURE_REPORT_ID		0x05 /* Feature ReportID */
 #define U1_SP_ABSOLUTE_REPORT_ID	0x06 /* Feature ReportID */
 
@@ -368,6 +369,7 @@ static int u1_raw_event(struct alps_dev *hdata, u8 *data, int size)
 	case U1_FEATURE_REPORT_ID:
 		break;
 	case U1_ABSOLUTE_REPORT_ID:
+	case U1_ABSOLUTE_REPORT_ID_SECD:
 		for (i = 0; i < hdata->max_fingers; i++) {
 			u8 *contact = &data[i * 5];
 
drivers/hid/hid-apple.c +18 -0
index d732d1d10caf..6909c045fece 100644
@@ -54,6 +54,7 @@ MODULE_PARM_DESC(swap_opt_cmd, "Swap the Option (\"Alt\") and Command (\"Flag\")
 struct apple_sc {
 	unsigned long quirks;
 	unsigned int fn_on;
+	unsigned int fn_found;
 	DECLARE_BITMAP(pressed_numlock, KEY_CNT);
 };
 
@@ -339,12 +340,15 @@ static int apple_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 		struct hid_field *field, struct hid_usage *usage,
 		unsigned long **bit, int *max)
 {
+	struct apple_sc *asc = hid_get_drvdata(hdev);
+
 	if (usage->hid == (HID_UP_CUSTOM | 0x0003) ||
 			usage->hid == (HID_UP_MSVENDOR | 0x0003) ||
 			usage->hid == (HID_UP_HPVENDOR2 | 0x0003)) {
 		/* The fn key on Apple USB keyboards */
 		set_bit(EV_REP, hi->input->evbit);
 		hid_map_usage_clear(hi, usage, bit, max, EV_KEY, KEY_FN);
+		asc->fn_found = true;
 		apple_setup_input(hi->input);
 		return 1;
 	}
@@ -371,6 +375,19 @@ static int apple_input_mapped(struct hid_device *hdev, struct hid_input *hi,
 	return 0;
 }
 
+static int apple_input_configured(struct hid_device *hdev,
+		struct hid_input *hidinput)
+{
+	struct apple_sc *asc = hid_get_drvdata(hdev);
+
+	if ((asc->quirks & APPLE_HAS_FN) && !asc->fn_found) {
+		hid_info(hdev, "Fn key not found (Apple Wireless Keyboard clone?), disabling Fn key handling\n");
+		asc->quirks = 0;
+	}
+
+	return 0;
+}
+
 static int apple_probe(struct hid_device *hdev,
 		const struct hid_device_id *id)
 {
@@ -585,6 +602,7 @@ static struct hid_driver apple_driver = {
 	.event = apple_event,
 	.input_mapping = apple_input_mapping,
 	.input_mapped = apple_input_mapped,
+	.input_configured = apple_input_configured,
 };
 module_hid_driver(apple_driver);
 
drivers/hid/hid-steam.c +4 -2
index 6286204d4c56..a3b151b29bd7 100644
@@ -526,7 +526,8 @@ static int steam_register(struct steam_device *steam)
 			steam_battery_register(steam);
 
 		mutex_lock(&steam_devices_lock);
-		list_add(&steam->list, &steam_devices);
+		if (list_empty(&steam->list))
+			list_add(&steam->list, &steam_devices);
 		mutex_unlock(&steam_devices_lock);
 	}
 
@@ -552,7 +553,7 @@ static void steam_unregister(struct steam_device *steam)
 		hid_info(steam->hdev, "Steam Controller '%s' disconnected",
 				steam->serial_no);
 		mutex_lock(&steam_devices_lock);
-		list_del(&steam->list);
+		list_del_init(&steam->list);
 		mutex_unlock(&steam_devices_lock);
 		steam->serial_no[0] = 0;
 	}
@@ -738,6 +739,7 @@ static int steam_probe(struct hid_device *hdev,
 	mutex_init(&steam->mutex);
 	steam->quirks = id->driver_data;
 	INIT_WORK(&steam->work_connect, steam_work_connect_cb);
+	INIT_LIST_HEAD(&steam->list);
 
 	steam->client_hdev = steam_create_client_hid(hdev);
 	if (IS_ERR(steam->client_hdev)) {
drivers/hid/i2c-hid/i2c-hid-dmi-quirks.c +8 -0
index ec142bc8c1da..35f3bfc3e6f5 100644
@@ -373,6 +373,14 @@ static const struct dmi_system_id i2c_hid_dmi_desc_override_table[] = {
 		},
 		.driver_data = (void *)&sipodev_desc
 	},
+	{
+		.ident = "Mediacom FlexBook edge 13",
+		.matches = {
+			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "MEDIACOM"),
+			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "FlexBook_edge13-M-FBE13"),
+		},
+		.driver_data = (void *)&sipodev_desc
+	},
 	{
 		.ident = "Odys Winbook 13",
 		.matches = {
drivers/hwmon/aspeed-pwm-tacho.c +2 -0
index 33fb54845bf6..3d8239fd66ed 100644
@@ -851,6 +851,8 @@ static int aspeed_create_fan(struct device *dev,
 	ret = of_property_read_u32(child, "reg", &pwm_port);
 	if (ret)
 		return ret;
+	if (pwm_port >= ARRAY_SIZE(pwm_port_params))
+		return -EINVAL;
 	aspeed_create_pwm_port(priv, (u8)pwm_port);
 
 	ret = of_property_count_u8_elems(child, "cooling-levels");
drivers/hwmon/nct6775.c +3 -3
index 7efa6bfef060..ba9b96973e80 100644
@@ -786,13 +786,13 @@ static const char *const nct6798_temp_label[] = {
 	"Agent1 Dimm1",
 	"BYTE_TEMP0",
 	"BYTE_TEMP1",
-	"",
-	"",
+	"PECI Agent 0 Calibration",	/* undocumented */
+	"PECI Agent 1 Calibration",	/* undocumented */
 	"",
 	"Virtual_TEMP"
 };
 
-#define NCT6798_TEMP_MASK	0x8fff0ffe
+#define NCT6798_TEMP_MASK	0xbfff0ffe
 #define NCT6798_VIRT_TEMP_MASK	0x80000c00
 
 /* NCT6102D/NCT6106D specific data */
drivers/hwmon/pmbus/adm1275.c +8 -2
index e25f541227da..19317575d1c6 100644
@@ -465,6 +465,7 @@ MODULE_DEVICE_TABLE(i2c, adm1275_id);
 static int adm1275_probe(struct i2c_client *client,
 			 const struct i2c_device_id *id)
 {
+	s32 (*config_read_fn)(const struct i2c_client *client, u8 reg);
 	u8 block_buffer[I2C_SMBUS_BLOCK_MAX + 1];
 	int config, device_config;
 	int ret;
@@ -510,11 +511,16 @@ static int adm1275_probe(struct i2c_client *client,
 			   "Device mismatch: Configured %s, detected %s\n",
 			   id->name, mid->name);
 
-	config = i2c_smbus_read_byte_data(client, ADM1275_PMON_CONFIG);
+	if (mid->driver_data == adm1272 || mid->driver_data == adm1278 ||
+	    mid->driver_data == adm1293 || mid->driver_data == adm1294)
+		config_read_fn = i2c_smbus_read_word_data;
+	else
+		config_read_fn = i2c_smbus_read_byte_data;
+	config = config_read_fn(client, ADM1275_PMON_CONFIG);
 	if (config < 0)
 		return config;
 
-	device_config = i2c_smbus_read_byte_data(client, ADM1275_DEVICE_CONFIG);
+	device_config = config_read_fn(client, ADM1275_DEVICE_CONFIG);
 	if (device_config < 0)
 		return device_config;
 
drivers/hwmon/scmi-hwmon.c +1 -1
index 286d3cfda7de..d421e691318b 100644
@@ -147,7 +147,7 @@ static enum hwmon_sensor_types scmi_types[] = {
 	[ENERGY] = hwmon_energy,
 };
 
-static u32 hwmon_attributes[] = {
+static u32 hwmon_attributes[hwmon_max] = {
 	[hwmon_chip] = HWMON_C_REGISTER_TZ,
 	[hwmon_temp] = HWMON_T_INPUT | HWMON_T_LABEL,
 	[hwmon_in] = HWMON_I_INPUT | HWMON_I_LABEL,
drivers/i2c/busses/i2c-qcom-geni.c +4 -2
index 18d1e4fd4cf3..7f130829bf01 100644
@@ -367,7 +367,6 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		geni_se_select_mode(se, GENI_SE_FIFO);
 
 	writel_relaxed(len, se->base + SE_I2C_RX_TRANS_LEN);
-	geni_se_setup_m_cmd(se, I2C_READ, m_param);
 
 	if (dma_buf && geni_se_rx_dma_prep(se, dma_buf, len, &rx_dma)) {
 		geni_se_select_mode(se, GENI_SE_FIFO);
@@ -375,6 +374,8 @@ static int geni_i2c_rx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		dma_buf = NULL;
 	}
 
+	geni_se_setup_m_cmd(se, I2C_READ, m_param);
+
 	time_left = wait_for_completion_timeout(&gi2c->done, XFER_TIMEOUT);
 	if (!time_left)
 		geni_i2c_abort_xfer(gi2c);
@@ -408,7 +409,6 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		geni_se_select_mode(se, GENI_SE_FIFO);
 
 	writel_relaxed(len, se->base + SE_I2C_TX_TRANS_LEN);
-	geni_se_setup_m_cmd(se, I2C_WRITE, m_param);
 
 	if (dma_buf && geni_se_tx_dma_prep(se, dma_buf, len, &tx_dma)) {
 		geni_se_select_mode(se, GENI_SE_FIFO);
@@ -416,6 +416,8 @@ static int geni_i2c_tx_one_msg(struct geni_i2c_dev *gi2c, struct i2c_msg *msg,
 		dma_buf = NULL;
 	}
 
+	geni_se_setup_m_cmd(se, I2C_WRITE, m_param);
+
 	if (!dma_buf) /* Get FIFO IRQ */
 		writel_relaxed(1, se->base + SE_GENI_TX_WATERMARK_REG);
 
drivers/i2c/busses/i2c-rcar.c +3 -0
index 3b5397aa4ca6..50dd98803ca0 100644
@@ -868,6 +868,7 @@ static int rcar_unreg_slave(struct i2c_client *slave)
 	/* disable irqs and ensure none is running before clearing ptr */
 	rcar_i2c_write(priv, ICSIER, 0);
 	rcar_i2c_write(priv, ICSCR, 0);
+	rcar_i2c_write(priv, ICSAR, 0); /* Gen2: must be 0 if not using slave */
 
 	synchronize_irq(priv->irq);
 	priv->slave = NULL;
@@ -971,6 +972,8 @@ static int rcar_i2c_probe(struct platform_device *pdev)
 	if (ret < 0)
 		goto out_pm_put;
 
+	rcar_i2c_write(priv, ICSAR, 0); /* Gen2: must be 0 if not using slave */
+
 	if (priv->devtype == I2C_RCAR_GEN3) {
 		priv->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL);
 		if (!IS_ERR(priv->rstc)) {
drivers/infiniband/core/cm.c +2 -0
index 1c2bf18cda9f..83b66757c7ae 100644
@@ -3723,10 +3723,12 @@ static int cm_send_sidr_rep_locked(struct cm_id_private *cm_id_priv,
 		return ret;
 	}
 	cm_id_priv->id.state = IB_CM_IDLE;
+	spin_lock_irq(&cm.lock);
 	if (!RB_EMPTY_NODE(&cm_id_priv->sidr_id_node)) {
 		rb_erase(&cm_id_priv->sidr_id_node, &cm.remote_sidr_table);
 		RB_CLEAR_NODE(&cm_id_priv->sidr_id_node);
 	}
+	spin_unlock_irq(&cm.lock);
 	return 0;
 }
 
drivers/infiniband/core/rdma_core.c +3 -3
index 75bcbc625616..3ab84fcbaade 100644
@@ -638,9 +638,6 @@ void rdma_alloc_commit_uobject(struct ib_uobject *uobj,
 {
 	struct ib_uverbs_file *ufile = attrs->ufile;
 
-	/* alloc_commit consumes the uobj kref */
-	uobj->uapi_object->type_class->alloc_commit(uobj);
-
 	/* kref is held so long as the uobj is on the uobj list. */
 	uverbs_uobject_get(uobj);
 	spin_lock_irq(&ufile->uobjects_lock);
@@ -650,6 +647,9 @@ void rdma_alloc_commit_uobject(struct ib_uobject *uobj,
 	/* matches atomic_set(-1) in alloc_uobj */
 	atomic_set(&uobj->usecnt, 0);
 
+	/* alloc_commit consumes the uobj kref */
+	uobj->uapi_object->type_class->alloc_commit(uobj);
+
 	/* Matches the down_read in rdma_alloc_begin_uobject */
 	up_read(&ufile->hw_destroy_rwsem);
 }
drivers/infiniband/hw/mlx5/odp.c +19 -3
index 3de7606d4a1a..bdeb6500a919 100644
@@ -601,6 +601,23 @@ void mlx5_ib_free_implicit_mr(struct mlx5_ib_mr *imr)
 	 */
 	synchronize_srcu(&dev->odp_srcu);
 
+	/*
+	 * All work on the prefetch list must be completed, xa_erase() prevented
+	 * new work from being created.
+	 */
+	wait_event(imr->q_deferred_work, !atomic_read(&imr->num_deferred_work));
+
+	/*
+	 * At this point it is forbidden for any other thread to enter
+	 * pagefault_mr() on this imr. It is already forbidden to call
+	 * pagefault_mr() on an implicit child. Due to this additions to
+	 * implicit_children are prevented.
+	 */
+
+	/*
+	 * Block destroy_unused_implicit_child_mr() from incrementing
+	 * num_deferred_work.
+	 */
 	xa_lock(&imr->implicit_children);
 	xa_for_each (&imr->implicit_children, idx, mtt) {
 		__xa_erase(&imr->implicit_children, idx);
@@ -609,9 +626,8 @@ void mlx5_ib_free_implicit_mr(struct mlx5_ib_mr *imr)
 	xa_unlock(&imr->implicit_children);
 
 	/*
-	 * num_deferred_work can only be incremented inside the odp_srcu, or
-	 * under xa_lock while the child is in the xarray. Thus at this point
-	 * it is only decreasing, and all work holding it is now on the wq.
+	 * Wait for any concurrent destroy_unused_implicit_child_mr() to
+	 * complete.
 	 */
 	wait_event(imr->q_deferred_work, !atomic_read(&imr->num_deferred_work));
 
drivers/infiniband/hw/mlx5/srq_cmd.c +2 -2
index 8fc3630a9d4c..0224231a2e6f 100644
@@ -83,11 +83,11 @@ struct mlx5_core_srq *mlx5_cmd_get_srq(struct mlx5_ib_dev *dev, u32 srqn)
 	struct mlx5_srq_table *table = &dev->srq_table;
 	struct mlx5_core_srq *srq;
 
-	xa_lock(&table->array);
+	xa_lock_irq(&table->array);
 	srq = xa_load(&table->array, srqn);
 	if (srq)
 		refcount_inc(&srq->common.refcount);
-	xa_unlock(&table->array);
+	xa_unlock_irq(&table->array);
 
 	return srq;
 }
drivers/input/mouse/elan_i2c_core.c +5 -4
index 8719da540383..196e8505dd8d 100644
@@ -951,6 +951,8 @@ static void elan_report_absolute(struct elan_tp_data *data, u8 *packet)
 	u8 hover_info = packet[ETP_HOVER_INFO_OFFSET];
 	bool contact_valid, hover_event;
 
+	pm_wakeup_event(&data->client->dev, 0);
+
 	hover_event = hover_info & 0x40;
 	for (i = 0; i < ETP_MAX_FINGERS; i++) {
 		contact_valid = tp_info & (1U << (3 + i));
@@ -974,6 +976,8 @@ static void elan_report_trackpoint(struct elan_tp_data *data, u8 *report)
 	u8 *packet = &report[ETP_REPORT_ID_OFFSET + 1];
 	int x, y;
 
+	pm_wakeup_event(&data->client->dev, 0);
+
 	if (!data->tp_input) {
 		dev_warn_once(&data->client->dev,
 			      "received a trackpoint report while no trackpoint device has been created. Please report upstream.\n");
@@ -998,7 +1002,6 @@ static void elan_report_trackpoint(struct elan_tp_data *data, u8 *report)
 static irqreturn_t elan_isr(int irq, void *dev_id)
 {
 	struct elan_tp_data *data = dev_id;
-	struct device *dev = &data->client->dev;
 	int error;
 	u8 report[ETP_MAX_REPORT_LEN];
 
@@ -1016,8 +1019,6 @@ static irqreturn_t elan_isr(int irq, void *dev_id)
 	if (error)
 		goto out;
 
-	pm_wakeup_event(dev, 0);
-
 	switch (report[ETP_REPORT_ID_OFFSET]) {
 	case ETP_REPORT_ID:
 		elan_report_absolute(data, report);
@@ -1026,7 +1027,7 @@ static irqreturn_t elan_isr(int irq, void *dev_id)
 		elan_report_trackpoint(data, report);
 		break;
 	default:
-		dev_err(dev, "invalid report id data (%x)\n",
+		dev_err(&data->client->dev, "invalid report id data (%x)\n",
 			report[ETP_REPORT_ID_OFFSET]);
 	}
 
drivers/input/mouse/synaptics.c +1 -0
index 758dae8d6500..4b81b2d0fe06 100644
@@ -179,6 +179,7 @@ static const char * const smbus_pnp_ids[] = {
 	"LEN0093", /* T480 */
 	"LEN0096", /* X280 */
 	"LEN0097", /* X280 -> ALPS trackpoint */
+	"LEN0099", /* X1 Extreme 1st */
 	"LEN009b", /* T580 */
 	"LEN200f", /* T450s */
 	"LEN2044", /* L470  */
drivers/interconnect/qcom/msm8916.c +7 -7
index e94f3c5228b7..42c6c5581662 100644
@@ -197,13 +197,13 @@ DEFINE_QNODE(pcnoc_int_0, MSM8916_PNOC_INT_0, 8, -1, -1, MSM8916_PNOC_SNOC_MAS,
 DEFINE_QNODE(pcnoc_int_1, MSM8916_PNOC_INT_1, 8, -1, -1, MSM8916_PNOC_SNOC_MAS);
 DEFINE_QNODE(pcnoc_m_0, MSM8916_PNOC_MAS_0, 8, -1, -1, MSM8916_PNOC_INT_0);
 DEFINE_QNODE(pcnoc_m_1, MSM8916_PNOC_MAS_1, 8, -1, -1, MSM8916_PNOC_SNOC_MAS);
-DEFINE_QNODE(pcnoc_s_0, MSM8916_PNOC_SLV_0, 8, -1, -1, MSM8916_SLAVE_CLK_CTL, MSM8916_SLAVE_TLMM, MSM8916_SLAVE_TCSR, MSM8916_SLAVE_SECURITY, MSM8916_SLAVE_MSS);
-DEFINE_QNODE(pcnoc_s_1, MSM8916_PNOC_SLV_1, 8, -1, -1, MSM8916_SLAVE_IMEM_CFG, MSM8916_SLAVE_CRYPTO_0_CFG, MSM8916_SLAVE_MSG_RAM, MSM8916_SLAVE_PDM, MSM8916_SLAVE_PRNG);
-DEFINE_QNODE(pcnoc_s_2, MSM8916_PNOC_SLV_2, 8, -1, -1, MSM8916_SLAVE_SPDM, MSM8916_SLAVE_BOOT_ROM, MSM8916_SLAVE_BIMC_CFG, MSM8916_SLAVE_PNOC_CFG, MSM8916_SLAVE_PMIC_ARB);
-DEFINE_QNODE(pcnoc_s_3, MSM8916_PNOC_SLV_3, 8, -1, -1, MSM8916_SLAVE_MPM, MSM8916_SLAVE_SNOC_CFG, MSM8916_SLAVE_RBCPR_CFG, MSM8916_SLAVE_QDSS_CFG, MSM8916_SLAVE_DEHR_CFG);
-DEFINE_QNODE(pcnoc_s_4, MSM8916_PNOC_SLV_4, 8, -1, -1, MSM8916_SLAVE_VENUS_CFG, MSM8916_SLAVE_CAMERA_CFG, MSM8916_SLAVE_DISPLAY_CFG);
-DEFINE_QNODE(pcnoc_s_8, MSM8916_PNOC_SLV_8, 8, -1, -1, MSM8916_SLAVE_USB_HS, MSM8916_SLAVE_SDCC_1, MSM8916_SLAVE_BLSP_1);
-DEFINE_QNODE(pcnoc_s_9, MSM8916_PNOC_SLV_9, 8, -1, -1, MSM8916_SLAVE_SDCC_2, MSM8916_SLAVE_LPASS, MSM8916_SLAVE_GRAPHICS_3D_CFG);
+DEFINE_QNODE(pcnoc_s_0, MSM8916_PNOC_SLV_0, 4, -1, -1, MSM8916_SLAVE_CLK_CTL, MSM8916_SLAVE_TLMM, MSM8916_SLAVE_TCSR, MSM8916_SLAVE_SECURITY, MSM8916_SLAVE_MSS);
+DEFINE_QNODE(pcnoc_s_1, MSM8916_PNOC_SLV_1, 4, -1, -1, MSM8916_SLAVE_IMEM_CFG, MSM8916_SLAVE_CRYPTO_0_CFG, MSM8916_SLAVE_MSG_RAM, MSM8916_SLAVE_PDM, MSM8916_SLAVE_PRNG);
+DEFINE_QNODE(pcnoc_s_2, MSM8916_PNOC_SLV_2, 4, -1, -1, MSM8916_SLAVE_SPDM, MSM8916_SLAVE_BOOT_ROM, MSM8916_SLAVE_BIMC_CFG, MSM8916_SLAVE_PNOC_CFG, MSM8916_SLAVE_PMIC_ARB);
+DEFINE_QNODE(pcnoc_s_3, MSM8916_PNOC_SLV_3, 4, -1, -1, MSM8916_SLAVE_MPM, MSM8916_SLAVE_SNOC_CFG, MSM8916_SLAVE_RBCPR_CFG, MSM8916_SLAVE_QDSS_CFG, MSM8916_SLAVE_DEHR_CFG);
+DEFINE_QNODE(pcnoc_s_4, MSM8916_PNOC_SLV_4, 4, -1, -1, MSM8916_SLAVE_VENUS_CFG, MSM8916_SLAVE_CAMERA_CFG, MSM8916_SLAVE_DISPLAY_CFG);
+DEFINE_QNODE(pcnoc_s_8, MSM8916_PNOC_SLV_8, 4, -1, -1, MSM8916_SLAVE_USB_HS, MSM8916_SLAVE_SDCC_1, MSM8916_SLAVE_BLSP_1);
+DEFINE_QNODE(pcnoc_s_9, MSM8916_PNOC_SLV_9, 4, -1, -1, MSM8916_SLAVE_SDCC_2, MSM8916_SLAVE_LPASS, MSM8916_SLAVE_GRAPHICS_3D_CFG);
 DEFINE_QNODE(pcnoc_snoc_mas, MSM8916_PNOC_SNOC_MAS, 8, 29, -1, MSM8916_PNOC_SNOC_SLV);
 DEFINE_QNODE(pcnoc_snoc_slv, MSM8916_PNOC_SNOC_SLV, 8, -1, 45, MSM8916_SNOC_INT_0, MSM8916_SNOC_INT_BIMC, MSM8916_SNOC_INT_1);
 DEFINE_QNODE(qdss_int, MSM8916_SNOC_QDSS_INT, 8, -1, -1, MSM8916_SNOC_INT_0, MSM8916_SNOC_INT_BIMC);
drivers/iommu/amd_iommu.c +3 -2
index 2883ac389abb..9c2e2ed82826 100644
@@ -4090,9 +4090,10 @@ int amd_iommu_create_irq_domain(struct amd_iommu *iommu)
 	if (!fn)
 		return -ENOMEM;
 	iommu->ir_domain = irq_domain_create_tree(fn, &amd_ir_domain_ops, iommu);
-	irq_domain_free_fwnode(fn);
-	if (!iommu->ir_domain)
+	if (!iommu->ir_domain) {
+		irq_domain_free_fwnode(fn);
 		return -ENOMEM;
+	}
 
 	iommu->ir_domain->parent = arch_get_ir_parent_domain();
 	iommu->msi_domain = arch_create_remap_msi_irq_domain(iommu->ir_domain,
drivers/iommu/hyperv-iommu.c +4 -1
index a386b83e0e34..f0fe5030acd3 100644
@@ -155,7 +155,10 @@ static int __init hyperv_prepare_irq_remapping(void)
 				0, IOAPIC_REMAPPING_ENTRY, fn,
 				&hyperv_ir_domain_ops, NULL);
 
-	irq_domain_free_fwnode(fn);
+	if (!ioapic_ir_domain) {
+		irq_domain_free_fwnode(fn);
+		return -ENOMEM;
+	}
 
 	/*
 	 * Hyper-V doesn't provide irq remapping function for
drivers/iommu/intel_irq_remapping.c +1 -1
index 81e43c1df7ec..982d796b686b 100644
@@ -563,8 +563,8 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu)
 					    0, INTR_REMAP_TABLE_ENTRIES,
 					    fn, &intel_ir_domain_ops,
 					    iommu);
-	irq_domain_free_fwnode(fn);
 	if (!iommu->ir_domain) {
+		irq_domain_free_fwnode(fn);
 		pr_err("IR%d: failed to allocate irqdomain\n", iommu->seq_id);
 		goto out_free_bitmap;
 	}
drivers/iommu/qcom_iommu.c +17 -20
index 5b3b270972f8..c6277d7398f3 100644
@@ -65,6 +65,7 @@ struct qcom_iommu_domain {
 	struct mutex		 init_mutex; /* Protects iommu pointer */
 	struct iommu_domain	 domain;
 	struct qcom_iommu_dev	*iommu;
+	struct iommu_fwspec	*fwspec;
 };
 
 static struct qcom_iommu_domain *to_qcom_iommu_domain(struct iommu_domain *dom)
@@ -84,9 +85,9 @@ static struct qcom_iommu_dev * to_iommu(struct device *dev)
 	return dev_iommu_priv_get(dev);
 }
 
-static struct qcom_iommu_ctx * to_ctx(struct device *dev, unsigned asid)
+static struct qcom_iommu_ctx * to_ctx(struct qcom_iommu_domain *d, unsigned asid)
 {
-	struct qcom_iommu_dev *qcom_iommu = to_iommu(dev);
+	struct qcom_iommu_dev *qcom_iommu = d->iommu;
 	if (!qcom_iommu)
 		return NULL;
 	return qcom_iommu->ctxs[asid - 1];
@@ -118,14 +119,12 @@ iommu_readq(struct qcom_iommu_ctx *ctx, unsigned reg)
 
 static void qcom_iommu_tlb_sync(void *cookie)
 {
-	struct iommu_fwspec *fwspec;
-	struct device *dev = cookie;
+	struct qcom_iommu_domain *qcom_domain = cookie;
+	struct iommu_fwspec *fwspec = qcom_domain->fwspec;
 	unsigned i;
 
-	fwspec = dev_iommu_fwspec_get(dev);
-
 	for (i = 0; i < fwspec->num_ids; i++) {
-		struct qcom_iommu_ctx *ctx = to_ctx(dev, fwspec->ids[i]);
+		struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]);
 		unsigned int val, ret;
 
 		iommu_writel(ctx, ARM_SMMU_CB_TLBSYNC, 0);
@@ -139,14 +138,12 @@ static void qcom_iommu_tlb_sync(void *cookie)
 
 static void qcom_iommu_tlb_inv_context(void *cookie)
 {
-	struct device *dev = cookie;
-	struct iommu_fwspec *fwspec;
+	struct qcom_iommu_domain *qcom_domain = cookie;
+	struct iommu_fwspec *fwspec = qcom_domain->fwspec;
 	unsigned i;
 
-	fwspec = dev_iommu_fwspec_get(dev);
-
 	for (i = 0; i < fwspec->num_ids; i++) {
-		struct qcom_iommu_ctx *ctx = to_ctx(dev, fwspec->ids[i]);
+		struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]);
 		iommu_writel(ctx, ARM_SMMU_CB_S1_TLBIASID, ctx->asid);
 	}
 
@@ -156,16 +153,14 @@ static void qcom_iommu_tlb_inv_context(void *cookie)
 static void qcom_iommu_tlb_inv_range_nosync(unsigned long iova, size_t size,
 					    size_t granule, bool leaf, void *cookie)
 {
-	struct device *dev = cookie;
-	struct iommu_fwspec *fwspec;
+	struct qcom_iommu_domain *qcom_domain = cookie;
+	struct iommu_fwspec *fwspec = qcom_domain->fwspec;
 	unsigned i, reg;
 
 	reg = leaf ? ARM_SMMU_CB_S1_TLBIVAL : ARM_SMMU_CB_S1_TLBIVA;
 
-	fwspec = dev_iommu_fwspec_get(dev);
-
 	for (i = 0; i < fwspec->num_ids; i++) {
-		struct qcom_iommu_ctx *ctx = to_ctx(dev, fwspec->ids[i]);
+		struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]);
 		size_t s = size;
 
 		iova = (iova >> 12) << 12;
@@ -256,7 +251,9 @@ static int qcom_iommu_init_domain(struct iommu_domain *domain,
 	};
 
 	qcom_domain->iommu = qcom_iommu;
-	pgtbl_ops = alloc_io_pgtable_ops(ARM_32_LPAE_S1, &pgtbl_cfg, dev);
+	qcom_domain->fwspec = fwspec;
+
+	pgtbl_ops = alloc_io_pgtable_ops(ARM_32_LPAE_S1, &pgtbl_cfg, qcom_domain);
 	if (!pgtbl_ops) {
 		dev_err(qcom_iommu->dev, "failed to allocate pagetable ops\n");
 		ret = -ENOMEM;
@@ -269,7 +266,7 @@ static int qcom_iommu_init_domain(struct iommu_domain *domain,
 	domain->geometry.force_aperture = true;
 
 	for (i = 0; i < fwspec->num_ids; i++) {
-		struct qcom_iommu_ctx *ctx = to_ctx(dev, fwspec->ids[i]);
+		struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]);
 
 		if (!ctx->secure_init) {
 			ret = qcom_scm_restore_sec_cfg(qcom_iommu->sec_id, ctx->asid);
@@ -419,7 +416,7 @@ static void qcom_iommu_detach_dev(struct iommu_domain *domain, struct device *de
 
 	pm_runtime_get_sync(qcom_iommu->dev);
 	for (i = 0; i < fwspec->num_ids; i++) {
-		struct qcom_iommu_ctx *ctx = to_ctx(dev, fwspec->ids[i]);
+		struct qcom_iommu_ctx *ctx = to_ctx(qcom_domain, fwspec->ids[i]);
 
 		/* Disable the context bank: */
 		iommu_writel(ctx, ARM_SMMU_CB_SCTLR, 0);
drivers/md/dm-integrity.c +2 -2
index 4094c47eca7f..8588fb59a3ed 100644
@@ -2424,7 +2424,7 @@ static void integrity_writer(struct work_struct *w)
 	unsigned prev_free_sectors;
 
 	/* the following test is not needed, but it tests the replay code */
-	if (unlikely(dm_suspended(ic->ti)) && !ic->meta_dev)
+	if (unlikely(dm_post_suspending(ic->ti)) && !ic->meta_dev)
 		return;
 
 	spin_lock_irq(&ic->endio_wait.lock);
@@ -2485,7 +2485,7 @@ static void integrity_recalc(struct work_struct *w)
 
 next_chunk:
 
-	if (unlikely(dm_suspended(ic->ti)))
+	if (unlikely(dm_post_suspending(ic->ti)))
 		goto unlock_ret;
 
 	range.logical_sector = le64_to_cpu(ic->sb->recalc_sector);
drivers/md/dm.c +19 -3
index 05333fc2f8d2..fabcc51b468c 100644
@@ -142,6 +142,7 @@ EXPORT_SYMBOL_GPL(dm_bio_get_target_bio_nr);
 #define DMF_NOFLUSH_SUSPENDING 5
 #define DMF_DEFERRED_REMOVE 6
 #define DMF_SUSPENDED_INTERNALLY 7
+#define DMF_POST_SUSPENDING 8
 
 #define DM_NUMA_NODE NUMA_NO_NODE
 static int dm_numa_node = DM_NUMA_NODE;
@@ -1446,9 +1447,6 @@ static int __send_empty_flush(struct clone_info *ci)
 	BUG_ON(bio_has_data(ci->bio));
 	while ((ti = dm_table_get_target(ci->map, target_nr++)))
 		__send_duplicate_bios(ci, ti, ti->num_flush_bios, NULL);
-
-	bio_disassociate_blkg(ci->bio);
-
 	return 0;
 }
 
@@ -1636,6 +1634,7 @@ static blk_qc_t __split_and_process_bio(struct mapped_device *md,
 		ci.bio = &flush_bio;
 		ci.sector_count = 0;
 		error = __send_empty_flush(&ci);
+		bio_uninit(ci.bio);
 		/* dec_pending submits any data associated with flush */
 	} else if (op_is_zone_mgmt(bio_op(bio))) {
 		ci.bio = bio;
@@ -1710,6 +1709,7 @@ static blk_qc_t __process_bio(struct mapped_device *md, struct dm_table *map,
 		ci.bio = &flush_bio;
 		ci.sector_count = 0;
 		error = __send_empty_flush(&ci);
+		bio_uninit(ci.bio);
 		/* dec_pending submits any data associated with flush */
 	} else {
 		struct dm_target_io *tio;
@@ -2399,6 +2399,7 @@ static void __dm_destroy(struct mapped_device *md, bool wait)
 	if (!dm_suspended_md(md)) {
 		dm_table_presuspend_targets(map);
 		set_bit(DMF_SUSPENDED, &md->flags);
+		set_bit(DMF_POST_SUSPENDING, &md->flags);
 		dm_table_postsuspend_targets(map);
 	}
 	/* dm_put_live_table must be before msleep, otherwise deadlock is possible */
@@ -2721,7 +2722,9 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
 	if (r)
 		goto out_unlock;
 
+	set_bit(DMF_POST_SUSPENDING, &md->flags);
 	dm_table_postsuspend_targets(map);
+	clear_bit(DMF_POST_SUSPENDING, &md->flags);
 
 out_unlock:
 	mutex_unlock(&md->suspend_lock);
@@ -2818,7 +2821,9 @@ static void __dm_internal_suspend(struct mapped_device *md, unsigned suspend_fla
 	(void) __dm_suspend(md, map, suspend_flags, TASK_UNINTERRUPTIBLE,
 			    DMF_SUSPENDED_INTERNALLY);
 
+	set_bit(DMF_POST_SUSPENDING, &md->flags);
 	dm_table_postsuspend_targets(map);
+	clear_bit(DMF_POST_SUSPENDING, &md->flags);
 }
 
 static void __dm_internal_resume(struct mapped_device *md)
@@ -2979,6 +2984,11 @@ int dm_suspended_md(struct mapped_device *md)
 	return test_bit(DMF_SUSPENDED, &md->flags);
 }
 
+static int dm_post_suspending_md(struct mapped_device *md)
+{
+	return test_bit(DMF_POST_SUSPENDING, &md->flags);
+}
+
 int dm_suspended_internally_md(struct mapped_device *md)
 {
 	return test_bit(DMF_SUSPENDED_INTERNALLY, &md->flags);
@@ -2995,6 +3005,12 @@ int dm_suspended(struct dm_target *ti)
 }
 EXPORT_SYMBOL_GPL(dm_suspended);
 
+int dm_post_suspending(struct dm_target *ti)
+{
+	return dm_post_suspending_md(dm_table_get_md(ti->table));
+}
+EXPORT_SYMBOL_GPL(dm_post_suspending);
+
 int dm_noflush_suspending(struct dm_target *ti)
 {
 	return __noflush_suspending(dm_table_get_md(ti->table));
drivers/mfd/ioc3.c +3 -2
index 02998d4eb74b..74cee7cb0afc 100644
@@ -142,10 +142,11 @@ static int ioc3_irq_domain_setup(struct ioc3_priv_data *ipd, int irq)
 		goto err;
 
 	domain = irq_domain_create_linear(fn, 24, &ioc3_irq_domain_ops, ipd);
-	if (!domain)
+	if (!domain) {
+		irq_domain_free_fwnode(fn);
 		goto err;
+	}
 
-	irq_domain_free_fwnode(fn);
 	ipd->domain = domain;
 
 	irq_set_chained_handler_and_data(irq, ioc3_irq_handler, domain);
drivers/mmc/host/sdhci-of-aspeed.c +1 -1
index 56912e30c47e..a1bcc0f4ba9e 100644
@@ -68,7 +68,7 @@ static void aspeed_sdhci_set_clock(struct sdhci_host *host, unsigned int clock)
 	if (WARN_ON(clock > host->max_clk))
 		clock = host->max_clk;
 
-	for (div = 1; div < 256; div *= 2) {
+	for (div = 2; div < 256; div *= 2) {
 		if ((parent / div) <= clock)
 			break;
 	}
drivers/net/bonding/bond_main.c +7 -3
index 2e70e43c5df5..6b40b5ab143a 100644
@@ -4953,15 +4953,19 @@ int bond_create(struct net *net, const char *name)
 	bond_dev->rtnl_link_ops = &bond_link_ops;
 
 	res = register_netdevice(bond_dev);
+	if (res < 0) {
+		free_netdev(bond_dev);
+		rtnl_unlock();
+
+		return res;
+	}
 
 	netif_carrier_off(bond_dev);
 
 	bond_work_init_all(bond);
 
 	rtnl_unlock();
-	if (res < 0)
-		free_netdev(bond_dev);
-	return res;
+	return 0;
 }
 
 static int __net_init bond_net_init(struct net *net)
drivers/net/bonding/bond_netlink.c +1 -2
index b43b51646b11..f0f9138e967f 100644
@@ -456,11 +456,10 @@ static int bond_newlink(struct net *src_net, struct net_device *bond_dev,
 		return err;
 
 	err = register_netdevice(bond_dev);
-
-	netif_carrier_off(bond_dev);
 	if (!err) {
 		struct bonding *bond = netdev_priv(bond_dev);
 
+		netif_carrier_off(bond_dev);
 		bond_work_init_all(bond);
 	}
 
drivers/net/dsa/microchip/ksz9477.c +23 -19

60 lines not on this page · raw message

drivers/net/dsa/microchip/ksz_common.c +0 -2
index fd1d6676ae4f..7b6c0dce7536 100644
@@ -358,8 +358,6 @@ int ksz_enable_port(struct dsa_switch *ds, int port, struct phy_device *phy)
 
 	/* setup slave port */
 	dev->dev_ops->port_setup(dev, port, false);
-	if (dev->dev_ops->phy_setup)
-		dev->dev_ops->phy_setup(dev, port, phy);
 
 	/* port_stp_state_set() will be called after to enable the port so
 	 * there is no need to do anything.
drivers/net/dsa/microchip/ksz_common.h +0 -2
index f2c9bb68fd33..7d11dd32ec0d 100644
@@ -119,8 +119,6 @@ struct ksz_dev_ops {
 	u32 (*get_port_addr)(int port, int offset);
 	void (*cfg_port_member)(struct ksz_device *dev, int port, u8 member);
 	void (*flush_dyn_mac_table)(struct ksz_device *dev, int port);
-	void (*phy_setup)(struct ksz_device *dev, int port,
-			  struct phy_device *phy);
 	void (*port_cleanup)(struct ksz_device *dev, int port);
 	void (*port_setup)(struct ksz_device *dev, int port, bool cpu_port);
 	void (*r_phy)(struct ksz_device *dev, u16 phy, u16 reg, u16 *val);
drivers/net/dsa/mv88e6xxx/chip.c +19 -3
index 2b4a723c8306..e065be419a03 100644
@@ -664,8 +664,11 @@ static void mv88e6xxx_mac_config(struct dsa_switch *ds, int port,
 				 const struct phylink_link_state *state)
 {
 	struct mv88e6xxx_chip *chip = ds->priv;
+	struct mv88e6xxx_port *p;
 	int err;
 
+	p = &chip->ports[port];
+
 	/* FIXME: is this the correct test? If we're in fixed mode on an
 	 * internal port, why should we process this any different from
 	 * PHY mode? On the other hand, the port may be automedia between
@@ -675,10 +678,14 @@ static void mv88e6xxx_mac_config(struct dsa_switch *ds, int port,
 		return;
 
 	mv88e6xxx_reg_lock(chip);
-	/* FIXME: should we force the link down here - but if we do, how
-	 * do we restore the link force/unforce state? The driver layering
-	 * gets in the way.
+	/* In inband mode, the link may come up at any time while the link
+	 * is not forced down. Force the link down while we reconfigure the
+	 * interface mode.
 	 */
+	if (mode == MLO_AN_INBAND && p->interface != state->interface &&
+	    chip->info->ops->port_set_link)
+		chip->info->ops->port_set_link(chip, port, LINK_FORCED_DOWN);
+
 	err = mv88e6xxx_port_config_interface(chip, port, state->interface);
 	if (err && err != -EOPNOTSUPP)
 		goto err_unlock;
@@ -691,6 +698,15 @@ static void mv88e6xxx_mac_config(struct dsa_switch *ds, int port,
 	if (err > 0)
 		err = 0;
 
+	/* Undo the forced down state above after completing configuration
+	 * irrespective of its state on entry, which allows the link to come up.
+	 */
+	if (mode == MLO_AN_INBAND && p->interface != state->interface &&
+	    chip->info->ops->port_set_link)
+		chip->info->ops->port_set_link(chip, port, LINK_UNFORCED);
+
+	p->interface = state->interface;
+
 err_unlock:
 	mv88e6xxx_reg_unlock(chip);
 
drivers/net/dsa/mv88e6xxx/chip.h +1 -0
index e5430cf2ad71..6476524e8239 100644
@@ -232,6 +232,7 @@ struct mv88e6xxx_port {
 	u64 atu_full_violation;
 	u64 vtu_member_violation;
 	u64 vtu_miss_violation;
+	phy_interface_t interface;
 	u8 cmode;
 	bool mirror_ingress;
 	bool mirror_egress;
drivers/net/ethernet/atheros/ag71xx.c +2 -1
index 02b7705393ca..37a1cf63d9f7 100644
@@ -556,7 +556,8 @@ static int ag71xx_mdio_probe(struct ag71xx *ag)
 	ag->mdio_reset = of_reset_control_get_exclusive(np, "mdio");
 	if (IS_ERR(ag->mdio_reset)) {
 		netif_err(ag, probe, ndev, "Failed to get reset mdio.\n");
-		return PTR_ERR(ag->mdio_reset);
+		err = PTR_ERR(ag->mdio_reset);
+		goto mdio_err_put_clk;
 	}
 
 	mii_bus->name = "ag71xx_mdio";
drivers/net/ethernet/broadcom/bnxt/bnxt.c +15 -7
index b6fb5a1709c0..1656dc277af4 100644
@@ -3418,7 +3418,7 @@ void bnxt_set_tpa_flags(struct bnxt *bp)
  */
 void bnxt_set_ring_params(struct bnxt *bp)
 {
-	u32 ring_size, rx_size, rx_space;
+	u32 ring_size, rx_size, rx_space, max_rx_cmpl;
 	u32 agg_factor = 0, agg_ring_size = 0;
 
 	/* 8 for CRC and VLAN */
@@ -3474,7 +3474,15 @@ void bnxt_set_ring_params(struct bnxt *bp)
 	bp->tx_nr_pages = bnxt_calc_nr_ring_pages(ring_size, TX_DESC_CNT);
 	bp->tx_ring_mask = (bp->tx_nr_pages * TX_DESC_CNT) - 1;
 
-	ring_size = bp->rx_ring_size * (2 + agg_factor) + bp->tx_ring_size;
+	max_rx_cmpl = bp->rx_ring_size;
+	/* MAX TPA needs to be added because TPA_START completions are
+	 * immediately recycled, so the TPA completions are not bound by
+	 * the RX ring size.
+	 */
+	if (bp->flags & BNXT_FLAG_TPA)
+		max_rx_cmpl += bp->max_tpa;
+	/* RX and TPA completions are 32-byte, all others are 16-byte */
+	ring_size = max_rx_cmpl * 2 + agg_ring_size + bp->tx_ring_size;
 	bp->cp_ring_size = ring_size;
 
 	bp->cp_nr_pages = bnxt_calc_nr_ring_pages(ring_size, CP_DESC_CNT);
@@ -10362,15 +10370,15 @@ static void bnxt_sp_task(struct work_struct *work)
 				       &bp->sp_event))
 			bnxt_hwrm_phy_qcaps(bp);
 
-		if (test_and_clear_bit(BNXT_LINK_CFG_CHANGE_SP_EVENT,
-				       &bp->sp_event))
-			bnxt_init_ethtool_link_settings(bp);
-
 		rc = bnxt_update_link(bp, true);
-		mutex_unlock(&bp->link_lock);
 		if (rc)
 			netdev_err(bp->dev, "SP task can't update link (rc: %x)\n",
 				   rc);
+
+		if (test_and_clear_bit(BNXT_LINK_CFG_CHANGE_SP_EVENT,
+				       &bp->sp_event))
+			bnxt_init_ethtool_link_settings(bp);
+		mutex_unlock(&bp->link_lock);
 	}
 	if (test_and_clear_bit(BNXT_UPDATE_PHY_SP_EVENT, &bp->sp_event)) {
 		int rc;
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +4 -1
index 360f9a95c1d5..21cc2bd12760 100644
@@ -1687,8 +1687,11 @@ static int bnxt_set_pauseparam(struct net_device *dev,
 	if (epause->tx_pause)
 		link_info->req_flow_ctrl |= BNXT_LINK_PAUSE_TX;
 
-	if (netif_running(dev))
+	if (netif_running(dev)) {
+		mutex_lock(&bp->link_lock);
 		rc = bnxt_hwrm_set_pause(bp);
+		mutex_unlock(&bp->link_lock);
+	}
 	return rc;
 }
 
drivers/net/ethernet/broadcom/genet/bcmgenet.c +1 -1
index dde1c23c8e39..7b95bb77ad3b 100644
@@ -3522,7 +3522,7 @@ static int bcmgenet_probe(struct platform_device *pdev)
 	if (err)
 		err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
 	if (err)
-		goto err;
+		goto err_clk_disable;
 
 	/* Mii wait queue */
 	init_waitqueue_head(&priv->wq);
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c +1 -1
index 6bfa7575af94..5f82c1f32f09 100644
@@ -2938,7 +2938,7 @@ static int dpaa_eth_probe(struct platform_device *pdev)
 						   DMA_BIT_MASK(40));
 	if (err) {
 		netdev_err(net_dev, "dma_coerce_mask_and_coherent() failed\n");
-		return err;
+		goto free_netdev;
 	}
 
 	/* If fsl_fm_max_frm is set to a higher value than the all-common 1500,
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +1 -1
index 569e06d2bab2..72fa9c4e058f 100644
@@ -3383,7 +3383,7 @@ static int dpaa2_eth_connect_mac(struct dpaa2_eth_priv *priv)
 
 	dpni_dev = to_fsl_mc_device(priv->net_dev->dev.parent);
 	dpmac_dev = fsl_mc_get_endpoint(dpni_dev);
-	if (IS_ERR(dpmac_dev) || dpmac_dev->dev.type != &fsl_mc_bus_dpmac_type)
+	if (IS_ERR_OR_NULL(dpmac_dev) || dpmac_dev->dev.type != &fsl_mc_bus_dpmac_type)
 		return 0;
 
 	if (dpaa2_mac_is_type_fixed(dpmac_dev, priv->mc_io))
drivers/net/ethernet/freescale/enetc/enetc_pf.c +1 -0
index 438648a06f2a..041e19895adf 100644
@@ -919,6 +919,7 @@ static int enetc_pf_probe(struct pci_dev *pdev,
 	return 0;
 
 err_reg_netdev:
+	enetc_mdio_remove(pf);
 	enetc_of_put_phy(priv);
 	enetc_free_msix(priv);
 err_alloc_msix:
drivers/net/ethernet/freescale/fec.h +1 -0
index e74dd1f86bba..828eb8ce6631 100644
@@ -597,6 +597,7 @@ struct fec_enet_private {
 void fec_ptp_init(struct platform_device *pdev, int irq_idx);
 void fec_ptp_stop(struct platform_device *pdev);
 void fec_ptp_start_cyclecounter(struct net_device *ndev);
+void fec_ptp_disable_hwts(struct net_device *ndev);
 int fec_ptp_set(struct net_device *ndev, struct ifreq *ifr);
 int fec_ptp_get(struct net_device *ndev, struct ifreq *ifr);
 
drivers/net/ethernet/freescale/fec_main.c +17 -6
index dc6f8763a5d4..bf73bc9bf35b 100644
@@ -1302,8 +1302,13 @@ fec_enet_tx_queue(struct net_device *ndev, u16 queue_id)
 			ndev->stats.tx_bytes += skb->len;
 		}
 
-		if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS) &&
-			fep->bufdesc_ex) {
+		/* NOTE: SKBTX_IN_PROGRESS being set does not imply it's we who
+		 * are to time stamp the packet, so we still need to check time
+		 * stamping enabled flag.
+		 */
+		if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_IN_PROGRESS &&
+			     fep->hwts_tx_en) &&
+		    fep->bufdesc_ex) {
 			struct skb_shared_hwtstamps shhwtstamps;
 			struct bufdesc_ex *ebdp = (struct bufdesc_ex *)bdp;
 
@@ -2731,10 +2736,16 @@ static int fec_enet_ioctl(struct net_device *ndev, struct ifreq *rq, int cmd)
 		return -ENODEV;
 
 	if (fep->bufdesc_ex) {
-		if (cmd == SIOCSHWTSTAMP)
-			return fec_ptp_set(ndev, rq);
-		if (cmd == SIOCGHWTSTAMP)
-			return fec_ptp_get(ndev, rq);
+		bool use_fec_hwts = !phy_has_hwtstamp(phydev);
+
+		if (cmd == SIOCSHWTSTAMP) {
+			if (use_fec_hwts)
+				return fec_ptp_set(ndev, rq);
+			fec_ptp_disable_hwts(ndev);
+		} else if (cmd == SIOCGHWTSTAMP) {
+			if (use_fec_hwts)
+				return fec_ptp_get(ndev, rq);
+		}
 	}
 
 	return phy_mii_ioctl(phydev, rq, cmd);
drivers/net/ethernet/freescale/fec_ptp.c +12 -0
index 945643c02615..f8a592c96beb 100644
@@ -452,6 +452,18 @@ static int fec_ptp_enable(struct ptp_clock_info *ptp,
 	return -EOPNOTSUPP;
 }
 
+/**
+ * fec_ptp_disable_hwts - disable hardware time stamping
+ * @ndev: pointer to net_device
+ */
+void fec_ptp_disable_hwts(struct net_device *ndev)
+{
+	struct fec_enet_private *fep = netdev_priv(ndev);
+
+	fep->hwts_tx_en = 0;
+	fep->hwts_rx_en = 0;
+}
+
 int fec_ptp_set(struct net_device *ndev, struct ifreq *ifr)
 {
 	struct fec_enet_private *fep = netdev_priv(ndev);
drivers/net/ethernet/hisilicon/hns3/hnae3.h +1 -0
index 5587605d6deb..cc45662f77f0 100644
@@ -77,6 +77,7 @@
 	((ring)->p = ((ring)->p - 1 + (ring)->desc_num) % (ring)->desc_num)
 
 enum hns_desc_type {
+	DESC_TYPE_UNKNOWN,
 	DESC_TYPE_SKB,
 	DESC_TYPE_FRAGLIST_SKB,
 	DESC_TYPE_PAGE,
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +9 -1
index 3003eecd5263..df1cb0441183 100644
@@ -1140,7 +1140,7 @@ static int hns3_fill_desc(struct hns3_enet_ring *ring, void *priv,
 	}
 
 	frag_buf_num = hns3_tx_bd_count(size);
-	sizeoflast = size & HNS3_TX_LAST_SIZE_M;
+	sizeoflast = size % HNS3_MAX_BD_SIZE;
 	sizeoflast = sizeoflast ? sizeoflast : HNS3_MAX_BD_SIZE;
 
 	/* When frag size is bigger than hardware limit, split this frag */
@@ -1351,6 +1351,10 @@ static void hns3_clear_desc(struct hns3_enet_ring *ring, int next_to_use_orig)
 	unsigned int i;
 
 	for (i = 0; i < ring->desc_num; i++) {
+		struct hns3_desc *desc = &ring->desc[ring->next_to_use];
+
+		memset(desc, 0, sizeof(*desc));
+
 		/* check if this is where we started */
 		if (ring->next_to_use == next_to_use_orig)
 			break;
@@ -1358,6 +1362,9 @@ static void hns3_clear_desc(struct hns3_enet_ring *ring, int next_to_use_orig)
 		/* rollback one */
 		ring_ptr_move_bw(ring, next_to_use);
 
+		if (!ring->desc_cb[ring->next_to_use].dma)
+			continue;
+
 		/* unmap the descriptor dma address */
 		if (ring->desc_cb[ring->next_to_use].type == DESC_TYPE_SKB ||
 		    ring->desc_cb[ring->next_to_use].type ==
@@ -1374,6 +1381,7 @@ static void hns3_clear_desc(struct hns3_enet_ring *ring, int next_to_use_orig)
 
 		ring->desc_cb[ring->next_to_use].length = 0;
 		ring->desc_cb[ring->next_to_use].dma = 0;
+		ring->desc_cb[ring->next_to_use].type = DESC_TYPE_UNKNOWN;
 	}
 }
 
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h +0 -2
index abefd7a179f7..e6b29a35cdb2 100644
@@ -186,8 +186,6 @@ enum hns3_nic_state {
 #define HNS3_TXD_MSS_S				0
 #define HNS3_TXD_MSS_M				(0x3fff << HNS3_TXD_MSS_S)
 
-#define HNS3_TX_LAST_SIZE_M			0xffff
-
 #define HNS3_VECTOR_TX_IRQ			BIT_ULL(0)
 #define HNS3_VECTOR_RX_IRQ			BIT_ULL(1)
 
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +22 -27

102 lines not on this page · raw message

drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h +3 -0
index 71df23d5f1b4..8784168f8f6f 100644
@@ -316,6 +316,9 @@ enum hclge_link_fail_code {
 	HCLGE_LF_XSFP_ABSENT,
 };
 
+#define HCLGE_LINK_STATUS_DOWN 0
+#define HCLGE_LINK_STATUS_UP   1
+
 #define HCLGE_PG_NUM		4
 #define HCLGE_SCH_MODE_SP	0
 #define HCLGE_SCH_MODE_DWRR	1
drivers/net/ethernet/marvell/sky2.c +1 -1
index 241f00716979..fe54764caea9 100644
@@ -203,7 +203,7 @@ static int __gm_phy_read(struct sky2_hw *hw, unsigned port, u16 reg, u16 *val)
 
 static inline u16 gm_phy_read(struct sky2_hw *hw, unsigned port, u16 reg)
 {
-	u16 v;
+	u16 v = 0;
 	__gm_phy_read(hw, port, reg, &v);
 	return v;
 }
drivers/net/ethernet/mellanox/mlxsw/core.c +2 -1
index e9ccd333f61d..d6d6fe64887b 100644
@@ -710,7 +710,7 @@ static int mlxsw_emad_init(struct mlxsw_core *mlxsw_core)
 	err = mlxsw_core_trap_register(mlxsw_core, &mlxsw_emad_rx_listener,
 				       mlxsw_core);
 	if (err)
-		return err;
+		goto err_trap_register;
 
 	err = mlxsw_core->driver->basic_trap_groups_set(mlxsw_core);
 	if (err)
@@ -722,6 +722,7 @@ static int mlxsw_emad_init(struct mlxsw_core *mlxsw_core)
 err_emad_trap_set:
 	mlxsw_core_trap_unregister(mlxsw_core, &mlxsw_emad_rx_listener,
 				   mlxsw_core);
+err_trap_register:
 	destroy_workqueue(mlxsw_core->emad_wq);
 	return err;
 }
drivers/net/ethernet/mellanox/mlxsw/core_env.c +32 -16

94 lines not on this page · raw message

drivers/net/ethernet/pensando/ionic/ionic_ethtool.c +5 -2
index 22430fa911e2..63d78519cbc6 100644
@@ -102,15 +102,18 @@ static void ionic_get_regs(struct net_device *netdev, struct ethtool_regs *regs,
 			   void *p)
 {
 	struct ionic_lif *lif = netdev_priv(netdev);
+	unsigned int offset;
 	unsigned int size;
 
 	regs->version = IONIC_DEV_CMD_REG_VERSION;
 
+	offset = 0;
 	size = IONIC_DEV_INFO_REG_COUNT * sizeof(u32);
-	memcpy_fromio(p, lif->ionic->idev.dev_info_regs->words, size);
+	memcpy_fromio(p + offset, lif->ionic->idev.dev_info_regs->words, size);
 
+	offset += size;
 	size = IONIC_DEV_CMD_REG_COUNT * sizeof(u32);
-	memcpy_fromio(p, lif->ionic->idev.dev_cmd_regs->words, size);
+	memcpy_fromio(p + offset, lif->ionic->idev.dev_cmd_regs->words, size);
 }
 
 static int ionic_get_link_ksettings(struct net_device *netdev,
drivers/net/ethernet/pensando/ionic/ionic_lif.c +25 -25

146 lines not on this page · raw message

drivers/net/ethernet/pensando/ionic/ionic_lif.h +1 -7
index 2c65cf6300db..90992614f136 100644
@@ -126,7 +126,6 @@ enum ionic_lif_state_flags {
 	IONIC_LIF_F_SW_DEBUG_STATS,
 	IONIC_LIF_F_UP,
 	IONIC_LIF_F_LINK_CHECK_REQUESTED,
-	IONIC_LIF_F_QUEUE_RESET,
 	IONIC_LIF_F_FW_RESET,
 
 	/* leave this as last */
@@ -145,6 +144,7 @@ struct ionic_lif {
 	unsigned int hw_index;
 	unsigned int kern_pid;
 	u64 __iomem *kern_dbpage;
+	struct mutex queue_lock;	/* lock for queue structures */
 	spinlock_t adminq_lock;		/* lock for AdminQ operations */
 	struct ionic_qcq *adminqcq;
 	struct ionic_qcq *notifyqcq;
@@ -191,12 +191,6 @@ struct ionic_lif {
 #define lif_to_txq(lif, i)	(&lif_to_txqcq((lif), i)->q)
 #define lif_to_rxq(lif, i)	(&lif_to_txqcq((lif), i)->q)
 
-/* return 0 if successfully set the bit, else non-zero */
-static inline int ionic_wait_for_bit(struct ionic_lif *lif, int bitname)
-{
-	return wait_on_bit_lock(lif->state, bitname, TASK_INTERRUPTIBLE);
-}
-
 static inline u32 ionic_coal_usec_to_hw(struct ionic *ionic, u32 usecs)
 {
 	u32 mult = le32_to_cpu(ionic->ident.dev.intr_coal_mult);
drivers/net/ethernet/pensando/ionic/ionic_rx_filter.c +29 -0
index 80eeb7696e01..cd0076fc3044 100644
@@ -21,13 +21,16 @@ void ionic_rx_filter_free(struct ionic_lif *lif, struct ionic_rx_filter *f)
 void ionic_rx_filter_replay(struct ionic_lif *lif)
 {
 	struct ionic_rx_filter_add_cmd *ac;
+	struct hlist_head new_id_list;
 	struct ionic_admin_ctx ctx;
 	struct ionic_rx_filter *f;
 	struct hlist_head *head;
 	struct hlist_node *tmp;
+	unsigned int key;
 	unsigned int i;
 	int err;
 
+	INIT_HLIST_HEAD(&new_id_list);
 	ac = &ctx.cmd.rx_filter_add;
 
 	for (i = 0; i < IONIC_RX_FILTER_HLISTS; i++) {
@@ -58,9 +61,30 @@ void ionic_rx_filter_replay(struct ionic_lif *lif)
 						    ac->mac.addr);
 					break;
 				}
+				spin_lock_bh(&lif->rx_filters.lock);
+				ionic_rx_filter_free(lif, f);
+				spin_unlock_bh(&lif->rx_filters.lock);
+
+				continue;
 			}
+
+			/* remove from old id list, save new id in tmp list */
+			spin_lock_bh(&lif->rx_filters.lock);
+			hlist_del(&f->by_id);
+			spin_unlock_bh(&lif->rx_filters.lock);
+			f->filter_id = le32_to_cpu(ctx.comp.rx_filter_add.filter_id);
+			hlist_add_head(&f->by_id, &new_id_list);
 		}
 	}
+
+	/* rebuild the by_id hash lists with the new filter ids */
+	spin_lock_bh(&lif->rx_filters.lock);
+	hlist_for_each_entry_safe(f, tmp, &new_id_list, by_id) {
+		key = f->filter_id & IONIC_RX_FILTER_HLISTS_MASK;
+		head = &lif->rx_filters.by_id[key];
+		hlist_add_head(&f->by_id, head);
+	}
+	spin_unlock_bh(&lif->rx_filters.lock);
 }
 
 int ionic_rx_filters_init(struct ionic_lif *lif)
@@ -69,10 +93,12 @@ int ionic_rx_filters_init(struct ionic_lif *lif)
 
 	spin_lock_init(&lif->rx_filters.lock);
 
+	spin_lock_bh(&lif->rx_filters.lock);
 	for (i = 0; i < IONIC_RX_FILTER_HLISTS; i++) {
 		INIT_HLIST_HEAD(&lif->rx_filters.by_hash[i]);
 		INIT_HLIST_HEAD(&lif->rx_filters.by_id[i]);
 	}
+	spin_unlock_bh(&lif->rx_filters.lock);
 
 	return 0;
 }
@@ -84,11 +110,13 @@ void ionic_rx_filters_deinit(struct ionic_lif *lif)
 	struct hlist_node *tmp;
 	unsigned int i;
 
+	spin_lock_bh(&lif->rx_filters.lock);
 	for (i = 0; i < IONIC_RX_FILTER_HLISTS; i++) {
 		head = &lif->rx_filters.by_id[i];
 		hlist_for_each_entry_safe(f, tmp, head, by_id)
 			ionic_rx_filter_free(lif, f);
 	}
+	spin_unlock_bh(&lif->rx_filters.lock);
 }
 
 int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index,
@@ -124,6 +152,7 @@ int ionic_rx_filter_save(struct ionic_lif *lif, u32 flow_id, u16 rxq_index,
 	f->filter_id = le32_to_cpu(ctx->comp.rx_filter_add.filter_id);
 	f->rxq_index = rxq_index;
 	memcpy(&f->cmd, ac, sizeof(f->cmd));
+	netdev_dbg(lif->netdev, "rx_filter add filter_id %d\n", f->filter_id);
 
 	INIT_HLIST_NODE(&f->by_hash);
 	INIT_HLIST_NODE(&f->by_id);
drivers/net/ethernet/pensando/ionic/ionic_txrx.c +0 -6
index d233b6e77b1e..ce8e246cda07 100644
@@ -157,12 +157,6 @@ static void ionic_rx_clean(struct ionic_queue *q, struct ionic_desc_info *desc_i
 		return;
 	}
 
-	/* no packet processing while resetting */
-	if (unlikely(test_bit(IONIC_LIF_F_QUEUE_RESET, q->lif->state))) {
-		stats->dropped++;
-		return;
-	}
-
 	stats->pkts++;
 	stats->bytes += le16_to_cpu(comp->len);
 
drivers/net/ethernet/qlogic/qed/qed_cxt.c +2 -2
index aeed8939f410..3bbcff5f2621 100644
@@ -1987,8 +1987,8 @@ static void qed_rdma_set_pf_params(struct qed_hwfn *p_hwfn,
 	num_srqs = min_t(u32, QED_RDMA_MAX_SRQS, p_params->num_srqs);
 
 	if (p_hwfn->mcp_info->func_info.protocol == QED_PCI_ETH_RDMA) {
-		DP_NOTICE(p_hwfn,
-			  "Current day drivers don't support RoCE & iWARP simultaneously on the same PF. Default to RoCE-only\n");
+		DP_VERBOSE(p_hwfn, QED_MSG_SP,
+			   "Current day drivers don't support RoCE & iWARP simultaneously on the same PF. Default to RoCE-only\n");
 		p_hwfn->hw_info.personality = QED_PCI_ETH_ROCE;
 	}
 
drivers/net/ethernet/qlogic/qed/qed_dev.c +1 -1
index 58913fe4f345..0629dd4e18d9 100644
@@ -3096,7 +3096,7 @@ int qed_hw_init(struct qed_dev *cdev, struct qed_hw_init_params *p_params)
 		}
 
 		/* Log and clear previous pglue_b errors if such exist */
-		qed_pglueb_rbc_attn_handler(p_hwfn, p_hwfn->p_main_ptt);
+		qed_pglueb_rbc_attn_handler(p_hwfn, p_hwfn->p_main_ptt, true);
 
 		/* Enable the PF's internal FID_enable in the PXP */
 		rc = qed_pglueb_set_pfid_enable(p_hwfn, p_hwfn->p_main_ptt,
drivers/net/ethernet/qlogic/qed/qed_int.c +29 -21

75 lines not on this page · raw message

drivers/net/ethernet/qlogic/qed/qed_int.h +2 -2
index 9ad568d93ae6..defb0d1bc45a 100644
@@ -431,7 +431,7 @@ int qed_int_set_timer_res(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
 
 #define QED_MAPPING_MEMORY_SIZE(dev)	(NUM_OF_SBS(dev))
 
-int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn,
-				struct qed_ptt *p_ptt);
+int qed_pglueb_rbc_attn_handler(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt,
+				bool hw_init);
 
 #endif
drivers/net/ethernet/smsc/smc91x.c +2 -2
index 90410f9d3b1a..1c4fea9c3ec4 100644
@@ -2274,7 +2274,7 @@ static int smc_drv_probe(struct platform_device *pdev)
 		ret = try_toggle_control_gpio(&pdev->dev, &lp->power_gpio,
 					      "power", 0, 0, 100);
 		if (ret)
-			return ret;
+			goto out_free_netdev;
 
 		/*
 		 * Optional reset GPIO configured? Minimum 100 ns reset needed
@@ -2283,7 +2283,7 @@ static int smc_drv_probe(struct platform_device *pdev)
 		ret = try_toggle_control_gpio(&pdev->dev, &lp->reset_gpio,
 					      "reset", 0, 0, 100);
 		if (ret)
-			return ret;
+			goto out_free_netdev;
 
 		/*
 		 * Need to wait for optional EEPROM to load, max 750 us according
drivers/net/ethernet/socionext/sni_ave.c +1 -1
index 67ddf782d98a..897c895629d0 100644
@@ -1191,7 +1191,7 @@ static int ave_init(struct net_device *ndev)
 	ret = regmap_update_bits(priv->regmap, SG_ETPINMODE,
 				 priv->pinmode_mask, priv->pinmode_val);
 	if (ret)
-		return ret;
+		goto out_reset_assert;
 
 	ave_global_reset(ndev);
 
drivers/net/geneve.c +1 -1
index 4661ef865807..dec52b763d50 100644
@@ -1615,11 +1615,11 @@ static int geneve_changelink(struct net_device *dev, struct nlattr *tb[],
 			     struct netlink_ext_ack *extack)
 {
 	struct geneve_dev *geneve = netdev_priv(dev);
+	enum ifla_geneve_df df = geneve->df;
 	struct geneve_sock *gs4, *gs6;
 	struct ip_tunnel_info info;
 	bool metadata;
 	bool use_udp6_rx_checksums;
-	enum ifla_geneve_df df;
 	bool ttl_inherit;
 	int err;
 
drivers/net/hippi/rrunner.c +1 -1
index 2a6ec5394966..a4b3fce69ecd 100644
@@ -1242,7 +1242,7 @@ static int rr_open(struct net_device *dev)
 		rrpriv->info = NULL;
 	}
 	if (rrpriv->rx_ctrl) {
-		pci_free_consistent(pdev, sizeof(struct ring_ctrl),
+		pci_free_consistent(pdev, 256 * sizeof(struct ring_ctrl),
 				    rrpriv->rx_ctrl, rrpriv->rx_ctrl_dma);
 		rrpriv->rx_ctrl = NULL;
 	}
drivers/net/ieee802154/adf7242.c +3 -1
index 5a37514e4234..8dbccec6ac86 100644
@@ -1262,7 +1262,7 @@ static int adf7242_probe(struct spi_device *spi)
 					     WQ_MEM_RECLAIM);
 	if (unlikely(!lp->wqueue)) {
 		ret = -ENOMEM;
-		goto err_hw_init;
+		goto err_alloc_wq;
 	}
 
 	ret = adf7242_hw_init(lp);
@@ -1294,6 +1294,8 @@ static int adf7242_probe(struct spi_device *spi)
 	return ret;
 
 err_hw_init:
+	destroy_workqueue(lp->wqueue);
+err_alloc_wq:
 	mutex_destroy(&lp->bmux);
 	ieee802154_free_hw(lp->hw);
 
drivers/net/netdevsim/netdev.c +2 -2
index 2908e0a0d6e1..23950e7a0f81 100644
@@ -302,7 +302,7 @@ nsim_create(struct nsim_dev *nsim_dev, struct nsim_dev_port *nsim_dev_port)
 	rtnl_lock();
 	err = nsim_bpf_init(ns);
 	if (err)
-		goto err_free_netdev;
+		goto err_rtnl_unlock;
 
 	nsim_ipsec_init(ns);
 
@@ -316,8 +316,8 @@ nsim_create(struct nsim_dev *nsim_dev, struct nsim_dev_port *nsim_dev_port)
 err_ipsec_teardown:
 	nsim_ipsec_teardown(ns);
 	nsim_bpf_uninit(ns);
+err_rtnl_unlock:
 	rtnl_unlock();
-err_free_netdev:
 	free_netdev(dev);
 	return ERR_PTR(err);
 }
drivers/net/phy/dp83640.c +4 -0
index ecbd5e0d685c..acb0aae60755 100644
@@ -1260,6 +1260,7 @@ static int dp83640_hwtstamp(struct mii_timestamper *mii_ts, struct ifreq *ifr)
 		dp83640->hwts_rx_en = 1;
 		dp83640->layer = PTP_CLASS_L4;
 		dp83640->version = PTP_CLASS_V1;
+		cfg.rx_filter = HWTSTAMP_FILTER_PTP_V1_L4_EVENT;
 		break;
 	case HWTSTAMP_FILTER_PTP_V2_L4_EVENT:
 	case HWTSTAMP_FILTER_PTP_V2_L4_SYNC:
@@ -1267,6 +1268,7 @@ static int dp83640_hwtstamp(struct mii_timestamper *mii_ts, struct ifreq *ifr)
 		dp83640->hwts_rx_en = 1;
 		dp83640->layer = PTP_CLASS_L4;
 		dp83640->version = PTP_CLASS_V2;
+		cfg.rx_filter = HWTSTAMP_FILTER_PTP_V2_L4_EVENT;
 		break;
 	case HWTSTAMP_FILTER_PTP_V2_L2_EVENT:
 	case HWTSTAMP_FILTER_PTP_V2_L2_SYNC:
@@ -1274,6 +1276,7 @@ static int dp83640_hwtstamp(struct mii_timestamper *mii_ts, struct ifreq *ifr)
 		dp83640->hwts_rx_en = 1;
 		dp83640->layer = PTP_CLASS_L2;
 		dp83640->version = PTP_CLASS_V2;
+		cfg.rx_filter = HWTSTAMP_FILTER_PTP_V2_L2_EVENT;
 		break;
 	case HWTSTAMP_FILTER_PTP_V2_EVENT:
 	case HWTSTAMP_FILTER_PTP_V2_SYNC:
@@ -1281,6 +1284,7 @@ static int dp83640_hwtstamp(struct mii_timestamper *mii_ts, struct ifreq *ifr)
 		dp83640->hwts_rx_en = 1;
 		dp83640->layer = PTP_CLASS_L4 | PTP_CLASS_L2;
 		dp83640->version = PTP_CLASS_V2;
+		cfg.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT;
 		break;
 	default:
 		return -ERANGE;
drivers/net/usb/ax88172a.c +1 -0
index 4e514f5d7c6c..fd3a04d98dc1 100644
@@ -187,6 +187,7 @@ static int ax88172a_bind(struct usbnet *dev, struct usb_interface *intf)
 	ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID, 0, 0, ETH_ALEN, buf, 0);
 	if (ret < ETH_ALEN) {
 		netdev_err(dev->net, "Failed to read MAC address: %d\n", ret);
+		ret = -EIO;
 		goto free;
 	}
 	memcpy(dev->net->dev_addr, buf, ETH_ALEN);
drivers/net/wan/lapbether.c +8 -1
index e30d91a38cfb..284832314f31 100644
@@ -303,7 +303,6 @@ static void lapbeth_setup(struct net_device *dev)
 	dev->netdev_ops	     = &lapbeth_netdev_ops;
 	dev->needs_free_netdev = true;
 	dev->type            = ARPHRD_X25;
-	dev->hard_header_len = 3;
 	dev->mtu             = 1000;
 	dev->addr_len        = 0;
 }
@@ -324,6 +323,14 @@ static int lapbeth_new_device(struct net_device *dev)
 	if (!ndev)
 		goto out;
 
+	/* When transmitting data:
+	 * first this driver removes a pseudo header of 1 byte,
+	 * then the lapb module prepends an LAPB header of at most 3 bytes,
+	 * then this driver prepends a length field of 2 bytes,
+	 * then the underlying Ethernet device prepends its own header.
+	 */
+	ndev->hard_header_len = -1 + 3 + 2 + dev->hard_header_len;
+
 	lapbeth = netdev_priv(ndev);
 	lapbeth->axdev = ndev;
 
drivers/net/wireless/ath/ath9k/hif_usb.c +40 -12

149 lines not on this page · raw message

drivers/net/wireless/ath/ath9k/hif_usb.h +5 -0
index a94e7e1c86e9..5985aa15ca93 100644
@@ -86,6 +86,11 @@ struct tx_buf {
 	struct list_head list;
 };
 
+struct rx_buf {
+	struct sk_buff *skb;
+	struct hif_device_usb *hif_dev;
+};
+
 #define HIF_USB_TX_STOP  BIT(0)
 #define HIF_USB_TX_FLUSH BIT(1)
 
drivers/net/wireless/intel/iwlwifi/mvm/sta.c +3 -5
index 07ca8c91499d..ff49750b8ee7 100644
@@ -1184,17 +1184,15 @@ static int iwl_mvm_inactivity_check(struct iwl_mvm *mvm, u8 alloc_for_sta)
 	for_each_set_bit(i, &changetid_queues, IWL_MAX_HW_QUEUES)
 		iwl_mvm_change_queue_tid(mvm, i);
 
+	rcu_read_unlock();
+
 	if (free_queue >= 0 && alloc_for_sta != IWL_MVM_INVALID_STA) {
 		ret = iwl_mvm_free_inactive_queue(mvm, free_queue, queue_owner,
 						  alloc_for_sta);
-		if (ret) {
-			rcu_read_unlock();
+		if (ret)
 			return ret;
-		}
 	}
 
-	rcu_read_unlock();
-
 	return free_queue;
 }
 
drivers/net/wireless/intel/iwlwifi/pcie/drv.c +2 -0
index 29971c25dba4..9ea3e5634672 100644
@@ -577,6 +577,8 @@ static const struct iwl_dev_info iwl_dev_info_table[] = {
 	IWL_DEV_INFO(0x30DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
 	IWL_DEV_INFO(0x31DC, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name),
 	IWL_DEV_INFO(0x31DC, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
+	IWL_DEV_INFO(0xA370, 0x1551, iwl9560_2ac_cfg_soc, iwl9560_killer_1550s_name),
+	IWL_DEV_INFO(0xA370, 0x1552, iwl9560_2ac_cfg_soc, iwl9560_killer_1550i_name),
 
 	IWL_DEV_INFO(0x271C, 0x0214, iwl9260_2ac_cfg, iwl9260_1_name),
 
drivers/net/wireless/mediatek/mt76/mt76.h +1 -0
index 37641ad14d49..652dd05af16b 100644
@@ -275,6 +275,7 @@ enum {
 	MT76_STATE_RUNNING,
 	MT76_STATE_MCU_RUNNING,
 	MT76_SCANNING,
+	MT76_RESTART,
 	MT76_RESET,
 	MT76_MCU_RESET,
 	MT76_REMOVED,
drivers/net/wireless/mediatek/mt76/mt76x0/pci.c +2 -0
index 0b520ae08d01..57091d41eb85 100644
@@ -29,6 +29,7 @@ static void mt76x0e_stop_hw(struct mt76x02_dev *dev)
 {
 	cancel_delayed_work_sync(&dev->cal_work);
 	cancel_delayed_work_sync(&dev->mt76.mac_work);
+	clear_bit(MT76_RESTART, &dev->mphy.state);
 
 	if (!mt76_poll(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_TX_DMA_BUSY,
 		       0, 1000))
@@ -83,6 +84,7 @@ static const struct ieee80211_ops mt76x0e_ops = {
 	.set_coverage_class = mt76x02_set_coverage_class,
 	.set_rts_threshold = mt76x02_set_rts_threshold,
 	.get_antenna = mt76_get_antenna,
+	.reconfig_complete = mt76x02_reconfig_complete,
 };
 
 static int mt76x0e_register_device(struct mt76x02_dev *dev)
drivers/net/wireless/mediatek/mt76/mt76x02.h +2 -0
index 830532b85b58..6ea210bd3f07 100644
@@ -187,6 +187,8 @@ void mt76x02_sta_ps(struct mt76_dev *dev, struct ieee80211_sta *sta, bool ps);
 void mt76x02_bss_info_changed(struct ieee80211_hw *hw,
 			      struct ieee80211_vif *vif,
 			      struct ieee80211_bss_conf *info, u32 changed);
+void mt76x02_reconfig_complete(struct ieee80211_hw *hw,
+			       enum ieee80211_reconfig_type reconfig_type);
 
 struct beacon_bc_data {
 	struct mt76x02_dev *dev;
drivers/net/wireless/mediatek/mt76/mt76x02_mcu.c +3 -0
index 5664749ad6c1..8247611d9b18 100644
@@ -20,6 +20,9 @@ int mt76x02_mcu_msg_send(struct mt76_dev *mdev, int cmd, const void *data,
 	int ret;
 	u8 seq;
 
+	if (mt76_is_mmio(&dev->mt76) && dev->mcu_timeout)
+		return -EIO;
+
 	skb = mt76x02_mcu_msg_alloc(data, len);
 	if (!skb)
 		return -ENOMEM;
drivers/net/wireless/mediatek/mt76/mt76x02_mmio.c +16 -0
index 7dcc5d342e9f..7e389dbccfeb 100644
@@ -520,6 +520,7 @@ static void mt76x02_watchdog_reset(struct mt76x02_dev *dev)
 	}
 
 	if (restart) {
+		set_bit(MT76_RESTART, &dev->mphy.state);
 		mt76x02_mcu_function_select(dev, Q_SELECT, 1);
 		ieee80211_restart_hw(dev->mt76.hw);
 	} else {
@@ -528,8 +529,23 @@ static void mt76x02_watchdog_reset(struct mt76x02_dev *dev)
 	}
 }
 
+void mt76x02_reconfig_complete(struct ieee80211_hw *hw,
+			       enum ieee80211_reconfig_type reconfig_type)
+{
+	struct mt76x02_dev *dev = hw->priv;
+
+	if (reconfig_type != IEEE80211_RECONFIG_TYPE_RESTART)
+		return;
+
+	clear_bit(MT76_RESTART, &dev->mphy.state);
+}
+EXPORT_SYMBOL_GPL(mt76x02_reconfig_complete);
+
 static void mt76x02_check_tx_hang(struct mt76x02_dev *dev)
 {
+	if (test_bit(MT76_RESTART, &dev->mphy.state))
+		return;
+
 	if (mt76x02_tx_hang(dev)) {
 		if (++dev->tx_hang_check >= MT_TX_HANG_TH)
 			goto restart;
drivers/net/wireless/mediatek/mt76/mt76x2/pci_init.c +1 -0
index c69579e5f647..f27774f57438 100644
@@ -256,6 +256,7 @@ void mt76x2_stop_hardware(struct mt76x02_dev *dev)
 	cancel_delayed_work_sync(&dev->cal_work);
 	cancel_delayed_work_sync(&dev->mt76.mac_work);
 	cancel_delayed_work_sync(&dev->wdt_work);
+	clear_bit(MT76_RESTART, &dev->mphy.state);
 	mt76x02_mcu_set_radio_state(dev, false);
 	mt76x2_mac_stop(dev, false);
 }
drivers/net/wireless/mediatek/mt76/mt76x2/pci_main.c +6 -13
index 105e5b99b3f9..a74599f7f729 100644
@@ -10,12 +10,9 @@ static int
 mt76x2_start(struct ieee80211_hw *hw)
 {
 	struct mt76x02_dev *dev = hw->priv;
-	int ret;
 
 	mt76x02_mac_start(dev);
-	ret = mt76x2_phy_start(dev);
-	if (ret)
-		return ret;
+	mt76x2_phy_start(dev);
 
 	ieee80211_queue_delayed_work(mt76_hw(dev), &dev->mt76.mac_work,
 				     MT_MAC_WORK_INTERVAL);
@@ -35,11 +32,9 @@ mt76x2_stop(struct ieee80211_hw *hw)
 	mt76x2_stop_hardware(dev);
 }
 
-static int
+static void
 mt76x2_set_channel(struct mt76x02_dev *dev, struct cfg80211_chan_def *chandef)
 {
-	int ret;
-
 	cancel_delayed_work_sync(&dev->cal_work);
 	tasklet_disable(&dev->mt76.pre_tbtt_tasklet);
 	tasklet_disable(&dev->dfs_pd.dfs_tasklet);
@@ -50,7 +45,7 @@ mt76x2_set_channel(struct mt76x02_dev *dev, struct cfg80211_chan_def *chandef)
 	mt76_set_channel(&dev->mphy);
 
 	mt76x2_mac_stop(dev, true);
-	ret = mt76x2_phy_set_channel(dev, chandef);
+	mt76x2_phy_set_channel(dev, chandef);
 
 	mt76x02_mac_cc_reset(dev);
 	mt76x02_dfs_init_params(dev);
@@ -64,15 +59,12 @@ mt76x2_set_channel(struct mt76x02_dev *dev, struct cfg80211_chan_def *chandef)
 	tasklet_enable(&dev->mt76.pre_tbtt_tasklet);
 
 	mt76_txq_schedule_all(&dev->mphy);
-
-	return ret;
 }
 
 static int
 mt76x2_config(struct ieee80211_hw *hw, u32 changed)
 {
 	struct mt76x02_dev *dev = hw->priv;
-	int ret = 0;
 
 	mutex_lock(&dev->mt76.mutex);
 
@@ -101,11 +93,11 @@ mt76x2_config(struct ieee80211_hw *hw, u32 changed)
 
 	if (changed & IEEE80211_CONF_CHANGE_CHANNEL) {
 		ieee80211_stop_queues(hw);
-		ret = mt76x2_set_channel(dev, &hw->conf.chandef);
+		mt76x2_set_channel(dev, &hw->conf.chandef);
 		ieee80211_wake_queues(hw);
 	}
 
-	return ret;
+	return 0;
 }
 
 static void
@@ -162,5 +154,6 @@ const struct ieee80211_ops mt76x2_ops = {
 	.set_antenna = mt76x2_set_antenna,
 	.get_antenna = mt76_get_antenna,
 	.set_rts_threshold = mt76x02_set_rts_threshold,
+	.reconfig_complete = mt76x02_reconfig_complete,
 };
 
drivers/pci/controller/vmd.c +3 -2
index e386d4eac407..9a64cf90c291 100644
@@ -546,9 +546,10 @@ static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features)
 
 	vmd->irq_domain = pci_msi_create_irq_domain(fn, &vmd_msi_domain_info,
 						    x86_vector_domain);
-	irq_domain_free_fwnode(fn);
-	if (!vmd->irq_domain)
+	if (!vmd->irq_domain) {
+		irq_domain_free_fwnode(fn);
 		return -ENODEV;
+	}
 
 	pci_add_resource(&resources, &vmd->resources[0]);
 	pci_add_resource_offset(&resources, &vmd->resources[1], offset[0]);
drivers/pci/pci.c +9 -21
index d4758518a97b..a4efc7e0061f 100644
@@ -4662,8 +4662,7 @@ static int pci_pm_reset(struct pci_dev *dev, int probe)
  * pcie_wait_for_link_delay - Wait until link is active or inactive
  * @pdev: Bridge device
  * @active: waiting for active or inactive?
- * @delay: Delay to wait after link has become active (in ms). Specify %0
- *	   for no delay.
+ * @delay: Delay to wait after link has become active (in ms)
  *
  * Use this to wait till link becomes active or inactive.
  */
@@ -4704,7 +4703,7 @@ static bool pcie_wait_for_link_delay(struct pci_dev *pdev, bool active,
 		msleep(10);
 		timeout -= 10;
 	}
-	if (active && ret && delay)
+	if (active && ret)
 		msleep(delay);
 	else if (ret != active)
 		pci_info(pdev, "Data Link Layer Link Active not %s in 1000 msec\n",
@@ -4825,28 +4824,17 @@ void pci_bridge_wait_for_secondary_bus(struct pci_dev *dev)
 	if (!pcie_downstream_port(dev))
 		return;
 
-	/*
-	 * Per PCIe r5.0, sec 6.6.1, for downstream ports that support
-	 * speeds > 5 GT/s, we must wait for link training to complete
-	 * before the mandatory delay.
-	 *
-	 * We can only tell when link training completes via DLL Link
-	 * Active, which is required for downstream ports that support
-	 * speeds > 5 GT/s (sec 7.5.3.6).  Unfortunately some common
-	 * devices do not implement Link Active reporting even when it's
-	 * required, so we'll check for that directly instead of checking
-	 * the supported link speed.  We assume devices without Link Active
-	 * reporting can train in 100 ms regardless of speed.
-	 */
-	if (dev->link_active_reporting) {
-		pci_dbg(dev, "waiting for link to train\n");
-		if (!pcie_wait_for_link_delay(dev, true, 0)) {
+	if (pcie_get_speed_cap(dev) <= PCIE_SPEED_5_0GT) {
+		pci_dbg(dev, "waiting %d ms for downstream link\n", delay);
+		msleep(delay);
+	} else {
+		pci_dbg(dev, "waiting %d ms for downstream link, after activation\n",
+			delay);
+		if (!pcie_wait_for_link_delay(dev, true, delay)) {
 			/* Did not train, no need to wait any further */
 			return;
 		}
 	}
-	pci_dbg(child, "waiting %d ms to become accessible\n", delay);
-	msleep(delay);
 
 	if (!pci_device_is_present(child)) {
 		pci_dbg(child, "waiting additional %d ms to become accessible\n", delay);
drivers/perf/arm-cci.c +1 -0
index 1b8e337a29ca..87c4be9dd412 100644
@@ -1718,6 +1718,7 @@ static struct platform_driver cci_pmu_driver = {
 	.driver = {
 		   .name = DRIVER_NAME,
 		   .of_match_table = arm_cci_pmu_matches,
+		   .suppress_bind_attrs = true,
 		  },
 	.probe = cci_pmu_probe,
 	.remove = cci_pmu_remove,
drivers/perf/arm-ccn.c +1 -0
index d50edef91f59..7b7d23f25713 100644
@@ -1545,6 +1545,7 @@ static struct platform_driver arm_ccn_driver = {
 	.driver = {
 		.name = "arm-ccn",
 		.of_match_table = arm_ccn_match,
+		.suppress_bind_attrs = true,
 	},
 	.probe = arm_ccn_probe,
 	.remove = arm_ccn_remove,
drivers/perf/arm_dsu_pmu.c +1 -0
index 70968c8c09d7..4594e2ed13d5 100644
@@ -759,6 +759,7 @@ static struct platform_driver dsu_pmu_driver = {
 	.driver = {
 		.name	= DRVNAME,
 		.of_match_table = of_match_ptr(dsu_pmu_of_match),
+		.suppress_bind_attrs = true,
 	},
 	.probe = dsu_pmu_device_probe,
 	.remove = dsu_pmu_device_remove,
drivers/perf/arm_smmuv3_pmu.c +2 -0
index 48e28ef93a70..4cdb35d166ac 100644
@@ -742,6 +742,7 @@ static int smmu_pmu_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, smmu_pmu);
 
 	smmu_pmu->pmu = (struct pmu) {
+		.module		= THIS_MODULE,
 		.task_ctx_nr    = perf_invalid_context,
 		.pmu_enable	= smmu_pmu_enable,
 		.pmu_disable	= smmu_pmu_disable,
@@ -859,6 +860,7 @@ static void smmu_pmu_shutdown(struct platform_device *pdev)
 static struct platform_driver smmu_pmu_driver = {
 	.driver = {
 		.name = "arm-smmu-v3-pmcg",
+		.suppress_bind_attrs = true,
 	},
 	.probe = smmu_pmu_probe,
 	.remove = smmu_pmu_remove,
drivers/perf/arm_spe_pmu.c +1 -0
index b72c04852599..c5418fd3122c 100644
@@ -1228,6 +1228,7 @@ static struct platform_driver arm_spe_pmu_driver = {
 	.driver	= {
 		.name		= DRVNAME,
 		.of_match_table	= of_match_ptr(arm_spe_pmu_of_match),
+		.suppress_bind_attrs = true,
 	},
 	.probe	= arm_spe_pmu_device_probe,
 	.remove	= arm_spe_pmu_device_remove,
drivers/perf/fsl_imx8_ddr_perf.c +2 -0
index 90884d14f95f..397540a4b799 100644
@@ -512,6 +512,7 @@ static int ddr_perf_init(struct ddr_pmu *pmu, void __iomem *base,
 {
 	*pmu = (struct ddr_pmu) {
 		.pmu = (struct pmu) {
+			.module	      = THIS_MODULE,
 			.capabilities = PERF_PMU_CAP_NO_EXCLUDE,
 			.task_ctx_nr = perf_invalid_context,
 			.attr_groups = attr_groups,
@@ -706,6 +707,7 @@ static struct platform_driver imx_ddr_pmu_driver = {
 	.driver         = {
 		.name   = "imx-ddr-pmu",
 		.of_match_table = imx_ddr_pmu_dt_ids,
[… more lines in the raw message]

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

drivers/perf/hisilicon/hisi_uncore_ddrc_pmu.c +2 -0
index 453f1c6a16ca..341852736640 100644

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

drivers/perf/hisilicon/hisi_uncore_hha_pmu.c +2 -0
index e5af9d7e6e14..375c4737a088 100644

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

drivers/perf/hisilicon/hisi_uncore_l3c_pmu.c +2 -0
index 479de4be99eb..44e8a660c5f5 100644

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

drivers/perf/qcom_l2_pmu.c +1 -0
index 21d6991dbe0b..4da37f650f98 100644

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

drivers/perf/qcom_l3_pmu.c +1 -0
index 656e830798d9..9ddb577c542b 100644

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

drivers/perf/thunderx2_pmu.c +1 -0
index 51b31d6ff2c4..aac9823b0c6b 100644

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

drivers/perf/xgene_pmu.c +1 -0
index 46ee6807d533..edac28cd25dd 100644

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

drivers/pinctrl/pinctrl-amd.h +1 -1
index 3e5760f1a715..d4a192df5fab 100644

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

drivers/platform/x86/asus-wmi.c +1 -0
index cd212ee210e2..537b824a1ae2 100644

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

drivers/platform/x86/intel_speed_select_if/isst_if_common.h +3 -0
index 1409a5bb5582..4f6f7f0761fc 100644

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

drivers/platform/x86/intel_speed_select_if/isst_if_mbox_pci.c +1 -0
index de4169d0796b..9a055fd54053 100644

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

drivers/platform/x86/intel_speed_select_if/isst_if_mmio.c +1 -0
index 3584859fcc42..aa17fd7817f8 100644

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

drivers/scsi/mpt3sas/mpt3sas_ctl.c +7 -5
index 62e552838565..983e568ff231 100644

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

drivers/scsi/scsi_devinfo.c +1 -0
index eed31021e788..ba84244c1b4f 100644

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

drivers/scsi/scsi_dh.c +1 -0
index 42f0550d6b11..6f41e4b5a2b8 100644

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

drivers/scsi/scsi_transport_spi.c +1 -1
index f8661062ef95..f3d5b1bbd5aa 100644

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

drivers/soc/amlogic/meson-gx-socinfo.c +5 -3
index 01fc0d20a70d..6f54bd832c8b 100644

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

drivers/soc/qcom/rpmh.c +4 -4
index a75f3df97742..908b74352c1b 100644

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

drivers/spi/spi-mt65xx.c +8 -7
index 6783e12c40c2..a556795caeef 100644

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

drivers/staging/comedi/drivers/addi_apci_1032.c +14 -6
index 560649be9d13..e035c9f757a1 100644

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

drivers/staging/comedi/drivers/addi_apci_1500.c +19 -5
index 689acd69a1b9..816dd25b9d0e 100644

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

drivers/staging/comedi/drivers/addi_apci_1564.c +14 -6
index 10501fe6bb25..1268ba34be5f 100644

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

drivers/staging/comedi/drivers/ni_6527.c +1 -1
index 4d1eccb5041d..4518c2680b7c 100644

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

drivers/staging/wlan-ng/prism2usb.c +15 -1
index 4689b2170e4f..456603fd26c0 100644

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

drivers/tty/serial/8250/8250_core.c +1 -1
index 9548d3f8fc8e..c3beee1f580a 100644

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

drivers/tty/serial/8250/8250_exar.c +11 -1
index 59449b6500cd..9b5da1d43332 100644

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

drivers/tty/serial/8250/8250_mtk.c +18 -0
index f839380c2f4c..98b8a3e30733 100644

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

drivers/tty/serial/serial-tegra.c +5 -2
index 8de8bac9c6c7..b3bbee6b6702 100644

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

drivers/tty/serial/xilinx_uartps.c +6 -2
index ac137b6a1dc1..56e108902502 100644

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

drivers/tty/vt/vt.c +18 -11
index 48a8199f7845..42d8c67a481f 100644

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

drivers/usb/cdns3/ep0.c +15 -15
index da4c5eb03d7e..666cebd9c5f2 100644

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

drivers/usb/cdns3/trace.h +3 -3
index 755c56582257..0a2a3269bfac 100644

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

drivers/usb/dwc3/dwc3-pci.c +8 -0
index 96c05b121fac..139474c3e77b 100644

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

drivers/usb/gadget/udc/gr_udc.c +5 -2
index aaf975c809bf..ecf874dee996 100644

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

drivers/usb/host/xhci-mtk-sch.c +4 -0
index fea555570ad4..45c54d56ecbd 100644

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

drivers/usb/host/xhci-pci.c +3 -0
index 766b74723e64..51251c1be059 100644

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

drivers/usb/host/xhci-tegra.c +1 -1
index 2eaf5c0af80c..ee6bf01775bb 100644

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

drivers/video/fbdev/core/bitblit.c +2 -2
index ca935c09a261..35ebeeccde4d 100644

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

drivers/video/fbdev/core/fbcon_ccw.c +2 -2
index dfa9a8aa4509..78f3a5621478 100644

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

drivers/video/fbdev/core/fbcon_cw.c +2 -2
index ce08251bfd38..fd098ff17574 100644

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

drivers/video/fbdev/core/fbcon_ud.c +2 -2
index 1936afc78fec..e165a3fad29a 100644

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

fs/btrfs/backref.c +1 -0
index 0cc02577577b..ae5cb94ef191 100644

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

fs/btrfs/disk-io.c +1 -0
index f71e4dbe1d8a..f00e64fee5dd 100644

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

fs/btrfs/extent_io.c +2 -1
index 6e17a92869ad..79196eb1a1b3 100644

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

fs/btrfs/relocation.c +2 -0
index 157452a5e110..f67d736c27a1 100644

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

fs/btrfs/volumes.c +8 -0
index 21c7d3d87827..45cf455f906d 100644

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

fs/cifs/inode.c +2 -8
index 44a57b65915b..15f2cdc71ac9 100644

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

fs/efivarfs/super.c +3 -3
index 12c66f5d92dd..28bb5689333a 100644

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

fs/exfat/dir.c +1 -1
index 6db302d76d4c..0c244eb706bd 100644

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

fs/exfat/exfat_fs.h +1 -1
index d865050fa6cd..99e9baf2d31d 100644

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

fs/exfat/file.c +1 -1
index b93aa9e6cb16..04278f3c0adf 100644

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

fs/exfat/nls.c +4 -4
index 6d1c3ae130ff..a647f8127f3b 100644

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

fs/fuse/dev.c +2 -1
index 5c155437a455..ec02c3240176 100644

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

fs/nfs/direct.c +4 -9
index f0c3f0123131..d49b1d197908 100644

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

fs/nfs/file.c +0 -1
index ccd6c1637b27..f96367a2463e 100644

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

fs/nfsd/nfs4state.c +19 -1
index bdfae3ba3953..0a201bb074b0 100644

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

include/asm-generic/mmiowb.h +4 -2
index 9439ff037b2d..5698fca3bf56 100644

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

include/asm-generic/vmlinux.lds.h +4 -1
index 71e387a5fe90..dc29044d3ed9 100644

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

include/linux/device-mapper.h +1 -0
index af48d9da3916..2d84ca74cc74 100644

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

include/linux/efi.h +1 -0
index 9430d01c0c3d..650794abfa32 100644

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

include/linux/io-mapping.h +4 -1
index b336622612f3..75eebe7c12f8 100644

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

include/linux/mod_devicetable.h +1 -1
index 0754b8d71262..8a84f11bf124 100644

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

include/linux/xattr.h +2 -1
index 47eaa34f8761..c5afaf8ca7a2 100644

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

include/sound/rt5670.h +1 -0
index f9024c7a1600..02e1d7778354 100644

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

include/uapi/linux/idxd.h +3 -0
index 1f412fbf561b..e103c1434e4b 100644

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

include/uapi/linux/input-event-codes.h +2 -1
index b6a835d37826..0c2e27d28e0a 100644

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

kernel/bpf/verifier.c +9 -1
index 739d9ba3ba6b..eebdd5307713 100644

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

kernel/events/uprobes.c +1 -1
index cc2095607c74..8e1f7165162c 100644

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

mm/hugetlb.c +10 -5
index 4f7cdc55fbe4..461324757c75 100644

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

mm/khugepaged.c +3 -0
index cd280afb246e..e9e7a5659d64 100644

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

mm/memcontrol.c +2 -2
index ef0e291a8cf4..9a4a77104d16 100644

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

mm/mmap.c +14 -2
index f609e9ec4a25..bb1822ac9909 100644

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

mm/shmem.c +1 -1
index bd8840082c94..97b4a47e9767 100644

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

mm/slab_common.c +28 -7
index 37d48a56431d..fe8b68482670 100644

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

net/mac80211/rx.c +26 -0
index 91a13aee4378..961f37c0701b 100644

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

net/netfilter/ipvs/ip_vs_sync.c +8 -4
index 605e0f68f8bd..2b8abbfe018c 100644

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

net/netfilter/nf_tables_api.c +14 -27

41 lines not on this page · raw message

net/vmw_vsock/virtio_transport.c +1 -1
index dfbaf6bd8b1c..2700a63ab095 100644

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

scripts/decode_stacktrace.sh +2 -2
index 13e5fbafdf2f..fe7076fdac8a 100755

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

scripts/gdb/linux/symbols.py +1 -1
index be984aa29b75..1be9763cf8bb 100644

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

sound/core/info.c +3 -1
index 8c6bc5241df5..9fec3070f8ba 100644

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

sound/pci/hda/patch_hdmi.c +23 -13
index 137d655fed8f..e821c9df8107 100644

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

sound/pci/hda/patch_realtek.c +2 -0
index d80eed2a48a1..27dd8945d6e6 100644

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

sound/soc/codecs/rt5670.c +56 -15

71 lines not on this page · raw message

sound/soc/codecs/rt5670.h +1 -1
index a8c3e44770b8..de0203369b7c 100644

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

sound/soc/intel/boards/bdw-rt5677.c +1 -0
index cc41a348295e..fa12a85f535a 100644

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

sound/soc/intel/boards/bytcht_es8316.c +3 -1
index ddcd070100ef..b3fd7de594d7 100644

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

sound/soc/intel/boards/cht_bsw_rt5672.c +11 -12
index 097023a3ec14..a3aa2c1f7097 100644

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

sound/soc/qcom/Kconfig +1 -1
index f51b28d1b94d..92f51d0e9fe2 100644

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

sound/soc/soc-topology.c +18 -6
index 6df3b0d12d87..31250a14c21d 100644

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

tools/perf/pmu-events/arch/s390/cf_z15/extended.json +1 -1
index 2df2e231e9ee..24c4ba2a9ae5 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.