Skip to contentSkip to conversation

Linux 5.15.63

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Aug 25, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.15.63 kernel.

All users of the 5.15 kernel series must upgrade.

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

thanks,

greg k-h

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

 Documentation/atomic_bitops.txt                                        |    2 
 Documentation/devicetree/bindings/arm/qcom.yaml                        |   18 
 Documentation/devicetree/bindings/clock/qcom,gcc-msm8996.yaml          |   16 
 Documentation/devicetree/bindings/gpio/gpio-zynq.yaml                  |    6 
 Documentation/devicetree/bindings/regulator/nxp,pca9450-regulator.yaml |   11 
 Documentation/devicetree/bindings/spi/spi-cadence.yaml                 |    7 
 Documentation/devicetree/bindings/spi/spi-zynqmp-qspi.yaml             |    7 
 Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml           |    1 
 Documentation/firmware-guide/acpi/apei/einj.rst                        |    2 
 Makefile                                                               |    8 
 arch/arm64/include/asm/kvm_host.h                                      |    4 
 arch/arm64/kvm/arm.c                                                   |    3 
 arch/arm64/kvm/guest.c                                                 |    2 
 arch/arm64/kvm/sys_regs.c                                              |    4 
 arch/csky/kernel/probes/kprobes.c                                      |    4 
 arch/m68k/coldfire/device.c                                            |    6 
 arch/mips/cavium-octeon/octeon-platform.c                              |    3 
 arch/mips/mm/tlbex.c                                                   |    4 
 arch/nios2/include/asm/entry.h                                         |    3 
 arch/nios2/include/asm/ptrace.h                                        |    2 
 arch/nios2/kernel/entry.S                                              |   22 -
 arch/nios2/kernel/signal.c                                             |    3 
 arch/nios2/kernel/syscall_table.c                                      |    1 
 arch/openrisc/include/asm/io.h                                         |    2 
 arch/openrisc/mm/ioremap.c                                             |    2 
 arch/powerpc/Makefile                                                  |   26 -
 arch/powerpc/kernel/head_book3s_32.S                                   |    4 
 arch/powerpc/kernel/pci-common.c                                       |   16 
 arch/powerpc/kernel/prom.c                                             |    7 
 arch/powerpc/kvm/book3s_hv_p9_entry.c                                  |   13 
 arch/powerpc/mm/book3s32/mmu.c                                         |   10 
 arch/powerpc/platforms/Kconfig.cputype                                 |   21 -
 arch/powerpc/platforms/powernv/pci-ioda.c                              |    2 
 arch/riscv/boot/dts/canaan/k210.dtsi                                   |   12 
 arch/riscv/boot/dts/sifive/fu740-c000.dtsi                             |   24 +
 arch/riscv/kernel/sys_riscv.c                                          |    5 
 arch/riscv/kernel/traps.c                                              |    4 
 arch/um/os-Linux/skas/process.c                                        |   17 
 arch/x86/kernel/kprobes/core.c                                         |    2 
 arch/x86/mm/init_64.c                                                  |    2 
 drivers/acpi/pci_mcfg.c                                                |    3 
 drivers/acpi/property.c                                                |    8 
 drivers/ata/libata-eh.c                                                |    1 
 drivers/atm/idt77252.c                                                 |    1 
 drivers/block/zram/zcomp.c                                             |   11 
 drivers/clk/qcom/clk-alpha-pll.c                                       |    2 
 drivers/clk/qcom/gcc-ipq8074.c                                         |    1 
 drivers/clk/ti/clk-44xx.c                                              |  210 +++++-----
 drivers/clk/ti/clk-54xx.c                                              |  160 +++----
 drivers/clk/ti/clkctrl.c                                               |    4 
 drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c                         |   11 
 drivers/dma/sprd-dma.c                                                 |    5 
 drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c                |    2 
 drivers/gpu/drm/imx/dcss/dcss-kms.c                                    |    2 
 drivers/gpu/drm/meson/meson_drv.c                                      |    5 
 drivers/gpu/drm/meson/meson_viu.c                                      |   22 -
 drivers/gpu/drm/nouveau/nvkm/engine/device/base.c                      |   22 +
 drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c                                 |   10 
 drivers/gpu/drm/ttm/ttm_bo.c                                           |    2 
 drivers/hid/hid-multitouch.c                                           |   13 
 drivers/hwtracing/coresight/coresight-etm4x.h                          |    3 
 drivers/i2c/busses/i2c-imx.c                                           |   20 
 drivers/infiniband/sw/rxe/rxe_param.h                                  |    6 
 drivers/infiniband/sw/rxe/rxe_task.c                                   |   16 
 drivers/input/touchscreen/exc3000.c                                    |    7 
 drivers/iommu/io-pgtable-arm-v7s.c                                     |   75 ++-
 drivers/irqchip/irq-tegra.c                                            |   10 
 drivers/md/md.c                                                        |    1 
 drivers/md/raid5.c                                                     |    2 
 drivers/media/platform/qcom/venus/pm_helpers.c                         |   10 
 drivers/misc/cxl/irq.c                                                 |    1 
 drivers/misc/habanalabs/gaudi/gaudi.c                                  |   24 -
 drivers/misc/uacce/uacce.c                                             |  133 ++++--
 drivers/mmc/host/meson-gx-mmc.c                                        |    6 
 drivers/mmc/host/pxamci.c                                              |    4 
 drivers/mmc/host/renesas_sdhi_core.c                                   |   29 -
 drivers/mmc/host/tmio_mmc.c                                            |    2 
 drivers/mmc/host/tmio_mmc.h                                            |    6 
 drivers/mmc/host/tmio_mmc_core.c                                       |   28 +
 drivers/net/can/spi/mcp251x.c                                          |   18 
 drivers/net/can/usb/ems_usb.c                                          |    2 
 drivers/net/dsa/microchip/ksz9477.c                                    |    3 
 drivers/net/dsa/mv88e6060.c                                            |    3 
 drivers/net/dsa/ocelot/felix_vsc9959.c                                 |    3 
 drivers/net/dsa/sja1105/sja1105_devlink.c                              |    2 
 drivers/net/ethernet/aquantia/atlantic/aq_nic.c                        |   21 -
 drivers/net/ethernet/broadcom/bgmac.c                                  |    2 
 drivers/net/ethernet/broadcom/genet/bcmmii.c                           |    3 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c                       |    4 
 drivers/net/ethernet/freescale/fec_ptp.c                               |    6 
 drivers/net/ethernet/intel/i40e/i40e_main.c                            |    4 
 drivers/net/ethernet/intel/iavf/iavf_adminq.c                          |   15 
 drivers/net/ethernet/intel/iavf/iavf_main.c                            |    9 
 drivers/net/ethernet/intel/ice/ice_switch.c                            |    2 
 drivers/net/ethernet/intel/igb/igb.h                                   |    2 
 drivers/net/ethernet/intel/igb/igb_main.c                              |   12 
 drivers/net/ethernet/marvell/octeontx2/af/rvu.c                        |    6 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c                    |   15 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c                 |    3 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c               |   19 
 drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h               |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c                    |    4 
 drivers/net/ethernet/mellanox/mlxsw/spectrum.c                         |    2 
 drivers/net/ethernet/moxa/moxart_ether.c                               |   20 
 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c                   |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c                      |    1 
 drivers/net/geneve.c                                                   |   15 
 drivers/net/phy/phy_device.c                                           |    6 
 drivers/net/plip/plip.c                                                |    2 
 drivers/net/virtio_net.c                                               |    5 
 drivers/ntb/test/ntb_tool.c                                            |    8 
 drivers/nvme/target/tcp.c                                              |    3 
 drivers/pci/controller/pci-aardvark.c                                  |   33 +
 drivers/pci/quirks.c                                                   |    3 
 drivers/phy/samsung/phy-exynos-pcie.c                                  |   25 -
 drivers/pinctrl/intel/pinctrl-intel.c                                  |   14 
 drivers/pinctrl/nomadik/pinctrl-nomadik.c                              |    4 
 drivers/pinctrl/pinctrl-amd.c                                          |   11 
 drivers/pinctrl/qcom/pinctrl-msm8916.c                                 |    4 
 drivers/pinctrl/qcom/pinctrl-sm8250.c                                  |    2 
 drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c                            |    1 
 drivers/pinctrl/sunxi/pinctrl-sunxi.c                                  |    7 
 drivers/platform/chrome/cros_ec_proto.c                                |    8 
 drivers/scsi/lpfc/lpfc_debugfs.c                                       |   20 
 drivers/scsi/lpfc/lpfc_sli.c                                           |    4 
 drivers/scsi/ufs/ufs-mediatek.c                                        |   60 ++
 drivers/spi/spi-meson-spicc.c                                          |  129 ++++--
 drivers/tty/serial/ucc_uart.c                                          |    2 
 drivers/usb/cdns3/cdns3-gadget.c                                       |    4 
 drivers/usb/dwc2/gadget.c                                              |    3 
 drivers/usb/gadget/function/uvc_queue.c                                |   17 
 drivers/usb/gadget/function/uvc_video.c                                |    2 
 drivers/usb/gadget/legacy/inode.c                                      |    1 
 drivers/usb/host/ohci-ppc-of.c                                         |    1 
 drivers/usb/renesas_usbhs/rza.c                                        |    4 
 drivers/vfio/vfio.c                                                    |    1 
 drivers/video/fbdev/i740fb.c                                           |    9 
 drivers/virt/vboxguest/vboxguest_linux.c                               |    9 
 drivers/xen/xenbus/xenbus_dev_frontend.c                               |    4 
 fs/btrfs/block-group.c                                                 |    4 
 fs/btrfs/relocation.c                                                  |    7 
 fs/btrfs/tree-log.c                                                    |    4 
 fs/ceph/caps.c                                                         |   27 -
 fs/ceph/mds_client.c                                                   |    7 
 fs/ceph/mds_client.h                                                   |    6 
 fs/cifs/misc.c                                                         |    6 
 fs/cifs/smb2ops.c                                                      |    5 
 fs/ext4/namei.c                                                        |    7 
 fs/ext4/resize.c                                                       |   10 
 fs/f2fs/node.c                                                         |    6 
 fs/f2fs/segment.c                                                      |   13 
 fs/nfs/nfs4idmap.c                                                     |   46 +-
 fs/nfs/nfs4proc.c                                                      |   20 
 fs/ntfs3/fslog.c                                                       |    2 
 fs/ntfs3/fsntfs.c                                                      |    7 
 fs/ntfs3/index.c                                                       |    2 
 fs/ntfs3/inode.c                                                       |    1 
 fs/ntfs3/super.c                                                       |    8 
 fs/ntfs3/xattr.c                                                       |   22 -
 fs/overlayfs/super.c                                                   |    7 
 fs/xfs/xfs_filestream.c                                                |    7 
 fs/xfs/xfs_fsops.c                                                     |   50 --
 fs/xfs/xfs_icache.c                                                    |   22 -
 fs/xfs/xfs_inode.c                                                     |   79 ++-
 fs/xfs/xfs_ioctl.c                                                     |    2 
 fs/xfs/xfs_trans.c                                                     |   86 ++++
 fs/xfs/xfs_trans.h                                                     |    3 
 fs/xfs/xfs_trans_dquot.c                                               |    1 
 include/asm-generic/bitops/atomic.h                                    |    6 
 include/linux/bpfptr.h                                                 |    8 
 include/linux/io-pgtable.h                                             |   15 
 include/linux/nmi.h                                                    |    2 
 include/linux/sunrpc/xdr.h                                             |    4 
 include/linux/uacce.h                                                  |    6 
 include/sound/control.h                                                |    2 
 include/sound/core.h                                                   |    8 
 kernel/bpf/arraymap.c                                                  |    6 
 kernel/bpf/hashtab.c                                                   |    8 
 kernel/trace/trace_eprobe.c                                            |   88 +++-
 kernel/trace/trace_event_perf.c                                        |    7 
 kernel/trace/trace_events.c                                            |    1 
 kernel/trace/trace_probe.c                                             |   29 -
 kernel/watchdog.c                                                      |   21 -
 lib/list_debug.c                                                       |   12 
 net/can/j1939/socket.c                                                 |    5 
 net/can/j1939/transport.c                                              |    8 
 net/core/bpf_sk_storage.c                                              |   12 
 net/core/devlink.c                                                     |    4 
 net/core/sock_map.c                                                    |   20 
 net/dsa/port.c                                                         |    7 
 net/ipv6/ip6_output.c                                                  |    3 
 net/ipv6/ndisc.c                                                       |    3 
 net/netfilter/nf_tables_api.c                                          |   70 ++-
 net/netlink/genetlink.c                                                |    6 
 net/netlink/policy.c                                                   |   14 
 net/qrtr/mhi.c                                                         |   12 
 net/rds/ib_recv.c                                                      |    1 
 net/sunrpc/auth.c                                                      |    2 
 net/sunrpc/backchannel_rqst.c                                          |   14 
 net/sunrpc/sysfs.c                                                     |    6 
 net/vmw_vsock/af_vsock.c                                               |   10 
 scripts/Makefile.gcc-plugins                                           |    2 
 scripts/dummy-tools/gcc                                                |    8 
 scripts/module.lds.S                                                   |    2 
 security/apparmor/apparmorfs.c                                         |    2 
 security/apparmor/audit.c                                              |    2 
 security/apparmor/domain.c                                             |    2 
 security/apparmor/include/lib.h                                        |    5 
 security/apparmor/include/policy.h                                     |    2 
 security/apparmor/label.c                                              |   13 
 security/apparmor/mount.c                                              |    8 
 security/apparmor/policy_unpack.c                                      |   12 
 sound/core/control.c                                                   |    7 
 sound/core/info.c                                                      |    6 
 sound/core/misc.c                                                      |   94 ++++
 sound/core/timer.c                                                     |   11 
 sound/pci/hda/patch_realtek.c                                          |    1 
 sound/soc/codecs/tas2770.c                                             |   98 ++--
 sound/soc/codecs/tas2770.h                                             |    5 
 sound/soc/codecs/tlv320aic32x4.c                                       |    9 
 sound/soc/sh/rcar/ssiu.c                                               |    2 
 sound/soc/sof/debug.c                                                  |    6 
 sound/soc/sof/intel/apl.c                                              |    1 
 sound/soc/sof/intel/cnl.c                                              |    2 
 sound/soc/sof/intel/hda-loader.c                                       |   14 
 sound/soc/sof/intel/hda.c                                              |   10 
 sound/soc/sof/intel/icl.c                                              |    1 
 sound/soc/sof/intel/shim.h                                             |    1 
 sound/soc/sof/intel/tgl.c                                              |    4 
 sound/usb/card.c                                                       |    8 
 sound/usb/mixer_maps.c                                                 |   34 +
 tools/build/feature/test-libcrypto.c                                   |   15 
 tools/perf/tests/switch-tracking.c                                     |   18 
 tools/perf/util/parse-events.c                                         |   14 
 tools/perf/util/probe-event.c                                          |    6 
 tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc   |    1 
 tools/testing/selftests/net/forwarding/custom_multipath_hash.sh        |   24 -
 tools/testing/selftests/net/forwarding/gre_custom_multipath_hash.sh    |   24 -
 tools/testing/selftests/net/forwarding/ip6gre_custom_multipath_hash.sh |   24 -
 tools/vm/slabinfo.c                                                    |   32 +
 virt/kvm/kvm_main.c                                                    |   14 
 241 files changed, 2159 insertions(+), 1063 deletions(-)

Aaron Lu (1):
x86/mm: Use proper mask when setting PUD mapping

Adrian Hunter (2):
perf parse-events: Fix segfault when event parser gets an error perf tests: Fix Track with sched_switch test for hybrid case

Al Viro (6):
nios2: page fault et.al. are *not* restartable syscalls...
nios2: don't leave NULLs in sys_call_table[]
nios2: traced syscall does need to check the syscall number
nios2: fix syscall restart checks
nios2: restarts apply only to the first sigframe we build...
nios2: add force_successful_syscall_return()

Alan Brady (1):
i40e: Fix to stop tx_timeout recovery if GLOBR fails

Alexey Kardashevskiy (1):
powerpc/ioda/iommu/debugfs: Generate unique debugfs entries

Amadeusz Sławiński (1):
ALSA: info: Fix llseek return value when using callback

Amelie Delaunay (1):
usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch

Amit Cohen (1):
mlxsw: spectrum: Clear PTP configuration after unregistering the netdevice

Andrew Donnellan (1):
gcc-plugins: Undefine LATENT_ENTROPY_PLUGIN when plugin disabled for a file

Andy Shevchenko (1):
pinctrl: intel: Check against matching data instead of ACPI companion

Arun Ramadoss (1):
net: dsa: microchip: ksz9477: fix fdb_dump last invalid entry

Arunpravin Paneer Selvam (1):
drm/ttm: Fix dummy res NULL ptr deref bug

Aurabindo Pillai (1):
drm/amd/display: Check correct bounds for stream encoder instances for DCN303

Basavaraj Natikar (1):
pinctrl: amd: Don't save/restore interrupt status and wake status bits

Ben Dooks (2):
dmaengine: dw-axi-dmac: do not print NULL LLI during error
dmaengine: dw-axi-dmac: ignore interrupt if no descriptor

Bob Pearson (1):
RDMA/rxe: Limit the number of calls to each tasklet

Brian Foster (2):
xfs: flush inodegc workqueue tasks before cancel
xfs: fix soft lockup via spinning in filestream ag selection loop

Celeste Liu (1):
riscv: mmap with PROT_WRITE but no PROT_READ is invalid

Chao Yu (2):
f2fs: fix to avoid use f2fs_bug_on() in f2fs_new_node_page()
f2fs: fix to do sanity check on segment type in build_sit_entries()

Chen Lin (1):
dpaa2-eth: trace the allocated address instead of page struct

Chia-Lin Kao (AceLan) (1):
net: atlantic: fix aq_vec index out of range error

Christoffer Sandberg (1):
ALSA: hda/realtek: Add quirk for Clevo NS50PU, NS70PU

Christophe JAILLET (6):
mmc: pxamci: Fix another error handling path in pxamci_probe()
mmc: pxamci: Fix an error handling path in pxamci_probe()
mmc: meson-gx: Fix an error handling path in meson_mmc_probe()
perf probe: Fix an error handling path in 'parse_perf_probe_command()'
stmmac: intel: Add a missing clk_disable_unprepare() call in intel_eth_pci_remove()
cxl: Fix a memory leak in an error handling path

Christophe Leroy (2):
powerpc/32: Set an IBAT covering up to _einittext during init powerpc/32: Don't always pass -mcpu=powerpc to the compiler

Chuck Lever (1):
SUNRPC: Fix xdr_encode_bool()

Conor Dooley (2):
riscv: dts: sifive: Add fu740 topology information
riscv: dts: canaan: Add k210 topology information

Csókás Bence (1):
fec: Fix timer capture timing in fec_ptp_enable_pps()

Damien Le Moal (1):
ata: libata-eh: Add missing command name

Dan Aloni (1):
sunrpc: fix expiry of auth creds

Dan Carpenter (4):
NTB: ntb_tool: uninitialized heap data in tool_fn_write() xen/xenbus: fix return type in xenbus_file_read() fs/ntfs3: Don't clear upper bits accidentally in log_replay() fs/ntfs3: uninitialized variable in ntfs_set_acl_ex()

Darrick J. Wong (6):
xfs: reserve quota for dir expansion when linking/unlinking files
xfs: reserve quota for target dir expansion when renaming files
xfs: remove infinite loop when reserving free block pool
xfs: always succeed at setting the reserve pool size
xfs: fix overfilling of reserve pool
xfs: reject crazy array sizes being fed to XFS_IOC_GETBMAP*

Dmitry Baryshkov (1):
dt-bindings: clock: qcom,gcc-msm8996: add more GCC clock sources

Duoming Zhou (1):
atm: idt77252: fix use-after-free bugs caused by tst_timer

Eric Sandeen (1):
xfs: revert "xfs: actually bump warning counts when we send warnings"

Fabiano Rosas (1):
KVM: PPC: Book3S HV: Fix "rm_exit" entry in debugfs timings

