Skip to contentSkip to conversation

Linux 5.15.24

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Feb 16, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 5.15.24 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/devicetree/bindings/arm/omap/omap.txt                         |    3 
 Makefile                                                                    |    2 
 arch/arm/boot/dts/Makefile                                                  |    1 
 arch/arm/boot/dts/imx23-evk.dts                                             |    1 
 arch/arm/boot/dts/imx6qdl-udoo.dtsi                                         |    5 
 arch/arm/boot/dts/imx7ulp.dtsi                                              |    2 
 arch/arm/boot/dts/meson.dtsi                                                |    8 
 arch/arm/boot/dts/meson8.dtsi                                               |   24 -
 arch/arm/boot/dts/meson8b.dtsi                                              |   24 -
 arch/arm/boot/dts/omap3-beagle-ab4.dts                                      |   47 ++
 arch/arm/boot/dts/omap3-beagle.dts                                          |   33 -
 arch/arm/boot/dts/ste-ux500-samsung-skomer.dts                              |    4 
 arch/arm/mach-socfpga/Kconfig                                               |    2 
 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi                       |    4 
 arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts                       |    2 
 arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi                           |    2 
 arch/arm64/boot/dts/freescale/imx8mq.dtsi                                   |   10 
 arch/mips/cavium-octeon/octeon-memcpy.S                                     |    2 
 arch/mips/include/asm/asm.h                                                 |    4 
 arch/mips/include/asm/ftrace.h                                              |    4 
 arch/mips/include/asm/r4kcache.h                                            |    4 
 arch/mips/include/asm/unaligned-emul.h                                      |  176 +++++-----
 arch/mips/kernel/mips-r2-to-r6-emul.c                                       |  104 ++---
 arch/mips/kernel/r2300_fpu.S                                                |    6 
 arch/mips/kernel/r4k_fpu.S                                                  |    2 
 arch/mips/kernel/relocate_kernel.S                                          |   22 -
 arch/mips/kernel/scall32-o32.S                                              |   10 
 arch/mips/kernel/scall64-n32.S                                              |    2 
 arch/mips/kernel/scall64-n64.S                                              |    2 
 arch/mips/kernel/scall64-o32.S                                              |   10 
 arch/mips/kernel/syscall.c                                                  |    8 
 arch/mips/lib/csum_partial.S                                                |    4 
 arch/mips/lib/memcpy.S                                                      |    4 
 arch/mips/lib/memset.S                                                      |    2 
 arch/mips/lib/strncpy_user.S                                                |    4 
 arch/mips/lib/strnlen_user.S                                                |    2 
 arch/powerpc/include/asm/book3s/32/pgtable.h                                |    1 
 arch/powerpc/include/asm/book3s/64/pgtable.h                                |    2 
 arch/powerpc/include/asm/fixmap.h                                           |    6 
 arch/powerpc/include/asm/nohash/32/pgtable.h                                |    1 
 arch/powerpc/include/asm/nohash/64/pgtable.h                                |    1 
 arch/powerpc/mm/pgtable.c                                                   |    9 
 arch/riscv/Makefile                                                         |    6 
 arch/riscv/kernel/cpu-hotplug.c                                             |    2 
 arch/riscv/kernel/stacktrace.c                                              |    9 
 arch/x86/events/intel/lbr.c                                                 |    3 
 arch/x86/events/rapl.c                                                      |    9 
 arch/x86/kernel/cpu/sgx/encl.c                                              |    2 
 arch/x86/kvm/cpuid.c                                                        |   13 
 arch/x86/kvm/svm/svm.c                                                      |   16 
 arch/x86/kvm/vmx/evmcs.c                                                    |    1 
 arch/x86/kvm/vmx/evmcs.h                                                    |    4 
 arch/x86/kvm/vmx/vmx.c                                                      |   25 +
 drivers/accessibility/speakup/speakup_dectlk.c                              |    1 
 drivers/acpi/arm64/iort.c                                                   |   14 
 drivers/acpi/ec.c                                                           |   10 
 drivers/acpi/sleep.c                                                        |   15 
 drivers/base/power/wakeup.c                                                 |   41 +-
 drivers/bus/mhi/pci_generic.c                                               |    2 
 drivers/clocksource/timer-ti-dm-systimer.c                                  |    2 
 drivers/gpio/gpio-aggregator.c                                              |   18 -
 drivers/gpio/gpio-sifive.c                                                  |    2 
 drivers/gpio/gpiolib-cdev.c                                                 |    6 
 drivers/gpio/gpiolib-sysfs.c                                                |    7 
 drivers/gpio/gpiolib.h                                                      |   12 
 drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c                       |    2 
 drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c                     |    2 
 drivers/gpu/drm/amd/pm/amdgpu_pm.c                                          |    3 
 drivers/gpu/drm/bridge/nwl-dsi.c                                            |   12 
 drivers/gpu/drm/drm_panel_orientation_quirks.c                              |   12 
 drivers/gpu/drm/i915/intel_pm.c                                             |   75 ++--
 drivers/gpu/drm/panel/panel-simple.c                                        |    1 
 drivers/gpu/drm/rockchip/rockchip_vop_reg.c                                 |    8 
 drivers/gpu/drm/vc4/vc4_dsi.c                                               |   14 
 drivers/gpu/drm/vc4/vc4_hdmi.c                                              |    2 
 drivers/hwmon/dell-smm-hwmon.c                                              |   12 
 drivers/iio/industrialio-buffer.c                                           |   14 
 drivers/iommu/iommu.c                                                       |    9 
 drivers/irqchip/irq-realtek-rtl.c                                           |    8 
 drivers/misc/eeprom/ee1004.c                                                |    3 
 drivers/misc/fastrpc.c                                                      |    9 
 drivers/mmc/core/sd.c                                                       |    8 
 drivers/mmc/host/sdhci-of-esdhc.c                                           |    8 
 drivers/net/bonding/bond_3ad.c                                              |    3 
 drivers/net/dsa/bcm_sf2.c                                                   |    7 
 drivers/net/dsa/lantiq_gswip.c                                              |   14 
 drivers/net/dsa/mt7530.c                                                    |    2 
 drivers/net/dsa/mv88e6xxx/chip.c                                            |   15 
 drivers/net/dsa/ocelot/felix_vsc9959.c                                      |    4 
 drivers/net/dsa/qca/ar9331.c                                                |    3 
 drivers/net/ethernet/amd/xgbe/xgbe-pci.c                                    |    3 
 drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c                            |    4 
 drivers/net/ethernet/intel/ice/ice.h                                        |    3 
 drivers/net/ethernet/intel/ice/ice_common.c                                 |    3 
 drivers/net/ethernet/intel/ice/ice_lag.c                                    |   34 +
 drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h                              |    1 
 drivers/net/ethernet/intel/ice/ice_main.c                                   |   28 +
 drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c                           |   13 
 drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c                      |    2 
 drivers/net/ethernet/mscc/ocelot.c                                          |   11 
 drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c                     |   12 
 drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c                           |    2 
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c                           |   13 
 drivers/net/mdio/mdio-aspeed.c                                              |    1 
 drivers/net/phy/marvell.c                                                   |   17 
 drivers/net/usb/ax88179_178a.c                                              |   68 ++-
 drivers/net/veth.c                                                          |   13 
 drivers/nvme/host/pci.c                                                     |    3 
 drivers/nvme/host/tcp.c                                                     |   10 
 drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c                               |    3 
 drivers/phy/broadcom/Kconfig                                                |    3 
 drivers/phy/phy-core-mipi-dphy.c                                            |    4 
 drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c                            |    3 
 drivers/phy/st/phy-stm32-usbphyc.c                                          |    2 
 drivers/phy/ti/phy-j721e-wiz.c                                              |    1 
 drivers/phy/xilinx/phy-zynqmp.c                                             |   11 
 drivers/s390/cio/device.c                                                   |    2 
 drivers/scsi/lpfc/lpfc.h                                                    |   13 
 drivers/scsi/lpfc/lpfc_attr.c                                               |    4 
 drivers/scsi/lpfc/lpfc_init.c                                               |    2 
 drivers/scsi/lpfc/lpfc_sli.c                                                |    8 
 drivers/scsi/myrs.c                                                         |    3 
 drivers/scsi/pm8001/pm80xx_hwi.c                                            |   16 
 drivers/scsi/pm8001/pm80xx_hwi.h                                            |    6 
 drivers/scsi/qedf/qedf_io.c                                                 |    1 
 drivers/scsi/qedf/qedf_main.c                                               |    7 
 drivers/scsi/ufs/ufshcd-pltfrm.c                                            |    7 
 drivers/scsi/ufs/ufshcd.c                                                   |    9 
 drivers/scsi/ufs/ufshci.h                                                   |    3 
 drivers/staging/fbtft/fbtft.h                                               |    5 
 drivers/target/iscsi/iscsi_target_tpg.c                                     |    3 
 drivers/thermal/intel/int340x_thermal/Kconfig                               |    4 
 drivers/thermal/intel/int340x_thermal/int3401_thermal.c                     |    8 
 drivers/thermal/intel/int340x_thermal/processor_thermal_device.c            |   36 +-
 drivers/thermal/intel/int340x_thermal/processor_thermal_device.h            |    4 
 drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c        |   18 -
 drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci_legacy.c |    8 
 drivers/thermal/intel/int340x_thermal/processor_thermal_mbox.c              |  104 +++--
 drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c              |   23 -
 drivers/tty/n_tty.c                                                         |    4 
 drivers/tty/vt/vt_ioctl.c                                                   |    3 
 drivers/usb/common/ulpi.c                                                   |   10 
 drivers/usb/dwc2/gadget.c                                                   |    2 
 drivers/usb/dwc3/gadget.c                                                   |   13 
 drivers/usb/gadget/composite.c                                              |    3 
 drivers/usb/gadget/function/f_fs.c                                          |   56 ++-
 drivers/usb/gadget/function/f_uac2.c                                        |    4 
 drivers/usb/gadget/function/rndis.c                                         |    9 
 drivers/usb/gadget/legacy/raw_gadget.c                                      |    2 
 drivers/usb/gadget/udc/renesas_usb3.c                                       |    2 
 drivers/usb/serial/ch341.c                                                  |    1 
 drivers/usb/serial/cp210x.c                                                 |    2 
 drivers/usb/serial/ftdi_sio.c                                               |    3 
 drivers/usb/serial/ftdi_sio_ids.h                                           |    3 
 drivers/usb/serial/option.c                                                 |    2 
 drivers/video/fbdev/core/fbcon.c                                            |    7 
 fs/gfs2/file.c                                                              |    7 
 fs/nfs/callback.h                                                           |    2 
 fs/nfs/callback_proc.c                                                      |    2 
 fs/nfs/callback_xdr.c                                                       |   18 -
 fs/nfs/client.c                                                             |    9 
 fs/nfs/dir.c                                                                |   24 -
 fs/nfs/nfs4_fs.h                                                            |   12 
 fs/nfs/nfs4client.c                                                         |    5 
 fs/nfs/nfs4namespace.c                                                      |   19 -
 fs/nfs/nfs4proc.c                                                           |   96 ++++-
 fs/nfs/nfs4state.c                                                          |    6 
 fs/nfs/nfs4xdr.c                                                            |    9 
 fs/nfsd/nfs3proc.c                                                          |   13 
 fs/nfsd/nfs3xdr.c                                                           |    2 
 fs/nfsd/nfs4proc.c                                                          |   13 
 fs/nfsd/nfs4xdr.c                                                           |    8 
 fs/nfsd/trace.h                                                             |   14 
 fs/nfsd/vfs.c                                                               |    4 
 include/linux/memcontrol.h                                                  |    5 
 include/linux/nfs_fs.h                                                      |    4 
 include/linux/nfs_fs_sb.h                                                   |    2 
 include/linux/nfs_xdr.h                                                     |    1 
 include/linux/suspend.h                                                     |   15 
 include/net/dst_metadata.h                                                  |   14 
 include/uapi/linux/netfilter/nf_conntrack_common.h                          |    2 
 kernel/events/core.c                                                        |   16 
 kernel/power/main.c                                                         |    5 
 kernel/power/process.c                                                      |    2 
 kernel/power/snapshot.c                                                     |   21 -
 kernel/power/suspend.c                                                      |    2 
 kernel/sched/core.c                                                         |   12 
 kernel/seccomp.c                                                            |   10 
 kernel/signal.c                                                             |    5 
 kernel/trace/trace_events_hist.c                                            |    3 
 mm/memcontrol.c                                                             |   10 
 net/can/isotp.c                                                             |   29 +
 net/ipv4/ipmr.c                                                             |    2 
 net/ipv6/ip6mr.c                                                            |    2 
 net/mptcp/pm_netlink.c                                                      |    8 
 net/netfilter/nf_conntrack_netlink.c                                        |    3 
 net/sched/sch_api.c                                                         |    2 
 net/sunrpc/clnt.c                                                           |    5 
 net/sunrpc/sysfs.c                                                          |   41 +-
 net/tipc/name_distr.c                                                       |    2 
 scripts/Makefile.extrawarn                                                  |    1 
 security/integrity/digsig_asymmetric.c                                      |   15 
 security/integrity/ima/ima_fs.c                                             |    2 
 security/integrity/ima/ima_policy.c                                         |    8 
 security/integrity/ima/ima_template.c                                       |   10 
 security/integrity/integrity_audit.c                                        |    2 
 virt/kvm/eventfd.c                                                          |    8 
 207 files changed, 1465 insertions(+), 791 deletions(-)

Adam Ford (1):
usb: gadget: udc: renesas_usb3: Fix host to USB_ROLE_NONE transition

Al Cooper (1):
phy: broadcom: Kconfig: Fix PHY_BRCM_USB config option

Alex Deucher (1):
drm/amdgpu/display: change pipe policy for DCN 2.0

Alexander Stein (1):
arm64: dts: imx8mq: fix lcdif port node

Amadeusz Sławiński (1):
PM: hibernate: Remove register_nosave_region_late()

Amelie Delaunay (1):
usb: dwc2: gadget: don't try to disable ep0 in dwc2_hsotg_suspend

Andi Kleen (1):
x86/perf: Avoid warning for Arch LBR without XSAVE

Andrey Skvortsov (1):
mmc: core: Wait for command setting 'Power Off Notification' bit to complete

Andy Shevchenko (1):
gpiolib: Never return internal error codes to user space

Anna Schumaker (1):
sunrpc: Fix potential race conditions in rpc_sysfs_xprt_state_change()

Antoine Tenart (3):
thermal/drivers/int340x: Improve the tcc offset saving for suspend/resume
net: do not keep the dst cache when uncloning an skb dst and its metadata
net: fix a memleak when uncloning an skb dst and its metadata

Armin Wolf (1):
hwmon: (dell-smm) Speed up setting of fan speed

Arnd Bergmann (1):

      thermal: int340x: Limit Kconfig to 64-bit

Aurelien Jarno (1):
riscv: fix build with binutils 2.38

Bob Peterson (1):
gfs2: Fix gfs2_release for non-writers regression

Brian Norris (1):
drm/rockchip: vop: Correct RK3399 VOP register fields

Cameron Williams (1):
USB: serial: ftdi_sio: add support for Brainboxes US-159/235/320

Changbin Du (1):
riscv: eliminate unreliable __builtin_frame_address(1)

Christoph Niedermaier (1):
drm/panel: simple: Assign data from panel_dpi_probe() correctly

Christophe Leroy (1):
powerpc/fixmap: Fix VM debug warning on unmap

Chuck Lever (5):
NFSD: Fix NFSv3 SETATTR/CREATE's handling of large file sizes
NFSD: Fix ia_size underflow
NFSD: Clamp WRITE offsets
NFSD: Fix offset type in I/O trace points
NFSD: Fix the behavior of READ near OFFSET_MAX

Colin Foster (1):
net: mscc: ocelot: fix mutex lock error during ethtool stats read

Dan Carpenter (2):
phy: stm32: fix a refcount leak in stm32_usbphyc_pll_enable()
ice: fix an error code in ice_cfg_phy_fec()

Dave Ertman (2):
ice: Fix KASAN error in LAG NETDEV_UNREGISTER handler
ice: Avoid RTNL lock when re-creating auxiliary device

Dave Stevenson (1):
drm/vc4: hdmi: Allow DBLCLK modes even if horz timing is odd.

Dongjin Kim (2):
arm64: dts: meson-g12b-odroid-n2: fix typo 'dio2133'
arm64: dts: meson-sm1-bananapi-m5: fix wrong GPIO domain for GPIOE_2

Eric Biggers (1):
ima: fix reference leak in asymmetric_verify()

Eric Dumazet (2):
ipmr,ip6mr: acquire RTNL before calling ip[6]mr_free_table() on failure path
veth: fix races around rq->rx_notify_masked

Fabio Estevam (2):
ARM: dts: imx23-evk: Remove MX23_PAD_SSP1_DETECT from hog group
ARM: dts: imx6qdl-udoo: Properly describe the SD card detect

Fabrice Gasnier (1):
usb: dwc2: drd: fix soft connect when gadget is unconfigured

Florian Westphal (1):
netfilter: ctnetlink: disable helper autoassign

Geert Uytterhoeven (1):
gpio: aggregator: Fix calling into sleeping GPIO controllers

Greg Kroah-Hartman (3):
Revert "usb: dwc2: drd: fix soft connect when gadget is unconfigured"
usb: gadget: rndis: check size of RNDIS_MSG_SET command Linux 5.15.24

Helge Deller (1):
fbcon: Avoid 'cap' set but not used warning

Hou Wenlong (1):
KVM: eventfd: Fix false positive RCU usage warning

Jakob Koschel (2):
vt_ioctl: fix array_index_nospec in vt_setactivate
vt_ioctl: add array_index_nospec to VT_ACTIVATE

James Clark (1):
perf: Always wake the parent event

James Smart (2):
scsi: lpfc: Remove NVMe support if kernel has NVME_FC disabled
scsi: lpfc: Reduce log messages seen after firmware download

Jann Horn (2):
net: usb: ax88179_178a: Fix out-of-bounds accesses in RX fixup
usb: raw-gadget: fix handling of dual-direction-capable endpoints

Jesse Brandeburg (1):
ice: fix IPIP and SIT TSO offload

Jiasheng Jiang (1):
mmc: sdhci-of-esdhc: Check for error num after setting mask

Jim Mattson (1):
KVM: x86: Report deprecated x87 features in supported CPUID

Jisheng Zhang (2):
net: stmmac: reduce unnecessary wakeups from eee sw timer
net: stmmac: dwmac-sun8i: use return val of readl_poll_timeout()

Joel Stanley (1):
net: mdio: aspeed: Add missing MODULE_DEVICE_TABLE

Johan Hovold (2):

      USB: serial: cp210x: add NCR Retail IO box id
      USB: serial: cp210x: add CPI Bulk Coin Recycler id

John Garry (1):
scsi: pm8001: Fix bogus FW crash for maxcpus=1

Jon Maloy (1):
tipc: rate limit warning for received illegal binding update

Jonas Malaco (1):
eeprom: ee1004: limit i2c reads to I2C_SMBUS_BLOCK_MAX

