Linux 6.8.10
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.8.10 kernel.
All users of the 6.8 kernel series must upgrade.
The updated 6.8.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.8.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/iio/health/maxim,max30102.yaml | 2 Documentation/devicetree/bindings/net/mediatek,net.yaml | 22 - Documentation/netlink/specs/rt_link.yaml | 6 Makefile | 2 arch/arm/kernel/sleep.S | 4 arch/arm/net/bpf_jit_32.c | 56 ++- arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-pico6.dts | 3 arch/arm64/boot/dts/qcom/sa8155p-adp.dts | 30 - arch/arm64/kvm/vgic/vgic-kvm-device.c | 8 arch/arm64/net/bpf_jit_comp.c | 6 arch/mips/include/asm/ptrace.h | 2 arch/mips/kernel/asm-offsets.c | 1 arch/mips/kernel/ptrace.c | 15 arch/mips/kernel/scall32-o32.S | 23 - arch/mips/kernel/scall64-n32.S | 3 arch/mips/kernel/scall64-n64.S | 3 arch/mips/kernel/scall64-o32.S | 33 - arch/powerpc/crypto/chacha-p10-glue.c | 8 arch/powerpc/include/asm/plpks.h | 5 arch/powerpc/platforms/pseries/iommu.c | 8 arch/powerpc/platforms/pseries/plpks.c | 10 arch/riscv/net/bpf_jit_comp64.c | 6 arch/s390/include/asm/dwarf.h | 1 arch/s390/kernel/vdso64/vdso_user_wrapper.S | 2 arch/s390/mm/gmap.c | 2 arch/s390/mm/hugetlbpage.c | 2 arch/x86/kernel/apic/apic.c | 16 arch/xtensa/include/asm/processor.h | 8 arch/xtensa/include/asm/ptrace.h | 2 arch/xtensa/kernel/process.c | 5 arch/xtensa/kernel/stacktrace.c | 3 block/blk-iocost.c | 14 block/ioctl.c | 5 drivers/accel/ivpu/ivpu_drv.c | 20 - drivers/accel/ivpu/ivpu_drv.h | 3 drivers/accel/ivpu/ivpu_hw_37xx.c | 4 drivers/accel/ivpu/ivpu_mmu.c | 8 drivers/accel/ivpu/ivpu_pm.c | 9 drivers/ata/sata_gemini.c | 5 drivers/base/regmap/regmap.c | 37 ++ drivers/bluetooth/btqca.c | 138 ++++++- drivers/bluetooth/btqca.h | 3 drivers/bluetooth/hci_qca.c | 2 drivers/clk/clk.c | 12 drivers/clk/qcom/clk-smd-rpm.c | 1 drivers/clk/samsung/clk-exynos-clkout.c | 13 drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 2 drivers/clk/sunxi-ng/ccu-sun50i-h6.c | 19 - drivers/clk/sunxi-ng/ccu_common.c | 19 + drivers/clk/sunxi-ng/ccu_common.h | 3 drivers/dma/idxd/cdev.c | 77 ++++ drivers/dma/idxd/idxd.h | 3 drivers/dma/idxd/init.c | 4 drivers/dma/idxd/registers.h | 3 drivers/dma/idxd/sysfs.c | 27 + drivers/edac/versal_edac.c | 4 drivers/firewire/nosy.c | 6 drivers/firewire/ohci.c | 14 drivers/firmware/efi/unaccepted_memory.c | 4 drivers/firmware/microchip/mpfs-auto-update.c | 2 drivers/gpio/gpio-crystalcove.c | 2 drivers/gpio/gpio-lpc32xx.c | 1 drivers/gpio/gpio-wcove.c | 2 drivers/gpio/gpiolib-cdev.c | 16 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 26 - drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 14 drivers/gpu/drm/amd/amdgpu/amdgpu_object.h | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 52 +- drivers/gpu/drm/amd/amdgpu/aqua_vanjaram.c | 15 drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c | 16 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 11 drivers/gpu/drm/amd/amdkfd/kfd_device.c | 17 drivers/gpu/drm/amd/amdkfd/kfd_int_process_v10.c | 3 drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c | 3 drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c | 3 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c | 48 +- drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c | 1 drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_link_encoder.c | 6 drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c | 33 + drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 27 + drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h | 1 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 8 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_4_ppt.c | 2 drivers/gpu/drm/drm_connector.c | 2 drivers/gpu/drm/i915/display/intel_audio.c | 113 ------ drivers/gpu/drm/i915/display/intel_bios.c | 19 - drivers/gpu/drm/i915/display/intel_vbt_defs.h | 5 drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.c | 6 drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.h | 2 drivers/gpu/drm/i915/gt/intel_workarounds.c | 4 drivers/gpu/drm/imagination/pvr_fw_mips.h | 5 drivers/gpu/drm/meson/meson_dw_hdmi.c | 70 +-- drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h | 4 drivers/gpu/drm/nouveau/nouveau_dp.c | 13 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c | 79 ++-- drivers/gpu/drm/panel/Kconfig | 2 drivers/gpu/drm/panel/panel-ilitek-ili9341.c | 13 drivers/gpu/drm/qxl/qxl_release.c | 50 -- drivers/gpu/drm/radeon/pptable.h | 10 drivers/gpu/drm/ttm/ttm_tt.c | 2 drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 1 drivers/gpu/drm/vmwgfx/vmwgfx_fence.c | 2 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 3 drivers/gpu/drm/xe/regs/xe_engine_regs.h | 2 drivers/gpu/drm/xe/xe_lrc.c | 25 - drivers/gpu/drm/xe/xe_migrate.c | 8 drivers/gpu/host1x/bus.c | 8 drivers/hv/channel.c | 29 + drivers/hv/connection.c | 29 + drivers/hwmon/corsair-cpro.c | 45 +- drivers/hwmon/pmbus/ucd9000.c | 6 drivers/iio/accel/mxc4005.c | 92 ++++ drivers/iio/imu/adis16475.c | 4 drivers/iio/pressure/bmp280-core.c | 1 drivers/iio/pressure/bmp280-spi.c | 13 drivers/iio/pressure/bmp280.h | 1 drivers/infiniband/hw/qib/qib_fs.c | 1 drivers/iommu/amd/iommu.c | 4 drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c | 4 drivers/iommu/mtk_iommu.c | 1 drivers/iommu/mtk_iommu_v1.c | 1 drivers/misc/mei/hw-me-regs.h | 2 drivers/misc/mei/pci-me.c | 2 drivers/misc/pvpanic/pvpanic-pci.c | 4 drivers/net/dsa/mv88e6xxx/chip.c | 20 - drivers/net/ethernet/broadcom/genet/bcmgenet.c | 32 + drivers/net/ethernet/broadcom/genet/bcmgenet.h | 4 drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c | 8 drivers/net/ethernet/broadcom/genet/bcmmii.c | 6 drivers/net/ethernet/brocade/bna/bnad_debugfs.c | 4 drivers/net/ethernet/chelsio/cxgb4/sge.c | 6 drivers/net/ethernet/hisilicon/hns3/hnae3.h | 2 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 52 +- drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h | 5 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 20 - drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h | 2 drivers/net/ethernet/intel/e1000e/phy.c | 8 drivers/net/ethernet/intel/ice/ice_debugfs.c | 8 drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c | 4 drivers/net/ethernet/micrel/ks8851_common.c | 16 drivers/net/ethernet/qlogic/qede/qede_filter.c | 14 drivers/net/hyperv/netvsc.c | 7 drivers/net/usb/qmi_wwan.c | 1 drivers/net/vxlan/vxlan_core.c | 49 +- drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c | 7 drivers/net/wireless/intel/iwlwifi/queue/tx.c | 2 drivers/nvme/host/core.c | 2 drivers/nvme/host/nvme.h | 5 drivers/nvme/host/pci.c | 14 drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c | 34 - drivers/pinctrl/core.c | 8 drivers/pinctrl/devicetree.c | 10 drivers/pinctrl/intel/pinctrl-baytrail.c | 74 ++-- drivers/pinctrl/intel/pinctrl-intel.h | 4 drivers/pinctrl/mediatek/pinctrl-paris.c | 40 -- drivers/pinctrl/meson/pinctrl-meson-a1.c | 6 drivers/platform/x86/acer-wmi.c | 9 drivers/platform/x86/amd/pmf/acpi.c | 2 drivers/platform/x86/intel/speed_select_if/isst_if_common.c | 1 drivers/power/supply/mt6360_charger.c | 2 drivers/power/supply/rt9455_charger.c | 2 drivers/regulator/core.c | 27 - drivers/regulator/mt6360-regulator.c | 32 + drivers/regulator/tps65132-regulator.c | 7 drivers/s390/cio/cio_inject.c | 2 drivers/s390/net/qeth_core_main.c | 61 +-- drivers/scsi/bnx2fc/bnx2fc_tgt.c | 2 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 10 drivers/scsi/libsas/sas_expander.c | 2 drivers/scsi/lpfc/lpfc.h | 2 drivers/scsi/lpfc/lpfc_attr.c | 4 drivers/scsi/lpfc/lpfc_bsg.c | 20 - drivers/scsi/lpfc/lpfc_debugfs.c | 12 drivers/scsi/lpfc/lpfc_els.c | 20 - drivers/scsi/lpfc/lpfc_hbadisc.c | 5 drivers/scsi/lpfc/lpfc_init.c | 5 drivers/scsi/lpfc/lpfc_nvme.c | 4 drivers/scsi/lpfc/lpfc_scsi.c | 13 drivers/scsi/lpfc/lpfc_sli.c | 34 - drivers/scsi/lpfc/lpfc_vport.c | 8 drivers/scsi/mpi3mr/mpi3mr_app.c | 2 drivers/slimbus/qcom-ngd-ctrl.c | 6 drivers/spi/spi-axi-spi-engine.c | 19 - drivers/spi/spi-hisi-kunpeng.c | 2 drivers/spi/spi-microchip-core-qspi.c | 1 drivers/spi/spi.c | 1 drivers/target/target_core_configfs.c | 12 drivers/thermal/thermal_debugfs.c | 59 ++- drivers/ufs/core/ufs-mcq.c | 2 drivers/ufs/core/ufshcd.c | 9 drivers/uio/uio_hv_generic.c | 12 drivers/usb/core/hub.c | 5 drivers/usb/core/port.c | 8 drivers/usb/dwc3/core.c | 90 ++-- drivers/usb/dwc3/core.h | 1 drivers/usb/dwc3/gadget.c | 2 drivers/usb/dwc3/host.c | 27 + drivers/usb/gadget/composite.c | 6 drivers/usb/gadget/function/f_fs.c | 9 drivers/usb/gadget/function/uvc_configfs.c | 4 drivers/usb/host/ohci-hcd.c | 8 drivers/usb/host/xhci-plat.h | 4 drivers/usb/host/xhci-rzv2m.c | 1 drivers/usb/typec/tcpm/tcpm.c | 36 + drivers/usb/typec/ucsi/ucsi.c | 12 drivers/vfio/pci/vfio_pci.c | 2 fs/9p/fid.h | 3 fs/9p/vfs_file.c | 2 fs/9p/vfs_inode.c | 23 - fs/9p/vfs_super.c | 1 fs/btrfs/inode.c | 2 fs/btrfs/ordered-data.c | 1 fs/btrfs/qgroup.c | 2 fs/btrfs/transaction.c | 2 fs/btrfs/tree-checker.c | 30 - fs/btrfs/tree-checker.h | 1 fs/btrfs/volumes.c | 18 fs/exfat/file.c | 7 fs/gfs2/bmap.c | 5 fs/nfs/client.c | 5 fs/nfs/inode.c | 13 fs/nfs/internal.h | 2 fs/nfs/netns.h | 2 fs/nfsd/cache.h | 2 fs/nfsd/netns.h | 21 - fs/nfsd/nfs4callback.c | 97 +++++ fs/nfsd/nfs4proc.c | 6 fs/nfsd/nfs4state.c | 3 fs/nfsd/nfs4xdr.c | 2 fs/nfsd/nfscache.c | 40 -- fs/nfsd/nfsctl.c | 14 fs/nfsd/nfsfh.c | 3 fs/nfsd/state.h | 14 fs/nfsd/stats.c | 43 -- fs/nfsd/stats.h | 62 +-- fs/nfsd/vfs.c | 6 fs/nfsd/xdr4cb.h | 18 fs/proc/task_mmu.c | 24 - fs/smb/client/cifsglob.h | 1 fs/smb/client/connect.c | 8 fs/smb/client/fs_context.c | 21 + fs/smb/client/fs_context.h | 2 fs/smb/client/misc.c | 1 fs/smb/client/smb2pdu.c | 11 fs/smb/server/oplock.c | 35 + fs/smb/server/transport_tcp.c | 4 fs/tracefs/event_inode.c | 45 +- fs/tracefs/inode.c | 92 ++++ fs/tracefs/internal.h | 7 fs/userfaultfd.c | 4 fs/vboxsf/file.c | 1 include/linux/compiler_types.h | 11 include/linux/dma-fence.h | 7 include/linux/gfp_types.h | 2 include/linux/hyperv.h | 1 include/linux/pci_ids.h | 2 include/linux/regmap.h | 8 include/linux/regulator/consumer.h | 4 include/linux/skbuff.h | 15 include/linux/skmsg.h | 2 include/linux/slab.h | 4 include/linux/sockptr.h | 25 + include/linux/sunrpc/clnt.h | 1 include/net/gro.h | 9 include/net/xfrm.h | 3 include/sound/emu10k1.h | 3 include/trace/events/rxrpc.h | 2 include/uapi/linux/kfd_ioctl.h | 17 include/uapi/scsi/scsi_bsg_mpi3mr.h | 2 kernel/bpf/bloom_filter.c | 13 kernel/bpf/verifier.c | 3 kernel/dma/swiotlb.c | 1 kernel/workqueue.c | 8 lib/Kconfig.debug | 5 lib/dynamic_debug.c | 6 lib/maple_tree.c | 16 lib/scatterlist.c | 2 mm/readahead.c | 4 mm/slub.c | 52 +- net/8021q/vlan_core.c | 2 net/bluetooth/hci_core.c | 3 net/bluetooth/hci_event.c | 2 net/bluetooth/l2cap_core.c | 3 net/bluetooth/msft.c | 2 net/bluetooth/msft.h | 4 net/bluetooth/sco.c | 4 net/bridge/br_forward.c | 9 net/bridge/br_netlink.c | 3 net/core/filter.c | 42 +- net/core/gro.c | 1 net/core/link_watch.c | 4 net/core/net-sysfs.c | 4 net/core/net_namespace.c | 13 net/core/rtnetlink.c | 6 net/core/skbuff.c | 27 + net/core/skmsg.c | 5 net/core/sock.c | 4 net/hsr/hsr_device.c | 31 - net/ipv4/af_inet.c | 1 net/ipv4/ip_output.c | 2 net/ipv4/raw.c | 3 net/ipv4/tcp.c | 4 net/ipv4/tcp_input.c | 2 net/ipv4/tcp_ipv4.c | 8 net/ipv4/tcp_output.c | 4 net/ipv4/udp.c | 3 net/ipv4/udp_offload.c | 15 net/ipv4/xfrm4_input.c | 6 net/ipv6/addrconf.c | 11 net/ipv6/fib6_rules.c | 6 net/ipv6/ip6_input.c | 4 net/ipv6/ip6_offload.c | 1 net/ipv6/ip6_output.c | 4 net/ipv6/udp.c | 3 net/ipv6/udp_offload.c | 3 net/ipv6/xfrm6_input.c | 6 net/l2tp/l2tp_eth.c | 3 net/mac80211/ieee80211_i.h | 4 net/mac80211/mlme.c | 5 net/mptcp/ctrl.c | 39 ++ net/mptcp/protocol.c | 3 net/nfc/llcp_sock.c | 12 net/nfc/nci/core.c | 1 net/nsh/nsh.c | 14 net/phonet/pn_netlink.c | 2 net/rxrpc/ar-internal.h | 2 net/rxrpc/call_object.c | 7 net/rxrpc/conn_event.c | 16 net/rxrpc/conn_object.c | 9 net/rxrpc/input.c | 71 ++- net/rxrpc/output.c | 14 net/rxrpc/protocol.h | 6 net/smc/smc_ib.c | 19 - net/sunrpc/clnt.c | 5 net/sunrpc/xprtsock.c | 1 net/tipc/msg.c | 8 net/wireless/nl80211.c | 2 net/wireless/trace.h | 2 net/xfrm/xfrm_input.c | 8 rust/macros/module.rs | 185 ++++++---- scripts/Makefile.modfinal | 2 security/keys/key.c | 3 sound/hda/intel-sdw-acpi.c | 2 sound/oss/dmasound/dmasound_paula.c | 8 sound/pci/emu10k1/emu10k1.c | 3 sound/pci/emu10k1/emu10k1_main.c | 139 ++++--- sound/pci/hda/patch_realtek.c | 25 + sound/soc/codecs/es8326.c | 30 - sound/soc/codecs/es8326.h | 2 sound/soc/codecs/wsa881x.c | 1 sound/soc/intel/avs/topology.c | 2 sound/soc/meson/Kconfig | 1 sound/soc/meson/axg-card.c | 1 sound/soc/meson/axg-fifo.c | 52 +- sound/soc/meson/axg-fifo.h | 12 sound/soc/meson/axg-frddr.c | 5 sound/soc/meson/axg-tdm-interface.c | 34 + sound/soc/meson/axg-toddr.c | 22 - sound/soc/sof/intel/hda-dsp.c | 20 - sound/soc/sof/intel/pci-lnl.c | 3 sound/soc/tegra/tegra186_dspk.c | 7 sound/soc/ti/davinci-mcasp.c | 12 sound/usb/line6/driver.c | 6 tools/include/linux/kernel.h | 1 tools/include/linux/mm.h | 5 tools/include/linux/panic.h | 19 + tools/power/x86/turbostat/turbostat.8 | 2 tools/power/x86/turbostat/turbostat.c | 159 ++++++-- tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c | 6 tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc | 2 tools/testing/selftests/mm/Makefile | 6 tools/testing/selftests/net/test_bridge_neigh_suppress.sh | 14 tools/testing/selftests/timers/valid-adjtimex.c | 73 +-- 377 files changed, 3360 insertions(+), 1832 deletions(-)
Adam Goldman (1):
firewire: ohci: mask bus reset interrupts between ISR and bottom half
Adam Skladowski (1):
clk: qcom: smd-rpm: Restore msm8976 num_clk
Al Viro (1):
qibfs: fix dentry leak
Alan Stern (2):
usb: Fix regression caused by invalid ep0 maxpacket in virtual SuperSpeed device
USB: core: Fix access violation during port device removal
Aleksa Savic (3):
hwmon: (corsair-cpro) Use a separate buffer for sending commands
hwmon: (corsair-cpro) Use complete_all() instead of complete() in ccp_raw_event()
hwmon: (corsair-cpro) Protect ccp->wait_input_report with a spinlock
Alex Deucher (2):
drm/radeon: silence UBSAN warning (v3)
drm/amdkfd: don't allow mapping the MMIO HDP page with large pages
Alex Hung (1):
drm/amd/display: Skip on writeback when it's not applicable
Alexander Potapenko (1):
kmsan: compiler_types: declare __no_sanitize_or_inline
Alexander Usyskin (1):
mei: me: add lunar lake point M DID
Alexandra Winter (1):
s390/qeth: Fix kernel panic after setting hsuid
Amadeusz Sławiński (1):
ASoC: Intel: avs: Set name of control as in topology
Aman Dhoot (1):
ALSA: hda/realtek: Fix mute led of HP Laptop 15-da3001TU
Amit Sunil Dhamne (1):
usb: typec: tcpm: unregister existing source caps before re-registration
Anand Jain (1):
btrfs: return accurate error code on open failure in open_fs_devices()
Andi Shyti (1):
drm/i915/gt: Automate CCS Mode setting during engine resets
Andrei Matei (1):
bpf: Check bloom filter map value size
Andrew Price (1):
gfs2: Fix invalid metadata access in punch_hole
Andrii Nakryiko (1):
bpf, kconfig: Fix DEBUG_INFO_BTF_MODULES Kconfig definition
André Apitzsch (1):
regulator: tps65132: Add of_match table
Andy Shevchenko (5):
drm/panel: ili9341: Correct use of device property APIs drm/panel: ili9341: Respect deferred probe drm/panel: ili9341: Use predefined error codes
gpio: wcove: Use -ENOTSUPP consistently
gpio: crystalcove: Use -ENOTSUPP consistently
AngeloGioacchino Del Regno (2):
power: supply: mt6360_charger: Fix of_match for usb-otg-vbus regulator
regulator: mt6360: De-capitalize devicetree regulator subnodes
Anton Protopopov (1):
bpf: Fix a verifier verbose message
Arjan van de Ven (2):
VFIO: Add the SPR_DSA and SPR_IAX devices to the denylist
dmaengine: idxd: add a new security check to deal with a hardware erratum
Arnd Bergmann (1):
power: rt9455: hide unused rt9455_boost_voltage_values
Asbjørn Sloth Tønnesen (4):
net: qede: sanitize 'rc' in qede_add_tc_flower_fltr()
net: qede: use return from qede_parse_flow_attr() for flower
net: qede: use return from qede_parse_flow_attr() for flow_spec
net: qede: use return from qede_parse_actions()
Ashutosh Dixit (1):
drm/xe: Label RING_CONTEXT_CONTROL as masked
Badhri Jagan Sridharan (1):
usb: typec: tcpm: Check for port partner validity before consuming it
Benjamin Berg (1):
wifi: iwlwifi: mvm: guard against invalid STA ID on removal
Benno Lossin (1):
rust: macros: fix soundness issue in module! macro
Bernhard Rosenkränzer (1):
platform/x86: acer-wmi: Add support for Acer PH18-71
Billy Tsai (1):
pinctrl: pinctrl-aspeed-g6: Fix register offset for pinconf of GPIOR-T
Boris Burkov (2):
btrfs: make btrfs_clear_delalloc_extent() free delalloc reserve
btrfs: always clear PERTRANS metadata during commit
Borislav Petkov (AMD) (1):
kbuild: Disable KCSAN for autogenerated *.mod.c intermediaries
Boy.Wu (1):
ARM: 9381/1: kasan: clear stale stack poison
Bui Quang Minh (4):
ice: ensure the copied buf is NUL terminated
bna: ensure the copied buf is NUL terminated
octeontx2-af: avoid off-by-one read from userspace s390/cio: Ensure the copied buf is NUL terminated
Chaitanya Kumar Borah (1):
drm/i915/audio: Fix audio time stamp programming for DP
Chen Ni (1):
ata: sata_gemini: Check clk_enable() result
Chen Yu (2):
efi/unaccepted: touch soft lockup during memory accept tools/power turbostat: Do not print negative LPI residency
Chen-Yu Tsai (3):
pinctrl: mediatek: paris: Fix PIN_CONFIG_INPUT_SCHMITT_ENABLE readback
pinctrl: mediatek: paris: Rework support for PIN_CONFIG_{INPUT,OUTPUT}_ENABLE
arm64: dts: mediatek: mt8183-pico6: Fix bluetooth node
Chris Wulff (1):
usb: gadget: f_fs: Fix a race condition when processing setup packets.
Christian A. Ehrhardt (2):
usb: typec: ucsi: Check for notifications after init
usb: typec: ucsi: Fix connector check on init
Christian König (1):
drm/amdgpu: once more fix the call oder in amdgpu_ttm_move() v2
Chuck Lever (1):
NFSD: Fix nfsd4_encode_fattr4() crasher
Claudio Imbrenda (2):
s390/mm: Fix storage key clearing for guest huge pages s390/mm: Fix clearing storage keys for huge pages
Conor Dooley (2):
firmware: microchip: don't unconditionally print validation success
spi: microchip-core-qspi: fix setting spi bus clock rate
Dai Ngo (1):
NFSD: add support for CB_GETATTR callback
Dan Carpenter (2):
pinctrl: core: delete incorrect free in pinctrl_enable() mm/slab: make __free(kfree) accept error pointers
Daniel Golle (1):
dt-bindings: net: mediatek: remove wrongly added clocks and SerDes
Dave Airlie (1):
Revert "drm/nouveau/firmware: Fix SG_DEBUG error with nvkm_firmware_ctor()"
David Bauer (1):
net l2tp: drop flow hash on forward
David Howells (4):
Fix a potential infinite loop in extract_user_to_sg()
rxrpc: Fix the names of the fields in the ACK trailer struct
rxrpc: Fix congestion control algorithm
rxrpc: Only transmit one ACK per jumbo packet received
David Lechner (2):
spi: axi-spi-engine: use common AXI macros
spi: axi-spi-engine: fix version format string
Devyn Liu (1):
spi: hisi-kunpeng: Delete the dump interface of data registers in debugfs
Dominique Martinet (1):
btrfs: add missing mutex_unlock in btrfs_relocate_sys_chunks()
Donald Hunter (1):
netlink: specs: Add missing bridge linkinfo attrs
Doug Berger (3):
net: bcmgenet: synchronize EXT_RGMII_OOB_CTRL access
net: bcmgenet: synchronize use of bcmgenet_set_rx_mode()
net: bcmgenet: synchronize UMAC_CMD access
Doug Smythies (1):
tools/power turbostat: Fix added raw MSR output
Douglas Anderson (1):
drm/connector: Add \n to message about demoting connector force-probes
Duoming Zhou (2):
Bluetooth: Fix use-after-free bugs caused by sco_sock_timeout
Bluetooth: l2cap: fix null-ptr-deref in l2cap_chan_timeout
Eric Dumazet (8):
net: add copy_safe_from_sockptr() helper
nfc: llcp: fix nfc_llcp_setsockopt() unsafe copies
tcp: defer shutdown(SEND_SHUTDOWN) for TCP_SYN_RECV sockets
phonet: fix rtm_phonet_notify() skb allocation
ipv6: fib6_rules: avoid possible NULL dereference in fib6_rule_action()
net-sysfs: convert dev->operstate reads to lockless ones
ipv6: annotate data-races around cnf.disable_ipv6
ipv6: prevent NULL dereference in ip6_output()
Eric Van Hensbergen (2):
fs/9p: fix uninitialized values during inode evict fs/9p: remove erroneous nlink init from legacy stat2inode
Felix Fietkau (3):
net: bridge: fix multicast-to-unicast with fraglist GSO
net: core: reject skb_copy(_expand) for fraglist GSO skbs
net: bridge: fix corrupted ethernet header on multicast-to-unicast
Frank Oltmanns (2):
clk: sunxi-ng: common: Support minimum and maximum rate
clk: sunxi-ng: a64: Set minimum and maximum rate for PLL-MIPI
Gabe Teeger (1):
drm/amd/display: Atom Integrated System Info v2_2 for DCN35
Gaurav Batra (1):
powerpc/pseries/iommu: LPAR panics during boot up with a frozen PE
George Shen (1):
drm/amd/display: Handle Y carry-over in VCP X.Y calculation
Greg Kroah-Hartman (1):
Linux 6.8.10
Gregory Detal (1):
mptcp: only allow set existing scheduler for net.mptcp.scheduler
Guenter Roeck (1):
usb: ohci: Prevent missed ohci interrupts
Guillaume Nault (3):
vxlan: Fix racy device stats updates.
vxlan: Add missing VNI filter counter update in arp_reduce().
vxlan: Pull inner IP header in vxlan_rcv().
Hans de Goede (3):
pinctrl: baytrail: Fix selecting gpio pinctrl state
iio: accel: mxc4005: Interrupt handling fixes
iio: accel: mxc4005: Reset chip on probe() and resume()
Hersen Wu (1):
drm/amd/display: Fix incorrect DSC instance for MST
Himal Prasad Ghimiray (1):
drm/xe/xe_migrate: Cast to output precision before multiplying operands
Ian Forbes (1):
drm/vmwgfx: Fix Legacy Display Unit
Ido Schimmel (1):
selftests: test_bridge_neigh_suppress.sh: Fix failures due to duplicate MAC
Igor Artemiev (1):
wifi: cfg80211: fix rdev_dump_mpp() arguments order
Ivan Avdeev (1):
usb: gadget: uvc: use correct buffer size when parsing configfs lists
Jacek Lawrynowicz (2):
accel/ivpu: Remove d3hot_after_power_off WA accel/ivpu: Fix missed error message after VPU rename
Jan Dakinevich (1):
pinctrl/meson: fix typo in PDM's pin name
Jason Gunthorpe (1):
iommu/arm-smmu: Use the correct type in nvidia_smmu_context_fault()
Jason Xing (1):
bpf, skmsg: Fix NULL pointer dereference in sk_psock_skb_ingress_enqueue
Javier Carrasco (1):
dt-bindings: iio: health: maxim,max30102: fix compatible check
Jeff Johnson (1):
wifi: mac80211: fix ieee80211_bss_*_flags kernel-doc
Jeff Layton (2):
vboxsf: explicitly deny setlease attempts
9p: explicitly deny setlease attempts
Jeffrey Altman (1):
rxrpc: Clients must accept conn from any address
Jens Remus (1):
s390/vdso: Add CFI for RA register to asm macro vdso_func
Jernej Skrabec (1):
clk: sunxi-ng: h6: Reparent CPUX during PLL CPUX rate change
Jerome Brunet (7):
ASoC: meson: axg-fifo: use FIELD helpers
ASoC: meson: axg-fifo: use threaded irq to check periods
ASoC: meson: axg-card: make links nonatomic
ASoC: meson: axg-tdm-interface: manage formatters in trigger
ASoC: meson: cards: select SND_DYNAMIC_MINORS drm/meson: dw-hdmi: power up phy on device init drm/meson: dw-hdmi: add bandgap setting for g12
Jian Shen (1):
net: hns3: direct return when receive a unknown mailbox message
Jiaxun Yang (1):
MIPS: scall: Save thread_info.syscall unconditionally on entry
Jim Cromie (1):
dyndbg: fix old BUG_ON in >control parser
Joakim Sindholt (4):
fs/9p: only translate RWX permissions for plain 9P2000 fs/9p: translate O_TRUNC into OTRUNC
fs/9p: fix the cache always being enabled on files with qid flags fs/9p: drop inodes immediately on non-.L too
Joao Paulo Goncalves (1):
ASoC: ti: davinci-mcasp: Fix race condition during probe
Johan Hovold (9):
regulator: core: fix debugfs creation regression
Bluetooth: qca: fix invalid device address check
Bluetooth: qca: fix wcn3991 device address check
Bluetooth: qca: add missing firmware sanity checks
Bluetooth: qca: fix NVM configuration parsing
Bluetooth: qca: generalise device address check
Bluetooth: qca: fix info leak when fetching board id
Bluetooth: qca: fix info leak when fetching fw build id
Bluetooth: qca: fix firmware check error path
Johannes Berg (3):
wifi: nl80211: don't free NULL coalescing rule
wifi: mac80211: fix prep_connection error path
wifi: iwlwifi: read txq->read_ptr under lock
John Stultz (1):
selftests: timers: Fix valid-adjtimex signed left-shift undefined behavior
Jonathan Kim (1):
drm/amdkfd: range check cp bad op exception interrupts
Josef Bacik (7):
sunrpc: add a struct rpc_stats arg to rpc_create_args
nfs: expose /proc/net/sunrpc/nfs in net namespaces
nfs: make the rpc_stat per net namespace
nfsd: rename NFSD_NET_* to NFSD_STATS_*
nfsd: expose /proc/net/sunrpc/nfsd in net namespaces
nfsd: make all of the nfsd stats per-network namespace
btrfs: make sure that WRITTEN is set on all metadata blocks
Justin Ernst (1):
tools/power/turbostat: Fix uncore frequency file string
Justin Tee (6):
scsi: lpfc: Move NPIV's transport unregistration to after resource clean up
scsi: lpfc: Remove IRQF_ONESHOT flag from threaded IRQ handling
scsi: lpfc: Update lpfc_ramp_down_queue_handler() logic
scsi: lpfc: Replace hbalock with ndlp lock in lpfc_nvme_unregister_port()
scsi: lpfc: Release hbalock before calling lpfc_worker_wake_up()
scsi: lpfc: Use a dedicated lock for ras_fwlog state
Karthikeyan Ramasubramanian (1):
drm/i915/bios: Fix parsing backlight BDB data
Kees Cook (1):
nouveau/gsp: Avoid addressing beyond end of rpc->entries
Kefeng Wang (1):
mm: use memalloc_nofs_save() in page_cache_ra_order()
Kenneth Feng (1):
drm/amd/pm: fix the high voltage issue after unload
Kent Gibson (1):
gpiolib: cdev: fix uninitialised kfifo
Krzysztof Kozlowski (2):
iommu: mtk: fix module autoloading
gpio: lpc32xx: fix module autoloading
Kuniyuki Iwashima (3):
nfs: Handle error of rpc_proc_register() in nfs_net_init().
nsh: Restore skb->{protocol,data,mac_header} for outer header in nsh_gso_segment().
tcp: Use refcount_inc_not_zero() in tcp_twsk_unique().
Lakshmi Yadlapati (1):
hwmon: (pmbus/ucd9000) Increase delay from 250 to 500us
Len Brown (2):
tools/power turbostat: Expand probe_intel_uncore_frequency() tools/power turbostat: Fix warning upon failed /dev/cpu_dma_latency read
Li Ma (1):
drm/amd/display: add DCN 351 version for microcode load
Li Nan (2):
block: fix overflow in blk_ioctl_discard()
blk-iocost: do not WARN if iocg was already offlined
Liam R. Howlett (1):
maple_tree: fix mas_empty_area_rev() null pointer dereference
Lijo Lazar (2):
drm/amdgpu: Refine IB schedule error logging drm/amdgpu: Fix VCN allocation in CPX partition
Linus Torvalds (1):
Reapply "drm/qxl: simplify qxl_fence_wait"
Lucas De Marchi (2):
drm/xe/display: Fix ADL-N detection
drm/xe: Fix END redefinition
Lukasz Majewski (1):
hsr: Simplify code for announcing HSR nodes timer setup
Lyude Paul (3):
drm/nouveau/dp: Don't probe eDP ports twice harder drm/nouveau/firmware: Fix SG_DEBUG error with nvkm_firmware_ctor() drm/nouveau/gsp: Use the sg allocator for level 2 of radix3
Mans Rullgard (1):
spi: fix null pointer dereference within spi_sync
Marek Behún (1):
net: dsa: mv88e6xxx: Fix number of databases for 88E6141 / 88E6341
Marek Szyprowski (1):
clk: samsung: Revert "clk: Use device_get_match_data()"
Marek Vasut (1):
net: ks8851: Queue RX packets in IRQ handler instead of disabling BHs
Mario Limonciello (2):
platform/x86/amd: pmf: Decrease error message to debug dm/amd/pm: Fix problems with reboot/shutdown for some SMU 13.0.4/13.0.11 users
Mark Rutland (1):
selftests/ftrace: Fix event filter target_func selection
Matt Coster (1):
drm/imagination: Ensure PVR_MIPS_PT_PAGE_COUNT is never zero
Matti Vaittinen (2):
regulator: change stubbed devm_regulator_get_enable to return Ok
regulator: change devm_regulator_get_enable_optional() stub to return Ok
Maurizio Lombardi (1):
scsi: target: Fix SELinux error when systemd-modules loads the target module
Max Filippov (1):
xtensa: fix MAKE_PC_FROM_RA second argument
Michael Ellerman (2):
powerpc/crypto/chacha-p10: Fix failure on non Power10 selftests/mm: fix powerpc ARCH check
Michael Kelley (1):
Drivers: hv: vmbus: Don't free ring buffers that couldn't be re-encrypted
Michel Dänzer (1):
drm/amdgpu: Fix comparison in amdgpu_res_cpu_visible
Mukul Joshi (1):
drm/amdkfd: Check cgroup when returning DMABuf info
Namjae Jeon (3):
ksmbd: off ipv6only for both ipv4/ipv6 binding
ksmbd: avoid to send duplicate lease break notifications
ksmbd: do not grant v2 lease if parent lease key and epoch are not set
Nayna Jain (1):
powerpc/pseries: make max polling consistent for longer H_CALLs
Nicholas Kazlauskas (1):
drm/amd/display: Fix idle optimization checks for multi-display and dual eDP
Nicolas Bouchinet (1):
mm/slub: avoid zeroing outside-object freepointer for single free
Nikhil Rao (1):
dmaengine: idxd: add a write() method for applications to submit work
Olga Kornievskaia (1):
SUNRPC: add a missing rpc_stat for TCP TLS
Oliver Upton (1):
KVM: arm64: vgic-v2: Check for non-NULL vCPU in vgic_v2_parse_attr()
Oswald Buddenhagen (4):
ALSA: emu10k1: fix E-MU card dock presence monitoring
ALSA: emu10k1: factor out snd_emu1010_load_dock_firmware()
ALSA: emu10k1: move the whole GPIO event handling to the workqueue
ALSA: emu10k1: fix E-MU dock initialization
Paolo Abeni (2):
mptcp: ensure snd_nxt is properly initialized on connect
tipc: fix UAF in error path
Patryk Wlazlyn (1):
tools/power turbostat: Print ucode revision only if valid
Paul Davey (1):
xfrm: Preserve vlan tags for transport mode software GRO
Peiyang Wang (4):
net: hns3: using user configure after hardware reset
net: hns3: change type of numa_node_mask as nodemask_t
net: hns3: release PTP resources if pf initialization failed
net: hns3: use appropriate barrier function after setting a bit value
Peng Liu (1):
tools/power turbostat: Fix Bzy_MHz documentation typo
Peter Korsgaard (1):
usb: gadget: composite: fix OS descriptors w_value logic
Peter Ujfalusi (1):
ASoC: SOF: Intel: hda-dsp: Skip IMR boot on ACE platforms in case of S3 suspend
Peter Wang (2):
scsi: ufs: core: WLUN suspend dev/link state error recovery
scsi: ufs: core: Fix MCQ mode dev command timeout
Peter Xu (1):
mm/userfaultfd: reset ptes when close() for wr-protected ones
Phil Elwell (1):
net: bcmgenet: Reset RBUF on first open
Pierre-Louis Bossart (2):
ASoC: SOF: Intel: add default firmware library path for LNL
ALSA: hda: intel-sdw-acpi: fix usage of device_get_named_child_node()
Puranjay Mohan (1):
arm32, bpf: Reimplement sign-extension mov instruction
Qu Wenruo (2):
btrfs: set correct ram_bytes when splitting ordered extent
btrfs: qgroup: do not check qgroup inherit if qgroup is disabled
RD Babiera (1):
usb: typec: tcpm: clear pd_event queue in PORT_RESET
Rafael J. Wysocki (3):
thermal/debugfs: Free all thermal zone debug memory on zone removal thermal/debugfs: Fix two locking issues with thermal zone debug thermal/debugfs: Prevent use-after-free from occurring after cdev removal
Ramona Gradinariu (1):
iio:imu: adis16475: Fix sync mode setting
Richard Fitzgerald (1):
regmap: Add regmap_read_bypassed()
Richard Gobert (2):
net: gro: fix udp bad offset in socket lookup by adding {inner_}network_offset to napi_gro_cb
net: gro: add flush check in udp_gro_receive_segment
Rick Edgecombe (4):
Drivers: hv: vmbus: Leak pages if set_memory_encrypted() fails
Drivers: hv: vmbus: Track decrypted status in vmbus_gpadl
hv_netvsc: Don't free decrypted memory
uio_hv_generic: Don't free decrypted memory
Rik van Riel (1):
blk-iocost: avoid out of bounds shift
Roded Zats (1):
rtnetlink: Correct nested IFLA_VF_VLAN_LIST attribute validation
Rohit Ner (1):
scsi: ufs: core: Fix MCQ MAC configuration
Ryan Roberts (2):
fs/proc/task_mmu: fix loss of young/dirty bits during pagemap scan fs/proc/task_mmu: fix uffd-wp confusion in pagemap_scan_pmd_entry()
Sameer Pujar (1):
ASoC: tegra: Fix DSPK 16-bit playback
Saurav Kashyap (1):
scsi: bnx2fc: Remove spin_lock_bh while releasing resources after upload
Sean Anderson (1):
nvme-pci: Add quirk for broken MSIs
Sebastian Andrzej Siewior (1):
cxgb4: Properly lock TX queue for the selftest.
Shashank Sharma (1):
drm/amdgpu: fix doorbell regression
Shigeru Yoshida (2):
ipv4: Fix uninit-value access in __ip_make_skb()
ipv6: Fix potential uninit-value access in __ip6_make_skb()
Shin'ichiro Kawasaki (1):
scsi: mpi3mr: Avoid memcpy field-spanning write WARNING
Shubhrajyoti Datta (1):
EDAC/versal: Do not log total error counts
Silvio Gissi (1):
keys: Fix overwrite of key expiration on instantiation
Srinivas Kandagatla (1):
ASoC: codecs: wsa881x: set clk_stop_mode1 flag
Srinivas Pandruvada (1):
platform/x86: ISST: Add Granite Rapids-D to HPM CPU list
Steffen Bätz (1):
net: dsa: mv88e6xxx: add phylink_get_caps for the mv88e6320/21 family
Stephen Boyd (1):
clk: Don't hold prepare_lock when calling kref_put()
Steve French (1):
smb3: fix broken reconnect when password changing on the server by allowing password rotation
Steven Rostedt (Google) (3):
tracefs: Reset permissions on remount if permissions are options
tracefs: Still use mount point as default permissions for instances
eventfs: Do not treat events directory different than other directories
Sungwoo Kim (2):
Bluetooth: msft: fix slab-use-after-free in msft_do_close()
Bluetooth: HCI: Fix potential null-ptr-deref
Sven Schnelle (1):
workqueue: Fix selection of wake_cpu in kick_pool()
Takashi Iwai (2):
ALSA: line6: Zero-initialize message buffers
ALSA: hda/realtek: Fix conflicting PCI SSID 17aa:386f for Lenovo Legion models
Takashi Sakamoto (1):
firewire: ohci: fulfill timestamp for some local asynchronous transaction
Tao Zhou (1):
drm/amdgpu: implement IRQ_STATE_ENABLE for SDMA v4.4.2
Tetsuo Handa (1):
nfc: nci: Fix kcov check in nci_rx_work()
Thadeu Lima de Souza Cascardo (1):
net: fix out-of-bounds access in ops_init
Thanassis Avgerinos (1):
firewire: nosy: ensure user_length is taken into account when fetching packet contents
Thierry Reding (1):
gpu: host1x: Do not setup DMA for virtual devices
Thinh Nguyen (2):
usb: xhci-plat: Don't include xhci.h
usb: dwc3: core: Prevent phy suspend during init
Thomas Bertschinger (1):
rust: module: place generated init_module() function in .init.text
Thomas Gleixner (1):
x86/apic: Don't access the APIC when disabling x2APIC
Thomas Weißschuh (1):
misc/pvpanic-pci: register attributes via pci_driver
Toke Høiland-Jørgensen (1):
xdp: use flags field to disambiguate broadcast redirect
Uwe Kleine-König (1):
OSS: dmasound/paula: Mark driver struct with __refdata to prevent section mismatch
Vanillan Wang (1):
net:usb:qmi_wwan: support Rolling modules
Vasant Hegde (1):
iommu/amd: Enhance def_domain_type to handle untrusted device
Vasileios Amoiridis (2):
iio: pressure: Fixes BME280 SPI driver data
iio: pressure: Fixes SPI support for BMP3xx devices
Viken Dadhaniya (1):
slimbus: qcom-ngd-ctrl: Add timeout for wait operation
Vitaly Lifshits (1):
e1000e: change usleep_range to udelay in PHY mdic access
Volodymyr Babchuk (1):
arm64: dts: qcom: sa8155p-adp: fix SDHC2 CD pin configuration
Wachowski, Karol (1):
accel/ivpu: Improve clarity of MMU error messages
Wei Yang (3):
memblock tests: fix undefined reference to early_pfn_to_nid' memblock tests: fix undefined reference to panic' memblock tests: fix undefined reference to `BIT'
Wen Gu (1):
net/smc: fix neighbour and rtable leak in smc_ib_find_route()
Wesley Cheng (1):
usb: gadget: f_fs: Fix race between aio_cancel() and AIO request complete
Will Deacon (1):
swiotlb: initialise restricted pool list_head when SWIOTLB_DYNAMIC=y
Wyes Karny (1):
tools/power turbostat: Increase the limit for fd opened
Xiang Chen (1):
scsi: hisi_sas: Handle the NCQ error returned by D2H frame
Xin Long (1):
tipc: fix a possible memleak in tipc_buf_append
Xu Kuohai (2):
bpf, arm64: Fix incorrect runtime stats
riscv, bpf: Fix incorrect runtime stats
Yi Zhang (1):
nvme: fix warn output about shared namespaces without CONFIG_NVME_MULTIPATH
Yifan Zhang (1):
drm/amdgpu: add smu 14.0.1 discovery support
Yihang Li (1):
scsi: libsas: Align SMP request allocation to ARCH_DMA_MINALIGN
Yonglong Liu (2):
net: hns3: fix port vlan filter not disabled issue
net: hns3: fix kernel crash when devlink reload during initialization
Yuezhang Mo (1):
exfat: fix timing of synchronizing bitmap and inode
Zack Rusin (2):
drm/ttm: Print the memory decryption status just once drm/vmwgfx: Fix invalid reads in fence signaled events
Zeng Heng (1):
pinctrl: devicetree: fix refcount leak in pinctrl_dt_to_map()
Zhang Yi (2):
ASoC: codecs: ES8326: Solve error interruption issue
ASoC: codecs: ES8326: modify clock table
Zhigang Luo (1):
amd/amdkfd: sync all devices to wait all processes being evicted
Zhongqiu Han (1):
gpiolib: cdev: Fix use after free in lineinfo_changed_notify
linke li (1):
net: mark racy access on sk->sk_rcvbuf
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/iio/health/maxim,max30102.yaml +1 -1
@@ -42,7 +42,7 @@ allOf: properties: compatible: contains: - const: maxim,max30100 + const: maxim,max30102 then: properties: maxim,green-led-current-microamp: false
Documentation/devicetree/bindings/net/mediatek,net.yaml +2 -20
@@ -337,8 +337,8 @@ allOf: minItems: 4 clocks: - minItems: 34 - maxItems: 34 + minItems: 24 + maxItems: 24 clock-names: items:
@@ -351,18 +351,6 @@ allOf: - const: ethwarp_wocpu1 - const: ethwarp_wocpu0 - const: esw - - const: netsys0 - - const: netsys1 - - const: sgmii_tx250m - - const: sgmii_rx250m - - const: sgmii2_tx250m - - const: sgmii2_rx250m - - const: top_usxgmii0_sel - - const: top_usxgmii1_sel - - const: top_sgm0_sel - - const: top_sgm1_sel - - const: top_xfi_phy0_xtal_sel - - const: top_xfi_phy1_xtal_sel - const: top_eth_gmii_sel - const: top_eth_refck_50m_sel - const: top_eth_sys_200m_sel
@@ -375,16 +363,10 @@ allOf: - const: top_netsys_sync_250m_sel - const: top_netsys_ppefb_250m_sel - const: top_netsys_warp_sel - - const: wocpu1 - - const: wocpu0 - const: xgp1 - const: xgp2 - const: xgp3 - mediatek,sgmiisys: - minItems: 2 - maxItems: 2 - patternProperties: "^mac@[0-1]$": type: object
Documentation/netlink/specs/rt_link.yaml +6 -0
@@ -1144,6 +1144,12 @@ attribute-sets: - name: mcast-querier-state type: binary + - + name: fdb-n-learned + type: u32 + - + name: fdb-max-learned + type: u32 - name: linkinfo-brport-attrs name-prefix: ifla-brport-
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 8 -SUBLEVEL = 9 +SUBLEVEL = 10 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/kernel/sleep.S +4 -0
@@ -127,6 +127,10 @@ cpu_resume_after_mmu: instr_sync #endif bl cpu_init @ restore the und/abt/irq banked regs +#if defined(CONFIG_KASAN) && defined(CONFIG_KASAN_STACK) + mov r0, sp + bl kasan_unpoison_task_stack_below +#endif mov r0, #0 @ return zero on success ldmfd sp!, {r4 - r11, pc} ENDPROC(cpu_resume_after_mmu)
arch/arm/net/bpf_jit_32.c +43 -13
91 lines not on this page · raw message
arch/arm64/boot/dts/mediatek/mt8183-kukui-jacuzzi-pico6.dts +2 -1
@@ -82,7 +82,8 @@ pins-clk { }; &mmc1 { - bt_reset: bt-reset { + bluetooth@2 { + reg = <2>; compatible = "mediatek,mt7921s-bluetooth"; pinctrl-names = "default"; pinctrl-0 = <&bt_pins_reset>;
arch/arm64/boot/dts/qcom/sa8155p-adp.dts +13 -17
@@ -367,6 +367,16 @@ queue0 { }; }; +&pmm8155au_1_gpios { + pmm8155au_1_sdc2_cd: sdc2-cd-default-state { + pins = "gpio4"; + function = "normal"; + input-enable; + bias-pull-up; + power-source = <0>; + }; +}; + &qupv3_id_1 { status = "okay"; };
@@ -384,10 +394,10 @@ &remoteproc_cdsp { &sdhc_2 { status = "okay"; - cd-gpios = <&tlmm 4 GPIO_ACTIVE_LOW>; + cd-gpios = <&pmm8155au_1_gpios 4 GPIO_ACTIVE_LOW>; pinctrl-names = "default", "sleep"; - pinctrl-0 = <&sdc2_on>; - pinctrl-1 = <&sdc2_off>; + pinctrl-0 = <&sdc2_on &pmm8155au_1_sdc2_cd>; + pinctrl-1 = <&sdc2_off &pmm8155au_1_sdc2_cd>; vqmmc-supply = <&vreg_l13c_2p96>; /* IO line power */ vmmc-supply = <&vreg_l17a_2p96>; /* Card power line */ bus-width = <4>;
@@ -505,13 +515,6 @@ data-pins { bias-pull-up; /* pull up */ drive-strength = <16>; /* 16 MA */ }; - - sd-cd-pins { - pins = "gpio96"; - function = "gpio"; - bias-pull-up; /* pull up */ - drive-strength = <2>; /* 2 MA */ - }; }; sdc2_off: sdc2-off-state {
@@ -532,13 +535,6 @@ data-pins { bias-pull-up; /* pull up */ drive-strength = <2>; /* 2 MA */ }; - - sd-cd-pins { - pins = "gpio96"; - function = "gpio"; - bias-pull-up; /* pull up */ - drive-strength = <2>; /* 2 MA */ - }; }; usb2phy_ac_en1_default: usb2phy-ac-en1-default-state {
arch/arm64/kvm/vgic/vgic-kvm-device.c +4 -4
@@ -338,12 +338,12 @@ int kvm_register_vgic_device(unsigned long type)int vgic_v2_parse_attr (struct kvm_device *dev,struct kvm_device_attr *attr,struct vgic_reg_attr *reg_attr) { -int cpuid; +int cpuid =FIELD_GET (KVM_DEV_ARM_VGIC_CPUID_MASK , attr->attr); - cpuid =FIELD_GET (KVM_DEV_ARM_VGIC_CPUID_MASK , attr->attr); - - reg_attr->vcpu =kvm_get_vcpu_by_id (dev->kvm, cpuid); reg_attr->addr = attr->attr &KVM_DEV_ARM_VGIC_OFFSET_MASK ; + reg_attr->vcpu =kvm_get_vcpu_by_id (dev->kvm, cpuid); +if (!reg_attr->vcpu) +return -EINVAL ;return 0 ; }
arch/arm64/net/bpf_jit_comp.c +3 -3
@@ -1738,15 +1738,15 @@ static void invoke_bpf_prog(struct jit_ctx *ctx, struct bpf_tramp_link *l,emit_call (enter_prog, ctx); +/* save return value to callee saved register x20 */ +emit (A64_MOV (1 ,A64_R (20 ),A64_R (0 )), ctx); +/* if (__bpf_prog_enter(prog) == 0) * goto skip_exec_of_prog; */ branch = ctx->image + ctx->idx;emit (A64_NOP , ctx); -/* save return value to callee saved register x20 */ -emit (A64_MOV (1 ,A64_R (20 ),A64_R (0 )), ctx); -emit (A64_ADD_I (1 ,A64_R (0 ),A64_SP , args_off), ctx);if (!p->jited)emit_addr_mov_i64 (A64_R (1 ), (const u64 )p->insnsi, ctx);
arch/mips/include/asm/ptrace.h +1 -1
@@ -159,7 +159,7 @@ extern unsigned long exception_ip(struct pt_regs *regs);#define exception_ip (regs) exception_ip(regs)#define profile_pc (regs) instruction_pointer(regs) -extern asmlinkage long syscall_trace_enter (struct pt_regs *regs,long syscall); +extern asmlinkage long syscall_trace_enter (struct pt_regs *regs); extern asmlinkage void syscall_trace_leave(struct pt_regs *regs);extern void die (const char *,struct pt_regs *)__noreturn ;
arch/mips/kernel/asm-offsets.c +1 -0
@@ -101,6 +101,7 @@ void output_thread_info_defines(void)OFFSET (TI_CPU , thread_info, cpu);OFFSET (TI_PRE_COUNT , thread_info, preempt_count);OFFSET (TI_REGS , thread_info, regs); +OFFSET (TI_SYSCALL , thread_info, syscall);DEFINE (_THREAD_SIZE,THREAD_SIZE );DEFINE (_THREAD_MASK,THREAD_MASK );DEFINE (_IRQ_STACK_SIZE,IRQ_STACK_SIZE );
arch/mips/kernel/ptrace.c +6 -9
@@ -1317,16 +1317,13 @@ long arch_ptrace(struct task_struct *child, long request,* Notification of system call entry/exit * - triggered by current->work.syscall_trace */ -asmlinkage long syscall_trace_enter (struct pt_regs *regs,long syscall) +asmlinkage long syscall_trace_enter (struct pt_regs *regs) {user_exit (); -current_thread_info ()->syscall = syscall; -if (test_thread_flag (TIF_SYSCALL_TRACE )) {if (ptrace_report_syscall_entry (regs))return -1 ; - syscall =current_thread_info ()->syscall; }#ifdef CONFIG_SECCOMP
@@ -1335,7 +1332,7 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall)struct seccomp_data sd;unsigned long args[6 ]; - sd.nr = syscall; + sd.nr =current_thread_info ()->syscall; sd.arch =syscall_get_arch (current);syscall_get_arguments (current, regs, args);for (i =0 ; i <6 ; i++)
@@ -1345,23 +1342,23 @@ asmlinkage long syscall_trace_enter(struct pt_regs *regs, long syscall) ret =__secure_computing (&sd);if (ret ==-1 )return ret; - syscall = current_thread_info()->syscall; }#endif if (unlikely (test_thread_flag (TIF_SYSCALL_TRACEPOINT )))trace_sys_enter (regs, regs->regs[2 ]); -audit_syscall_entry (syscall, regs->regs[4 ], regs->regs[5 ], +audit_syscall_entry (current_thread_info ()->syscall, + regs->regs[4 ], regs->regs[5 ], regs->regs[6 ], regs->regs[7 ]);/* * Negative syscall numbers are mistaken for rejected syscalls, but * won't have had the return value set appropriately, so we do so now. */ -if (syscall <0 ) +if (current_thread_info ()->syscall <0 )syscall_set_return_value (current, regs, -ENOSYS ,0 ); -return syscall; +return current_thread_info ()->syscall; }/*
arch/mips/kernel/scall32-o32.S +13 -10
@@ -77,6 +77,18 @@ loads_done: PTR_WD load_a7, bad_stack_a7 .previous + /* + * syscall number is in v0 unless we called syscall(__NR_###) + * where the real syscall number is in a0 + */ + subu t2, v0, __NR_O32_Linux + bnez t2, 1f /* __NR_syscall at offset 0 */ + LONG_S a0, TI_SYSCALL($28) # Save a0 as syscall number + b 2f +1: + LONG_S v0, TI_SYSCALL($28) # Save v0 as syscall number +2: + lw t0, TI_FLAGS($28) # syscall tracing enabled? li t1, _TIF_WORK_SYSCALL_ENTRY and t0, t1
@@ -114,16 +126,7 @@ syscall_trace_entry: SAVE_STATIC move a0, sp - /* - * syscall number is in v0 unless we called syscall(__NR_###) - * where the real syscall number is in a0 - */ - move a1, v0 - subu t2, v0, __NR_O32_Linux - bnez t2, 1f /* __NR_syscall at offset 0 */ - lw a1, PT_R4(sp) - -1: jal syscall_trace_enter + jal syscall_trace_enter bltz v0, 1f # seccomp failed? Skip syscall
arch/mips/kernel/scall64-n32.S +2 -1
@@ -44,6 +44,8 @@ NESTED(handle_sysn32, PT_SIZE, sp) sd a3, PT_R26(sp) # save a3 for syscall restarting + LONG_S v0, TI_SYSCALL($28) # Store syscall number + li t1, _TIF_WORK_SYSCALL_ENTRY LONG_L t0, TI_FLAGS($28) # syscall tracing enabled? and t0, t1, t0
@@ -72,7 +74,6 @@ syscall_common: n32_syscall_trace_entry: SAVE_STATIC move a0, sp - move a1, v0 jal syscall_trace_enter bltz v0, 1f # seccomp failed? Skip syscall
arch/mips/kernel/scall64-n64.S +2 -1
@@ -46,6 +46,8 @@ NESTED(handle_sys64, PT_SIZE, sp) sd a3, PT_R26(sp) # save a3 for syscall restarting + LONG_S v0, TI_SYSCALL($28) # Store syscall number + li t1, _TIF_WORK_SYSCALL_ENTRY LONG_L t0, TI_FLAGS($28) # syscall tracing enabled? and t0, t1, t0
@@ -82,7 +84,6 @@ n64_syscall_exit: syscall_trace_entry: SAVE_STATIC move a0, sp - move a1, v0 jal syscall_trace_enter bltz v0, 1f # seccomp failed? Skip syscall
arch/mips/kernel/scall64-o32.S +17 -16
@@ -79,6 +79,22 @@ loads_done: PTR_WD load_a7, bad_stack_a7 .previous + /* + * absolute syscall number is in v0 unless we called syscall(__NR_###) + * where the real syscall number is in a0 + * note: NR_syscall is the first O32 syscall but the macro is + * only defined when compiling with -mabi=32 (CONFIG_32BIT) + * therefore __NR_O32_Linux is used (4000) + */ + + subu t2, v0, __NR_O32_Linux + bnez t2, 1f /* __NR_syscall at offset 0 */ + LONG_S a0, TI_SYSCALL($28) # Save a0 as syscall number + b 2f +1: + LONG_S v0, TI_SYSCALL($28) # Save v0 as syscall number +2: + li t1, _TIF_WORK_SYSCALL_ENTRY LONG_L t0, TI_FLAGS($28) # syscall tracing enabled? and t0, t1, t0
@@ -113,22 +129,7 @@ trace_a_syscall: sd a7, PT_R11(sp) # For indirect syscalls move a0, sp - /* - * absolute syscall number is in v0 unless we called syscall(__NR_###) - * where the real syscall number is in a0 - * note: NR_syscall is the first O32 syscall but the macro is - * only defined when compiling with -mabi=32 (CONFIG_32BIT) - * therefore __NR_O32_Linux is used (4000) - */ - .set push - .set reorder - subu t1, v0, __NR_O32_Linux - move a1, v0 - bnez t1, 1f /* __NR_syscall at offset 0 */ - ld a1, PT_R4(sp) /* Arg1 for __NR_syscall case */ - .set pop - -1: jal syscall_trace_enter + jal syscall_trace_enter bltz v0, 1f # seccomp failed? Skip syscall
arch/powerpc/crypto/chacha-p10-glue.c +7 -1
@@ -197,6 +197,9 @@ static struct skcipher_alg algs[] = {static int __init chacha_p10_init (void ) { +if (!cpu_has_feature (CPU_FTR_ARCH_31 )) +return 0 ; +static_branch_enable (&have_p10);return crypto_register_skciphers (algs,ARRAY_SIZE (algs));
@@ -204,10 +207,13 @@ static int __init chacha_p10_init(void) static void __exit chacha_p10_exit(void) { +if (!static_branch_likely (&have_p10)) +return ; +crypto_unregister_skciphers (algs,ARRAY_SIZE (algs)); } -module_cpu_feature_match (PPC_MODULE_FEATURE_P10 , chacha_p10_init); +module_init (chacha_p10_init);module_exit (chacha_p10_exit);MODULE_DESCRIPTION ("ChaCha and XChaCha stream ciphers (P10 accelerated)" );
arch/powerpc/include/asm/plpks.h +2 -3
@@ -44,9 +44,8 @@#define PLPKS_MAX_DATA_SIZE 4000// Timeouts for PLPKS operations -#define PLPKS_MAX_TIMEOUT 5000 // msec -#define PLPKS_FLUSH_SLEEP 10 // msec -#define PLPKS_FLUSH_SLEEP_RANGE 400 +#define PLPKS_MAX_TIMEOUT (5 * USEC_PER_SEC) +#define PLPKS_FLUSH_SLEEP 10000 // usecstruct plpks_var {char *component;
arch/powerpc/platforms/pseries/iommu.c +8 -0
@@ -786,8 +786,16 @@ static void pci_dma_bus_setup_pSeriesLP(struct pci_bus *bus)* parent bus. During reboot, there will be ibm,dma-window property to * define DMA window. For kdump, there will at least be default window or DDW * or both. +* There is an exception to the above. In case the PE goes into frozen +* state, firmware may not provide ibm,dma-window property at the time +* of LPAR boot up. */ +if (!pdn) { +pr_debug (" no ibm,dma-window property !\n" ); +return ; + } + ppci =PCI_DN (pdn); pr_debug(" parent is %pOF, iommu_table: 0x%p\n",
arch/powerpc/platforms/pseries/plpks.c +5 -5
@@ -415,8 +415,7 @@ static int plpks_confirm_object_flushed(struct label *label,break ; } -usleep_range (PLPKS_FLUSH_SLEEP , -PLPKS_FLUSH_SLEEP +PLPKS_FLUSH_SLEEP_RANGE ); +fsleep (PLPKS_FLUSH_SLEEP ); timeout = timeout +PLPKS_FLUSH_SLEEP ; }while (timeout <PLPKS_MAX_TIMEOUT );
@@ -464,9 +463,10 @@ int plpks_signed_update_var(struct plpks_var *var, u64 flags) continuetoken = retbuf[0 ];if (pseries_status_to_err (rc) == -EBUSY ) { -int delay_ms =get_longbusy_msecs (rc); -mdelay (delay_ms); - timeout += delay_ms; +int delay_us =get_longbusy_msecs (rc) *1000 ; + +fsleep (delay_us); + timeout += delay_us; } rc =pseries_status_to_err (rc); }while (rc == -EBUSY && timeout <PLPKS_MAX_TIMEOUT );
arch/riscv/net/bpf_jit_comp64.c +3 -3
@@ -740,6 +740,9 @@ static int invoke_bpf_prog(struct bpf_tramp_link *l, int args_off, int retval_ofif (ret)return ret; +/* store prog start time */ +emit_mv (RV_REG_S1 ,RV_REG_A0 , ctx); +/* if (__bpf_prog_enter(prog) == 0) * goto skip_exec_of_prog; */
@@ -747,9 +750,6 @@ static int invoke_bpf_prog(struct bpf_tramp_link *l, int args_off, int retval_of/* nop reserved for conditional jump */ emit (rv_nop (), ctx); -/* store prog start time */ -emit_mv (RV_REG_S1 ,RV_REG_A0 , ctx); -/* arg1: &args_off */ emit_addi (RV_REG_A0 ,RV_REG_FP , -args_off, ctx);if (!p->jited)
arch/s390/include/asm/dwarf.h +1 -0
@@ -9,6 +9,7 @@#define CFI_DEF_CFA_OFFSET .cfi_def_cfa_offset#define CFI_ADJUST_CFA_OFFSET .cfi_adjust_cfa_offset#define CFI_RESTORE .cfi_restore +#define CFI_REL_OFFSET .cfi_rel_offset#ifdef CONFIG_AS_CFI_VAL_OFFSET #define CFI_VAL_OFFSET .cfi_val_offset
arch/s390/kernel/vdso64/vdso_user_wrapper.S +2 -0
@@ -24,8 +24,10 @@ __kernel_\func: CFI_DEF_CFA_OFFSET (STACK_FRAME_OVERHEAD + WRAPPER_FRAME_SIZE) CFI_VAL_OFFSET 15, -STACK_FRAME_OVERHEAD stg %r14,STACK_FRAME_OVERHEAD(%r15) + CFI_REL_OFFSET 14, STACK_FRAME_OVERHEAD brasl %r14,__s390_vdso_\func lg %r14,STACK_FRAME_OVERHEAD(%r15) + CFI_RESTORE 14 aghi %r15,WRAPPER_FRAME_SIZE CFI_DEF_CFA_OFFSET STACK_FRAME_OVERHEAD CFI_RESTORE 15
arch/s390/mm/gmap.c +1 -1
@@ -2659,7 +2659,7 @@ static int __s390_enable_skey_hugetlb(pte_t *pte, unsigned long addr,return 0 ; start =pmd_val (*pmd) &HPAGE_MASK ; - end = start +HPAGE_SIZE -1 ; + end = start +HPAGE_SIZE ;__storage_key_init_range (start, end);set_bit (PG_arch_1, &page->flags);cond_resched ();
arch/s390/mm/hugetlbpage.c +1 -1
@@ -139,7 +139,7 @@ static void clear_huge_pte_skeys(struct mm_struct *mm, unsigned long rste) }if (!test_and_set_bit (PG_arch_1, &page->flags)) -__storage_key_init_range (paddr, paddr + size -1 ); +__storage_key_init_range (paddr, paddr + size); } void __set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
arch/x86/kernel/apic/apic.c +11 -5
@@ -1808,7 +1808,7 @@ void x2apic_setup(void)__x2apic_enable (); } -static __init void apic_set_fixmap (void ); +static __init void apic_set_fixmap (bool read_apic);static __init void x2apic_disable (void ) {
@@ -1830,7 +1830,12 @@ static __init void x2apic_disable(void) }__x2apic_disable (); -apic_set_fixmap (); +/* +* Don't reread the APIC ID as it was already done from +* check_x2apic() and the APIC driver still is a x2APIC variant, +* which fails to do the read after x2APIC was disabled. +*/ +apic_set_fixmap (false); }static __init void x2apic_enable (void )
@@ -2095,13 +2100,14 @@ void __init init_apic_mappings(void) } } -static __init void apic_set_fixmap (void ) +static __init void apic_set_fixmap (bool read_apic) {set_fixmap_nocache (FIX_APIC_BASE , mp_lapic_addr); apic_mmio_base =APIC_BASE ;apic_printk (APIC_VERBOSE ,"mapped APIC to %16lx (%16lx)\n" , apic_mmio_base, mp_lapic_addr); -apic_read_boot_cpu_id (false); +if (read_apic) +apic_read_boot_cpu_id (false); }void __init register_lapic_address (unsigned long address)
@@ -2111,7 +2117,7 @@ void __init register_lapic_address(unsigned long address) mp_lapic_addr = address;if (!x2apic_mode) -apic_set_fixmap (); +apic_set_fixmap (true); }/*
arch/xtensa/include/asm/processor.h +4 -4
@@ -115,9 +115,9 @@#define MAKE_RA_FOR_CALL (ra,ws) (((ra) & 0x3fffffff) | (ws) << 30)/* Convert return address to a valid pc -* Note: We assume that the stack pointer is in the same 1GB ranges as the ra +* Note: 'text' is the address within the same 1GB range as the ra */ -#define MAKE_PC_FROM_RA (ra,sp) (((ra) & 0x3fffffff) | ((sp) & 0xc0000000)) +#define MAKE_PC_FROM_RA (ra, text) (((ra) & 0x3fffffff) | ((unsigned long)(text) & 0xc0000000))#elif defined(__XTENSA_CALL0_ABI__)
@@ -127,9 +127,9 @@#define MAKE_RA_FOR_CALL (ra, ws) (ra)/* Convert return address to a valid pc -* Note: We assume that the stack pointer is in the same 1GB ranges as the ra +* Note: 'text' is not used as 'ra' is always the full address */ -#define MAKE_PC_FROM_RA (ra, sp) (ra) +#define MAKE_PC_FROM_RA (ra, text) (ra)#else #error Unsupported Xtensa ABI
arch/xtensa/include/asm/ptrace.h +1 -1
@@ -87,7 +87,7 @@ struct pt_regs {# define user_mode (regs) (((regs)->ps & 0x00000020)!=0)# define instruction_pointer (regs) ((regs)->pc)# define return_pointer (regs) (MAKE_PC_FROM_RA((regs)->areg[0], \ - (regs)->areg[1])) + (regs)->pc))# ifndef CONFIG_SMP # define profile_pc (regs) instruction_pointer(regs)
arch/xtensa/kernel/process.c +3 -2
@@ -47,6 +47,7 @@#include <asm/asm-offsets.h> #include <asm/regs.h> #include <asm/hw_breakpoint.h> +#include <asm/sections.h> #include <asm/traps.h> extern void ret_from_fork (void );
@@ -380,7 +381,7 @@ unsigned long __get_wchan(struct task_struct *p)int count =0 ; sp = p->thread.sp; - pc =MAKE_PC_FROM_RA (p->thread.ra, p->thread.sp); + pc =MAKE_PC_FROM_RA (p->thread.ra, _text); do { if (sp < stack_page + sizeof(struct task_struct) ||
@@ -392,7 +393,7 @@ unsigned long __get_wchan(struct task_struct *p)/* Stack layout: sp-4: ra, sp-3: sp' */ - pc =MAKE_PC_FROM_RA (SPILL_SLOT (sp,0 ), sp); + pc =MAKE_PC_FROM_RA (SPILL_SLOT (sp,0 ), _text); sp =SPILL_SLOT (sp,1 ); }while (count++ <16 );return 0 ;
arch/xtensa/kernel/stacktrace.c +2 -1
@@ -13,6 +13,7 @@#include <linux/stacktrace.h> #include <asm/ftrace.h> +#include <asm/sections.h> #include <asm/stacktrace.h> #include <asm/traps.h> #include <linux/uaccess.h>
@@ -189,7 +190,7 @@ void walk_stackframe(unsigned long *sp,if (a1 <= (unsigned long )sp)break ; - frame.pc =MAKE_PC_FROM_RA (a0, a1); + frame.pc =MAKE_PC_FROM_RA (a0, _text); frame.sp = a1;if (fn (&frame, data))
block/blk-iocost.c +9 -5
@@ -1347,7 +1347,7 @@ static bool iocg_kick_delay(struct ioc_gq *iocg, struct ioc_now *now) {struct ioc *ioc = iocg->ioc;struct blkcg_gq *blkg =iocg_to_blkg (iocg); -u64 tdelta, delay, new_delay; +u64 tdelta, delay, new_delay, shift;s64 vover, vover_pct;u32 hwa;
@@ -1362,8 +1362,9 @@ static bool iocg_kick_delay(struct ioc_gq *iocg, struct ioc_now *now)/* calculate the current delay in effect - 1/2 every second */ tdelta = now->now - iocg->delay_at; -if (iocg->delay) - delay = iocg->delay >>div64_u64 (tdelta,USEC_PER_SEC ); + shift =div64_u64 (tdelta,USEC_PER_SEC ); +if (iocg->delay && shift <BITS_PER_LONG ) + delay = iocg->delay >> shift;else delay =0 ;
@@ -1438,8 +1439,11 @@ static void iocg_pay_debt(struct ioc_gq *iocg, u64 abs_vpay,lockdep_assert_held (&iocg->ioc->lock);lockdep_assert_held (&iocg->waitq.lock); -/* make sure that nobody messed with @iocg */ -WARN_ON_ONCE (list_empty (&iocg->active_list)); +/* +* make sure that nobody messed with @iocg. Check iocg->pd.online +* to avoid warn when removing blkcg or disk. +*/ +WARN_ON_ONCE (list_empty (&iocg->active_list) && iocg->pd.online);WARN_ON_ONCE (iocg->inuse >1 ); iocg->abs_vdebt -=min (abs_vpay, iocg->abs_vdebt);
block/ioctl.c +3 -2
@@ -89,7 +89,7 @@ static int blk_ioctl_discard(struct block_device *bdev, blk_mode_t mode, unsigned long arg) {uint64_t range[2 ]; -uint64_t start, len; +uint64_t start, len, end;struct inode *inode = bdev->bd_inode;int err;
@@ -110,7 +110,8 @@ static int blk_ioctl_discard(struct block_device *bdev, blk_mode_t mode,if (len &511 )return -EINVAL ; -if (start + len >bdev_nr_bytes (bdev)) +if (check_add_overflow (start, len, &end) || + end >bdev_nr_bytes (bdev))return -EINVAL ;filemap_invalidate_lock (inode->i_mapping);
drivers/accel/ivpu/ivpu_drv.c +10 -10
@@ -1,6 +1,6 @@// SPDX-License-Identifier: GPL-2.0-only /* -* Copyright (C) 2020-2023 Intel Corporation +* Copyright (C) 2020-2024 Intel Corporation */ #include <linux/firmware.h>
@@ -371,12 +371,15 @@ int ivpu_shutdown(struct ivpu_device *vdev) {int ret; -ivpu_prepare_for_reset (vdev); +/* Save PCI state before powering down as it sometimes gets corrupted if NPU hangs */ +pci_save_state (to_pci_dev (vdev->drm.dev)); ret =ivpu_hw_power_down (vdev);if (ret)ivpu_warn (vdev,"Failed to power down HW: %d\n" , ret); +pci_set_power_state (to_pci_dev (vdev->drm.dev), PCI_D3hot); +return ret; }
@@ -543,11 +546,11 @@ static int ivpu_dev_init(struct ivpu_device *vdev)/* Power up early so the rest of init code can access VPU registers */ ret =ivpu_hw_power_up (vdev);if (ret) - goto err_power_down; + goto err_shutdown; ret =ivpu_mmu_global_context_init (vdev);if (ret) - goto err_power_down; + goto err_shutdown; ret =ivpu_mmu_init (vdev);if (ret)
@@ -584,10 +587,8 @@ static int ivpu_dev_init(struct ivpu_device *vdev)ivpu_mmu_reserved_context_fini (vdev); err_mmu_gctx_fini:ivpu_mmu_global_context_fini (vdev); -err_power_down: -ivpu_hw_power_down (vdev); -if (IVPU_WA (d3hot_after_power_off)) -pci_set_power_state (to_pci_dev (vdev->drm.dev), PCI_D3hot); +err_shutdown: +ivpu_shutdown (vdev); err_xa_destroy:xa_destroy (&vdev->submitted_jobs_xa);xa_destroy (&vdev->context_xa);
@@ -610,9 +611,8 @@ static void ivpu_bo_unbind_all_user_contexts(struct ivpu_device *vdev)static void ivpu_dev_fini (struct ivpu_device *vdev) {ivpu_pm_disable (vdev); +ivpu_prepare_for_reset (vdev);ivpu_shutdown (vdev); -if (IVPU_WA (d3hot_after_power_off)) -pci_set_power_state (to_pci_dev (vdev->drm.dev), PCI_D3hot);ivpu_jobs_abort_all (vdev);ivpu_job_done_consumer_fini (vdev);
drivers/accel/ivpu/ivpu_drv.h +1 -2
@@ -1,6 +1,6 @@/* SPDX-License-Identifier: GPL-2.0-only */ /* -* Copyright (C) 2020-2023 Intel Corporation +* Copyright (C) 2020-2024 Intel Corporation */ #ifndef __IVPU_DRV_H__
@@ -87,7 +87,6 @@struct ivpu_wa_table {bool punit_disabled;bool clear_runtime_mem; -bool d3hot_after_power_off;bool interrupt_clear_with_0;bool disable_clock_relinquish;bool disable_d0i3_msg;
drivers/accel/ivpu/ivpu_hw_37xx.c +1 -3
@@ -1,6 +1,6 @@// SPDX-License-Identifier: GPL-2.0-only /* -* Copyright (C) 2020-2023 Intel Corporation +* Copyright (C) 2020-2024 Intel Corporation */ #include "ivpu_drv.h"
@@ -75,7 +75,6 @@ static void ivpu_hw_wa_init(struct ivpu_device *vdev) { vdev->wa.punit_disabled = false; vdev->wa.clear_runtime_mem = false; - vdev->wa.d3hot_after_power_off = true;REGB_WR32 (VPU_37XX_BUTTRESS_INTERRUPT_STAT ,BUTTRESS_ALL_IRQ_MASK );if (REGB_RD32 (VPU_37XX_BUTTRESS_INTERRUPT_STAT ) ==BUTTRESS_ALL_IRQ_MASK ) {
@@ -86,7 +85,6 @@ static void ivpu_hw_wa_init(struct ivpu_device *vdev)IVPU_PRINT_WA (punit_disabled);IVPU_PRINT_WA (clear_runtime_mem); -IVPU_PRINT_WA (d3hot_after_power_off);IVPU_PRINT_WA (interrupt_clear_with_0); }
drivers/accel/ivpu/ivpu_mmu.c +4 -4
@@ -278,7 +278,7 @@ static const char *ivpu_mmu_event_to_str(u32 cmd)case IVPU_MMU_EVT_F_VMS_FETCH :return "Fetch of VMS caused external abort" ;default : -return "Unknown CMDQ command" ; +return "Unknown event" ; } }
@@ -286,15 +286,15 @@ static const char *ivpu_mmu_cmdq_err_to_str(u32 err) {switch (err) {case IVPU_MMU_CERROR_NONE : -return "No CMDQ Error" ; +return "No error" ;case IVPU_MMU_CERROR_ILL :return "Illegal command" ;case IVPU_MMU_CERROR_ABT : -return "External abort on CMDQ read" ; +return "External abort on command queue read" ;case IVPU_MMU_CERROR_ATC_INV_SYNC :return "Sync failed to complete ATS invalidation" ;default : -return "Unknown CMDQ Error" ; +return "Unknown error" ; } }
drivers/accel/ivpu/ivpu_pm.c +3 -6
@@ -1,6 +1,6 @@// SPDX-License-Identifier: GPL-2.0-only /* -* Copyright (C) 2020-2023 Intel Corporation +* Copyright (C) 2020-2024 Intel Corporation */ #include <linux/highmem.h>
@@ -58,14 +58,11 @@ static int ivpu_suspend(struct ivpu_device *vdev) {int ret; -/* Save PCI state before powering down as it sometimes gets corrupted if NPU hangs */ -pci_save_state (to_pci_dev (vdev->drm.dev)); +ivpu_prepare_for_reset (vdev); ret =ivpu_shutdown (vdev);if (ret) -ivpu_err (vdev,"Failed to shutdown VPU: %d\n" , ret); - -pci_set_power_state (to_pci_dev (vdev->drm.dev), PCI_D3hot); +ivpu_err (vdev,"Failed to shutdown NPU: %d\n" , ret);return ret; }
drivers/ata/sata_gemini.c +4 -1
@@ -200,7 +200,10 @@ int gemini_sata_start_bridge(struct sata_gemini *sg, unsigned int bridge) pclk = sg->sata0_pclk; else pclk = sg->sata1_pclk; -clk_enable (pclk); + ret =clk_enable (pclk); +if (ret) +return ret; +msleep (10 );/* Do not keep clocking a bridge that is not online */
drivers/base/regmap/regmap.c +37 -0
@@ -2836,6 +2836,43 @@ int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val) }EXPORT_SYMBOL_GPL (regmap_read); +/** +* regmap_read_bypassed() - Read a value from a single register direct +* from the device, bypassing the cache +* +* @map: Register map to read from +* @reg: Register to be read from +* @val: Pointer to store read value +* +* A value of zero will be returned on success, a negative errno will +* be returned in error cases. +*/ +int regmap_read_bypassed (struct regmap *map,unsigned int reg,unsigned int *val) +{ +int ret; +bool bypass, cache_only; + +if (!IS_ALIGNED (reg, map->reg_stride)) +return -EINVAL ; + + map->lock (map->lock_arg); + + bypass = map->cache_bypass; + cache_only = map->cache_only; + map->cache_bypass = true; + map->cache_only = false; + + ret =_regmap_read (map, reg, val); + + map->cache_bypass = bypass; + map->cache_only = cache_only; + + map->unlock (map->lock_arg); + +return ret; +} +EXPORT_SYMBOL_GPL (regmap_read_bypassed); +/** * regmap_raw_read() - Read raw data from the device *
drivers/bluetooth/btqca.c +125 -13
256 lines not on this page · raw message
drivers/bluetooth/btqca.h +2 -1
@@ -29,6 +29,7 @@#define EDL_PATCH_CONFIG_RES_EVT (0x00)#define QCA_DISABLE_LOGGING_SUB_OP (0x14) +#define EDL_TAG_ID_BD_ADDR 2#define EDL_TAG_ID_HCI (17)#define EDL_TAG_ID_DEEP_SLEEP (27)
@@ -47,7 +48,6 @@#define get_soc_ver (soc_id, rom_ver) \ ((le32_to_cpu(soc_id) << 16) | (le16_to_cpu(rom_ver))) -#define QCA_FW_BUILD_VER_LEN 255#define QCA_HSP_GF_SOC_ID 0x1200#define QCA_HSP_GF_SOC_MASK 0x0000ff00
@@ -94,6 +94,7 @@ struct qca_fw_config {uint8_t user_baud_rate;enum qca_tlv_dnld_mode dnld_mode;enum qca_tlv_dnld_mode dnld_type; +bdaddr_t bdaddr; };struct edl_event_hdr {
drivers/bluetooth/hci_qca.c +0 -2
@@ -1908,8 +1908,6 @@ static int qca_setup(struct hci_uart *hu)case QCA_WCN6750 :case QCA_WCN6855 :case QCA_WCN7850 : -set_bit (HCI_QUIRK_USE_BDADDR_PROPERTY , &hdev->quirks); - qcadev =serdev_device_get_drvdata (hu->serdev);if (qcadev->bdaddr_property_broken)set_bit (HCI_QUIRK_BDADDR_PROPERTY_BROKEN , &hdev->quirks);
drivers/clk/clk.c +5 -7
@@ -4552,7 +4552,8 @@ void clk_unregister(struct clk *clk)if (ops == &clk_nodrv_ops) {pr_err ("%s: unregistered clock: %s\n" , __func__, clk->core->name); - goto unlock; +clk_prepare_unlock (); +return ; }/* * Assign empty clock ops for consumers that might still hold
@@ -4586,11 +4587,10 @@ void clk_unregister(struct clk *clk)if (clk->core->protect_count)pr_warn ("%s: unregistering protected clock: %s\n" , __func__, clk->core->name); +clk_prepare_unlock ();kref_put (&clk->core->ref, __clk_release);free_clk (clk); -unlock: -clk_prepare_unlock (); }EXPORT_SYMBOL_GPL (clk_unregister);
@@ -4749,13 +4749,11 @@ void __clk_put(struct clk *clk)if (clk->min_rate >0 || clk->max_rate <ULONG_MAX )clk_set_rate_range_nolock (clk,0 ,ULONG_MAX ); - owner = clk->core->owner; -kref_put (&clk->core->ref, __clk_release); -clk_prepare_unlock (); + owner = clk->core->owner; +kref_put (&clk->core->ref, __clk_release);module_put (owner); -free_clk (clk); }
drivers/clk/qcom/clk-smd-rpm.c +1 -0
@@ -768,6 +768,7 @@ static struct clk_smd_rpm *msm8976_clks[] = {static const struct rpm_smd_clk_desc rpm_clk_msm8976 = { .clks = msm8976_clks, + .num_clks =ARRAY_SIZE (msm8976_clks), .icc_clks = bimc_pcnoc_snoc_smmnoc_icc_clks, .num_icc_clks =ARRAY_SIZE (bimc_pcnoc_snoc_smmnoc_icc_clks), };
drivers/clk/samsung/clk-exynos-clkout.c +10 -3
@@ -13,9 +13,9 @@#include <linux/io.h> #include <linux/of.h> #include <linux/of_address.h> +#include <linux/of_device.h> #include <linux/platform_device.h> #include <linux/pm.h> -#include <linux/property.h> #define EXYNOS_CLKOUT_NR_CLKS 1#define EXYNOS_CLKOUT_PARENTS 32
@@ -84,17 +84,24 @@ MODULE_DEVICE_TABLE(of, exynos_clkout_ids);static int exynos_clkout_match_parent_dev (struct device *dev,u32 *mux_mask) {const struct exynos_clkout_variant *variant; +const struct of_device_id *match;if (!dev->parent) {dev_err (dev,"not instantiated from MFD\n" );return -EINVAL ; } - variant =device_get_match_data (dev->parent); -if (!variant) { +/* +* 'exynos_clkout_ids' arrays is not the ids array matched by +* the dev->parent driver, so of_device_get_match_data() or +* device_get_match_data() cannot be used here. +*/ + match =of_match_device (exynos_clkout_ids, dev->parent); +if (!match) {dev_err (dev,"cannot match parent device\n" );return -EINVAL ; } + variant = match->data; *mux_mask = variant->mux_mask;
drivers/clk/sunxi-ng/ccu-sun50i-a64.c +2 -0
@@ -182,6 +182,8 @@ static struct ccu_nkm pll_mipi_clk = { &ccu_nkm_ops, CLK_SET_RATE_UNGATE | CLK_SET_RATE_PARENT), .features = CCU_FEATURE_CLOSEST_RATE, + .min_rate = 500000000, + .max_rate = 1400000000, }, };
drivers/clk/sunxi-ng/ccu-sun50i-h6.c +17 -2
@@ -1181,11 +1181,18 @@ static const u32 usb2_clk_regs[] = { SUN50I_H6_USB3_CLK_REG, }; +static struct ccu_mux_nb sun50i_h6_cpu_nb = { + .common = &cpux_clk.common, + .cm = &cpux_clk.mux, + .delay_us =1 , + .bypass_index =0 ,/* index of 24 MHz oscillator */ +}; +static int sun50i_h6_ccu_probe (struct platform_device *pdev) {void __iomem *reg; +int i, ret;u32 val; -int i; reg =devm_platform_ioremap_resource (pdev,0 );if (IS_ERR (reg))
@@ -1252,7 +1259,15 @@ static int sun50i_h6_ccu_probe(struct platform_device *pdev) val |=BIT (24 );writel (val, reg +SUN50I_H6_HDMI_CEC_CLK_REG ); -return devm_sunxi_ccu_probe (&pdev->dev, reg, &sun50i_h6_ccu_desc); + ret =devm_sunxi_ccu_probe (&pdev->dev, reg, &sun50i_h6_ccu_desc); +if (ret) +return ret; + +/* Reparent CPU during PLL CPUX rate changes */ +ccu_mux_notifier_register (pll_cpux_clk.common.hw.clk, + &sun50i_h6_cpu_nb); + +return 0 ; }static const struct of_device_id sun50i_h6_ccu_ids[] = {
drivers/clk/sunxi-ng/ccu_common.c +19 -0
@@ -44,6 +44,16 @@ bool ccu_is_better_rate(struct ccu_common *common,unsigned long current_rate, unsigned long best_rate) { + unsigned long min_rate, max_rate; + +clk_hw_get_rate_range (&common->hw, &min_rate, &max_rate); + +if (current_rate > max_rate) +return false; + +if (current_rate < min_rate) +return false; +if (common->features &CCU_FEATURE_CLOSEST_RATE )return abs (current_rate - target_rate) <abs (best_rate - target_rate);
@@ -122,6 +132,7 @@ static int sunxi_ccu_probe(struct sunxi_ccu *ccu, struct device *dev,for (i =0 ; i < desc->hw_clks->num ; i++) {struct clk_hw *hw = desc->hw_clks->hws[i]; +struct ccu_common *common =hw_to_ccu_common (hw);const char *name;if (!hw)
@@ -136,6 +147,14 @@ static int sunxi_ccu_probe(struct sunxi_ccu *ccu, struct device *dev,pr_err ("Couldn't register clock %d - %s\n" , i, name); goto err_clk_unreg; } + +if (common->max_rate) +clk_hw_set_rate_range (hw, common->min_rate, + common->max_rate); +else +WARN (common->min_rate, +"No max_rate, ignoring min_rate of clock %d - %s\n" , + i, name); } ret = of_clk_add_hw_provider(node, of_clk_hw_onecell_get,
drivers/clk/sunxi-ng/ccu_common.h +3 -0
@@ -31,6 +31,9 @@ struct ccu_common {u16 lock_reg;u32 prediv; +unsigned long min_rate; +unsigned long max_rate; +unsigned long features;spinlock_t *lock;struct clk_hw hw;
drivers/dma/idxd/cdev.c +77 -0
95 lines not on this page · raw message
drivers/dma/idxd/idxd.h +3 -0
@@ -288,6 +288,7 @@ struct idxd_driver_data {int evl_cr_off;int cr_status_off;int cr_result_off; +bool user_submission_safe;load_device_defaults_fn_t load_device_defaults; };
@@ -374,6 +375,8 @@ struct idxd_device {struct dentry *dbgfs_dir;struct dentry *dbgfs_evl_file; + +bool user_submission_safe; };static inline unsigned int evl_ent_size (struct idxd_device *idxd)
drivers/dma/idxd/init.c +4 -0
@@ -47,6 +47,7 @@ static struct idxd_driver_data idxd_driver_data[] = { .align = 32, .dev_type = &dsa_device_type, .evl_cr_off = offsetof(struct dsa_evl_entry, cr), + .user_submission_safe = false, /* See INTEL-SA-01084 security advisory */ .cr_status_off = offsetof(struct dsa_completion_record, status), .cr_result_off = offsetof(struct dsa_completion_record, result), },
@@ -57,6 +58,7 @@ static struct idxd_driver_data idxd_driver_data[] = { .align = 64, .dev_type = &iax_device_type, .evl_cr_off = offsetof(struct iax_evl_entry, cr), + .user_submission_safe = false, /* See INTEL-SA-01084 security advisory */ .cr_status_off = offsetof(struct iax_completion_record, status), .cr_result_off = offsetof(struct iax_completion_record, error_code), .load_device_defaults = idxd_load_iaa_device_defaults,
@@ -774,6 +776,8 @@ static int idxd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)dev_info (&pdev->dev,"Intel(R) Accelerator Device (v%x)\n" , idxd->hw.version); + idxd->user_submission_safe = data->user_submission_safe; +return 0 ; err_dev_register:
drivers/dma/idxd/registers.h +0 -3
@@ -6,9 +6,6 @@#include <uapi/linux/idxd.h> /* PCI Config */ -#define PCI_DEVICE_ID_INTEL_DSA_SPR0 0x0b25 -#define PCI_DEVICE_ID_INTEL_IAX_SPR0 0x0cfe -#define DEVICE_VERSION_1 0x100#define DEVICE_VERSION_2 0x200
drivers/dma/idxd/sysfs.c +25 -2
@@ -1197,12 +1197,35 @@ static ssize_t wq_enqcmds_retries_store(struct device *dev, struct device_attribstatic struct device_attribute dev_attr_wq_enqcmds_retries =__ATTR (enqcmds_retries,0644 , wq_enqcmds_retries_show, wq_enqcmds_retries_store); +static ssize_t op_cap_show_common (struct device *dev,char *buf,unsigned long *opcap_bmap) +{ +ssize_t pos; +int i; + + pos =0 ; +for (i =IDXD_MAX_OPCAP_BITS /64 -1 ; i >=0 ; i--) { +unsigned long val = opcap_bmap[i]; + +/* On systems where direct user submissions are not safe, we need to clear out +* the BATCH capability from the capability mask in sysfs since we cannot support +* that command on such systems. +*/ +if (i ==DSA_OPCODE_BATCH /64 && !confdev_to_idxd (dev)->user_submission_safe) +clear_bit (DSA_OPCODE_BATCH %64 , &val); + + pos +=sysfs_emit_at (buf, pos,"%*pb" ,64 , &val); + pos +=sysfs_emit_at (buf, pos,"%c" , i ==0 ?'\n' :',' ); + } + +return pos; +} +static ssize_t wq_op_config_show (struct device *dev,struct device_attribute *attr,char *buf) {struct idxd_wq *wq =confdev_to_wq (dev); -return sysfs_emit (buf,"%*pb\n" ,IDXD_MAX_OPCAP_BITS , wq->opcap_bmap); +return op_cap_show_common (dev, buf, wq->opcap_bmap); }static int idxd_verify_supported_opcap (struct idxd_device *idxd,unsigned long *opmask)
@@ -1455,7 +1478,7 @@ static ssize_t op_cap_show(struct device *dev, {struct idxd_device *idxd =confdev_to_idxd (dev); -return sysfs_emit (buf,"%*pb\n" ,IDXD_MAX_OPCAP_BITS , idxd->opcap_bmap); +return op_cap_show_common (dev, buf, idxd->opcap_bmap); }static DEVICE_ATTR_RO (op_cap);
drivers/edac/versal_edac.c +2 -2
@@ -423,7 +423,7 @@ static void handle_error(struct mem_ctl_info *mci, struct ecc_status *stat) convert_to_physical(priv, pinf), pinf.burstpos);edac_mc_handle_error (HW_EVENT_ERR_CORRECTED , mci, - priv->ce_cnt,0 ,0 ,0 ,0 ,0 ,-1 , +1 ,0 ,0 ,0 ,0 ,0 ,-1 , priv->message,"" ); }
@@ -436,7 +436,7 @@ static void handle_error(struct mem_ctl_info *mci, struct ecc_status *stat) convert_to_physical(priv, pinf), pinf.burstpos);edac_mc_handle_error (HW_EVENT_ERR_UNCORRECTED , mci, - priv->ue_cnt,0 ,0 ,0 ,0 ,0 ,-1 , +1 ,0 ,0 ,0 ,0 ,0 ,-1 , priv->message,"" ); }
drivers/firewire/nosy.c +4 -2
@@ -148,10 +148,12 @@ packet_buffer_get(struct client *client, char __user *data, size_t user_length)if (atomic_read (&buffer->size) ==0 )return -ENODEV ; -/* FIXME: Check length <= user_length. */ + length = buffer->head->length; + +if (length > user_length) +return 0 ; end = buffer->data + buffer->capacity; - length = buffer->head->length;if (&buffer->head->data[length] < end) {if (copy_to_user (data, buffer->head->data, length))
drivers/firewire/ohci.c +11 -3
@@ -1556,6 +1556,8 @@ static int handle_at_packet(struct context *context,#define HEADER_GET_DATA_LENGTH (q) (((q) >> 16) & 0xffff)#define HEADER_GET_EXTENDED_TCODE (q) (((q) >> 0) & 0xffff) +static u32 get_cycle_time (struct fw_ohci *ohci); +static void handle_local_rom (struct fw_ohci *ohci,struct fw_packet *packet,u32 csr) {
@@ -1580,6 +1582,8 @@ static void handle_local_rom(struct fw_ohci *ohci, (void *) ohci->config_rom + i, length); } +// Timestamping on behalf of the hardware. + response.timestamp =cycle_time_to_ohci_tstamp (get_cycle_time (ohci));fw_core_handle_response (&ohci->card, &response); }
@@ -1628,6 +1632,8 @@ static void handle_local_lock(struct fw_ohci *ohci,fw_fill_response (&response, packet->header,RCODE_BUSY ,NULL ,0 ); out: +// Timestamping on behalf of the hardware. + response.timestamp =cycle_time_to_ohci_tstamp (get_cycle_time (ohci));fw_core_handle_response (&ohci->card, &response); }
@@ -1670,8 +1676,6 @@ static void handle_local_request(struct context *ctx, struct fw_packet *packet) } } -static u32 get_cycle_time (struct fw_ohci *ohci); -static void at_context_transmit (struct context *ctx,struct fw_packet *packet) {unsigned long flags;
@@ -2060,6 +2064,8 @@ static void bus_reset_work(struct work_struct *work) ohci->generation = generation;reg_write (ohci, OHCI1394_IntEventClear, OHCI1394_busReset); +if (param_debug &OHCI_PARAM_DEBUG_BUSRESETS ) +reg_write (ohci, OHCI1394_IntMaskSet, OHCI1394_busReset);if (ohci->quirks &QUIRK_RESET_PACKET ) ohci->request_generation = generation;
@@ -2125,12 +2131,14 @@ static irqreturn_t irq_handler(int irq, void *data)return IRQ_NONE ;/* -* busReset and postedWriteErr must not be cleared yet +* busReset and postedWriteErr events must not be cleared yet * (OHCI 1.1 clauses 7.2.3.2 and 13.2.8.1) */ reg_write (ohci, OHCI1394_IntEventClear, event & ~(OHCI1394_busReset | OHCI1394_postedWriteErr));log_irqs (ohci, event); +if (event & OHCI1394_busReset) +reg_write (ohci, OHCI1394_IntMaskClear, OHCI1394_busReset);if (event & OHCI1394_selfIDComplete)queue_work (selfid_workqueue, &ohci->bus_reset_work);
drivers/firmware/efi/unaccepted_memory.c +4 -0
@@ -4,6 +4,7 @@#include <linux/memblock.h> #include <linux/spinlock.h> #include <linux/crash_dump.h> +#include <linux/nmi.h> #include <asm/unaccepted_memory.h> /* Protects unaccepted memory bitmap and accepting_list */
@@ -149,6 +150,9 @@ void accept_memory(phys_addr_t start, phys_addr_t end) }list_del (&range.list); + +touch_softlockup_watchdog (); +spin_unlock_irqrestore (&unaccepted_memory_lock, flags); }
drivers/firmware/microchip/mpfs-auto-update.c +2 -0
@@ -206,10 +206,12 @@ static int mpfs_auto_update_verify_image(struct fw_upload *fw_uploader)if (ret | response->resp_status) {dev_warn (priv->dev,"Verification of Upgrade Image failed!\n" ); ret = ret ? ret : -EBADMSG ; + goto free_message; }dev_info (priv->dev,"Verification of Upgrade Image passed!\n" ); +free_message:devm_kfree (priv->dev, message); free_response:devm_kfree (priv->dev, response);
drivers/gpio/gpio-crystalcove.c +1 -1
@@ -92,7 +92,7 @@ static inline int to_reg(int gpio, enum ctrl_register reg_type)case 0x5e :return GPIOPANELCTL ;default : -return -EOPNOTSUPP ; +return -ENOTSUPP ; } }
drivers/gpio/gpio-lpc32xx.c +1 -0
@@ -529,6 +529,7 @@ static const struct of_device_id lpc32xx_gpio_of_match[] = { { .compatible = "nxp,lpc3220-gpio", }, { }, }; +MODULE_DEVICE_TABLE (of, lpc32xx_gpio_of_match);static struct platform_driver lpc32xx_gpio_driver = { .driver = {
drivers/gpio/gpio-wcove.c +1 -1
@@ -104,7 +104,7 @@ static inline int to_reg(int gpio, enum ctrl_register type)unsigned int reg = type ==CTRL_IN ?GPIO_IN_CTRL_BASE :GPIO_OUT_CTRL_BASE ;if (gpio >=WCOVE_GPIO_NUM ) -return -EOPNOTSUPP ; +return -ENOTSUPP ;return reg + gpio; }
drivers/gpio/gpiolib-cdev.c +15 -1
@@ -1199,6 +1199,8 @@ static int edge_detector_update(struct line *line,struct gpio_v2_line_config *lc, unsigned int line_idx, u64 edflags) { + u64 eflags; +int ret;u64 active_edflags =READ_ONCE (line->edflags);unsigned int debounce_period_us =gpio_v2_line_config_debounce_period (lc, line_idx);
@@ -1210,6 +1212,18 @@ static int edge_detector_update(struct line *line,/* sw debounced and still will be...*/ if (debounce_period_us &&READ_ONCE (line->sw_debounced)) {line_set_debounce_period (line, debounce_period_us); +/* +* ensure event fifo is initialised if edge detection +* is now enabled. +*/ + eflags = edflags &GPIO_V2_LINE_EDGE_FLAGS ; +if (eflags && !kfifo_initialized (&line->req->events)) { + ret =kfifo_alloc (&line->req->events, + line->req->event_buffer_size, +GFP_KERNEL ); +if (ret) +return ret; + }return 0 ; }
@@ -2800,11 +2814,11 @@ static int gpio_chrdev_release(struct inode *inode, struct file *file)struct gpio_chardev_data *cdev = file->private_data;struct gpio_device *gdev = cdev->gdev; -bitmap_free (cdev->watched_lines);blocking_notifier_chain_unregister (&gdev->device_notifier, &cdev->device_unregistered_nb);blocking_notifier_chain_unregister (&gdev->line_state_notifier, &cdev->lineinfo_changed_nb); +bitmap_free (cdev->watched_lines);gpio_device_put (gdev);kfree (cdev);
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +15 -11
@@ -4120,18 +4120,22 @@ int amdgpu_device_init(struct amdgpu_device *adev, adev->ip_blocks[i].status.hw = true; } } + }else if (amdgpu_ip_version (adev,MP1_HWIP ,0 ) ==IP_VERSION (13 ,0 ,10 ) && + !amdgpu_device_has_display_hardware (adev)) { + r =psp_gpu_reset (adev); }else { - tmp = amdgpu_reset_method; -/* It should do a default reset when loading or reloading the driver, -* regardless of the module parameter reset_method. -*/ - amdgpu_reset_method =AMD_RESET_METHOD_NONE ; - r =amdgpu_asic_reset (adev); - amdgpu_reset_method = tmp; -if (r) { -dev_err (adev->dev,"asic reset on init failed\n" ); - goto failed; - } + tmp = amdgpu_reset_method; +/* It should do a default reset when loading or reloading the driver, +* regardless of the module parameter reset_method. +*/ + amdgpu_reset_method =AMD_RESET_METHOD_NONE ; + r =amdgpu_asic_reset (adev); + amdgpu_reset_method = tmp; + } + +if (r) { +dev_err (adev->dev,"asic reset on init failed\n" ); + goto failed; } }
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +1 -0
@@ -1867,6 +1867,7 @@ static int amdgpu_discovery_set_smu_ip_blocks(struct amdgpu_device *adev)amdgpu_device_ip_block_add (adev, &smu_v13_0_ip_block);break ;case IP_VERSION (14 ,0 ,0 ): +case IP_VERSION (14 ,0 ,1 ):amdgpu_device_ip_block_add (adev, &smu_v14_0_ip_block);break ;default :
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c +5 -2
@@ -300,12 +300,15 @@ static struct dma_fence *amdgpu_job_run(struct drm_sched_job *sched_job)dma_fence_set_error (finished, -ECANCELED );if (finished->error <0 ) { -DRM_INFO ("Skip scheduling IBs!\n" ); +dev_dbg (adev->dev,"Skip scheduling IBs in ring(%s)" , + ring->name); }else { r =amdgpu_ib_schedule (ring, job->num_ibs, job->ibs, job, &fence);if (r) -DRM_ERROR ("Error scheduling IBs (%d)\n" , r); +dev_err (adev->dev, +"Error scheduling IBs (%d) in ring(%s)" , r, + ring->name); } job->job_run_counter++;
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +9 -5
@@ -1244,14 +1244,18 @@ int amdgpu_bo_get_metadata(struct amdgpu_bo *bo, void *buffer,* amdgpu_bo_move_notify - notification about a memory move * @bo: pointer to a buffer object * @evict: if this move is evicting the buffer from the graphics address space +* @new_mem: new resource for backing the BO * * Marks the corresponding &amdgpu_bo buffer object as invalid, also performs * bookkeeping. * TTM driver callback which is called when ttm moves a buffer. */ -void amdgpu_bo_move_notify (struct ttm_buffer_object *bo,bool evict) +void amdgpu_bo_move_notify (struct ttm_buffer_object *bo, +bool evict, +struct ttm_resource *new_mem) {struct amdgpu_device *adev =amdgpu_ttm_adev (bo->bdev); +struct ttm_resource *old_mem = bo->resource;struct amdgpu_bo *abo;if (!amdgpu_bo_is_amdgpu_bo (bo))
@@ -1263,12 +1267,12 @@ void amdgpu_bo_move_notify(struct ttm_buffer_object *bo, bool evict)amdgpu_bo_kunmap (abo);if (abo->tbo.base.dma_buf && !abo->tbo.base.import_attach && - bo->resource->mem_type !=TTM_PL_SYSTEM ) + old_mem && old_mem->mem_type !=TTM_PL_SYSTEM )dma_buf_move_notify (abo->tbo.base.dma_buf); -/* remember the eviction */ -if (evict) -atomic64_inc (&adev->num_evictions); +/* move_notify is called before move happens */ +trace_amdgpu_bo_move (abo, new_mem ? new_mem->mem_type :-1 , + old_mem ? old_mem->mem_type :-1 ); } void amdgpu_bo_get_memory(struct amdgpu_bo *bo,
drivers/gpu/drm/amd/amdgpu/amdgpu_object.h +3 -1
@@ -328,7 +328,9 @@ int amdgpu_bo_set_metadata (struct amdgpu_bo *bo, void *metadata,int amdgpu_bo_get_metadata (struct amdgpu_bo *bo,void *buffer,size_t buffer_size,uint32_t *metadata_size,uint64_t *flags); -void amdgpu_bo_move_notify (struct ttm_buffer_object *bo,bool evict); +void amdgpu_bo_move_notify (struct ttm_buffer_object *bo, +bool evict, +struct ttm_resource *new_mem);void amdgpu_bo_release_notify (struct ttm_buffer_object *bo);vm_fault_t amdgpu_bo_fault_reserve_notify (struct ttm_buffer_object *bo); void amdgpu_bo_fence(struct amdgpu_bo *bo, struct dma_fence *fence,
drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +28 -24
113 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/aqua_vanjaram.c +11 -4
@@ -62,6 +62,11 @@ void aqua_vanjaram_doorbell_index_init(struct amdgpu_device *adev) adev->doorbell_index.max_assignment =AMDGPU_DOORBELL_LAYOUT1_MAX_ASSIGNMENT <<1 ; } +static bool aqua_vanjaram_xcp_vcn_shared (struct amdgpu_device *adev) +{ +return (adev->xcp_mgr->num_xcps > adev->vcn.num_vcn_inst); +} +static void aqua_vanjaram_set_xcp_id (struct amdgpu_device *adev,uint32_t inst_idx,struct amdgpu_ring *ring) {
@@ -87,7 +92,7 @@ static void aqua_vanjaram_set_xcp_id(struct amdgpu_device *adev,case AMDGPU_RING_TYPE_VCN_ENC :case AMDGPU_RING_TYPE_VCN_JPEG : ip_blk =AMDGPU_XCP_VCN ; -if (adev->xcp_mgr->mode ==AMDGPU_CPX_PARTITION_MODE ) +if (aqua_vanjaram_xcp_vcn_shared (adev)) inst_mask =1 << (inst_idx *2 );break ;default :
@@ -140,10 +145,12 @@ static int aqua_vanjaram_xcp_sched_list_update(aqua_vanjaram_xcp_gpu_sched_update (adev, ring, ring->xcp_id); -/* VCN is shared by two partitions under CPX MODE */ +/* VCN may be shared by two partitions under CPX MODE in certain +* configs. +*/ if ((ring->funcs->type ==AMDGPU_RING_TYPE_VCN_ENC || - ring->funcs->type ==AMDGPU_RING_TYPE_VCN_JPEG ) && - adev->xcp_mgr->mode ==AMDGPU_CPX_PARTITION_MODE ) + ring->funcs->type ==AMDGPU_RING_TYPE_VCN_JPEG ) && +aqua_vanjaram_xcp_vcn_shared (adev))aqua_vanjaram_xcp_gpu_sched_update (adev, ring, ring->xcp_id +1 ); }
drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c +3 -13
@@ -1601,19 +1601,9 @@ static int sdma_v4_4_2_set_ecc_irq_state(struct amdgpu_device *adev,u32 sdma_cntl; sdma_cntl =RREG32_SDMA (type, regSDMA_CNTL); -switch (state) { -case AMDGPU_IRQ_STATE_DISABLE : - sdma_cntl =REG_SET_FIELD (sdma_cntl,SDMA_CNTL , -DRAM_ECC_INT_ENABLE ,0 ); -WREG32_SDMA (type, regSDMA_CNTL, sdma_cntl); -break ; -/* sdma ecc interrupt is enabled by default -* driver doesn't need to do anything to -* enable the interrupt */ -case AMDGPU_IRQ_STATE_ENABLE : -default : -break ; - } + sdma_cntl =REG_SET_FIELD (sdma_cntl,SDMA_CNTL ,DRAM_ECC_INT_ENABLE , + state ==AMDGPU_IRQ_STATE_ENABLE ?1 :0 ); +WREG32_SDMA (type, regSDMA_CNTL, sdma_cntl);return 0 ; }
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +7 -4
@@ -1138,7 +1138,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep, goto err_unlock; } offset = dev->adev->rmmio_remap.bus_addr; -if (!offset) { +if (!offset || (PAGE_SIZE >4096 )) { err = -ENOMEM ; goto err_unlock; }
@@ -1522,7 +1522,7 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep,/* Find a KFD GPU device that supports the get_dmabuf_info query */ for (i =0 ;kfd_topology_enum_kfd_devices (i, &dev) ==0 ; i++) -if (dev) +if (dev && !kfd_devcgroup_check_permission (dev))break ;if (!dev)return -EINVAL ;
@@ -1544,7 +1544,7 @@ static int kfd_ioctl_get_dmabuf_info(struct file *filep,if (xcp_id >=0 ) args->gpu_id = dmabuf_adev->kfd.dev->nodes[xcp_id]->id;else - args->gpu_id = dmabuf_adev->kfd.dev->nodes[0 ]->id; + args->gpu_id = dev->id; args->flags = flags;/* Copy metadata buffer to user mode */
@@ -2306,7 +2306,7 @@ static int criu_restore_memory_of_gpu(struct kfd_process_device *pdd,return -EINVAL ; } offset = pdd->dev->adev->rmmio_remap.bus_addr; -if (!offset) { +if (!offset || (PAGE_SIZE >4096 )) {pr_err ("amdgpu_amdkfd_get_mmio_remap_phys_addr failed\n" );return -ENOMEM ; }
@@ -3347,6 +3347,9 @@ static int kfd_mmio_mmap(struct kfd_node *dev, struct kfd_process *process,if (vma->vm_end - vma->vm_start !=PAGE_SIZE )return -EINVAL ; +if (PAGE_SIZE >4096 ) +return -EINVAL ; + address = dev->adev->rmmio_remap.bus_addr; vm_flags_set(vma, VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
drivers/gpu/drm/amd/amdkfd/kfd_device.c +6 -11
@@ -944,7 +944,6 @@ void kgd2kfd_suspend(struct kfd_dev *kfd, bool run_pm) {struct kfd_node *node;int i; -int count;if (!kfd->init_complete)return ;
@@ -952,12 +951,10 @@ void kgd2kfd_suspend(struct kfd_dev *kfd, bool run_pm)/* for runtime suspend, skip locking kfd */ if (!run_pm) {mutex_lock (&kfd_processes_mutex); - count = ++kfd_locked; -mutex_unlock (&kfd_processes_mutex); -/* For first KFD device suspend all the KFD processes */ -if (count ==1 ) +if (++kfd_locked ==1 )kfd_suspend_all_processes (); +mutex_unlock (&kfd_processes_mutex); }for (i =0 ; i < kfd->num_nodes; i++) {
@@ -968,7 +965,7 @@ void kgd2kfd_suspend(struct kfd_dev *kfd, bool run_pm)int kgd2kfd_resume (struct kfd_dev *kfd,bool run_pm) { -int ret, count, i; +int ret, i;if (!kfd->init_complete)return 0 ;
@@ -982,12 +979,10 @@ int kgd2kfd_resume(struct kfd_dev *kfd, bool run_pm)/* for runtime resume, skip unlocking kfd */ if (!run_pm) {mutex_lock (&kfd_processes_mutex); - count = --kfd_locked; -mutex_unlock (&kfd_processes_mutex); - -WARN_ONCE (count <0 ,"KFD suspend / resume ref. error" ); -if (count ==0 ) +if (--kfd_locked ==0 ) ret =kfd_resume_all_processes (); +WARN_ONCE (kfd_locked <0 ,"KFD suspend / resume ref. error" ); +mutex_unlock (&kfd_processes_mutex); }return ret;
drivers/gpu/drm/amd/amdkfd/kfd_int_process_v10.c +2 -1
@@ -336,7 +336,8 @@ static void event_interrupt_wq_v10(struct kfd_node *dev,break ; }kfd_signal_event_interrupt (pasid, context_id0 &0x7fffff ,23 ); - }else if (source_id ==SOC15_INTSRC_CP_BAD_OPCODE ) { + }else if (source_id ==SOC15_INTSRC_CP_BAD_OPCODE && +KFD_DBG_EC_TYPE_IS_PACKET (KFD_DEBUG_CP_BAD_OP_ECODE (context_id0))) { kfd_set_dbg_ev_from_interrupt(dev, pasid, KFD_DEBUG_DOORBELL_ID(context_id0), KFD_EC_MASK(KFD_DEBUG_CP_BAD_OP_ECODE(context_id0)),
drivers/gpu/drm/amd/amdkfd/kfd_int_process_v11.c +2 -1
@@ -325,7 +325,8 @@ static void event_interrupt_wq_v11(struct kfd_node *dev,/* CP */ if (source_id ==SOC15_INTSRC_CP_END_OF_PIPE )kfd_signal_event_interrupt (pasid, context_id0,32 ); -else if (source_id ==SOC15_INTSRC_CP_BAD_OPCODE ) +else if (source_id ==SOC15_INTSRC_CP_BAD_OPCODE && +KFD_DBG_EC_TYPE_IS_PACKET (KFD_CTXID0_CP_BAD_OP_ECODE (context_id0))) kfd_set_dbg_ev_from_interrupt(dev, pasid, KFD_CTXID0_DOORBELL_ID(context_id0), KFD_EC_MASK(KFD_CTXID0_CP_BAD_OP_ECODE(context_id0)),
drivers/gpu/drm/amd/amdkfd/kfd_int_process_v9.c +2 -1
@@ -385,7 +385,8 @@ static void event_interrupt_wq_v9(struct kfd_node *dev,break ; }kfd_signal_event_interrupt (pasid, sq_int_data,24 ); - }else if (source_id ==SOC15_INTSRC_CP_BAD_OPCODE ) { + }else if (source_id ==SOC15_INTSRC_CP_BAD_OPCODE && +KFD_DBG_EC_TYPE_IS_PACKET (KFD_DEBUG_CP_BAD_OP_ECODE (context_id0))) { kfd_set_dbg_ev_from_interrupt(dev, pasid, KFD_DEBUG_DOORBELL_ID(context_id0), KFD_EC_MASK(KFD_DEBUG_CP_BAD_OP_ECODE(context_id0)),
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +14 -1
@@ -147,6 +147,9 @@ MODULE_FIRMWARE(FIRMWARE_NAVI12_DMCU);#define FIRMWARE_DCN_35_DMUB "amdgpu/dcn_3_5_dmcub.bin"MODULE_FIRMWARE (FIRMWARE_DCN_35_DMUB ); +#define FIRMWARE_DCN_351_DMUB "amdgpu/dcn_3_5_1_dmcub.bin" +MODULE_FIRMWARE (FIRMWARE_DCN_351_DMUB ); +/* Number of bytes in PSP header for firmware. */ #define PSP_HEADER_BYTES 0x100
@@ -3025,6 +3028,10 @@ static int dm_resume(void *handle)/* Do mst topology probing after resuming cached state*/ drm_connector_list_iter_begin (ddev, &iter);drm_for_each_connector_iter (connector, &iter) { + +if (connector->connector_type ==DRM_MODE_CONNECTOR_WRITEBACK ) +continue ; + aconnector =to_amdgpu_dm_connector (connector);if (aconnector->dc_link->type != dc_connection_mst_branch || aconnector->mst_root)
@@ -4776,6 +4783,9 @@ static int dm_init_microcode(struct amdgpu_device *adev)case IP_VERSION (3 ,5 ,0 ): fw_name_dmub =FIRMWARE_DCN_35_DMUB ;break ; +case IP_VERSION (3 ,5 ,1 ): + fw_name_dmub =FIRMWARE_DCN_351_DMUB ; +break ;default :/* ASIC doesn't support DMUB. */ return 0 ;
@@ -5873,6 +5883,9 @@ get_highest_refresh_rate_mode(struct amdgpu_dm_connector *aconnector, &aconnector->base.probed_modes : &aconnector->base.modes; +if (aconnector->base.connector_type ==DRM_MODE_CONNECTOR_WRITEBACK ) +return NULL ; +if (aconnector->freesync_vid_base.clock !=0 )return &aconnector->freesync_vid_base;
@@ -8627,10 +8640,10 @@ static void amdgpu_dm_commit_audio(struct drm_device *dev,if (!drm_atomic_crtc_needs_modeset (new_crtc_state))continue ; +notify:if (connector->connector_type ==DRM_MODE_CONNECTOR_WRITEBACK )continue ; -notify: aconnector =to_amdgpu_dm_connector (connector);mutex_lock (&adev->dm.audio_lock);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_debugfs.c +36 -12
120 lines not on this page · raw message
drivers/gpu/drm/amd/display/dc/bios/bios_parser2.c +1 -0
@@ -2948,6 +2948,7 @@ static enum bp_result construct_integrated_info( result =get_integrated_info_v2_1 (bp, info);break ;case 2 : +case 3 : result =get_integrated_info_v2_2 (bp, info);break ;default :
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_link_encoder.c +6 -0
@@ -395,6 +395,12 @@ void dcn31_hpo_dp_link_enc_set_throttled_vcp_size( x), 25)); +// If y rounds up to integer, carry it over to x. +if (y >>25 ) { + x +=1 ; + y =0 ; + } +switch (stream_encoder_inst) {case 0 : REG_SET_2(DP_DPHY_SYM32_VC_RATE_CNTL0, 0,
drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c +27 -6
@@ -638,22 +638,43 @@ void dcn35_power_down_on_boot(struct dc *dc)bool dcn35_apply_idle_power_optimizations (struct dc *dc,bool enable) { -struct dc_link *edp_links[MAX_NUM_EDP ]; -int i, edp_num;if (dc->debug.dmcub_emulation)return true;if (enable) { -dc_get_edp_links (dc, edp_links, &edp_num); -if (edp_num ==0 || edp_num >1 ) -return false; +uint32_t num_active_edp =0 ; +int i;for (i =0 ; i < dc->current_state->stream_count; ++i) {struct dc_stream_state *stream = dc->current_state->streams[i]; +struct dc_link *link = stream->link; +bool is_psr = link && !link->panel_config.psr.disable_psr && + (link->psr_settings.psr_version ==DC_PSR_VERSION_1 || + link->psr_settings.psr_version ==DC_PSR_VERSION_SU_1 ); +bool is_replay = link && link->replay_settings.replay_feature_enabled; + +/* Ignore streams that disabled. */ +if (stream->dpms_off) +continue ; + +/* Active external displays block idle optimizations. */ +if (!dc_is_embedded_signal (stream->signal)) +return false; + +/* If not PWRSEQ0 can't enter idle optimizations */ +if (link && link->link_index !=0 ) +return false; -if (!stream->dpms_off && !dc_is_embedded_signal (stream->signal)) +/* Check for panel power features required for idle optimizations. */ +if (!is_psr && !is_replay)return false; + + num_active_edp +=1 ; } + +/* If more than one active eDP then disallow. */ +if (num_active_edp >1 ) +return false; }// TODO: review other cases when idle optimization is allowed
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +25 -2
@@ -734,7 +734,7 @@ static int smu_early_init(void *handle) smu->adev = adev; smu->pm_enabled = !!amdgpu_dpm; smu->is_apu = false; - smu->smu_baco.state =SMU_BACO_STATE_EXIT ; + smu->smu_baco.state =SMU_BACO_STATE_NONE ; smu->smu_baco.platform_support = false; smu->user_dpm_profile.fan_mode =-1 ;
@@ -1954,10 +1954,25 @@ static int smu_smc_hw_cleanup(struct smu_context *smu)return 0 ; } +static int smu_reset_mp1_state (struct smu_context *smu) +{ +struct amdgpu_device *adev = smu->adev; +int ret =0 ; + +if ((!adev->in_runpm) && (!adev->in_suspend) && + (!amdgpu_in_reset (adev)) &&amdgpu_ip_version (adev,MP1_HWIP ,0 ) == +IP_VERSION (13 ,0 ,10 ) && + !amdgpu_device_has_display_hardware (adev)) + ret =smu_set_mp1_state (smu,PP_MP1_STATE_UNLOAD ); + +return ret; +} +static int smu_hw_fini (void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle;struct smu_context *smu = adev->powerplay.pp_handle; +int ret;if (amdgpu_sriov_vf (adev) && !amdgpu_sriov_is_pp_one_vf (adev))return 0 ;
@@ -1975,7 +1990,15 @@ static int smu_hw_fini(void *handle) adev->pm.dpm_enabled = false; -return smu_smc_hw_cleanup (smu); + ret =smu_smc_hw_cleanup (smu); +if (ret) +return ret; + + ret =smu_reset_mp1_state (smu); +if (ret) +return ret; + +return 0 ; }static void smu_late_fini (void *handle)
drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h +1 -0
@@ -424,6 +424,7 @@ enum smu_reset_mode {enum smu_baco_state {SMU_BACO_STATE_ENTER =0 ,SMU_BACO_STATE_EXIT , +SMU_BACO_STATE_NONE , };struct smu_baco_context {
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +7 -1
@@ -2751,7 +2751,13 @@ static int smu_v13_0_0_set_mp1_state(struct smu_context *smu,switch (mp1_state) {case PP_MP1_STATE_UNLOAD : - ret =smu_cmn_set_mp1_state (smu, mp1_state); + ret =smu_cmn_send_smc_msg_with_param (smu, + SMU_MSG_PrepareMp1ForUnload, +0x55 ,NULL ); + +if (!ret && smu->smu_baco.state ==SMU_BACO_STATE_EXIT ) + ret =smu_v13_0_disable_pmfw_state (smu); +break ;default :/* Ignore others */
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_4_ppt.c +1 -1
@@ -226,7 +226,7 @@ static int smu_v13_0_4_system_features_control(struct smu_context *smu, bool en)struct amdgpu_device *adev = smu->adev;int ret =0 ; -if (!en && !adev->in_s0ix) { +if (!en && adev->in_s4) {/* Adds a GFX reset as workaround just before sending the * MP1_UNLOAD message to prevent GC/RLC/PMFW from entering * an invalid state.
drivers/gpu/drm/drm_connector.c +1 -1
@@ -2940,7 +2940,7 @@ int drm_mode_getconnector(struct drm_device *dev, void *data, dev->mode_config.max_width, dev->mode_config.max_height); else - drm_dbg_kms(dev, "User-space requested a forced probe on [CONNECTOR:%d:%s] but is not the DRM master, demoting to read-only probe", + drm_dbg_kms(dev, "User-space requested a forced probe on [CONNECTOR:%d:%s] but is not the DRM master, demoting to read-only probe\n", connector->base.id, connector->name); }
drivers/gpu/drm/i915/display/intel_audio.c +8 -105
134 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_bios.c +4 -15
@@ -1042,22 +1042,11 @@ parse_lfp_backlight(struct drm_i915_private *i915, panel->vbt.backlight.type =INTEL_BACKLIGHT_DISPLAY_DDI ; panel->vbt.backlight.controller =0 ;if (i915->display.vbt.version >=191 ) { -size_t exp_size; +const struct lfp_backlight_control_method *method; -if (i915->display.vbt.version >=236 ) - exp_size =sizeof (struct bdb_lfp_backlight_data ); -else if (i915->display.vbt.version >=234 ) - exp_size =EXP_BDB_LFP_BL_DATA_SIZE_REV_234 ; -else - exp_size =EXP_BDB_LFP_BL_DATA_SIZE_REV_191 ; - -if (get_blocksize (backlight_data) >= exp_size) { -const struct lfp_backlight_control_method *method; - - method = &backlight_data->backlight_control[panel_type]; - panel->vbt.backlight.type = method->type; - panel->vbt.backlight.controller = method->controller; - } + method = &backlight_data->backlight_control[panel_type]; + panel->vbt.backlight.type = method->type; + panel->vbt.backlight.controller = method->controller; } panel->vbt.backlight.pwm_freq_hz = entry->pwm_freq_hz;
drivers/gpu/drm/i915/display/intel_vbt_defs.h +0 -5
@@ -897,11 +897,6 @@ struct lfp_brightness_level {u16 reserved; } __packed; -#define EXP_BDB_LFP_BL_DATA_SIZE_REV_191 \ - offsetof(struct bdb_lfp_backlight_data, brightness_level) -#define EXP_BDB_LFP_BL_DATA_SIZE_REV_234 \ - offsetof(struct bdb_lfp_backlight_data, brightness_precision_bits) -struct bdb_lfp_backlight_data {u8 entry_size;struct lfp_backlight_data_entry data[16 ];
drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.c +3 -3
@@ -8,14 +8,14 @@#include "intel_gt_ccs_mode.h" #include "intel_gt_regs.h" -void intel_gt_apply_ccs_mode (struct intel_gt *gt) +unsigned int intel_gt_apply_ccs_mode (struct intel_gt *gt) {int cslice;u32 mode =0 ;int first_ccs =__ffs (CCS_MASK (gt));if (!IS_DG2 (gt->i915)) -return ; +return 0 ;/* Build the value for the fixed CCS load balancing */ for (cslice =0 ; cslice <I915_MAX_CCS ; cslice++) {
@@ -35,5 +35,5 @@ void intel_gt_apply_ccs_mode(struct intel_gt *gt) XEHP_CCS_MODE_CSLICE_MASK); } -intel_uncore_write (gt->uncore,XEHP_CCS_MODE , mode); +return mode; }
drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.h +1 -1
@@ -8,6 +8,6 @@struct intel_gt ; -void intel_gt_apply_ccs_mode (struct intel_gt *gt); +unsigned int intel_gt_apply_ccs_mode (struct intel_gt *gt);#endif /* __INTEL_GT_CCS_MODE_H__ */
drivers/gpu/drm/i915/gt/intel_workarounds.c +3 -1
@@ -2855,6 +2855,7 @@ add_render_compute_tuning_settings(struct intel_gt *gt,static void ccs_engine_wa_mode (struct intel_engine_cs *engine,struct i915_wa_list *wal) {struct intel_gt *gt = engine->gt; +u32 mode;if (!IS_DG2 (gt->i915))return ;
@@ -2871,7 +2872,8 @@ static void ccs_engine_wa_mode(struct intel_engine_cs *engine, struct i915_wa_li* After having disabled automatic load balancing we need to * assign all slices to a single CCS. We will call it CCS mode 1 */ -intel_gt_apply_ccs_mode (gt); + mode =intel_gt_apply_ccs_mode (gt); +wa_masked_en (wal,XEHP_CCS_MODE , mode); }/*
drivers/gpu/drm/imagination/pvr_fw_mips.h +3 -2
@@ -7,13 +7,14 @@#include "pvr_rogue_mips.h" #include <asm/page.h> +#include <linux/math.h> #include <linux/types.h> /* Forward declaration from pvr_gem.h. */ struct pvr_gem_object ; -#define PVR_MIPS_PT_PAGE_COUNT ((ROGUE_MIPSFW_MAX_NUM_PAGETABLE_PAGES * ROGUE_MIPSFW_PAGE_SIZE_4K) \ - >> PAGE_SHIFT) +#define PVR_MIPS_PT_PAGE_COUNT DIV_ROUND_UP(ROGUE_MIPSFW_MAX_NUM_PAGETABLE_PAGES * ROGUE_MIPSFW_PAGE_SIZE_4K, PAGE_SIZE) +/** * struct pvr_fw_mips_data - MIPS-specific data */
drivers/gpu/drm/meson/meson_dw_hdmi.c +31 -39
130 lines not on this page · raw message
drivers/gpu/drm/nouveau/include/nvkm/subdev/gsp.h +3 -1
@@ -15,7 +15,9 @@ struct nvkm_gsp_mem { };struct nvkm_gsp_radix3 { -struct nvkm_gsp_mem mem[3 ]; +struct nvkm_gsp_mem lvl0; +struct nvkm_gsp_mem lvl1; +struct sg_table lvl2; };int nvkm_gsp_sg (struct nvkm_device *,u64 size,struct sg_table *);
drivers/gpu/drm/nouveau/nouveau_dp.c +8 -5
@@ -225,12 +225,15 @@ nouveau_dp_detect(struct nouveau_connector *nv_connector,u8 *dpcd = nv_encoder->dp.dpcd;int ret =NOUVEAU_DP_NONE , hpd; -/* If we've already read the DPCD on an eDP device, we don't need to -* reread it as it won't change +/* eDP ports don't support hotplugging - so there's no point in probing eDP ports unless we +* haven't probed them once before. */ -if (connector->connector_type == DRM_MODE_CONNECTOR_eDP && - dpcd[DP_DPCD_REV ] !=0 ) -return NOUVEAU_DP_SST ; +if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { +if (connector->status == connector_status_connected) +return NOUVEAU_DP_SST ; +else if (connector->status == connector_status_disconnected) +return NOUVEAU_DP_NONE ; + }mutex_lock (&nv_encoder->dp.hpd_irq_lock);if (mstm) {
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/r535.c +52 -27
117 lines not on this page · raw message
drivers/gpu/drm/panel/Kconfig +1 -1
@@ -184,7 +184,7 @@ config DRM_PANEL_ILITEK_IL9322 config DRM_PANEL_ILITEK_ILI9341 tristate "Ilitek ILI9341 240x320 QVGA panels" - depends on OF && SPI + depends on SPI select DRM_KMS_HELPER select DRM_GEM_DMA_HELPER depends on BACKLIGHT_CLASS_DEVICE
drivers/gpu/drm/panel/panel-ilitek-ili9341.c +7 -6
@@ -22,8 +22,9 @@#include <linux/bitops.h> #include <linux/delay.h> #include <linux/gpio/consumer.h> +#include <linux/mod_devicetable.h> #include <linux/module.h> -#include <linux/of.h> +#include <linux/property.h> #include <linux/regulator/consumer.h> #include <linux/spi/spi.h>
@@ -421,7 +422,7 @@ static int ili9341_dpi_prepare(struct drm_panel *panel)ili9341_dpi_init (ili); -return ret; +return 0 ; }static int ili9341_dpi_enable (struct drm_panel *panel)
@@ -691,7 +692,7 @@ static int ili9341_dpi_probe(struct spi_device *spi, struct gpio_desc *dc,* Every new incarnation of this display must have a unique * data entry for the system in this driver. */ - ili->conf =of_device_get_match_data (dev); + ili->conf =device_get_match_data (dev);if (!ili->conf) {dev_err (dev,"missing device configuration\n" );return -ENODEV ;
@@ -714,18 +715,18 @@ static int ili9341_probe(struct spi_device *spi) reset =devm_gpiod_get_optional (dev,"reset" ,GPIOD_OUT_HIGH );if (IS_ERR (reset)) -dev_err (dev,"Failed to get gpio 'reset'\n" ); +return dev_err_probe (dev,PTR_ERR (reset),"Failed to get gpio 'reset'\n" ); dc =devm_gpiod_get_optional (dev,"dc" ,GPIOD_OUT_LOW );if (IS_ERR (dc)) -dev_err (dev,"Failed to get gpio 'dc'\n" ); +return dev_err_probe (dev,PTR_ERR (dc),"Failed to get gpio 'dc'\n" );
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/qxl/qxl_release.c +5 -45
50 lines not on this page · raw message
drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/xe/regs/xe_engine_regs.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/hwmon/corsair-cpro.c +32 -13
45 lines not on this page · raw message
drivers/iio/accel/mxc4005.c +85 -7
92 lines not on this page · raw message
drivers/iommu/arm/arm-smmu/arm-smmu-nvidia.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.c +26 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.h +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet_wol.c +7 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmmii.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/brocade/bna/bnad_debugfs.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/chelsio/cxgb4/sge.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hnae3.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +28 -24
52 lines not on this page · raw message
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.h +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +9 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/phy.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_debugfs.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_debugfs.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/micrel/ks8851_common.c +10 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qlogic/qede/qede_filter.c +8 -6
Lines of this file are not shown. View the raw message.
drivers/net/vxlan/vxlan_core.c +34 -15
49 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/mvm/mld-sta.c +6 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/queue/tx.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pinctrl/aspeed/pinctrl-aspeed-g6.c +17 -17
Lines of this file are not shown. View the raw message.
drivers/pinctrl/intel/pinctrl-baytrail.c +38 -36
74 lines not on this page · raw message
drivers/pinctrl/mediatek/pinctrl-paris.c +13 -27
Lines of this file are not shown. View the raw message.
drivers/pinctrl/meson/pinctrl-meson-a1.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/speed_select_if/isst_if_common.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/s390/net/qeth_core_main.c +27 -34
61 lines not on this page · raw message
drivers/thermal/thermal_debugfs.c +45 -14
59 lines not on this page · raw message
drivers/usb/dwc3/core.c +38 -52
90 lines not on this page · raw message
drivers/usb/gadget/function/uvc_configfs.c +2 -2
Lines of this file are not shown. View the raw message.
fs/nfsd/nfs4callback.c +96 -1
97 lines not on this page · raw message
fs/nfsd/stats.c +18 -25
43 lines not on this page · raw message
fs/nfsd/stats.h +24 -38
62 lines not on this page · raw message
fs/tracefs/event_inode.c +30 -15
45 lines not on this page · raw message
fs/tracefs/inode.c +89 -3
92 lines not on this page · raw message
mm/slub.c +29 -23
52 lines not on this page · raw message
net/core/filter.c +32 -10
42 lines not on this page · raw message
net/rxrpc/input.c +46 -25
71 lines not on this page · raw message
rust/macros/module.rs +115 -70
185 lines not on this page · raw message
sound/pci/emu10k1/emu10k1_main.c +77 -62
139 lines not on this page · raw message
sound/soc/meson/axg-fifo.c +31 -21
52 lines not on this page · raw message
tools/power/x86/turbostat/turbostat.c +121 -38
159 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/bloom_filter_map.c +6 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/test_bridge_neigh_suppress.sh +3 -11
Lines of this file are not shown. View the raw message.
tools/testing/selftests/timers/valid-adjtimex.c +36 -37
73 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.