Fedor Pchelkin (2):
can: j1939: j1939_session_destroy(): fix memory leak of skbs
can: j1939: j1939_sk_queue_activate_next_locked(): replace WARN_ON_ONCE with netdev_warn_once()

Filipe Manana (1):
btrfs: fix lost error handling when looking up extended ref on log replay

Florian Fainelli (2):
net: phy: Warn about incorrect mdio_bus_phy_resume() state
net: bcmgenet: Indicate MAC is in charge of PHY PM

Florian Westphal (1):
plip: avoid rcu debug splat

Frank Li (2):
usb: cdns3 fix use-after-free at workaround 2
usb: cdns3: fix random warning message when driver load

Frieder Schrempf (1):
regulator: pca9450: Remove restrictions for regulator-name

Greg Kroah-Hartman (1):

      Linux 5.15.63

Grzegorz Siwik (1):
ice: Ignore EEXIST when setting promisc mode

Guenter Roeck (1):
lib/list_debug.c: Detect uninitialized lists

Harman Kalra (1):
octeontx2-af: suppress external profile loading warning

Hector Martin (1):
locking/atomic: Make test_and_*_bit() ordered on failure

Helge Deller (1):
modules: Ensure natural alignment for .altinstructions and __bug_table sections

Hou Tao (5):
bpf: Acquire map uref in .init_seq_private for array map iterator
bpf: Acquire map uref in .init_seq_private for hash map iterator
bpf: Acquire map uref in .init_seq_private for sock local storage map iterator
bpf: Acquire map uref in .init_seq_private for sock{map,hash} iterator
bpf: Check the validity of max_rdwr_access for sock local storage map iterator

Huacai Chen (1):
PCI/ACPI: Guard ARM64-specific mcfg_quirks

Ido Schimmel (2):
devlink: Fix use-after-free after a failed reload
selftests: forwarding: Fix failing tests with old libnet

Jakub Kicinski (1):
net: genl: fix error path memory leak in policy dumping

James Smart (2):
scsi: lpfc: Prevent buffer overflow crashes in debugfs with malformed user input
scsi: lpfc: Fix possible memory leak when failing to issue CMF WQE

Jason A. Donenfeld (1):
um: add "noreboot" command line option for PANIC_TIMEOUT=-1 setups

Jean-Philippe Brucker (1):
uacce: Handle parent device removal or parent driver module rmmod

Jeff Layton (1):
ceph: don't leak snap_rwsem in handle_cap_grant

Jianhua Lu (1):
pinctrl: qcom: sm8250: Fix PDC map

Jinghao Jia (1):
BPF: Fix potential bad pointer dereference in bpf_sys_bpf()

John Johansen (5):
apparmor: fix quiet_denied for file rules
apparmor: fix absroot causing audited secids to begin with =
apparmor: Fix failed mount permission check error message
apparmor: fix setting unconfined mode on a loaded profile
apparmor: fix overlapping attachment computation

Josef Bacik (1):
btrfs: reset RO counter on block group if we fail to relocate

Jozef Martiniak (1):
gadgetfs: ep_io - wait until IRQ finishes

Karol Herbst (1):
drm/nouveau: recognise GA103

Kiselev, Oleg (1):
ext4: avoid resizing to a partial cluster size

Konstantin Komarov (3):
fs/ntfs3: Fix double free on remount fs/ntfs3: Do not change mode if ntfs_set_ea failed fs/ntfs3: Fix missing i_op in ntfs_read_mft

Krzysztof Kozlowski (6):
dt-bindings: arm: qcom: fix Alcatel OneTouch Idol 3 compatibles
dt-bindings: arm: qcom: fix Longcheer L8150 compatibles
dt-bindings: arm: qcom: fix MSM8916 MTP compatibles
dt-bindings: arm: qcom: fix MSM8994 boards compatibles
spi: dt-bindings: cadence: add missing 'required'
spi: dt-bindings: zynqmp-qspi: add missing 'required'

Kumar Kartikeya Dwivedi (1):
bpf: Don't reinit map value in prealloc_lru_pop

Kuninori Morimoto (1):
ASoC: rsnd: care default case on rsnd_ssiu_busif_err_irq_ctrl()

Laurent Dufour (1):
watchdog: export lockup_detector_reconfigure

Laurentiu Palcu (1):
drm/imx/dcss: get rid of HPD warning message

Liang He (5):
drm/meson: Fix refcount bugs in meson_vpu_has_available_connectors()
usb: host: ohci-ppc-of: Fix refcount leak bug
usb: renesas: Fix refcount leak bug
tty: serial: Fix refcount leak bug in ucc_uart.c
mips: cavium-octeon: Fix missing of_node_put() in octeon2_usb_clocks_start

Liao Chang (1):
csky/kprobe: reclaim insn_slot on kprobe unregistration

Lin Ma (1):
igb: Add lock to avoid data race

Logan Gunthorpe (1):
md: Notify sysfs sync_completed in md_reap_sync_thread()

Luís Henriques (1):
ceph: use correct index when encoding client supported features

Marc Kleine-Budde (1):
can: ems_usb: fix clang's -Wunaligned-access warning

Marek Szyprowski (1):
phy: samsung: phy-exynos-pcie: sanitize init/power_on callbacks

Martin Povišer (4):
ASoC: tas2770: Set correct FSYNC polarity
ASoC: tas2770: Allow mono streams
ASoC: tas2770: Drop conflicting set_bias_level power setting
ASoC: tas2770: Fix handling of mute/unmute

Masahiro Yamada (1):
kbuild: fix the modules order between drivers and libs

Matthias May (4):
geneve: do not use RT_TOS for IPv6 flowlabel
mlx5: do not use RT_TOS for IPv6 flowlabel
ipv6: do not use RT_TOS for IPv6 flowlabel
geneve: fix TOS inheriting for ipv4

Maxim Kochetkov (1):
net: qrtr: start MHI channel after endpoit creation

Miaoqian Lin (2):
pinctrl: nomadik: Fix refcount leak in nmk_pinctrl_dt_subnode_to_map
Input: exc3000 - fix return value check of wait_for_completion_timeout

Michael Ellerman (1):
powerpc/pci: Fix get_phb_number() locking

Michael Grzeschik (2):
usb: gadget: uvc: calculate the number of request depending on framesize
usb: gadget: uvc: call uvc uvcg_warn on completed status instead of uvcg_info

Michal Simek (1):
dt-bindings: gpio: zynq: Add missing compatible strings

Miklos Szeredi (1):
ovl: warn if trusted xattr creation fails

Mikulas Patocka (1):
rds: add missing barrier to release_refill

Nadav Amit (1):
x86/kprobes: Fix JNG/JNLE emulation

Nathan Chancellor (1):
MIPS: tlbex: Explicitly compare _PAGE_NO_EXEC against 0

Naveen Mamindlapalli (1):
octeontx2-pf: Fix NIX_AF_TL3_TL2X_LINKX_CFG register configuration

Neil Armstrong (1):
spi: meson-spicc: add local pow2 clock ops to preserve rate between messages

Nick Desaulniers (1):
coresight: etm4x: avoid build failure with unrolled loops

Nikita Travkin (1):
pinctrl: qcom: msm8916: Allow CAMSS GP clocks to be muxed

Nícolas F. R. A. Prado (1):
dt-bindings: usb: mtk-xhci: Allow wakeup interrupt-names to be optional

Oded Gabbay (1):
habanalabs/gaudi: mask constant value before cast

Ofir Bitton (1):
habanalabs/gaudi: fix shift out of bounds

Oliver Upton (2):
KVM: arm64: Treat PMCR_EL1.LC as RES1 on asymmetric systems
KVM: arm64: Reject 32bit user PSTATE on asymmetric systems

Ondrej Mosnacek (1):
kbuild: dummy-tools: avoid tmpdir leak in dummy gcc

Pablo Neira Ayuso (8):
netfilter: nf_tables: use READ_ONCE and WRITE_ONCE for shared generation id access
netfilter: nf_tables: disallow NFTA_SET_ELEM_KEY_END with NFT_SET_ELEM_INTERVAL_END flag
netfilter: nf_tables: possible module reference underflow in error path
netfilter: nf_tables: really skip inactive sets when allocating name
netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT flag
netfilter: nf_tables: NFTA_SET_ELEM_KEY_END requires concat and interval flags
netfilter: nf_tables: disallow NFT_SET_ELEM_CATCHALL and NFT_SET_ELEM_INTERVAL_END
netfilter: nf_tables: check NFT_SET_CONCAT flag if field_count is specified

Pali Rohár (1):
PCI: aardvark: Fix reporting Slot capabilities on emulated bridge

Pascal Terjan (1):
vboxguest: Do not use devm for irq

Pavan Chebbi (1):

      PCI: Add ACS quirk for Broadcom BCM5750x NICs

Pavel Skripkin (1):
fs/ntfs3: Fix NULL deref in ntfs_update_mftmirr

Peilin Ye (2):
vsock: Fix memory leak in vsock_connect()
vsock: Set socket state back to SS_UNCONNECTED in vsock_connect_timeout()

Philipp Zabel (1):
ASoC: codec: tlv320aic32x4: fix mono playback via I2S

Po-Wen Kao (1):
scsi: ufs: ufs-mediatek: Fix the timing of configuring device regulators

Przemyslaw Patynowski (2):
iavf: Fix adminq error handling
iavf: Fix reset error handling

Qifu Zhang (1):
Documentation: ACPI: EINJ: Fix obsolete example

Randy Dunlap (1):
m68k: coldfire/device.c: protect FLEXCAN blocks

Ranjani Sridharan (1):
ASoC: SOF: Intel: hda: Define rom_status_reg in sof_intel_dsp_desc

Ren Zhijie (1):
scsi: ufs: ufs-mediatek: Fix build error and type mismatch

Robert Marko (1):
clk: qcom: ipq8074: dont disable gcc_sleep_clk_src

Roberto Sassu (1):
tools build: Switch to new openssl API for test-libcrypto

Rustam Subkhankulov (1):
net: dsa: sja1105: fix buffer overflow in sja1105_setup_devlink_regions()

Sagi Grimberg (1):
nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown

Sai Prakash Ranjan (2):
irqchip/tegra: Fix overflow implicit truncation warnings drm/meson: Fix overflow implicit truncation warnings

Sakari Ailus (1):
ACPI: property: Return type of acpi_add_nondev_subnodes() should be bool

Samuel Holland (2):
pinctrl: sunxi: Add I/O bias setting for H6 R-PIO drm/sun4i: dsi: Prevent underflow when computing packet sizes

Sandor Bodo-Merle (1):
net: bgmac: Fix a BUG triggered by wrong bytes_compl

Schspa Shi (1):

      vfio: Clear the caps->buf to NULL after free

Sean Christopherson (1):
KVM: Unconditionally get a ref to /dev/kvm module when creating a VM

Sebastian Würl (1):
can: mcp251x: Fix race condition on receive interrupt

Sergei Antonov (2):
net: dsa: mv88e6060: prevent crash on an unused port
net: moxa: pass pdev instead of ndev to DMA functions

Sergey Senozhatsky (1):
zram: do not lookup algorithm in backends table

Stafford Horne (1):
openrisc: io: Define iounmap argument as volatile

Stanimir Varbanov (1):
venus: pm_helpers: Fix warning in OPP during probe

Stanislaw Kardach (1):
octeontx2-af: Apply tx nibble fixup always

Steve French (1):
smb3: check xattr value length earlier

Steven Rostedt (Google) (8):
tracing/perf: Fix double put of trace event when init fails tracing/eprobes: Do not allow eprobes to use $stack, or % for regs tracing/eprobes: Do not hardcode $comm as a string tracing/eprobes: Have event probes be consistent with kprobes and uprobes tracing/probes: Have kprobes and uprobes use $COMM too
tracing: Have filter accept "common_cpu" to be consistent tracing/eprobes: Fix reading of string fields selftests/kprobe: Do not test for GRP/ without event failures

Subbaraya Sundeep (2):
octeontx2-af: Fix mcam entry resource leak
octeontx2-af: Fix key checking for source mac

Takashi Iwai (6):
ALSA: usb-audio: More comprehensive mixer map for ASUS ROG Zenith II
ASoC: SOF: debug: Fix potential buffer overflow by snprintf()
ASoC: SOF: Intel: hda: Fix potential buffer overflow by snprintf()
ALSA: core: Add async signal helpers
ALSA: timer: Use deferred fasync helper
ALSA: control: Use deferred fasync helper

Tao Jin (1):
HID: multitouch: new device class fix Lenovo X12 trackpad sticky

Tom Rix (1):
apparmor: fix aa_label_asxprint return check

Tony Lindgren (1):
clk: ti: Stop using legacy clkctrl names for omap4 and 5

Trond Myklebust (5):
NFSv4.1: Don't decrease the value of seq_nr_highest_sent NFSv4.1: Handle NFS4ERR_DELAY replies to OP_SEQUENCE correctly
NFSv4: Fix races in the legacy idmapper upcall NFSv4/pnfs: Fix a use-after-free bug in open
SUNRPC: Reinitialise the backchannel request buffers before reuse

Tzung-Bi Shih (1):
platform/chrome: cros_ec_proto: don't show MKBP version if unsupported

Uwe Kleine-König (2):
i2c: imx: Make sure to unregister adapter on remove()
dmaengine: sprd: Cleanup in .remove() after pm_runtime_get_sync() failed

Vladimir Oltean (2):
net: dsa: felix: fix ethtool 256-511 and 512-1023 TX packet counters
net: dsa: don't warn in dsa_port_set_state_now() when driver doesn't support it

Vladimir Zapolskiy (1):
clk: qcom: clk-alpha-pll: fix clk_trion_pll_configure description

Wentao_Liang (1):
drivers:md:fix a potential use-after-free bug

Wolfram Sang (1):
mmc: tmio: avoid glitches when resetting

Xianting Tian (1):
RISC-V: Add fast call path of crash_kexec()

Xin Xiong (3):
apparmor: fix reference count leak in aa_pivotroot() net/sunrpc: fix potential memory leaks in rpc_sysfs_xprt_state_change()
net: fix potential refcount leak in ndisc_router_discovery()

Xiu Jianfeng (1):
apparmor: Fix memleak in aa_simple_write_to_buffer()

Xuan Zhuo (1):
virtio_net: fix memory leak inside XPD_TX with mergeable

Yan Lei (1):
fs/ntfs3: Fix using uninitialized value n when calling indx_read

Ye Bin (1):
ext4: avoid remove directory when directory is corrupted

Yu Xiao (1):
nfp: ethtool: fix the display error of ethtool -m DEVNAME

Yuanzheng Song (1):
tools/vm/slabinfo: use alphabetic order when two values are equal

Yunfei Wang (1):
iommu/io-pgtable-arm-v7s: Add a quirk to allow pgtable PA up to 35bit

Zhang Xianwei (1):
NFSv4.1: RECLAIM_COMPLETE must handle EACCES

Zhang Xiaoxu (1):
cifs: Fix memory leak on the deferred close

Zheyu Ma (1):
video: fbdev: i740fb: Check the argument of i740_calc_vclk()

Zhouyi Zhou (1):
powerpc/64: Init jump labels before parse_early_param()

Zixuan Fu (1):
btrfs: unset reloc control if transaction commit fails in prepare_to_relocate()

author maintainer
#1 lore raw
Documentation/atomic_bitops.txt +1 -1
index 093cdaefdb37..d8b101c97031 100644
@@ -59,7 +59,7 @@ Like with atomic_t, the rule of thumb is:
  - RMW operations that have a return value are fully ordered.
 
  - RMW operations that are conditional are unordered on FAILURE,
-   otherwise the above rules apply. In the case of test_and_{}_bit() operations,
+   otherwise the above rules apply. In the case of test_and_set_bit_lock(),
    if the bit in memory is unchanged by the operation then it is deemed to have
    failed.
 
Documentation/devicetree/bindings/arm/qcom.yaml +12 -6
index 880ddafc634e..a702a18d845e 100644
@@ -135,28 +135,34 @@ properties:
           - const: qcom,msm8974
 
       - items:
-          - enum:
-              - alcatel,idol347
-          - const: qcom,msm8916-mtp/1
           - const: qcom,msm8916-mtp
+          - const: qcom,msm8916-mtp/1
           - const: qcom,msm8916
 
       - items:
           - enum:
-              - longcheer,l8150
+              - alcatel,idol347
               - samsung,a3u-eur
               - samsung,a5u-eur
           - const: qcom,msm8916
 
+      - items:
+          - const: longcheer,l8150
+          - const: qcom,msm8916-v1-qrd/9-v1
+          - const: qcom,msm8916
+
       - items:
           - enum:
               - sony,karin_windy
+          - const: qcom,apq8094
+
+      - items:
+          - enum:
               - sony,karin-row
               - sony,satsuki-row
               - sony,sumire-row
               - sony,suzuran-row
-              - qcom,msm8994
-          - const: qcom,apq8094
+          - const: qcom,msm8994
 
       - items:
           - const: qcom,msm8996-mtp
Documentation/devicetree/bindings/clock/qcom,gcc-msm8996.yaml +16 -0
index 5a5b2214f0ca..005e0edd4609 100644
@@ -22,16 +22,32 @@ properties:
     const: qcom,gcc-msm8996
 
   clocks:
+    minItems: 3
     items:
       - description: XO source
       - description: Second XO source
       - description: Sleep clock source
+      - description: PCIe 0 PIPE clock (optional)
+      - description: PCIe 1 PIPE clock (optional)
+      - description: PCIe 2 PIPE clock (optional)
+      - description: USB3 PIPE clock (optional)
+      - description: UFS RX symbol 0 clock (optional)
+      - description: UFS RX symbol 1 clock (optional)
+      - description: UFS TX symbol 0 clock (optional)
 
   clock-names:
+    minItems: 3
     items:
       - const: cxo
       - const: cxo2
       - const: sleep_clk
+      - const: pcie_0_pipe_clk_src
+      - const: pcie_1_pipe_clk_src
+      - const: pcie_2_pipe_clk_src
+      - const: usb3_phy_pipe_clk_src
+      - const: ufs_rx_symbol_0_clk_src
+      - const: ufs_rx_symbol_1_clk_src
+      - const: ufs_tx_symbol_0_clk_src
 
   '#clock-cells':
     const: 1
Documentation/devicetree/bindings/gpio/gpio-zynq.yaml +5 -1
index 378da2649e66..980f92ad9eba 100644
@@ -11,7 +11,11 @@ maintainers:
 
 properties:
   compatible:
-    const: xlnx,zynq-gpio-1.0
+    enum:
+      - xlnx,zynq-gpio-1.0
+      - xlnx,zynqmp-gpio-1.0
+      - xlnx,versal-gpio-1.0
+      - xlnx,pmc-gpio-1.0
 
   reg:
     maxItems: 1
Documentation/devicetree/bindings/regulator/nxp,pca9450-regulator.yaml +0 -11
index f70f2e758a00..e66aac0ad735 100644
@@ -47,12 +47,6 @@ properties:
         description:
           Properties for single LDO regulator.
 
-        properties:
-          regulator-name:
-            pattern: "^LDO[1-5]$"
-            description:
-              should be "LDO1", ..., "LDO5"
-
         unevaluatedProperties: false
 
       "^BUCK[1-6]$":
@@ -62,11 +56,6 @@ properties:
           Properties for single BUCK regulator.
 
         properties:
-          regulator-name:
-            pattern: "^BUCK[1-6]$"
-            description:
-              should be "BUCK1", ..., "BUCK6"
-
           nxp,dvs-run-voltage:
             $ref: "/schemas/types.yaml#/definitions/uint32"
             minimum: 600000
Documentation/devicetree/bindings/spi/spi-cadence.yaml +7 -0
index 9787be21318e..82d0ca5c00f3 100644
@@ -49,6 +49,13 @@ properties:
     enum: [ 0, 1 ]
     default: 0
 
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clock-names
+  - clocks
+
 unevaluatedProperties: false
 
 examples:
Documentation/devicetree/bindings/spi/spi-zynqmp-qspi.yaml +7 -0
index ea72c8001256..fafde1c06be6 100644
@@ -30,6 +30,13 @@ properties:
   clocks:
     maxItems: 2
 
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clock-names
+  - clocks
+
 unevaluatedProperties: false
 
 examples:
