Linux 7.2.8
Greg Kroah-Hartman
maintainerI'm announcing the release of the 7.2.8 kernel.
All users of the 7.2 kernel series must upgrade.
The updated 7.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-7.2.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-devices-platform-trackpoint | 2 Documentation/arch/arm64/memory-tagging-extension.rst | 5 Documentation/hwmon/cgbc-hwmon.rst | 42 Documentation/netlink/specs/rt-neigh.yaml | 3 Documentation/networking/ip-sysctl.rst | 4 Makefile | 2 arch/arm/mach-socfpga/Kconfig | 2 arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts | 2 arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts | 113 + arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi | 44 arch/arm64/boot/dts/renesas/r8a779f0.dtsi | 1 arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 10 arch/arm64/boot/dts/renesas/r9a09g056.dtsi | 10 arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 10 arch/arm64/boot/dts/renesas/r9a09g077.dtsi | 27 arch/arm64/boot/dts/renesas/r9a09g087.dtsi | 27 arch/arm64/include/asm/percpu.h | 20 arch/arm64/kernel/hibernate-asm.S | 2 arch/arm64/kernel/hibernate.c | 4 arch/arm64/kernel/mte.c | 2 arch/mips/Kconfig | 4 arch/mips/cavium-octeon/octeon-platform.c | 4 arch/powerpc/kernel/iommu.c | 2 arch/powerpc/kvm/book3s_hv_nested.c | 2 arch/powerpc/kvm/book3s_hv_uvmem.c | 5 arch/x86/Kconfig.cpu | 11 arch/x86/Makefile | 5 arch/x86/entry/entry_fred.c | 11 arch/x86/include/asm/div64.h | 2 arch/x86/include/asm/text-patching.h | 4 arch/x86/kernel/alternative.c | 6 arch/x86/kernel/cpu/microcode/intel.c | 26 arch/x86/kernel/kprobes/core.c | 5 drivers/ata/libahci.c | 15 drivers/ata/libahci_platform.c | 2 drivers/block/sunvdc.c | 9 drivers/bluetooth/btintel_pcie.c | 8 drivers/bluetooth/btmtk.c | 7 drivers/bluetooth/btmtksdio.c | 24 drivers/bluetooth/btmtkuart.c | 20 drivers/bluetooth/btusb.c | 17 drivers/bluetooth/hci_qca.c | 14 drivers/clk/clk-scpi.c | 8 drivers/dma-buf/dma-buf-mapping.c | 31 drivers/dma-buf/dma-fence.c | 14 drivers/dma/dmaengine.c | 10 drivers/dma/mmp_pdma.c | 5 drivers/dma/pxa_dma.c | 3 drivers/dma/sprd-dma.c | 3 drivers/dma/sun6i-dma.c | 9 drivers/dma/ti/k3-udma-glue.c | 5 drivers/dma/xilinx/xilinx_dma.c | 26 drivers/firmware/arm_scpi.c | 4 drivers/gpio/gpio-virtuser.c | 3 drivers/gpio/gpiolib-of.c | 6 drivers/gpio/gpiolib-shared.c | 9 drivers/gpu/drm/amd/amdgpu/amdgpu.h | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 145 + drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 43 drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c | 7 drivers/gpu/drm/amd/amdgpu/nbio_v7_9.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 7 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12.c | 61 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12_1.c | 70 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c | 6 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c | 5 drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c | 13 drivers/gpu/drm/drm_atomic_uapi.c | 13 drivers/gpu/drm/gud/gud_pipe.c | 7 drivers/gpu/drm/i915/display/intel_cursor.c | 15 drivers/gpu/drm/i915/display/skl_universal_plane.c | 15 drivers/gpu/drm/msm/adreno/adreno_device.c | 2 drivers/gpu/drm/msm/adreno/adreno_gpu.c | 2 drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c | 1 drivers/gpu/drm/msm/dp/dp_display.c | 21 drivers/gpu/drm/msm/dsi/dsi_host.c | 36 drivers/gpu/drm/msm/hdmi/hdmi_phy.c | 8 drivers/gpu/drm/msm/msm_drv.c | 2 drivers/gpu/drm/msm/msm_gem.h | 3 drivers/gpu/drm/msm/msm_gem_vma.c | 2 drivers/gpu/drm/msm/msm_ringbuffer.c | 2 drivers/gpu/drm/msm/msm_ringbuffer.h | 1 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 3 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h | 8 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h | 2 drivers/gpu/drm/scheduler/sched_entity.c | 8 drivers/gpu/drm/scheduler/sched_rq.c | 20 drivers/gpu/drm/ttm/ttm_bo.c | 2 drivers/gpu/drm/vc4/vc4_kms.c | 2 drivers/gpu/drm/xe/xe_i2c.c | 3 drivers/gpu/drm/xe/xe_mmio_gem.c | 33 drivers/gpu/drm/xe/xe_mmio_gem.h | 2 drivers/gpu/drm/xe/xe_shrinker.c | 124 - drivers/hwmon/cgbc-hwmon.c | 129 + drivers/hwmon/gpio-fan.c | 4 drivers/hwmon/hp-wmi-sensors.c | 32 drivers/hwmon/pmbus/pmbus.h | 3 drivers/hwmon/pmbus/tps53679.c | 11 drivers/hwmon/pwm-fan.c | 13 drivers/hwmon/w83791d.c | 1 drivers/hwmon/w83793.c | 4 drivers/i2c/busses/i2c-at91-core.c | 3 drivers/i2c/busses/i2c-at91-master.c | 12 drivers/i2c/busses/i2c-at91.h | 1 drivers/i2c/busses/i2c-imx.c | 3 drivers/i2c/busses/i2c-qcom-cci.c | 20 drivers/i2c/i2c-atr.c | 1 drivers/infiniband/core/iwpm_util.c | 9 drivers/infiniband/core/mad.c | 3 drivers/infiniband/core/rdma_core.c | 1 drivers/infiniband/core/ucma.c | 7 drivers/infiniband/core/uverbs_flow.c | 1 drivers/infiniband/core/uverbs_main.c | 25 drivers/infiniband/core/verbs.c | 12 drivers/infiniband/hw/bnxt_re/main.c | 10 drivers/infiniband/hw/bnxt_re/uapi.c | 6 drivers/infiniband/hw/efa/efa_com.c | 7 drivers/infiniband/hw/efa/efa_com.h | 1 drivers/infiniband/hw/efa/efa_main.c | 33 drivers/infiniband/hw/erdma/erdma_main.c | 4 drivers/infiniband/hw/erdma/erdma_verbs.c | 18 drivers/infiniband/hw/hfi1/file_ops.c | 23 drivers/infiniband/hw/irdma/verbs.c | 2 drivers/infiniband/hw/mlx4/sysfs.c | 4 drivers/infiniband/hw/mlx5/main.c | 7 drivers/infiniband/sw/rxe/rxe_mcast.c | 50 drivers/infiniband/sw/rxe/rxe_mr.c | 3 drivers/infiniband/sw/rxe/rxe_odp.c | 16 drivers/infiniband/sw/rxe/rxe_verbs.c | 13 drivers/infiniband/sw/siw/siw_cm.c | 7 drivers/infiniband/sw/siw/siw_qp_rx.c | 2 drivers/infiniband/ulp/ipoib/ipoib.h | 7 drivers/infiniband/ulp/ipoib/ipoib_ib.c | 12 drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 16 drivers/infiniband/ulp/iser/iser_initiator.c | 16 drivers/infiniband/ulp/isert/ib_isert.c | 22 drivers/infiniband/ulp/isert/ib_isert.h | 2 drivers/infiniband/ulp/rtrs/rtrs-clt-trace.h | 2 drivers/infiniband/ulp/rtrs/rtrs-clt.c | 8 drivers/infiniband/ulp/rtrs/rtrs-clt.h | 2 drivers/infiniband/ulp/rtrs/rtrs-srv-trace.h | 2 drivers/input/evdev.c | 2 drivers/input/input-compat.c | 2 drivers/input/joystick/xpad.c | 10 drivers/input/keyboard/adp5588-keys.c | 12 drivers/input/keyboard/atkbd.c | 8 drivers/input/misc/soc_button_array.c | 16 drivers/input/mouse/synaptics.c | 8 drivers/input/rmi4/rmi_driver.c | 13 drivers/input/rmi4/rmi_smbus.c | 10 drivers/input/serio/hp_sdc.c | 2 drivers/input/serio/i8042-acpipnpio.h | 7 drivers/input/touchscreen/cyttsp5.c | 1 drivers/input/touchscreen/eeti_ts.c | 1 drivers/memstick/core/ms_block.c | 2 drivers/misc/ntsync.c | 3 drivers/mmc/core/bus.c | 2 drivers/mmc/core/host.c | 1 drivers/mmc/core/sdio_uart.c | 3 drivers/mmc/host/mmc_hsq.c | 8 drivers/mmc/host/mmc_spi.c | 1 drivers/mmc/host/mmci.c | 3 drivers/mmc/host/mxcmmc.c | 4 drivers/mmc/host/rtsx_pci_sdmmc.c | 5 drivers/mmc/host/sdhci-of-aspeed.c | 5 drivers/mmc/host/sdhci_am654.c | 43 drivers/mmc/host/sh_mmcif.c | 3 drivers/net/dsa/mxl862xx/mxl862xx.c | 23 drivers/net/ethernet/airoha/airoha_ppe.c | 17 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 19 drivers/net/ethernet/cadence/macb_ptp.c | 9 drivers/net/ethernet/cortina/gemini.c | 2 drivers/net/ethernet/intel/igc/igc_tsn.c | 6 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 7 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 3 drivers/net/ethernet/mediatek/mtk_ppe_offload.c | 17 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 2 drivers/net/ethernet/meta/fbnic/fbnic_txrx.c | 42 drivers/net/ethernet/meta/fbnic/fbnic_txrx.h | 9 drivers/net/ethernet/microchip/lan743x_main.c | 2 drivers/net/ethernet/sfc/falcon/tx.c | 8 drivers/net/ethernet/sfc/siena/tx.c | 8 drivers/net/ethernet/socionext/netsec.c | 2 drivers/net/ethernet/stmicro/stmmac/hwif.h | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c | 14 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 99 - drivers/net/fddi/skfp/skfddi.c | 3 drivers/net/phy/mediatek/mtk-phy-lib.c | 27 drivers/net/wireless/ath/ath11k/mac.c | 25 drivers/net/wireless/ath/wcn36xx/dxe.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c | 5 drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c | 4 drivers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c | 12 drivers/net/wireless/intel/ipw2x00/libipw_rx.c | 6 drivers/net/wireless/intel/iwlegacy/common.c | 2 drivers/net/wireless/intersil/p54/eeprom.c | 22 drivers/net/wireless/marvell/libertas_tf/main.c | 2 drivers/net/wireless/marvell/mwifiex/cfg80211.c | 12 drivers/net/wireless/marvell/mwifiex/pcie.c | 2 drivers/net/wireless/marvell/mwifiex/scan.c | 54 drivers/net/wireless/marvell/mwifiex/util.c | 10 drivers/net/wireless/microchip/wilc1000/cfg80211.c | 14 drivers/net/wireless/microchip/wilc1000/wlan.c | 9 drivers/net/wireless/rsi/rsi_91x_mgmt.c | 2 drivers/net/wireless/ti/wlcore/main.c | 4 drivers/net/wireless/virtual/mac80211_hwsim_main.c | 39 drivers/net/wireless/virtual/virt_wifi.c | 4 drivers/net/wwan/mhi_wwan_mbim.c | 28 drivers/net/wwan/t7xx/t7xx_netdev.c | 4 drivers/pci/controller/dwc/pci-imx6.c | 12 drivers/perf/arm-cmn.c | 10 drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c | 4 drivers/phy/mediatek/phy-mtk-hdmi-mt8195.h | 3 drivers/phy/renesas/phy-rcar-gen3-usb2.c | 310 +++- drivers/power/sequencing/Kconfig | 3 drivers/power/sequencing/core.c | 11 drivers/scsi/fnic/fdls_disc.c | 726 +++++----- drivers/scsi/fnic/fip.c | 117 - drivers/scsi/fnic/fip.h | 2 drivers/scsi/fnic/fnic.h | 78 - drivers/scsi/fnic/fnic_fcs.c | 126 - drivers/scsi/fnic/fnic_isr.c | 41 drivers/scsi/fnic/fnic_main.c | 89 - drivers/scsi/fnic/fnic_scsi.c | 210 +- drivers/scsi/pm8001/pm8001_init.c | 6 drivers/scsi/qla2xxx/qla_os.c | 2 drivers/scsi/scsi.c | 24 drivers/soc/samsung/exynos-pmu.c | 7 drivers/soundwire/cadence_master.c | 7 drivers/soundwire/dmi-quirks.c | 7 drivers/spi/spi-fsl-qspi.c | 5 drivers/spi/spi-qpic-snand.c | 4 drivers/spi/spi-virtio.c | 2 drivers/spi/spi-zynqmp-gqspi.c | 34 drivers/watchdog/da9062_wdt.c | 4 drivers/watchdog/da9063_wdt.c | 4 drivers/watchdog/digicolor_wdt.c | 13 drivers/watchdog/msc313e_wdt.c | 16 drivers/watchdog/rtd119x_wdt.c | 7 drivers/watchdog/rzv2h_wdt.c | 7 drivers/watchdog/sp5100_tco.c | 6 drivers/watchdog/starfive-wdt.c | 2 fs/9p/vfs_addr.c | 28 fs/btrfs/dev-replace.c | 1 fs/btrfs/disk-io.c | 4 fs/btrfs/file.c | 4 fs/btrfs/free-space-tree.c | 14 fs/btrfs/inode.c | 18 fs/btrfs/super.c | 8 fs/btrfs/tree-checker.c | 2 fs/btrfs/verity.c | 18 fs/dax.c | 9 fs/exec.c | 29 fs/nfsd/export.c | 3 fs/ntfs/attrib.c | 259 ++- fs/ntfs/attrib.h | 9 fs/ntfs/attrlist.c | 224 ++- fs/ntfs/attrlist.h | 2 fs/ntfs/compress.c | 2 fs/ntfs/file.c | 3 fs/ntfs/inode.c | 35 fs/ntfs/mft.c | 447 ++++-- fs/ntfs/mft.h | 2 fs/ntfs/namei.c | 2 fs/ntfs/super.c | 12 fs/ntfs/volume.h | 12 fs/smb/client/cifssmb.c | 2 fs/smb/client/connect.c | 9 fs/smb/client/file.c | 4 fs/smb/client/misc.c | 12 fs/smb/client/reparse.c | 58 fs/smb/client/reparse.h | 7 fs/smb/client/sess.c | 106 - fs/smb/client/smb2inode.c | 11 fs/smb/client/smb2ops.c | 51 fs/smb/client/smb2pdu.c | 13 fs/smb/client/trace.h | 1 fs/smb/server/connection.c | 84 + fs/smb/server/connection.h | 3 fs/smb/server/mgmt/user_session.c | 199 ++ fs/smb/server/mgmt/user_session.h | 8 fs/smb/server/misc.h | 7 fs/smb/server/proc.c | 159 ++ fs/smb/server/server.c | 9 fs/smb/server/smb2pdu.c | 126 + fs/smb/server/smb2pdu.h | 3 fs/smb/server/smb_common.h | 2 fs/smb/server/stats.h | 58 fs/smb/server/vfs_cache.c | 26 fs/smb/server/vfs_cache.h | 1 fs/super.c | 1 include/keys/request_key_auth-type.h | 2 include/linux/dma-fence.h | 6 include/linux/ieee80211-mesh.h | 4 include/linux/netdevice.h | 13 include/net/bluetooth/coredump.h | 2 include/net/codel.h | 5 include/net/codel_impl.h | 16 include/net/mac80211.h | 5 include/net/sock.h | 2 include/rdma/uverbs_types.h | 2 include/sound/soc.h | 3 include/sound/soc_sdw_utils.h | 31 include/trace/events/dma.h | 2 include/uapi/rdma/bnxt_re-abi.h | 2 kernel/cgroup/cgroup.c | 7 kernel/dma/coherent.c | 3 kernel/dma/swiotlb.c | 4 kernel/events/core.c | 4 kernel/exit.c | 11 kernel/fork.c | 4 kernel/sched/core.c | 9 kernel/sched/ext/ext.c | 27 kernel/sched/ext/idle.c | 11 kernel/signal.c | 115 + kernel/time/jiffies.c | 2 kernel/time/posix-cpu-timers.c | 40 mm/filemap.c | 2 mm/huge_memory.c | 86 - mm/memblock.c | 18 mm/memcontrol.c | 2 mm/mlock.c | 2 mm/mremap.c | 9 mm/shrinker.c | 2 mm/swapfile.c | 2 mm/vma.c | 6 net/atm/pppoatm.c | 42 net/bluetooth/coredump.c | 65 net/bluetooth/eir.c | 10 net/bluetooth/hci_codec.c | 36 net/bluetooth/hci_conn.c | 21 net/bluetooth/hci_core.c | 18 net/bluetooth/hci_sync.c | 2 net/bluetooth/iso.c | 53 net/bluetooth/rfcomm/sock.c | 13 net/bridge/br_mst.c | 20 net/bridge/br_vlan.c | 31 net/core/dev.c | 108 + net/core/drop_monitor.c | 18 net/core/neighbour.c | 35 net/core/skbuff.c | 32 net/core/sock.c | 16 net/ipv4/esp4.c | 6 net/ipv4/icmp.c | 17 net/ipv4/ip_tunnel_core.c | 16 net/ipv4/sysctl_net_ipv4.c | 4 net/ipv4/tcp_input.c | 3 net/ipv4/tcp_ulp.c | 4 net/ipv6/esp6.c | 6 net/ipv6/seg6_local.c | 3 net/ipv6/tcp_ipv6.c | 3 net/ipv6/xfrm6_output.c | 10 net/mac80211/cfg.c | 18 net/mac80211/debugfs.c | 2 net/mac80211/debugfs_netdev.c | 9 net/mac80211/ieee80211_i.h | 2 net/mac80211/iface.c | 39 net/mac80211/main.c | 4 net/mac80211/mesh.c | 34 net/mac80211/offchannel.c | 7 net/mac80211/pm.c | 8 net/mac80211/scan.c | 2 net/mac80211/tdls.c | 40 net/mac80211/tx.c | 107 - net/netfilter/nf_flow_table_core.c | 12 net/netfilter/nf_flow_table_path.c | 7 net/netfilter/nf_nat_core.c | 46 net/netfilter/nf_tables_api.c | 22 net/netfilter/nft_nat.c | 2 net/netlink/af_netlink.c | 42 net/netlink/diag.c | 20 net/openvswitch/conntrack.c | 2 net/packet/af_packet.c | 4 net/packet/internal.h | 2 net/psp/psp_sock.c | 4 net/rds/ib_cm.c | 2 net/sched/act_api.c | 11 net/sched/sch_hhf.c | 9 net/sched/sch_mqprio.c | 4 net/sched/sch_mqprio_lib.c | 7 net/sched/sch_taprio.c | 26 net/unix/garbage.c | 17 net/wireless/core.c | 126 + net/wireless/core.h | 16 net/wireless/ibss.c | 36 net/wireless/rdev-ops.h | 3 net/wireless/reg.c | 2 net/wireless/scan.c | 43 net/wireless/util.c | 38 net/xfrm/espintcp.c | 6 net/xfrm/xfrm_input.c | 22 net/xfrm/xfrm_iptfs.c | 12 net/xfrm/xfrm_policy.c | 20 net/xfrm/xfrm_state.c | 9 net/xfrm/xfrm_user.c | 18 rust/kernel/net/phy.rs | 38 scripts/generate_rust_target.rs | 5 security/keys/encrypted-keys/encrypted.c | 20 security/keys/gc.c | 4 security/keys/request_key_auth.c | 12 security/keys/trusted-keys/trusted_tpm2.c | 12 security/selinux/avc.c | 5 security/selinux/hooks.c | 150 +- security/selinux/include/objsec.h | 10 sound/core/init.c | 3 sound/core/pcm_timer.c | 7 sound/hda/common/controller.c | 2 sound/soc/amd/acp/acp-sdw-legacy-mach.c | 16 sound/soc/amd/acp/acp-sdw-sof-mach.c | 21 sound/soc/codecs/cs-amp-lib.c | 2 sound/soc/codecs/hdmi-codec.c | 6 sound/soc/codecs/rt712-sdca-dmic.c | 14 sound/soc/intel/boards/sof_sdw.c | 2 sound/soc/sdw_utils/soc_sdw_bridge_cs35l56.c | 4 sound/soc/sdw_utils/soc_sdw_utils.c | 9 sound/soc/soc-pcm.c | 18 sound/soc/ux500/ux500_msp_i2s.h | 4 sound/usb/6fire/comm.c | 42 sound/usb/6fire/comm.h | 2 sound/usb/6fire/midi.c | 43 sound/usb/6fire/midi.h | 2 sound/usb/6fire/pcm.c | 138 + sound/usb/6fire/pcm.h | 5 sound/usb/bcd2000/bcd2000.c | 33 sound/usb/card.h | 1 sound/usb/endpoint.c | 12 sound/virtio/virtio_card.c | 4 tools/objtool/Makefile | 8 tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c | 2 tools/testing/selftests/landlock/fs_test.c | 197 ++ 439 files changed, 6817 insertions(+), 2709 deletions(-)
Aamir Ahmed (1):
Bluetooth: eir: validate service data length before reading UUID
Abdurrahman Hussain (1):
gpiolib: of: don't mark hog nodes OF_POPULATED before a chip is found
Ahmed Naseef (1):
net: phy: mediatek: do not report link and per-speed LED rules together
Alberto Carboneri (1):
scsi: core: Validate MODE SENSE lengths in scsi_cdl_enable()
Aleksandr Nogikh (1):
xfrm: add missing RCU read lock in xfrm_send_migrate_state()
Alex Bereza (2):
dmaengine: xilinx_dma: Fix hardware buffer descriptor reuse order
dmaengine: xilinx_dma: Fix hardware buffer descriptor chain after cyclic DMA
Alexander Chesnokov (1):
dmaengine: ti: k3-udma-glue: fix NULL dereference in k3_udma_glue_release_rx_chn()
Alexei Turtanov (1):
Input: atkbd - skip deactivate for Xiaomi Redmi Book Pro 16 2026
Alexey Klimov (1):
soc: samsung: exynos-pmu: fix use-after-free of interrupt generator node
Ali Ahmet Memis (1):
wifi: wilc1000: fix out-of-bounds read in P2P public action frames
Alvin Šipraga (1):
Input: adp5588-keys - cache GPIO state before registering the gpiochip
Amit Machhiwal (2):
KVM: PPC: Book3S HV: fix use-after-free in kvmhv_emulate_tlbie_all_lpid()
KVM: PPC: Book3S HV: fix secure device page leak on uv_page_in() failure
Anand Jain (1):
btrfs: derive f_fsid with dev_t only when temp_fsid is active
Andrea Mayer (1):
seg6: set IPSKB_L3SLAVE from IP6SKB_L3SLAVE on IPIP decapsulation
Andrea Righi (1):
sched/core: Avoid false migration warning for proxy donors
AngeloGioacchino Del Regno (2):
phy: mediatek: phy-mtk-hdmi-mt8195: Fix PLL calc divisor overflow
phy: mediatek: phy-mtk-hdmi-mt8195: Fix TMDS clk bit ratio setting
Aohan Mei (1):
rds: ib: use rds_conn_drop() on protocol version mismatch
April Cardenas (1):
smb/client: send lease break ACKs thru correct session for multiuser mounts
Arun Easi (1):
scsi: fnic: Fix missed link-up when critical IRQ targets offline CPU
Baineng Shou (1):
dmaengine: mmp_pdma: fix wrong sg length in mmp_pdma_prep_slave_sg()
Bard Liao (1):
soundwire: cadence_master: wait and cancel cdns->work before clock stop
Bartosz Golaszewski (3):
power: sequencing: don't call .post_enable() if pwrseq_unit_enable() failed
power: sequencing: fix NULL-pointer dereference in pwrseq_unit_new()
power: sequencing: fix NULL-pointer dereference in pwrseq_device_register()
Biju Das (1):
power: sequencing: Fix build issue with COMPILE_TEST
Bogdan Nicolae (1):
wifi: brcmfmac: cyw: pass PMKID to firmware if present
Bradley Morgan (1):
arm64: hibernate: pass HVC_SET_VECTORS args to the resume hvc
Breno Leitao (1):
arm64: hibernate: clone only the linear map that exists at runtime
Carolina Jubran (1):
IB/IPoIB: Avoid restoring OPER_UP after multicast flush
Catalin Marinas (1):
arm64: mte: Fix PTRACE_{PEEK,POKE}MTETAGS error documentation
Cen Zhang (1):
KEYS: encrypted: fix integer overflow of datablob_len
Cen Zhang (Microsoft Security FORGE Labs) (1):
xfrm: hold net_device reference under RCU in bundle creation
Chandrashekar Devegowda (1):
Bluetooth: btintel_pcie: validate TX skb length in send_sync
Chang S. Bae (2):
x86/build/64: Prevent native builds from generating EGPR use x86/microcode/intel: Reject problematic loading on Granite Rapids systems
Cheng Xu (1):
RDMA/erdma: Use IRQ-safe XArray helpers for QP and CQ tables
Chengfeng Ye (2):
Bluetooth: hci_sync: Serialize local codec list cleanup
xfrm: serialize state GC with device state flush
Chengjun Yao (1):
drm/amdgpu: fix rmmio iounmap skipped on device removal
Chris Lu (2):
Bluetooth: btmtk: fix wrong status for short WMT FUNC_CTRL events
Bluetooth: btmtksdio, btmtkuart: validate WMT event length before struct access
Chris Sommers (1):
Input: i8042 - add quirk for Acer Aspire Go 15 AG15-42P
Christian Göttsche (1):
selinux: always fill AVC decision in avc_has_perm_noaudit()
Christian König (1):
dma-buf/dma-fence: fix checking signaling bit for timeline and driver name v3
Christian Lugnberg (2):
dmaengine: sun6i: fix non-atomic read of DMA position registers
dmaengine: sun6i: fix undefined behaviour in sun6i_dma_tx_status
Chunfeng Song (1):
rust: net: phy: fix off-by-one bit positions in device status accessors
Claudiu Beznea (1):
phy: renesas: rcar-gen3-usb2: Avoid long delay in atomic context
Cong Nguyen (1):
hwmon: (gpio-fan) return IRQ_HANDLED from the shared alarm IRQ handler
Daehyeon Ko (1):
wifi: libipw: reject TKIP frames without a full MIC
Daniel Golle (1):
net: dsa: mxl862xx: disable the stats poll on teardown
Daniel Linjama (1):
btrfs: handle lack of space when cleaning up verity items
Daniel Zahka (1):
net: psp: avoid conflicts with skb->decrypted and sk_validate_xmit_skb()
David Francis (2):
drm/amdkfd: Avoid integer underflow in EOP ring size calculation. drm/amdkfd: Avoid integer underflow with ffs in EOP ring size calc
David Howells (1):
9p: Fix v9fs_issue_write() to update i_size and remote_i_size
David Hu (2):
dma-buf: Fix silent overflow for phys vec to sgt
dma-buf: Split sgl by largest page-aligned chunk
David Laight (1):
x86/div64: Fix addition of large constants in mul_u64_add_u64_div_u64()
Devin Wittmayer (1):
wifi: mac80211: refuse to make a monitor active when it has no queue
Dinh Nguyen (1):
arm64: dts: socfpga: change access permission from 755 to 644
Diogo Ivo (Schneider Electric) (4):
mmc: sdhci_am654: Move tuning_loop to local variable
mmc: sdhci_am654: Reset command and data lines on failed tuning
mmc: sdhci_am654: Clear ITAPDLY on tuning failure
mmc: sdhci_am654: Fallback to DT-provided itap delay on DDR50 tuning failure
Dmitriy Chumachenko (1):
drm/amdgpu: check ras and obj before dereference
Dmitriy Okunev (1):
net: mvpp2: prevent buffer overflow in page_pool allocation
Dmitry Baryshkov (1):
drm/msm/dsi: round the byte clock rate after reparenting to the PHY PLL
Dmitry Torokhov (2):
Input: rmi_smbus - fix out-of-bounds read in rmi_smb_write_block()
Input: synaptics-rmi4 - fix GPF in suspend and resume when unbound
Dong Chenchen (1):
ipv4: icmp: reject RTN_UNREACHABLE input routes in icmp_route_lookup
Donggeun Yoo (3):
dma-coherent: report a failed reserved memory assignment
dma-mapping: don't trace the DMA address when the allocation fails
swiotlb: use the adjusted address for the highmem page lookup
Doruk Tan Ozturk (1):
wifi: mwifiex: bound the pairwise-cipher OUI walk to the IE length
Eric Dumazet (11):
xfrm: add missing rcu_read_lock(), skb_dst_force() and dev_hold() for xfrm_trans_reinject()
tcp: do not let tcp_rmem be set below 4096
pppoatm: ensure a writable skb header and linear data
drop_monitor: synchronize tracepoint unregistration on error path
drop_monitor: use timer_shutdown_sync() to prevent timer rearming during teardown
drop_monitor: use raw_cpu_ptr() in tracepoint probes
drop_monitor: fix out-of-bounds write in reset_per_cpu_data()
netlink: do not free nlk->groups while lockless readers can use it
net: lock the socket in sock_gettstamp()
net: prevent torn reads in netdev_tc_txq
net: skbuff: do not leave stale header offsets after pskb_carve()
Erich Sartison (1):
Input: xpad - add support for Victrix Pro BFG Controller
Fan Wu (5):
mmc: core: Cancel SDIO IRQ work before freeing host
mmc: hsq: Fix use-after-free in retry work
mmc: mmci: Fix use-after-free in busy-timeout work
mmc: mxcmmc: cancel data work and watchdog on remove
wifi: wcn36xx: Fix potential use-after-free in TX ack timer teardown
Farhad Alemi (1):
net: remove WARN_ON_ONCE() from the dev_fill_forward_path() loop check
Felix Gu (1):
mmc: sdio_uart: fix xmit_fifo leak when the port table is full
Fernando Fernandez Mancera (1):
netfilter: nf_tables: fix device name and prefix match in hook lookup
Filipe Manana (4):
btrfs: tree-checker: print dev extent offset in error message
btrfs: abort transaction on failure to update inode for hole punching and reflinking
btrfs: check if there is space for chunk item when validating sys chunk array
btrfs: fix creation of compressed inline extents that don't save space
Florian Maillard (1):
mmc: rtsx_pci_sdmmc: ignore broken write-protect on ThinkPad X260
Francis Marlou Pacaro (1):
drm/amd/display: fix MALL hysteresis timer underflow at high refresh rates
Frank Sorenson (8):
smb: client: reject short Next offsets in parse_server_interfaces()
smb: client: fix next_buffer UAF and NextCommand bounds in compound PDUs
smb: client: fix OOB struct field reads in move_smb2_ea_to_cifs()
smb: client: fix potential OOB read in smb3_enum_snapshots()
smb: client: fix reparse buffer bounds in cifs_query_reparse_point()
smb: client: fix server->total_read for compound encrypted PDUs
smb: client: fix missing lower-bound check on DFS referral string offsets
smb: client: fix missing iov bounds check in parse_posix_sids()
Frieder Schrempf (1):
spi: fsl-qspi: Reprogram the clock rate when the operation frequency changes
Gabor Juhos (1):
spi: spi-qpic-snand: avoid writing QPIC_EBI2_ECC_BUF_CFG register
Gang Yan (1):
RDMA/rxe: Fix integer overflow in mr_check_range() leading to OOB access
Greg Kroah-Hartman (1):
Linux 7.2.8
Gris Ge (1):
net: ip_tunnel: initialize options_len before referencing options
Guanghui Yang (1):
btrfs: clear free space tree creation state on rebuild failure
Guanglei Zhu (3):
net: wwan: t7xx: validate the netif index in t7xx_ccmni_recv_skb()
net: wwan: mhi_wwan_mbim: guard against a cyclic NDP chain
net: wwan: mhi_wwan_mbim: check skb_copy_bits() return value
Guangshuo Li (5):
i2c: imx: disable autosuspend on remove
hwmon: (w83791d) remove fan/pwm 4-5 sysfs group on remove
hwmon: (w83793) release probe data through kref drm/msm/adreno: fix autosuspend cleanup during teardown drm/msm/hdmi_phy: fix runtime PM cleanup on probe failure
Guoqing Jiang (1):
RDMA/siw: Clear association under lock if siw_qp_modify fails in siw_accept
Günther Noack (3):
selftests/landlock: Use an actual chardev for MAKE_CHAR audit test selftests/landlock: Add tests for whiteout object creation selftests/landlock: Add audit test for whiteout object creation
Hans de Goede (2):
Input: soc_button_array - fix MS Surface Pro 11 probe failure
Input: soc_button_array - check btns_desc->package.count
Hao-Qun Huang (1):
spi: virtio: Use the per-transfer bits per word
Henry Martin (1):
xfrm: iptfs: fix runt reassembly panic from short inner tot_len
Hohyun Sim (1):
net: fddi: skfp: fix NULL deref when setting the MAC address while down
Hongling Zeng (1):
btrfs: take commit root semaphore when iterating in mark_block_group_to_copy()
HyeongJun An (1):
ASoC: hdmi-codec: Report a change when the channel status moves
Hyunwoo Kim (1):
exec: Cleanup POSIX timers right after de_thread()
Ian Luites (1):
soundwire: dmi-quirks: Disable ghost Realtek on Asus GX651AX
Ibrahim Abdelkader (1):
Bluetooth: hci_qca: Do not write to the serial port after it is closed
Ilia Levi (2):
drm/xe/mmio_gem: forbid VMA split drm/xe/mmio_gem: use write-back mapping for dummy page
Inbal Schussheim (1):
tcp: exclude old ACKs from tcp fast path
Itai Handler (1):
spi: spi-zynqmp-gqspi: stop the controller on shutdown
Ivan Pustogarov (1):
wifi: mac80211: avoid out-of-bounds read for empty PREQ elements
Iván Ezequiel Rodriguez (3):
Input: evdev - zero absinfo before partial copy in EVIOCSABS
Input: zero ff_effect before compat copy in input_ff_effect_from_user
ntsync: reject wait ioctls with zero owner
Jacob Moroni (1):
RDMA/irdma: Enforce local fence for IB_WR_REG_MR
Jakub Kicinski (1):
eth: fbnic: ring the doorbell if a burst ends in a drop
Jamal Hadi Salim (2):
net/sched: codel: bound the dropping loop per dequeue call net/sched: hhf: cap hh_flows_limit at change time
James Clark (1):
net: macb: fix ordering around PTP timestamp read
James Seo (1):
hwmon: (hp-wmi-sensors) Improve raw WMI string handling
Jarkko Sakkinen (1):
KEYS: trusted: Fix tpm2_load_cmd() boundary check
Jeff Layton (1):
nfsd: fix handling of NFSEXP_PNFS in the netlink codepath
Jeffin Philip (1):
RDMA/core: fix refcount bug in iwpm_get_nlmsg_request()
Jens Axboe (1):
sunvdc: fix -EIO issue due to lack of retries
Jeremy Nyberg (1):
Input: xpad - fix PDP Marvel Xbox 360 controller
Jesse Casco (1):
drm/msm/dp: skip PUSH_IDLE when the link was never enabled
Jiangshan Yi (3):
ASoC: codecs: rt712-sdca-dmic: fix uninitialized stream_config->type
wifi: brcmsmac: fix UAF in brcms_free_timer()
wifi: libertas_tf: fix UAF in lbtf_free_adapter()
Jiayuan Chen (1):
mm/shrinker: fix bogus set_shrinker_bit() with cgroup.memory=nokmem
Jinke Han (1):
x86/kprobes: Fix crash when probing CS CALL instructions
Johannes Berg (30):
wifi: cfg80211: don't get the radio mask for netdev-less wdevs
wifi: cfg80211: check IP header size in cfg80211_classify8021d()
wifi: cfg80211: don't free driver-owned scan requests
wifi: cfg80211: only group hidden BSSes with beacon entries
wifi: cfg80211: don't filter by BSS type when removing stale entries
wifi: cfg80211: ibss: ref BSS entry for joined event
wifi: cfg80211: fix NAN regulatory enforcement
wifi: mac80211: don't start a ROC while scanning
wifi: mac80211: don't warn when an IBSS has no channel to scan
wifi: mac80211: don't offload TC setup on AP_VLAN interfaces
wifi: mac80211: suppress chanctx warning for debugfs reset
wifi: mac80211: abort chanswitch when leaving a mesh
wifi: mac80211: reset state when starting AP fails
wifi: mac80211: reset the LED state when ifup fails
wifi: mac80211: only operate on TDLS peers in the TDLS code
wifi: cfg80211: restore netns_immutable on failures
wifi: cfg80211: undo netns switch if renaming the wiphy fails
wifi: mac80211: unlist vifs when their netdev is unregistered
wifi: cfg80211: get the wiphy out of a dying network namespace
wifi: mac80211_hwsim: don't hand frames to mac80211 while stopping
wifi: mac80211: don't allow injecting frames wider than the chanctx
wifi: mac80211: reset the AP_VLAN tailroom counter on ifdown
wifi: mac80211: require a peer station for TDLS setup confirm
wifi: mac80211: don't allow link changes when iface is down
wifi: mac80211: don't RCU-dereference the mesh CSA settings we just set
wifi: mac80211: don't access the TSF of a down interface
wifi: mac80211: add HE 6 GHz capability in the scan elems len
wifi: mac80211: mesh: reset the CSA state when leaving
wifi: mac80211: mesh: release the channel if start fails
wifi: mac80211: set up the TX info early to fix failure paths
Jonghyuk Kim(MalHyuk) (1):
drm/msm: RCU-free the scheduler-containing ring and VM objects
Joseph Qi (1):
smb: client: fix use-after-free of iface in cifs_try_adding_channels()
Juan Perdomo (1):
Bluetooth: RFCOMM: avoid socket lock inversion in listener cleanup
Julian Braha (1):
mips: econet: fix unmet dependencies for ECONET
Jérémy Jean (2):
RDMA/siw: Bound fragmented header copies by the remaining length
smb: client: validate absolute native symlink targets before NT fixups
Karan Tilak Kumar (2):
scsi: fnic: Make debug logging protocol independent
scsi: fnic: Bump up version number
Karl Mehltretter (10):
scsi: pm80xx: Fix the use_msix, use_tasklet and read_wwn parameter descriptions
scsi: qla2xxx: Fix the ql2xfc2target parameter description drm/msm: Fix the separate_gpu_kms parameter description drm/msm/adreno: Fix the skip_gpu parameter description
keys: fix lost wakeup when reaping a dead key type
Input: trackpoint - fix the inertia attribute name in the ABI document drm/vc4: Use managed KMS polling to fix UAF on unbind
wifi: brcmfmac: fix lost 802.1x TX completion wakeup
selinux: preserve user SID across nested backing files
selinux: recheck intermediate backing files on mprotect()
Koichiro Den (1):
arm64: dts: renesas: r8a779f0: Set UFS lane count
Krystian Kaniewski (1):
RDMA/core: Reject unregistering netdevs in ib_get_eth_speed
Kuninori Morimoto (2):
ASoC: sdw_utils: tidyup .count_sidecar
ASoC: sdw_utils: tidyup asoc_sdw_parse_sdw_endpoints()
Kuniyuki Iwashima (7):
neighbour: Add missing RCU annotation for neightbl_dump_info().
neighbour: Enforce min/max to NDTPA_INTERVAL_PROBE_TIME_MS.
neighbour: Don't render blackhole_netdev via RTM_GETNEIGHTBL.
neighbour: Skip default parms when resumed in neightbl_dump_info().
sysctl: Check range in proc_dointvec_ms_jiffies_minmax
tcp: Don't call skb_clone_and_charge_r() for close()d listener in tcp_v6_do_rcv().
af_unix: Unify scc_index when finalising SCC in __unix_walk_scc().
Kyle Zeng (1):
xfrm: fix compat ALLOCSPI request use-after-free
Lachlan Hodges (1):
wifi: mac80211: include TIM bitmap control for buffered S1G mcast traffic
Laxman Acharya Padhya (1):
Bluetooth: hci_codec: validate vendor codec count length
Leon Romanovsky (2):
RDMA/efa: Keep admin queues alive while IRQ is registered RDMA/efa: Keep EQ resources alive while IRQ is registered
Li Jun (2):
watchdog: da9062: fix suspend/resume handling of HW_RUNNING watchdog
watchdog: da9063: fix suspend/resume handling of HW_RUNNING watchdog
Li RongQing (2):
RDMA/uverbs: Fix potential leak of resources->collection in flow_resources_alloc() RDMA/mad: Fix receive buffer leak when PKey enforcement fails
Linkai Gong (3):
RDMA/bnxt_re: check create_singlethread_workqueue() in DCB setup
i2c: atr: fix dangling adapter pointer on add failure
Input: cyttsp5 - clamp the HID report size before memcpy
Linmao Li (1):
wifi: mwifiex: prevent authentication frame length truncation
Linus Walleij (1):
net: ethernet: cortina: Ack RX overrun interrupt correctly
Liu Zhenlong (1):
i2c: qcom-cci: fix device_node refcount leak in cci_probe()/cci_remove()
Lorenzo Bianconi (5):
net: stmmac: fix TSO header length truncation
net: stmmac: do not overwrite phc_index when no PTP clock is registered
net: pass net_device_path_ctx to dev_fill_forward_path()
net: stmmac: propagate FPE preemption-class mapping errors
net: stmmac: preserve real_num_tx_queues on mqprio setup failure
Lorenzo Stoakes (ARM) (3):
mm/huge_memory: bypass THP tuneables for huge pfnmap mappings mm/mremap: account mm->locked_vm correctly for MREMAP_DONTUNMAP mm/vma: correctly unaccount on mmap_prepare() failure
Lucas Tanure (5):
arm64: dts: amlogic: t7: use the real UART pclk
arm64: dts: amlogic: t7: khadas-vim4: allow the SD card to be power cycled
arm64: dts: amlogic: t7: fix the pin groups of two PWM outputs
arm64: dts: amlogic: t7: khadas-vim4: add the PWM-driven supplies
arm64: dts: amlogic: t7: fix the pin groups of the vsync PWM
Luiz Augusto von Dentz (2):
Bluetooth: ISO: Fix parent socket leak in iso_conn_ready()
Bluetooth: ISO: set BT_LISTEN before requesting a BIG sync
Lyude Paul (4):
Revert "nouveau/gsp: fix suspend/resume regression on r570 firmware" drm/nouveau/gsp: Increase delay for magic sleep in r535_gsp_fini() drm/nouveau/gsp/r570: Set GcOff = 0 in fbsr drm/nouveau/gsp/r570: Enable S/R Display workaround in GSP
Maher Azzouzi (1):
esp: downgrade zerocopy managed frags before mutating skb frags
Maoyi Xie (1):
keys: translate request_key_auth pid for the reading procfs instance
Mariano Baragiola (1):
wifi: virt_wifi: free skb when disconnected
Mario Limonciello (3):
drm/amdgpu: Skip KFD mapping clear before initialization drm/amdgpu: Fix GPU PCIe link capability reporting drm/amdgpu: restrict BAR0 fallback read to SR-IOV VFs only
Mark Amirkan (3):
net: lan743x: fix RX checksum use-after-free net/packet: clear RX owner on VNET header error net/packet: avoid truncating TPACKET_V3 private size
Mark Rutland (3):
arm64: percpu: Fix this_cpu_write() casting
arm64: percpu: Fix this_cpu_and() mask generation
arm64: percpu: Fix LSE operations on {8,16}-bit types
Matthew Schwartz (1):
x86/fred: Reconstruct the #GP context for rejected INT instructions
Meijing Zhao (1):
mm: memblock: show all region flags in debugfs
Michael Bommarito (1):
RDMA/rxe: insert mcg into mcg_tree only after rxe_mcast_add() succeeds
Michail Tatas (1):
gpiolib: Put fwnode reference on failure
Michal Koutný (1):
cgroup: Avoid iteration of dying tasks with zero refcount
Mike Lothian (1):
drm/amdgpu: hold a runtime PM reference for P2P dma-buf attachments
Muhammad Bilal (1):
hwmon: (hp-wmi-sensors) Fix use-after-free in fungible_show()
Myeonghun Pak (1):
mmc: sdhci-of-aspeed: Remove children before releasing SDC resources
Namjae Jeon (13):
ntfs: use dynamic MFT tail reservation
ntfs: repack $MFT/$ATTRIBUTE LIST
ntfs: account for MFT records added during allocation
ntfs: protect runlist updates with the runlist lock
ntfs: propagate folio errors
ntfs: ignore interrupted inode reads as corruption
ksmbd: fix malformed procfs status output
ksmbd: extend procfs server statistics
ksmbd: follow SMB2 session expiration semantics
ksmbd: return buffer overflow for partial filesystem info
ksmbd: fix partial file information responses
ksmbd: keep compound responses on query info errors
ksmbd: fix partial normalized name responses
Nemesa Garg (1):
Revert "drm/i915/display: Clear SEL_FETCH_PLANE_CTL on plane disable"
Nguyen Ngoc Thang (1):
ALSA: pcm: set timer->private_data before registering the PCM timer
Nhat Pham (1):
mm, swap: fix SWAP_USAGE_OFFLIST_BIT collision with real usage count
Nicolai Buchwitz (1):
net: bcmgenet: restore the hardware filters on open
Nicolas Escande (1):
wifi: ath11k: cleanup arsta in ath11k_mac_peer_cleanup_all()
Nicolas Thibert (1):
Bluetooth: btusb: fix NXP IW610 composite device handling
Niklas Cassel (1):
ata: libahci: clear PxCLBU and PxFBU for AHCI_HFLAG_32BIT_ONLY
Nikolay Aleksandrov (2):
net: bridge: mst: move switchdev call outside rcu
net: bridge: vlan: fix bugs caused by switchdev deletion errors
Norbert Szetei (1):
RDMA/rxe: validate access flags before swapping the MR's PD
Nuno Sá (1):
hwmon: (pmbus/core) increase number of phases and add new mask
Or Har-Toov (2):
RDMA/mlx5: Remove warn on missing representor in query_port_speed RDMA/uverbs: Fix mmap_lock/disassociation_lock circular dependency
Orgad Shaneh (1):
MIPS: Octeon: apply USB FDT fixups also when USB is modular
Ovidiu Panait (5):
arm64: dts: renesas: r9a09g057: Switch GBETH TX queue scheduling to WRR
arm64: dts: renesas: r9a09g056: Switch GBETH TX queue scheduling to WRR
arm64: dts: renesas: r9a09g047: Switch GBETH TX queue scheduling to WRR
arm64: dts: renesas: r9a09g077: Switch GBETH TX queue scheduling to WRR
arm64: dts: renesas: r9a09g087: Switch GBETH TX queue scheduling to WRR
Pablo Neira Ayuso (4):
netfilter: nf_nat: unregister and release hooks on error
netfilter: flowtable: hold reference on ct until flow is released
net: do not advance stack index from dev_fwd_path()
net: pass dst via net_device_path in dev_fill_forward_path()
Paulo Alcantara (5):
smb: client: cancel reconnect work in clean_demultiplex_info()
smb: client: fix rlist race and missing initialization
smb: client: fix smbd_connection leak on cifs_get_tcp_session() error
smb: client: fix unaligned access in WSL reparse point parser
smb: client: fix fattr leaking on wsl_to_fattr() failure
Peng Hao (1):
wifi: mwifiex: fix IRQ leak using wrong index in MSI-X error path
Pengpeng Hou (2):
ARM: socfpga: select the PL310 erratum 753970 workaround
wifi: mwifiex: validate scan response extents
Peter Zijlstra (1):
futex: Also allocate private hash on vfork()
Qi Zheng (1):
fs: fix missed removal of super_fs_objects_eligible()
Quanye Yang (2):
RDMA/rtrs-clt: Fix CQ pool leak when connect is interrupted RDMA/ucma: Serialize join and leave on copy_to_user failure
Raag Jadav (1):
drm/xe/i2c: Disable IRQ on unbind
Radek Podgorny (2):
Bluetooth: put the peer's on-air address on air when we cannot resolve
Bluetooth: keep dst_type with dst when reusing an LE connection
Raphaël Larocque (1):
Input: synaptics - disable InterTouch on ThinkPad T440p (board id 2722)
Richard Fitzgerald (4):
ASoC: Rename snd_soc_dai_link_ch_map.ch_mask to cpu_ch_mask
ASoC: Add codec_ch_mask to snd_soc_dai_link_ch_map
ASoC: soc-pcm: Apply snd_soc_dai_link_ch_map.codec_ch_mask to codec params
ASoC: cs-amp-lib: Prevent NULL pointer if efi variable is zero length
Richard Zhu (1):
PCI: imx6: Move clock enable after core reset assertion
Rik van Riel (1):
wifi: mac80211: avoid WARN in set_bitrate_mask when sdata not in driver
Roberts Kursitis (1):
Input: xpad - add support for Azeron devices
Roshan Kumar (1):
xfrm: iptfs: fix stack OOB read in iptfs_skb_reset_frag_walk()
Runyu Xiao (4):
gpio: virtuser: skip free_irq when no IRQ is installed
mmc: sh_mmcif: initialize IRQ-thread mutex before requesting interrupt
Input: hp_sdc - shut down kicker timer on module exit
wifi: wlcore: release runtime PM ref on regdomain config failure
Ruoyu Wang (1):
dmaengine: sprd: Fix runtime PM reference leak in probe
Ryan Mehri (1):
RDMA/rtrs: guard against null kobj name
Sai Teja Aluvala (1):
Bluetooth: btintel_pcie: fix off-by-one bounds check in RX submit
Saim Shujah (1):
drm/msm/dpu: clear pending peripheral flush state
Sajal Gupta (1):
drm/gud: fix out-of-bounds write in gud_plane_atomic_check()
Sanman Pradhan (2):
hwmon: (pmbus/tps53679) Fix TPS53676 phase page decoding
hwmon: (pmbus/tps53679) Select page 0 for single-page TPS53676
Sascha Hauer (1):
dmaengine: pxa: fix double counting of the hw descriptors
Sasha Levin (1):
ASoC: ux500: Parenthesize MSP_{RX,TX}_CLKPOL_BIT() arguments
Seunguk Shin (1):
fs/dax: check zero or empty entry before converting xarray entry
Shakeel Butt (2):
memcg: avoid charging the root memcg from obj_cgroup_charge_pages() mm/mlock: use the IRQ-safe accessor for NR_MLOCK in __munlock_folio()
Shengzhuo Wei (4):
i2c: at91: release DMA channels on remove and probe error
i2c: imx: release DMA channels on probe error
wifi: p54: validate curve data length in the calibration curve converters
wifi: p54: require a full exp_if record in PDR_INTERFACE_LIST
Shivank Garg (3):
dmaengine: Fix device kref underflow in dma_chan_put()
dmaengine: fix use-after-free in dma_chan_put() and dma_release_channel()
dmaengine: wait for RCU readers before releasing dma_device
Shivaprasad G Bhat (1):
powerpc/iommu: Fix the overflow validation in iommu_tce_check_ioba
Shmulik Cohen (2):
wifi: libipw: reject too-short beacon and probe responses
wifi: libipw: reject too-short association responses
Shouping Wang (1):
perf/arm-cmn: Fix wp_dev_sel2 setting for multi-DTM configurations
Shuangpeng Bai (1):
IB/mlx4: Fix use-after-free on pkey sysfs registration failure
Shuhei Takeshita (2):
IB/hfi1: Resolve the credit-return buffer through the send context's node IB/hfi1: Fix the PIO_CRED credit-return mmap
Shuicheng Lin (3):
drm/xe/mmio_gem: Revoke drm_vma_node on xe_mmio_gem destroy drm/xe/shrinker: Return the freed page count through a parameter drm/xe/shrinker: Take a runtime PM ref before shrinking non-system memory
Siwei Zhang (1):
xfrm: use hlist_del_init_rcu for state_cache and state_cache_input
Slavin Liu (1):
ALSA: hda: trace PCM open only after assigning a stream
Sophie D (1):
drm/gud: Ignore damage clips in full update mode
Sriharsha Basavapatna (1):
RDMA/bnxt_re: Avoid exposing umdbr to userspace
Stanislaw Gruszka (1):
wifi: iwlegacy: fix broadcast stations deallocation
Takashi Iwai (3):
ALSA: bcd2000: Fix race between rawmidi and disconnect
ALSA: usb: 6fire: Avoid embedded URBs
ALSA: core: Fix potential UAF after asynchronous card release
Thadeu Lima de Souza Cascardo (1):
drm: Fix drm_pending_vblank_event leak in error path for out_fence_ptr
ThangNN99 (1):
Bluetooth: hci_core: Fix queuing tx_work after workqueue is drained
Theodor Arsenij Larionov Trichkine (1):
netfilter: nft_nat: fully initialise new_addr in netmap setup
Thomas Gleixner (2):
posix-cpu-timers: Prevent freeing a timer which is queued on the expiry list
signal: Prevent exec() race
Thomas Huth (1):
kselftest/arm64: Fix size of thread_data values for pthread_join()
Thomas Richard (congatec GmbH) (2):
hwmon: (cgbc-hwmon) Fix current sensors ID lookup
hwmon: (cgbc-hwmon) Add missing sensors
Théo Lebrun (1):
mips: select CONFIG_WEAK_REORDERING_BEYOND_LLSC from CONFIG_EYEQ
Tianchu Chen (2):
wifi: rsi: fix heap OOB write on key removal
wifi: wilc1000: fix RX buffer OOB-write in wilc_wlan_handle_isr_ext()
Troy Mitchell (1):
dmaengine: mmp_pdma: fix wrong extended DRCMR base for SpacemiT K3
Tvrtko Ursulin (1):
drm/sched: Fix virtual runtime race
Tzung-Bi Shih (6):
Bluetooth: btmtksdio: Fix PM runtime reference leak in shutdown
watchdog: digicolor: Avoid division by zero
watchdog: msc313e: Fix premature reset during timeout update
watchdog: msc313e: Propagate error code in resume()
watchdog: rtd119x: Avoid division by zero
watchdog: rzv2h: Avoid division by zero
Ulises Mendez Martinez (1):
objtool: Validate disassembler headers in libopcodes probe
Usama Arif (1):
fs/super: skip non-memcg-aware nr_cached_objects in memcg slab shrink
Vadim Nikitushkin (1):
drm/ttm: fix swapped-out resources never leaving their bulk_move range
Vijendar Mukunda (3):
ASoC: amd: acp: bounds-check SoundWire link ID in machine drivers
ASoC: amd: acp: refactor codec config count in SOF SoundWire machine driver
ASoC: amd: acp: fix ffs() operator precedence for SoundWire link ID
Vinay Belgaumkar (1):
perf: Fix null pointer access in is_include_guest_event()
Vladimir Marioukhine (1):
drm/amdkfd: implement restore_mqd callbacks for GFX12/12.1
Wanwu Li (1):
sched_ext: Fix NULL sched deref in kfunc sub-sched error paths
Weiming Shi (2):
RDMA/rxe: Restore HMM_PFN_WRITE check in ODP write paths
Bluetooth: coredump: Quiesce dump work on unregister
Wenjie Qi (1):
mm: filemap: retain mapped dropbehind folios
Wentao Liang (4):
ata: libahci_platform: Fix device reference leak in ahci_platform_get_resources()
cifs: Fix server use-after-free in cifs_chan_skip_or_disable()
watchdog: sp5100_tco: Fix pci_dev reference leak in sp5100_tco_init()
watchdog: starfive-wdt: Fix runtime PM leak in starfive_wdt_pm_start()
William Bright (1):
drm/msm/dp: fix link bandwidth check when wide bus is enabled
Wyatt Feng (1):
net: xfrm: reject unrepresentable espintcp transport headers
Xiang Mei (2):
ALSA: 6fire: fix OOB write from device-reported iso length
ALSA: usb-audio: Clamp implicit feedback packet count to URB capacity
Xixin Liu (3):
firmware: arm_scpi: reject DVFS OPP count above MAX_DVFS_OPPS
clk: scpi: bound-check DVFS index in scpi_dvfs_recalc_rate
clk: scpi: register scpi-cpufreq once and clear on failure
Xu Rao (1):
mmc: spi: reset bytes_xfered before retrying CRC failures
Xuanqiang Luo (1):
net/sched: act_api: release tail references on DELACTION failure
Yehyeong Lee (2):
IB/iser: reject a remote invalidation of an unregistered direction IB/isert: wait for deferred control PDU completions before releasing the connection
Yibo Tan (1):
hwmon: (pwm-fan) Stop RPM timer before freeing tach data
Yifei Gao (1):
memstick: ms_block: destroy io_queue workqueue on removal
Yige Jiang (1):
net: netsec: fix device_node reference leak on phy_np
Yuho Choi (1):
ALSA: virtio: reset device before deleting virtqueues
Zhao Li (1):
wifi: mwifiex: validate action frame fixed fields
Zhiling Zou (3):
openvswitch: avoid reallocating confirmed conntrack labels
ipv6: xfrm: use full sockets in local error paths
xfrm: save input state data before secpath resets
Zhu Ling (1):
mmc: core: Fix OF node reference leak on card add failure
Zihan Xi (1):
wifi: virt_wifi: don't transfer operstate before register
chong li (1):
drm/amdgpu: reduce early full GPU access during SR-IOV init
fangqiurong (1):
sched_ext: Close the pre-enable ops error claim window
hpp.iscas (1):
Input: eeti_ts - publish the OF module alias
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-devices-platform-trackpoint +1 -1
@@ -5,7 +5,7 @@ Contact: [email protected] Description: (RW) Trackpoint sensitivity. -What: /sys/devices/platform/i8042/.../intertia +What: /sys/devices/platform/i8042/.../inertia Date: Aug, 2005 KernelVersion: 2.6.14 Contact: [email protected]
Documentation/arch/arm64/memory-tagging-extension.rst +2 -3
@@ -208,11 +208,10 @@ will use the corresponding aligned address. tracer's space cannot be accessed or does not have valid tags. - ``-EPERM`` - the specified process cannot be traced. - ``-EIO`` - the tracee's address range cannot be accessed (e.g. invalid - address) and no tags copied. ``iov_len`` not updated. + address) or does not have valid tags (not mapped with the ``PROT_MTE`` + flag) and no tags copied. ``iov_len`` not updated. - ``-EFAULT`` - fault on accessing the tracer's memory (``struct iovec`` or ``iov_base`` buffer) and no tags copied. ``iov_len`` not updated. -- ``-EOPNOTSUPP`` - the tracee's address does not have valid tags (never - mapped with the ``PROT_MTE`` flag). ``iov_len`` not updated. **Note**: There are no transient errors for the requests above, so user programs should not retry in case of a non-zero system call return.
Documentation/hwmon/cgbc-hwmon.rst +26 -16
60 lines not on this page · raw message
Documentation/netlink/specs/rt-neigh.yaml +3 -0
@@ -341,6 +341,9 @@ attribute-sets: - name: interval-probe-time-ms type: u64 + checks: + min: 1 + max: 86400000 operations: enum-model: directional
Documentation/networking/ip-sysctl.rst +3 -1
@@ -248,7 +248,7 @@ neigh/default/unres_qlen - INTEGER neigh/default/interval_probe_time_ms - INTEGER The probe interval for neighbor entries with NTF_MANAGED flag, - the min value is 1. + the min value is 1, and the max value is 86400000 (1 day). Default: 5000
@@ -874,6 +874,8 @@ tcp_rmem - vector of 3 INTEGERs: min, default, max case this value is ignored. Default: between 131072 and 32MB, depending on RAM size. + Each of the three values cannot be set below 4096. + tcp_sack - BOOLEAN Enable select acknowledgments (SACKS).
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 7 PATCHLEVEL = 2 -SUBLEVEL = 7 +SUBLEVEL = 8 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm/mach-socfpga/Kconfig +1 -1
@@ -16,7 +16,7 @@ menuconfig ARCH_INTEL_SOCFPGA select ARM_ERRATA_775420 select PL310_ERRATA_588369 select PL310_ERRATA_727915 - select PL310_ERRATA_753970 if PL310 + select PL310_ERRATA_753970 select PL310_ERRATA_769419 select RESET_CONTROLLER
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk.dtsi +0 -0
arch/arm64/boot/dts/altera/socfpga_stratix10_socdk_emmc.dts +0 -0
arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-an400.dts +1 -1
@@ -33,7 +33,7 @@ xtal: xtal-clk { }; &uart_a { - clocks = <&xtal>, <&xtal>, <&xtal>; + clocks = <&xtal>, <&clkc_periphs CLKID_SYS_UART_A>, <&xtal>; clock-names = "xtal", "pclk", "baud"; status = "okay"; };
arch/arm64/boot/dts/amlogic/amlogic-t7-a311d2-khadas-vim4.dts +110 -3
144 lines not on this page · raw message
arch/arm64/boot/dts/amlogic/amlogic-t7.dtsi +38 -6
65 lines not on this page · raw message
arch/arm64/boot/dts/renesas/r8a779f0.dtsi +1 -0
@@ -901,6 +901,7 @@ ufs: ufs@e6860000 { clocks = <&cpg CPG_MOD 1514>, <&ufs30_clk>; clock-names = "fck", "ref_clk"; freq-table-hz = <200000000 200000000>, <38400000 38400000>; + lanes-per-direction = <1>; power-domains = <&sysc R8A779F0_PD_ALWAYS_ON>; resets = <&cpg 1514>; status = "disabled";
arch/arm64/boot/dts/renesas/r9a09g047.dtsi +10 -0
@@ -1394,23 +1394,28 @@ queue3 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
@@ -1494,23 +1499,28 @@ queue3 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
arch/arm64/boot/dts/renesas/r9a09g056.dtsi +10 -0
@@ -1569,23 +1569,28 @@ queue3 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
@@ -1670,23 +1675,28 @@ queue3 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
arch/arm64/boot/dts/renesas/r9a09g057.dtsi +10 -0
@@ -1559,23 +1559,28 @@ queue3 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
@@ -1660,23 +1665,28 @@ queue3 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <4>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; snps,priority = <0x1>; }; queue1 { + snps,weight = <0x12>; snps,dcb-algorithm; snps,priority = <0x2>; }; queue2 { + snps,weight = <0x14>; snps,dcb-algorithm; snps,priority = <0x4>; }; queue3 { + snps,weight = <0x18>; snps,dcb-algorithm; snps,priority = <0x8>; };
arch/arm64/boot/dts/renesas/r9a09g077.dtsi +27 -0
@@ -642,36 +642,45 @@ queue7 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <8>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; }; queue1 { + snps,weight = <0x11>; snps,dcb-algorithm; }; queue2 { + snps,weight = <0x12>; snps,dcb-algorithm; }; queue3 { + snps,weight = <0x13>; snps,dcb-algorithm; }; queue4 { + snps,weight = <0x14>; snps,dcb-algorithm; }; queue5 { + snps,weight = <0x15>; snps,dcb-algorithm; }; queue6 { + snps,weight = <0x16>; snps,dcb-algorithm; }; queue7 { + snps,weight = <0x17>; snps,dcb-algorithm; }; };
@@ -788,36 +797,45 @@ queue7 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <8>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; }; queue1 { + snps,weight = <0x11>; snps,dcb-algorithm; }; queue2 { + snps,weight = <0x12>; snps,dcb-algorithm; }; queue3 { + snps,weight = <0x13>; snps,dcb-algorithm; }; queue4 { + snps,weight = <0x14>; snps,dcb-algorithm; }; queue5 { + snps,weight = <0x15>; snps,dcb-algorithm; }; queue6 { + snps,weight = <0x16>; snps,dcb-algorithm; }; queue7 { + snps,weight = <0x17>; snps,dcb-algorithm; }; };
@@ -934,36 +952,45 @@ queue7 { mtl_tx_setup2: tx-queues-config { snps,tx-queues-to-use = <8>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; }; queue1 { + snps,weight = <0x11>; snps,dcb-algorithm; }; queue2 { + snps,weight = <0x12>; snps,dcb-algorithm; }; queue3 { + snps,weight = <0x13>; snps,dcb-algorithm; }; queue4 { + snps,weight = <0x14>; snps,dcb-algorithm; }; queue5 { + snps,weight = <0x15>; snps,dcb-algorithm; }; queue6 { + snps,weight = <0x16>; snps,dcb-algorithm; }; queue7 { + snps,weight = <0x17>; snps,dcb-algorithm; }; };
arch/arm64/boot/dts/renesas/r9a09g087.dtsi +27 -0
@@ -643,36 +643,45 @@ queue7 { mtl_tx_setup0: tx-queues-config { snps,tx-queues-to-use = <8>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; }; queue1 { + snps,weight = <0x11>; snps,dcb-algorithm; }; queue2 { + snps,weight = <0x12>; snps,dcb-algorithm; }; queue3 { + snps,weight = <0x13>; snps,dcb-algorithm; }; queue4 { + snps,weight = <0x14>; snps,dcb-algorithm; }; queue5 { + snps,weight = <0x15>; snps,dcb-algorithm; }; queue6 { + snps,weight = <0x16>; snps,dcb-algorithm; }; queue7 { + snps,weight = <0x17>; snps,dcb-algorithm; }; };
@@ -790,36 +799,45 @@ queue7 { mtl_tx_setup1: tx-queues-config { snps,tx-queues-to-use = <8>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; }; queue1 { + snps,weight = <0x11>; snps,dcb-algorithm; }; queue2 { + snps,weight = <0x12>; snps,dcb-algorithm; }; queue3 { + snps,weight = <0x13>; snps,dcb-algorithm; }; queue4 { + snps,weight = <0x14>; snps,dcb-algorithm; }; queue5 { + snps,weight = <0x15>; snps,dcb-algorithm; }; queue6 { + snps,weight = <0x16>; snps,dcb-algorithm; }; queue7 { + snps,weight = <0x17>; snps,dcb-algorithm; }; };
@@ -937,36 +955,45 @@ queue7 { mtl_tx_setup2: tx-queues-config { snps,tx-queues-to-use = <8>; + snps,tx-sched-wrr; queue0 { + snps,weight = <0x10>; snps,dcb-algorithm; }; queue1 { + snps,weight = <0x11>; snps,dcb-algorithm; }; queue2 { + snps,weight = <0x12>; snps,dcb-algorithm; }; queue3 { + snps,weight = <0x13>; snps,dcb-algorithm; }; queue4 { + snps,weight = <0x14>; snps,dcb-algorithm; }; queue5 { + snps,weight = <0x15>; snps,dcb-algorithm; }; queue6 { + snps,weight = <0x16>; snps,dcb-algorithm; }; queue7 { + snps,weight = <0x17>; snps,dcb-algorithm; }; };
arch/arm64/include/asm/percpu.h +10 -10
@@ -77,7 +77,7 @@ __percpu_##name##_case_##sz(void *ptr, unsigned long val) \ " stxr" #sfx "\t%w[loop], %" #w "[tmp], %[ptr]\n" \ " cbnz %w[loop], 1b", \ /* LSE atomics */ \ -#op_lse "\t%" #w "[val], %" #w "[tmp], %[ptr]\n" \ +#op_lse #sfx "\t%" #w "[val], %" #w "[tmp], %[ptr]\n" \ __nops(3)) \ : [loop] "=&r" (loop), [tmp] "=&r" (tmp), \ [ptr] "+Q"(*(u##sz *)ptr) \
@@ -98,7 +98,7 @@ __percpu_##name##_return_case_##sz(void *ptr, unsigned long val) \ " stxr" #sfx "\t%w[loop], %" #w "[ret], %[ptr]\n" \ " cbnz %w[loop], 1b", \ /* LSE atomics */ \ -#op_lse "\t%" #w "[val], %" #w "[ret], %[ptr]\n" \ +#op_lse #sfx "\t%" #w "[val], %" #w "[ret], %[ptr]\n" \ #op_llsc "\t%" #w "[ret], %" #w "[ret], %" #w "[val]\n" \ __nops(2)) \ : [loop] "=&r" (loop), [ret] "=&r" (ret), \
@@ -179,13 +179,13 @@ PERCPU_RET_OP(add, add, ldadd) _pcp_protect_return(__percpu_read_64, pcp)#define this_cpu_write_1 (pcp, val) \ - _pcp_protect(__percpu_write_8, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_8, pcp, (unsigned long)(val))#define this_cpu_write_2 (pcp, val) \ - _pcp_protect(__percpu_write_16, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_16, pcp, (unsigned long)(val))#define this_cpu_write_4 (pcp, val) \ - _pcp_protect(__percpu_write_32, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_32, pcp, (unsigned long)(val))#define this_cpu_write_8 (pcp, val) \ - _pcp_protect(__percpu_write_64, pcp, (unsigned long)val) + _pcp_protect(__percpu_write_64, pcp, (unsigned long)(val))#define this_cpu_add_1 (pcp, val) \ _pcp_protect(__percpu_add_case_8, pcp, val)
@@ -206,13 +206,13 @@ PERCPU_RET_OP(add, add, ldadd) _pcp_protect_return(__percpu_add_return_case_64, pcp, val)#define this_cpu_and_1 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_8, pcp, ~val) + _pcp_protect(__percpu_andnot_case_8, pcp, ~(u8)(val))#define this_cpu_and_2 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_16, pcp, ~val) + _pcp_protect(__percpu_andnot_case_16, pcp, ~(u16)(val))#define this_cpu_and_4 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_32, pcp, ~val) + _pcp_protect(__percpu_andnot_case_32, pcp, ~(u32)(val))#define this_cpu_and_8 (pcp, val) \ - _pcp_protect(__percpu_andnot_case_64, pcp, ~val) + _pcp_protect(__percpu_andnot_case_64, pcp, ~(u64)(val))#define this_cpu_or_1 (pcp, val) \ _pcp_protect(__percpu_or_case_8, pcp, val)
arch/arm64/kernel/hibernate-asm.S +2 -0
@@ -89,6 +89,8 @@ alternative_insn "dc cvau, x4", "dc civac, x4", ARM64_WORKAROUND_CLEAN_CACHE isb cbz x24, 3f /* Do we need to re-initialise EL2? */ + mov x1, x24 + mov x0, #HVC_SET_VECTORS hvc #0 3: ret SYM_CODE_END(swsusp_arch_suspend_exit)
arch/arm64/kernel/hibernate.c +2 -2
@@ -423,8 +423,8 @@ int __nocfi swsusp_arch_resume(void)* Create a second copy of just the linear map, and use this when * restoring. */ - rc =trans_pgd_create_copy (&trans_info, &tmp_pg_dir,PAGE_OFFSET , -PAGE_END ); + rc =trans_pgd_create_copy (&trans_info, &tmp_pg_dir, +_PAGE_OFFSET (vabits_actual),PAGE_END );if (rc)return rc;
arch/arm64/kernel/mte.c +1 -1
@@ -476,7 +476,7 @@ static int __access_remote_tags(struct mm_struct *mm, unsigned long addr,* was never mapped with PROT_MTE. */ if (!(vma->vm_flags &VM_MTE )) { - err = -EOPNOTSUPP ; + err = -EIO ;put_page (page);break ; }
arch/mips/Kconfig +1 -3
@@ -397,10 +397,7 @@ config ECONET select BOOT_RAW select CPU_BIG_ENDIAN select DEBUG_ZBOOT if DEBUG_KERNEL - select EARLY_PRINTK_8250 select ECONET_EN751221_TIMER - select SERIAL_8250 - select SERIAL_OF_PLATFORM select SYS_SUPPORTS_BIG_ENDIAN select SYS_HAS_CPU_MIPS32_R1 select SYS_HAS_CPU_MIPS32_R2
@@ -662,6 +659,7 @@ config EYEQ select USB_UHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN select USE_OF select HOTPLUG_PARALLEL if HOTPLUG_CPU + select WEAK_REORDERING_BEYOND_LLSC help Select this to build a kernel supporting EyeQ SoC from Mobileye.
arch/mips/cavium-octeon/octeon-platform.c +2 -2
@@ -18,7 +18,7 @@#include <asm/octeon/octeon.h> #include <asm/octeon/cvmx-helper-board.h> -#ifdef CONFIG_USB +#if IS_ENABLED (CONFIG_USB )#include <linux/usb/ehci_def.h> #include <linux/usb/ehci_pdriver.h> #include <linux/usb/ohci_pdriver.h>
@@ -1080,7 +1080,7 @@ int __init octeon_prune_device_tree(void) ; } -#ifdef CONFIG_USB +#if IS_ENABLED (CONFIG_USB )/* OHCI/UHCI USB */ alias_prop =fdt_getprop (initial_boot_params, aliases,"uctl" ,NULL );
arch/powerpc/kernel/iommu.c +1 -1
@@ -1076,7 +1076,7 @@ int iommu_tce_check_ioba(unsigned long page_shift,if (ioba < offset)return -EINVAL ; -if ((ioba +1 ) > (offset + size)) +if ((ioba + npages < ioba) || (ioba - offset + npages > size))return -EINVAL ;return 0 ;
arch/powerpc/kvm/book3s_hv_nested.c +2 -0
@@ -1204,8 +1204,10 @@ static void kvmhv_emulate_tlbie_all_lpid(struct kvm_vcpu *vcpu, int ric)spin_lock (&kvm->mmu_lock);idr_for_each_entry (&kvm->arch.kvm_nested_guest_idr, gp, lpid) { + ++gp->refcnt;spin_unlock (&kvm->mmu_lock);kvmhv_emulate_tlbie_lpid (vcpu, gp, ric); +kvmhv_put_nested (gp);spin_lock (&kvm->mmu_lock); }spin_unlock (&kvm->mmu_lock);
arch/powerpc/kvm/book3s_hv_uvmem.c +4 -1
@@ -779,8 +779,11 @@ static int kvmppc_svm_page_in(struct vm_area_struct *vma,if (spage) { ret =uv_page_in (kvm->arch.lpid, pfn << page_shift, gpa,0 , page_shift); -if (ret) +if (ret) { +unlock_page (dpage); +put_page (dpage); goto out_finalize; + } } }
arch/x86/Kconfig.cpu +11 -0
@@ -204,10 +204,21 @@ config CC_HAS_MARCH_NATIVE # usage warnings that only appear wth '-march=native'. depends on CC_IS_GCC || CLANG_VERSION >= 190100 +config RUSTC_HAS_APXF + # The kernel isn't ready for in-kernel APX instructions. Without + # explicit frontend gating of APX, the backend may emit those + # instructions in native builds. + # + # Rust 1.88 added the `apxf` feature option, but versions before 1.93 + # emit an `apxf` target attribute that only LLVM 23+ can interpret. + def_bool (RUSTC_VERSION >= 108800 && RUSTC_LLVM_MAJOR_VERSION >= 23) || \ + RUSTC_VERSION >= 109300 + config X86_NATIVE_CPU bool "Build and optimize for local/native CPU" depends on X86_64 depends on CC_HAS_MARCH_NATIVE + depends on !RUST || RUSTC_HAS_APXF help Optimize for the current CPU used to compile the kernel. Use this option if you intend to build the kernel for your
arch/x86/Makefile +5 -0
@@ -161,6 +161,11 @@ else ifdef CONFIG_X86_NATIVE_CPU KBUILD_CFLAGS += -march=native + # Prevent the compiler from generating EGPR use. The kernel is + # not yet prepared for general in-kernel use. + KBUILD_CFLAGS += $(call cc-option,-mno-apx-features=egpr) + + # generate_rust_target.rs handles Rust APX gating. KBUILD_RUSTFLAGS += -Ctarget-cpu=native else KBUILD_CFLAGS += -march=x86-64 -mtune=generic
arch/x86/entry/entry_fred.c +10 -1
@@ -10,6 +10,7 @@#include <asm/desc.h> #include <asm/fred.h> #include <asm/idtentry.h> +#include <asm/processor-flags.h> #include <asm/syscall.h> #include <asm/trapnr.h> #include <asm/traps.h>
@@ -71,7 +72,15 @@ static noinstr void fred_intx(struct pt_regs *regs)#endif default : -return exc_general_protection (regs,0 ); +/* +* Reconstruct the #GP fault state that IDT delivery would produce. +* Clear the software event flag so ERETU with TF set does not trap +* before the resumed instruction. See prevent_single_step_upon_eretu(). +*/ + regs->ip -= regs->fred_ss.insnlen; + regs->flags |=X86_EFLAGS_RF ; + regs->fred_ss.swevent =0 ; +return exc_general_protection (regs, (regs->fred_ss.vector <<3 ) |2 ); } }
arch/x86/include/asm/div64.h +1 -1
@@ -111,7 +111,7 @@ static inline u64 mul_u64_add_u64_div_u64(u64 rax, u64 mul, u64 add, u64 div)if (!statically_true (!add)) asm ("addq %[add], %[lo]; adcq $0, %[hi]" : - [lo]"+r" (rax), [hi]"+r" (rdx) : [add]"irm" (add)); + [lo]"+r" (rax), [hi]"+r" (rdx) : [add]"erm" (add)); asm ("divq %[div]" :"+a" (rax),"+d" (rdx) : [div]"rm" (div));
arch/x86/include/asm/text-patching.h +2 -2
@@ -164,9 +164,9 @@ unsigned long int3_emulate_pop(struct pt_regs *regs) }static __always_inline -void int3_emulate_call(struct pt_regs *regs, unsigned long func) +void int3_emulate_call(struct pt_regs *regs, unsigned long ip, unsigned long func) { -int3_emulate_push (regs, regs->ip -INT3_INSN_SIZE +CALL_INSN_SIZE ); +int3_emulate_push (regs, ip);int3_emulate_jmp (regs, func); }
arch/x86/kernel/alternative.c +4 -2
@@ -2319,6 +2319,7 @@ int3_exception_notify(struct notifier_block *self, unsigned long val, void *dataunsigned long selftest = (unsigned long )&int3_selftest_asm;struct die_args *args = data;struct pt_regs *regs = args->regs; +unsigned long ip;OPTIMIZER_HIDE_VAR (selftest);
@@ -2331,7 +2332,8 @@ int3_exception_notify(struct notifier_block *self, unsigned long val, void *dataif (regs->ip -INT3_INSN_SIZE != selftest)return NOTIFY_DONE ; -int3_emulate_call (regs, (unsigned long )&int3_selftest_callee); + ip = regs->ip -INT3_INSN_SIZE +CALL_INSN_SIZE ; +int3_emulate_call (regs, ip, (unsigned long )&int3_selftest_callee);return NOTIFY_STOP ; }
@@ -2929,7 +2931,7 @@ noinstr int smp_text_poke_int3_handler(struct pt_regs *regs)break ;case CALL_INSN_OPCODE : -int3_emulate_call (regs, (long )ip + tpl->disp); +int3_emulate_call (regs, (long )ip, (long )ip + tpl->disp);break ;case JMP32_INSN_OPCODE :
arch/x86/kernel/cpu/microcode/intel.c +26 -0
@@ -345,6 +345,26 @@ static void save_microcode_patch(struct microcode_intel *patch)pr_err ("Unable to allocate microcode memory size: %u\n" , size); } +static bool revision_is_safe (struct cpu_signature *sig,u32 rev) +{ +u32 vfm =IFM (x86_family (sig->sig),x86_model (sig->sig)); + +/* +* Erratum GNR98 can cause #MCs if "jumping over" revision 0x1000405. +* Avoid the jumps. +*/ +if (vfm ==INTEL_GRANITERAPIDS_X && +x86_stepping (sig->sig) ==1 && + sig->pf &0x95 && + sig->rev <0x1000405 && + rev >0x1000405 ) { +pr_err_once ("Erratum GNR98: skipping revision 0x%x.\n" , rev); +return false; + } + +return true; +} +/* Scan blob for microcode matching the boot CPUs family, model, stepping */ static __init struct microcode_intel *scan_microcode(void *data, size_t size, struct ucode_cpu_info *uci,
@@ -366,6 +386,9 @@ static __init struct microcode_intel *scan_microcode(void *data, size_t size,if (!intel_find_matching_signature (data, &uci->cpu_sig))continue ; +if (!revision_is_safe (&uci->cpu_sig, mc_header->rev)) +continue ; +/* * For saving the early microcode, find the matching revision which * was loaded on the BSP.
@@ -914,6 +937,9 @@ static enum ucode_state parse_microcode_blobs(int cpu, struct iov_iter *iter)if (!intel_find_matching_signature (mc, &uci->cpu_sig))continue ; +if (!revision_is_safe (&uci->cpu_sig, mc_header.rev)) +continue ; + is_safe =ucode_validate_minrev (&mc_header);if (force_minrev && !is_safe)continue ;
arch/x86/kernel/kprobes/core.c +2 -3
@@ -510,10 +510,9 @@ NOKPROBE_SYMBOL(kprobe_emulate_ret);static void kprobe_emulate_call (struct kprobe *p,struct pt_regs *regs) { -unsigned long func = regs->ip -INT3_INSN_SIZE + p->ainsn.size; +unsigned long ip = regs->ip -INT3_INSN_SIZE + p->ainsn.size; - func += p->ainsn.rel32; -int3_emulate_call (regs, func); +int3_emulate_call (regs, ip, ip + p->ainsn.rel32); }NOKPROBE_SYMBOL (kprobe_emulate_call);
drivers/ata/libahci.c +14 -1
@@ -744,15 +744,28 @@ void ahci_start_fis_rx(struct ata_port *ap)struct ahci_port_priv *pp = ap->private_data;u32 tmp; -/* set FIS registers */ +/* +* On HBAs that only support 32-bit addressing PxCLBU is read only '0'. +* When applying the AHCI_HFLAG_32BIT_ONLY quirk, PxCLBU is RW, and the +* reset value is Implementation Specific, so we need to clear it to 0. +*/ if (hpriv->cap &HOST_CAP_64 )writel ((pp->cmd_slot_dma >>16 ) >>16 , port_mmio +PORT_LST_ADDR_HI ); +else if (hpriv->flags &AHCI_HFLAG_32BIT_ONLY ) +writel (0 , port_mmio +PORT_LST_ADDR_HI );writel (pp->cmd_slot_dma &0xffffffff , port_mmio +PORT_LST_ADDR ); +/* +* On HBAs that only support 32-bit addressing PxFBU is read only '0'. +* When applying the AHCI_HFLAG_32BIT_ONLY quirk, PxFBU is RW, and the +* reset value is Implementation Specific, so we need to clear it to 0. +*/ if (hpriv->cap &HOST_CAP_64 )writel ((pp->rx_fis_dma >>16 ) >>16 , port_mmio +PORT_FIS_ADDR_HI ); +else if (hpriv->flags &AHCI_HFLAG_32BIT_ONLY ) +writel (0 , port_mmio +PORT_FIS_ADDR_HI );writel (pp->rx_fis_dma &0xffffffff , port_mmio +PORT_FIS_ADDR );/* enable FIS reception */
drivers/ata/libahci_platform.c +1 -1
@@ -620,10 +620,10 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,of_platform_device_create (child,NULL ,NULL ); port_dev =of_find_device_by_node (child); -if (port_dev) { rc =ahci_platform_get_regulator (hpriv, port, &port_dev->dev); +put_device (&port_dev->dev);if (rc == -EPROBE_DEFER ) goto err_out; }
drivers/block/sunvdc.c +8 -1
@@ -556,6 +556,7 @@ static blk_status_t vdc_queue_rq(struct blk_mq_hw_ctx *hctx,struct vdc_port *port = hctx->queue->queuedata;struct vio_dring_state *dr;unsigned long flags; +int ret; dr = &port->vio.drings[VIO_DRIVER_TX_RING ];
@@ -577,7 +578,13 @@ static blk_status_t vdc_queue_rq(struct blk_mq_hw_ctx *hctx,return BLK_STS_DEV_RESOURCE ; } -if (__send_request (bd->rq) <0 ) { + ret =__send_request (bd->rq); +if (ret == -EAGAIN ) { +spin_unlock_irqrestore (&port->vio.lock, flags); +/* already spun for 10msec, defer 10msec and retry */ +blk_mq_delay_kick_requeue_list (hctx->queue,10 ); +return BLK_STS_DEV_RESOURCE ; + }else if (ret <0 ) {spin_unlock_irqrestore (&port->vio.lock, flags);return BLK_STS_IOERR ; }
drivers/bluetooth/btintel_pcie.c +7 -1
@@ -404,6 +404,12 @@ static int btintel_pcie_send_sync(struct btintel_pcie_data *data,if (tfd_index > txq->count)return -ERANGE ; +if (skb->len >BTINTEL_PCIE_BUFFER_SIZE -BTINTEL_PCIE_HCI_TYPE_LEN ) { +bt_dev_err (hdev,"TX skb too large (%u > %u)" , skb->len, +BTINTEL_PCIE_BUFFER_SIZE -BTINTEL_PCIE_HCI_TYPE_LEN ); +return -EMSGSIZE ; + } +/* Firmware raises alive interrupt on HCI_OP_RESET or * BTINTEL_HCI_OP_RESET */
@@ -502,7 +508,7 @@ static int btintel_pcie_submit_rx(struct btintel_pcie_data *data) frbd_index = data->ia.tr_hia[BTINTEL_PCIE_RXQ_NUM ]; -if (frbd_index > rxq->count) +if (frbd_index >= rxq->count)return -ERANGE ;/* Prepare for RX submit. It updates the FRBD with the address of DMA
drivers/bluetooth/btmtk.c +6 -1
@@ -721,7 +721,12 @@ static int btmtk_usb_hci_wmt_sync(struct hci_dev *hdev,case BTMTK_WMT_FUNC_CTRL :if (!skb_pull_data (data->evt_skb,sizeof (wmt_evt_funcc->status))) { - status =BTMTK_WMT_ON_UNDONE ; +/* A plain enable/disable request is acked with just +* the WMT header and no trailing status word; the +* result is carried in the header's own flag byte. +*/ + status = wmt_evt->whdr.flag ?BTMTK_WMT_ON_UNDONE : +BTMTK_WMT_ON_DONE ;break ; }
drivers/bluetooth/btmtksdio.c +20 -4
@@ -217,7 +217,14 @@ static int mtk_hci_wmt_sync(struct hci_dev *hdev, }/* Parse and handle the return WMT event */ - wmt_evt = (struct btmtk_hci_wmt_evt *)bdev->evt_skb->data; + wmt_evt =skb_pull_data (bdev->evt_skb,sizeof (*wmt_evt)); +if (!wmt_evt) { +bt_dev_err (hdev,"WMT event too short (%u bytes)" , + bdev->evt_skb->len); + err = -EINVAL ; + goto err_free_skb; + } +if (wmt_evt->whdr.op != hdr->op) {bt_dev_err (hdev,"Wrong op received %d expected %d" , wmt_evt->whdr.op, hdr->op);
@@ -233,6 +240,17 @@ static int mtk_hci_wmt_sync(struct hci_dev *hdev, status =BTMTK_WMT_PATCH_DONE ;break ;case BTMTK_WMT_FUNC_CTRL : +if (!skb_pull_data (bdev->evt_skb, +sizeof (wmt_evt_funcc->status))) { +/* A plain enable/disable request is acked with just +* the WMT header and no trailing status word; the +* result is carried in the header's own flag byte. +*/ + status = wmt_evt->whdr.flag ?BTMTK_WMT_ON_UNDONE : +BTMTK_WMT_ON_DONE ; +break ; + } + wmt_evt_funcc = (struct btmtk_hci_wmt_evt_funcc *)wmt_evt;if (be16_to_cpu (wmt_evt_funcc->status) ==0x404 ) status =BTMTK_WMT_ON_DONE ;
@@ -1244,10 +1262,8 @@ static int btmtksdio_shutdown(struct hci_dev *hdev) wmt_params.status =NULL ; err =mtk_hci_wmt_sync (hdev, &wmt_params); -if (err <0 ) { +if (err <0 )bt_dev_err (hdev,"Failed to send wmt func ctrl (%d)" , err); -return err; - } ignore_wmt_cmd:pm_runtime_put_noidle (bdev->dev);
drivers/bluetooth/btmtkuart.c +19 -1
@@ -151,7 +151,14 @@ static int mtk_hci_wmt_sync(struct hci_dev *hdev, }/* Parse and handle the return WMT event */ - wmt_evt = (struct btmtk_hci_wmt_evt *)bdev->evt_skb->data; + wmt_evt =skb_pull_data (bdev->evt_skb,sizeof (*wmt_evt)); +if (!wmt_evt) { +bt_dev_err (hdev,"WMT event too short (%u bytes)" , + bdev->evt_skb->len); + err = -EINVAL ; + goto err_free_wc; + } +if (wmt_evt->whdr.op != hdr->op) {bt_dev_err (hdev,"Wrong op received %d expected %d" , wmt_evt->whdr.op, hdr->op);
@@ -167,6 +174,17 @@ static int mtk_hci_wmt_sync(struct hci_dev *hdev, status =BTMTK_WMT_PATCH_DONE ;break ;case BTMTK_WMT_FUNC_CTRL : +if (!skb_pull_data (bdev->evt_skb, +sizeof (wmt_evt_funcc->status))) { +/* A plain enable/disable request is acked with just +* the WMT header and no trailing status word; the +* result is carried in the header's own flag byte. +*/ + status = wmt_evt->whdr.flag ?BTMTK_WMT_ON_UNDONE : +BTMTK_WMT_ON_DONE ; +break ; + } + wmt_evt_funcc = (struct btmtk_hci_wmt_evt_funcc *)wmt_evt;if (be16_to_cpu (wmt_evt_funcc->status) ==0x404 ) status =BTMTK_WMT_ON_DONE ;
drivers/bluetooth/btusb.c +17 -0
@@ -71,6 +71,15 @@ static struct usb_driver btusb_driver;#define BTUSB_BROKEN_EXT_SCAN BIT(29)static const struct usb_device_id btusb_table[] = { +/* +* NXP IW610 (0471:0215): the composite device reports Bluetooth +* class at the whole-device level, so the generic entry below +* would also match this WiFi vendor interface. Ignore it here +* first so mwifiex-nxp can bind it instead. +*/ + {USB_DEVICE_AND_INTERFACE_INFO (0x0471 ,0x0215 ,0xff ,0xff ,0xff ), + .driver_info =BTUSB_IGNORE }, +/* Generic Bluetooth USB device */ {USB_DEVICE_INFO (0xe0 ,0x01 ,0x01 ) },
@@ -475,6 +484,14 @@ static const struct usb_device_id quirks_table[] = { { USB_DEVICE(0x1286, 0x2046), .driver_info = BTUSB_MARVELL }, { USB_DEVICE(0x1286, 0x204e), .driver_info = BTUSB_MARVELL }, +/* +* NXP IW610 BT interfaces (Marvell-lineage silicon, same quirk as +* the 0x1286 entries above). Scoped to the BT interface class, +* not just VID/PID -- see the btusb_table entry above. +*/ + { USB_DEVICE_AND_INTERFACE_INFO(0x0471, 0x0215, 0xe0, 0x01, 0x01), + .driver_info = BTUSB_MARVELL }, +/* Intel Bluetooth devices */ { USB_DEVICE(0x8087, 0x0025), .driver_info = BTUSB_INTEL_COMBINED }, { USB_DEVICE(0x8087, 0x0026), .driver_info = BTUSB_INTEL_COMBINED },
drivers/bluetooth/hci_qca.c +10 -4
@@ -2228,8 +2228,8 @@ static void qca_power_off(struct hci_uart *hu)bool sw_ctrl_state;struct qca_power *power; -/* From this point we go into power off state. But serial port is -* still open, stop queueing the IBS data and flush all the buffered +/* From this point we go into power off state. But serial port may +* still be open, stop queueing the IBS data and flush all the buffered * data in skb's. */ spin_lock_irqsave (&qca->hci_ibs_lock, flags);
@@ -2251,8 +2251,14 @@ static void qca_power_off(struct hci_uart *hu)case QCA_WCN3990 :case QCA_WCN3991 :case QCA_WCN3998 : -host_set_baudrate (hu,2400 ); -qca_send_power_pulse (hu, false); +/* Both of these write to the serial port which may have +* already been closed by hci_uart_close(), which closes +* the port if HCI_QUIRK_NON_PERSISTENT_SETUP is set. +*/ +if (test_bit (HCI_UART_PROTO_READY , &hu->flags)) { +host_set_baudrate (hu,2400 ); +qca_send_power_pulse (hu, false); + }break ;default :break ;
drivers/clk/clk-scpi.c +6 -2
@@ -85,7 +85,7 @@ static unsigned long scpi_dvfs_recalc_rate(struct clk_hw *hw,int idx = clk->scpi_ops->dvfs_get_idx (clk->id);const struct scpi_opp *opp; -if (idx <0 ) +if (idx <0 || idx >= clk->info->count)return 0 ; opp = clk->info->opps + idx;
@@ -284,10 +284,14 @@ static int scpi_clocks_probe(struct platform_device *pdev)if (match->data != &scpi_dvfs_ops)continue ;/* Add the virtual cpufreq device if it's DVFS clock provider */ +if (cpufreq_dev) +continue ; cpufreq_dev =platform_device_register_simple ("scpi-cpufreq" ,-1 ,NULL ,0 ); -if (IS_ERR (cpufreq_dev)) +if (IS_ERR (cpufreq_dev)) {pr_warn ("unable to register cpufreq device" ); + cpufreq_dev =NULL ; + } }return 0 ; }
drivers/dma-buf/dma-buf-mapping.c +21 -10
@@ -5,16 +5,18 @@*/ #include <linux/dma-buf-mapping.h> #include <linux/dma-resv.h> +#include <linux/overflow.h> +#include <linux/align.h> + +#define MAX_SG_ENT_SZ ALIGN_DOWN(UINT_MAX, PAGE_SIZE)static struct scatterlist *fill_sg_entry (struct scatterlist *sgl,size_t length,dma_addr_t addr) { -unsigned int len, nents; -int i; +size_t len; - nents =DIV_ROUND_UP (length,UINT_MAX ); -for (i =0 ; i < nents; i++) { - len =min_t (size_t, length,UINT_MAX ); +while (length) { + len =min (length,MAX_SG_ENT_SZ ); length -= len;/* * DMABUF abuses scatterlist to create a scatterlist
@@ -24,8 +26,10 @@ static struct scatterlist *fill_sg_entry(struct scatterlist *sgl, size_t length,* does not require the CPU list for mapping or unmapping. */ sg_set_page (sgl,NULL ,0 ,0 ); -sg_dma_address (sgl) = addr + (dma_addr_t )i *UINT_MAX ; +sg_dma_address (sgl) = addr;sg_dma_len (sgl) = len; + addr += len; +/* Unconditionally advance. On last segment, this becomes NULL */ sgl =sg_next (sgl); }
@@ -40,15 +44,19 @@ static unsigned int calc_sg_nents(struct dma_iova_state *state,size_t i;if (!state || !dma_use_iova (state)) { -for (i =0 ; i < nr_ranges; i++) - nents +=DIV_ROUND_UP (phys_vec[i].len,UINT_MAX ); +for (i =0 ; i < nr_ranges; i++) { +unsigned int added =DIV_ROUND_UP (phys_vec[i].len,MAX_SG_ENT_SZ ); + +if (check_add_overflow (nents, added, &nents)) +return 0 ; + } }else {/* * In IOVA case, there is only one SG entry which spans * for whole IOVA address space, but we need to make sure * that it fits sg->length, maybe we need more. */ - nents =DIV_ROUND_UP (size,UINT_MAX ); + nents =DIV_ROUND_UP (size,MAX_SG_ENT_SZ ); }return nents;
@@ -95,9 +103,10 @@ struct sg_table *dma_buf_phys_vec_to_sgt(struct dma_buf_attachment *attach, size_t nr_ranges, size_t size, enum dma_data_direction dir) { - unsigned int nents, mapped_len = 0; struct dma_buf_dma *dma;struct scatterlist *sgl; +size_t mapped_len =0 ; +unsigned int nents;dma_addr_t addr;size_t i;int ret;
@@ -133,6 +142,8 @@ struct sg_table *dma_buf_phys_vec_to_sgt(struct dma_buf_attachment *attach, } nents =calc_sg_nents (dma->state, phys_vec, nr_ranges, size); + +/* sg_alloc_table will cleanly fail and return -EINVAL if nents == 0 */ ret =sg_alloc_table (&dma->sgt, nents,GFP_KERNEL | __GFP_ZERO);if (ret) goto err_free_state;
drivers/dma-buf/dma-fence.c +12 -2
@@ -1168,7 +1168,12 @@ const char __rcu *dma_fence_driver_name(struct dma_fence *fence)/* RCU protection is required for safe access to returned string */ ops =rcu_dereference (fence->ops); -if (ops) + +/* +* Make load ordering irrelevant by checking both signaled state and ops +* pointer and ops pointer is only set to NULL on newer implementations. +*/ +if (!dma_fence_test_signaled_flag (fence) && ops)return (const char __rcu *)ops->get_driver_name (fence);else return (const char __rcu *)"detached-driver" ;
@@ -1201,7 +1206,12 @@ const char __rcu *dma_fence_timeline_name(struct dma_fence *fence)/* RCU protection is required for safe access to returned string */ ops =rcu_dereference (fence->ops); -if (ops) + +/* +* Make load ordering irrelevant by checking both signaled state and ops +* pointer and ops pointer is only set to NULL on newer implementations. +*/ +if (!dma_fence_test_signaled_flag (fence) && ops)return (const char __rcu *)ops->get_timeline_name (fence);else return (const char __rcu *)"signaled-timeline" ;
drivers/dma/dmaengine.c +8 -2
@@ -428,6 +428,7 @@ static void dma_device_release(struct kref *ref)list_del_rcu (&device->global_node);dma_channel_rebalance (); +synchronize_rcu ();if (device->device_release) device->device_release (device);
@@ -495,10 +496,13 @@ static int dma_chan_get(struct dma_chan *chan)*/ static void dma_chan_put (struct dma_chan *chan) { +struct module *owner; +/* This channel is not in use, bail out */ if (!chan->client_count)return ; + owner =dma_chan_to_owner (chan); chan->client_count--;/* This channel is not in use anymore, free it */
@@ -515,8 +519,10 @@ static void dma_chan_put(struct dma_chan *chan) chan->route_data =NULL ; } -dma_device_put (chan->device); -module_put (dma_chan_to_owner (chan)); +/* This channel is not in use anymore, drop the device ref */ +if (!chan->client_count) +dma_device_put (chan->device); +module_put (owner); }enum dma_status dma_sync_wait (struct dma_chan *chan,dma_cookie_t cookie)
drivers/dma/mmp_pdma.c +2 -3
@@ -52,7 +52,6 @@#define DCSR_EORINTR BIT(9)/* The end of Receive */ #define DRCMR_BASE 0x0100 -#define DRCMR_EXT_BASE_K3 0x1000#define DRCMR_EXT_BASE_DEFAULT 0x1100#define DRCMR_REQ_LIMIT 64#define DRCMR_MAPVLD BIT(7)/* Map Valid (read / write) */
@@ -713,7 +712,7 @@ mmp_pdma_prep_slave_sg(struct dma_chan *dchan, struct scatterlist *sgl,for_each_sg (sgl, sg, sg_len, i) { addr =sg_dma_address (sg); - avail =sg_dma_len (sgl); + avail =sg_dma_len (sg); do { len = min_t(size_t, avail, PDMA_MAX_DESC_BYTES);
@@ -1219,7 +1218,7 @@ static const struct mmp_pdma_ops spacemit_k3_pdma_ops = { .get_desc_dst_addr = get_desc_dst_addr_64, .run_bits = (DCSR_RUN | DCSR_LPAEEN | DCSR_EORIRQEN | DCSR_EORSTOPEN), .dma_width = 64, - .drcmr_ext_base = DRCMR_EXT_BASE_K3, + .drcmr_ext_base = DRCMR_EXT_BASE_DEFAULT, };static const struct of_device_id mmp_pdma_dt_ids[] = {
drivers/dma/pxa_dma.c +2 -1
@@ -744,6 +744,7 @@ pxad_alloc_desc(struct pxad_chan *chan, unsigned int nb_hw_desc) sw_desc =kzalloc_flex (*sw_desc, hw_desc, nb_hw_desc,GFP_NOWAIT );if (!sw_desc)return NULL ; + sw_desc->nb_desc = nb_hw_desc; sw_desc->desc_pool = chan->desc_pool;for (i =0 ; i < nb_hw_desc; i++) {
@@ -752,10 +753,10 @@ pxad_alloc_desc(struct pxad_chan *chan, unsigned int nb_hw_desc)dev_err (&chan->vc.chan.dev->device,"%s(): Couldn't allocate the %dth hw_desc from dma_pool %p\n" , __func__, i, sw_desc->desc_pool); + sw_desc->nb_desc = i; goto err; } - sw_desc->nb_desc++; sw_desc->hw_desc[i] = desc;if (i ==0 )
drivers/dma/sprd-dma.c +1 -2
@@ -1212,7 +1212,7 @@ static int sprd_dma_probe(struct platform_device *pdev) ret =pm_runtime_get_sync (&pdev->dev);if (ret <0 ) - goto err_rpm; + goto err_register; ret =dma_async_device_register (&sdev->dma_dev);if (ret <0 ) {
@@ -1234,7 +1234,6 @@ static int sprd_dma_probe(struct platform_device *pdev) err_register:pm_runtime_put_noidle (&pdev->dev);pm_runtime_disable (&pdev->dev); -err_rpm:sprd_dma_disable (sdev);return ret; }
drivers/dma/sun6i-dma.c +5 -4
@@ -354,8 +354,10 @@ static size_t sun6i_get_chan_size(struct sun6i_pchan *pchan)size_t bytes;dma_addr_t pos; - pos =readl (pchan->base +DMA_CHAN_LLI_ADDR ); - bytes =readl (pchan->base +DMA_CHAN_CUR_CNT ); +do { + pos =readl (pchan->base +DMA_CHAN_LLI_ADDR ); + bytes =readl (pchan->base +DMA_CHAN_CUR_CNT ); + }while (pos !=readl (pchan->base +DMA_CHAN_LLI_ADDR ));if (pos ==LLI_LAST_ITEM )return bytes;
@@ -979,7 +981,6 @@ static enum dma_status sun6i_dma_tx_status(struct dma_chan *chan,struct sun6i_pchan *pchan = vchan->phy;struct sun6i_dma_lli *lli;struct virt_dma_desc *vd; -struct sun6i_desc *txd;enum dma_status ret;unsigned long flags;size_t bytes =0 ;
@@ -991,9 +992,9 @@ static enum dma_status sun6i_dma_tx_status(struct dma_chan *chan,spin_lock_irqsave (&vchan->vc.lock, flags); vd =vchan_find_desc (&vchan->vc, cookie); - txd =to_sun6i_desc (&vd->tx);if (vd) { +struct sun6i_desc *txd =to_sun6i_desc (&vd->tx);for (lli = txd->v_lli; lli !=NULL ; lli = lli->v_lli_next) bytes += lli->len; }else if (!pchan || !pchan->desc) {
drivers/dma/ti/k3-udma-glue.c +3 -2
@@ -1243,8 +1243,9 @@ void k3_udma_glue_release_rx_chn(struct k3_udma_glue_rx_channel *rx_chn) rx_chn->psil_paired = false; } -for (i =0 ; i < rx_chn->flow_num; i++) -k3_udma_glue_release_rx_flow (rx_chn, i); +if (rx_chn->flows) +for (i =0 ; i < rx_chn->flow_num; i++) +k3_udma_glue_release_rx_flow (rx_chn, i);if (xudma_rflow_is_gp (rx_chn->common.udmax, rx_chn->flow_id_base)) xudma_free_gp_rflow_range(rx_chn->common.udmax,
drivers/dma/xilinx/xilinx_dma.c +18 -8
@@ -756,15 +756,25 @@ xilinx_aximcdma_alloc_tx_segment(struct xilinx_dma_chan *chan)return segment; } -static void xilinx_dma_clean_hw_desc (struct xilinx_axidma_desc_hw *hw) +static void xilinx_dma_clean_hw_desc (struct xilinx_dma_chan *chan, +struct xilinx_axidma_tx_segment *segment) { -u32 next_desc = hw->next_desc; -u32 next_desc_msb = hw->next_desc_msb; +dma_addr_t next; +u32 i; -memset (hw,0 ,sizeof (struct xilinx_axidma_desc_hw )); +/* +* Restore the buffer descriptor's next descriptor pointer to the value +* set up in xilinx_dma_alloc_chan_resources(). Otherwise using the DMA +* in cyclic mode leaves the next descriptor pointer altered and +* prevents subsequent non-cyclic transfers. +*/ + i = segment - chan->seg_v; + next = chan->seg_p + +sizeof (*chan->seg_v) * ((i +1 ) %XILINX_DMA_NUM_DESCS ); - hw->next_desc = next_desc; - hw->next_desc_msb = next_desc_msb; +memset (&segment->hw,0 ,sizeof (segment->hw)); + segment->hw.next_desc =lower_32_bits (next); + segment->hw.next_desc_msb =upper_32_bits (next); }static void xilinx_mcdma_clean_hw_desc (struct xilinx_aximcdma_desc_hw *hw)
@@ -786,7 +796,7 @@ static void xilinx_mcdma_clean_hw_desc(struct xilinx_aximcdma_desc_hw *hw)static void xilinx_dma_free_tx_segment (struct xilinx_dma_chan *chan,struct xilinx_axidma_tx_segment *segment) { -xilinx_dma_clean_hw_desc (&segment->hw); +xilinx_dma_clean_hw_desc (chan, segment);list_add_tail (&segment->node, &chan->free_seg_list); }
@@ -920,9 +930,9 @@ static void xilinx_dma_free_descriptors(struct xilinx_dma_chan *chan)spin_lock_irqsave (&chan->lock, flags); -xilinx_dma_free_desc_list (chan, &chan->pending_list);xilinx_dma_free_desc_list (chan, &chan->done_list);xilinx_dma_free_desc_list (chan, &chan->active_list); +xilinx_dma_free_desc_list (chan, &chan->pending_list);spin_unlock_irqrestore (&chan->lock, flags); }
drivers/firmware/arm_scpi.c +2 -2
@@ -631,8 +631,8 @@ static struct scpi_dvfs_info *scpi_dvfs_get_info(u8 domain)if (ret)return ERR_PTR (ret); -if (!buf.opp_count) -return ERR_PTR (-ENOENT ); +if (!buf.opp_count || buf.opp_count >MAX_DVFS_OPPS ) +return ERR_PTR (-EINVAL ); info =kmalloc_obj (*info);if (!info)
drivers/gpio/gpio-virtuser.c +2 -1
@@ -692,7 +692,8 @@ static int gpio_virtuser_interrupts_set(void *data, u64 val)atomic_set (&ld->irq, irq); }else { irq =atomic_xchg (&ld->irq,0 ); -free_irq (irq, ld); +if (irq) +free_irq (irq, ld); }return 0 ;
drivers/gpio/gpiolib-of.c +3 -3
@@ -788,13 +788,13 @@ static int of_gpio_notify(struct notifier_block *nb, unsigned long action,if (!of_property_read_bool (rd->dn,"gpio-hog" ))return NOTIFY_DONE ;/* not for us */ -if (of_node_test_and_set_flag (rd->dn,OF_POPULATED )) -return NOTIFY_DONE ; - gdev =of_find_gpio_device_by_node (rd->dn->parent);if (!gdev)return NOTIFY_DONE ;/* not for us */ +if (of_node_test_and_set_flag (rd->dn,OF_POPULATED )) +return NOTIFY_DONE ; + ret =gpiochip_add_hog (gpio_device_get_chip (gdev),of_fwnode_handle (rd->dn));if (ret <0 ) { pr_err("%s: failed to add hogs for %pOF\n", __func__,
drivers/gpio/gpiolib-shared.c +6 -3
@@ -261,10 +261,13 @@ static int gpio_shared_of_traverse(struct device_node *curr) con_id[con_id_len - suffix_len] ='\0' ; } - ref =gpio_shared_make_ref (fwnode_handle_get (of_fwnode_handle (curr)), - con_id, args.args[1 ]); -if (!ref) +struct fwnode_handle *curr_fwnode = +fwnode_handle_get (of_fwnode_handle (curr)); + ref =gpio_shared_make_ref (curr_fwnode, con_id, args.args[1 ]); +if (!ref) { +fwnode_handle_put (curr_fwnode);return -ENOMEM ; + }if (!list_empty (&entry->refs)) pr_debug("GPIO %u at %s is shared by multiple firmware nodes\n",
drivers/gpu/drm/amd/amdgpu/amdgpu.h +3 -0
@@ -822,6 +822,9 @@ enum amdgpu_enforce_isolation_mode {struct amdgpu_device {struct device *dev;struct pci_dev *pdev; +/* The two ends of the physical PCIe link outside the device. */ +struct pci_dev *link_dev; +struct pci_dev *link_partner;struct drm_device ddev;#ifdef CONFIG_DRM_AMD_ACP
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c +1 -1
@@ -329,7 +329,7 @@ void amdgpu_amdkfd_clear_kfd_mapping(struct amdgpu_device *adev)struct kfd_dev *kfd = adev->kfd.dev;unsigned int i; -if (!kfd) +if (!kfd || !kfd->init_complete)return ;for (i =0 ; i < kfd->num_nodes; i++) {
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +105 -40
226 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c +42 -1
69 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/mxgpu_ai.c +5 -2
@@ -185,8 +185,11 @@ static int xgpu_ai_send_access_requests(struct amdgpu_device *adev, }else if (req ==IDH_REQ_GPU_INIT_DATA ){/* Dummy REQ_GPU_INIT_DATA handling */ r =xgpu_ai_poll_msg (adev,IDH_REQ_GPU_INIT_DATA_READY ); -/* version set to 0 since dummy */ - adev->virt.req_init_data_ver =0 ; +/* +* AI uses the GPU_CRIT_REGION_V1 layout in practice, so fix the +* dummy version value to match the actual init-data format. +*/ + adev->virt.req_init_data_ver =GPU_CRIT_REGION_V1 ; }return 0 ;
drivers/gpu/drm/amd/amdgpu/nbio_v7_9.c +1 -1
@@ -535,7 +535,7 @@ static void nbio_v7_9_handle_ras_controller_intr_no_bifring(struct amdgpu_device RAS_CNTLR_INTERRUPT_CLEAR, 1);WREG32_SOC15 (NBIO ,0 , regBIF_BX0_BIF_DOORBELL_INT_CNTL, bif_doorbell_intr_cntl); -if (!ras->disable_ras_err_cnt_harvest) { +if (ras && !ras->disable_ras_err_cnt_harvest && obj) {/* * clear error status after ras_controller_intr * according to hw team and count ue number
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +5 -2
@@ -797,10 +797,12 @@ static int create_queue_nocpsch(struct device_queue_manager *dqm, mqd_mgr = dqm->mqd_mgrs[get_mqd_type_from_queue_type ( q->properties.type)];if (qd && !mqd_mgr->restore_mqd) { -pr_debug ("restore_mqd not implemented for this GPU\n" ); +pr_debug ("restore_mqd not implemented for queue type %d\n" , + q->properties.type); retval = -EOPNOTSUPP ; goto deallocate_vmid; } +if (q->properties.type ==KFD_QUEUE_TYPE_COMPUTE ) { retval =allocate_hqd (dqm, q);if (retval)
@@ -2168,7 +2170,8 @@ static int create_queue_cpsch(struct device_queue_manager *dqm, struct queue *q, mqd_mgr = dqm->mqd_mgrs[get_mqd_type_from_queue_type ( q->properties.type)];if (qd && !mqd_mgr->restore_mqd) { -pr_debug ("restore_mqd not implemented for this GPU\n" ); +pr_debug ("restore_mqd not implemented for queue type %d\n" , + q->properties.type); retval = -EOPNOTSUPP ; goto out_deallocate_doorbell; }
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c +1 -1
@@ -204,7 +204,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,* is safe, giving a maximum field value of 0xA. */ m->cp_hqd_eop_control = q->eop_ring_buffer_size ?min (0xA , -ffs (q->eop_ring_buffer_size /sizeof (unsigned int )) -1 -1 ) :0 ; +ffs (q->eop_ring_buffer_size /sizeof (unsigned int ) /4 )) :0 ; m->cp_hqd_eop_base_addr_lo =lower_32_bits (q->eop_ring_buffer_address >>8 ); m->cp_hqd_eop_base_addr_hi =
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c +1 -1
@@ -242,7 +242,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,* is safe, giving a maximum field value of 0xA. */ m->cp_hqd_eop_control = q->eop_ring_buffer_size ?min (0xA , -ffs (q->eop_ring_buffer_size /sizeof (unsigned int )) -1 -1 ) :0 ; +ffs (q->eop_ring_buffer_size /sizeof (unsigned int ) /4 )) :0 ; m->cp_hqd_eop_base_addr_lo =lower_32_bits (q->eop_ring_buffer_address >>8 ); m->cp_hqd_eop_base_addr_hi =
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12.c +60 -1
85 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v12_1.c +69 -1
94 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v9.c +5 -1
@@ -299,6 +299,10 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,1 <<CP_HQD_IB_CONTROL__IB_EXE_DISABLE__SHIFT ;/* +* The lowest 6 bits of eop_control store the EOP ring size. If +* their value is X, the ring size is 2^(X + 1) dwords, or +* 2^(X + 3) bytes. +* * HW does not clamp this field correctly. Maximum EOP queue size * is constrained by per-SE EOP done signal count, which is 8-bit. * Limit is 0xFF EOP entries (= 0x7F8 dwords). CP will not submit
@@ -310,7 +314,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd,* */ m->cp_hqd_eop_control = q->eop_ring_buffer_size ? -min (0xA ,order_base_2 (q->eop_ring_buffer_size /4 ) -1 ) :0 ; +min (0xA ,order_base_2 (q->eop_ring_buffer_size /8 )) :0 ; m->cp_hqd_eop_base_addr_lo =lower_32_bits (q->eop_ring_buffer_address >>8 );
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_vi.c +4 -1
@@ -208,6 +208,9 @@ static void __update_mqd(struct mqd_manager *mm, void *mqd, mtype <<CP_HQD_IB_CONTROL__MTYPE__SHIFT ;/* +* The lowest 6 bits of eop_control store the EOP ring size. If +* their value is X, the ring size is 2^(X + 1) dwords, or +* 2^(X + 3) bytes. * HW does not clamp this field correctly. Maximum EOP queue size * is constrained by per-SE EOP done signal count, which is 8-bit. * Limit is 0xFF EOP entries (= 0x7F8 dwords). CP will not submit
@@ -215,7 +218,7 @@ static void __update_mqd(struct mqd_manager *mm, void *mqd,* is safe, giving a maximum field value of 0xA. */ m->cp_hqd_eop_control |= q->eop_ring_buffer_size ?min (0xA , -order_base_2 (q->eop_ring_buffer_size /4 ) -1 ) :0 ; +order_base_2 (q->eop_ring_buffer_size /8 )) :0 ; m->cp_hqd_eop_base_addr_lo =lower_32_bits (q->eop_ring_buffer_address >>8 ); m->cp_hqd_eop_base_addr_hi =
drivers/gpu/drm/amd/display/dc/hwss/dcn30/dcn30_hwseq.c +7 -6
@@ -1058,10 +1058,12 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable)*/ unsigned int denom = refresh_hz *6528 ;unsigned int stutter_period = dc->current_state->perf_params.stutter_period_us; +uint64_t num = (1000000LL +2 * stutter_period * refresh_hz) * + (100LL + dc->debug.mall_additional_timer_percent); +uint64_t tmr_ticks; - tmr_delay = (uint32_t )(div_u64 (((1000000LL +2 * stutter_period * refresh_hz) * - (100LL + dc->debug.mall_additional_timer_percent) + denom -1 ), - denom) -64LL ); + tmr_ticks =div_u64 (num + denom -1 , denom); + tmr_delay = tmr_ticks >64 ? (uint32_t )(tmr_ticks -64 ) :0 ;/* In some cases the stutter period is really big (tiny modes) in these * cases MALL cant be enabled, So skip these cases to avoid a ASSERT()
@@ -1083,9 +1085,8 @@ bool dcn30_apply_idle_power_optimizations(struct dc *dc, bool enable) } denom *=2 ; - tmr_delay = (uint32_t )(div_u64 (((1000000LL +2 * stutter_period * refresh_hz) * - (100LL + dc->debug.mall_additional_timer_percent) + denom -1 ), - denom) -64LL ); + tmr_ticks =div_u64 (num + denom -1 , denom); + tmr_delay = tmr_ticks >64 ? (uint32_t )(tmr_ticks -64 ) :0 ; }/* Copy HW cursor */
drivers/gpu/drm/drm_atomic_uapi.c +10 -3
@@ -1461,10 +1461,12 @@ static int prepare_signaling(struct drm_device *dev,struct dma_fence *fence;struct drm_out_fence_state *f; + ret = -ENOMEM ; + f =krealloc (*fence_state,sizeof (**fence_state) * (*num_fences +1 ),GFP_KERNEL );if (!f) -return -ENOMEM ; + goto err_free_event;memset (&f[*num_fences],0 ,sizeof (*f));
@@ -1473,12 +1475,12 @@ static int prepare_signaling(struct drm_device *dev, fence =drm_crtc_create_fence (crtc);if (!fence) -return -ENOMEM ; + goto err_free_event; ret =setup_out_fence (&f[(*num_fences)++], fence);if (ret) {dma_fence_put (fence); -return ret; + goto err_free_event; } crtc_state->event->base.fence = fence;
@@ -1534,6 +1536,11 @@ static int prepare_signaling(struct drm_device *dev, }return 0 ; + +err_free_event: +drm_event_cancel_free (dev, &crtc_state->event->base); + crtc_state->event =NULL ; +return ret; } static void complete_signaling(struct drm_device *dev,
drivers/gpu/drm/gud/gud_pipe.c +5 -2
@@ -482,6 +482,9 @@ int gud_plane_atomic_check(struct drm_plane *plane,if (!new_plane_state->visible)return 0 ; +if (gdrm->flags &GUD_DISPLAY_FLAG_FULL_UPDATE ) + new_plane_state->ignore_damage_clips = true; +if (old_plane_state->rotation != new_plane_state->rotation) crtc_state->mode_changed = true;
@@ -562,8 +565,8 @@ int gud_plane_atomic_check(struct drm_plane *plane, goto out; } - req->properties[num_properties + i].prop =cpu_to_le16 (prop); - req->properties[num_properties + i].val =cpu_to_le64 (val); + req->properties[num_properties].prop =cpu_to_le16 (prop); + req->properties[num_properties].val =cpu_to_le64 (val); num_properties++; }
drivers/gpu/drm/i915/display/intel_cursor.c +5 -10
@@ -530,18 +530,13 @@ static int i9xx_check_cursor(struct intel_crtc_state *crtc_state, }static void i9xx_cursor_disable_sel_fetch_arm (struct intel_dsb *dsb, -struct intel_plane *plane) +struct intel_plane *plane, +const struct intel_crtc_state *crtc_state) {struct intel_display *display =to_intel_display (plane);enum pipe pipe = plane->pipe; -/* -* Clear this whenever the hardware has selective fetch, not just when -* the current state uses it. The cursor may have been enabled with -* selective fetch earlier and had its enable bit orphaned when the -* feature was switched off. -*/ -if (!HAS_PSR2_SEL_FETCH (display)) +if (!crtc_state->enable_psr2_sel_fetch)return ;intel_de_write_dsb (display, dsb,SEL_FETCH_CUR_CTL (pipe),0 );
@@ -591,7 +586,7 @@ static void i9xx_cursor_update_sel_fetch_arm(struct intel_dsb *dsb,if (crtc_state->enable_psr2_su_region_et)wa_16021440873 (dsb, plane, crtc_state, plane_state);else -i9xx_cursor_disable_sel_fetch_arm (dsb, plane); +i9xx_cursor_disable_sel_fetch_arm (dsb, plane, crtc_state); } }
@@ -700,7 +695,7 @@ static void i9xx_cursor_update_arm(struct intel_dsb *dsb,if (plane_state)i9xx_cursor_update_sel_fetch_arm (dsb, plane, crtc_state, plane_state);else -i9xx_cursor_disable_sel_fetch_arm (dsb, plane); +i9xx_cursor_disable_sel_fetch_arm (dsb, plane, crtc_state); if (plane->cursor.base != base || plane->cursor.size != fbc_ctl ||
drivers/gpu/drm/i915/display/skl_universal_plane.c +5 -10
@@ -879,18 +879,13 @@ skl_plane_disable_arm(struct intel_dsb *dsb, }static void icl_plane_disable_sel_fetch_arm (struct intel_dsb *dsb, -struct intel_plane *plane) +struct intel_plane *plane, +const struct intel_crtc_state *crtc_state) {struct intel_display *display =to_intel_display (plane);enum pipe pipe = plane->pipe; -/* -* Clear this whenever the hardware has selective fetch, not just when -* the current state uses it. The plane may have been enabled with -* selective fetch earlier and had its enable bit orphaned when the -* feature was switched off. -*/ -if (!HAS_PSR2_SEL_FETCH (display)) +if (!crtc_state->enable_psr2_sel_fetch)return ;intel_de_write_dsb (display, dsb,SEL_FETCH_PLANE_CTL (pipe, plane->id),0 );
@@ -926,7 +921,7 @@ icl_plane_disable_arm(struct intel_dsb *dsb,skl_write_plane_wm (dsb, plane, crtc_state); -icl_plane_disable_sel_fetch_arm (dsb, plane); +icl_plane_disable_sel_fetch_arm (dsb, plane, crtc_state);if (plane_has_normalizer (plane)) intel_de_write_dsb(display, dsb,
@@ -1646,7 +1641,7 @@ static void icl_plane_update_sel_fetch_arm(struct intel_dsb *dsb,intel_de_write_dsb (display, dsb,SEL_FETCH_PLANE_CTL (pipe, plane->id),SEL_FETCH_PLANE_CTL_ENABLE ); else -icl_plane_disable_sel_fetch_arm (dsb ,plane ); +icl_plane_disable_sel_fetch_arm (dsb ,plane ,crtc_state ); } static void
drivers/gpu/drm/msm/adreno/adreno_device.c +1 -1
@@ -25,7 +25,7 @@ MODULE_PARM_DESC(disable_acd, "Forcefully disable GPU ACD");module_param_unsafe (disable_acd, bool,0400 );static bool skip_gpu; -MODULE_PARM_DESC (no_gpu,"Disable GPU driver register (0=enable GPU driver register (default), 1=skip GPU driver register" ); +MODULE_PARM_DESC (skip_gpu,"Disable GPU driver register (0=enable GPU driver register (default), 1=skip GPU driver register" );module_param (skip_gpu, bool,0400 );extern const struct adreno_gpulist a2xx_gpulist;
drivers/gpu/drm/msm/adreno/adreno_gpu.c +2 -0
@@ -1252,6 +1252,8 @@ void adreno_gpu_cleanup(struct adreno_gpu *adreno_gpu)for (i =0 ; i <ARRAY_SIZE (adreno_gpu->info->fw); i++)release_firmware (adreno_gpu->fw[i]); +pm_runtime_dont_use_autosuspend (&gpu->pdev->dev); +if (priv &&pm_runtime_enabled (&priv->gpu_pdev->dev))pm_runtime_disable (&priv->gpu_pdev->dev);
drivers/gpu/drm/msm/disp/dpu1/dpu_hw_ctl.c +1 -0
@@ -118,6 +118,7 @@ static inline void dpu_hw_ctl_clear_pending_flush(struct dpu_hw_ctl *ctx) ctx->pending_intf_flush_mask =0 ; ctx->pending_wb_flush_mask =0 ; ctx->pending_cwb_flush_mask =0 ; + ctx->pending_periph_flush_mask =0 ; ctx->pending_merge_3d_flush_mask =0 ; ctx->pending_dsc_flush_mask =0 ; ctx->pending_cdm_flush_mask =0 ;
drivers/gpu/drm/msm/dp/dp_display.c +19 -2
@@ -698,6 +698,7 @@ enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge,u32 mode_rate_khz =0 , supported_rate_khz =0 , mode_bpp =0 ;struct msm_dp *dp;int mode_pclk_khz = mode->clock; +int link_pclk_khz;bool is_yuv_420; dp =to_dp_bridge (bridge)->msm_dp_display;
@@ -719,6 +720,8 @@ enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge,if (is_yuv_420 && !msm_dp_display->panel->vsc_sdp_supported)return MODE_NO_420 ; + link_pclk_khz = is_yuv_420 ? mode_pclk_khz /2 : mode_pclk_khz; +if (is_yuv_420 || msm_dp_display->wide_bus_supported) mode_pclk_khz /=2 ;
@@ -730,9 +733,9 @@ enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge, mode_bpp = default_bpp; mode_bpp =msm_dp_panel_get_mode_bpp (msm_dp_display->panel, - mode_bpp, mode_pclk_khz); + mode_bpp, link_pclk_khz); - mode_rate_khz = mode_pclk_khz * mode_bpp; + mode_rate_khz = link_pclk_khz * mode_bpp; supported_rate_khz = link_info->num_lanes * link_info->rate *8 ;if (mode_rate_khz > supported_rate_khz)
@@ -1412,6 +1415,20 @@ void msm_dp_bridge_atomic_disable(struct drm_bridge *drm_bridge, msm_dp_display = container_of(dp, struct msm_dp_display_private, msm_dp_display); +/* +* If .atomic_enable() bailed out - link training failure is the common +* case - the mainlink was never brought up and ->power_on stayed false. +* Driving the PUSH_IDLE pattern into a controller that was never +* enabled times out, and .atomic_post_disable() then drops the +* controller's runtime-PM reference without tearing the PHY back down, +* because msm_dp_display_disable() returns early on !power_on. On +* glymur (Snapdragon X2 Elite) that combination is answered by a +* TrustZone-level SOCCP/ADSP force-stop and a silent SoC reset. +* There is nothing to push idle, so leave it alone. +*/ +if (!dp->power_on) +return ; +msm_dp_ctrl_push_idle (msm_dp_display->ctrl); }
drivers/gpu/drm/msm/dsi/dsi_host.c +19 -17
@@ -129,7 +129,7 @@ struct msm_dsi_host {struct clk *dsi_pll_pixel_clk;unsigned long byte_clk_rate; -unsigned long byte_intf_clk_rate; +bool byte_intf_clk_div_2;unsigned long pixel_clk_rate;unsigned long esc_clk_rate;
@@ -381,8 +381,20 @@ int msm_dsi_runtime_resume(struct device *dev)int dsi_link_clk_set_rate_6g (struct msm_dsi_host *msm_host) { +unsigned long byte_intf_clk_rate; +long rounded_byte_clk_rate;int ret; + rounded_byte_clk_rate =clk_round_rate (msm_host->byte_clk, + msm_host->byte_clk_rate); +if (rounded_byte_clk_rate <0 ) { +pr_err ("%s: failed to round byte clock rate, %ld\n" , + __func__, rounded_byte_clk_rate); +return rounded_byte_clk_rate; + } + + msm_host->byte_clk_rate = rounded_byte_clk_rate; +DBG ("Set clk rates: pclk=%lu, byteclk=%lu" , msm_host->pixel_clk_rate, msm_host->byte_clk_rate);
@@ -400,7 +412,11 @@ int dsi_link_clk_set_rate_6g(struct msm_dsi_host *msm_host) }if (msm_host->byte_intf_clk) { - ret =clk_set_rate (msm_host->byte_intf_clk, msm_host->byte_intf_clk_rate); + byte_intf_clk_rate = msm_host->byte_clk_rate; +if (msm_host->byte_intf_clk_div_2) + byte_intf_clk_rate /=2 ; + + ret =clk_set_rate (msm_host->byte_intf_clk, byte_intf_clk_rate);if (ret) {pr_err ("%s: Failed to set rate byte intf clk, %d\n" , __func__, ret);
@@ -668,24 +684,12 @@ static void dsi_calc_pclk(struct msm_dsi_host *msm_host, bool is_bonded_dsi)int dsi_calc_clk_rate_6g (struct msm_dsi_host *msm_host,bool is_bonded_dsi) { -long rounded_byte_clk_rate; -if (!msm_host->mode) {pr_err ("%s: mode not set\n" , __func__);return -EINVAL ; }dsi_calc_pclk (msm_host, is_bonded_dsi); - - rounded_byte_clk_rate =clk_round_rate (msm_host->byte_clk, - msm_host->byte_clk_rate); -if (rounded_byte_clk_rate <0 ) { -pr_err ("%s: failed to round byte clock rate, %ld\n" , - __func__, rounded_byte_clk_rate); -return rounded_byte_clk_rate; - } - - msm_host->byte_clk_rate = rounded_byte_clk_rate; msm_host->esc_clk_rate =clk_get_rate (msm_host->esc_clk);return 0 ; }
@@ -2500,9 +2504,7 @@ int msm_dsi_host_power_on(struct mipi_dsi_host *host, goto unlock_ret; } - msm_host->byte_intf_clk_rate = msm_host->byte_clk_rate; -if (phy_shared_timings->byte_intf_clk_div_2) - msm_host->byte_intf_clk_rate /=2 ; + msm_host->byte_intf_clk_div_2 = phy_shared_timings->byte_intf_clk_div_2;msm_dsi_sfpb_config (msm_host, true);
drivers/gpu/drm/msm/hdmi/hdmi_phy.c +6 -2
@@ -168,13 +168,13 @@ static int msm_hdmi_phy_probe(struct platform_device *pdev) ret =msm_hdmi_phy_resource_enable (phy);if (ret) -return ret; + goto err_pm_disable; ret =msm_hdmi_phy_pll_init (pdev, phy->cfg->type);if (ret) {DRM_DEV_ERROR (dev,"couldn't init PLL\n" );msm_hdmi_phy_resource_disable (phy); -return ret; + goto err_pm_disable; }msm_hdmi_phy_resource_disable (phy);
@@ -182,6 +182,10 @@ static int msm_hdmi_phy_probe(struct platform_device *pdev)platform_set_drvdata (pdev, phy);return 0 ; + +err_pm_disable: +pm_runtime_disable (dev); +return ret; }static void msm_hdmi_phy_remove (struct platform_device *pdev)
drivers/gpu/drm/msm/msm_drv.c +1 -1
@@ -55,7 +55,7 @@ MODULE_PARM_DESC(modeset, "Use kernel modesetting [KMS] (1=on (default), 0=disabmodule_param (modeset, bool,0600 );static bool separate_gpu_kms; -MODULE_PARM_DESC (separate_gpu_drm,"Use separate DRM device for the GPU (0=single DRM device for both GPU and display (default), 1=two DRM devices)" ); +MODULE_PARM_DESC (separate_gpu_kms,"Use separate DRM device for the GPU (0=single DRM device for both GPU and display (default), 1=two DRM devices)" );module_param (separate_gpu_kms, bool,0400 );DECLARE_FAULT_ATTR (fail_gem_alloc);
drivers/gpu/drm/msm/msm_gem.h +3 -0
@@ -68,6 +68,9 @@ struct msm_gem_vm {/** @base: Inherit from drm_gpuvm. */ struct drm_gpuvm base; +/** @rcu: RCU-delayed free so an exported sched fence->sched stays valid. */ +struct rcu_head rcu; +/** * @sched: Scheduler used for asynchronous VM_BIND request. *
drivers/gpu/drm/msm/msm_gem_vma.c +1 -1
@@ -166,7 +166,7 @@ msm_gem_vm_free(struct drm_gpuvm *gpuvm)dma_fence_put (vm->last_fence);put_pid (vm->pid);kfree (vm->log); -kfree (vm); +kfree_rcu (vm, rcu); }/**
drivers/gpu/drm/msm/msm_ringbuffer.c +1 -1
@@ -140,5 +140,5 @@ void msm_ringbuffer_destroy(struct msm_ringbuffer *ring)msm_gem_kernel_put (ring->bo, ring->gpu->vm); -kfree (ring); +kfree_rcu (ring, rcu); }
drivers/gpu/drm/msm/msm_ringbuffer.h +1 -0
@@ -55,6 +55,7 @@ struct msm_ringbuffer {/* * The job scheduler for this ring. */ +struct rcu_head rcu;struct drm_gpu_scheduler sched;bool sched_initialized;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/fbsr.c +1 -1
@@ -208,7 +208,7 @@ r535_fbsr_resume(struct nvkm_gsp *gsp) }static int -r535_fbsr_suspend (struct nvkm_gsp *gsp,bool runtime) +r535_fbsr_suspend (struct nvkm_gsp *gsp) {struct nvkm_subdev *subdev = &gsp->subdev;struct nvkm_device *device = subdev->device;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +6 -2
@@ -1749,7 +1749,7 @@ r535_gsp_fini(struct nvkm_gsp *gsp, enum nvkm_suspend_state suspend) sr->sysmemAddrOfSuspendResumeData = gsp->sr.radix3.lvl0.addr; sr->sizeOfSuspendResumeData = len; - ret = rm->api->fbsr->suspend (gsp, suspend ==NVKM_RUNTIME_SUSPEND ); + ret = rm->api->fbsr->suspend (gsp);if (ret) {nvkm_gsp_mem_dtor (&gsp->sr.meta);nvkm_gsp_radix3_dtor (gsp, &gsp->sr.radix3);
@@ -1761,8 +1761,12 @@ r535_gsp_fini(struct nvkm_gsp *gsp, enum nvkm_suspend_state suspend)* TODO: Debug the GSP firmware / RPC handling to find out why * without this Turing (but none of the other architectures) * ends up resetting all channels after resume. +* Additionally, runtime suspend on other architectures quickly +* becomes unreliable without this sleep. If you're experiencing +* issues with runtime suspend, try bumping this delay up and +* sending a patch if it fixes your GPU. */ -msleep (50 ); +msleep (200 ); } ret =r535_gsp_rpc_unloading_guest_driver (gsp, suspend);
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/fbsr.c +4 -4
@@ -62,7 +62,7 @@ r570_fbsr_resume(struct nvkm_gsp *gsp) }static int -r570_fbsr_init (struct nvkm_gsp *gsp,struct sg_table *sgt,u64 size,bool runtime) +r570_fbsr_init (struct nvkm_gsp *gsp,struct sg_table *sgt,u64 size) {NV2080_CTRL_INTERNAL_FBSR_INIT_PARAMS *ctrl;struct nvkm_gsp_object memlist;
@@ -81,7 +81,7 @@ r570_fbsr_init(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size, bool runtim ctrl->hClient = gsp->internal.client.object.handle; ctrl->hSysMem = memlist.handle; ctrl->sysmemAddrOfSuspendResumeData = gsp->sr.meta.addr; - ctrl->bEnteringGcoffState = runtime ?1 :0 ; + ctrl->bEnteringGcoffState =0 ; ret =nvkm_gsp_rm_ctrl_wr (&gsp->internal.device.subdevice, ctrl);if (ret)
@@ -92,7 +92,7 @@ r570_fbsr_init(struct nvkm_gsp *gsp, struct sg_table *sgt, u64 size, bool runtim }static int -r570_fbsr_suspend (struct nvkm_gsp *gsp,bool runtime) +r570_fbsr_suspend (struct nvkm_gsp *gsp) {struct nvkm_subdev *subdev = &gsp->subdev;struct nvkm_device *device = subdev->device;
@@ -133,7 +133,7 @@ r570_fbsr_suspend(struct nvkm_gsp *gsp, bool runtime)return ret;/* Initialise FBSR on RM. */ - ret =r570_fbsr_init (gsp, &gsp->sr.fbsr, size, runtime); + ret =r570_fbsr_init (gsp, &gsp->sr.fbsr, size);if (ret) {nvkm_gsp_sg_free (device, &gsp->sr.fbsr);return ret;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c +2 -1
@@ -207,7 +207,8 @@ r570_gsp_set_rmargs(struct nvkm_gsp *gsp, bool resume) args->srInitArguments.bInPMTransition =0 ; }else { args->srInitArguments.oldLevel =NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_3 ; - args->srInitArguments.flags =0 ; + args->srInitArguments.flags = +GPU_STATE_FLAGS_PRESERVING |GPU_STATE_FLAGS_PM_TRANSITION ; args->srInitArguments.bInPMTransition =1 ; }
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/gsp.h +8 -0
@@ -523,6 +523,14 @@ typedef struct#define NV2080_CTRL_GPU_SET_POWER_STATE_GPU_LEVEL_3 (0x00000003U) +#define GPU_STATE_FLAGS_PRESERVING BIT(0) // GPU state is preserved +#define GPU_STATE_FLAGS_VGA_TRANSITION BIT(1) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_TRANSITION BIT(2) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_PM_SUSPEND BIT(3) +#define GPU_STATE_FLAGS_PM_HIBERNATE BIT(4) +#define GPU_STATE_FLAGS_GC6_TRANSITION BIT(5) // To be used with GPU_STATE_FLAGS_PRESERVING. +#define GPU_STATE_FLAGS_FAST_UNLOAD BIT(6) // Used during windows restart, skips stateDestroy steps + typedef struct { // Magic for verification by secure ucode
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h +1 -1
@@ -79,7 +79,7 @@ struct nvkm_rm_api { } *device;const struct nvkm_rm_api_fbsr { -int (*suspend)(struct nvkm_gsp *,bool runtime); +int (*suspend)(struct nvkm_gsp *);void (*resume)(struct nvkm_gsp *); } *fbsr;
drivers/gpu/drm/scheduler/sched_entity.c +7 -1
@@ -566,9 +566,10 @@ struct drm_sched_job *drm_sched_entity_pop_job(struct drm_sched_entity *entity)*/ smp_wmb (); +spin_lock (&entity->lock);spsc_queue_pop (&entity->job_queue); -drm_sched_rq_pop_entity (entity); +spin_unlock (&entity->lock);/* Jobs and entities might have different lifecycles. Since we're * removing the job from the entities queue, set the jobs entity pointer
@@ -654,6 +655,9 @@ void drm_sched_entity_push_job(struct drm_sched_job *sched_job)* Make sure to set the submit_ts first, to avoid a race. */ sched_job->submit_ts = submit_ts =ktime_get (); + +spin_lock (&entity->lock); + first =spsc_queue_push (&entity->job_queue, &sched_job->queue_node);/* first job wakes up scheduler */
@@ -664,5 +668,7 @@ void drm_sched_entity_push_job(struct drm_sched_job *sched_job)if (sched)drm_sched_wakeup (sched); } + +spin_unlock (&entity->lock); }EXPORT_SYMBOL (drm_sched_entity_push_job);
drivers/gpu/drm/scheduler/sched_rq.c +9 -11
@@ -257,19 +257,17 @@ static ktime_t drm_sched_entity_get_job_ts(struct drm_sched_entity *entity)struct drm_gpu_scheduler *drm_sched_rq_add_entity (struct drm_sched_entity *entity,ktime_t ts) { +struct drm_sched_rq *rq = entity->rq;struct drm_gpu_scheduler *sched; -struct drm_sched_rq *rq;/* Add the entity to the run queue */ -spin_lock (&entity->lock); -if (entity->stopped) { -spin_unlock (&entity->lock); +lockdep_assert_held (&entity->lock); +if (entity->stopped) {DRM_ERROR ("Trying to push to a killed entity\n" );return NULL ; } - rq = entity->rq;spin_lock (&rq->lock); sched = rq->sched;
@@ -289,7 +287,6 @@ drm_sched_rq_add_entity(struct drm_sched_entity *entity, ktime_t ts)drm_sched_rq_update_fifo_locked (entity, rq, ts);spin_unlock (&rq->lock); -spin_unlock (&entity->lock);return sched; }
@@ -343,16 +340,17 @@ drm_sched_rq_next_rr_ts(struct drm_sched_rq *rq,*/ void drm_sched_rq_pop_entity (struct drm_sched_entity *entity) { +struct drm_sched_rq *rq = entity->rq;struct drm_sched_job *next_job; -struct drm_sched_rq *rq; + +lockdep_assert_held (&entity->lock); + +spin_lock (&rq->lock);/* * Update the entity's location in the min heap according to * the timestamp of the next job, if any. */ -spin_lock (&entity->lock); - rq = entity->rq; -spin_lock (&rq->lock); next_job =drm_sched_entity_queue_peek (entity);if (next_job) {ktime_t ts;
@@ -375,8 +373,8 @@ void drm_sched_rq_pop_entity(struct drm_sched_entity *entity)drm_sched_entity_save_vruntime (entity, min_vruntime); } } +spin_unlock (&rq->lock); -spin_unlock (&entity->lock); }/**
drivers/gpu/drm/ttm/ttm_bo.c +1 -1
@@ -1178,7 +1178,7 @@ ttm_bo_swapout_cb(struct ttm_lru_walk *walk, struct ttm_buffer_object *bo)if (ttm_tt_is_populated (tt)) { ret =ttm_tt_swapout (bdev, tt, swapout_walk->gfp_flags); -if (!ret) { +if (ret >0 ) {spin_lock (&bdev->lru_lock);ttm_resource_del_bulk_move_unevictable (bo->resource, bo);ttm_resource_move_to_lru_tail (bo->resource);
drivers/gpu/drm/vc4/vc4_kms.c +1 -1
@@ -1188,7 +1188,7 @@ int vc4_kms_load(struct drm_device *dev)drm_mode_config_reset (dev); -drm_kms_helper_poll_init (dev); +drmm_kms_helper_poll_init (dev);return 0 ; }
drivers/gpu/drm/xe/xe_i2c.c +3 -0
@@ -277,8 +277,10 @@ void xe_i2c_pm_resume(struct xe_device *xe, bool d3cold)static void xe_i2c_remove (void *data) {struct xe_i2c *i2c = data; +struct xe_device *xe =tile_to_xe (i2c->mmio->tile);unsigned int i; +xe_i2c_irq_reset (xe);xe_amc_exit (i2c);for (i =0 ; i <XE_I2C_MAX_CLIENTS ; i++) {
@@ -288,6 +290,7 @@ static void xe_i2c_remove(void *data)bus_unregister_notifier (&i2c_bus_type, &i2c->bus_notifier);xe_i2c_unregister_adapter (i2c); + xe->i2c =NULL ; }/**
drivers/gpu/drm/xe/xe_mmio_gem.c +18 -15
@@ -39,10 +39,20 @@ struct xe_mmio_gem {phys_addr_t phys_addr; }; +static int xe_mmio_gem_vm_may_split (struct vm_area_struct *area,unsigned long addr) +{ +/* +* Forbid splitting. Together with VM_DONTEXPAND, this keeps the VMA +* matching the GEM object exactly. +*/ +return -EINVAL ; +} +static const struct vm_operations_struct vm_ops = { .open = drm_gem_vm_open, .close = drm_gem_vm_close, .fault = xe_mmio_gem_vm_fault, + .may_split = xe_mmio_gem_vm_may_split, };static const struct drm_gem_object_funcs xe_mmio_gem_funcs = {
@@ -128,14 +138,16 @@ static void xe_mmio_gem_free(struct drm_gem_object *base)/** * xe_mmio_gem_destroy - Destroy the GEM object that exposes an MMIO region * @gem: the GEM object to destroy +* @file: DRM file descriptor previously passed to xe_mmio_gem_create() * * This function releases resources associated with the GEM object created by * xe_mmio_gem_create(). * * See: "Exposing MMIO regions to userspace" */ -void xe_mmio_gem_destroy (struct xe_mmio_gem *gem) +void xe_mmio_gem_destroy (struct xe_mmio_gem *gem,struct drm_file *file) { +drm_vma_node_revoke (&gem->base.vma_node, file);xe_mmio_gem_free (&gem->base); }
@@ -162,14 +174,13 @@ static void xe_mmio_gem_release_dummy_page(struct drm_device *dev, void *res)__free_page ((struct page *)res); } -static vm_fault_t xe_mmio_gem_vm_fault_dummy_page (struct vm_area_struct *vma) +static vm_fault_t xe_mmio_gem_vm_fault_dummy_page (struct vm_fault *vmf) { +struct vm_area_struct *vma = vmf->vma;struct drm_gem_object *base = vma->vm_private_data;struct drm_device *dev = base->dev; -vm_fault_t ret =VM_FAULT_NOPAGE ;struct page *page;unsigned long pfn; -unsigned long i; page =alloc_page (GFP_KERNEL | __GFP_ZERO);if (!page)
@@ -180,16 +191,8 @@ static vm_fault_t xe_mmio_gem_vm_fault_dummy_page(struct vm_area_struct *vma) pfn =page_to_pfn (page); -/* Map the entire VMA to the same dummy page */ -for (i =0 ; i < base->size; i +=PAGE_SIZE ) { -unsigned long addr = vma->vm_start + i; - - ret =vmf_insert_pfn (vma, addr, pfn); -if (ret &VM_FAULT_ERROR ) -break ; - } - -return ret; +return vmf_insert_pfn_prot (vma, vmf->address, pfn, +vm_get_page_prot (vma->vm_flags)); }static vm_fault_t xe_mmio_gem_vm_fault (struct vm_fault *vmf)
@@ -209,7 +212,7 @@ static vm_fault_t xe_mmio_gem_vm_fault(struct vm_fault *vmf)* It is assumed the userspace will receive the notification via some * other channel (e.g. drm uevent). */ -return xe_mmio_gem_vm_fault_dummy_page (vma); +return xe_mmio_gem_vm_fault_dummy_page (vmf); }for (i =0 ; i < base->size; i +=PAGE_SIZE ) {
drivers/gpu/drm/xe/xe_mmio_gem.h +1 -1
@@ -15,6 +15,6 @@ struct xe_mmio_gem;struct xe_mmio_gem *xe_mmio_gem_create (struct xe_device *xe,struct drm_file *file,phys_addr_t phys_addr,size_t size);u64 xe_mmio_gem_mmap_offset (struct xe_mmio_gem *gem); -void xe_mmio_gem_destroy (struct xe_mmio_gem *gem); +void xe_mmio_gem_destroy (struct xe_mmio_gem *gem,struct drm_file *file);#endif /* _XE_MMIO_GEM_H_ */
drivers/gpu/drm/xe/xe_shrinker.c +69 -55
102 lines not on this page · raw message
drivers/hwmon/cgbc-hwmon.c +80 -49
129 lines not on this page · raw message
drivers/infiniband/core/uverbs_main.c +11 -14
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/erdma/erdma_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/erdma/erdma_verbs.c +9 -9
Lines of this file are not shown. View the raw message.
drivers/infiniband/sw/rxe/rxe_mcast.c +36 -14
50 lines not on this page · raw message
drivers/infiniband/ulp/ipoib/ipoib_ib.c +7 -5
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/ipoib/ipoib_multicast.c +8 -8
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/iser/iser_initiator.c +11 -5
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/isert/ib_isert.c +22 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/isert/ib_isert.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/rtrs/rtrs-clt-trace.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/infiniband/ulp/rtrs/rtrs-srv-trace.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/mmc/host/sdhci_am654.c +28 -15
43 lines not on this page · raw message
drivers/net/ethernet/airoha/airoha_ppe.c +13 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.c +13 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_ptp.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_tsn.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_ppe_offload.c +13 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/meta/fbnic/fbnic_txrx.c +33 -9
42 lines not on this page · raw message
drivers/net/ethernet/meta/fbnic/fbnic_txrx.h +7 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/socionext/netsec.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/hwif.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_fpe.c +10 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c +70 -29
99 lines not on this page · raw message
drivers/net/phy/mediatek/mtk-phy-lib.c +17 -10
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmsmac/mac80211_if.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/libipw_crypto_tkip.c +7 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/ipw2x00/libipw_rx.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/p54/eeprom.c +17 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/libertas_tf/main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/cfg80211.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/pcie.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/scan.c +41 -13
54 lines not on this page · raw message
drivers/net/wireless/marvell/mwifiex/util.c +8 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/cfg80211.c +14 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/microchip/wilc1000/wlan.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/rsi/rsi_91x_mgmt.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/mac80211_hwsim_main.c +24 -15
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/virt_wifi.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/phy/mediatek/phy-mtk-hdmi-mt8195.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/phy/mediatek/phy-mtk-hdmi-mt8195.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/phy/renesas/phy-rcar-gen3-usb2.c +265 -45
310 lines not on this page · raw message
drivers/scsi/fnic/fdls_disc.c +369 -357
726 lines not on this page · raw message
drivers/scsi/fnic/fip.c +54 -63
117 lines not on this page · raw message
drivers/scsi/fnic/fnic.h +43 -35
78 lines not on this page · raw message
drivers/scsi/fnic/fnic_fcs.c +63 -63
126 lines not on this page · raw message
drivers/scsi/fnic/fnic_isr.c +24 -17
41 lines not on this page · raw message
drivers/scsi/fnic/fnic_main.c +61 -28
89 lines not on this page · raw message
drivers/scsi/fnic/fnic_scsi.c +104 -106
210 lines not on this page · raw message
fs/ntfs/attrib.c +203 -56
259 lines not on this page · raw message
fs/ntfs/attrlist.c +210 -14
224 lines not on this page · raw message
fs/ntfs/mft.c +352 -95
447 lines not on this page · raw message
fs/smb/client/reparse.c +36 -22
58 lines not on this page · raw message
fs/smb/client/sess.c +64 -42
106 lines not on this page · raw message
fs/smb/client/smb2ops.c +38 -13
51 lines not on this page · raw message
fs/smb/server/connection.c +78 -6
84 lines not on this page · raw message
fs/smb/server/mgmt/user_session.c +146 -53
199 lines not on this page · raw message
fs/smb/server/proc.c +147 -12
159 lines not on this page · raw message
fs/smb/server/smb2pdu.c +84 -42
126 lines not on this page · raw message
fs/smb/server/stats.h +55 -3
58 lines not on this page · raw message
kernel/signal.c +85 -30
115 lines not on this page · raw message
mm/huge_memory.c +64 -22
86 lines not on this page · raw message
net/atm/pppoatm.c +17 -25
42 lines not on this page · raw message
net/bluetooth/coredump.c +44 -21
65 lines not on this page · raw message
net/bluetooth/iso.c +42 -11
53 lines not on this page · raw message
net/core/dev.c +75 -33
108 lines not on this page · raw message
net/mac80211/tx.c +68 -39
107 lines not on this page · raw message
net/netfilter/nf_nat_core.c +30 -16
46 lines not on this page · raw message
net/netlink/af_netlink.c +34 -8
42 lines not on this page · raw message
net/wireless/core.c +75 -51
126 lines not on this page · raw message
net/wireless/scan.c +36 -7
43 lines not on this page · raw message
security/keys/encrypted-keys/encrypted.c +14 -6
Lines of this file are not shown. View the raw message.
security/keys/trusted-keys/trusted_tpm2.c +7 -5
Lines of this file are not shown. View the raw message.
security/selinux/hooks.c +133 -17
150 lines not on this page · raw message
sound/soc/amd/acp/acp-sdw-legacy-mach.c +13 -3
Lines of this file are not shown. View the raw message.
sound/soc/sdw_utils/soc_sdw_bridge_cs35l56.c +1 -3
Lines of this file are not shown. View the raw message.
sound/usb/6fire/comm.c +28 -14
42 lines not on this page · raw message
sound/usb/6fire/midi.c +30 -13
43 lines not on this page · raw message
sound/usb/6fire/pcm.c +84 -54
138 lines not on this page · raw message
tools/testing/selftests/arm64/mte/check_gcr_el1_cswitch.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/landlock/fs_test.c +196 -1
197 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.