Kees Cook (2):
seccomp: Invalidate seccomp mode to catch death failures
signal: HANDLER_EXIT should clear SIGNAL_UNKILLABLE

Kishen Maloor (1):
mptcp: netlink: process IPv6 addrs in creating listening sockets

Kishon Vijay Abraham I (1):
phy: ti: Fix missing sentinel for clk_div_table

Kiwoong Kim (2):
scsi: ufs: Use generic error code in ufshcd_set_dev_pwr_mode()
scsi: ufs: Treat link loss as fatal error

Krzysztof Kozlowski (1):
ARM: socfpga: fix missing RESET_CONTROLLER

Linus Walleij (1):
ARM: dts: Fix boot regression on Skomer

Liu Ying (1):
phy: dphy: Correct clk_pre parameter

Louis Peens (1):
nfp: flower: fix ida_idx not being released

Lutz Koschorreck (2):
arm64: dts: meson-sm1-odroid: use correct enable-gpio pin for tf-io regulator
arm64: dts: meson-sm1-odroid: fix boot loop after reboot

Mahesh Bandewar (1):
bonding: pair enable_port with slave_arr_updates

Martin Blumenstingl (3):
ARM: dts: meson: Fix the UART compatible strings
ARM: dts: meson8: Fix the UART device-tree schema validation
ARM: dts: meson8b: Fix the UART device-tree schema validation

Martin Kepplinger (1):
arm64: dts: imx8mq: fix mipi_csi bidirectional port numbers

Mathias Krause (2):
misc: fastrpc: avoid double fput() on failed usercopy
iio: buffer: Fix file related error handling in IIO_BUFFER_GET_FD_IOCTL

Nathan Chancellor (1):
Makefile.extrawarn: Move -Wunaligned-access to W=1

NeilBrown (1):
NFS: change nfs_access_get_cached to only report the mask

Niklas Cassel (1):
gpio: sifive: use the correct register to read output values

Olga Kornievskaia (7):
NFSv4 only print the label when its queried
NFSv4 remove zero number of fs_locations entries error check NFSv4 store server support for fs_location attribute NFSv4.1 query for fs_location attr on a new file system NFSv4 expose nfs_parse_server_name function
NFSv4 handle port presence in fs_location server string SUNRPC allow for unspecified transport time in rpc_clnt_add_xprt

Oliver Hartkopp (2):
can: isotp: fix potential CAN frame reception race in isotp_rcv()
can: isotp: fix error path in isotp_sendmsg() to unlock wait queue

Padmanabha Srinivasaiah (1):
drm/vc4: Fix deadlock on DSI device attach error

Pavel Hofman (1):
usb: gadget: f_uac2: Define specific wTerminalType

Pavel Parkhomenko (2):
net: phy: marvell: Fix RGMII Tx/Rx delays setting in 88e1121-compatible PHYs
net: phy: marvell: Fix MDI-x polarity setting in 88e1118-compatible PHYs

Pawel Dembicki (1):
USB: serial: option: add ZTE MF286D modem

Peter Zijlstra (1):
sched: Avoid double preemption in __cond_resched_*lock*()

Pingfan Liu (1):
riscv: cpu-hotplug: clear cpu from numa map when teardown

Rafael J. Wysocki (2):
PM: s2idle: ACPI: Fix wakeup interrupts handling
ACPI: PM: s2idle: Cancel wakeup before dispatching EC GPE

Raju Rangoju (1):
net: amd-xgbe: disable interrupts during pci removal

Raymond Jay Golo (1):
drm: panel-orientation-quirks: Add quirk for the 1Netbook OneXPlayer

Reinette Chatre (1):
x86/sgx: Silence softlockup detection when releasing large enclaves

Rob Herring (1):
ARM: dts: imx7ulp: Fix 'assigned-clocks-parents' typo

Robert Hancock (1):
phy: xilinx: zynqmp: Fix bus width setting for SGMII

Robert-Ionut Alexa (1):
dpaa2-eth: unregister the netdev before disconnecting from the PHY

Roberto Sassu (1):
ima: Allow template selection with ima_template[_fmt]= after ima_hash=

Robin Murphy (1):
ACPI/IORT: Check node revision for PMCG resources

Roman Gushchin (1):
mm: memcg: synchronize objcg lists with a dedicated spinlock

Sagi Grimberg (1):
nvme-tcp: fix bogus request completion when failing to send AER

Samuel Mendoza-Jonas (1):
ixgbevf: Require large buffers for build_skb on 82599VF

Samuel Thibault (1):
speakup-dectlk: Restore pitch setting

Sander Vanheule (1):
irqchip/realtek-rtl: Service all pending interrupts

Saurav Kashyap (3):
scsi: qedf: Add stag_work to all the vports
scsi: qedf: Fix refcount issue when LOGO is received during TMF
scsi: qedf: Change context reset messages to ratelimited

Sean Anderson (2):
usb: ulpi: Move of_node_put to ulpi_dev_release
usb: ulpi: Call of_node_put correctly

Sean Christopherson (2):
KVM: SVM: Don't kill SEV guest if SMAP erratum triggers in usermode
KVM: VMX: Set vmcs.PENDING_DBG.BS on #DB in STI/MOVSS blocking shadow

Slark Xiao (2):
bus: mhi: pci_generic: Add mru_default for Foxconn SDX55
bus: mhi: pci_generic: Add mru_default for Cinterion MV31-W

Song Liu (1):
perf: Fix list corruption in perf_cgroup_switch()

Srinivas Pandruvada (1):

      thermal/drivers/int340x: processor_thermal: Suppot 64 bit RFIM responses

Steen Hegelund (1):
net: sparx5: Fix get_stat64 crash in tcpdump

Stefan Berger (2):
ima: Remove ima_policy file before directory
ima: Do not print policy rule with inactive LSM labels

Stephan Brunner (1):
USB: serial: ch341: add support for GW Instek USB2.0-Serial devices

Stephane Eranian (1):
perf/x86/rapl: fix AMD event handling

Sumeet Pawnikar (1):

      thermal/drivers/int340x: Fix RFIM mailbox write commands

Szymon Heidrich (1):
USB: gadget: validate interface OS descriptor requests

TATSUKAWA KOSUKE (立川 江介) (1):
n_tty: wake up poll(POLLRDNORM) on receiving data

Thomas Bogendoerfer (2):
MIPS: Fix build error due to PTR used in more places
MIPS: octeon: Fix missed PTR->PTR_WD conversion

Tom Zanussi (1):
tracing: Propagate is_signed to expression

Tong Zhang (1):
scsi: myrs: Fix crash in error case

Tony Lindgren (1):
ARM: dts: Fix timer regression for beagleboard revision c

Trond Myklebust (2):
NFS: Fix initialisation of nfs_client cl_flags field NFSv4.1: Fix uninitialised variable in devicenotify

Udipto Goswami (2):
usb: f_fs: Fix use-after-free for epfile
usb: dwc3: gadget: Prevent core from processing stale TRBs

Uwe Kleine-König (1):
staging: fbtft: Fix error path in fbtft_driver_module_init()

Victor Nogueira (1):
net: sched: Clarify error message when qdisc kind is unknown

Vijayanand Jitta (1):
iommu: Fix potential use-after-free during probe

Ville Syrjälä (2):
drm/i915: Allow !join_mbus cases for adlp+ dbuf configuration drm/i915: Populate pipe dbuf slices more accurately during readout

Vineeth Vijayan (1):
s390/cio: verify the driver availability for path_event call

Vitaly Kuznetsov (2):
KVM: nVMX: eVMCS: Filter out VM_EXIT_SAVE_VMX_PREEMPTION_TIMER
KVM: nVMX: Also filter MSR_IA32_VMX_TRUE_PINBASED_CTLS when eVMCS

Vladimir Oltean (7):
net: dsa: mv88e6xxx: don't use devres for mdiobus
net: dsa: ar9331: register the mdiobus under devres
net: dsa: bcm_sf2: don't use devres for mdiobus
net: dsa: felix: don't use devres for mdiobus
net: dsa: mt7530: fix kernel bug in mdiobus_free() when unbinding
net: dsa: lantiq_gswip: don't use devres for mdiobus
net: dsa: mv88e6xxx: fix use-after-free in mv88e6xxx_mdios_unregister

Wu Zheng (1):
nvme-pci: add the IGNORE_DEV_SUBNQN quirk for Intel P4500/P4600 SSDs

Xiaoke Wang (3):
integrity: check the return value of audit_log_start()
nfs: nfs4clinet: check the return value of kstrdup()
scsi: ufs: ufshcd-pltfrm: Check the return value of devm_kstrdup()

Xiyu Yang (1):
net/sunrpc: fix reference count leaks in rpc_sysfs_xprt_state_change

Yang Wang (1):
drm/amd/pm: fix hwmon node of power1_label create issue

Zhan Liu (1):
drm/amd/display: Correct MPC split policy for DCN301

ZouMingzhe (1):
scsi: target: iscsi: Make sure the np under each tpg is unique

[email protected] (2):
NFS: Don't overfill uncached readdir pages
NFS: Don't skip directory entries when doing uncached readdir

author maintainer
#1 lore raw
Documentation/devicetree/bindings/arm/omap/omap.txt +3 -0
index e77635c5422c..fa8b31660cad 100644
@@ -119,6 +119,9 @@ Boards (incomplete list of examples):
 - OMAP3 BeagleBoard : Low cost community board
   compatible = "ti,omap3-beagle", "ti,omap3430", "ti,omap3"
 
+- OMAP3 BeagleBoard A to B4 : Early BeagleBoard revisions A to B4 with a timer quirk
+  compatible = "ti,omap3-beagle-ab4", "ti,omap3-beagle", "ti,omap3430", "ti,omap3"
+
 - OMAP3 Tobi with Overo : Commercial expansion board with daughter board
   compatible = "gumstix,omap3-overo-tobi", "gumstix,omap3-overo", "ti,omap3430", "ti,omap3"
 
Makefile +1 -1
index 74eafb2e60ab..c726a33e922f 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 15
-SUBLEVEL = 23
+SUBLEVEL = 24
 EXTRAVERSION =
 NAME = Trick or Treat
 
arch/arm/boot/dts/Makefile +1 -0
index 7e0934180724..27ca1ca6e827 100644
@@ -779,6 +779,7 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
 	logicpd-som-lv-37xx-devkit.dtb \
 	omap3430-sdp.dtb \
 	omap3-beagle.dtb \
+	omap3-beagle-ab4.dtb \
 	omap3-beagle-xm.dtb \
 	omap3-beagle-xm-ab.dtb \
 	omap3-cm-t3517.dtb \