Documentation/devicetree/bindings/usb/mediatek,mtk-xhci.yaml +1 -0
index 11f7bacd4e2b..620cbf00bedb 100644
@@ -56,6 +56,7 @@ properties:
       - description: optional, wakeup interrupt used to support runtime PM
 
   interrupt-names:
+    minItems: 1
     items:
       - const: host
       - const: wakeup
Documentation/firmware-guide/acpi/apei/einj.rst +1 -1
index c042176e1707..50ac87fa2295 100644
@@ -168,7 +168,7 @@ An error injection example::
   0x00000008	Memory Correctable
   0x00000010	Memory Uncorrectable non-fatal
   # echo 0x12345000 > param1		# Set memory address for injection
-  # echo $((-1 << 12)) > param2		# Mask 0xfffffffffffff000 - anywhere in this page
+  # echo 0xfffffffffffff000 > param2		# Mask - anywhere in this page
   # echo 0x8 > error_type			# Choose correctable memory error
   # echo 1 > error_inject			# Inject now
 
Makefile +3 -5
index 5b4f8f8851bf..ea669530ec86 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 15
-SUBLEVEL = 62
+SUBLEVEL = 63
 EXTRAVERSION =
 NAME = Trick or Treat
 
@@ -1155,13 +1155,11 @@ vmlinux-alldirs	:= $(sort $(vmlinux-dirs) Documentation \
 		     $(patsubst %/,%,$(filter %/, $(core-) \
 			$(drivers-) $(libs-))))
 
-subdir-modorder := $(addsuffix modules.order,$(filter %/, \
-			$(core-y) $(core-m) $(libs-y) $(libs-m) \
-			$(drivers-y) $(drivers-m)))
-
 build-dirs	:= $(vmlinux-dirs)
 clean-dirs	:= $(vmlinux-alldirs)
 
+subdir-modorder := $(addsuffix /modules.order, $(build-dirs))
+
 # Externally visible symbols (used by link-vmlinux.sh)
 KBUILD_VMLINUX_OBJS := $(head-y) $(patsubst %/,%/built-in.a, $(core-y))
 KBUILD_VMLINUX_OBJS += $(addsuffix built-in.a, $(filter %/, $(libs-y)))
arch/arm64/include/asm/kvm_host.h +4 -0
index fc6ee6c5972d..1713630bf8f5 100644
@@ -795,6 +795,10 @@ bool kvm_arm_vcpu_is_finalized(struct kvm_vcpu *vcpu);
 #define kvm_vcpu_has_pmu(vcpu)					\
 	(test_bit(KVM_ARM_VCPU_PMU_V3, (vcpu)->arch.features))
 
+#define kvm_supports_32bit_el0()				\
+	(system_supports_32bit_el0() &&				\
+	 !static_branch_unlikely(&arm64_mismatched_32bit_el0))
+
 int kvm_trng_call(struct kvm_vcpu *vcpu);
 #ifdef CONFIG_KVM
 extern phys_addr_t hyp_mem_base;
arch/arm64/kvm/arm.c +1 -2
index f181527f9d43..4cb265e15361 100644
@@ -712,8 +712,7 @@ static bool vcpu_mode_is_bad_32bit(struct kvm_vcpu *vcpu)
 	if (likely(!vcpu_mode_is_32bit(vcpu)))
 		return false;
 
-	return !system_supports_32bit_el0() ||
-		static_branch_unlikely(&arm64_mismatched_32bit_el0);
+	return !kvm_supports_32bit_el0();
 }
 
 /**
arch/arm64/kvm/guest.c +1 -1
index 5ce26bedf23c..94108e2e0917 100644
@@ -242,7 +242,7 @@ static int set_core_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
 		u64 mode = (*(u64 *)valp) & PSR_AA32_MODE_MASK;
 		switch (mode) {
 		case PSR_AA32_MODE_USR:
-			if (!system_supports_32bit_el0())
+			if (!kvm_supports_32bit_el0())
 				return -EINVAL;
 			break;
 		case PSR_AA32_MODE_FIQ:
arch/arm64/kvm/sys_regs.c +2 -2
index 7c18e429b449..c11612db4a37 100644
@@ -649,7 +649,7 @@ static void reset_pmcr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r)
 	 */
 	val = ((pmcr & ~ARMV8_PMU_PMCR_MASK)
 	       | (ARMV8_PMU_PMCR_MASK & 0xdecafbad)) & (~ARMV8_PMU_PMCR_E);
-	if (!system_supports_32bit_el0())
+	if (!kvm_supports_32bit_el0())
 		val |= ARMV8_PMU_PMCR_LC;
 	__vcpu_sys_reg(vcpu, r->reg) = val;
 }
@@ -698,7 +698,7 @@ static bool access_pmcr(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
 		val = __vcpu_sys_reg(vcpu, PMCR_EL0);
 		val &= ~ARMV8_PMU_PMCR_MASK;
 		val |= p->regval & ARMV8_PMU_PMCR_MASK;
-		if (!system_supports_32bit_el0())
+		if (!kvm_supports_32bit_el0())
 			val |= ARMV8_PMU_PMCR_LC;
 		__vcpu_sys_reg(vcpu, PMCR_EL0) = val;
 		kvm_pmu_handle_pmcr(vcpu, val);
arch/csky/kernel/probes/kprobes.c +4 -0
index 4045894d9280..584ed9f36290 100644
@@ -124,6 +124,10 @@ void __kprobes arch_disarm_kprobe(struct kprobe *p)
 
 void __kprobes arch_remove_kprobe(struct kprobe *p)
 {
+	if (p->ainsn.api.insn) {
+		free_insn_slot(p->ainsn.api.insn, 0);
+		p->ainsn.api.insn = NULL;
+	}
 }
 
 static void __kprobes save_previous_kprobe(struct kprobe_ctlblk *kcb)
arch/m68k/coldfire/device.c +3 -3
index 4218750414bb..7dab46728aed 100644
@@ -581,7 +581,7 @@ static struct platform_device mcf_esdhc = {
 };
 #endif /* MCFSDHC_BASE */
 
-#if IS_ENABLED(CONFIG_CAN_FLEXCAN)
+#ifdef MCFFLEXCAN_SIZE
 
 #include <linux/can/platform/flexcan.h>
 
@@ -620,7 +620,7 @@ static struct platform_device mcf_flexcan0 = {
 	.resource = mcf5441x_flexcan0_resource,
 	.dev.platform_data = &mcf5441x_flexcan_info,
 };
-#endif /* IS_ENABLED(CONFIG_CAN_FLEXCAN) */
+#endif /* MCFFLEXCAN_SIZE */
 
 static struct platform_device *mcf_devices[] __initdata = {
 	&mcf_uart,
@@ -657,7 +657,7 @@ static struct platform_device *mcf_devices[] __initdata = {
 #ifdef MCFSDHC_BASE
 	&mcf_esdhc,
 #endif
-#if IS_ENABLED(CONFIG_CAN_FLEXCAN)
+#ifdef MCFFLEXCAN_SIZE
 	&mcf_flexcan0,
 #endif
 };
arch/mips/cavium-octeon/octeon-platform.c +2 -1
index a994022e32c9..ce05c0dd3acd 100644
@@ -86,11 +86,12 @@ static void octeon2_usb_clocks_start(struct device *dev)
 					 "refclk-frequency", &clock_rate);
 		if (i) {
 			dev_err(dev, "No UCTL \"refclk-frequency\"\n");
+			of_node_put(uctl_node);
 			goto exit;
 		}
 		i = of_property_read_string(uctl_node,
 					    "refclk-type", &clock_type);
-
+		of_node_put(uctl_node);
 		if (!i && strcmp("crystal", clock_type) == 0)
 			is_crystal_clock = true;
 	}
arch/mips/mm/tlbex.c +2 -2
index 046d51a454af..3471a089bc05 100644
@@ -634,7 +634,7 @@ static __maybe_unused void build_convert_pte_to_entrylo(u32 **p,
 		return;
 	}
 
-	if (cpu_has_rixi && !!_PAGE_NO_EXEC) {
+	if (cpu_has_rixi && _PAGE_NO_EXEC != 0) {
 		if (fill_includes_sw_bits) {
 			UASM_i_ROTR(p, reg, reg, ilog2(_PAGE_GLOBAL));
 		} else {
@@ -2573,7 +2573,7 @@ static void check_pabits(void)
 	unsigned long entry;
 	unsigned pabits, fillbits;
 
-	if (!cpu_has_rixi || !_PAGE_NO_EXEC) {
+	if (!cpu_has_rixi || _PAGE_NO_EXEC == 0) {
 		/*
 		 * We'll only be making use of the fact that we can rotate bits
 		 * into the fill if the CPU supports RIXI, so don't bother
arch/nios2/include/asm/entry.h +2 -1
index cf37f55efbc2..bafb7b2ca59f 100644
@@ -50,7 +50,8 @@
 	stw	r13, PT_R13(sp)
 	stw	r14, PT_R14(sp)
 	stw	r15, PT_R15(sp)
-	stw	r2, PT_ORIG_R2(sp)
+	movi	r24, -1
+	stw	r24, PT_ORIG_R2(sp)
 	stw	r7, PT_ORIG_R7(sp)
 
 	stw	ra, PT_RA(sp)
arch/nios2/include/asm/ptrace.h +2 -0
index 642462144872..9da34c3022a2 100644
@@ -74,6 +74,8 @@ extern void show_regs(struct pt_regs *);
 	((struct pt_regs *)((unsigned long)current_thread_info() + THREAD_SIZE)\
 		- 1)
 
+#define force_successful_syscall_return() (current_pt_regs()->orig_r2 = -1)
+
 int do_syscall_trace_enter(void);
 void do_syscall_trace_exit(void);
 #endif /* __ASSEMBLY__ */
arch/nios2/kernel/entry.S +15 -7
index 0794cd7803df..99f0a65e6234 100644
@@ -185,6 +185,7 @@ ENTRY(handle_system_call)
 	ldw	r5, PT_R5(sp)
 
 local_restart:
+	stw	r2, PT_ORIG_R2(sp)
 	/* Check that the requested system call is within limits */
 	movui	r1, __NR_syscalls
 	bgeu	r2, r1, ret_invsyscall
@@ -192,7 +193,6 @@ local_restart:
 	movhi	r11, %hiadj(sys_call_table)
 	add	r1, r1, r11
 	ldw	r1, %lo(sys_call_table)(r1)
-	beq	r1, r0, ret_invsyscall
 
 	/* Check if we are being traced */
 	GET_THREAD_INFO r11
@@ -213,6 +213,9 @@ local_restart:
 translate_rc_and_ret:
 	movi	r1, 0
 	bge	r2, zero, 3f
+	ldw	r1, PT_ORIG_R2(sp)
+	addi	r1, r1, 1
+	beq	r1, zero, 3f
 	sub	r2, zero, r2
 	movi	r1, 1
 3:
@@ -255,9 +258,9 @@ traced_system_call:
 	ldw	r6, PT_R6(sp)
 	ldw	r7, PT_R7(sp)
 
-	/* Fetch the syscall function, we don't need to check the boundaries
-	 * since this is already done.
-	 */
+	/* Fetch the syscall function. */
+	movui	r1, __NR_syscalls
+	bgeu	r2, r1, traced_invsyscall
 	slli	r1, r2, 2
 	movhi	r11,%hiadj(sys_call_table)
 	add	r1, r1, r11
@@ -276,6 +279,9 @@ traced_system_call:
 translate_rc_and_ret2:
 	movi	r1, 0
 	bge	r2, zero, 4f
+	ldw	r1, PT_ORIG_R2(sp)
+	addi	r1, r1, 1
+	beq	r1, zero, 4f
 	sub	r2, zero, r2
 	movi	r1, 1
 4:
@@ -287,6 +293,11 @@ end_translate_rc_and_ret2:
 	RESTORE_SWITCH_STACK
 	br	ret_from_exception
 
+	/* If the syscall number was invalid return ENOSYS */
+traced_invsyscall:
+	movi	r2, -ENOSYS
+	br	translate_rc_and_ret2
+
 Luser_return:
 	GET_THREAD_INFO	r11			/* get thread_info pointer */
 	ldw	r10, TI_FLAGS(r11)		/* get thread_info->flags */
@@ -336,9 +347,6 @@ external_interrupt:
 	/* skip if no interrupt is pending */
 	beq	r12, r0, ret_from_interrupt
 
-	movi	r24, -1
-	stw	r24, PT_ORIG_R2(sp)
-
 	/*
 	 * Process an external hardware interrupt.
 	 */
arch/nios2/kernel/signal.c +2 -1
index 386e46443b60..68d626c4f1ba 100644
@@ -242,7 +242,7 @@ static int do_signal(struct pt_regs *regs)
 	/*
 	 * If we were from a system call, check for system call restarting...
 	 */
-	if (regs->orig_r2 >= 0) {
+	if (regs->orig_r2 >= 0 && regs->r1) {
 		continue_addr = regs->ea;
 		restart_addr = continue_addr - 4;
 		retval = regs->r2;
@@ -264,6 +264,7 @@ static int do_signal(struct pt_regs *regs)
 			regs->ea = restart_addr;
 			break;
 		}
+		regs->orig_r2 = -1;
 	}
 
 	if (get_signal(&ksig)) {
arch/nios2/kernel/syscall_table.c +1 -0
index 6176d63023c1..c2875a6dd5a4 100644
@@ -13,5 +13,6 @@
 #define __SYSCALL(nr, call) [nr] = (call),
 
 void *sys_call_table[__NR_syscalls] = {
+	[0 ... __NR_syscalls-1] = sys_ni_syscall,
 #include <asm/unistd.h>
 };
arch/openrisc/include/asm/io.h +1 -1
index c298061c70a7..8aa3e78181e9 100644
@@ -31,7 +31,7 @@
 void __iomem *ioremap(phys_addr_t offset, unsigned long size);
 
 #define iounmap iounmap
-extern void iounmap(void __iomem *addr);
+extern void iounmap(volatile void __iomem *addr);
 
 #include <asm-generic/io.h>
 
arch/openrisc/mm/ioremap.c +1 -1
index daae13a76743..8ec0dafecf25 100644
@@ -77,7 +77,7 @@ void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size)
 }
 EXPORT_SYMBOL(ioremap);
 
-void iounmap(void __iomem *addr)
+void iounmap(volatile void __iomem *addr)
 {
 	/* If the page is from the fixmap pool then we just clear out
 	 * the fixmap mapping.
arch/powerpc/Makefile +1 -25
index 72610e2d6176..2bb0fe9b2058 100644
@@ -17,23 +17,6 @@ HAS_BIARCH	:= $(call cc-option-yn, -m32)
 # Set default 32 bits cross compilers for vdso and boot wrapper
 CROSS32_COMPILE ?=
 
-ifeq ($(HAS_BIARCH),y)
-ifeq ($(CROSS32_COMPILE),)
-ifdef CONFIG_PPC32
-# These options will be overridden by any -mcpu option that the CPU
-# or platform code sets later on the command line, but they are needed
-# to set a sane 32-bit cpu target for the 64-bit cross compiler which
-# may default to the wrong ISA.
-KBUILD_CFLAGS		+= -mcpu=powerpc
-KBUILD_AFLAGS		+= -mcpu=powerpc
-endif
-endif
-endif
-
-ifdef CONFIG_PPC_BOOK3S_32
-KBUILD_CFLAGS		+= -mcpu=powerpc
-endif
-
 # If we're on a ppc/ppc64/ppc64le machine use that defconfig, otherwise just use
 # ppc64_defconfig because we have nothing better to go on.
 uname := $(shell uname -m)
@@ -185,6 +168,7 @@ endif
 endif
 
 CFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU))
+AFLAGS-$(CONFIG_TARGET_CPU_BOOL) += $(call cc-option,-mcpu=$(CONFIG_TARGET_CPU))
 
 # Altivec option not allowed with e500mc64 in GCC.
 ifdef CONFIG_ALTIVEC
@@ -195,14 +179,6 @@ endif
 CFLAGS-$(CONFIG_E5500_CPU) += $(E5500_CPU)
 CFLAGS-$(CONFIG_E6500_CPU) += $(call cc-option,-mcpu=e6500,$(E5500_CPU))
 
-ifdef CONFIG_PPC32
-ifdef CONFIG_PPC_E500MC
-CFLAGS-y += $(call cc-option,-mcpu=e500mc,-mcpu=powerpc)
-else
-CFLAGS-$(CONFIG_E500) += $(call cc-option,-mcpu=8540 -msoft-float,-mcpu=powerpc)
-endif
-endif
-
 asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
 
 KBUILD_CPPFLAGS	+= -I $(srctree)/arch/$(ARCH) $(asinstr)
arch/powerpc/kernel/head_book3s_32.S +2 -2
index 2e2a8211b17b..68e5c0a7e99d 100644
@@ -421,14 +421,14 @@ InstructionTLBMiss:
  */
 	/* Get PTE (linux-style) and check access */
 	mfspr	r3,SPRN_IMISS
-#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE)
+#ifdef CONFIG_MODULES
 	lis	r1, TASK_SIZE@h		/* check if kernel address */
 	cmplw	0,r1,r3
 #endif
 	mfspr	r2, SPRN_SDR1
 	li	r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC | _PAGE_USER
 	rlwinm	r2, r2, 28, 0xfffff000
-#if defined(CONFIG_MODULES) || defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_KFENCE)
+#ifdef CONFIG_MODULES
 	bgt-	112f
 	lis	r2, (swapper_pg_dir - PAGE_OFFSET)@ha	/* if kernel address, use */
 	li	r1,_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_EXEC
arch/powerpc/kernel/pci-common.c +10 -6
index fc5187c6559a..1aabb82b5f37 100644
@@ -67,10 +67,6 @@ void set_pci_dma_ops(const struct dma_map_ops *dma_ops)
 	pci_dma_ops = dma_ops;
 }
 
-/*
- * This function should run under locking protection, specifically
- * hose_spinlock.
- */
 static int get_phb_number(struct device_node *dn)
 {
 	int ret, phb_id = -1;
@@ -107,15 +103,20 @@ static int get_phb_number(struct device_node *dn)
 	if (!ret)
 		phb_id = (int)(prop & (MAX_PHBS - 1));
 
+	spin_lock(&hose_spinlock);
+
 	/* We need to be sure to not use the same PHB number twice. */
 	if ((phb_id >= 0) && !test_and_set_bit(phb_id, phb_bitmap))
-		return phb_id;
+		goto out_unlock;
 
 	/* If everything fails then fallback to dynamic PHB numbering. */
 	phb_id = find_first_zero_bit(phb_bitmap, MAX_PHBS);
 	BUG_ON(phb_id >= MAX_PHBS);
 	set_bit(phb_id, phb_bitmap);
 
+out_unlock:
+	spin_unlock(&hose_spinlock);
+
 	return phb_id;
 }
 
@@ -126,10 +127,13 @@ struct pci_controller *pcibios_alloc_controller(struct device_node *dev)
 	phb = zalloc_maybe_bootmem(sizeof(struct pci_controller), GFP_KERNEL);
 	if (phb == NULL)
 		return NULL;
-	spin_lock(&hose_spinlock);
+
 	phb->global_number = get_phb_number(dev);
+
+	spin_lock(&hose_spinlock);
 	list_add_tail(&phb->list_node, &hose_list);
 	spin_unlock(&hose_spinlock);
+
 	phb->dn = dev;
 	phb->is_dynamic = slab_is_available();
 #ifdef CONFIG_PPC64
arch/powerpc/kernel/prom.c +7 -0
index 2e67588f6f6e..86ffbabd26c6 100644
@@ -751,6 +751,13 @@ void __init early_init_devtree(void *params)
 	of_scan_flat_dt(early_init_dt_scan_root, NULL);
 	of_scan_flat_dt(early_init_dt_scan_memory_ppc, NULL);
 
+	/*
+	 * As generic code authors expect to be able to use static keys
+	 * in early_param() handlers, we initialize the static keys just
+	 * before parsing early params (it's fine to call jump_label_init()
+	 * more than once).
+	 */
+	jump_label_init();
 	parse_early_param();
 
 	/* make sure we've parsed cmdline for mem= before this */
arch/powerpc/kvm/book3s_hv_p9_entry.c +2 -11
index 961b3d70483c..a0e0c28408c0 100644
@@ -7,15 +7,6 @@
 #include <asm/ppc-opcode.h>
 
 #ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
-static void __start_timing(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator *next)
-{
-	struct kvmppc_vcore *vc = vcpu->arch.vcore;
-	u64 tb = mftb() - vc->tb_offset_applied;
-
-	vcpu->arch.cur_activity = next;
-	vcpu->arch.cur_tb_start = tb;
-}
-
 static void __accumulate_time(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator *next)
 {
 	struct kvmppc_vcore *vc = vcpu->arch.vcore;
@@ -47,8 +38,8 @@ static void __accumulate_time(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator
 	curr->seqcount = seq + 2;
 }
 
-#define start_timing(vcpu, next) __start_timing(vcpu, next)
-#define end_timing(vcpu) __start_timing(vcpu, NULL)
+#define start_timing(vcpu, next) __accumulate_time(vcpu, next)
+#define end_timing(vcpu) __accumulate_time(vcpu, NULL)
 #define accumulate_time(vcpu, next) __accumulate_time(vcpu, next)
 #else
 #define start_timing(vcpu, next) do {} while (0)
arch/powerpc/mm/book3s32/mmu.c +4 -6
index 203735caf691..bfca0afe9112 100644
@@ -160,7 +160,10 @@ unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
 {
 	unsigned long done;
 	unsigned long border = (unsigned long)__init_begin - PAGE_OFFSET;
+	unsigned long size;
 
+	size = roundup_pow_of_two((unsigned long)_einittext - PAGE_OFFSET);
+	setibat(0, PAGE_OFFSET, 0, size, PAGE_KERNEL_X);
 
 	if (debug_pagealloc_enabled_or_kfence() || __map_without_bats) {
 		pr_debug_once("Read-Write memory mapped without BATs\n");
@@ -246,10 +249,9 @@ void mmu_mark_rodata_ro(void)
 }
 
 /*
- * Set up one of the I/D BAT (block address translation) register pairs.
+ * Set up one of the D BAT (block address translation) register pairs.
  * The parameters are not checked; in particular size must be a power
  * of 2 between 128k and 256M.
- * On 603+, only set IBAT when _PAGE_EXEC is set
  */
 void __init setbat(int index, unsigned long virt, phys_addr_t phys,
 		   unsigned int size, pgprot_t prot)
@@ -285,10 +287,6 @@ void __init setbat(int index, unsigned long virt, phys_addr_t phys,
 		/* G bit must be zero in IBATs */
 		flags &= ~_PAGE_EXEC;
 	}
-	if (flags & _PAGE_EXEC)
-		bat[0] = bat[1];
-	else
-		bat[0].batu = bat[0].batl = 0;
 
 	bat_addrs[index].start = virt;
 	bat_addrs[index].limit = virt + ((bl + 1) << 17) - 1;
arch/powerpc/platforms/Kconfig.cputype +18 -3
index 81f8c9634832..1b1e67ff9d21 100644
@@ -137,9 +137,9 @@ config GENERIC_CPU
 	depends on PPC64 && CPU_LITTLE_ENDIAN
 	select ARCH_HAS_FAST_MULTIPLIER
 
-config GENERIC_CPU
+config POWERPC_CPU
 	bool "Generic 32 bits powerpc"
-	depends on PPC32 && !PPC_8xx
+	depends on PPC32 && !PPC_8xx && !PPC_85xx
 
 config CELL_CPU
 	bool "Cell Broadband Engine"
@@ -193,11 +193,23 @@ config G4_CPU
 	depends on PPC_BOOK3S_32
 	select ALTIVEC
 
+config E500_CPU
+	bool "e500 (8540)"
+	depends on PPC_85xx && !PPC_E500MC
+
+config E500MC_CPU
+	bool "e500mc"
+	depends on PPC_85xx && PPC_E500MC
+
+config TOOLCHAIN_DEFAULT_CPU
+	bool "Rely on the toolchain's implicit default CPU"
+	depends on PPC32
+
 endchoice
 
 config TARGET_CPU_BOOL
 	bool
-	default !GENERIC_CPU
+	default !GENERIC_CPU && !TOOLCHAIN_DEFAULT_CPU
 
 config TARGET_CPU
 	string
@@ -212,6 +224,9 @@ config TARGET_CPU
 	default "e300c2" if E300C2_CPU
 	default "e300c3" if E300C3_CPU
 	default "G4" if G4_CPU
+	default "8540" if E500_CPU
+	default "e500mc" if E500MC_CPU
+	default "powerpc" if POWERPC_CPU
 
 config PPC_BOOK3S
 	def_bool y
arch/powerpc/platforms/powernv/pci-ioda.c +2 -0
index 3dd35c327d1c..624822a81019 100644
@@ -1618,6 +1618,7 @@ static void pnv_pci_ioda1_setup_dma_pe(struct pnv_phb *phb,
 	tbl->it_ops = &pnv_ioda1_iommu_ops;
 	pe->table_group.tce32_start = tbl->it_offset << tbl->it_page_shift;
 	pe->table_group.tce32_size = tbl->it_size << tbl->it_page_shift;
+	tbl->it_index = (phb->hose->global_number << 16) | pe->pe_number;
 	if (!iommu_init_table(tbl, phb->hose->node, 0, 0))
 		panic("Failed to initialize iommu table");
 
@@ -1788,6 +1789,7 @@ static long pnv_pci_ioda2_setup_default_config(struct pnv_ioda_pe *pe)
 		res_end = min(window_size, SZ_4G) >> tbl->it_page_shift;
 	}
 
+	tbl->it_index = (pe->phb->hose->global_number << 16) | pe->pe_number;
 	if (iommu_init_table(tbl, pe->phb->hose->node, res_start, res_end))
 		rc = pnv_pci_ioda2_set_window(&pe->table_group, 0, tbl);
 	else
arch/riscv/boot/dts/canaan/k210.dtsi +12 -0
index 780416d489aa..fa9162e3afa3 100644
@@ -65,6 +65,18 @@ cpu1_intc: interrupt-controller {
 				compatible = "riscv,cpu-intc";
 			};
 		};
+
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&cpu0>;
+				};
+
+				core1 {
+					cpu = <&cpu1>;
+				};
+			};
+		};
 	};
 
 	sram: memory@80000000 {
arch/riscv/boot/dts/sifive/fu740-c000.dtsi +24 -0
index abbb960f90a0..454079a69ab4 100644
@@ -134,6 +134,30 @@ cpu4_intc: interrupt-controller {
 				interrupt-controller;
 			};
 		};
+
+		cpu-map {
+			cluster0 {
+				core0 {
+					cpu = <&cpu0>;
+				};
+
+				core1 {
+					cpu = <&cpu1>;
+				};
+
+				core2 {
+					cpu = <&cpu2>;
+				};
+
+				core3 {
+					cpu = <&cpu3>;
+				};
+
+				core4 {
+					cpu = <&cpu4>;
+				};
+			};
+		};
 	};
 	soc {
 		#address-cells = <2>;
arch/riscv/kernel/sys_riscv.c +2 -3
index 12f8a7fce78b..8a7880b9c433 100644
@@ -18,9 +18,8 @@ static long riscv_sys_mmap(unsigned long addr, unsigned long len,
 	if (unlikely(offset & (~PAGE_MASK >> page_shift_offset)))
 		return -EINVAL;
 
-	if ((prot & PROT_WRITE) && (prot & PROT_EXEC))
-		if (unlikely(!(prot & PROT_READ)))
-			return -EINVAL;
+	if (unlikely((prot & PROT_WRITE) && !(prot & PROT_READ)))
+		return -EINVAL;
 
 	return ksys_mmap_pgoff(addr, len, prot, flags, fd,
 			       offset >> (PAGE_SHIFT - page_shift_offset));
arch/riscv/kernel/traps.c +4 -0
index 0daaa3e4630d..b938ffe129d6 100644
@@ -16,6 +16,7 @@
 #include <linux/mm.h>
 #include <linux/module.h>
 #include <linux/irq.h>
+#include <linux/kexec.h>
 
 #include <asm/asm-prototypes.h>
 #include <asm/bug.h>
@@ -44,6 +45,9 @@ void die(struct pt_regs *regs, const char *str)
 
 	ret = notify_die(DIE_OOPS, str, regs, 0, regs->cause, SIGSEGV);
 
+	if (regs && kexec_should_crash(current))
+		crash_kexec(regs);
+
 	bust_spinlocks(0);
 	add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
 	spin_unlock_irq(&die_lock);
arch/um/os-Linux/skas/process.c +16 -1
index 87d3129e7362..0df2ebcc97c0 100644
@@ -5,6 +5,7 @@
  */
 
 #include <stdlib.h>
+#include <stdbool.h>
 #include <unistd.h>
 #include <sched.h>
 #include <errno.h>
@@ -707,10 +708,24 @@ void halt_skas(void)
 	UML_LONGJMP(&initial_jmpbuf, INIT_JMP_HALT);
 }
 
+static bool noreboot;
+
+static int __init noreboot_cmd_param(char *str, int *add)
+{
+	noreboot = true;
+	return 0;
+}
+
+__uml_setup("noreboot", noreboot_cmd_param,
+"noreboot\n"
+"    Rather than rebooting, exit always, akin to QEMU's -no-reboot option.\n"
+"    This is useful if you're using CONFIG_PANIC_TIMEOUT in order to catch\n"
+"    crashes in CI\n");
+
 void reboot_skas(void)
 {
 	block_signals_trace();
-	UML_LONGJMP(&initial_jmpbuf, INIT_JMP_REBOOT);
+	UML_LONGJMP(&initial_jmpbuf, noreboot ? INIT_JMP_HALT : INIT_JMP_REBOOT);
 }
 
 void __switch_mm(struct mm_id *mm_idp)
arch/x86/kernel/kprobes/core.c +1 -1
index 7a7f671c60b4..6872f3834668 100644
@@ -495,7 +495,7 @@ static void kprobe_emulate_jcc(struct kprobe *p, struct pt_regs *regs)
 		match = ((regs->flags & X86_EFLAGS_SF) >> X86_EFLAGS_SF_BIT) ^
 			((regs->flags & X86_EFLAGS_OF) >> X86_EFLAGS_OF_BIT);
 		if (p->ainsn.jcc.type >= 0xe)
-			match = match && (regs->flags & X86_EFLAGS_ZF);
+			match = match || (regs->flags & X86_EFLAGS_ZF);
 	}
 	__kprobe_emulate_jmp(p, regs, (match && !invert) || (!match && invert));
 }
