Linux 5.16.10
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.16.10 kernel.
All users of the 5.16 kernel series must upgrade.
The updated 5.16.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.16.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/ABI/testing/sysfs-driver-aspeed-uart-routing | 6 Documentation/arm64/silicon-errata.rst | 12 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/Kconfig | 82 +++++- 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/arm64/include/asm/cputype.h | 2 arch/arm64/kernel/cpu_errata.c | 29 ++ arch/arm64/kernel/cpufeature.c | 3 arch/arm64/tools/cpucaps | 3 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/head.S | 11 arch/riscv/kernel/stacktrace.c | 9 arch/riscv/mm/init.c | 1 arch/s390/Kconfig | 15 + arch/s390/lib/Makefile | 3 arch/s390/lib/test_modules.c | 32 ++ arch/s390/lib/test_modules.h | 53 +++ arch/s390/lib/test_modules_helpers.c | 13 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/core/dc_link_dp.c | 6 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/display/intel_display.c | 1 drivers/gpu/drm/i915/display/intel_drrs.c | 8 drivers/gpu/drm/i915/intel_pm.c | 143 ++++++++-- drivers/gpu/drm/i915/intel_pm.h | 1 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/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/mmc/host/sh_mmcif.c | 3 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/ocelot/seville_vsc9953.c | 6 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/google/gve/gve_rx.c | 1 drivers/net/ethernet/ibm/ibmvnic.c | 13 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/litex/Kconfig | 2 drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c | 2 drivers/net/ethernet/mscc/ocelot.c | 19 + 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/pci/pcie/portdrv_core.c | 47 +-- 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/tee/optee/ffa_abi.c | 15 - drivers/tee/optee/smc_abi.c | 10 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/gfs2/glock.c | 3 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 | 44 +-- 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 fs/proc/task_mmu.c | 40 ++ include/linux/memcontrol.h | 5 include/linux/nfs_fs.h | 5 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/auditsc.c | 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 lib/test_kasan.c | 5 mm/memcontrol.c | 10 mm/vmscan.c | 4 net/can/isotp.c | 29 +- net/dsa/dsa2.c | 25 - net/ipv4/ipmr.c | 2 net/ipv4/tcp.c | 33 +- net/ipv6/ip6mr.c | 2 net/mptcp/pm_netlink.c | 8 net/netfilter/nf_conntrack_netlink.c | 3 net/netfilter/nft_exthdr.c | 2 net/netfilter/nft_payload.c | 9 net/sched/sch_api.c | 2 net/sunrpc/clnt.c | 5 net/sunrpc/sysfs.c | 46 +-- net/sunrpc/xprtsock.c | 7 net/tipc/name_distr.c | 2 scripts/Makefile.extrawarn | 1 scripts/kconfig/confdata.c | 12 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 234 files changed, 1804 insertions(+), 854 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 (3):
drm/amdgpu/display: adjust msleep limit in dp_wait_for_training_aux_rd_interval drm/amdgpu/display: use msleep rather than udelay for long delays 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
Andreas Gruenbacher (1):
Revert "gfs2: check context in gfs2_glock_put"
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()
Anshuman Khandual (5):
arm64: Add Cortex-X2 CPU part definition
arm64: errata: Update ARM64_ERRATUM_[2119858|2224489] with Cortex-X2 ranges
arm64: errata: Add detection for TRBE ignored system register writes
arm64: errata: Add detection for TRBE invalid prohibited states
arm64: errata: Add detection for TRBE trace data corruption
Antoine Tenart (2):
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
Aurelien Jarno (1):
riscv: fix build with binutils 2.38
Bjorn Helgaas (1):
Revert "PCI/portdrv: Do not setup up IRQs if there are no users"
Bob Peterson (1):
gfs2: Fix gfs2_release for non-writers regression
Brian Norris (1):
drm/rockchip: vop: Correct RK3399 VOP register fields
Cai Huoqing (1):
net: ethernet: litex: Add the dependency on HAS_IOMEM
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)
Chia-Wei Wang (1):
docs/ABI: testing: aspeed-uart-routing: Escape asterisk
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 (2):
net: dsa: ocelot: seville: utilize of_mdiobus_register
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 (3):
tcp: take care of mixed splice()/sendmsg(MSG_ZEROCOPY) case 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 (2):
netfilter: nft_payload: don't allow th access for fragments
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.16.10
Helge Deller (1):
fbcon: Avoid 'cap' set but not used warning
Hou Wenlong (1):
KVM: eventfd: Fix false positive RCU usage warning
Ilya Leoshkevich (2):
s390/module: test loading modules with a lot of relocations s390/module: fix building test_modules_helpers.o with clang
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 Morse (1):
arm64: cpufeature: List early Cortex-A510 parts as having broken dbm
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
Jens Wiklander (1):
optee: add error checks in optee_ffa_do_call_with_arg()
Jerome Forissier (1):
tee: optee: do not check memref size on return from Secure World
Jesse Brandeburg (1):
ice: fix IPIP and SIT TSO offload
Jiasheng Jiang (2):
mmc: sdhci-of-esdhc: Check for error num after setting mask
mmc: sh_mmcif: Check for null res pointer
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 idJohn 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
Marco Elver (1):
kasan: test: fix compatibility with FORTIFY_SOURCE
Mark Brown (1):
arm64: Enable Cortex-A510 erratum 2051678 by default
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
Masahiro Yamada (1):
kconfig: fix missing fclose() on error paths
Mathias Krause (2):
misc: fastrpc: avoid double fput() on failed usercopy
iio: buffer: Fix file related error handling in IIO_BUFFER_GET_FD_IOCTL
Mel Gorman (1):
mm: vmscan: remove deadlock due to throttling failing to make progress
Myrtle Shah (1):
riscv: Fix XIP_FIXUP_FLASH_OFFSET
Nathan Chancellor (1):
Makefile.extrawarn: Move -Wunaligned-access to W=1
NeilBrown (2):
NFS: change nfs_access_get_cached to only report the mask
SUNRPC: lock against ->sock changing during sysfs read
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
Palmer Dabbelt (1):
riscv/mm: Add XIP_FIXUP for phys_ram_base
Paul Moore (1):
audit: don't deref the syscall args when checking the openat2 open_how::flags
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()
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
Sukadev Bhattiprolu (1):
ibmvnic: don't release napi in __ibmvnic_open()
Szymon Heidrich (1):
USB: gadget: validate interface OS descriptor requests
TATSUKAWA KOSUKE (立川 江介) (1):
n_tty: wake up poll(POLLRDNORM) on receiving data
Tao Liu (1):
gve: Recording rx queue before sending to napi
Thomas Bogendoerfer (2):
MIPS: Fix build error due to PTR used in more places
MIPS: octeon: Fix missed PTR->PTR_WD conversion
Tong Zhang (1):
scsi: myrs: Fix crash in error case
Tony Lindgren (1):
ARM: dts: Fix timer regression for beagleboard revision c
Trond Myklebust (3):
NFS: Fix initialisation of nfs_client cl_flags field NFSv4.1: Fix uninitialised variable in devicenotify
NFS: Avoid duplicate uncached readdir calls on eof
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ä (4):
drm/i915: Disable DRRS on IVB/HSW port != A
drm/i915: Allow !join_mbus cases for adlp+ dbuf configuration drm/i915: Populate pipe dbuf slices more accurately during readout drm/i915: Workaround broken BIOS DBUF configuration on TGL/RKL
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 (10):
net: mscc: ocelot: fix all IP traffic getting trapped to CPU with PTP over IP
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: seville: register the mdiobus under devres
net: dsa: mt7530: fix kernel bug in mdiobus_free() when unbinding
net: dsa: lantiq_gswip: don't use devres for mdiobus
net: dsa: fix panic when DSA master device unbinds on shutdown
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 Shi (1):
fs/proc: task_mmu.c: don't read mapcount for migration entry
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
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-driver-aspeed-uart-routing +3 -3
@@ -1,4 +1,4 @@ -What: /sys/bus/platform/drivers/aspeed-uart-routing/*/uart* +What: /sys/bus/platform/drivers/aspeed-uart-routing/\*/uart\* Date: September 2021 Contact: Oskar Senft <[email protected]> Chia-Wei Wang <[email protected]>
@@ -9,7 +9,7 @@ Description: Selects the RX source of the UARTx device. depends on the selected file. e.g. - cat /sys/bus/platform/drivers/aspeed-uart-routing/*.uart_routing/uart1 + cat /sys/bus/platform/drivers/aspeed-uart-routing/\*.uart_routing/uart1 [io1] io2 io3 io4 uart2 uart3 uart4 io6 In this case, UART1 gets its input from IO1 (physical serial port 1).
@@ -17,7 +17,7 @@ Description: Selects the RX source of the UARTx device. Users: OpenBMC. Proposed changes should be mailed to [email protected] -What: /sys/bus/platform/drivers/aspeed-uart-routing/*/io* +What: /sys/bus/platform/drivers/aspeed-uart-routing/\*/io\* Date: September 2021 Contact: Oskar Senft <[email protected]> Chia-Wei Wang <[email protected]>
Documentation/arm64/silicon-errata.rst +12 -0
@@ -52,6 +52,12 @@ stable kernels. | Allwinner | A64/R18 | UNKNOWN1 | SUN50I_ERRATUM_UNKNOWN1 | +----------------+-----------------+-----------------+-----------------------------+ +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A510 | #2064142 | ARM64_ERRATUM_2064142 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A510 | #2038923 | ARM64_ERRATUM_2038923 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A510 | #1902691 | ARM64_ERRATUM_1902691 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A53 | #827319 | ARM64_ERRATUM_827319 |
@@ -92,12 +98,18 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A77 | #1508412 | ARM64_ERRATUM_1508412 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A510 | #2051678 | ARM64_ERRATUM_2051678 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A710 | #2119858 | ARM64_ERRATUM_2119858 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A710 | #2054223 | ARM64_ERRATUM_2054223 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A710 | #2224489 | ARM64_ERRATUM_2224489 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X2 | #2119858 | ARM64_ERRATUM_2119858 | ++----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-X2 | #2224489 | ARM64_ERRATUM_2224489 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Neoverse-N1 | #1188873,1418040| ARM64_ERRATUM_1418040 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Neoverse-N1 | #1349291 | N/A |
Documentation/devicetree/bindings/arm/omap/omap.txt +3 -0
@@ -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
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 16 -SUBLEVEL = 9 +SUBLEVEL = 10 EXTRAVERSION = NAME = Gobble Gobble
arch/arm/boot/dts/Makefile +1 -0
@@ -794,6 +794,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -185,10 +185,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
@@ -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/Kconfig +76 -6
111 lines not on this page · raw message
arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi +2 -2
@@ -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>;
@@ -219,7 +219,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
@@ -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
@@ -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
@@ -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/arm64/include/asm/cputype.h +2 -0
@@ -75,6 +75,7 @@#define ARM_CPU_PART_CORTEX_A77 0xD0D#define ARM_CPU_PART_CORTEX_A510 0xD46#define ARM_CPU_PART_CORTEX_A710 0xD47 +#define ARM_CPU_PART_CORTEX_X2 0xD48#define ARM_CPU_PART_NEOVERSE_N2 0xD49#define APM_CPU_PART_POTENZA 0x000
@@ -118,6 +119,7 @@#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77)#define MIDR_CORTEX_A510 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A510)#define MIDR_CORTEX_A710 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A710) +#define MIDR_CORTEX_X2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_X2)#define MIDR_NEOVERSE_N2 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N2)#define MIDR_THUNDERX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX)#define MIDR_THUNDERX_81XX MIDR_CPU_MODEL(ARM_CPU_IMP_CAVIUM, CAVIUM_CPU_PART_THUNDERX_81XX)
arch/arm64/kernel/cpu_errata.c +29 -0
@@ -347,6 +347,7 @@ static const struct midr_range trbe_overwrite_fill_mode_cpus[] = {#endif #ifdef CONFIG_ARM64_ERRATUM_2119858 MIDR_ALL_VERSIONS (MIDR_CORTEX_A710 ), + MIDR_RANGE(MIDR_CORTEX_X2, 0, 0, 2, 0), #endif {}, };
@@ -371,6 +372,7 @@ static struct midr_range trbe_write_out_of_range_cpus[] = {#endif #ifdef CONFIG_ARM64_ERRATUM_2224489 MIDR_ALL_VERSIONS (MIDR_CORTEX_A710 ), + MIDR_RANGE(MIDR_CORTEX_X2, 0, 0, 2, 0), #endif {}, };
@@ -597,6 +599,33 @@ const struct arm64_cpu_capabilities arm64_errata[] = { .type = ARM64_CPUCAP_WEAK_LOCAL_CPU_FEATURE, CAP_MIDR_RANGE_LIST(trbe_write_out_of_range_cpus), }, +#endif +#ifdef CONFIG_ARM64_ERRATUM_2064142 + { + .desc = "ARM erratum 2064142", + .capability = ARM64_WORKAROUND_2064142, + + /* Cortex-A510 r0p0 - r0p2 */ + ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2) + }, +#endif +#ifdef CONFIG_ARM64_ERRATUM_2038923 + { + .desc = "ARM erratum 2038923", + .capability = ARM64_WORKAROUND_2038923, + + /* Cortex-A510 r0p0 - r0p2 */ + ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2) + }, +#endif +#ifdef CONFIG_ARM64_ERRATUM_1902691 + { + .desc = "ARM erratum 1902691", + .capability = ARM64_WORKAROUND_1902691, + + /* Cortex-A510 r0p0 - r0p1 */ + ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 1) + }, #endif { }
arch/arm64/kernel/cpufeature.c +3 -0
@@ -1634,6 +1634,9 @@ static bool cpu_has_broken_dbm(void) MIDR_ALL_VERSIONS(MIDR_CORTEX_A55), /* Kryo4xx Silver (rdpe => r1p0) */ MIDR_REV(MIDR_QCOM_KRYO_4XX_SILVER, 0xd, 0xe), +#endif +#ifdef CONFIG_ARM64_ERRATUM_2051678 + MIDR_REV_RANGE(MIDR_CORTEX_A510, 0, 0, 2),#endif {}, };
arch/arm64/tools/cpucaps +3 -0
@@ -55,6 +55,9 @@ WORKAROUND_1418040 WORKAROUND_1463225 WORKAROUND_1508412 WORKAROUND_1542419 +WORKAROUND_2064142 +WORKAROUND_2038923 +WORKAROUND_1902691 WORKAROUND_TRBE_OVERWRITE_FILL_MODE WORKAROUND_TSB_FLUSH_FAILURE WORKAROUND_TRBE_WRITE_OUT_OF_RANGE
arch/mips/cavium-octeon/octeon-memcpy.S +1 -1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1082,6 +1082,8 @@ static inline int map_kernel_page(unsigned long ea, unsigned long pa, pgprot_t preturn 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -50,6 +50,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
@@ -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/head.S +5 -6
@@ -21,14 +21,13 @@ add \reg, \reg, t0 .endm .macro XIP_FIXUP_FLASH_OFFSET reg - la t1, __data_loc - li t0, XIP_OFFSET_MASK - and t1, t1, t0 - li t1, XIP_OFFSET - sub t0, t0, t1 - sub \reg, \reg, t0 + la t0, __data_loc + REG_L t1, _xip_phys_offset + sub \reg, \reg, t1 + add \reg, \reg, t0 .endm _xip_fixup: .dword CONFIG_PHYS_RAM_BASE - CONFIG_XIP_PHYS_ADDR - XIP_OFFSET +_xip_phys_offset: .dword CONFIG_XIP_PHYS_ADDR + XIP_OFFSET #else .macro XIP_FIXUP_OFFSET reg .endm
arch/riscv/kernel/stacktrace.c +5 -4
@@ -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/riscv/mm/init.c +1 -0
@@ -41,6 +41,7 @@ phys_addr_t phys_ram_base __ro_after_init;EXPORT_SYMBOL (phys_ram_base);#ifdef CONFIG_XIP_KERNEL +#define phys_ram_base (*(phys_addr_t *)XIP_FIXUP(&phys_ram_base))extern char _xiprom[], _exiprom[], __data_loc;#endif
arch/s390/Kconfig +15 -0
@@ -947,6 +947,9 @@ config S390_GUEST endmenu +config S390_MODULES_SANITY_TEST_HELPERS + def_bool n + menu "Selftests" config S390_UNWIND_SELFTEST
@@ -973,4 +976,16 @@ config S390_KPROBES_SANITY_TEST Say N if you are unsure. +config S390_MODULES_SANITY_TEST + def_tristate n + depends on KUNIT + default KUNIT_ALL_TESTS + prompt "Enable s390 specific modules tests" + select S390_MODULES_SANITY_TEST_HELPERS + help + This option enables an s390 specific modules test. This option is + not useful for distributions or general kernels, but only for + kernel developers working on architecture code. + + Say N if you are unsure. endmenu
arch/s390/lib/Makefile +3 -0
@@ -17,4 +17,7 @@ KASAN_SANITIZE_uaccess.o := n obj-$(CONFIG_S390_UNWIND_SELFTEST) += test_unwind.o CFLAGS_test_unwind.o += -fno-optimize-sibling-calls +obj-$(CONFIG_S390_MODULES_SANITY_TEST) += test_modules.o +obj-$(CONFIG_S390_MODULES_SANITY_TEST_HELPERS) += test_modules_helpers.o + lib-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o
arch/s390/lib/test_modules.c new file +32 -0
@@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0+ + +#include <kunit/test.h> +#include <linux/module.h> + +#include "test_modules.h" + +/* +* Test that modules with many relocations are loaded properly. +*/ +static void test_modules_many_vmlinux_relocs (struct kunit *test) +{ +int result =0 ; + +#define CALL_RETURN (i) result += test_modules_return_ ## i() +REPEAT_10000 (CALL_RETURN ); +KUNIT_ASSERT_EQ (test, result,49995000 ); +} + +static struct kunit_case modules_testcases[] = { +KUNIT_CASE (test_modules_many_vmlinux_relocs), + {} +}; + +static struct kunit_suite modules_test_suite = { + .name ="modules_test_s390" , + .test_cases = modules_testcases, +}; + +kunit_test_suites (&modules_test_suite); + +MODULE_LICENSE ("GPL" );
arch/s390/lib/test_modules.h new file +53 -0
53 lines not on this page · raw message
arch/s390/lib/test_modules_helpers.c new file +13 -0
@@ -0,0 +1,13 @@ +// SPDX-License-Identifier: GPL-2.0+ + +#include <linux/export.h> + +#include "test_modules.h" + +#define DEFINE_RETURN (i) \ + int test_modules_return_ ## i(void) \ + { \ + return 1 ## i - 10000; \ + } \ + EXPORT_SYMBOL_GPL(test_modules_return_ ## i) +REPEAT_10000 (DEFINE_RETURN );
arch/x86/events/intel/lbr.c +3 -0
@@ -1726,6 +1726,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
@@ -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
@@ -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
@@ -532,12 +532,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
@@ -4530,7 +4530,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
@@ -361,6 +361,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
@@ -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
@@ -4811,8 +4811,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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -278,7 +278,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,
@@ -293,7 +294,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;
@@ -328,7 +332,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,
@@ -343,7 +350,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
@@ -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
@@ -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
@@ -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
@@ -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/core/dc_link_dp.c +3 -3
@@ -201,7 +201,7 @@ void dp_wait_for_training_aux_rd_interval( uint32_t wait_in_micro_secs) {#if defined(CONFIG_DRM_AMD_DC_DCN ) -if (wait_in_micro_secs >16000 ) +if (wait_in_micro_secs >1000 )msleep (wait_in_micro_secs/1000 );else udelay (wait_in_micro_secs);
@@ -6058,7 +6058,7 @@ bool dpcd_write_128b_132b_sst_payload_allocation_table( } } retries++; -udelay (5000 ); +msleep (5 ); }if (!result && retries == max_retries) {
@@ -6110,7 +6110,7 @@ bool dpcd_poll_for_allocation_change_trigger(struct dc_link *link)break ; } -udelay (5000 ); +msleep (5 ); }if (result ==ACT_FAILED ) {
drivers/gpu/drm/amd/display/dc/dcn20/dcn20_resource.c +1 -1
@@ -1069,7 +1069,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
@@ -686,7 +686,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
@@ -3451,8 +3451,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
@@ -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
@@ -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 = {
@@ -275,6 +281,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/display/intel_display.c +1 -0
@@ -11901,6 +11901,7 @@ intel_modeset_setup_hw_state(struct drm_device *dev,vlv_wm_sanitize (dev_priv); }else if (DISPLAY_VER (dev_priv) >=9 ) {skl_wm_get_hw_state (dev_priv); +skl_wm_sanitize (dev_priv); }else if (HAS_PCH_SPLIT (dev_priv)) {ilk_wm_get_hw_state (dev_priv); }
drivers/gpu/drm/i915/display/intel_drrs.c +8 -0
@@ -405,6 +405,7 @@ intel_drrs_init(struct intel_connector *connector, struct drm_display_mode *fixed_mode) {struct drm_i915_private *dev_priv =to_i915 (connector->base.dev); +struct intel_encoder *encoder = connector->encoder;struct drm_display_mode *downclock_mode =NULL ;INIT_DELAYED_WORK (&dev_priv->drrs.work, intel_drrs_downclock_work);
@@ -416,6 +417,13 @@ intel_drrs_init(struct intel_connector *connector,return NULL ; } +if ((DISPLAY_VER (dev_priv) <8 && !HAS_GMCH (dev_priv)) && + encoder->port !=PORT_A ) { +drm_dbg_kms (&dev_priv->drm, +"DRRS only supported on eDP port A\n" ); +return NULL ; + } +if (dev_priv->vbt.drrs_type !=SEAMLESS_DRRS_SUPPORT ) {drm_dbg_kms (&dev_priv->drm,"VBT doesn't support DRRS\n" );return NULL ;
drivers/gpu/drm/i915/intel_pm.c +120 -23
240 lines not on this page · raw message
drivers/gpu/drm/i915/intel_pm.h +1 -0
@@ -47,6 +47,7 @@ void skl_pipe_wm_get_hw_state(struct intel_crtc *crtc, struct skl_pipe_wm *out);void g4x_wm_sanitize (struct drm_i915_private *dev_priv);void vlv_wm_sanitize (struct drm_i915_private *dev_priv); +void skl_wm_sanitize (struct drm_i915_private *dev_priv);bool intel_can_enable_sagv (struct drm_i915_private *dev_priv,const struct intel_bw_state *bw_state);void intel_sagv_pre_plane_update (struct intel_atomic_state *state);
drivers/gpu/drm/panel/panel-simple.c +1 -0
@@ -588,6 +588,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
@@ -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
@@ -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 ; }
@@ -1686,9 +1682,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
@@ -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/iio/industrialio-buffer.c +11 -3
@@ -1569,9 +1569,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
@@ -207,9 +207,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
@@ -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
@@ -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
@@ -1288,7 +1288,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
@@ -67,7 +67,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 1000struct sd_busy_data {
@@ -1664,6 +1664,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
@@ -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/mmc/host/sh_mmcif.c +3 -0
@@ -405,6 +405,9 @@ static int sh_mmcif_dma_slave_config(struct sh_mmcif_host *host,struct dma_slave_config cfg = {0 , }; res =platform_get_resource (host->pd,IORESOURCE_MEM ,0 ); +if (!res) +return -EINVAL ; + cfg.direction = direction;if (direction ==DMA_DEV_TO_MEM ) {
drivers/net/bonding/bond_3ad.c +2 -1
@@ -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
@@ -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
@@ -498,8 +498,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 ;
@@ -512,7 +513,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,
@@ -2186,8 +2191,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++)
@@ -2210,6 +2217,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
@@ -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
@@ -3415,7 +3415,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 ;
@@ -3440,14 +3440,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)
@@ -3456,21 +3456,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
@@ -1064,7 +1064,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 ;
@@ -1084,6 +1084,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; }
@@ -1133,6 +1134,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/ocelot/seville_vsc9953.c +4 -2
@@ -10,6 +10,7 @@#include <linux/pcs-lynx.h> #include <linux/dsa/ocelot.h> #include <linux/iopoll.h> +#include <linux/of_mdio.h> #include "felix.h" #define MSCC_MIIM_CMD_OPR_WRITE BIT(1)
@@ -1108,7 +1109,7 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot)snprintf (bus->id,MII_BUS_ID_SIZE ,"%s-imdio" ,dev_name (dev));/* Needed in order to initialize the bus mutex lock */ - rc =mdiobus_register (bus); + rc =devm_of_mdiobus_register (dev, bus,NULL );if (rc <0 ) {dev_err (dev,"failed to register MDIO bus\n" );return rc;
@@ -1160,7 +1161,8 @@ static void vsc9953_mdio_bus_free(struct ocelot *ocelot)mdio_device_free (pcs->mdio);lynx_pcs_destroy (pcs); } -mdiobus_unregister (felix->imdio); + +/* mdiobus_unregister and mdiobus_free handled by devres */ }static const struct felix_info seville_info_vsc9953 = {
drivers/net/dsa/qca/ar9331.c +1 -2
@@ -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;
@@ -1091,7 +1091,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
@@ -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
@@ -4523,12 +4523,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_free (priv);
drivers/net/ethernet/google/gve/gve_rx.c +1 -0
@@ -609,6 +609,7 @@ static bool gve_rx(struct gve_rx_ring *rx, netdev_features_t feat, *packet_size_bytes = skb->len + (skb->protocol ?ETH_HLEN :0 ); *work_done = work_cnt; +skb_record_rx_queue (skb, rx->q_num);if (skb_is_nonlinear (skb))napi_gro_frags (napi);else
drivers/net/ethernet/ibm/ibmvnic.c +9 -4
@@ -110,6 +110,7 @@ static void ibmvnic_tx_scrq_clean_buffer(struct ibmvnic_adapter *adapter, struct ibmvnic_sub_crq_queue *tx_scrq);static void free_long_term_buff (struct ibmvnic_adapter *adapter,struct ibmvnic_long_term_buff *ltb); +static void ibmvnic_disable_irqs (struct ibmvnic_adapter *adapter);struct ibmvnic_stat {char name[ETH_GSTRING_LEN ];
@@ -1418,7 +1419,7 @@ static int __ibmvnic_open(struct net_device *netdev) rc =set_link_state (adapter,IBMVNIC_LOGICAL_LNK_UP );if (rc) {ibmvnic_napi_disable (adapter); -release_resources (adapter); +ibmvnic_disable_irqs (adapter);return rc; }
@@ -1468,9 +1469,6 @@ static int ibmvnic_open(struct net_device *netdev) rc =init_resources (adapter);if (rc) {netdev_err (netdev,"failed to initialize resources\n" ); -release_resources (adapter); -release_rx_pools (adapter); -release_tx_pools (adapter); goto out; } }
@@ -1487,6 +1485,13 @@ static int ibmvnic_open(struct net_device *netdev) adapter->state =VNIC_OPEN ; rc =0 ; } + +if (rc) { +release_resources (adapter); +release_rx_pools (adapter); +release_tx_pools (adapter); + } +return rc; }
drivers/net/ethernet/intel/ice/ice.h +2 -1
@@ -483,6 +483,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 */ };
@@ -880,7 +881,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
@@ -3321,7 +3321,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
@@ -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
@@ -568,6 +568,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#define ICE_TXD_CTX_QW1_VSI_S 50#define ICE_TXD_CTX_QW1_VSI_M (0x3FFULL << ICE_TXD_CTX_QW1_VSI_S)
drivers/net/ethernet/intel/ice/ice_main.c +20 -8
@@ -2235,6 +2235,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);
@@ -8540,6 +8543,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
@@ -8552,24 +8556,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;
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +7 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/sparx5_ethtool.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +7 -6
Lines of this file are not shown. View the raw message.
drivers/net/usb/ax88179_178a.c +39 -29
68 lines not on this page · raw message
drivers/pci/pcie/portdrv_core.c +17 -30
47 lines not on this page · raw message
drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/target/iscsi/iscsi_target_tpg.c +3 -0
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
fs/nfs/dir.c +27 -17
44 lines not on this page · raw message
fs/nfs/nfs4proc.c +77 -19
96 lines not on this page · raw message
include/uapi/linux/netfilter/nf_conntrack_common.h +1 -1
Lines of this file are not shown. View the raw message.
net/sunrpc/sysfs.c +27 -19
46 lines not on this page · 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.