arch/arm/boot/dts/imx23-evk.dts +0 -1
index 8cbaf1c81174..3b609d987d88 100644
@@ -79,7 +79,6 @@ hog_pins_a: hog@0 {
 						MX23_PAD_LCD_RESET__GPIO_1_18
 						MX23_PAD_PWM3__GPIO_1_29
 						MX23_PAD_PWM4__GPIO_1_30
-						MX23_PAD_SSP1_DETECT__SSP1_DETECT
 					>;
 					fsl,drive-strength = <MXS_DRIVE_4mA>;
 					fsl,voltage = <MXS_VOLTAGE_HIGH>;
arch/arm/boot/dts/imx6qdl-udoo.dtsi +4 -1
index d07d8f83456d..ccfa8e320be6 100644
@@ -5,6 +5,8 @@
  * Author: Fabio Estevam <[email protected]>
  */
 
+#include <dt-bindings/gpio/gpio.h>
+
 / {
 	aliases {
 		backlight = &backlight;
@@ -226,6 +228,7 @@ MX6QDL_PAD_SD3_DAT0__SD3_DATA0		0x17059
 				MX6QDL_PAD_SD3_DAT1__SD3_DATA1		0x17059
 				MX6QDL_PAD_SD3_DAT2__SD3_DATA2		0x17059
 				MX6QDL_PAD_SD3_DAT3__SD3_DATA3		0x17059
+				MX6QDL_PAD_SD3_DAT5__GPIO7_IO00		0x1b0b0
 			>;
 		};
 
@@ -304,7 +307,7 @@ &usbotg {
 &usdhc3 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_usdhc3>;
-	non-removable;
+	cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
 	status = "okay";
 };
 
arch/arm/boot/dts/imx7ulp.dtsi +1 -1
index b7ea37ad4e55..bcec98b96411 100644
@@ -259,7 +259,7 @@ wdog1: watchdog@403d0000 {
 			interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
 			clocks = <&pcc2 IMX7ULP_CLK_WDG1>;
 			assigned-clocks = <&pcc2 IMX7ULP_CLK_WDG1>;
-			assigned-clocks-parents = <&scg1 IMX7ULP_CLK_FIRC_BUS_CLK>;
+			assigned-clock-parents = <&scg1 IMX7ULP_CLK_FIRC_BUS_CLK>;
 			timeout-sec = <40>;
 		};
 
arch/arm/boot/dts/meson.dtsi +4 -4
index 3be7cba603d5..26eaba3fa96f 100644
@@ -59,7 +59,7 @@ hwrng: rng@8100 {
 			};
 
 			uart_A: serial@84c0 {
-				compatible = "amlogic,meson6-uart", "amlogic,meson-uart";
+				compatible = "amlogic,meson6-uart";
 				reg = <0x84c0 0x18>;
 				interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>;
 				fifo-size = <128>;
@@ -67,7 +67,7 @@ uart_A: serial@84c0 {
 			};
 
 			uart_B: serial@84dc {
-				compatible = "amlogic,meson6-uart", "amlogic,meson-uart";
+				compatible = "amlogic,meson6-uart";
 				reg = <0x84dc 0x18>;
 				interrupts = <GIC_SPI 75 IRQ_TYPE_EDGE_RISING>;
 				status = "disabled";
@@ -105,7 +105,7 @@ saradc: adc@8680 {
 			};
 
 			uart_C: serial@8700 {
-				compatible = "amlogic,meson6-uart", "amlogic,meson-uart";
+				compatible = "amlogic,meson6-uart";
 				reg = <0x8700 0x18>;
 				interrupts = <GIC_SPI 93 IRQ_TYPE_EDGE_RISING>;
 				status = "disabled";
@@ -228,7 +228,7 @@ ir_receiver: ir-receiver@480 {
 			};
 
 			uart_AO: serial@4c0 {
-				compatible = "amlogic,meson6-uart", "amlogic,meson-ao-uart", "amlogic,meson-uart";
+				compatible = "amlogic,meson6-uart", "amlogic,meson-ao-uart";
 				reg = <0x4c0 0x18>;
 				interrupts = <GIC_SPI 90 IRQ_TYPE_EDGE_RISING>;
 				status = "disabled";
arch/arm/boot/dts/meson8.dtsi +12 -12
index f80ddc98d3a2..9997a5d0333a 100644
@@ -736,27 +736,27 @@ &timer_abcde {
 };
 
 &uart_AO {
-	compatible = "amlogic,meson8-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_CLK81>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8-uart", "amlogic,meson-ao-uart";
+	clocks = <&xtal>, <&clkc CLKID_CLK81>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &uart_A {
-	compatible = "amlogic,meson8-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART0>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8-uart";
+	clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &uart_B {
-	compatible = "amlogic,meson8-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART1>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8-uart";
+	clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &uart_C {
-	compatible = "amlogic,meson8-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART2>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8-uart";
+	clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &usb0 {
arch/arm/boot/dts/meson8b.dtsi +12 -12
index b49b7cbaed4e..94f1c03decce 100644
@@ -724,27 +724,27 @@ &timer_abcde {
 };
 
 &uart_AO {
-	compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_CLK81>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8b-uart", "amlogic,meson-ao-uart";
+	clocks = <&xtal>, <&clkc CLKID_CLK81>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &uart_A {
-	compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART0>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8b-uart";
+	clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &uart_B {
-	compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART1>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8b-uart";
+	clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &uart_C {
-	compatible = "amlogic,meson8b-uart", "amlogic,meson-uart";
-	clocks = <&clkc CLKID_CLK81>, <&xtal>, <&clkc CLKID_UART2>;
-	clock-names = "baud", "xtal", "pclk";
+	compatible = "amlogic,meson8b-uart";
+	clocks = <&xtal>, <&clkc CLKID_UART0>, <&clkc CLKID_CLK81>;
+	clock-names = "xtal", "pclk", "baud";
 };
 
 &usb0 {
arch/arm/boot/dts/omap3-beagle-ab4.dts new file +47 -0

47 lines not on this page · raw message

arch/arm/boot/dts/omap3-beagle.dts +0 -33
index f9f34b8458e9..0548b391334f 100644
@@ -304,39 +304,6 @@ &usbhsehci {
 	phys = <0 &hsusb2_phy>;
 };
 
-/* Unusable as clocksource because of unreliable oscillator */
-&counter32k {
-	status = "disabled";
-};
-
-/* Unusable as clockevent because if unreliable oscillator, allow to idle */
-&timer1_target {
-	/delete-property/ti,no-reset-on-init;
-	/delete-property/ti,no-idle;
-	timer@0 {
-		/delete-property/ti,timer-alwon;
-	};
-};
-
-/* Preferred always-on timer for clocksource */
-&timer12_target {
-	ti,no-reset-on-init;
-	ti,no-idle;
-	timer@0 {
-		/* Always clocked by secure_32k_fck */
-	};
-};
-
-/* Preferred timer for clockevent */
-&timer2_target {
-	ti,no-reset-on-init;
-	ti,no-idle;
-	timer@0 {
-		assigned-clocks = <&gpt2_fck>;
-		assigned-clock-parents = <&sys_ck>;
-	};
-};
-
 &twl_gpio {
 	ti,use-leds;
 	/* pullups: BIT(1) */
arch/arm/boot/dts/ste-ux500-samsung-skomer.dts +0 -4
index 86e83639fadc..7fab746e0570 100644
@@ -181,10 +181,6 @@ mmc@80126000 {
 			cap-sd-highspeed;
 			cap-mmc-highspeed;
 			/* All direction control is used */
-			st,sig-dir-cmd;
-			st,sig-dir-dat0;
-			st,sig-dir-dat2;
-			st,sig-dir-dat31;
 			st,sig-pin-fbclk;
 			full-pwr-cycle;
 			vmmc-supply = <&ab8500_ldo_aux3_reg>;
arch/arm/mach-socfpga/Kconfig +2 -0
index 43ddec677c0b..594edf9bbea4 100644
@@ -2,6 +2,7 @@
 menuconfig ARCH_INTEL_SOCFPGA
 	bool "Altera SOCFPGA family"
 	depends on ARCH_MULTI_V7
+	select ARCH_HAS_RESET_CONTROLLER
 	select ARCH_SUPPORTS_BIG_ENDIAN
 	select ARM_AMBA
 	select ARM_GIC
@@ -18,6 +19,7 @@ menuconfig ARCH_INTEL_SOCFPGA
 	select PL310_ERRATA_727915
 	select PL310_ERRATA_753970 if PL310
 	select PL310_ERRATA_769419
+	select RESET_CONTROLLER
 
 if ARCH_INTEL_SOCFPGA
 config SOCFPGA_SUSPEND
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +2 -2
index a84ed3578425..d33e54b5e196 100644
@@ -17,7 +17,7 @@ aliases {
 		rtc1 = &vrtc;
 	};
 
-	dioo2133: audio-amplifier-0 {
+	dio2133: audio-amplifier-0 {
 		compatible = "simple-audio-amplifier";
 		enable-gpios = <&gpio_ao GPIOAO_2 GPIO_ACTIVE_HIGH>;
 		VCC-supply = <&vcc_5v>;
@@ -217,7 +217,7 @@ sound {
 		audio-widgets = "Line", "Lineout";
 		audio-aux-devs = <&tdmout_b>, <&tdmout_c>, <&tdmin_a>,
 				 <&tdmin_b>, <&tdmin_c>, <&tdmin_lb>,
-				 <&dioo2133>;
+				 <&dio2133>;
 		audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
 				"TDMOUT_B IN 1", "FRDDR_B OUT 1",
 				"TDMOUT_B IN 2", "FRDDR_C OUT 1",
arch/arm64/boot/dts/amlogic/meson-sm1-bananapi-m5.dts +1 -1
index 212c6aa5a3b8..5751c48620ed 100644
@@ -123,7 +123,7 @@ vddio_c: regulator-vddio_c {
 		regulator-min-microvolt = <1800000>;
 		regulator-max-microvolt = <3300000>;
 
-		enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>;
+		enable-gpio = <&gpio_ao GPIOE_2 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 		regulator-always-on;
 
arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi +1 -1
index 5779e70caccd..76ad052fbf0c 100644
@@ -48,7 +48,7 @@ tf_io: gpio-regulator-tf_io {
 		regulator-max-microvolt = <3300000>;
 		vin-supply = <&vcc_5v>;
 
-		enable-gpio = <&gpio GPIOE_2 GPIO_ACTIVE_HIGH>;
+		enable-gpio = <&gpio_ao GPIOE_2 GPIO_OPEN_DRAIN>;
 		enable-active-high;
 		regulator-always-on;
 
arch/arm64/boot/dts/freescale/imx8mq.dtsi +5 -5
index 2bc57d8f29c7..fd38092bb247 100644
@@ -526,7 +526,7 @@ lcdif: lcd-controller@30320000 {
 				assigned-clock-rates = <0>, <0>, <0>, <594000000>;
 				status = "disabled";
 
-				port@0 {
+				port {
 					lcdif_mipi_dsi: endpoint {
 						remote-endpoint = <&mipi_dsi_lcdif_in>;
 					};
@@ -1123,8 +1123,8 @@ ports {
 					#address-cells = <1>;
 					#size-cells = <0>;
 
-					port@0 {
-						reg = <0>;
+					port@1 {
+						reg = <1>;
 
 						csi1_mipi_ep: endpoint {
 							remote-endpoint = <&csi1_ep>;
@@ -1175,8 +1175,8 @@ ports {
 					#address-cells = <1>;
 					#size-cells = <0>;
 
-					port@0 {
-						reg = <0>;
+					port@1 {
+						reg = <1>;
 
 						csi2_mipi_ep: endpoint {
 							remote-endpoint = <&csi2_ep>;
arch/mips/cavium-octeon/octeon-memcpy.S +1 -1
index 0a515cde1c18..25860fba6218 100644
@@ -74,7 +74,7 @@
 #define EXC(inst_reg,addr,handler)		\
 9:	inst_reg, addr;				\
 	.section __ex_table,"a";		\
-	PTR	9b, handler;			\
+	PTR_WD	9b, handler;			\
 	.previous
 
 /*
arch/mips/include/asm/asm.h +2 -2
index 2f8ce94ebaaf..cc69f1deb1ca 100644
@@ -276,7 +276,7 @@ symbol		=	value
 
 #define PTR_SCALESHIFT	2
 
-#define PTR		.word
+#define PTR_WD		.word
 #define PTRSIZE		4
 #define PTRLOG		2
 #endif
@@ -301,7 +301,7 @@ symbol		=	value
 
 #define PTR_SCALESHIFT	3
 
-#define PTR		.dword
+#define PTR_WD		.dword
 #define PTRSIZE		8
 #define PTRLOG		3
 #endif
arch/mips/include/asm/ftrace.h +2 -2
index b463f2aa5a61..db497a8167da 100644
@@ -32,7 +32,7 @@ do {							\
 		".previous\n"				\
 							\
 		".section\t__ex_table,\"a\"\n\t"	\
-		STR(PTR) "\t1b, 3b\n\t"			\
+		STR(PTR_WD) "\t1b, 3b\n\t"		\
 		".previous\n"				\
 							\
 		: [tmp_dst] "=&r" (dst), [tmp_err] "=r" (error)\
@@ -54,7 +54,7 @@ do {						\
 		".previous\n"			\
 						\
 		".section\t__ex_table,\"a\"\n\t"\
-		STR(PTR) "\t1b, 3b\n\t"		\
+		STR(PTR_WD) "\t1b, 3b\n\t"	\
 		".previous\n"			\
 						\
 		: [tmp_err] "=r" (error)	\
arch/mips/include/asm/r4kcache.h +2 -2
index af3788589ee6..431a1c9d53fc 100644
@@ -119,7 +119,7 @@ static inline void flush_scache_line(unsigned long addr)
 	"	j	2b			\n"		\
 	"	.previous			\n"		\
 	"	.section __ex_table,\"a\"	\n"		\
-	"	"STR(PTR)" 1b, 3b		\n"		\
+	"	"STR(PTR_WD)" 1b, 3b		\n"		\
 	"	.previous"					\
 	: "+r" (__err)						\
 	: "i" (op), "r" (addr), "i" (-EFAULT));			\
@@ -142,7 +142,7 @@ static inline void flush_scache_line(unsigned long addr)
 	"	j	2b			\n"		\
 	"	.previous			\n"		\
 	"	.section __ex_table,\"a\"	\n"		\
-	"	"STR(PTR)" 1b, 3b		\n"		\
+	"	"STR(PTR_WD)" 1b, 3b		\n"		\
 	"	.previous"					\
 	: "+r" (__err)						\
 	: "i" (op), "r" (addr), "i" (-EFAULT));			\
arch/mips/include/asm/unaligned-emul.h +88 -88

332 lines not on this page · raw message

arch/mips/kernel/mips-r2-to-r6-emul.c +52 -52

176 lines not on this page · raw message

arch/mips/kernel/r2300_fpu.S +3 -3
index cbf6db98cfb3..2748c55820c2 100644
@@ -23,14 +23,14 @@
 #define EX(a,b)							\
 9:	a,##b;							\
 	.section __ex_table,"a";				\
-	PTR	9b,fault;					\
+	PTR_WD	9b,fault;					\
 	.previous
 
 #define EX2(a,b)						\
 9:	a,##b;							\
 	.section __ex_table,"a";				\
-	PTR	9b,fault;					\
-	PTR	9b+4,fault;					\
+	PTR_WD	9b,fault;					\
+	PTR_WD	9b+4,fault;					\
 	.previous
 
 	.set	mips1
arch/mips/kernel/r4k_fpu.S +1 -1
index b91e91106475..2e687c60bc4f 100644
@@ -31,7 +31,7 @@
 .ex\@:	\insn	\reg, \src
 	.set	pop
 	.section __ex_table,"a"
-	PTR	.ex\@, fault
+	PTR_WD	.ex\@, fault
 	.previous
 	.endm
 
arch/mips/kernel/relocate_kernel.S +11 -11
index f3c908abdbb8..cfde14b48fd8 100644
@@ -147,10 +147,10 @@ LEAF(kexec_smp_wait)
 
 kexec_args:
 	EXPORT(kexec_args)
-arg0:	PTR		0x0
-arg1:	PTR		0x0
-arg2:	PTR		0x0
-arg3:	PTR		0x0
+arg0:	PTR_WD		0x0
+arg1:	PTR_WD		0x0
+arg2:	PTR_WD		0x0
+arg3:	PTR_WD		0x0
 	.size	kexec_args,PTRSIZE*4
 
 #ifdef CONFIG_SMP
@@ -161,10 +161,10 @@ arg3:	PTR		0x0
  */
 secondary_kexec_args:
 	EXPORT(secondary_kexec_args)
-s_arg0: PTR		0x0
-s_arg1: PTR		0x0
-s_arg2: PTR		0x0
-s_arg3: PTR		0x0
+s_arg0: PTR_WD		0x0
+s_arg1: PTR_WD		0x0
+s_arg2: PTR_WD		0x0
+s_arg3: PTR_WD		0x0
 	.size	secondary_kexec_args,PTRSIZE*4
 kexec_flag:
 	LONG		0x1
@@ -173,17 +173,17 @@ kexec_flag:
 
 kexec_start_address:
 	EXPORT(kexec_start_address)
-	PTR		0x0
+	PTR_WD		0x0
 	.size		kexec_start_address, PTRSIZE
 
 kexec_indirection_page:
 	EXPORT(kexec_indirection_page)
-	PTR		0
+	PTR_WD		0
 	.size		kexec_indirection_page, PTRSIZE
 
 relocate_new_kernel_end:
 
 relocate_new_kernel_size:
 	EXPORT(relocate_new_kernel_size)
-	PTR		relocate_new_kernel_end - relocate_new_kernel
+	PTR_WD		relocate_new_kernel_end - relocate_new_kernel
 	.size		relocate_new_kernel_size, PTRSIZE
arch/mips/kernel/scall32-o32.S +5 -5
index b1b2e106f711..9bfce5f75f60 100644
@@ -72,10 +72,10 @@ loads_done:
 	.set	pop
 
 	.section __ex_table,"a"
-	PTR	load_a4, bad_stack_a4
-	PTR	load_a5, bad_stack_a5
-	PTR	load_a6, bad_stack_a6
-	PTR	load_a7, bad_stack_a7
+	PTR_WD	load_a4, bad_stack_a4
+	PTR_WD	load_a5, bad_stack_a5
+	PTR_WD	load_a6, bad_stack_a6
+	PTR_WD	load_a7, bad_stack_a7
 	.previous
 
 	lw	t0, TI_FLAGS($28)	# syscall tracing enabled?
@@ -216,7 +216,7 @@ einval: li	v0, -ENOSYS
 #endif /* CONFIG_MIPS_MT_FPAFF */
 
 #define __SYSCALL_WITH_COMPAT(nr, native, compat)	__SYSCALL(nr, native)
-#define __SYSCALL(nr, entry) 	PTR entry
+#define __SYSCALL(nr, entry) 	PTR_WD entry
 	.align	2
 	.type	sys_call_table, @object
 EXPORT(sys_call_table)
arch/mips/kernel/scall64-n32.S +1 -1
index f650c55a17dc..97456b2ca7dc 100644
@@ -101,7 +101,7 @@ not_n32_scall:
 
 	END(handle_sysn32)
 
-#define __SYSCALL(nr, entry)	PTR entry
+#define __SYSCALL(nr, entry)	PTR_WD entry
 	.type	sysn32_call_table, @object
 EXPORT(sysn32_call_table)
 #include <asm/syscall_table_n32.h>
arch/mips/kernel/scall64-n64.S +1 -1
index 5d7bfc65e4d0..5f6ed4b4c399 100644
@@ -109,7 +109,7 @@ illegal_syscall:
 	j	n64_syscall_exit
 	END(handle_sys64)
 
-#define __SYSCALL(nr, entry)	PTR entry
+#define __SYSCALL(nr, entry)	PTR_WD entry
 	.align	3
 	.type	sys_call_table, @object
 EXPORT(sys_call_table)
arch/mips/kernel/scall64-o32.S +5 -5
index cedc8bd88804..d3c2616cba22 100644
@@ -73,10 +73,10 @@ load_a7: lw	a7, 28(t0)		# argument #8 from usp
 loads_done:
 
 	.section __ex_table,"a"
-	PTR	load_a4, bad_stack_a4
-	PTR	load_a5, bad_stack_a5
-	PTR	load_a6, bad_stack_a6
-	PTR	load_a7, bad_stack_a7
+	PTR_WD	load_a4, bad_stack_a4
+	PTR_WD	load_a5, bad_stack_a5
+	PTR_WD	load_a6, bad_stack_a6
+	PTR_WD	load_a7, bad_stack_a7
 	.previous
 
 	li	t1, _TIF_WORK_SYSCALL_ENTRY
@@ -214,7 +214,7 @@ einval: li	v0, -ENOSYS
 	END(sys32_syscall)
 
 #define __SYSCALL_WITH_COMPAT(nr, native, compat)	__SYSCALL(nr, compat)
-#define __SYSCALL(nr, entry)	PTR entry
+#define __SYSCALL(nr, entry)	PTR_WD entry
 	.align	3
 	.type	sys32_call_table,@object
 EXPORT(sys32_call_table)
arch/mips/kernel/syscall.c +4 -4
index 5512cd586e6e..ae93a607ddf7 100644
@@ -122,8 +122,8 @@ static inline int mips_atomic_set(unsigned long addr, unsigned long new)
 		"	j	3b					\n"
 		"	.previous					\n"
 		"	.section __ex_table,\"a\"			\n"
-		"	"STR(PTR)"	1b, 4b				\n"
-		"	"STR(PTR)"	2b, 4b				\n"
+		"	"STR(PTR_WD)"	1b, 4b				\n"
+		"	"STR(PTR_WD)"	2b, 4b				\n"
 		"	.previous					\n"
 		"	.set	pop					\n"
 		: [old] "=&r" (old),
@@ -152,8 +152,8 @@ static inline int mips_atomic_set(unsigned long addr, unsigned long new)
 		"	j	3b					\n"
 		"	.previous					\n"
 		"	.section __ex_table,\"a\"			\n"
-		"	"STR(PTR)"	1b, 5b				\n"
-		"	"STR(PTR)"	2b, 5b				\n"
+		"	"STR(PTR_WD)"	1b, 5b				\n"
+		"	"STR(PTR_WD)"	2b, 5b				\n"
 		"	.previous					\n"
 		"	.set	pop					\n"
 		: [old] "=&r" (old),
arch/mips/lib/csum_partial.S +2 -2
index a46db0807195..7767137c3e49 100644
@@ -347,7 +347,7 @@ EXPORT_SYMBOL(csum_partial)
 	.if \mode == LEGACY_MODE;		\
 9:		insn reg, addr;			\
 		.section __ex_table,"a";	\
-		PTR	9b, .L_exc;		\
+		PTR_WD	9b, .L_exc;		\
 		.previous;			\
 	/* This is enabled in EVA mode */	\
 	.else;					\
@@ -356,7 +356,7 @@ EXPORT_SYMBOL(csum_partial)
 		    ((\to == USEROP) && (type == ST_INSN));	\
 9:			__BUILD_EVA_INSN(insn##e, reg, addr);	\
 			.section __ex_table,"a";		\
-			PTR	9b, .L_exc;			\
+			PTR_WD	9b, .L_exc;			\
 			.previous;				\
 		.else;						\
 			/* EVA without exception */		\
arch/mips/lib/memcpy.S +2 -2
index 277c32296636..18a43f2e29c8 100644
@@ -116,7 +116,7 @@
 	.if \mode == LEGACY_MODE;				\
 9:		insn reg, addr;					\
 		.section __ex_table,"a";			\
-		PTR	9b, handler;				\
+		PTR_WD	9b, handler;				\
 		.previous;					\
 	/* This is assembled in EVA mode */			\
 	.else;							\
@@ -125,7 +125,7 @@
 		    ((\to == USEROP) && (type == ST_INSN));	\
 9:			__BUILD_EVA_INSN(insn##e, reg, addr);	\
 			.section __ex_table,"a";		\
-			PTR	9b, handler;			\
+			PTR_WD	9b, handler;			\
 			.previous;				\
 		.else;						\
 			/*					\
arch/mips/lib/memset.S +1 -1
index b0baa3c79fad..0b342bae9a98 100644
@@ -52,7 +52,7 @@
 9:		___BUILD_EVA_INSN(insn, reg, addr);	\
 	.endif;						\
 	.section __ex_table,"a";			\
-	PTR	9b, handler;				\
+	PTR_WD	9b, handler;				\
 	.previous
 
 	.macro	f_fill64 dst, offset, val, fixup, mode
arch/mips/lib/strncpy_user.S +2 -2
index 556acf684d7b..13aaa9927ad1 100644
@@ -15,7 +15,7 @@
 #define EX(insn,reg,addr,handler)			\
 9:	insn	reg, addr;				\
 	.section __ex_table,"a";			\
-	PTR	9b, handler;				\
+	PTR_WD	9b, handler;				\
 	.previous
 
 /*
@@ -59,7 +59,7 @@ LEAF(__strncpy_from_user_asm)
 	jr		ra
 
 	.section	__ex_table,"a"
-	PTR		1b, .Lfault
+	PTR_WD		1b, .Lfault
 	.previous
 
 	EXPORT_SYMBOL(__strncpy_from_user_asm)
arch/mips/lib/strnlen_user.S +1 -1
index 92b63f20ec05..6de31b616f9c 100644
@@ -14,7 +14,7 @@
 #define EX(insn,reg,addr,handler)			\
 9:	insn	reg, addr;				\
 	.section __ex_table,"a";			\
-	PTR	9b, handler;				\
+	PTR_WD	9b, handler;				\
 	.previous
 
 /*
arch/powerpc/include/asm/book3s/32/pgtable.h +1 -0
index 609c80f67194..f8b94f78403f 100644
@@ -178,6 +178,7 @@ static inline bool pte_user(pte_t pte)
 #ifndef __ASSEMBLY__
 
 int map_kernel_page(unsigned long va, phys_addr_t pa, pgprot_t prot);
+void unmap_kernel_page(unsigned long va);
 
 #endif /* !__ASSEMBLY__ */
 
arch/powerpc/include/asm/book3s/64/pgtable.h +2 -0
index 5d34a8646f08..6866d860d4f3 100644
@@ -1082,6 +1082,8 @@ static inline int map_kernel_page(unsigned long ea, unsigned long pa, pgprot_t p
 	return hash__map_kernel_page(ea, pa, prot);
 }
 
+void unmap_kernel_page(unsigned long va);
+
 static inline int __meminit vmemmap_create_mapping(unsigned long start,
 						   unsigned long page_size,
 						   unsigned long phys)
arch/powerpc/include/asm/fixmap.h +4 -2
index 947b5b9c4424..a832aeafe560 100644
@@ -111,8 +111,10 @@ static inline void __set_fixmap(enum fixed_addresses idx,
 		BUILD_BUG_ON(idx >= __end_of_fixed_addresses);
 	else if (WARN_ON(idx >= __end_of_fixed_addresses))
 		return;
-
-	map_kernel_page(__fix_to_virt(idx), phys, flags);
+	if (pgprot_val(flags))
+		map_kernel_page(__fix_to_virt(idx), phys, flags);
+	else
+		unmap_kernel_page(__fix_to_virt(idx));
 }
 
 #define __early_set_fixmap	__set_fixmap
arch/powerpc/include/asm/nohash/32/pgtable.h +1 -0
index d6ba821a56ce..63ea4693ccea 100644
@@ -64,6 +64,7 @@ extern int icache_44x_need_flush;
 #ifndef __ASSEMBLY__
 
 int map_kernel_page(unsigned long va, phys_addr_t pa, pgprot_t prot);
+void unmap_kernel_page(unsigned long va);
 
 #endif /* !__ASSEMBLY__ */
 
arch/powerpc/include/asm/nohash/64/pgtable.h +1 -0
index 9d2905a47410..2225991c69b5 100644
@@ -308,6 +308,7 @@ static inline void __ptep_set_access_flags(struct vm_area_struct *vma,
 #define __swp_entry_to_pte(x)		__pte((x).val)
 
 int map_kernel_page(unsigned long ea, unsigned long pa, pgprot_t prot);
+void unmap_kernel_page(unsigned long va);
 extern int __meminit vmemmap_create_mapping(unsigned long start,
 					    unsigned long page_size,
 					    unsigned long phys);
arch/powerpc/mm/pgtable.c +9 -0
index cd16b407f47e..9a93c1a5aa1d 100644
@@ -203,6 +203,15 @@ void set_pte_at(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
 	__set_pte_at(mm, addr, ptep, pte, 0);
 }
 
+void unmap_kernel_page(unsigned long va)
+{
+	pmd_t *pmdp = pmd_off_k(va);
+	pte_t *ptep = pte_offset_kernel(pmdp, va);
+
+	pte_clear(&init_mm, va, ptep);
+	flush_tlb_kernel_range(va, va + PAGE_SIZE);
+}
+
 /*
  * This is called when relaxing access to a PTE. It's also called in the page
  * fault path when we don't hit any of the major fault cases, ie, a minor
arch/riscv/Makefile +6 -0
index 41f3a75fe2ec..e03f45f7711a 100644
@@ -52,6 +52,12 @@ riscv-march-$(CONFIG_ARCH_RV32I)	:= rv32ima
 riscv-march-$(CONFIG_ARCH_RV64I)	:= rv64ima
 riscv-march-$(CONFIG_FPU)		:= $(riscv-march-y)fd
 riscv-march-$(CONFIG_RISCV_ISA_C)	:= $(riscv-march-y)c
+
+# Newer binutils versions default to ISA spec version 20191213 which moves some
+# instructions from the I extension to the Zicsr and Zifencei extensions.
+toolchain-need-zicsr-zifencei := $(call cc-option-yn, -march=$(riscv-march-y)_zicsr_zifencei)
+riscv-march-$(toolchain-need-zicsr-zifencei) := $(riscv-march-y)_zicsr_zifencei
+
 KBUILD_CFLAGS += -march=$(subst fd,,$(riscv-march-y))
 KBUILD_AFLAGS += -march=$(riscv-march-y)
 
arch/riscv/kernel/cpu-hotplug.c +2 -0
index df84e0c13db1..66ddfba1cfbe 100644
@@ -12,6 +12,7 @@
 #include <linux/sched/hotplug.h>
 #include <asm/irq.h>
 #include <asm/cpu_ops.h>
+#include <asm/numa.h>
 #include <asm/sbi.h>
 
 void cpu_stop(void);
@@ -46,6 +47,7 @@ int __cpu_disable(void)
 		return ret;
 
 	remove_cpu_topology(cpu);
+	numa_remove_cpu(cpu);
 	set_cpu_online(cpu, false);
 	irq_migrate_all_off_this_cpu();
 
arch/riscv/kernel/stacktrace.c +5 -4
index 315db3d0229b..c2601150b91c 100644
@@ -22,15 +22,16 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,
 			     bool (*fn)(void *, unsigned long), void *arg)
 {
 	unsigned long fp, sp, pc;
+	int level = 0;
 
 	if (regs) {
 		fp = frame_pointer(regs);
 		sp = user_stack_pointer(regs);
 		pc = instruction_pointer(regs);
 	} else if (task == NULL || task == current) {
-		fp = (unsigned long)__builtin_frame_address(1);
-		sp = (unsigned long)__builtin_frame_address(0);
-		pc = (unsigned long)__builtin_return_address(0);
+		fp = (unsigned long)__builtin_frame_address(0);
+		sp = sp_in_global;
+		pc = (unsigned long)walk_stackframe;
 	} else {
 		/* task blocked in __switch_to */
 		fp = task->thread.s[0];
@@ -42,7 +43,7 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs,
 		unsigned long low, high;
 		struct stackframe *frame;
 
-		if (unlikely(!__kernel_text_address(pc) || !fn(arg, pc)))
+		if (unlikely(!__kernel_text_address(pc) || (level++ >= 1 && !fn(arg, pc))))
 			break;
 
 		/* Validate frame pointer */
arch/x86/events/intel/lbr.c +3 -0
index 9e6d6eaeb4cb..f455dd93f921 100644
@@ -1734,6 +1734,9 @@ static bool is_arch_lbr_xsave_available(void)
 	 * Check the LBR state with the corresponding software structure.
 	 * Disable LBR XSAVES support if the size doesn't match.
 	 */
+	if (xfeature_size(XFEATURE_LBR) == 0)
+		return false;
+
 	if (WARN_ON(xfeature_size(XFEATURE_LBR) != get_lbr_state_size()))
 		return false;
 
arch/x86/events/rapl.c +6 -3
index 85feafacc445..77e3a47af5ad 100644
@@ -536,11 +536,14 @@ static struct perf_msr intel_rapl_spr_msrs[] = {
  * - perf_msr_probe(PERF_RAPL_MAX)
  * - want to use same event codes across both architectures
  */
-static struct perf_msr amd_rapl_msrs[PERF_RAPL_MAX] = {
-	[PERF_RAPL_PKG]  = { MSR_AMD_PKG_ENERGY_STATUS,  &rapl_events_pkg_group,   test_msr },
+static struct perf_msr amd_rapl_msrs[] = {
+	[PERF_RAPL_PP0]  = { 0, &rapl_events_cores_group, 0, false, 0 },
+	[PERF_RAPL_PKG]  = { MSR_AMD_PKG_ENERGY_STATUS,  &rapl_events_pkg_group,   test_msr, false, RAPL_MSR_MASK },
+	[PERF_RAPL_RAM]  = { 0, &rapl_events_ram_group,   0, false, 0 },
+	[PERF_RAPL_PP1]  = { 0, &rapl_events_gpu_group,   0, false, 0 },
+	[PERF_RAPL_PSYS] = { 0, &rapl_events_psys_group,  0, false, 0 },
 };
 
-
 static int rapl_cpu_offline(unsigned int cpu)
 {
 	struct rapl_pmu *pmu = cpu_to_rapl_pmu(cpu);
arch/x86/kernel/cpu/sgx/encl.c +2 -0
index 001808e3901c..48afe96ae0f0 100644
@@ -410,6 +410,8 @@ void sgx_encl_release(struct kref *ref)
 		}
 
 		kfree(entry);
+		/* Invoke scheduler to prevent soft lockups. */
+		cond_resched();
 	}
 
 	xa_destroy(&encl->page_array);
arch/x86/kvm/cpuid.c +7 -6
index f666fd79d8ad..5f1d4a5aa871 100644
@@ -421,12 +421,13 @@ void kvm_set_cpu_caps(void)
 	);
 
 	kvm_cpu_cap_mask(CPUID_7_0_EBX,
-		F(FSGSBASE) | F(SGX) | F(BMI1) | F(HLE) | F(AVX2) | F(SMEP) |
-		F(BMI2) | F(ERMS) | F(INVPCID) | F(RTM) | 0 /*MPX*/ | F(RDSEED) |
-		F(ADX) | F(SMAP) | F(AVX512IFMA) | F(AVX512F) | F(AVX512PF) |
-		F(AVX512ER) | F(AVX512CD) | F(CLFLUSHOPT) | F(CLWB) | F(AVX512DQ) |
-		F(SHA_NI) | F(AVX512BW) | F(AVX512VL) | 0 /*INTEL_PT*/
-	);
+		F(FSGSBASE) | F(SGX) | F(BMI1) | F(HLE) | F(AVX2) |
+		F(FDP_EXCPTN_ONLY) | F(SMEP) | F(BMI2) | F(ERMS) | F(INVPCID) |
+		F(RTM) | F(ZERO_FCS_FDS) | 0 /*MPX*/ | F(AVX512F) |
+		F(AVX512DQ) | F(RDSEED) | F(ADX) | F(SMAP) | F(AVX512IFMA) |
+		F(CLFLUSHOPT) | F(CLWB) | 0 /*INTEL_PT*/ | F(AVX512PF) |
+		F(AVX512ER) | F(AVX512CD) | F(SHA_NI) | F(AVX512BW) |
+		F(AVX512VL));
 
 	kvm_cpu_cap_mask(CPUID_7_ECX,
 		F(AVX512VBMI) | F(LA57) | F(PKU) | 0 /*OSPKE*/ | F(RDPID) |
arch/x86/kvm/svm/svm.c +15 -1
index 980abc437cda..f05aa7290267 100644
@@ -4473,7 +4473,21 @@ static bool svm_can_emulate_instruction(struct kvm_vcpu *vcpu, void *insn, int i
 	is_user = svm_get_cpl(vcpu) == 3;
 	if (smap && (!smep || is_user)) {
 		pr_err_ratelimited("KVM: SEV Guest triggered AMD Erratum 1096\n");
-		kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu);
+
+		/*
+		 * If the fault occurred in userspace, arbitrarily inject #GP
+		 * to avoid killing the guest and to hopefully avoid confusing
+		 * the guest kernel too much, e.g. injecting #PF would not be
+		 * coherent with respect to the guest's page tables.  Request
+		 * triple fault if the fault occurred in the kernel as there's
+		 * no fault that KVM can inject without confusing the guest.
+		 * In practice, the triple fault is moot as no sane SEV kernel
+		 * will execute from user memory while also running with SMAP=1.
+		 */
+		if (is_user)
+			kvm_inject_gp(vcpu, 0);
+		else
+			kvm_make_request(KVM_REQ_TRIPLE_FAULT, vcpu);
 	}
 
 	return false;
arch/x86/kvm/vmx/evmcs.c +1 -0
index ba6f99f584ac..a7ed30d5647a 100644
@@ -362,6 +362,7 @@ void nested_evmcs_filter_control_msr(u32 msr_index, u64 *pdata)
 	case MSR_IA32_VMX_PROCBASED_CTLS2:
 		ctl_high &= ~EVMCS1_UNSUPPORTED_2NDEXEC;
 		break;
+	case MSR_IA32_VMX_TRUE_PINBASED_CTLS:
 	case MSR_IA32_VMX_PINBASED_CTLS:
 		ctl_high &= ~EVMCS1_UNSUPPORTED_PINCTRL;
 		break;
arch/x86/kvm/vmx/evmcs.h +3 -1
index 152ab0aa82cf..b43976e4b963 100644
@@ -59,7 +59,9 @@ DECLARE_STATIC_KEY_FALSE(enable_evmcs);
 	 SECONDARY_EXEC_SHADOW_VMCS |					\
 	 SECONDARY_EXEC_TSC_SCALING |					\
 	 SECONDARY_EXEC_PAUSE_LOOP_EXITING)
-#define EVMCS1_UNSUPPORTED_VMEXIT_CTRL (VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL)
+#define EVMCS1_UNSUPPORTED_VMEXIT_CTRL					\
+	(VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL |				\
+	 VM_EXIT_SAVE_VMX_PREEMPTION_TIMER)
 #define EVMCS1_UNSUPPORTED_VMENTRY_CTRL (VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL)
 #define EVMCS1_UNSUPPORTED_VMFUNC (VMX_VMFUNC_EPTP_SWITCHING)
 
arch/x86/kvm/vmx/vmx.c +25 -0
index 2ab0e997e39f..44da933a756b 100644
@@ -4791,8 +4791,33 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu)
 		dr6 = vmx_get_exit_qual(vcpu);
 		if (!(vcpu->guest_debug &
 		      (KVM_GUESTDBG_SINGLESTEP | KVM_GUESTDBG_USE_HW_BP))) {
+			/*
+			 * If the #DB was due to ICEBP, a.k.a. INT1, skip the
+			 * instruction.  ICEBP generates a trap-like #DB, but
+			 * despite its interception control being tied to #DB,
+			 * is an instruction intercept, i.e. the VM-Exit occurs
+			 * on the ICEBP itself.  Note, skipping ICEBP also
+			 * clears STI and MOVSS blocking.
+			 *
+			 * For all other #DBs, set vmcs.PENDING_DBG_EXCEPTIONS.BS
+			 * if single-step is enabled in RFLAGS and STI or MOVSS
+			 * blocking is active, as the CPU doesn't set the bit
+			 * on VM-Exit due to #DB interception.  VM-Entry has a
+			 * consistency check that a single-step #DB is pending
+			 * in this scenario as the previous instruction cannot
+			 * have toggled RFLAGS.TF 0=>1 (because STI and POP/MOV
+			 * don't modify RFLAGS), therefore the one instruction
+			 * delay when activating single-step breakpoints must
+			 * have already expired.  Note, the CPU sets/clears BS
+			 * as appropriate for all other VM-Exits types.
+			 */
 			if (is_icebp(intr_info))
 				WARN_ON(!skip_emulated_instruction(vcpu));
+			else if ((vmx_get_rflags(vcpu) & X86_EFLAGS_TF) &&
+				 (vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) &
+				  (GUEST_INTR_STATE_STI | GUEST_INTR_STATE_MOV_SS)))
+				vmcs_writel(GUEST_PENDING_DBG_EXCEPTIONS,
+					    vmcs_readl(GUEST_PENDING_DBG_EXCEPTIONS) | DR6_BS);
 
 			kvm_queue_exception_p(vcpu, DB_VECTOR, dr6);
 			return 1;
drivers/accessibility/speakup/speakup_dectlk.c +1 -0
index 580ec796816b..78ca4987e619 100644
@@ -44,6 +44,7 @@ static struct var_t vars[] = {
 	{ CAPS_START, .u.s = {"[:dv ap 160] " } },
 	{ CAPS_STOP, .u.s = {"[:dv ap 100 ] " } },
 	{ RATE, .u.n = {"[:ra %d] ", 180, 75, 650, 0, 0, NULL } },
+	{ PITCH, .u.n = {"[:dv ap %d] ", 122, 50, 350, 0, 0, NULL } },
 	{ INFLECTION, .u.n = {"[:dv pr %d] ", 100, 0, 10000, 0, 0, NULL } },
 	{ VOL, .u.n = {"[:dv g5 %d] ", 86, 60, 86, 0, 0, NULL } },
 	{ PUNCT, .u.n = {"[:pu %c] ", 0, 0, 2, 0, 0, "nsa" } },
drivers/acpi/arm64/iort.c +11 -3
index 3b23fb775ac4..f2f8f05662de 100644
@@ -1361,9 +1361,17 @@ static void __init arm_smmu_v3_pmcg_init_resources(struct resource *res,
 	res[0].start = pmcg->page0_base_address;
 	res[0].end = pmcg->page0_base_address + SZ_4K - 1;
 	res[0].flags = IORESOURCE_MEM;
-	res[1].start = pmcg->page1_base_address;
-	res[1].end = pmcg->page1_base_address + SZ_4K - 1;
-	res[1].flags = IORESOURCE_MEM;
+	/*
+	 * The initial version in DEN0049C lacked a way to describe register
+	 * page 1, which makes it broken for most PMCG implementations; in
+	 * that case, just let the driver fail gracefully if it expects to
+	 * find a second memory resource.
+	 */
+	if (node->revision > 0) {
+		res[1].start = pmcg->page1_base_address;
+		res[1].end = pmcg->page1_base_address + SZ_4K - 1;
+		res[1].flags = IORESOURCE_MEM;
+	}
 
 	if (pmcg->overflow_gsiv)
 		acpi_iort_register_irq(pmcg->overflow_gsiv, "overflow",
drivers/acpi/ec.c +10 -0
index 9b859ff976e8..98d178227544 100644
@@ -2051,6 +2051,16 @@ bool acpi_ec_dispatch_gpe(void)
 	if (acpi_any_gpe_status_set(first_ec->gpe))
 		return true;
 
+	/*
+	 * Cancel the SCI wakeup and process all pending events in case there
+	 * are any wakeup ones in there.
+	 *
+	 * Note that if any non-EC GPEs are active at this point, the SCI will
+	 * retrigger after the rearming in acpi_s2idle_wake(), so no events
+	 * should be missed by canceling the wakeup here.
+	 */
+	pm_system_cancel_wakeup();
+
 	/*
 	 * Dispatch the EC GPE in-band, but do not report wakeup in any case
 	 * to allow the caller to process events properly after that.
drivers/acpi/sleep.c +5 -10
index 3023224515ab..245a0fa979cb 100644
@@ -739,21 +739,15 @@ bool acpi_s2idle_wake(void)
 			return true;
 		}
 
-		/* Check non-EC GPE wakeups and dispatch the EC GPE. */
+		/*
+		 * Check non-EC GPE wakeups and if there are none, cancel the
+		 * SCI-related wakeup and dispatch the EC GPE.
+		 */
 		if (acpi_ec_dispatch_gpe()) {
 			pm_pr_dbg("ACPI non-EC GPE wakeup\n");
 			return true;
 		}
 
-		/*
-		 * Cancel the SCI wakeup and process all pending events in case
-		 * there are any wakeup ones in there.
-		 *
-		 * Note that if any non-EC GPEs are active at this point, the
-		 * SCI will retrigger after the rearming below, so no events
-		 * should be missed by canceling the wakeup here.
-		 */
-		pm_system_cancel_wakeup();
 		acpi_os_wait_events_complete();
 
 		/*
@@ -767,6 +761,7 @@ bool acpi_s2idle_wake(void)
 			return true;
 		}
 
+		pm_wakeup_clear(acpi_sci_irq);
 		rearm_wake_irq(acpi_sci_irq);
 	}
 
drivers/base/power/wakeup.c +34 -7

60 lines not on this page · raw message

drivers/bus/mhi/pci_generic.c +2 -0
index b8b2811c7c0a..d340d6864e13 100644
@@ -366,6 +366,7 @@ static const struct mhi_pci_dev_info mhi_foxconn_sdx55_info = {
 	.config = &modem_foxconn_sdx55_config,
 	.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
 	.dma_data_width = 32,
+	.mru_default = 32768,
 	.sideband_wake = false,
 };
 
@@ -401,6 +402,7 @@ static const struct mhi_pci_dev_info mhi_mv31_info = {
 	.config = &modem_mv31_config,
 	.bar_num = MHI_PCI_DEFAULT_BAR_NUM,
 	.dma_data_width = 32,
+	.mru_default = 32768,
 };
 
 static const struct pci_device_id mhi_pci_id_table[] = {
drivers/clocksource/timer-ti-dm-systimer.c +1 -1
index b6f97960d8ee..5c40ca1d4740 100644
@@ -241,7 +241,7 @@ static void __init dmtimer_systimer_assign_alwon(void)
 	bool quirk_unreliable_oscillator = false;
 
 	/* Quirk unreliable 32 KiHz oscillator with incomplete dts */
-	if (of_machine_is_compatible("ti,omap3-beagle") ||
+	if (of_machine_is_compatible("ti,omap3-beagle-ab4") ||
 	    of_machine_is_compatible("timll,omap3-devkit8000")) {
 		quirk_unreliable_oscillator = true;
 		counter_32k = -ENODEV;
drivers/gpio/gpio-aggregator.c +14 -4
index 34e35b64dcdc..23047dc84ef1 100644
@@ -273,7 +273,8 @@ static int gpio_fwd_get(struct gpio_chip *chip, unsigned int offset)
 {
 	struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
 
-	return gpiod_get_value(fwd->descs[offset]);
+	return chip->can_sleep ? gpiod_get_value_cansleep(fwd->descs[offset])
+			       : gpiod_get_value(fwd->descs[offset]);
 }
 
 static int gpio_fwd_get_multiple(struct gpiochip_fwd *fwd, unsigned long *mask,
@@ -292,7 +293,10 @@ static int gpio_fwd_get_multiple(struct gpiochip_fwd *fwd, unsigned long *mask,
 	for_each_set_bit(i, mask, fwd->chip.ngpio)
 		descs[j++] = fwd->descs[i];
 
-	error = gpiod_get_array_value(j, descs, NULL, values);
+	if (fwd->chip.can_sleep)
+		error = gpiod_get_array_value_cansleep(j, descs, NULL, values);
+	else
+		error = gpiod_get_array_value(j, descs, NULL, values);
 	if (error)
 		return error;
 
@@ -327,7 +331,10 @@ static void gpio_fwd_set(struct gpio_chip *chip, unsigned int offset, int value)
 {
 	struct gpiochip_fwd *fwd = gpiochip_get_data(chip);
 
-	gpiod_set_value(fwd->descs[offset], value);
+	if (chip->can_sleep)
+		gpiod_set_value_cansleep(fwd->descs[offset], value);
+	else
+		gpiod_set_value(fwd->descs[offset], value);
 }
 
 static void gpio_fwd_set_multiple(struct gpiochip_fwd *fwd, unsigned long *mask,
@@ -346,7 +353,10 @@ static void gpio_fwd_set_multiple(struct gpiochip_fwd *fwd, unsigned long *mask,
 		descs[j++] = fwd->descs[i];
 	}
 
-	gpiod_set_array_value(j, descs, NULL, values);
+	if (fwd->chip.can_sleep)
+		gpiod_set_array_value_cansleep(j, descs, NULL, values);
+	else
+		gpiod_set_array_value(j, descs, NULL, values);
 }
 
 static void gpio_fwd_set_multiple_locked(struct gpio_chip *chip,
drivers/gpio/gpio-sifive.c +1 -1
index 403f9e833d6a..7d82388b4ab7 100644
@@ -223,7 +223,7 @@ static int sifive_gpio_probe(struct platform_device *pdev)
 			 NULL,
 			 chip->base + SIFIVE_GPIO_OUTPUT_EN,
 			 chip->base + SIFIVE_GPIO_INPUT_EN,
-			 0);
+			 BGPIOF_READ_OUTPUT_REG_SET);
 	if (ret) {
 		dev_err(dev, "unable to init generic GPIO\n");
 		return ret;
drivers/gpio/gpiolib-cdev.c +3 -3
index c7b5446d01fd..ffa0256cad5a 100644
@@ -330,7 +330,7 @@ static int linehandle_create(struct gpio_device *gdev, void __user *ip)
 			goto out_free_lh;
 		}
 
-		ret = gpiod_request(desc, lh->label);
+		ret = gpiod_request_user(desc, lh->label);
 		if (ret)
 			goto out_free_lh;
 		lh->descs[i] = desc;
@@ -1378,7 +1378,7 @@ static int linereq_create(struct gpio_device *gdev, void __user *ip)
 			goto out_free_linereq;
 		}
 
-		ret = gpiod_request(desc, lr->label);
+		ret = gpiod_request_user(desc, lr->label);
 		if (ret)
 			goto out_free_linereq;
 
@@ -1764,7 +1764,7 @@ static int lineevent_create(struct gpio_device *gdev, void __user *ip)
 		}
 	}
 
-	ret = gpiod_request(desc, le->label);
+	ret = gpiod_request_user(desc, le->label);
 	if (ret)
 		goto out_free_le;
 	le->desc = desc;
drivers/gpio/gpiolib-sysfs.c +2 -5
index 4098bc7f88b7..44c1ad51b3fe 100644
@@ -475,12 +475,9 @@ static ssize_t export_store(struct class *class,
 	 * they may be undone on its behalf too.
 	 */
 
-	status = gpiod_request(desc, "sysfs");
-	if (status) {
-		if (status == -EPROBE_DEFER)
-			status = -ENODEV;
+	status = gpiod_request_user(desc, "sysfs");
+	if (status)
 		goto done;
-	}
 
 	status = gpiod_set_transitory(desc, false);
 	if (!status) {
drivers/gpio/gpiolib.h +12 -0
index 30bc3f80f83e..c31f4626915d 100644
@@ -135,6 +135,18 @@ struct gpio_desc {
 
 int gpiod_request(struct gpio_desc *desc, const char *label);
 void gpiod_free(struct gpio_desc *desc);
+
+static inline int gpiod_request_user(struct gpio_desc *desc, const char *label)
+{
+	int ret;
+
+	ret = gpiod_request(desc, label);
+	if (ret == -EPROBE_DEFER)
+		ret = -ENODEV;
+
+	return ret;
+}
+
 int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id,
 		unsigned long lflags, enum gpiod_flags dflags);
 int gpio_set_debounce_timeout(struct gpio_desc *desc, unsigned int debounce);
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +1 -1
index b01a21d8336c..ede11eb120d4 100644
@@ -1067,7 +1067,7 @@ static const struct dc_debug_options debug_defaults_drv = {
 		.timing_trace = false,
 		.clock_trace = true,
 		.disable_pplib_clock_request = true,
-		.pipe_split_policy = MPC_SPLIT_DYNAMIC,
+		.pipe_split_policy = MPC_SPLIT_AVOID_MULT_DISP,
 		.force_single_disp_pipe_split = false,
 		.disable_dcc = DCC_ENABLE,
 		.vsr_support = true,
drivers/gpu/drm/amd/display/dc/dcn301/dcn301_resource.c +1 -1
index 9e2f18a0c948..26ebe00a55f6 100644
@@ -863,7 +863,7 @@ static const struct dc_debug_options debug_defaults_drv = {
 	.disable_clock_gate = true,
 	.disable_pplib_clock_request = true,
 	.disable_pplib_wm_range = true,
-	.pipe_split_policy = MPC_SPLIT_DYNAMIC,
+	.pipe_split_policy = MPC_SPLIT_AVOID,
 	.force_single_disp_pipe_split = false,
 	.disable_dcc = DCC_ENABLE,
 	.vsr_support = true,
drivers/gpu/drm/amd/pm/amdgpu_pm.c +1 -2
index 32a0fd5e84b7..640db5020ccc 100644
@@ -3445,8 +3445,7 @@ static umode_t hwmon_attributes_visible(struct kobject *kobj,
 	     attr == &sensor_dev_attr_power2_cap_min.dev_attr.attr ||
 		 attr == &sensor_dev_attr_power2_cap.dev_attr.attr ||
 		 attr == &sensor_dev_attr_power2_cap_default.dev_attr.attr ||
-		 attr == &sensor_dev_attr_power2_label.dev_attr.attr ||
-		 attr == &sensor_dev_attr_power1_label.dev_attr.attr))
+		 attr == &sensor_dev_attr_power2_label.dev_attr.attr))
 		return 0;
 
 	return effective_mode;
drivers/gpu/drm/bridge/nwl-dsi.c +5 -7
index a7389a0facfb..af07eeb47ca0 100644
@@ -7,6 +7,7 @@
  */
 
 #include <linux/bitfield.h>
+#include <linux/bits.h>
 #include <linux/clk.h>
 #include <linux/irq.h>
 #include <linux/math64.h>
@@ -196,12 +197,9 @@ static u32 ps2bc(struct nwl_dsi *dsi, unsigned long long ps)
 /*
  * ui2bc - UI time periods to byte clock cycles
  */
-static u32 ui2bc(struct nwl_dsi *dsi, unsigned long long ui)
+static u32 ui2bc(unsigned int ui)
 {
-	u32 bpp = mipi_dsi_pixel_format_to_bpp(dsi->format);
-
-	return DIV64_U64_ROUND_UP(ui * dsi->lanes,
-				  dsi->mode.clock * 1000 * bpp);
+	return DIV_ROUND_UP(ui, BITS_PER_BYTE);
 }
 
 /*
@@ -232,12 +230,12 @@ static int nwl_dsi_config_host(struct nwl_dsi *dsi)
 	}
 
 	/* values in byte clock cycles */
-	cycles = ui2bc(dsi, cfg->clk_pre);
+	cycles = ui2bc(cfg->clk_pre);
 	DRM_DEV_DEBUG_DRIVER(dsi->dev, "cfg_t_pre: 0x%x\n", cycles);
 	nwl_dsi_write(dsi, NWL_DSI_CFG_T_PRE, cycles);
 	cycles = ps2bc(dsi, cfg->lpx + cfg->clk_prepare + cfg->clk_zero);
 	DRM_DEV_DEBUG_DRIVER(dsi->dev, "cfg_tx_gap (pre): 0x%x\n", cycles);
-	cycles += ui2bc(dsi, cfg->clk_pre);
+	cycles += ui2bc(cfg->clk_pre);
 	DRM_DEV_DEBUG_DRIVER(dsi->dev, "cfg_t_post: 0x%x\n", cycles);
 	nwl_dsi_write(dsi, NWL_DSI_CFG_T_POST, cycles);
 	cycles = ps2bc(dsi, cfg->hs_exit);
drivers/gpu/drm/drm_panel_orientation_quirks.c +12 -0
index 9d1bd8f491ad..448c2f2d803a 100644
@@ -115,6 +115,12 @@ static const struct drm_dmi_panel_orientation_data lcd1280x1920_rightside_up = {
 	.orientation = DRM_MODE_PANEL_ORIENTATION_RIGHT_UP,
 };
 
+static const struct drm_dmi_panel_orientation_data lcd1600x2560_leftside_up = {
+	.width = 1600,
+	.height = 2560,
+	.orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP,
+};
+
 static const struct dmi_system_id orientation_data[] = {
 	{	/* Acer One 10 (S1003) */
 		.matches = {
@@ -261,6 +267,12 @@ static const struct dmi_system_id orientation_data[] = {
 		  DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "Default string"),
 		},
 		.driver_data = (void *)&onegx1_pro,
+	}, {	/* OneXPlayer */
+		.matches = {
+		  DMI_EXACT_MATCH(DMI_SYS_VENDOR, "ONE-NETBOOK TECHNOLOGY CO., LTD."),
+		  DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "ONE XPLAYER"),
+		},
+		.driver_data = (void *)&lcd1600x2560_leftside_up,
 	}, {	/* Samsung GalaxyBook 10.6 */
 		.matches = {
 		  DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SAMSUNG ELECTRONICS CO., LTD."),
drivers/gpu/drm/i915/intel_pm.c +52 -23

166 lines not on this page · raw message

drivers/gpu/drm/panel/panel-simple.c +1 -0
index 9b6c4e6c38a1..b7b654f2dfd9 100644
@@ -721,6 +721,7 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc,
 		err = panel_dpi_probe(dev, panel);
 		if (err)
 			goto free_ddc;
+		desc = panel->desc;
 	} else {
 		if (!of_get_display_timing(dev->of_node, "panel-timing", &dt))
 			panel_simple_parse_panel_timing_node(dev, panel, &dt);
drivers/gpu/drm/rockchip/rockchip_vop_reg.c +5 -3
index ca7cc82125cb..8c873fcd0e99 100644
@@ -902,6 +902,7 @@ static const struct vop_win_phy rk3399_win01_data = {
 	.enable = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 0),
 	.format = VOP_REG(RK3288_WIN0_CTRL0, 0x7, 1),
 	.rb_swap = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 12),
+	.x_mir_en = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 21),
 	.y_mir_en = VOP_REG(RK3288_WIN0_CTRL0, 0x1, 22),
 	.act_info = VOP_REG(RK3288_WIN0_ACT_INFO, 0x1fff1fff, 0),
 	.dsp_info = VOP_REG(RK3288_WIN0_DSP_INFO, 0x0fff0fff, 0),
@@ -912,6 +913,7 @@ static const struct vop_win_phy rk3399_win01_data = {
 	.uv_vir = VOP_REG(RK3288_WIN0_VIR, 0x3fff, 16),
 	.src_alpha_ctl = VOP_REG(RK3288_WIN0_SRC_ALPHA_CTRL, 0xff, 0),
 	.dst_alpha_ctl = VOP_REG(RK3288_WIN0_DST_ALPHA_CTRL, 0xff, 0),
+	.channel = VOP_REG(RK3288_WIN0_CTRL2, 0xff, 0),
 };
 
 /*
@@ -922,11 +924,11 @@ static const struct vop_win_phy rk3399_win01_data = {
 static const struct vop_win_data rk3399_vop_win_data[] = {
 	{ .base = 0x00, .phy = &rk3399_win01_data,
 	  .type = DRM_PLANE_TYPE_PRIMARY },
-	{ .base = 0x40, .phy = &rk3288_win01_data,
+	{ .base = 0x40, .phy = &rk3368_win01_data,
 	  .type = DRM_PLANE_TYPE_OVERLAY },
-	{ .base = 0x00, .phy = &rk3288_win23_data,
+	{ .base = 0x00, .phy = &rk3368_win23_data,
 	  .type = DRM_PLANE_TYPE_OVERLAY },
-	{ .base = 0x50, .phy = &rk3288_win23_data,
+	{ .base = 0x50, .phy = &rk3368_win23_data,
 	  .type = DRM_PLANE_TYPE_CURSOR },
 };
 
drivers/gpu/drm/vc4/vc4_dsi.c +4 -10
index a185027911ce..d09c1ea60c04 100644
@@ -1262,7 +1262,6 @@ static int vc4_dsi_host_attach(struct mipi_dsi_host *host,
 			       struct mipi_dsi_device *device)
 {
 	struct vc4_dsi *dsi = host_to_dsi(host);
-	int ret;
 
 	dsi->lanes = device->lanes;
 	dsi->channel = device->channel;
@@ -1297,18 +1296,15 @@ static int vc4_dsi_host_attach(struct mipi_dsi_host *host,
 		return 0;
 	}
 
-	ret = component_add(&dsi->pdev->dev, &vc4_dsi_ops);
-	if (ret) {
-		mipi_dsi_host_unregister(&dsi->dsi_host);
-		return ret;
-	}
-
-	return 0;
+	return component_add(&dsi->pdev->dev, &vc4_dsi_ops);
 }
 
 static int vc4_dsi_host_detach(struct mipi_dsi_host *host,
 			       struct mipi_dsi_device *device)
 {
+	struct vc4_dsi *dsi = host_to_dsi(host);
+
+	component_del(&dsi->pdev->dev, &vc4_dsi_ops);
 	return 0;
 }
 
@@ -1706,9 +1702,7 @@ static int vc4_dsi_dev_remove(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct vc4_dsi *dsi = dev_get_drvdata(dev);
 
-	component_del(&pdev->dev, &vc4_dsi_ops);
 	mipi_dsi_host_unregister(&dsi->dsi_host);
-
 	return 0;
 }
 
drivers/gpu/drm/vc4/vc4_hdmi.c +2 -0
index e880bdd8dcfd..9170d948b448 100644
@@ -1090,6 +1090,7 @@ static int vc4_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
 	unsigned long long tmds_rate;
 
 	if (vc4_hdmi->variant->unsupported_odd_h_timings &&
+	    !(mode->flags & DRM_MODE_FLAG_DBLCLK) &&
 	    ((mode->hdisplay % 2) || (mode->hsync_start % 2) ||
 	     (mode->hsync_end % 2) || (mode->htotal % 2)))
 		return -EINVAL;
@@ -1137,6 +1138,7 @@ vc4_hdmi_encoder_mode_valid(struct drm_encoder *encoder,
 	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
 
 	if (vc4_hdmi->variant->unsupported_odd_h_timings &&
+	    !(mode->flags & DRM_MODE_FLAG_DBLCLK) &&
 	    ((mode->hdisplay % 2) || (mode->hsync_start % 2) ||
 	     (mode->hsync_end % 2) || (mode->htotal % 2)))
 		return MODE_H_ILLEGAL;
drivers/hwmon/dell-smm-hwmon.c +8 -4
index 47fce97996de..9cb1c3588038 100644
@@ -326,7 +326,7 @@ static int i8k_enable_fan_auto_mode(const struct dell_smm_data *data, bool enabl
 }
 
 /*
- * Set the fan speed (off, low, high). Returns the new fan status.
+ * Set the fan speed (off, low, high, ...).
  */
 static int i8k_set_fan(const struct dell_smm_data *data, int fan, int speed)
 {
@@ -338,7 +338,7 @@ static int i8k_set_fan(const struct dell_smm_data *data, int fan, int speed)
 	speed = (speed < 0) ? 0 : ((speed > data->i8k_fan_max) ? data->i8k_fan_max : speed);
 	regs.ebx = (fan & 0xff) | (speed << 8);
 
-	return i8k_smm(&regs) ? : i8k_get_fan_status(data, fan);
+	return i8k_smm(&regs);
 }
 
 static int __init i8k_get_temp_type(int sensor)
@@ -452,7 +452,7 @@ static int
 i8k_ioctl_unlocked(struct file *fp, struct dell_smm_data *data, unsigned int cmd, unsigned long arg)
 {
 	int val = 0;
-	int speed;
+	int speed, err;
 	unsigned char buff[16];
 	int __user *argp = (int __user *)arg;
 
@@ -513,7 +513,11 @@ i8k_ioctl_unlocked(struct file *fp, struct dell_smm_data *data, unsigned int cmd
 		if (copy_from_user(&speed, argp + 1, sizeof(int)))
 			return -EFAULT;
 
-		val = i8k_set_fan(data, val, speed);
+		err = i8k_set_fan(data, val, speed);
+		if (err < 0)
+			return err;
+
+		val = i8k_get_fan_status(data, val);
 		break;
 
 	default:
drivers/iio/industrialio-buffer.c +11 -3
index 2f98ba70e3d7..c81dbd2f0972 100644
@@ -1446,9 +1446,17 @@ static long iio_device_buffer_getfd(struct iio_dev *indio_dev, unsigned long arg
 	}
 
 	if (copy_to_user(ival, &fd, sizeof(fd))) {
-		put_unused_fd(fd);
-		ret = -EFAULT;
-		goto error_free_ib;
+		/*
+		 * "Leak" the fd, as there's not much we can do about this
+		 * anyway. 'fd' might have been closed already, as
+		 * anon_inode_getfd() called fd_install() on it, which made
+		 * it reachable by userland.
+		 *
+		 * Instead of allowing a malicious user to play tricks with
+		 * us, rely on the process exit path to do any necessary
+		 * cleanup, as in releasing the file, if still needed.
+		 */
+		return -EFAULT;
 	}
 
 	return 0;
drivers/iommu/iommu.c +7 -2
index f62fb6a58f10..7f409e9eea4b 100644
@@ -206,9 +206,14 @@ static struct dev_iommu *dev_iommu_get(struct device *dev)
 
 static void dev_iommu_free(struct device *dev)
 {
-	iommu_fwspec_free(dev);
-	kfree(dev->iommu);
+	struct dev_iommu *param = dev->iommu;
+
 	dev->iommu = NULL;
+	if (param->fwspec) {
+		fwnode_handle_put(param->fwspec->iommu_fwnode);
+		kfree(param->fwspec);
+	}
+	kfree(param);
 }
 
 static int __iommu_probe_device(struct device *dev, struct list_head *group_list)
drivers/irqchip/irq-realtek-rtl.c +6 -2
index 568614edd88f..50a56820c99b 100644
@@ -76,16 +76,20 @@ static void realtek_irq_dispatch(struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct irq_domain *domain;
-	unsigned int pending;
+	unsigned long pending;
+	unsigned int soc_int;
 
 	chained_irq_enter(chip, desc);
 	pending = readl(REG(RTL_ICTL_GIMR)) & readl(REG(RTL_ICTL_GISR));
+
 	if (unlikely(!pending)) {
 		spurious_interrupt();
 		goto out;
 	}
+
 	domain = irq_desc_get_handler_data(desc);
-	generic_handle_domain_irq(domain, __ffs(pending));
+	for_each_set_bit(soc_int, &pending, 32)
+		generic_handle_domain_irq(domain, soc_int);
 
 out:
 	chained_irq_exit(chip, desc);
drivers/misc/eeprom/ee1004.c +3 -0
index bb9c4512c968..9fbfe784d710 100644
@@ -114,6 +114,9 @@ static ssize_t ee1004_eeprom_read(struct i2c_client *client, char *buf,
 	if (offset + count > EE1004_PAGE_SIZE)
 		count = EE1004_PAGE_SIZE - offset;
 
+	if (count > I2C_SMBUS_BLOCK_MAX)
+		count = I2C_SMBUS_BLOCK_MAX;
+
 	return i2c_smbus_read_i2c_block_data_or_emulated(client, offset, count, buf);
 }
 
drivers/misc/fastrpc.c +8 -1
index f3002653bd01..86d8fb8c0148 100644
@@ -1286,7 +1286,14 @@ static int fastrpc_dmabuf_alloc(struct fastrpc_user *fl, char __user *argp)
 	}
 
 	if (copy_to_user(argp, &bp, sizeof(bp))) {
-		dma_buf_put(buf->dmabuf);
+		/*
+		 * The usercopy failed, but we can't do much about it, as
+		 * dma_buf_fd() already called fd_install() and made the
+		 * file descriptor accessible for the current process. It
+		 * might already be closed and dmabuf no longer valid when
+		 * we reach this point. Therefore "leak" the fd and rely on
+		 * the process exit path to do any required cleanup.
+		 */
 		return -EFAULT;
 	}
 
drivers/mmc/core/sd.c +7 -1
index 4646b7a03db6..44e134fa04af 100644
@@ -66,7 +66,7 @@ static const unsigned int sd_au_size[] = {
 		__res & __mask;						\
 	})
 
-#define SD_POWEROFF_NOTIFY_TIMEOUT_MS 2000
+#define SD_POWEROFF_NOTIFY_TIMEOUT_MS 1000
 #define SD_WRITE_EXTR_SINGLE_TIMEOUT_MS 1000
 
 struct sd_busy_data {
@@ -1663,6 +1663,12 @@ static int sd_poweroff_notify(struct mmc_card *card)
 		goto out;
 	}
 
+	/* Find out when the command is completed. */
+	err = mmc_poll_for_busy(card, SD_WRITE_EXTR_SINGLE_TIMEOUT_MS, false,
+				MMC_BUSY_EXTR_SINGLE);
+	if (err)
+		goto out;
+
 	cb_data.card = card;
 	cb_data.reg_buf = reg_buf;
 	err = __mmc_poll_for_busy(card, SD_POWEROFF_NOTIFY_TIMEOUT_MS,
drivers/mmc/host/sdhci-of-esdhc.c +6 -2
index a593b1fbd69e..0f3658b36513 100644
@@ -524,12 +524,16 @@ static void esdhc_of_adma_workaround(struct sdhci_host *host, u32 intmask)
 
 static int esdhc_of_enable_dma(struct sdhci_host *host)
 {
+	int ret;
 	u32 value;
 	struct device *dev = mmc_dev(host->mmc);
 
 	if (of_device_is_compatible(dev->of_node, "fsl,ls1043a-esdhc") ||
-	    of_device_is_compatible(dev->of_node, "fsl,ls1046a-esdhc"))
-		dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40));
+	    of_device_is_compatible(dev->of_node, "fsl,ls1046a-esdhc")) {
+		ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(40));
+		if (ret)
+			return ret;
+	}
 
 	value = sdhci_readl(host, ESDHC_DMA_SYSCTL);
 
drivers/net/bonding/bond_3ad.c +2 -1
index 6006c2e8fa2b..9fd1d6cba3cd 100644
@@ -1021,8 +1021,8 @@ static void ad_mux_machine(struct port *port, bool *update_slave_arr)
 				if (port->aggregator &&
 				    port->aggregator->is_active &&
 				    !__port_is_enabled(port)) {
-
 					__enable_port(port);
+					*update_slave_arr = true;
 				}
 			}
 			break;
@@ -1779,6 +1779,7 @@ static void ad_agg_selection_logic(struct aggregator *agg,
 			     port = port->next_port_in_aggregator) {
 				__enable_port(port);
 			}
+			*update_slave_arr = true;
 		}
 	}
 
drivers/net/dsa/bcm_sf2.c +5 -2
index 7578a5c38df5..2e314e3021d8 100644
@@ -584,7 +584,7 @@ static int bcm_sf2_mdio_register(struct dsa_switch *ds)
 	get_device(&priv->master_mii_bus->dev);
 	priv->master_mii_dn = dn;
 
-	priv->slave_mii_bus = devm_mdiobus_alloc(ds->dev);
+	priv->slave_mii_bus = mdiobus_alloc();
 	if (!priv->slave_mii_bus) {
 		of_node_put(dn);
 		return -ENOMEM;
@@ -644,8 +644,10 @@ static int bcm_sf2_mdio_register(struct dsa_switch *ds)
 	}
 
 	err = mdiobus_register(priv->slave_mii_bus);
-	if (err && dn)
+	if (err && dn) {
+		mdiobus_free(priv->slave_mii_bus);
 		of_node_put(dn);
+	}
 
 	return err;
 }
@@ -653,6 +655,7 @@ static int bcm_sf2_mdio_register(struct dsa_switch *ds)
 static void bcm_sf2_mdio_unregister(struct bcm_sf2_priv *priv)
 {
 	mdiobus_unregister(priv->slave_mii_bus);
+	mdiobus_free(priv->slave_mii_bus);
 	of_node_put(priv->master_mii_dn);
 }
 
drivers/net/dsa/lantiq_gswip.c +11 -3
index dbd4486a173f..503adf03d2fc 100644
@@ -497,8 +497,9 @@ static int gswip_mdio_rd(struct mii_bus *bus, int addr, int reg)
 static int gswip_mdio(struct gswip_priv *priv, struct device_node *mdio_np)
 {
 	struct dsa_switch *ds = priv->ds;
+	int err;
 
-	ds->slave_mii_bus = devm_mdiobus_alloc(priv->dev);
+	ds->slave_mii_bus = mdiobus_alloc();
 	if (!ds->slave_mii_bus)
 		return -ENOMEM;
 
@@ -511,7 +512,11 @@ static int gswip_mdio(struct gswip_priv *priv, struct device_node *mdio_np)
 	ds->slave_mii_bus->parent = priv->dev;
 	ds->slave_mii_bus->phy_mask = ~ds->phys_mii_mask;
 
-	return of_mdiobus_register(ds->slave_mii_bus, mdio_np);
+	err = of_mdiobus_register(ds->slave_mii_bus, mdio_np);
+	if (err)
+		mdiobus_free(ds->slave_mii_bus);
+
+	return err;
 }
 
 static int gswip_pce_table_entry_read(struct gswip_priv *priv,
@@ -2170,8 +2175,10 @@ static int gswip_probe(struct platform_device *pdev)
 	gswip_mdio_mask(priv, GSWIP_MDIO_GLOB_ENABLE, 0, GSWIP_MDIO_GLOB);
 	dsa_unregister_switch(priv->ds);
 mdio_bus:
-	if (mdio_np)
+	if (mdio_np) {
 		mdiobus_unregister(priv->ds->slave_mii_bus);
+		mdiobus_free(priv->ds->slave_mii_bus);
+	}
 put_mdio_node:
 	of_node_put(mdio_np);
 	for (i = 0; i < priv->num_gphy_fw; i++)
@@ -2194,6 +2201,7 @@ static int gswip_remove(struct platform_device *pdev)
 
 	if (priv->ds->slave_mii_bus) {
 		mdiobus_unregister(priv->ds->slave_mii_bus);
+		mdiobus_free(priv->ds->slave_mii_bus);
 		of_node_put(priv->ds->slave_mii_bus->dev.of_node);
 	}
 
drivers/net/dsa/mt7530.c +1 -1
index 9890672a206d..fb59efc7f926 100644
@@ -2066,7 +2066,7 @@ mt7530_setup_mdio(struct mt7530_priv *priv)
 	if (priv->irq)
 		mt7530_setup_mdio_irq(priv);
 
-	ret = mdiobus_register(bus);
+	ret = devm_mdiobus_register(dev, bus);
 	if (ret) {
 		dev_err(dev, "failed to register MDIO bus: %d\n", ret);
 		if (priv->irq)
drivers/net/dsa/mv88e6xxx/chip.c +10 -5
index 43d126628610..056e3b65cd27 100644
@@ -3416,7 +3416,7 @@ static int mv88e6xxx_mdio_register(struct mv88e6xxx_chip *chip,
 			return err;
 	}
 
-	bus = devm_mdiobus_alloc_size(chip->dev, sizeof(*mdio_bus));
+	bus = mdiobus_alloc_size(sizeof(*mdio_bus));
 	if (!bus)
 		return -ENOMEM;
 
@@ -3441,14 +3441,14 @@ static int mv88e6xxx_mdio_register(struct mv88e6xxx_chip *chip,
 	if (!external) {
 		err = mv88e6xxx_g2_irq_mdio_setup(chip, bus);
 		if (err)
-			return err;
+			goto out;
 	}
 
 	err = of_mdiobus_register(bus, np);
 	if (err) {
 		dev_err(chip->dev, "Cannot register MDIO bus (%d)\n", err);
 		mv88e6xxx_g2_irq_mdio_free(chip, bus);
-		return err;
+		goto out;
 	}
 
 	if (external)
@@ -3457,21 +3457,26 @@ static int mv88e6xxx_mdio_register(struct mv88e6xxx_chip *chip,
 		list_add(&mdio_bus->list, &chip->mdios);
 
 	return 0;
+
+out:
+	mdiobus_free(bus);
+	return err;
 }
 
 static void mv88e6xxx_mdios_unregister(struct mv88e6xxx_chip *chip)
 
 {
-	struct mv88e6xxx_mdio_bus *mdio_bus;
+	struct mv88e6xxx_mdio_bus *mdio_bus, *p;
 	struct mii_bus *bus;
 
-	list_for_each_entry(mdio_bus, &chip->mdios, list) {
+	list_for_each_entry_safe(mdio_bus, p, &chip->mdios, list) {
 		bus = mdio_bus->bus;
 
 		if (!mdio_bus->external)
 			mv88e6xxx_g2_irq_mdio_free(chip, bus);
 
 		mdiobus_unregister(bus);
+		mdiobus_free(bus);
 	}
 }
 
drivers/net/dsa/ocelot/felix_vsc9959.c +3 -1
index 11b42fd812e4..e53ad283e259 100644
@@ -1066,7 +1066,7 @@ static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot)
 		return PTR_ERR(hw);
 	}
 
-	bus = devm_mdiobus_alloc_size(dev, sizeof(*mdio_priv));
+	bus = mdiobus_alloc_size(sizeof(*mdio_priv));
 	if (!bus)
 		return -ENOMEM;
 
@@ -1086,6 +1086,7 @@ static int vsc9959_mdio_bus_alloc(struct ocelot *ocelot)
 	rc = mdiobus_register(bus);
 	if (rc < 0) {
 		dev_err(dev, "failed to register MDIO bus\n");
+		mdiobus_free(bus);
 		return rc;
 	}
 
@@ -1135,6 +1136,7 @@ static void vsc9959_mdio_bus_free(struct ocelot *ocelot)
 		lynx_pcs_destroy(pcs);
 	}
 	mdiobus_unregister(felix->imdio);
+	mdiobus_free(felix->imdio);
 }
 
 static void vsc9959_sched_speed_set(struct ocelot *ocelot, int port,
drivers/net/dsa/qca/ar9331.c +1 -2
index a6bfb6abc51a..5d476f452396 100644
@@ -378,7 +378,7 @@ static int ar9331_sw_mbus_init(struct ar9331_sw_priv *priv)
 	if (!mnp)
 		return -ENODEV;
 
-	ret = of_mdiobus_register(mbus, mnp);
+	ret = devm_of_mdiobus_register(dev, mbus, mnp);
 	of_node_put(mnp);
 	if (ret)
 		return ret;
@@ -1093,7 +1093,6 @@ static void ar9331_sw_remove(struct mdio_device *mdiodev)
 	}
 
 	irq_domain_remove(priv->irqdomain);
-	mdiobus_unregister(priv->mbus);
 	dsa_unregister_switch(&priv->ds);
 
 	reset_control_assert(priv->sw_reset);
drivers/net/ethernet/amd/xgbe/xgbe-pci.c +3 -0
index 90cb55eb5466..014513ce00a1 100644
@@ -418,6 +418,9 @@ static void xgbe_pci_remove(struct pci_dev *pdev)
 
 	pci_free_irq_vectors(pdata->pcidev);
 
+	/* Disable all interrupts in the hardware */
+	XP_IOWRITE(pdata, XP_INT_EN, 0x0);
+
 	xgbe_free_pdata(pdata);
 }
 
drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +2 -2
index 1108e1730841..110075336a75 100644
@@ -4511,12 +4511,12 @@ static int dpaa2_eth_remove(struct fsl_mc_device *ls_dev)
 #ifdef CONFIG_DEBUG_FS
 	dpaa2_dbg_remove(priv);
 #endif
+
+	unregister_netdev(net_dev);
 	rtnl_lock();
 	dpaa2_eth_disconnect_mac(priv);
 	rtnl_unlock();
 
-	unregister_netdev(net_dev);
-
 	dpaa2_eth_dl_port_del(priv);
 	dpaa2_eth_dl_traps_unregister(priv);
 	dpaa2_eth_dl_unregister(priv);
drivers/net/ethernet/intel/ice/ice.h +2 -1
index fba8f021c397..d119812755b7 100644
@@ -398,6 +398,7 @@ enum ice_pf_flags {
 	ICE_FLAG_VF_TRUE_PROMISC_ENA,
 	ICE_FLAG_MDD_AUTO_RESET_VF,
 	ICE_FLAG_LINK_LENIENT_MODE_ENA,
+	ICE_FLAG_PLUG_AUX_DEV,
 	ICE_PF_FLAGS_NBITS		/* must be last */
 };
 
@@ -692,7 +693,7 @@ static inline void ice_set_rdma_cap(struct ice_pf *pf)
 	if (pf->hw.func_caps.common_cap.rdma && pf->num_rdma_msix) {
 		set_bit(ICE_FLAG_RDMA_ENA, pf->flags);
 		set_bit(ICE_FLAG_AUX_ENA, pf->flags);
-		ice_plug_aux_dev(pf);
+		set_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags);
 	}
 }
 
drivers/net/ethernet/intel/ice/ice_common.c +2 -1
index df5ad4de1f00..f4463e962d52 100644
@@ -3272,7 +3272,8 @@ ice_cfg_phy_fec(struct ice_port_info *pi, struct ice_aqc_set_phy_cfg_data *cfg,
 	    !ice_fw_supports_report_dflt_cfg(hw)) {
 		struct ice_link_default_override_tlv tlv;
 
-		if (ice_get_link_default_override(&tlv, pi))
+		status = ice_get_link_default_override(&tlv, pi);
+		if (status)
 			goto out;
 
 		if (!(tlv.options & ICE_LINK_OVERRIDE_STRICT_MODE) &&
drivers/net/ethernet/intel/ice/ice_lag.c +28 -6
index e375ac849aec..4f954db01b92 100644
@@ -204,17 +204,39 @@ ice_lag_unlink(struct ice_lag *lag,
 		lag->upper_netdev = NULL;
 	}
 
-	if (lag->peer_netdev) {
-		dev_put(lag->peer_netdev);
-		lag->peer_netdev = NULL;
-	}
-
+	lag->peer_netdev = NULL;
 	ice_set_sriov_cap(pf);
 	ice_set_rdma_cap(pf);
 	lag->bonded = false;
 	lag->role = ICE_LAG_NONE;
 }
 
+/**
+ * ice_lag_unregister - handle netdev unregister events
+ * @lag: LAG info struct
+ * @netdev: netdev reporting the event
+ */
+static void ice_lag_unregister(struct ice_lag *lag, struct net_device *netdev)
+{
+	struct ice_pf *pf = lag->pf;
+
+	/* check to see if this event is for this netdev
+	 * check that we are in an aggregate
+	 */
+	if (netdev != lag->netdev || !lag->bonded)
+		return;
+
+	if (lag->upper_netdev) {
+		dev_put(lag->upper_netdev);
+		lag->upper_netdev = NULL;
+		ice_set_sriov_cap(pf);
+		ice_set_rdma_cap(pf);
+	}
+	/* perform some cleanup in case we come back */
+	lag->bonded = false;
+	lag->role = ICE_LAG_NONE;
+}
+
 /**
  * ice_lag_changeupper_event - handle LAG changeupper event
  * @lag: LAG info struct
@@ -307,7 +329,7 @@ ice_lag_event_handler(struct notifier_block *notif_blk, unsigned long event,
 		ice_lag_info_event(lag, ptr);
 		break;
 	case NETDEV_UNREGISTER:
-		ice_lag_unlink(lag, ptr);
+		ice_lag_unregister(lag, netdev);
 		break;
 	default:
 		break;
drivers/net/ethernet/intel/ice/ice_lan_tx_rx.h +1 -0
index 80736e0ec0dc..3f635fdbfaff 100644
@@ -528,6 +528,7 @@ struct ice_tx_ctx_desc {
 			(0x3FFFFULL << ICE_TXD_CTX_QW1_TSO_LEN_S)
 
 #define ICE_TXD_CTX_QW1_MSS_S	50
+#define ICE_TXD_CTX_MIN_MSS	64
 
 enum ice_tx_ctx_desc_cmd_bits {
 	ICE_TX_CTX_DESC_TSO		= 0x01,
drivers/net/ethernet/intel/ice/ice_main.c +20 -8
index 819c32a721e8..ab2dea0d2c1a 100644
@@ -2141,6 +2141,9 @@ static void ice_service_task(struct work_struct *work)
 		return;
 	}
 
+	if (test_and_clear_bit(ICE_FLAG_PLUG_AUX_DEV, pf->flags))
+		ice_plug_aux_dev(pf);
+
 	ice_clean_adminq_subtask(pf);
 	ice_check_media_subtask(pf);
 	ice_check_for_hang_subtask(pf);
@@ -7206,6 +7209,7 @@ ice_features_check(struct sk_buff *skb,
 		   struct net_device __always_unused *netdev,
 		   netdev_features_t features)
 {
+	bool gso = skb_is_gso(skb);
 	size_t len;
 
 	/* No point in doing any of this if neither checksum nor GSO are
@@ -7218,24 +7222,32 @@ ice_features_check(struct sk_buff *skb,
 	/* We cannot support GSO if the MSS is going to be less than
 	 * 64 bytes. If it is then we need to drop support for GSO.
 	 */
-	if (skb_is_gso(skb) && (skb_shinfo(skb)->gso_size < 64))
+	if (gso && (skb_shinfo(skb)->gso_size < ICE_TXD_CTX_MIN_MSS))
 		features &= ~NETIF_F_GSO_MASK;
 
-	len = skb_network_header(skb) - skb->data;
+	len = skb_network_offset(skb);
 	if (len > ICE_TXD_MACLEN_MAX || len & 0x1)
 		goto out_rm_features;
 
-	len = skb_transport_header(skb) - skb_network_header(skb);
+	len = skb_network_header_len(skb);
 	if (len > ICE_TXD_IPLEN_MAX || len & 0x1)
 		goto out_rm_features;
 
 	if (skb->encapsulation) {
-		len = skb_inner_network_header(skb) - skb_transport_header(skb);
-		if (len > ICE_TXD_L4LEN_MAX || len & 0x1)
-			goto out_rm_features;
+		/* this must work for VXLAN frames AND IPIP/SIT frames, and in
+		 * the case of IPIP frames, the transport header pointer is
+		 * after the inner header! So check to make sure that this
+		 * is a GRE or UDP_TUNNEL frame before doing that math.
+		 */
+		if (gso && (skb_shinfo(skb)->gso_type &
+			    (SKB_GSO_GRE | SKB_GSO_UDP_TUNNEL))) {
+			len = skb_inner_network_header(skb) -
+			      skb_transport_header(skb);
+			if (len > ICE_TXD_L4LEN_MAX || len & 0x1)
+				goto out_rm_features;
+		}
 
-		len = skb_inner_transport_header(skb) -
-		      skb_inner_network_header(skb);
+		len = skb_inner_network_header_len(skb);
 		if (len > ICE_TXD_IPLEN_MAX || len & 0x1)
 			goto out_rm_features;
 	}
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +7 -6
index c714e1ecd308..7ef2e1241a76 100644
@@ -1984,14 +1984,15 @@ static void ixgbevf_set_rx_buffer_len(struct ixgbevf_adapter *adapter,
 	if (adapter->flags & IXGBEVF_FLAGS_LEGACY_RX)
 		return;
 
-	set_ring_build_skb_enabled(rx_ring);
+	if (PAGE_SIZE < 8192)
+		if (max_frame > IXGBEVF_MAX_FRAME_BUILD_SKB)
+			set_ring_uses_large_buffer(rx_ring);
 
-	if (PAGE_SIZE < 8192) {
-		if (max_frame <= IXGBEVF_MAX_FRAME_BUILD_SKB)
-			return;
+	/* 82599 can't rely on RXDCTL.RLPML to restrict the size of the frame */
+	if (adapter->hw.mac.type == ixgbe_mac_82599_vf && !ring_uses_large_buffer(rx_ring))
+		return;
 
-		set_ring_uses_large_buffer(rx_ring);
-	}
+	set_ring_build_skb_enabled(rx_ring);
 }
 
 /**
drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c +1 -1
index 59783fc46a7b..10b866e9f726 100644
@@ -1103,7 +1103,7 @@ void sparx5_get_stats64(struct net_device *ndev,
 	stats->tx_carrier_errors = portstats[spx5_stats_tx_csense_cnt];
 	stats->tx_window_errors = portstats[spx5_stats_tx_late_coll_cnt];
 	stats->rx_dropped = portstats[spx5_stats_ana_ac_port_stat_lsb_cnt];
-	for (idx = 0; idx < 2 * SPX5_PRIOS; ++idx, ++stats)
+	for (idx = 0; idx < 2 * SPX5_PRIOS; ++idx)
 		stats->rx_dropped += portstats[spx5_stats_green_p0_rx_port_drop
 					       + idx];
 	stats->tx_dropped = portstats[spx5_stats_tx_local_drop];
drivers/net/ethernet/mscc/ocelot.c +7 -4
index be2dd69bfee8..6aad0953e8fe 100644
@@ -1215,12 +1215,11 @@ void ocelot_get_strings(struct ocelot *ocelot, int port, u32 sset, u8 *data)
 }
 EXPORT_SYMBOL(ocelot_get_strings);
 
+/* Caller must hold &ocelot->stats_lock */
 static void ocelot_update_stats(struct ocelot *ocelot)
 {
 	int i, j;
 
-	mutex_lock(&ocelot->stats_lock);
-
 	for (i = 0; i < ocelot->num_phys_ports; i++) {
 		/* Configure the port to read the stats from */
 		ocelot_write(ocelot, SYS_STAT_CFG_STAT_VIEW(i), SYS_STAT_CFG);
@@ -1239,8 +1238,6 @@ static void ocelot_update_stats(struct ocelot *ocelot)
 					      ~(u64)U32_MAX) + val;
 		}
 	}
-
-	mutex_unlock(&ocelot->stats_lock);
 }
 
 static void ocelot_check_stats_work(struct work_struct *work)
@@ -1249,7 +1246,9 @@ static void ocelot_check_stats_work(struct work_struct *work)
 	struct ocelot *ocelot = container_of(del_work, struct ocelot,
 					     stats_work);
 
+	mutex_lock(&ocelot->stats_lock);
 	ocelot_update_stats(ocelot);
+	mutex_unlock(&ocelot->stats_lock);
 
 	queue_delayed_work(ocelot->stats_queue, &ocelot->stats_work,
 			   OCELOT_STATS_CHECK_DELAY);
@@ -1259,12 +1258,16 @@ void ocelot_get_ethtool_stats(struct ocelot *ocelot, int port, u64 *data)
 {
 	int i;
 
+	mutex_lock(&ocelot->stats_lock);
+
 	/* check and update now */
 	ocelot_update_stats(ocelot);
 
 	/* Copy all counters */
 	for (i = 0; i < ocelot->num_stats; i++)
 		*data++ = ocelot->stats[port * ocelot->num_stats + i];
+
+	mutex_unlock(&ocelot->stats_lock);
 }
 EXPORT_SYMBOL(ocelot_get_ethtool_stats);
 
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +8 -4
index ab70179728f6..6521675be85c 100644
@@ -1011,6 +1011,7 @@ nfp_tunnel_del_shared_mac(struct nfp_app *app, struct net_device *netdev,
 	struct nfp_flower_repr_priv *repr_priv;
 	struct nfp_tun_offloaded_mac *entry;
 	struct nfp_repr *repr;
+	u16 nfp_mac_idx;
 	int ida_idx;
 
 	entry = nfp_tunnel_lookup_offloaded_macs(app, mac);
@@ -1029,8 +1030,6 @@ nfp_tunnel_del_shared_mac(struct nfp_app *app, struct net_device *netdev,
 		entry->bridge_count--;
 
 		if (!entry->bridge_count && entry->ref_count) {
-			u16 nfp_mac_idx;
-
 			nfp_mac_idx = entry->index & ~NFP_TUN_PRE_TUN_IDX_BIT;
 			if (__nfp_tunnel_offload_mac(app, mac, nfp_mac_idx,
 						     false)) {
@@ -1046,7 +1045,6 @@ nfp_tunnel_del_shared_mac(struct nfp_app *app, struct net_device *netdev,
 
 	/* If MAC is now used by 1 repr set the offloaded MAC index to port. */
 	if (entry->ref_count == 1 && list_is_singular(&entry->repr_list)) {
-		u16 nfp_mac_idx;
 		int port, err;
 
 		repr_priv = list_first_entry(&entry->repr_list,
@@ -1074,8 +1072,14 @@ nfp_tunnel_del_shared_mac(struct nfp_app *app, struct net_device *netdev,
 	WARN_ON_ONCE(rhashtable_remove_fast(&priv->tun.offloaded_macs,
 					    &entry->ht_node,
 					    offloaded_macs_params));
+
+	if (nfp_flower_is_supported_bridge(netdev))
+		nfp_mac_idx = entry->index & ~NFP_TUN_PRE_TUN_IDX_BIT;
+	else
+		nfp_mac_idx = entry->index;
+
 	/* If MAC has global ID then extract and free the ida entry. */
-	if (nfp_tunnel_is_mac_idx_global(entry->index)) {
+	if (nfp_tunnel_is_mac_idx_global(nfp_mac_idx)) {
 		ida_idx = nfp_tunnel_get_ida_from_global_mac_idx(entry->index);
 		ida_simple_remove(&priv->tun.mac_off_ids, ida_idx);
 	}
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +1 -1
index 4422baeed3d8..13fbb68158c6 100644
@@ -756,7 +756,7 @@ static int sun8i_dwmac_reset(struct stmmac_priv *priv)
 
 	if (err) {
 		dev_err(priv->device, "EMAC reset timeout\n");
-		return -EFAULT;
+		return err;
 	}
 	return 0;
 }
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +7 -6
index 161e65333ed9..e6af26b2dcb8 100644
@@ -400,7 +400,7 @@ static void stmmac_lpi_entry_timer_config(struct stmmac_priv *priv, bool en)
  * Description: this function is to verify and enter in LPI mode in case of
  * EEE.
  */
-static void stmmac_enable_eee_mode(struct stmmac_priv *priv)
+static int stmmac_enable_eee_mode(struct stmmac_priv *priv)
 {
 	u32 tx_cnt = priv->plat->tx_queues_to_use;
 	u32 queue;
@@ -410,13 +410,14 @@ static void stmmac_enable_eee_mode(struct stmmac_priv *priv)
 		struct stmmac_tx_queue *tx_q = &priv->tx_queue[queue];
 
 		if (tx_q->dirty_tx != tx_q->cur_tx)
-			return; /* still unfinished work */
+			return -EBUSY; /* still unfinished work */
 	}
 
 	/* Check and enter in LPI mode */
 	if (!priv->tx_path_in_lpi_mode)
 		stmmac_set_eee_mode(priv, priv->hw,
 				priv->plat->en_tx_lpi_clockgating);
+	return 0;
 }
 
 /**
@@ -448,8 +449,8 @@ static void stmmac_eee_ctrl_timer(struct timer_list *t)
 {
 	struct stmmac_priv *priv = from_timer(priv, t, eee_ctrl_timer);
 
-	stmmac_enable_eee_mode(priv);
-	mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer));
+	if (stmmac_enable_eee_mode(priv))
+		mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer));
 }
 
 /**
@@ -2637,8 +2638,8 @@ static int stmmac_tx_clean(struct stmmac_priv *priv, int budget, u32 queue)
 
 	if (priv->eee_enabled && !priv->tx_path_in_lpi_mode &&
 	    priv->eee_sw_timer_en) {
-		stmmac_enable_eee_mode(priv);
-		mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer));
+		if (stmmac_enable_eee_mode(priv))
+			mod_timer(&priv->eee_ctrl_timer, STMMAC_LPI_T(priv->tx_lpi_timer));
 	}
 
 	/* We still have pending packets, let's call for a new scheduling */
drivers/net/mdio/mdio-aspeed.c +1 -0
index 966c3b4ad59d..e2273588c75b 100644
@@ -148,6 +148,7 @@ static const struct of_device_id aspeed_mdio_of_match[] = {
 	{ .compatible = "aspeed,ast2600-mdio", },
 	{ },
 };
+MODULE_DEVICE_TABLE(of, aspeed_mdio_of_match);
 
 static struct platform_driver aspeed_mdio_driver = {
 	.driver = {
drivers/net/phy/marvell.c +9 -8
index c10cc2cd53b6..cfda625dbea5 100644
@@ -553,9 +553,9 @@ static int m88e1121_config_aneg_rgmii_delays(struct phy_device *phydev)
 	else
 		mscr = 0;
 
-	return phy_modify_paged(phydev, MII_MARVELL_MSCR_PAGE,
-				MII_88E1121_PHY_MSCR_REG,
-				MII_88E1121_PHY_MSCR_DELAY_MASK, mscr);
+	return phy_modify_paged_changed(phydev, MII_MARVELL_MSCR_PAGE,
+					MII_88E1121_PHY_MSCR_REG,
+					MII_88E1121_PHY_MSCR_DELAY_MASK, mscr);
 }
 
 static int m88e1121_config_aneg(struct phy_device *phydev)
@@ -569,11 +569,13 @@ static int m88e1121_config_aneg(struct phy_device *phydev)
 			return err;
 	}
 
+	changed = err;
+
 	err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
 	if (err < 0)
 		return err;
 
-	changed = err;
+	changed |= err;
 
 	err = genphy_config_aneg(phydev);
 	if (err < 0)
@@ -1213,16 +1215,15 @@ static int m88e1118_config_aneg(struct phy_device *phydev)
 {
 	int err;
 
-	err = genphy_soft_reset(phydev);
+	err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
 	if (err < 0)
 		return err;
 
-	err = marvell_set_polarity(phydev, phydev->mdix_ctrl);
+	err = genphy_config_aneg(phydev);
 	if (err < 0)
 		return err;
 
-	err = genphy_config_aneg(phydev);
-	return 0;
+	return genphy_soft_reset(phydev);
 }
 
 static int m88e1118_config_init(struct phy_device *phydev)
drivers/net/usb/ax88179_178a.c +39 -29

97 lines not on this page · raw message

drivers/net/veth.c +8 -5
index ecbc09cbe259..f478fe7e2b82 100644
@@ -272,9 +272,10 @@ static void __veth_xdp_flush(struct veth_rq *rq)
 {
 	/* Write ptr_ring before reading rx_notify_masked */
 	smp_mb();
-	if (!rq->rx_notify_masked) {
-		rq->rx_notify_masked = true;
-		napi_schedule(&rq->xdp_napi);
+	if (!READ_ONCE(rq->rx_notify_masked) &&
+	    napi_schedule_prep(&rq->xdp_napi)) {
+		WRITE_ONCE(rq->rx_notify_masked, true);
+		__napi_schedule(&rq->xdp_napi);
 	}
 }
 
@@ -919,8 +920,10 @@ static int veth_poll(struct napi_struct *napi, int budget)
 		/* Write rx_notify_masked before reading ptr_ring */
 		smp_store_mb(rq->rx_notify_masked, false);
 		if (unlikely(!__ptr_ring_empty(&rq->xdp_ring))) {
-			rq->rx_notify_masked = true;
-			napi_schedule(&rq->xdp_napi);
+			if (napi_schedule_prep(&rq->xdp_napi)) {
+				WRITE_ONCE(rq->rx_notify_masked, true);
+				__napi_schedule(&rq->xdp_napi);
+			}
 		}
 	}
 
drivers/nvme/host/pci.c +2 -1
index 149ecf73df38..b925a5f4afc3 100644
@@ -3300,7 +3300,8 @@ static const struct pci_device_id nvme_id_table[] = {
 				NVME_QUIRK_DEALLOCATE_ZEROES, },
 	{ PCI_VDEVICE(INTEL, 0x0a54),	/* Intel P4500/P4600 */
 		.driver_data = NVME_QUIRK_STRIPE_SIZE |
-				NVME_QUIRK_DEALLOCATE_ZEROES, },
+				NVME_QUIRK_DEALLOCATE_ZEROES |
+				NVME_QUIRK_IGNORE_DEV_SUBNQN, },
 	{ PCI_VDEVICE(INTEL, 0x0a55),	/* Dell Express Flash P4600 */
 		.driver_data = NVME_QUIRK_STRIPE_SIZE |
 				NVME_QUIRK_DEALLOCATE_ZEROES, },
drivers/nvme/host/tcp.c +9 -1
index 4ae562d30d2b..efa9037da53c 100644
@@ -920,7 +920,15 @@ static inline void nvme_tcp_done_send_req(struct nvme_tcp_queue *queue)
 
 static void nvme_tcp_fail_request(struct nvme_tcp_request *req)
 {
-	nvme_tcp_end_request(blk_mq_rq_from_pdu(req), NVME_SC_HOST_PATH_ERROR);
+	if (nvme_tcp_async_req(req)) {
+		union nvme_result res = {};
+
+		nvme_complete_async_event(&req->queue->ctrl->ctrl,
+				cpu_to_le16(NVME_SC_HOST_PATH_ERROR), &res);
+	} else {
+		nvme_tcp_end_request(blk_mq_rq_from_pdu(req),
+				NVME_SC_HOST_PATH_ERROR);
+	}
 }
 
 static int nvme_tcp_try_send_data(struct nvme_tcp_request *req)
drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c +2 -1
index cd2332bf0e31..fdbd64c03e12 100644
@@ -9,6 +9,7 @@
 
 #include <linux/bitfield.h>
 #include <linux/bitops.h>
+#include <linux/bits.h>
 #include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/io.h>
@@ -250,7 +251,7 @@ static int phy_meson_axg_mipi_dphy_power_on(struct phy *phy)
 		     (DIV_ROUND_UP(priv->config.clk_zero, temp) << 16) |
 		     (DIV_ROUND_UP(priv->config.clk_prepare, temp) << 24));
 	regmap_write(priv->regmap, MIPI_DSI_CLK_TIM1,
-		     DIV_ROUND_UP(priv->config.clk_pre, temp));
+		     DIV_ROUND_UP(priv->config.clk_pre, BITS_PER_BYTE));
 
 	regmap_write(priv->regmap, MIPI_DSI_HS_TIM,
 		     DIV_ROUND_UP(priv->config.hs_exit, temp) |
drivers/phy/broadcom/Kconfig +1 -2
index fd92b73b7109..1dcfa3bd1442 100644
@@ -95,8 +95,7 @@ config PHY_BRCM_USB
 	depends on OF
 	select GENERIC_PHY
 	select SOC_BRCMSTB if ARCH_BRCMSTB
-	default ARCH_BCM4908
-	default ARCH_BRCMSTB
+	default ARCH_BCM4908 || ARCH_BRCMSTB
 	help
 	  Enable this to support the Broadcom STB USB PHY.
 	  This driver is required by the USB XHCI, EHCI and OHCI
drivers/phy/phy-core-mipi-dphy.c +2 -2
index 288c9c67aa74..ccb4045685cd 100644
@@ -36,7 +36,7 @@ int phy_mipi_dphy_get_default_config(unsigned long pixel_clock,
 
 	cfg->clk_miss = 0;
 	cfg->clk_post = 60000 + 52 * ui;
-	cfg->clk_pre = 8000;
+	cfg->clk_pre = 8;
 	cfg->clk_prepare = 38000;
 	cfg->clk_settle = 95000;
 	cfg->clk_term_en = 0;
@@ -97,7 +97,7 @@ int phy_mipi_dphy_config_validate(struct phy_configure_opts_mipi_dphy *cfg)
 	if (cfg->clk_post < (60000 + 52 * ui))
 		return -EINVAL;
 
-	if (cfg->clk_pre < 8000)
+	if (cfg->clk_pre < 8)
 		return -EINVAL;
 
 	if (cfg->clk_prepare < 38000 || cfg->clk_prepare > 95000)
drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c +2 -1
index 347dc79a18c1..630e01b5c19b 100644
@@ -5,6 +5,7 @@
  * Author: Wyon Bi <[email protected]>
  */
 
+#include <linux/bits.h>
 #include <linux/kernel.h>
 #include <linux/clk.h>
 #include <linux/iopoll.h>
@@ -364,7 +365,7 @@ static void inno_dsidphy_mipi_mode_enable(struct inno_dsidphy *inno)
 	 * The value of counter for HS Tclk-pre
 	 * Tclk-pre = Tpin_txbyteclkhs * value
 	 */
-	clk_pre = DIV_ROUND_UP(cfg->clk_pre, t_txbyteclkhs);
+	clk_pre = DIV_ROUND_UP(cfg->clk_pre, BITS_PER_BYTE);
 
 	/*
 	 * The value of counter for HS Tlpx Time
drivers/phy/st/phy-stm32-usbphyc.c +1 -1
index 937a14fa7448..da05642d3bd4 100644
@@ -225,7 +225,7 @@ static int stm32_usbphyc_pll_enable(struct stm32_usbphyc *usbphyc)
 
 		ret = __stm32_usbphyc_pll_disable(usbphyc);
 		if (ret)
-			return ret;
+			goto dec_n_pll_cons;
 	}
 
 	ret = stm32_usbphyc_regulators_enable(usbphyc);
drivers/phy/ti/phy-j721e-wiz.c +1 -0
index 126f5b8735cc..8963fbf7aa73 100644
@@ -233,6 +233,7 @@ static const struct clk_div_table clk_div_table[] = {
 	{ .val = 1, .div = 2, },
 	{ .val = 2, .div = 4, },
 	{ .val = 3, .div = 8, },
+	{ /* sentinel */ },
 };
 
 static const struct wiz_clk_div_sel clk_div_sel[] = {
drivers/phy/xilinx/phy-zynqmp.c +6 -5
index f478d8a17115..9be9535ad7ab 100644
@@ -134,7 +134,8 @@
 #define PROT_BUS_WIDTH_10		0x0
 #define PROT_BUS_WIDTH_20		0x1
 #define PROT_BUS_WIDTH_40		0x2
-#define PROT_BUS_WIDTH_SHIFT		2
+#define PROT_BUS_WIDTH_SHIFT(n)		((n) * 2)
+#define PROT_BUS_WIDTH_MASK(n)		GENMASK((n) * 2 + 1, (n) * 2)
 
 /* Number of GT lanes */
 #define NUM_LANES			4
@@ -445,12 +446,12 @@ static void xpsgtr_phy_init_sata(struct xpsgtr_phy *gtr_phy)
 static void xpsgtr_phy_init_sgmii(struct xpsgtr_phy *gtr_phy)
 {
 	struct xpsgtr_dev *gtr_dev = gtr_phy->dev;
+	u32 mask = PROT_BUS_WIDTH_MASK(gtr_phy->lane);
+	u32 val = PROT_BUS_WIDTH_10 << PROT_BUS_WIDTH_SHIFT(gtr_phy->lane);
 
 	/* Set SGMII protocol TX and RX bus width to 10 bits. */
-	xpsgtr_write(gtr_dev, TX_PROT_BUS_WIDTH,
-		     PROT_BUS_WIDTH_10 << (gtr_phy->lane * PROT_BUS_WIDTH_SHIFT));
-	xpsgtr_write(gtr_dev, RX_PROT_BUS_WIDTH,
-		     PROT_BUS_WIDTH_10 << (gtr_phy->lane * PROT_BUS_WIDTH_SHIFT));
+	xpsgtr_clr_set(gtr_dev, TX_PROT_BUS_WIDTH, mask, val);
+	xpsgtr_clr_set(gtr_dev, RX_PROT_BUS_WIDTH, mask, val);
 
 	xpsgtr_bypass_scrambler_8b10b(gtr_phy);
 }
drivers/s390/cio/device.c +1 -1
index 8d14569823d7..61cde02b23fe 100644
@@ -1194,7 +1194,7 @@ static int io_subchannel_chp_event(struct subchannel *sch,
 			else
 				path_event[chpid] = PE_NONE;
 		}
-		if (cdev)
+		if (cdev && cdev->drv && cdev->drv->path_event)
 			cdev->drv->path_event(cdev, path_event);
 		break;
 	}
drivers/scsi/lpfc/lpfc.h +10 -3
index 19fd9d263f47..f66ba64080a3 100644
@@ -1163,6 +1163,16 @@ struct lpfc_hba {
 	uint32_t cfg_hostmem_hgp;
 	uint32_t cfg_log_verbose;
 	uint32_t cfg_enable_fc4_type;
+#define LPFC_ENABLE_FCP  1
+#define LPFC_ENABLE_NVME 2
+#define LPFC_ENABLE_BOTH 3
+#if (IS_ENABLED(CONFIG_NVME_FC))
+#define LPFC_MAX_ENBL_FC4_TYPE LPFC_ENABLE_BOTH
+#define LPFC_DEF_ENBL_FC4_TYPE LPFC_ENABLE_BOTH
+#else
+#define LPFC_MAX_ENBL_FC4_TYPE LPFC_ENABLE_FCP
+#define LPFC_DEF_ENBL_FC4_TYPE LPFC_ENABLE_FCP
+#endif
 	uint32_t cfg_aer_support;
 	uint32_t cfg_sriov_nr_virtfn;
 	uint32_t cfg_request_firmware_upgrade;
@@ -1184,9 +1194,6 @@ struct lpfc_hba {
 	uint32_t cfg_ras_fwlog_func;
 	uint32_t cfg_enable_bbcr;	/* Enable BB Credit Recovery */
 	uint32_t cfg_enable_dpp;	/* Enable Direct Packet Push */
-#define LPFC_ENABLE_FCP  1
-#define LPFC_ENABLE_NVME 2
-#define LPFC_ENABLE_BOTH 3
 	uint32_t cfg_enable_pbde;
 	uint32_t cfg_enable_mi;
 	struct nvmet_fc_target_port *targetport;
drivers/scsi/lpfc/lpfc_attr.c +2 -2
index f20c4fe1fb8b..632b9cdabd14 100644
@@ -3978,8 +3978,8 @@ LPFC_ATTR_R(nvmet_mrq_post,
  *                    3 - register both FCP and NVME
  * Supported values are [1,3]. Default value is 3
  */
-LPFC_ATTR_R(enable_fc4_type, LPFC_ENABLE_BOTH,
-	    LPFC_ENABLE_FCP, LPFC_ENABLE_BOTH,
+LPFC_ATTR_R(enable_fc4_type, LPFC_DEF_ENBL_FC4_TYPE,
+	    LPFC_ENABLE_FCP, LPFC_MAX_ENBL_FC4_TYPE,
 	    "Enable FC4 Protocol support - FCP / NVME");
 
 /*
drivers/scsi/lpfc/lpfc_init.c +1 -1
index 2bbd1be6cc5d..3eebcae52784 100644
@@ -2055,7 +2055,7 @@ lpfc_handle_eratt_s4(struct lpfc_hba *phba)
 		}
 		if (reg_err1 == SLIPORT_ERR1_REG_ERR_CODE_2 &&
 		    reg_err2 == SLIPORT_ERR2_REG_FW_RESTART) {
-			lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT,
+			lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
 					"3143 Port Down: Firmware Update "
 					"Detected\n");
 			en_rn_msg = false;
drivers/scsi/lpfc/lpfc_sli.c +7 -1
index e5009f21d97e..2978c61dc586 100644
@@ -13366,6 +13366,7 @@ lpfc_sli4_eratt_read(struct lpfc_hba *phba)
 	uint32_t uerr_sta_hi, uerr_sta_lo;
 	uint32_t if_type, portsmphr;
 	struct lpfc_register portstat_reg;
+	u32 logmask;
 
 	/*
 	 * For now, use the SLI4 device internal unrecoverable error
@@ -13416,7 +13417,12 @@ lpfc_sli4_eratt_read(struct lpfc_hba *phba)
 				readl(phba->sli4_hba.u.if_type2.ERR1regaddr);
 			phba->work_status[1] =
 				readl(phba->sli4_hba.u.if_type2.ERR2regaddr);
-			lpfc_printf_log(phba, KERN_ERR, LOG_TRACE_EVENT,
+			logmask = LOG_TRACE_EVENT;
+			if (phba->work_status[0] ==
+				SLIPORT_ERR1_REG_ERR_CODE_2 &&
+			    phba->work_status[1] == SLIPORT_ERR2_REG_FW_RESTART)
+				logmask = LOG_SLI;
+			lpfc_printf_log(phba, KERN_ERR, logmask,
 					"2885 Port Status Event: "
 					"port status reg 0x%x, "
 					"port smphr reg 0x%x, "
drivers/scsi/myrs.c +2 -1
index 07f274afd7e5..a4d244ee4548 100644
@@ -2265,7 +2265,8 @@ static void myrs_cleanup(struct myrs_hba *cs)
 	myrs_unmap(cs);
 
 	if (cs->mmio_base) {
-		cs->disable_intr(cs);
+		if (cs->disable_intr)
+			cs->disable_intr(cs);
 		iounmap(cs->mmio_base);
 		cs->mmio_base = NULL;
 	}
drivers/scsi/pm8001/pm80xx_hwi.c +14 -2
index ed02e1aaf868..ed13e0e044b7 100644
@@ -4154,10 +4154,22 @@ static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec)
 	u32 ret = MPI_IO_STATUS_FAIL;
 	u32 regval;
 
+	/*
+	 * Fatal errors are programmed to be signalled in irq vector
+	 * pm8001_ha->max_q_num - 1 through pm8001_ha->main_cfg_tbl.pm80xx_tbl.
+	 * fatal_err_interrupt
+	 */
 	if (vec == (pm8001_ha->max_q_num - 1)) {
[… more lines in the raw message]

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

drivers/scsi/pm8001/pm80xx_hwi.h +5 -1
index c7e5d93bea92..c41ed039c92a 100644

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

drivers/scsi/qedf/qedf_io.c +1 -0
index 3404782988d5..bb5761ed3f51 100644

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

drivers/scsi/qedf/qedf_main.c +5 -2
index 94ee08fab46a..544401f76c07 100644

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

drivers/scsi/ufs/ufshcd-pltfrm.c +7 -0
index 8b16bbbcb806..87975d1a21c8 100644

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

drivers/scsi/ufs/ufshcd.c +6 -3
index ae7bdd870319..f489954e4632 100644

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

drivers/scsi/ufs/ufshci.h +2 -1
index de95be5d11d4..3ed60068c4ea 100644

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

drivers/staging/fbtft/fbtft.h +4 -1
index 76f8c090a837..06afaa9d505b 100644

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

drivers/target/iscsi/iscsi_target_tpg.c +3 -0
index 8075f60fd02c..2d5cf1714ae0 100644

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

drivers/thermal/intel/int340x_thermal/Kconfig +2 -2
index 45c31f3d6054..5d046de96a5d 100644

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

drivers/thermal/intel/int340x_thermal/int3401_thermal.c +7 -1
index acebc8ba94e2..217786fba185 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_device.c +28 -8
index fb64acfd5e07..a8d98f1bd6c6 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_device.h +3 -1
index 5a1cfe4864f1..9b2a64ef55d0 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c +17 -1
index 11dd2e825f4f..b4bcd3fe9eb2 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci_legacy.c +7 -1
index f5fc1791b11e..4571a1a53b84 100644

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

drivers/thermal/intel/int340x_thermal/processor_thermal_mbox.c +63 -41

104 lines not on this page · raw message

drivers/thermal/intel/int340x_thermal/processor_thermal_rfim.c +12 -11
index 3b3e81f99a34..8c42e7662033 100644

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

drivers/tty/n_tty.c +2 -2
index 0ec93f1a61f5..451e02cd0637 100644

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

drivers/tty/vt/vt_ioctl.c +2 -1
index 3639bb6dc372..58013698635f 100644

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

drivers/usb/common/ulpi.c +7 -3
index 8f8405b0d608..5509d3847af4 100644

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

drivers/usb/dwc2/gadget.c +1 -1
index ea0d2d6139a6..0909b088a284 100644

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

drivers/usb/dwc3/gadget.c +13 -0
index 4c16805a2b31..146cebde33b8 100644

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

drivers/usb/gadget/composite.c +3 -0
index 3789c329183c..553382ce3837 100644

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

drivers/usb/gadget/function/f_fs.c +42 -14

56 lines not on this page · raw message

drivers/usb/gadget/function/f_uac2.c +2 -2
index ef55b8bb5870..5226a47b68fd 100644

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

drivers/usb/gadget/function/rndis.c +6 -3
index 64de9f1b874c..d9ed651f06ac 100644

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

drivers/usb/gadget/legacy/raw_gadget.c +1 -1
index c5a2c734234a..d86c3a36441e 100644

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

drivers/usb/gadget/udc/renesas_usb3.c +2 -0
index 57d417a7c3e0..601829a6b4ba 100644

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

drivers/usb/serial/ch341.c +1 -0
index 2db917eab799..4b65e6904499 100644

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

drivers/usb/serial/cp210x.c +2 -0
index 22e62c01c0aa..08554e154842 100644

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

drivers/usb/serial/ftdi_sio.c +3 -0
index 99d19828dae6..7e852561d55c 100644

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

drivers/usb/serial/ftdi_sio_ids.h +3 -0
index 755858ca20ba..d1a9564697a4 100644

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

drivers/usb/serial/option.c +2 -0
index 42420bfc983c..962e9943fc20 100644

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

drivers/video/fbdev/core/fbcon.c +3 -4
index f7b7d35953e8..a53c1f6906f0 100644

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

fs/gfs2/file.c +4 -3
index c559827cb6f9..f6d3b3e13d72 100644

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

fs/nfs/callback.h +1 -1
index 6a2033131c06..ccd4f245cae2 100644

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

fs/nfs/callback_proc.c +1 -1
index ed9d580826f5..f2bc5b5b764b 100644

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

fs/nfs/callback_xdr.c +9 -9
index 4c48d85f6517..ce3d1d5b1291 100644

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

fs/nfs/client.c +8 -1
index 23e165d5ec9c..090b16890e3d 100644

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

fs/nfs/dir.c +12 -12
index ed79c1bd84a2..f6381c675cbe 100644

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

fs/nfs/nfs4_fs.h +7 -5
index ba78df4b13d9..f8672a34fd63 100644

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

fs/nfs/nfs4client.c +4 -1
index af57332503be..ed06b68b2b4e 100644

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

fs/nfs/nfs4namespace.c +12 -7
index 873342308dc0..3680c8da510c 100644

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

fs/nfs/nfs4proc.c +77 -19

96 lines not on this page · raw message

fs/nfs/nfs4state.c +5 -1
index f22818a80c2c..51f5cb41e87a 100644

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

fs/nfs/nfs4xdr.c +4 -5
index a8cff19c6f00..2a1bf0a72d5b 100644

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

fs/nfsd/nfs3proc.c +11 -2
index a0ccba636bf9..9918d6ad23ec 100644

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

fs/nfsd/nfs3xdr.c +1 -1
index 0a5ebc52e6a9..7a900131d20c 100644

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

fs/nfsd/nfs4proc.c +9 -4
index 486c5dba4b65..4b9a3b90a41f 100644

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

fs/nfsd/nfs4xdr.c +2 -6
index 266d5152c321..f6d385e0efec 100644

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

fs/nfsd/trace.h +7 -7
index 538520957a81..b302836c7fdf 100644

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

fs/nfsd/vfs.c +4 -0
index 738d564ca4ce..78df03843412 100644

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

include/linux/memcontrol.h +3 -2
index 3096c9a0ee01..d9b8df5ef212 100644

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

include/linux/nfs_fs.h +2 -2
index 4d95cc999d12..4a733f140939 100644

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

include/linux/nfs_fs_sb.h +1 -1
index 2a9acbfe00f0..9a6e70ccde56 100644

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

include/linux/nfs_xdr.h +1 -0
index e9698b6278a5..ecd74cc34797 100644

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

include/linux/suspend.h +3 -12
index 8af13ba60c7e..4bcd65679cee 100644

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

include/net/dst_metadata.h +13 -1
index 14efa0ded75d..adab27ba1ecb 100644

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

include/uapi/linux/netfilter/nf_conntrack_common.h +1 -1
index 4b3395082d15..26071021e986 100644

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

kernel/events/core.c +12 -4
index 69c70767b5df..b81652fc2cdd 100644

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

kernel/power/main.c +4 -1
index 44169f3081fd..7e646079fbeb 100644

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

kernel/power/process.c +1 -1
index 37401c99b7d7..ee78a39463e6 100644

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

kernel/power/snapshot.c +7 -14
index f7a986078213..330d49937692 100644

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

kernel/power/suspend.c +0 -2
index eb75f394a059..13d905dd3267 100644

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

kernel/sched/core.c +3 -9
index 0d12ec7be301..c2dec6ce9809 100644

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

kernel/seccomp.c +10 -0
index 4d8f44a17727..db10e73d06e0 100644

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

kernel/signal.c +3 -2
index 5892c91696f8..aea93d6a5520 100644

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

kernel/trace/trace_events_hist.c +3 -0
index 83efce3a87ca..918f969dffcf 100644

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

mm/memcontrol.c +5 -5
index 96cd7eae800b..32ba963ebf2e 100644

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

net/can/isotp.c +22 -7
index 02cbcb2ecf0d..d2a430b6a13b 100644

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

net/ipv4/ipmr.c +2 -0
index 2dda856ca260..aea29d97f8df 100644

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

net/ipv6/ip6mr.c +2 -0
index 36ed9efb8825..6a4065d81aa9 100644

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

net/mptcp/pm_netlink.c +6 -2
index 2137b7460dea..320f89b5c59d 100644

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

net/netfilter/nf_conntrack_netlink.c +2 -1
index 81d03acf68d4..1c02be04aaf5 100644

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

net/sched/sch_api.c +1 -1
index 4bbfd2622327..8e629c356e69 100644

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

net/sunrpc/clnt.c +4 -1
index f056ff931444..5da1d7e8468a 100644

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

net/sunrpc/sysfs.c +23 -18

41 lines not on this page · raw message

net/tipc/name_distr.c +1 -1
index bda902caa814..8267b751a526 100644

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

scripts/Makefile.extrawarn +1 -0
index d53825503874..8be892887d71 100644

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

security/integrity/digsig_asymmetric.c +9 -6
index 23240d793b07..895f4b9ce8c6 100644

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

security/integrity/ima/ima_fs.c +1 -1
index 3d8e9d5db5aa..3ad8f7734208 100644

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

security/integrity/ima/ima_policy.c +8 -0
index 12e8adcd80a2..fa5a93dbe5d2 100644

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

security/integrity/ima/ima_template.c +7 -3
index 694560396be0..db1ad6d7a57f 100644

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

security/integrity/integrity_audit.c +2 -0
index 29220056207f..0ec5e4c22cb2 100644

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

virt/kvm/eventfd.c +4 -4
index e996989cd580..5b874e7ba36f 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.