arch/x86/mm/init_64.c +1 -1
index b01f5d2caad0..200ad5ceeb43 100644
@@ -646,7 +646,7 @@ phys_pud_init(pud_t *pud_page, unsigned long paddr, unsigned long paddr_end,
 			pages++;
 			spin_lock(&init_mm.page_table_lock);
 
-			prot = __pgprot(pgprot_val(prot) | __PAGE_KERNEL_LARGE);
+			prot = __pgprot(pgprot_val(prot) | _PAGE_PSE);
 
 			set_pte_init((pte_t *)pud,
 				     pfn_pte((paddr & PUD_MASK) >> PAGE_SHIFT,
drivers/acpi/pci_mcfg.c +3 -0
index 53cab975f612..63b98eae5e75 100644
@@ -41,6 +41,8 @@ struct mcfg_fixup {
 static struct mcfg_fixup mcfg_quirks[] = {
 /*	{ OEM_ID, OEM_TABLE_ID, REV, SEGMENT, BUS_RANGE, ops, cfgres }, */
 
+#ifdef CONFIG_ARM64
+
 #define AL_ECAM(table_id, rev, seg, ops) \
 	{ "AMAZON", table_id, rev, seg, MCFG_BUS_ANY, ops }
 
@@ -169,6 +171,7 @@ static struct mcfg_fixup mcfg_quirks[] = {
 	ALTRA_ECAM_QUIRK(1, 13),
 	ALTRA_ECAM_QUIRK(1, 14),
 	ALTRA_ECAM_QUIRK(1, 15),
+#endif /* ARM64 */
 };
 
 static char mcfg_oem_id[ACPI_OEM_ID_SIZE];
drivers/acpi/property.c +4 -4
index b86d3b869a58..488915328646 100644
@@ -155,10 +155,10 @@ static bool acpi_nondev_subnode_ok(acpi_handle scope,
 	return acpi_nondev_subnode_data_ok(handle, link, list, parent);
 }
 
-static int acpi_add_nondev_subnodes(acpi_handle scope,
-				    const union acpi_object *links,
-				    struct list_head *list,
-				    struct fwnode_handle *parent)
+static bool acpi_add_nondev_subnodes(acpi_handle scope,
+				     const union acpi_object *links,
+				     struct list_head *list,
+				     struct fwnode_handle *parent)
 {
 	bool ret = false;
 	int i;
drivers/ata/libata-eh.c +1 -0
index 1d4a6f1e88cd..7aea631edb27 100644
@@ -2130,6 +2130,7 @@ const char *ata_get_cmd_descript(u8 command)
 		{ ATA_CMD_WRITE_QUEUED_FUA_EXT, "WRITE DMA QUEUED FUA EXT" },
 		{ ATA_CMD_FPDMA_READ,		"READ FPDMA QUEUED" },
 		{ ATA_CMD_FPDMA_WRITE,		"WRITE FPDMA QUEUED" },
+		{ ATA_CMD_NCQ_NON_DATA,		"NCQ NON-DATA" },
 		{ ATA_CMD_FPDMA_SEND,		"SEND FPDMA QUEUED" },
 		{ ATA_CMD_FPDMA_RECV,		"RECEIVE FPDMA QUEUED" },
 		{ ATA_CMD_PIO_READ,		"READ SECTOR(S)" },
drivers/atm/idt77252.c +1 -0
index 81ce81a75fc6..681cb3786794 100644
@@ -3752,6 +3752,7 @@ static void __exit idt77252_exit(void)
 		card = idt77252_chain;
 		dev = card->atmdev;
 		idt77252_chain = card->next;
+		del_timer_sync(&card->tst_timer);
 
 		if (dev->phy->stop)
 			dev->phy->stop(dev);
drivers/block/zram/zcomp.c +5 -6
index 052aa3f65514..0916de952e09 100644
@@ -63,12 +63,6 @@ static int zcomp_strm_init(struct zcomp_strm *zstrm, struct zcomp *comp)
 
 bool zcomp_available_algorithm(const char *comp)
 {
-	int i;
-
-	i = sysfs_match_string(backends, comp);
-	if (i >= 0)
-		return true;
-
 	/*
 	 * Crypto does not ignore a trailing new line symbol,
 	 * so make sure you don't supply a string containing
@@ -217,6 +211,11 @@ struct zcomp *zcomp_create(const char *compress)
 	struct zcomp *comp;
 	int error;
 
+	/*
+	 * Crypto API will execute /sbin/modprobe if the compression module
+	 * is not loaded yet. We must do it here, otherwise we are about to
+	 * call /sbin/modprobe under CPU hot-plug lock.
+	 */
 	if (!zcomp_available_algorithm(compress))
 		return ERR_PTR(-EINVAL);
 
drivers/clk/qcom/clk-alpha-pll.c +1 -1
index 8f65b9bdafce..5e44ceb730ad 100644
@@ -1420,7 +1420,7 @@ const struct clk_ops clk_alpha_pll_postdiv_fabia_ops = {
 EXPORT_SYMBOL_GPL(clk_alpha_pll_postdiv_fabia_ops);
 
 /**
- * clk_lucid_pll_configure - configure the lucid pll
+ * clk_trion_pll_configure - configure the trion pll
  *
  * @pll: clk alpha pll
  * @regmap: register map
drivers/clk/qcom/gcc-ipq8074.c +1 -0
index 2c2ecfc5e61f..d6d5defb82c9 100644
@@ -662,6 +662,7 @@ static struct clk_branch gcc_sleep_clk_src = {
 			},
 			.num_parents = 1,
 			.ops = &clk_branch2_ops,
+			.flags = CLK_IS_CRITICAL,
 		},
 	},
 };
drivers/clk/ti/clk-44xx.c +105 -105

339 lines not on this page · raw message

drivers/clk/ti/clk-54xx.c +80 -80

249 lines not on this page · raw message

drivers/clk/ti/clkctrl.c +0 -4
index 864c484bde1b..08a85c559f79 100644
@@ -511,10 +511,6 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
 	char *c;
 	u16 soc_mask = 0;
 
-	if (!(ti_clk_get_features()->flags & TI_CLK_CLKCTRL_COMPAT) &&
-	    of_node_name_eq(node, "clk"))
-		ti_clk_features.flags |= TI_CLK_CLKCTRL_COMPAT;
-
 	addrp = of_get_address(node, 0, NULL, NULL);
 	addr = (u32)of_translate_address(node, addrp);
 
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c +11 -0
index 35993ab92154..48de8d2b32f2 100644
@@ -944,6 +944,11 @@ static int dw_axi_dma_chan_slave_config(struct dma_chan *dchan,
 static void axi_chan_dump_lli(struct axi_dma_chan *chan,
 			      struct axi_dma_hw_desc *desc)
 {
+	if (!desc->lli) {
+		dev_err(dchan2dev(&chan->vc.chan), "NULL LLI\n");
+		return;
+	}
+
 	dev_err(dchan2dev(&chan->vc.chan),
 		"SAR: 0x%llx DAR: 0x%llx LLP: 0x%llx BTS 0x%x CTL: 0x%x:%08x",
 		le64_to_cpu(desc->lli->sar),
@@ -1011,6 +1016,11 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)
 
 	/* The completed descriptor currently is in the head of vc list */
 	vd = vchan_next_desc(&chan->vc);
+	if (!vd) {
+		dev_err(chan2dev(chan), "BUG: %s, IRQ with no descriptors\n",
+			axi_chan_name(chan));
+		goto out;
+	}
 
 	if (chan->cyclic) {
 		desc = vd_to_axi_desc(vd);
@@ -1040,6 +1050,7 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)
 		axi_chan_start_first_queued(chan);
 	}
 
+out:
 	spin_unlock_irqrestore(&chan->vc.lock, flags);
 }
 
drivers/dma/sprd-dma.c +1 -4
index 4357d2395e6b..60115d8d4083 100644
@@ -1236,11 +1236,8 @@ static int sprd_dma_remove(struct platform_device *pdev)
 {
 	struct sprd_dma_dev *sdev = platform_get_drvdata(pdev);
 	struct sprd_dma_chn *c, *cn;
-	int ret;
 
-	ret = pm_runtime_get_sync(&pdev->dev);
-	if (ret < 0)
-		return ret;
+	pm_runtime_get_sync(&pdev->dev);
 
 	/* explicitly free the irq */
 	if (sdev->irq > 0)
drivers/gpu/drm/amd/display/dc/dcn303/dcn303_resource.c +1 -1
index 589ddab61c2a..7aad0340f794 100644
@@ -500,7 +500,7 @@ static struct stream_encoder *dcn303_stream_encoder_create(enum engine_id eng_id
 	int afmt_inst;
 
 	/* Mapping of VPG, AFMT, DME register blocks to DIO block instance */
-	if (eng_id <= ENGINE_ID_DIGE) {
+	if (eng_id <= ENGINE_ID_DIGB) {
 		vpg_inst = eng_id;
 		afmt_inst = eng_id;
 	} else
drivers/gpu/drm/imx/dcss/dcss-kms.c +0 -2
index 9b84df34a6a1..8cf3352d8858 100644
@@ -142,8 +142,6 @@ struct dcss_kms_dev *dcss_kms_attach(struct dcss_dev *dcss)
 
 	drm_kms_helper_poll_init(drm);
 
-	drm_bridge_connector_enable_hpd(kms->connector);
-
 	ret = drm_dev_register(drm, 0);
 	if (ret)
 		goto cleanup_crtc;
drivers/gpu/drm/meson/meson_drv.c +4 -1
index c98525d60df5..a56607501d36 100644
@@ -114,8 +114,11 @@ static bool meson_vpu_has_available_connectors(struct device *dev)
 	for_each_endpoint_of_node(dev->of_node, ep) {
 		/* If the endpoint node exists, consider it enabled */
 		remote = of_graph_get_remote_port(ep);
-		if (remote)
+		if (remote) {
+			of_node_put(remote);
+			of_node_put(ep);
 			return true;
+		}
 	}
 
 	return false;
drivers/gpu/drm/meson/meson_viu.c +11 -11
index 259f3e6bec90..bb7e109534de 100644
@@ -469,17 +469,17 @@ void meson_viu_init(struct meson_drm *priv)
 			priv->io_base + _REG(VD2_IF0_LUMA_FIFO_SIZE));
 
 	if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) {
-		writel_relaxed(VIU_OSD_BLEND_REORDER(0, 1) |
-			       VIU_OSD_BLEND_REORDER(1, 0) |
-			       VIU_OSD_BLEND_REORDER(2, 0) |
-			       VIU_OSD_BLEND_REORDER(3, 0) |
-			       VIU_OSD_BLEND_DIN_EN(1) |
-			       VIU_OSD_BLEND1_DIN3_BYPASS_TO_DOUT1 |
-			       VIU_OSD_BLEND1_DOUT_BYPASS_TO_BLEND2 |
-			       VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 |
-			       VIU_OSD_BLEND_BLEN2_PREMULT_EN(1) |
-			       VIU_OSD_BLEND_HOLD_LINES(4),
-			       priv->io_base + _REG(VIU_OSD_BLEND_CTRL));
+		u32 val = (u32)VIU_OSD_BLEND_REORDER(0, 1) |
+			  (u32)VIU_OSD_BLEND_REORDER(1, 0) |
+			  (u32)VIU_OSD_BLEND_REORDER(2, 0) |
+			  (u32)VIU_OSD_BLEND_REORDER(3, 0) |
+			  (u32)VIU_OSD_BLEND_DIN_EN(1) |
+			  (u32)VIU_OSD_BLEND1_DIN3_BYPASS_TO_DOUT1 |
+			  (u32)VIU_OSD_BLEND1_DOUT_BYPASS_TO_BLEND2 |
+			  (u32)VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 |
+			  (u32)VIU_OSD_BLEND_BLEN2_PREMULT_EN(1) |
+			  (u32)VIU_OSD_BLEND_HOLD_LINES(4);
+		writel_relaxed(val, priv->io_base + _REG(VIU_OSD_BLEND_CTRL));
 
 		writel_relaxed(OSD_BLEND_PATH_SEL_ENABLE,
 			       priv->io_base + _REG(OSD1_BLEND_SRC_CTRL));
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +22 -0
index 88d262ba648c..76156833a832 100644
@@ -2605,6 +2605,27 @@ nv172_chipset = {
 	.fifo     = { 0x00000001, ga102_fifo_new },
 };
 
+static const struct nvkm_device_chip
+nv173_chipset = {
+	.name = "GA103",
+	.bar      = { 0x00000001, tu102_bar_new },
+	.bios     = { 0x00000001, nvkm_bios_new },
+	.devinit  = { 0x00000001, ga100_devinit_new },
+	.fb       = { 0x00000001, ga102_fb_new },
+	.gpio     = { 0x00000001, ga102_gpio_new },
+	.i2c      = { 0x00000001, gm200_i2c_new },
+	.imem     = { 0x00000001, nv50_instmem_new },
+	.mc       = { 0x00000001, ga100_mc_new },
+	.mmu      = { 0x00000001, tu102_mmu_new },
+	.pci      = { 0x00000001, gp100_pci_new },
+	.privring = { 0x00000001, gm200_privring_new },
+	.timer    = { 0x00000001, gk20a_timer_new },
+	.top      = { 0x00000001, ga100_top_new },
+	.disp     = { 0x00000001, ga102_disp_new },
+	.dma      = { 0x00000001, gv100_dma_new },
+	.fifo     = { 0x00000001, ga102_fifo_new },
+};
+
 static const struct nvkm_device_chip
 nv174_chipset = {
 	.name = "GA104",
@@ -3092,6 +3113,7 @@ nvkm_device_ctor(const struct nvkm_device_func *func,
 		case 0x167: device->chip = &nv167_chipset; break;
 		case 0x168: device->chip = &nv168_chipset; break;
 		case 0x172: device->chip = &nv172_chipset; break;
+		case 0x173: device->chip = &nv173_chipset; break;
 		case 0x174: device->chip = &nv174_chipset; break;
 		case 0x176: device->chip = &nv176_chipset; break;
 		case 0x177: device->chip = &nv177_chipset; break;
drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c +5 -5
index 4f5efcace68e..51edb4244af7 100644
@@ -531,7 +531,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 				    struct drm_display_mode *mode)
 {
 	struct mipi_dsi_device *device = dsi->device;
-	unsigned int Bpp = mipi_dsi_pixel_format_to_bpp(device->format) / 8;
+	int Bpp = mipi_dsi_pixel_format_to_bpp(device->format) / 8;
 	u16 hbp = 0, hfp = 0, hsa = 0, hblk = 0, vblk = 0;
 	u32 basic_ctl = 0;
 	size_t bytes;
@@ -555,7 +555,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 * (4 bytes). Its minimal size is therefore 10 bytes
 		 */
 #define HSA_PACKET_OVERHEAD	10
-		hsa = max((unsigned int)HSA_PACKET_OVERHEAD,
+		hsa = max(HSA_PACKET_OVERHEAD,
 			  (mode->hsync_end - mode->hsync_start) * Bpp - HSA_PACKET_OVERHEAD);
 
 		/*
@@ -564,7 +564,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 * therefore 6 bytes
 		 */
 #define HBP_PACKET_OVERHEAD	6
-		hbp = max((unsigned int)HBP_PACKET_OVERHEAD,
+		hbp = max(HBP_PACKET_OVERHEAD,
 			  (mode->htotal - mode->hsync_end) * Bpp - HBP_PACKET_OVERHEAD);
 
 		/*
@@ -574,7 +574,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 * 16 bytes
 		 */
 #define HFP_PACKET_OVERHEAD	16
-		hfp = max((unsigned int)HFP_PACKET_OVERHEAD,
+		hfp = max(HFP_PACKET_OVERHEAD,
 			  (mode->hsync_start - mode->hdisplay) * Bpp - HFP_PACKET_OVERHEAD);
 
 		/*
@@ -583,7 +583,7 @@ static void sun6i_dsi_setup_timings(struct sun6i_dsi *dsi,
 		 * bytes). Its minimal size is therefore 10 bytes.
 		 */
 #define HBLK_PACKET_OVERHEAD	10
-		hblk = max((unsigned int)HBLK_PACKET_OVERHEAD,
+		hblk = max(HBLK_PACKET_OVERHEAD,
 			   (mode->htotal - (mode->hsync_end - mode->hsync_start)) * Bpp -
 			   HBLK_PACKET_OVERHEAD);
 
drivers/gpu/drm/ttm/ttm_bo.c +1 -1
index 900edaf5d68e..33e78f56123e 100644
@@ -987,7 +987,7 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
 	/*
 	 * We might need to add a TTM.
 	 */
-	if (bo->resource->mem_type == TTM_PL_SYSTEM) {
+	if (!bo->resource || bo->resource->mem_type == TTM_PL_SYSTEM) {
 		ret = ttm_tt_create(bo, true);
 		if (ret)
 			return ret;
drivers/hid/hid-multitouch.c +12 -1
index f382444dc2db..a14c48de4446 100644
@@ -194,6 +194,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
 #define MT_CLS_WIN_8_FORCE_MULTI_INPUT		0x0015
 #define MT_CLS_WIN_8_DISABLE_WAKEUP		0x0016
 #define MT_CLS_WIN_8_NO_STICKY_FINGERS		0x0017
+#define MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU	0x0018
 
 /* vendor specific classes */
 #define MT_CLS_3M				0x0101
@@ -286,6 +287,15 @@ static const struct mt_class mt_classes[] = {
 			MT_QUIRK_WIN8_PTP_BUTTONS |
 			MT_QUIRK_FORCE_MULTI_INPUT,
 		.export_all_inputs = true },
+	{ .name = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,
+		.quirks = MT_QUIRK_IGNORE_DUPLICATES |
+			MT_QUIRK_HOVERING |
+			MT_QUIRK_CONTACT_CNT_ACCURATE |
+			MT_QUIRK_STICKY_FINGERS |
+			MT_QUIRK_WIN8_PTP_BUTTONS |
+			MT_QUIRK_FORCE_MULTI_INPUT |
+			MT_QUIRK_NOT_SEEN_MEANS_UP,
+		.export_all_inputs = true },
 	{ .name = MT_CLS_WIN_8_DISABLE_WAKEUP,
 		.quirks = MT_QUIRK_ALWAYS_VALID |
 			MT_QUIRK_IGNORE_DUPLICATES |
@@ -783,6 +793,7 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
 		case HID_DG_CONFIDENCE:
 			if ((cls->name == MT_CLS_WIN_8 ||
 			     cls->name == MT_CLS_WIN_8_FORCE_MULTI_INPUT ||
+			     cls->name == MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU ||
 			     cls->name == MT_CLS_WIN_8_DISABLE_WAKEUP) &&
 				(field->application == HID_DG_TOUCHPAD ||
 				 field->application == HID_DG_TOUCHSCREEN))
@@ -2033,7 +2044,7 @@ static const struct hid_device_id mt_devices[] = {
 			   USB_DEVICE_ID_LENOVO_X1_TAB3) },
 
 	/* Lenovo X12 TAB Gen 1 */
-	{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT,
+	{ .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,
 		HID_DEVICE(BUS_USB, HID_GROUP_MULTITOUCH_WIN_8,
 			   USB_VENDOR_ID_LENOVO,
 			   USB_DEVICE_ID_LENOVO_X12_TAB) },
drivers/hwtracing/coresight/coresight-etm4x.h +2 -1
index e5b79bdb9851..794b29639035 100644
@@ -7,6 +7,7 @@
 #define _CORESIGHT_CORESIGHT_ETM_H
 
 #include <asm/local.h>
+#include <linux/const.h>
 #include <linux/spinlock.h>
 #include <linux/types.h>
 #include "coresight-priv.h"
@@ -417,7 +418,7 @@
 	({									\
 		u64 __val;							\
 										\
-		if (__builtin_constant_p((offset)))				\
+		if (__is_constexpr((offset)))					\
 			__val = read_etm4x_sysreg_const_offset((offset));	\
 		else								\
 			__val = etm4x_sysreg_read((offset), true, (_64bit));	\
drivers/i2c/busses/i2c-imx.c +11 -9
index 3576b63a6c03..3f40995c0ca9 100644
@@ -1487,9 +1487,7 @@ static int i2c_imx_remove(struct platform_device *pdev)
 	struct imx_i2c_struct *i2c_imx = platform_get_drvdata(pdev);
 	int irq, ret;
 
-	ret = pm_runtime_resume_and_get(&pdev->dev);
-	if (ret < 0)
-		return ret;
+	ret = pm_runtime_get_sync(&pdev->dev);
 
 	/* remove adapter */
 	dev_dbg(&i2c_imx->adapter.dev, "adapter removed\n");
@@ -1498,17 +1496,21 @@ static int i2c_imx_remove(struct platform_device *pdev)
 	if (i2c_imx->dma)
 		i2c_imx_dma_free(i2c_imx);
 
-	/* setup chip registers to defaults */
-	imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IADR);
-	imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IFDR);
-	imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2CR);
-	imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR);
+	if (ret == 0) {
+		/* setup chip registers to defaults */
+		imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IADR);
+		imx_i2c_write_reg(0, i2c_imx, IMX_I2C_IFDR);
+		imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2CR);
+		imx_i2c_write_reg(0, i2c_imx, IMX_I2C_I2SR);
+		clk_disable(i2c_imx->clk);
+	}
 
 	clk_notifier_unregister(i2c_imx->clk, &i2c_imx->clk_change_nb);
 	irq = platform_get_irq(pdev, 0);
 	if (irq >= 0)
 		free_irq(irq, i2c_imx);
-	clk_disable_unprepare(i2c_imx->clk);
+
+	clk_unprepare(i2c_imx->clk);
 
 	pm_runtime_put_noidle(&pdev->dev);
 	pm_runtime_disable(&pdev->dev);
drivers/infiniband/sw/rxe/rxe_param.h +6 -0
index b5a70cbe94aa..872389870106 100644
@@ -103,6 +103,12 @@ enum rxe_device_param {
 	RXE_INFLIGHT_SKBS_PER_QP_HIGH	= 64,
 	RXE_INFLIGHT_SKBS_PER_QP_LOW	= 16,
 
+	/* Max number of interations of each tasklet
+	 * before yielding the cpu to let other
+	 * work make progress
+	 */
+	RXE_MAX_ITERATIONS		= 1024,
+
 	/* Delay before calling arbiter timer */
 	RXE_NSEC_ARB_TIMER_DELAY	= 200,
 
drivers/infiniband/sw/rxe/rxe_task.c +12 -4
index 6951fdcb31bf..568cf56c236b 100644
@@ -8,7 +8,7 @@
 #include <linux/interrupt.h>
 #include <linux/hardirq.h>
 
-#include "rxe_task.h"
+#include "rxe.h"
 
 int __rxe_do_task(struct rxe_task *task)
 
@@ -34,6 +34,7 @@ void rxe_do_task(struct tasklet_struct *t)
 	int ret;
 	unsigned long flags;
 	struct rxe_task *task = from_tasklet(task, t, tasklet);
+	unsigned int iterations = RXE_MAX_ITERATIONS;
 
 	spin_lock_irqsave(&task->state_lock, flags);
 	switch (task->state) {
@@ -62,13 +63,20 @@ void rxe_do_task(struct tasklet_struct *t)
 		spin_lock_irqsave(&task->state_lock, flags);
 		switch (task->state) {
 		case TASK_STATE_BUSY:
-			if (ret)
+			if (ret) {
 				task->state = TASK_STATE_START;
-			else
+			} else if (iterations--) {
 				cont = 1;
+			} else {
+				/* reschedule the tasklet and exit
+				 * the loop to give up the cpu
+				 */
+				tasklet_schedule(&task->tasklet);
+				task->state = TASK_STATE_START;
+			}
 			break;
 
-		/* soneone tried to run the task since the last time we called
+		/* someone tried to run the task since the last time we called
 		 * func, so we will call one more time regardless of the
 		 * return value
 		 */
drivers/input/touchscreen/exc3000.c +4 -3
index cbe0dd412912..4b7eee01c6aa 100644
@@ -220,6 +220,7 @@ static int exc3000_vendor_data_request(struct exc3000_data *data, u8 *request,
 {
 	u8 buf[EXC3000_LEN_VENDOR_REQUEST] = { 0x67, 0x00, 0x42, 0x00, 0x03 };
 	int ret;
+	unsigned long time_left;
 
 	mutex_lock(&data->query_lock);
 
@@ -233,9 +234,9 @@ static int exc3000_vendor_data_request(struct exc3000_data *data, u8 *request,
 		goto out_unlock;
 
 	if (response) {
-		ret = wait_for_completion_timeout(&data->wait_event,
-						  timeout * HZ);
-		if (ret <= 0) {
+		time_left = wait_for_completion_timeout(&data->wait_event,
+							timeout * HZ);
+		if (time_left == 0) {
 			ret = -ETIMEDOUT;
 			goto out_unlock;
 		}
drivers/iommu/io-pgtable-arm-v7s.c +56 -19

142 lines not on this page · raw message

drivers/irqchip/irq-tegra.c +5 -5
index e1f771c72fc4..ad3e2c1b3c87 100644
@@ -148,10 +148,10 @@ static int tegra_ictlr_suspend(void)
 		lic->cop_iep[i] = readl_relaxed(ictlr + ICTLR_COP_IEP_CLASS);
 
 		/* Disable COP interrupts */
-		writel_relaxed(~0ul, ictlr + ICTLR_COP_IER_CLR);
+		writel_relaxed(GENMASK(31, 0), ictlr + ICTLR_COP_IER_CLR);
 
 		/* Disable CPU interrupts */
-		writel_relaxed(~0ul, ictlr + ICTLR_CPU_IER_CLR);
+		writel_relaxed(GENMASK(31, 0), ictlr + ICTLR_CPU_IER_CLR);
 
 		/* Enable the wakeup sources of ictlr */
 		writel_relaxed(lic->ictlr_wake_mask[i], ictlr + ICTLR_CPU_IER_SET);
@@ -172,12 +172,12 @@ static void tegra_ictlr_resume(void)
 
 		writel_relaxed(lic->cpu_iep[i],
 			       ictlr + ICTLR_CPU_IEP_CLASS);
-		writel_relaxed(~0ul, ictlr + ICTLR_CPU_IER_CLR);
+		writel_relaxed(GENMASK(31, 0), ictlr + ICTLR_CPU_IER_CLR);
 		writel_relaxed(lic->cpu_ier[i],
 			       ictlr + ICTLR_CPU_IER_SET);
 		writel_relaxed(lic->cop_iep[i],
 			       ictlr + ICTLR_COP_IEP_CLASS);
-		writel_relaxed(~0ul, ictlr + ICTLR_COP_IER_CLR);
+		writel_relaxed(GENMASK(31, 0), ictlr + ICTLR_COP_IER_CLR);
 		writel_relaxed(lic->cop_ier[i],
 			       ictlr + ICTLR_COP_IER_SET);
 	}
@@ -312,7 +312,7 @@ static int __init tegra_ictlr_init(struct device_node *node,
 		lic->base[i] = base;
 
 		/* Disable all interrupts */
-		writel_relaxed(~0UL, base + ICTLR_CPU_IER_CLR);
+		writel_relaxed(GENMASK(31, 0), base + ICTLR_CPU_IER_CLR);
 		/* All interrupts target IRQ */
 		writel_relaxed(0, base + ICTLR_CPU_IEP_CLASS);
 
drivers/md/md.c +1 -0
index 4bfaf7d4977d..33946adb0d6f 100644
@@ -9467,6 +9467,7 @@ void md_reap_sync_thread(struct mddev *mddev)
 	wake_up(&resync_wait);
 	/* flag recovery needed just to double check */
 	set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
+	sysfs_notify_dirent_safe(mddev->sysfs_completed);
 	sysfs_notify_dirent_safe(mddev->sysfs_action);
 	md_new_event(mddev);
 	if (mddev->event_work.func)
drivers/md/raid5.c +1 -1
index b58984ddca13..19e497a7e747 100644
@@ -2864,10 +2864,10 @@ static void raid5_end_write_request(struct bio *bi)
 	if (!test_and_clear_bit(R5_DOUBLE_LOCKED, &sh->dev[i].flags))
 		clear_bit(R5_LOCKED, &sh->dev[i].flags);
 	set_bit(STRIPE_HANDLE, &sh->state);
-	raid5_release_stripe(sh);
 
 	if (sh->batch_head && sh != sh->batch_head)
 		raid5_release_stripe(sh->batch_head);
+	raid5_release_stripe(sh);
 }
 
 static void raid5_error(struct mddev *mddev, struct md_rdev *rdev)
drivers/media/platform/qcom/venus/pm_helpers.c +5 -5
index a591dd315ebc..03fc82cb3fea 100644
@@ -875,7 +875,7 @@ static int vcodec_domains_get(struct venus_core *core)
 	}
 
 skip_pmdomains:
-	if (!core->has_opp_table)
+	if (!core->res->opp_pmdomain)
 		return 0;
 
 	/* Attach the power domain for setting performance state */
@@ -1007,6 +1007,10 @@ static int core_get_v4(struct venus_core *core)
 	if (ret)
 		return ret;
 
+	ret = vcodec_domains_get(core);
+	if (ret)
+		return ret;
+
 	if (core->res->opp_pmdomain) {
 		ret = devm_pm_opp_of_add_table(dev);
 		if (!ret) {
@@ -1017,10 +1021,6 @@ static int core_get_v4(struct venus_core *core)
 		}
 	}
 
-	ret = vcodec_domains_get(core);
-	if (ret)
-		return ret;
-
 	return 0;
 }
 
drivers/misc/cxl/irq.c +1 -0
index 4cb829d5d873..2e4dcfebf19a 100644
@@ -349,6 +349,7 @@ int afu_allocate_irqs(struct cxl_context *ctx, u32 count)
 
 out:
 	cxl_ops->release_irq_ranges(&ctx->irqs, ctx->afu->adapter);
+	bitmap_free(ctx->irq_bitmap);
 	afu_irq_name_free(ctx);
 	return -ENOMEM;
 }
drivers/misc/habanalabs/gaudi/gaudi.c +13 -11
index 14da87b38e83..8132200dca67 100644
@@ -3318,19 +3318,19 @@ static void gaudi_init_nic_qman(struct hl_device *hdev, u32 nic_offset,
 	u32 nic_qm_err_cfg, irq_handler_offset;
 	u32 q_off;
 
-	mtr_base_en_lo = lower_32_bits(CFG_BASE +
+	mtr_base_en_lo = lower_32_bits((CFG_BASE & U32_MAX) +
 			mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0);
 	mtr_base_en_hi = upper_32_bits(CFG_BASE +
 				mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0);
-	so_base_en_lo = lower_32_bits(CFG_BASE +
+	so_base_en_lo = lower_32_bits((CFG_BASE & U32_MAX) +
 				mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_SOB_OBJ_0);
 	so_base_en_hi = upper_32_bits(CFG_BASE +
 				mmSYNC_MNGR_E_N_SYNC_MNGR_OBJS_SOB_OBJ_0);
-	mtr_base_ws_lo = lower_32_bits(CFG_BASE +
+	mtr_base_ws_lo = lower_32_bits((CFG_BASE & U32_MAX) +
 				mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0);
 	mtr_base_ws_hi = upper_32_bits(CFG_BASE +
 				mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_MON_PAY_ADDRL_0);
-	so_base_ws_lo = lower_32_bits(CFG_BASE +
+	so_base_ws_lo = lower_32_bits((CFG_BASE & U32_MAX) +
 				mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_SOB_OBJ_0);
 	so_base_ws_hi = upper_32_bits(CFG_BASE +
 				mmSYNC_MNGR_W_S_SYNC_MNGR_OBJS_SOB_OBJ_0);
@@ -5744,15 +5744,17 @@ static int gaudi_parse_cb_no_ext_queue(struct hl_device *hdev,
 {
 	struct asic_fixed_properties *asic_prop = &hdev->asic_prop;
 	struct gaudi_device *gaudi = hdev->asic_specific;
-	u32 nic_mask_q_id = 1 << (HW_CAP_NIC_SHIFT +
-		((parser->hw_queue_id - GAUDI_QUEUE_ID_NIC_0_0) >> 2));
+	u32 nic_queue_offset, nic_mask_q_id;
 
 	if ((parser->hw_queue_id >= GAUDI_QUEUE_ID_NIC_0_0) &&
-			(parser->hw_queue_id <= GAUDI_QUEUE_ID_NIC_9_3) &&
-			(!(gaudi->hw_cap_initialized & nic_mask_q_id))) {
-		dev_err(hdev->dev, "h/w queue %d is disabled\n",
-				parser->hw_queue_id);
-		return -EINVAL;
+			(parser->hw_queue_id <= GAUDI_QUEUE_ID_NIC_9_3)) {
+		nic_queue_offset = parser->hw_queue_id - GAUDI_QUEUE_ID_NIC_0_0;
+		nic_mask_q_id = 1 << (HW_CAP_NIC_SHIFT + (nic_queue_offset >> 2));
+
+		if (!(gaudi->hw_cap_initialized & nic_mask_q_id)) {
+			dev_err(hdev->dev, "h/w queue %d is disabled\n", parser->hw_queue_id);
+			return -EINVAL;
+		}
 	}
 
 	/* For internal queue jobs just check if CB address is valid */
drivers/misc/uacce/uacce.c +87 -46

252 lines not on this page · raw message

drivers/mmc/host/meson-gx-mmc.c +4 -2
index 58ab9d90bc8b..9b2e2548bd18 100644
@@ -1172,8 +1172,10 @@ static int meson_mmc_probe(struct platform_device *pdev)
 	}
 
 	ret = device_reset_optional(&pdev->dev);
-	if (ret)
-		return dev_err_probe(&pdev->dev, ret, "device reset failed\n");
+	if (ret) {
+		dev_err_probe(&pdev->dev, ret, "device reset failed\n");
+		goto free_host;
+	}
 
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	host->regs = devm_ioremap_resource(&pdev->dev, res);
drivers/mmc/host/pxamci.c +2 -2
index 316393c694d7..55868b6b8658 100644
@@ -648,7 +648,7 @@ static int pxamci_probe(struct platform_device *pdev)
 
 	ret = pxamci_of_init(pdev, mmc);
 	if (ret)
-		return ret;
+		goto out;
 
 	host = mmc_priv(mmc);
 	host->mmc = mmc;
@@ -672,7 +672,7 @@ static int pxamci_probe(struct platform_device *pdev)
 
 	ret = pxamci_init_ocr(host);
 	if (ret < 0)
-		return ret;
+		goto out;
 
 	mmc->caps = 0;
 	host->cmdat = 0;
drivers/mmc/host/renesas_sdhi_core.c +14 -15
index 791e180a0617..387f2a4f693a 100644
@@ -51,9 +51,6 @@
 #define HOST_MODE_GEN3_32BIT	(HOST_MODE_GEN3_WMODE | HOST_MODE_GEN3_BUSWIDTH)
 #define HOST_MODE_GEN3_64BIT	0
 
-#define CTL_SDIF_MODE	0xe6
-#define SDIF_MODE_HS400		BIT(0)
-
 #define SDHI_VER_GEN2_SDR50	0x490c
 #define SDHI_VER_RZ_A1		0x820b
 /* very old datasheets said 0x490c for SDR104, too. They are wrong! */
@@ -550,23 +547,25 @@ static void renesas_sdhi_scc_reset(struct tmio_mmc_host *host, struct renesas_sd
 }
 
 /* only populated for TMIO_MMC_MIN_RCAR2 */
-static void renesas_sdhi_reset(struct tmio_mmc_host *host)
+static void renesas_sdhi_reset(struct tmio_mmc_host *host, bool preserve)
 {
 	struct renesas_sdhi *priv = host_to_priv(host);
 	int ret;
 	u16 val;
 
-	if (priv->rstc) {
-		reset_control_reset(priv->rstc);
-		/* Unknown why but without polling reset status, it will hang */
-		read_poll_timeout(reset_control_status, ret, ret == 0, 1, 100,
-				  false, priv->rstc);
-		/* At least SDHI_VER_GEN2_SDR50 needs manual release of reset */
-		sd_ctrl_write16(host, CTL_RESET_SD, 0x0001);
-		priv->needs_adjust_hs400 = false;
-		renesas_sdhi_set_clock(host, host->clk_cache);
-	} else if (priv->scc_ctl) {
-		renesas_sdhi_scc_reset(host, priv);
+	if (!preserve) {
+		if (priv->rstc) {
+			reset_control_reset(priv->rstc);
+			/* Unknown why but without polling reset status, it will hang */
+			read_poll_timeout(reset_control_status, ret, ret == 0, 1, 100,
+					  false, priv->rstc);
+			/* At least SDHI_VER_GEN2_SDR50 needs manual release of reset */
+			sd_ctrl_write16(host, CTL_RESET_SD, 0x0001);
+			priv->needs_adjust_hs400 = false;
+			renesas_sdhi_set_clock(host, host->clk_cache);
+		} else if (priv->scc_ctl) {
+			renesas_sdhi_scc_reset(host, priv);
+		}
 	}
 
 	if (sd_ctrl_read16(host, CTL_VERSION) >= SDHI_VER_GEN3_SD) {
drivers/mmc/host/tmio_mmc.c +1 -1
index b55a29c53d9c..53a2ad9a24b8 100644
@@ -75,7 +75,7 @@ static void tmio_mmc_set_clock(struct tmio_mmc_host *host,
 	tmio_mmc_clk_start(host);
 }
 
-static void tmio_mmc_reset(struct tmio_mmc_host *host)
+static void tmio_mmc_reset(struct tmio_mmc_host *host, bool preserve)
 {
 	sd_ctrl_write16(host, CTL_RESET_SDIO, 0x0000);
 	usleep_range(10000, 11000);
drivers/mmc/host/tmio_mmc.h +5 -1
index f936aad945ce..da63193dd45b 100644
@@ -42,6 +42,7 @@
 #define CTL_DMA_ENABLE 0xd8
 #define CTL_RESET_SD 0xe0
 #define CTL_VERSION 0xe2
+#define CTL_SDIF_MODE 0xe6 /* only known on R-Car 2+ */
 
 /* Definitions for values the CTL_STOP_INTERNAL_ACTION register can take */
 #define TMIO_STOP_STP		BIT(0)
@@ -98,6 +99,9 @@
 /* Definitions for values the CTL_DMA_ENABLE register can take */
 #define DMA_ENABLE_DMASDRW	BIT(1)
 
+/* Definitions for values the CTL_SDIF_MODE register can take */
+#define SDIF_MODE_HS400		BIT(0) /* only known on R-Car 2+ */
+
 /* Define some IRQ masks */
 /* This is the mask used at reset by the chip */
 #define TMIO_MASK_ALL           0x837f031d
@@ -181,7 +185,7 @@ struct tmio_mmc_host {
 	int (*multi_io_quirk)(struct mmc_card *card,
 			      unsigned int direction, int blk_size);
 	int (*write16_hook)(struct tmio_mmc_host *host, int addr);
-	void (*reset)(struct tmio_mmc_host *host);
+	void (*reset)(struct tmio_mmc_host *host, bool preserve);
 	bool (*check_retune)(struct tmio_mmc_host *host, struct mmc_request *mrq);
 	void (*fixup_request)(struct tmio_mmc_host *host, struct mmc_request *mrq);
 	unsigned int (*get_timeout_cycles)(struct tmio_mmc_host *host);
drivers/mmc/host/tmio_mmc_core.c +22 -6
index a5850d83908b..437048bb8027 100644
@@ -179,8 +179,17 @@ static void tmio_mmc_set_bus_width(struct tmio_mmc_host *host,
 	sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, reg);
 }
 
-static void tmio_mmc_reset(struct tmio_mmc_host *host)
+static void tmio_mmc_reset(struct tmio_mmc_host *host, bool preserve)
 {
+	u16 card_opt, clk_ctrl, sdif_mode;
+
+	if (preserve) {
+		card_opt = sd_ctrl_read16(host, CTL_SD_MEM_CARD_OPT);
+		clk_ctrl = sd_ctrl_read16(host, CTL_SD_CARD_CLK_CTL);
+		if (host->pdata->flags & TMIO_MMC_MIN_RCAR2)
+			sdif_mode = sd_ctrl_read16(host, CTL_SDIF_MODE);
+	}
+
 	/* FIXME - should we set stop clock reg here */
 	sd_ctrl_write16(host, CTL_RESET_SD, 0x0000);
 	usleep_range(10000, 11000);
@@ -190,7 +199,7 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host)
 	tmio_mmc_abort_dma(host);
 
 	if (host->reset)
-		host->reset(host);
+		host->reset(host, preserve);
 
 	sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK, host->sdcard_irq_mask_all);
 	host->sdcard_irq_mask = host->sdcard_irq_mask_all;
@@ -206,6 +215,13 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host)
 		sd_ctrl_write16(host, CTL_TRANSACTION_CTL, 0x0001);
 	}
 
+	if (preserve) {
+		sd_ctrl_write16(host, CTL_SD_MEM_CARD_OPT, card_opt);
+		sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, clk_ctrl);
+		if (host->pdata->flags & TMIO_MMC_MIN_RCAR2)
+			sd_ctrl_write16(host, CTL_SDIF_MODE, sdif_mode);
+	}
+
 	if (host->mmc->card)
 		mmc_retune_needed(host->mmc);
 }
@@ -248,7 +264,7 @@ static void tmio_mmc_reset_work(struct work_struct *work)
 
 	spin_unlock_irqrestore(&host->lock, flags);
 
-	tmio_mmc_reset(host);
+	tmio_mmc_reset(host, true);
 
 	/* Ready for new calls */
 	host->mrq = NULL;
@@ -961,7 +977,7 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
 		tmio_mmc_power_off(host);
 		/* For R-Car Gen2+, we need to reset SDHI specific SCC */
 		if (host->pdata->flags & TMIO_MMC_MIN_RCAR2)
-			tmio_mmc_reset(host);
+			tmio_mmc_reset(host, false);
 
 		host->set_clock(host, 0);
 		break;
@@ -1189,7 +1205,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host)
 		_host->sdcard_irq_mask_all = TMIO_MASK_ALL;
 
 	_host->set_clock(_host, 0);
-	tmio_mmc_reset(_host);
+	tmio_mmc_reset(_host, false);
 
 	spin_lock_init(&_host->lock);
 	mutex_init(&_host->ios_lock);
@@ -1285,7 +1301,7 @@ int tmio_mmc_host_runtime_resume(struct device *dev)
 	struct tmio_mmc_host *host = dev_get_drvdata(dev);
 
 	tmio_mmc_clk_enable(host);
-	tmio_mmc_reset(host);
+	tmio_mmc_reset(host, false);
 
 	if (host->clk_cache)
 		host->set_clock(host, host->clk_cache);
drivers/net/can/spi/mcp251x.c +15 -3
index 0579ab74f728..baab3adc34bc 100644
@@ -1074,9 +1074,6 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id)
 
 		mcp251x_read_2regs(spi, CANINTF, &intf, &eflag);
 
-		/* mask out flags we don't care about */
-		intf &= CANINTF_RX | CANINTF_TX | CANINTF_ERR;
-
 		/* receive buffer 0 */
 		if (intf & CANINTF_RX0IF) {
 			mcp251x_hw_rx(spi, 0);
@@ -1086,6 +1083,18 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id)
 			if (mcp251x_is_2510(spi))
 				mcp251x_write_bits(spi, CANINTF,
 						   CANINTF_RX0IF, 0x00);
+
+			/* check if buffer 1 is already known to be full, no need to re-read */
+			if (!(intf & CANINTF_RX1IF)) {
+				u8 intf1, eflag1;
+
+				/* intf needs to be read again to avoid a race condition */
+				mcp251x_read_2regs(spi, CANINTF, &intf1, &eflag1);
+
+				/* combine flags from both operations for error handling */
+				intf |= intf1;
+				eflag |= eflag1;
+			}
 		}
 
 		/* receive buffer 1 */
@@ -1096,6 +1105,9 @@ static irqreturn_t mcp251x_can_ist(int irq, void *dev_id)
 				clear_intf |= CANINTF_RX1IF;
 		}
 
+		/* mask out flags we don't care about */
+		intf &= CANINTF_RX | CANINTF_TX | CANINTF_ERR;
+
 		/* any error or tx interrupt we need to clear? */
 		if (intf & (CANINTF_ERR | CANINTF_TX))
 			clear_intf |= intf & (CANINTF_ERR | CANINTF_TX);
drivers/net/can/usb/ems_usb.c +1 -1
index c9552846fe25..a1b7c1a451c0 100644
@@ -194,7 +194,7 @@ struct __packed ems_cpc_msg {
 	__le32 ts_sec;	/* timestamp in seconds */
 	__le32 ts_nsec;	/* timestamp in nano seconds */
 
-	union {
+	union __packed {
 		u8 generic[64];
 		struct cpc_can_msg can_msg;
 		struct cpc_can_params can_params;
drivers/net/dsa/microchip/ksz9477.c +3 -0
index 854e25f43fa7..379b38c5844f 100644
@@ -759,6 +759,9 @@ static int ksz9477_port_fdb_dump(struct dsa_switch *ds, int port,
 			goto exit;
 		}
 
+		if (!(ksz_data & ALU_VALID))
+			continue;
+
 		/* read ALU table */
 		ksz9477_read_table(dev, alu_table);
 
drivers/net/dsa/mv88e6060.c +3 -0
index a4c6eb9a52d0..83dca9179aa0 100644
@@ -118,6 +118,9 @@ static int mv88e6060_setup_port(struct mv88e6060_priv *priv, int p)
 	int addr = REG_PORT(p);
 	int ret;
 
+	if (dsa_is_unused_port(priv->ds, p))
+		return 0;
+
 	/* Do not force flow control, disable Ingress and Egress
 	 * Header tagging, disable VLAN tunneling, and set the port
 	 * state to Forwarding.  Additionally, if this is the CPU
drivers/net/dsa/ocelot/felix_vsc9959.c +2 -1
index a9c7ada890d8..5ba7e5c820dd 100644
@@ -578,7 +578,8 @@ static const struct ocelot_stat_layout vsc9959_stats_layout[] = {
 	{ .offset = 0x87,	.name = "tx_frames_below_65_octets", },
 	{ .offset = 0x88,	.name = "tx_frames_65_to_127_octets", },
 	{ .offset = 0x89,	.name = "tx_frames_128_255_octets", },
-	{ .offset = 0x8B,	.name = "tx_frames_256_511_octets", },
+	{ .offset = 0x8A,	.name = "tx_frames_256_511_octets", },
+	{ .offset = 0x8B,	.name = "tx_frames_512_1023_octets", },
 	{ .offset = 0x8C,	.name = "tx_frames_1024_1526_octets", },
 	{ .offset = 0x8D,	.name = "tx_frames_over_1526_octets", },
 	{ .offset = 0x8E,	.name = "tx_yellow_prio_0", },
drivers/net/dsa/sja1105/sja1105_devlink.c +1 -1
index 0569ff066634..10c6fea1227f 100644
@@ -93,7 +93,7 @@ static int sja1105_setup_devlink_regions(struct dsa_switch *ds)
 
 		region = dsa_devlink_region_create(ds, ops, 1, size);
 		if (IS_ERR(region)) {
-			while (i-- >= 0)
+			while (--i >= 0)
 				dsa_devlink_region_destroy(priv->regions[i]);
 			return PTR_ERR(region);
 		}
drivers/net/ethernet/aquantia/atlantic/aq_nic.c +8 -13
index fbb1e05d5878..ea2e7cd8946d 100644
@@ -265,12 +265,10 @@ static void aq_nic_service_timer_cb(struct timer_list *t)
 static void aq_nic_polling_timer_cb(struct timer_list *t)
 {
 	struct aq_nic_s *self = from_timer(self, t, polling_timer);
-	struct aq_vec_s *aq_vec = NULL;
 	unsigned int i = 0U;
 
-	for (i = 0U, aq_vec = self->aq_vec[0];
-		self->aq_vecs > i; ++i, aq_vec = self->aq_vec[i])
-		aq_vec_isr(i, (void *)aq_vec);
+	for (i = 0U; self->aq_vecs > i; ++i)
+		aq_vec_isr(i, (void *)self->aq_vec[i]);
 
 	mod_timer(&self->polling_timer, jiffies +
 		  AQ_CFG_POLLING_TIMER_INTERVAL);
@@ -872,7 +870,6 @@ int aq_nic_get_regs_count(struct aq_nic_s *self)
 
 u64 *aq_nic_get_stats(struct aq_nic_s *self, u64 *data)
 {
-	struct aq_vec_s *aq_vec = NULL;
 	struct aq_stats_s *stats;
 	unsigned int count = 0U;
 	unsigned int i = 0U;
@@ -922,11 +919,11 @@ u64 *aq_nic_get_stats(struct aq_nic_s *self, u64 *data)
 	data += i;
 
 	for (tc = 0U; tc < self->aq_nic_cfg.tcs; tc++) {
-		for (i = 0U, aq_vec = self->aq_vec[0];
-		     aq_vec && self->aq_vecs > i;
-		     ++i, aq_vec = self->aq_vec[i]) {
+		for (i = 0U; self->aq_vecs > i; ++i) {
+			if (!self->aq_vec[i])
+				break;
 			data += count;
-			count = aq_vec_get_sw_stats(aq_vec, tc, data);
+			count = aq_vec_get_sw_stats(self->aq_vec[i], tc, data);
 		}
 	}
 
@@ -1240,7 +1237,6 @@ int aq_nic_set_loopback(struct aq_nic_s *self)
 
 int aq_nic_stop(struct aq_nic_s *self)
 {
-	struct aq_vec_s *aq_vec = NULL;
 	unsigned int i = 0U;
 
 	netif_tx_disable(self->ndev);
@@ -1258,9 +1254,8 @@ int aq_nic_stop(struct aq_nic_s *self)
 
 	aq_ptp_irq_free(self);
 
-	for (i = 0U, aq_vec = self->aq_vec[0];
-		self->aq_vecs > i; ++i, aq_vec = self->aq_vec[i])
-		aq_vec_stop(aq_vec);
+	for (i = 0U; self->aq_vecs > i; ++i)
+		aq_vec_stop(self->aq_vec[i]);
 
 	aq_ptp_ring_stop(self);
 
drivers/net/ethernet/broadcom/bgmac.c +1 -1
index fe4d99abd548..6e8bc6726031 100644
@@ -189,8 +189,8 @@ static netdev_tx_t bgmac_dma_tx_add(struct bgmac *bgmac,
 	}
 
 	slot->skb = skb;
-	ring->end += nr_frags + 1;
 	netdev_sent_queue(net_dev, skb->len);
+	ring->end += nr_frags + 1;
 
 	wmb();
 
drivers/net/ethernet/broadcom/genet/bcmmii.c +3 -0
index 89d16c587bb7..dbd2ede53f94 100644
@@ -361,6 +361,9 @@ int bcmgenet_mii_probe(struct net_device *dev)
 	if (priv->internal_phy && !GENET_IS_V5(priv))
 		dev->phydev->irq = PHY_MAC_INTERRUPT;
 
+	/* Indicate that the MAC is responsible for PHY PM */
+	dev->phydev->mac_managed_pm = true;
+
 	return 0;
 }
 
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +2 -2
index 8b7a29e1e221..5899139aec97 100644
@@ -1389,8 +1389,8 @@ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv,
 		buf_array[i] = addr;
 
 		/* tracing point */
-		trace_dpaa2_eth_buf_seed(priv->net_dev,
-					 page, DPAA2_ETH_RX_BUF_RAW_SIZE,
+		trace_dpaa2_eth_buf_seed(priv->net_dev, page_address(page),
+					 DPAA2_ETH_RX_BUF_RAW_SIZE,
 					 addr, priv->rx_buf_size,
 					 bpid);
 	}
drivers/net/ethernet/freescale/fec_ptp.c +1 -5
index d71eac7e1924..c5ae67300590 100644
@@ -136,11 +136,7 @@ static int fec_ptp_enable_pps(struct fec_enet_private *fep, uint enable)
 		 * NSEC_PER_SEC - ts.tv_nsec. Add the remaining nanoseconds
 		 * to current timer would be next second.
 		 */
-		tempval = readl(fep->hwp + FEC_ATIME_CTRL);
-		tempval |= FEC_T_CTRL_CAPTURE;
-		writel(tempval, fep->hwp + FEC_ATIME_CTRL);
-
-		tempval = readl(fep->hwp + FEC_ATIME);
+		tempval = fep->cc.read(&fep->cc);
 		/* Convert the ptp local counter to 1588 timestamp */
 		ns = timecounter_cyc2time(&fep->tc, tempval);
 		ts = ns_to_timespec64(ns);
drivers/net/ethernet/intel/i40e/i40e_main.c +3 -1
index b07d55c99317..536f9198bd47 100644
@@ -383,7 +383,9 @@ static void i40e_tx_timeout(struct net_device *netdev, unsigned int txqueue)
 		set_bit(__I40E_GLOBAL_RESET_REQUESTED, pf->state);
 		break;
 	default:
-		netdev_err(netdev, "tx_timeout recovery unsuccessful\n");
+		netdev_err(netdev, "tx_timeout recovery unsuccessful, device is in non-recoverable state.\n");
+		set_bit(__I40E_DOWN_REQUESTED, pf->state);
+		set_bit(__I40E_VSI_DOWN_REQUESTED, vsi->state);
 		break;
 	}
 
drivers/net/ethernet/intel/iavf/iavf_adminq.c +13 -2
index 9fa3fa99b4c2..897b349cdaf1 100644
@@ -324,6 +324,7 @@ static enum iavf_status iavf_config_arq_regs(struct iavf_hw *hw)
 static enum iavf_status iavf_init_asq(struct iavf_hw *hw)
 {
 	enum iavf_status ret_code = 0;
+	int i;
 
 	if (hw->aq.asq.count > 0) {
 		/* queue already initialized */
@@ -354,12 +355,17 @@ static enum iavf_status iavf_init_asq(struct iavf_hw *hw)
 	/* initialize base registers */
 	ret_code = iavf_config_asq_regs(hw);
 	if (ret_code)
-		goto init_adminq_free_rings;
+		goto init_free_asq_bufs;
 
 	/* success! */
 	hw->aq.asq.count = hw->aq.num_asq_entries;
 	goto init_adminq_exit;
 
+init_free_asq_bufs:
+	for (i = 0; i < hw->aq.num_asq_entries; i++)
+		iavf_free_dma_mem(hw, &hw->aq.asq.r.asq_bi[i]);
+	iavf_free_virt_mem(hw, &hw->aq.asq.dma_head);
+
 init_adminq_free_rings:
 	iavf_free_adminq_asq(hw);
 
@@ -383,6 +389,7 @@ static enum iavf_status iavf_init_asq(struct iavf_hw *hw)
 static enum iavf_status iavf_init_arq(struct iavf_hw *hw)
 {
 	enum iavf_status ret_code = 0;
+	int i;
 
 	if (hw->aq.arq.count > 0) {
 		/* queue already initialized */
@@ -413,12 +420,16 @@ static enum iavf_status iavf_init_arq(struct iavf_hw *hw)
 	/* initialize base registers */
 	ret_code = iavf_config_arq_regs(hw);
 	if (ret_code)
-		goto init_adminq_free_rings;
+		goto init_free_arq_bufs;
 
 	/* success! */
 	hw->aq.arq.count = hw->aq.num_arq_entries;
 	goto init_adminq_exit;
 
+init_free_arq_bufs:
+	for (i = 0; i < hw->aq.num_arq_entries; i++)
+		iavf_free_dma_mem(hw, &hw->aq.arq.r.arq_bi[i]);
+	iavf_free_virt_mem(hw, &hw->aq.arq.dma_head);
 init_adminq_free_rings:
 	iavf_free_adminq_arq(hw);
 
drivers/net/ethernet/intel/iavf/iavf_main.c +6 -3
index e2349131a428..db95786c3419 100644
@@ -2414,12 +2414,15 @@ static void iavf_reset_task(struct work_struct *work)
 
 	return;
 reset_err:
+	if (running) {
+		set_bit(__IAVF_VSI_DOWN, adapter->vsi.state);
+		iavf_free_traffic_irqs(adapter);
+	}
+	iavf_disable_vf(adapter);
+
 	mutex_unlock(&adapter->client_lock);
 	mutex_unlock(&adapter->crit_lock);
-	if (running)
-		iavf_change_state(adapter, __IAVF_RUNNING);
 	dev_err(&adapter->pdev->dev, "failed to allocate resources during reinit\n");
-	iavf_close(netdev);
 }
 
 /**
drivers/net/ethernet/intel/ice/ice_switch.c +1 -1
index 3b6c1420aa7b..deb828e761fa 100644
@@ -2614,7 +2614,7 @@ ice_set_vlan_vsi_promisc(struct ice_hw *hw, u16 vsi_handle, u8 promisc_mask,
 		else
 			status = ice_set_vsi_promisc(hw, vsi_handle,
 						     promisc_mask, vlan_id);
-		if (status)
+		if (status && status != -EEXIST)
 			break;
 	}
 
drivers/net/ethernet/intel/igb/igb.h +2 -0
index 2d3daf022651..015b78144114 100644
@@ -664,6 +664,8 @@ struct igb_adapter {
 	struct igb_mac_addr *mac_table;
 	struct vf_mac_filter vf_macs;
 	struct vf_mac_filter *vf_mac_list;
+	/* lock for VF resources */
+	spinlock_t vfs_lock;
 };
 
 /* flags controlling PTP/1588 function */
drivers/net/ethernet/intel/igb/igb_main.c +11 -1
index db11a1c278f6..f19e64830739 100644
@@ -3637,6 +3637,7 @@ static int igb_disable_sriov(struct pci_dev *pdev)
 	struct net_device *netdev = pci_get_drvdata(pdev);
 	struct igb_adapter *adapter = netdev_priv(netdev);
 	struct e1000_hw *hw = &adapter->hw;
+	unsigned long flags;
 
 	/* reclaim resources allocated to VFs */
 	if (adapter->vf_data) {
@@ -3649,12 +3650,13 @@ static int igb_disable_sriov(struct pci_dev *pdev)
 			pci_disable_sriov(pdev);
 			msleep(500);
 		}
-
+		spin_lock_irqsave(&adapter->vfs_lock, flags);
 		kfree(adapter->vf_mac_list);
 		adapter->vf_mac_list = NULL;
 		kfree(adapter->vf_data);
 		adapter->vf_data = NULL;
 		adapter->vfs_allocated_count = 0;
+		spin_unlock_irqrestore(&adapter->vfs_lock, flags);
 		wr32(E1000_IOVCTL, E1000_IOVCTL_REUSE_VFQ);
 		wrfl();
 		msleep(100);
@@ -3814,7 +3816,9 @@ static void igb_remove(struct pci_dev *pdev)
 	igb_release_hw_control(adapter);
 
 #ifdef CONFIG_PCI_IOV
+	rtnl_lock();
 	igb_disable_sriov(pdev);
+	rtnl_unlock();
 #endif
 
 	unregister_netdev(netdev);
@@ -3974,6 +3978,9 @@ static int igb_sw_init(struct igb_adapter *adapter)
 
 	spin_lock_init(&adapter->nfc_lock);
 	spin_lock_init(&adapter->stats64_lock);
+
+	/* init spinlock to avoid concurrency of VF resources */
+	spin_lock_init(&adapter->vfs_lock);
 #ifdef CONFIG_PCI_IOV
 	switch (hw->mac.type) {
 	case e1000_82576:
@@ -7846,8 +7853,10 @@ static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf)
 static void igb_msg_task(struct igb_adapter *adapter)
 {
 	struct e1000_hw *hw = &adapter->hw;
+	unsigned long flags;
 	u32 vf;
 
+	spin_lock_irqsave(&adapter->vfs_lock, flags);
 	for (vf = 0; vf < adapter->vfs_allocated_count; vf++) {
 		/* process any reset requests */
 		if (!igb_check_for_rst(hw, vf))
@@ -7861,6 +7870,7 @@ static void igb_msg_task(struct igb_adapter *adapter)
 		if (!igb_check_for_ack(hw, vf))
 			igb_rcv_ack_from_vf(adapter, vf);
 	}
+	spin_unlock_irqrestore(&adapter->vfs_lock, flags);
 }
 
 /**
drivers/net/ethernet/marvell/octeontx2/af/rvu.c +6 -0
index 11ef46e72ddd..bd33b90aaa67 100644
@@ -2504,6 +2504,12 @@ static void __rvu_flr_handler(struct rvu *rvu, u16 pcifunc)
 	rvu_blklf_teardown(rvu, pcifunc, BLKADDR_NPA);
 	rvu_reset_lmt_map_tbl(rvu, pcifunc);
 	rvu_detach_rsrcs(rvu, NULL, pcifunc);
+	/* In scenarios where PF/VF drivers detach NIXLF without freeing MCAM
+	 * entries, check and free the MCAM entries explicitly to avoid leak.
+	 * Since LF is detached use LF number as -1.
+	 */
+	rvu_npc_free_mcam_entries(rvu, pcifunc, -1);
+
 	mutex_unlock(&rvu->flr_lock);
 }
 
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +11 -4
index c4a46b295d40..d1249da7a18f 100644
@@ -1096,6 +1096,9 @@ static void npc_enadis_default_entries(struct rvu *rvu, u16 pcifunc,
 
 void rvu_npc_disable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf)
 {
+	if (nixlf < 0)
+		return;
+
 	npc_enadis_default_entries(rvu, pcifunc, nixlf, false);
 
 	/* Delete multicast and promisc MCAM entries */
@@ -1107,6 +1110,9 @@ void rvu_npc_disable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf)
 
 void rvu_npc_enable_default_entries(struct rvu *rvu, u16 pcifunc, int nixlf)
 {
+	if (nixlf < 0)
+		return;
+
 	/* Enables only broadcast match entry. Promisc/Allmulti are enabled
 	 * in set_rx_mode mbox handler.
 	 */
@@ -1650,7 +1656,7 @@ static void npc_load_kpu_profile(struct rvu *rvu)
 	 * Firmware database method.
 	 * Default KPU profile.
 	 */
-	if (!request_firmware(&fw, kpu_profile, rvu->dev)) {
+	if (!request_firmware_direct(&fw, kpu_profile, rvu->dev)) {
 		dev_info(rvu->dev, "Loading KPU profile from firmware: %s\n",
 			 kpu_profile);
 		rvu->kpu_fwdata = kzalloc(fw->size, GFP_KERNEL);
@@ -1915,6 +1921,7 @@ static void rvu_npc_hw_init(struct rvu *rvu, int blkaddr)
 
 static void rvu_npc_setup_interfaces(struct rvu *rvu, int blkaddr)
 {
+	struct npc_mcam_kex *mkex = rvu->kpu.mkex;
 	struct npc_mcam *mcam = &rvu->hw->mcam;
 	struct rvu_hwinfo *hw = rvu->hw;
 	u64 nibble_ena, rx_kex, tx_kex;
@@ -1927,15 +1934,15 @@ static void rvu_npc_setup_interfaces(struct rvu *rvu, int blkaddr)
 	mcam->counters.max--;
 	mcam->rx_miss_act_cntr = mcam->counters.max;
 
-	rx_kex = npc_mkex_default.keyx_cfg[NIX_INTF_RX];
-	tx_kex = npc_mkex_default.keyx_cfg[NIX_INTF_TX];
+	rx_kex = mkex->keyx_cfg[NIX_INTF_RX];
+	tx_kex = mkex->keyx_cfg[NIX_INTF_TX];
 	nibble_ena = FIELD_GET(NPC_PARSE_NIBBLE, rx_kex);
 
 	nibble_ena = rvu_npc_get_tx_nibble_cfg(rvu, nibble_ena);
 	if (nibble_ena) {
 		tx_kex &= ~NPC_PARSE_NIBBLE;
 		tx_kex |= FIELD_PREP(NPC_PARSE_NIBBLE, nibble_ena);
-		npc_mkex_default.keyx_cfg[NIX_INTF_TX] = tx_kex;
+		mkex->keyx_cfg[NIX_INTF_TX] = tx_kex;
 	}
 
 	/* Configure RX interfaces */
drivers/net/ethernet/marvell/octeontx2/af/rvu_npc_fs.c +2 -1
index ca404d51d9f5..750aaa167687 100644
@@ -445,7 +445,8 @@ do {									       \
 	NPC_SCAN_HDR(NPC_VLAN_TAG1, NPC_LID_LB, NPC_LT_LB_CTAG, 2, 2);
 	NPC_SCAN_HDR(NPC_VLAN_TAG2, NPC_LID_LB, NPC_LT_LB_STAG_QINQ, 2, 2);
 	NPC_SCAN_HDR(NPC_DMAC, NPC_LID_LA, la_ltype, la_start, 6);
-	NPC_SCAN_HDR(NPC_SMAC, NPC_LID_LA, la_ltype, la_start, 6);
+	/* SMAC follows the DMAC(which is 6 bytes) */
+	NPC_SCAN_HDR(NPC_SMAC, NPC_LID_LA, la_ltype, la_start + 6, 6);
 	/* PF_FUNC is 2 bytes at 0th byte of NPC_LT_LA_IH_NIX_ETHER */
 	NPC_SCAN_HDR(NPC_PF_FUNC, NPC_LID_LA, NPC_LT_LA_IH_NIX_ETHER, 0, 2);
 }
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +14 -5
index 78df173e6df2..7cf24dd5c878 100644
@@ -631,6 +631,12 @@ int otx2_txschq_config(struct otx2_nic *pfvf, int lvl)
 		req->num_regs++;
 		req->reg[1] = NIX_AF_TL3X_SCHEDULE(schq);
 		req->regval[1] = dwrr_val;
+		if (lvl == hw->txschq_link_cfg_lvl) {
+			req->num_regs++;
+			req->reg[2] = NIX_AF_TL3_TL2X_LINKX_CFG(schq, hw->tx_link);
+			/* Enable this queue and backpressure */
+			req->regval[2] = BIT_ULL(13) | BIT_ULL(12);
+		}
 	} else if (lvl == NIX_TXSCH_LVL_TL2) {
 		parent =  hw->txschq_list[NIX_TXSCH_LVL_TL1][0];
 		req->reg[0] = NIX_AF_TL2X_PARENT(schq);
@@ -640,11 +646,12 @@ int otx2_txschq_config(struct otx2_nic *pfvf, int lvl)
 		req->reg[1] = NIX_AF_TL2X_SCHEDULE(schq);
 		req->regval[1] = TXSCH_TL1_DFLT_RR_PRIO << 24 | dwrr_val;
 
-		req->num_regs++;
-		req->reg[2] = NIX_AF_TL3_TL2X_LINKX_CFG(schq, hw->tx_link);
-		/* Enable this queue and backpressure */
-		req->regval[2] = BIT_ULL(13) | BIT_ULL(12);
-
+		if (lvl == hw->txschq_link_cfg_lvl) {
+			req->num_regs++;
+			req->reg[2] = NIX_AF_TL3_TL2X_LINKX_CFG(schq, hw->tx_link);
+			/* Enable this queue and backpressure */
+			req->regval[2] = BIT_ULL(13) | BIT_ULL(12);
+		}
 	} else if (lvl == NIX_TXSCH_LVL_TL1) {
 		/* Default config for TL1.
 		 * For VF this is always ignored.
@@ -1563,6 +1570,8 @@ void mbox_handler_nix_txsch_alloc(struct otx2_nic *pf,
 		for (schq = 0; schq < rsp->schq[lvl]; schq++)
 			pf->hw.txschq_list[lvl][schq] =
 				rsp->schq_list[lvl][schq];
+
+	pf->hw.txschq_link_cfg_lvl = rsp->link_cfg_lvl;
 }
 EXPORT_SYMBOL(mbox_handler_nix_txsch_alloc);
 
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.h +1 -0
index 637450de189c..4ecd0ef05f3b 100644
@@ -182,6 +182,7 @@ struct otx2_hw {
 	u16			sqb_size;
 
 	/* NIX */
+	u8			txschq_link_cfg_lvl;
 	u16		txschq_list[NIX_TXSCH_LVL_CNT][MAX_TXSCHQ_PER_FUNC];
 	u16			matchall_ipolicer;
 	u32			dwrr_mtu;
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c +2 -2
index cf03297c8471..d90c6dc41c9f 100644
@@ -497,7 +497,7 @@ int mlx5e_tc_tun_create_header_ipv6(struct mlx5e_priv *priv,
 	int err;
 
 	attr.ttl = tun_key->ttl;
-	attr.fl.fl6.flowlabel = ip6_make_flowinfo(RT_TOS(tun_key->tos), tun_key->label);
+	attr.fl.fl6.flowlabel = ip6_make_flowinfo(tun_key->tos, tun_key->label);
 	attr.fl.fl6.daddr = tun_key->u.ipv6.dst;
 	attr.fl.fl6.saddr = tun_key->u.ipv6.src;
 
@@ -611,7 +611,7 @@ int mlx5e_tc_tun_update_header_ipv6(struct mlx5e_priv *priv,
 
 	attr.ttl = tun_key->ttl;
 
-	attr.fl.fl6.flowlabel = ip6_make_flowinfo(RT_TOS(tun_key->tos), tun_key->label);
+	attr.fl.fl6.flowlabel = ip6_make_flowinfo(tun_key->tos, tun_key->label);
 	attr.fl.fl6.daddr = tun_key->u.ipv6.dst;
 	attr.fl.fl6.saddr = tun_key->u.ipv6.src;
 
drivers/net/ethernet/mellanox/mlxsw/spectrum.c +1 -1
index edfdd44de579..35908a8c640a 100644
@@ -1730,9 +1730,9 @@ static void mlxsw_sp_port_remove(struct mlxsw_sp *mlxsw_sp, u8 local_port)
 
 	cancel_delayed_work_sync(&mlxsw_sp_port->periodic_hw_stats.update_dw);
 	cancel_delayed_work_sync(&mlxsw_sp_port->ptp.shaper_dw);
-	mlxsw_sp_port_ptp_clear(mlxsw_sp_port);
 	mlxsw_core_port_clear(mlxsw_sp->core, local_port, mlxsw_sp);
 	unregister_netdev(mlxsw_sp_port->dev); /* This calls ndo_stop */
+	mlxsw_sp_port_ptp_clear(mlxsw_sp_port);
 	mlxsw_sp_port_vlan_classification_set(mlxsw_sp_port, true, true);
 	mlxsw_sp->ports[local_port] = NULL;
 	mlxsw_sp_port_vlan_flush(mlxsw_sp_port, true);
drivers/net/ethernet/moxa/moxart_ether.c +10 -10
index 49def6934cad..54a91d2b33b5 100644
@@ -77,7 +77,7 @@ static void moxart_mac_free_memory(struct net_device *ndev)
 	int i;
 
 	for (i = 0; i < RX_DESC_NUM; i++)
-		dma_unmap_single(&ndev->dev, priv->rx_mapping[i],
+		dma_unmap_single(&priv->pdev->dev, priv->rx_mapping[i],
 				 priv->rx_buf_size, DMA_FROM_DEVICE);
 
 	if (priv->tx_desc_base)
@@ -147,11 +147,11 @@ static void moxart_mac_setup_desc_ring(struct net_device *ndev)
 		       desc + RX_REG_OFFSET_DESC1);
 
 		priv->rx_buf[i] = priv->rx_buf_base + priv->rx_buf_size * i;
-		priv->rx_mapping[i] = dma_map_single(&ndev->dev,
+		priv->rx_mapping[i] = dma_map_single(&priv->pdev->dev,
 						     priv->rx_buf[i],
 						     priv->rx_buf_size,
 						     DMA_FROM_DEVICE);
-		if (dma_mapping_error(&ndev->dev, priv->rx_mapping[i]))
+		if (dma_mapping_error(&priv->pdev->dev, priv->rx_mapping[i]))
 			netdev_err(ndev, "DMA mapping error\n");
 
 		moxart_desc_write(priv->rx_mapping[i],
@@ -240,7 +240,7 @@ static int moxart_rx_poll(struct napi_struct *napi, int budget)
 		if (len > RX_BUF_SIZE)
 			len = RX_BUF_SIZE;
 
-		dma_sync_single_for_cpu(&ndev->dev,
+		dma_sync_single_for_cpu(&priv->pdev->dev,
 					priv->rx_mapping[rx_head],
 					priv->rx_buf_size, DMA_FROM_DEVICE);
 		skb = netdev_alloc_skb_ip_align(ndev, len);
@@ -294,7 +294,7 @@ static void moxart_tx_finished(struct net_device *ndev)
 	unsigned int tx_tail = priv->tx_tail;
 
 	while (tx_tail != tx_head) {
-		dma_unmap_single(&ndev->dev, priv->tx_mapping[tx_tail],
+		dma_unmap_single(&priv->pdev->dev, priv->tx_mapping[tx_tail],
 				 priv->tx_len[tx_tail], DMA_TO_DEVICE);
 
 		ndev->stats.tx_packets++;
@@ -358,9 +358,9 @@ static netdev_tx_t moxart_mac_start_xmit(struct sk_buff *skb,
 
 	len = skb->len > TX_BUF_SIZE ? TX_BUF_SIZE : skb->len;
 
-	priv->tx_mapping[tx_head] = dma_map_single(&ndev->dev, skb->data,
+	priv->tx_mapping[tx_head] = dma_map_single(&priv->pdev->dev, skb->data,
 						   len, DMA_TO_DEVICE);
-	if (dma_mapping_error(&ndev->dev, priv->tx_mapping[tx_head])) {
+	if (dma_mapping_error(&priv->pdev->dev, priv->tx_mapping[tx_head])) {
 		netdev_err(ndev, "DMA mapping error\n");
 		goto out_unlock;
 	}
@@ -379,7 +379,7 @@ static netdev_tx_t moxart_mac_start_xmit(struct sk_buff *skb,
 		len = ETH_ZLEN;
 	}
 
-	dma_sync_single_for_device(&ndev->dev, priv->tx_mapping[tx_head],
+	dma_sync_single_for_device(&priv->pdev->dev, priv->tx_mapping[tx_head],
 				   priv->tx_buf_size, DMA_TO_DEVICE);
 
 	txdes1 = TX_DESC1_LTS | TX_DESC1_FTS | (len & TX_DESC1_BUF_SIZE_MASK);
@@ -493,7 +493,7 @@ static int moxart_mac_probe(struct platform_device *pdev)
 	priv->tx_buf_size = TX_BUF_SIZE;
[… more lines in the raw message]

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

drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +2 -0
index 8b614b0201e7..ae72cde71343 100644

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

drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +1 -0
index 502fbbc082fb..b32f1f5d841f 100644

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

drivers/net/geneve.c +9 -6
index 1ab94b5f9bbf..605332f36d9d 100644

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

drivers/net/phy/phy_device.c +6 -0
index 0d3f8fe8e42c..834a68d75832 100644

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

drivers/net/plip/plip.c +1 -1
index 82d609401711..2a2cb9d453e8 100644

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

drivers/net/virtio_net.c +4 -1
index 53cefad2a79d..48fb7bdc0f0b 100644

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

drivers/ntb/test/ntb_tool.c +5 -3
index b7bf3f863d79..5ee0afa621a9 100644

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

drivers/nvme/target/tcp.c +2 -1
index f592e5f7f5f3..889c5433c94d 100644

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

drivers/pci/controller/pci-aardvark.c +24 -9
index 7cc2c54daad0..215f7510de9a 100644

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

drivers/pci/quirks.c +3 -0
index 4893b1e82403..a531064233f9 100644

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

drivers/phy/samsung/phy-exynos-pcie.c +9 -16
index 578cfe07d07a..53c9230c2907 100644

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

drivers/pinctrl/intel/pinctrl-intel.c +6 -8
index 826d494f3cc6..48f55991ae8c 100644

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

drivers/pinctrl/nomadik/pinctrl-nomadik.c +3 -1
index 4757bf964d3c..6dd930a839ec 100644

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

drivers/pinctrl/pinctrl-amd.c +9 -2
index ecab9064a845..5c4acf2308d4 100644

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

drivers/pinctrl/qcom/pinctrl-msm8916.c +2 -2
index 396db12ae904..bf68913ba821 100644

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

drivers/pinctrl/qcom/pinctrl-sm8250.c +1 -1
index af144e724bd9..3bd7f9fedcc3 100644

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

drivers/pinctrl/sunxi/pinctrl-sun50i-h6-r.c +1 -0
index c7d90c44e87a..7b4b9f3d4555 100644

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

drivers/pinctrl/sunxi/pinctrl-sunxi.c +4 -3
index 1431ab21aca6..30ca0fe5c31a 100644

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

drivers/platform/chrome/cros_ec_proto.c +4 -4
index ed2b4807328d..1575d603d3ff 100644

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

drivers/scsi/lpfc/lpfc_debugfs.c +10 -10
index 08b2e85dcd7d..79bc86ba59b3 100644

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

drivers/scsi/lpfc/lpfc_sli.c +3 -1
index fb69416c9623..f594a006d04c 100644

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

drivers/scsi/ufs/ufs-mediatek.c +55 -5

60 lines not on this page · raw message

drivers/spi/spi-meson-spicc.c +101 -28

129 lines not on this page · raw message

drivers/tty/serial/ucc_uart.c +2 -0
index 6000853973c1..3cc9ef08455c 100644

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

drivers/usb/cdns3/cdns3-gadget.c +2 -2
index ae049eb28b93..3f1ce8911077 100644

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

drivers/usb/dwc2/gadget.c +2 -1
index e1cebf581a4a..519bb82b00e8 100644

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

drivers/usb/gadget/function/uvc_queue.c +12 -5
index 99dc9adf56ef..a64b842665b9 100644

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

drivers/usb/gadget/function/uvc_video.c +1 -1
index b4a763e5f70e..e170e88abf3a 100644

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

drivers/usb/gadget/legacy/inode.c +1 -0
index 3279b4767424..9e8b678f0548 100644

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

drivers/usb/host/ohci-ppc-of.c +1 -0
index 45f7cceb6df3..98e46725999e 100644

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

drivers/usb/renesas_usbhs/rza.c +4 -0
index 24de64edb674..2d77edefb4b3 100644

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

drivers/vfio/vfio.c +1 -0
index 3c034fe14ccb..818e47fc0896 100644

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

drivers/video/fbdev/i740fb.c +7 -2
index 52cce0db8bd3..ad5ced4ef972 100644

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

drivers/virt/vboxguest/vboxguest_linux.c +6 -3
index 73eb34849eab..4ccfd30c2a30 100644

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

drivers/xen/xenbus/xenbus_dev_frontend.c +2 -2
index 597af455a522..0792fda49a15 100644

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

fs/btrfs/block-group.c +3 -1
index 4b2282aa274e..909cc00ef5ce 100644

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

fs/btrfs/relocation.c +6 -1
index 429a198f8937..673e11fcf3fc 100644

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

fs/btrfs/tree-log.c +3 -1
index bed6811476b0..e9e1aae89030 100644

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

fs/ceph/caps.c +13 -14
index d1faa9d2f1e8..883bb91ee257 100644

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

fs/ceph/mds_client.c +5 -2
index 912903de4de4..78d052dc1798 100644

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

fs/ceph/mds_client.h +0 -6
index 97c7f7bfa55f..2667350eb72c 100644

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

fs/cifs/misc.c +6 -0
index 5906f7f140eb..699f676ded47 100644

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

fs/cifs/smb2ops.c +3 -2
index 735aafee63be..07895e9d537c 100644

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

fs/ext4/namei.c +2 -5
index 5821638cb893..7d3ec39121f7 100644

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

fs/ext4/resize.c +10 -0
index fa3c854125bb..862cbbc01d6e 100644

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

fs/f2fs/node.c +5 -1
index 69c6bcaf5aae..0e6e73bc42d4 100644

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

fs/f2fs/segment.c +13 -0
index 841a978da083..e98c90bd8ef6 100644

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

fs/nfs/nfs4idmap.c +24 -22

46 lines not on this page · raw message

fs/nfs/nfs4proc.c +11 -9
index cbb39aff8182..a808763c52c1 100644

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

fs/ntfs3/fslog.c +1 -1
index 49b7df616778..614513460b8e 100644

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

fs/ntfs3/fsntfs.c +6 -1
index 4de9acb16968..24b57c3cc625 100644

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

fs/ntfs3/index.c +1 -1
index 6f81e3a49abf..76ebea253fa2 100644

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

fs/ntfs3/inode.c +1 -0
index 879952254071..b2cc1191be69 100644

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

fs/ntfs3/super.c +4 -4
index 7f85ec83e196..f3b88c7e35f7 100644

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

fs/ntfs3/xattr.c +11 -11
index 0968565ff2ca..872eb56bb170 100644

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

fs/overlayfs/super.c +5 -2
index 7bb0a47cb615..9837aaf9caf1 100644

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

fs/xfs/xfs_filestream.c +4 -3
index 6a3ce0f6dc9e..be9bcf8a1f99 100644

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

fs/xfs/xfs_fsops.c +20 -30

50 lines not on this page · raw message

fs/xfs/xfs_icache.c +4 -18
index f2210d927481..5e44d7bbd8fc 100644

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

fs/xfs/xfs_inode.c +49 -30

79 lines not on this page · raw message

fs/xfs/xfs_ioctl.c +1 -1
index fba52e75e98b..bcc3c18c8080 100644

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

fs/xfs/xfs_trans.c +86 -0

86 lines not on this page · raw message

fs/xfs/xfs_trans.h +3 -0
index 50da47f23a07..faba74d4c702 100644

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

fs/xfs/xfs_trans_dquot.c +0 -1
index 3872ce671411..955c457e585a 100644

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

include/asm-generic/bitops/atomic.h +0 -6
index 3096f086b5a3..71ab4ba9c25d 100644

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

include/linux/bpfptr.h +6 -2
index 546e27fc6d46..ee28d2b0a309 100644

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

include/linux/io-pgtable.h +10 -5
index 86af6f0a00a2..ca98aeadcc80 100644

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

include/linux/nmi.h +2 -0
index 750c7f395ca9..f700ff2df074 100644

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

include/linux/sunrpc/xdr.h +2 -2
index 4417f667c757..3a2c714d6b62 100644

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

include/linux/uacce.h +4 -2
index 48e319f40275..9ce88c28b0a8 100644

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

include/sound/control.h +1 -1
index 985c51a8fb74..a1fc7e0a47d9 100644

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

include/sound/core.h +8 -0
index 6d4cc49584c6..39cee40ac22e 100644

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

kernel/bpf/arraymap.c +6 -0
index 447def540544..88014cd31b28 100644

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

kernel/bpf/hashtab.c +3 -5
index 32471ba02708..47eebb88695e 100644

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

kernel/trace/trace_eprobe.c +82 -6

88 lines not on this page · raw message

kernel/trace/trace_event_perf.c +4 -3
index fba8cb77a73a..083f648e3265 100644

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

kernel/trace/trace_events.c +1 -0
index c4f654efb77a..c84c94334a60 100644

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

kernel/trace/trace_probe.c +18 -11
index bb4605b60de7..2bbe4a7c6a2b 100644

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

kernel/watchdog.c +16 -5
index ad912511a0c0..1cfa269bd448 100644

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

lib/list_debug.c +10 -2
index 5d5424b51b74..413daa72a3d8 100644

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

net/can/j1939/socket.c +4 -1
index 6dff4510687a..41016aff21c5 100644

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

net/can/j1939/transport.c +7 -1
index 307ee1174a6e..d7d86c944d76 100644

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

net/core/bpf_sk_storage.c +10 -2
index ea61dfe19c86..d2745c54737e 100644

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

net/core/devlink.c +2 -2
index db76c55e1a6d..b4d7a7f749c1 100644

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

net/core/sock_map.c +19 -1
index 6351b6af7aca..795b3acfb9fd 100644

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

net/dsa/port.c +5 -2
index 63e88de96393..a21015d6bd36 100644

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

net/ipv6/ip6_output.c +1 -2
index 04c3cb4c5fec..7951ade74d14 100644

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

net/ipv6/ndisc.c +3 -0
index 4b098521a44c..8108e9a941d0 100644

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

net/netfilter/nf_tables_api.c +57 -13

70 lines not on this page · raw message

net/netlink/genetlink.c +5 -1
index 1afca2a6c2ac..57010927e20a 100644

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

net/netlink/policy.c +12 -2
index 8d7c900e27f4..87e3de0fde89 100644

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

net/qrtr/mhi.c +7 -5
index fa611678af05..49e7cab43d24 100644

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

net/rds/ib_recv.c +1 -0
index 6fdedd9dbbc2..cfbf0e129cba 100644

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

net/sunrpc/auth.c +1 -1
index a9f0d17fdb0d..1bae32c48284 100644

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

net/sunrpc/backchannel_rqst.c +14 -0
index 22a2c235abf1..77e347a45344 100644

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

net/sunrpc/sysfs.c +4 -2
index 326a31422a3c..a7020b1f3ec7 100644

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

net/vmw_vsock/af_vsock.c +9 -1
index 5df530e89e5a..5d46036f3ad7 100644

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

scripts/Makefile.gcc-plugins +1 -1
index 4aad28480035..36814be80264 100644

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

scripts/dummy-tools/dummy-plugin-dir/include/plugin-version.h new file +0 -0
new file mode 100644
index 000000000000..e69de29bb2d1
scripts/dummy-tools/gcc +2 -6
index b2483149bbe5..7db825843435 100755

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

scripts/module.lds.S +2 -0
index 1d0e1e4dc3d2..3a3aa2354ed8 100644

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

security/apparmor/apparmorfs.c +1 -1
index 2ee3b3d29f10..a891705b1d57 100644

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

security/apparmor/audit.c +1 -1
index f7e97c7e80f3..704b0c895605 100644

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

security/apparmor/domain.c +1 -1
index 583680f6cd81..a7b3d8e58ed8 100644

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

security/apparmor/include/lib.h +5 -0
index 7d27db740bc2..ac5054899f6f 100644

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

security/apparmor/include/policy.h +1 -1
index b5b4b8190e65..b5aa4231af68 100644

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

security/apparmor/label.c +7 -6
index 6222fdfebe4e..66bc4704f804 100644

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

security/apparmor/mount.c +5 -3
index aa6fcfde3051..f7bb47daf2ad 100644

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

security/apparmor/policy_unpack.c +7 -5
index 4e1f96b216a8..03c9609ca407 100644

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

sound/core/control.c +4 -3
index a25c0d64d104..f66fe4be30d3 100644

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

sound/core/info.c +3 -3
index a451b24199c3..9f6714e29bbc 100644

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

sound/core/misc.c +94 -0

94 lines not on this page · raw message

sound/core/timer.c +6 -5
index b3214baa8919..e08a37c23add 100644

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

sound/pci/hda/patch_realtek.c +1 -0
index f7ab620d0e30..600ba91f7703 100644

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

sound/soc/codecs/tas2770.c +43 -55

98 lines not on this page · raw message

sound/soc/codecs/tas2770.h +5 -0
index d156666bcc55..f75f40781ab1 100644

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

sound/soc/codecs/tlv320aic32x4.c +9 -0
index d39c7d52ecfd..9f4a629b032b 100644

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

sound/soc/sh/rcar/ssiu.c +2 -0
index 4b8a63e336c7..d7f4646ee029 100644

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

sound/soc/sof/debug.c +3 -3
index a51a928ea40a..5f780ef9581a 100644

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

sound/soc/sof/intel/apl.c +1 -0
index c7ed2b3d6abc..0a42034c4655 100644

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

sound/soc/sof/intel/cnl.c +2 -0
index e115e12a856f..a63b235763ed 100644

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

sound/soc/sof/intel/hda-loader.c +8 -6
index ee09393d42cb..439cb33d2a71 100644

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

sound/soc/sof/intel/hda.c +7 -3
index ddf70902e53c..35cbef171f4a 100644

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

sound/soc/sof/intel/icl.c +1 -0
index ee095b8f2d01..4065c4d3912a 100644

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

sound/soc/sof/intel/shim.h +1 -0
index e9f7d4d7fcce..96707758ebc5 100644

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

sound/soc/sof/intel/tgl.c +4 -0
index 199d41a7dc9b..aba52d8628aa 100644

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

sound/usb/card.c +8 -0
index 1764b9302d46..ff5f8de1bc54 100644

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

sound/usb/mixer_maps.c +25 -9
index 997425ef0a29..3f8f6056ff6a 100644

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

tools/build/feature/test-libcrypto.c +11 -4
index a98174e0569c..bc34a5bbb504 100644

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

tools/perf/tests/switch-tracking.c +13 -5
index 62c0ec21aaa8..72abf5d86f71 100644

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

tools/perf/util/parse-events.c +11 -3
index 3bfe099d8643..b93a36ffeb9e 100644

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

tools/perf/util/probe-event.c +4 -2
index a834918a0a0d..68844c48f688 100644

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

tools/testing/selftests/ftrace/test.d/kprobe/kprobe_syntax_errors.tc +0 -1
index fa928b431555..7c02509c71d0 100644

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

tools/testing/selftests/net/forwarding/custom_multipath_hash.sh +16 -8
index a15d21dc035a..56eb83d1a3bd 100755

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

tools/testing/selftests/net/forwarding/gre_custom_multipath_hash.sh +16 -8
index a73f52efcb6c..0446db9c6f74 100755

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

tools/testing/selftests/net/forwarding/ip6gre_custom_multipath_hash.sh +16 -8
index 8fea2c2e0b25..d40183b4eccc 100755

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

tools/vm/slabinfo.c +22 -10
index 5b98f3ee58a5..0fffaeedee76 100644

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

virt/kvm/kvm_main.c +4 -10
index 251b4143f505..86fc429a0e43 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.