Linux 6.6.117
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.117 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.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/admin-guide/cgroup-v2.rst | 9 MAINTAINERS | 1 Makefile | 2 arch/arc/include/asm/bitops.h | 2 arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dts | 4 arch/arm/boot/dts/nvidia/tegra20-asus-tf101.dts | 5 arch/arm/boot/dts/nxp/imx/imx51-zii-rdu1.dts | 4 arch/arm/crypto/Kconfig | 2 arch/arm/mach-at91/pm_suspend.S | 8 arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts | 2 arch/arm64/boot/dts/xilinx/zynqmp-zcu106-revA.dts | 4 arch/loongarch/include/asm/hw_breakpoint.h | 4 arch/loongarch/include/asm/pgtable.h | 11 arch/loongarch/kernel/traps.c | 4 arch/mips/boot/dts/lantiq/danube.dtsi | 6 arch/mips/boot/dts/lantiq/danube_easy50712.dts | 4 arch/mips/lantiq/xway/sysctrl.c | 2 arch/powerpc/kernel/eeh_driver.c | 2 arch/riscv/kernel/cpu-hotplug.c | 1 arch/riscv/kernel/entry.S | 18 arch/riscv/kernel/setup.c | 7 arch/riscv/kernel/stacktrace.c | 27 arch/riscv/mm/ptdump.c | 2 arch/riscv/net/bpf_jit_comp64.c | 5 arch/s390/Kconfig | 1 arch/s390/include/asm/pci.h | 1 arch/s390/pci/pci_event.c | 7 arch/s390/pci/pci_irq.c | 9 arch/sparc/include/asm/elf_64.h | 1 arch/sparc/include/asm/io_64.h | 6 arch/sparc/kernel/module.c | 1 arch/um/drivers/ssl.c | 5 arch/x86/entry/vsyscall/vsyscall_64.c | 17 arch/x86/kernel/cpu/microcode/amd.c | 3 arch/x86/kernel/fpu/core.c | 3 arch/x86/kernel/kvm.c | 20 arch/x86/kvm/svm/svm.c | 4 arch/x86/net/bpf_jit_comp.c | 2 block/blk-cgroup.c | 23 drivers/accel/habanalabs/common/memory.c | 2 drivers/accel/habanalabs/gaudi/gaudi.c | 19 drivers/accel/habanalabs/gaudi2/gaudi2.c | 15 drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c | 2 drivers/acpi/acpi_video.c | 4 drivers/acpi/acpica/dsmethod.c | 10 drivers/acpi/button.c | 4 drivers/acpi/cppc_acpi.c | 6 drivers/acpi/numa/hmat.c | 322 +++++-- drivers/acpi/numa/srat.c | 2 drivers/acpi/prmt.c | 19 drivers/acpi/property.c | 24 drivers/acpi/scan.c | 2 drivers/base/node.c | 18 drivers/base/regmap/regmap-slimbus.c | 6 drivers/bluetooth/btmtksdio.c | 12 drivers/bluetooth/btrtl.c | 4 drivers/bluetooth/btusb.c | 30 drivers/bluetooth/hci_bcsp.c | 3 drivers/char/misc.c | 40 drivers/clk/at91/clk-master.c | 3 drivers/clk/at91/clk-sam9x60-pll.c | 75 - drivers/clk/sunxi-ng/ccu-sun6i-rtc.c | 11 drivers/clk/ti/clk-33xx.c | 2 drivers/clocksource/timer-vf-pit.c | 22 drivers/cpufreq/longhaul.c | 3 drivers/cpufreq/tegra186-cpufreq.c | 27 drivers/cpuidle/cpuidle.c | 8 drivers/cpuidle/governors/menu.c | 73 - drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c | 1 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c | 5 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 2 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-prng.c | 1 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c | 1 drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h | 2 drivers/crypto/aspeed/aspeed-acry.c | 8 drivers/crypto/caam/ctrl.c | 4 drivers/crypto/hisilicon/qm.c | 2 drivers/crypto/intel/qat/qat_common/qat_uclo.c | 2 drivers/dma/dw-edma/dw-edma-core.c | 22 drivers/dma/mv_xor.c | 4 drivers/dma/sh/shdma-base.c | 25 drivers/dma/sh/shdmac.c | 17 drivers/edac/altera_edac.c | 22 drivers/extcon/extcon-adc-jack.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 66 + drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 23 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 5 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 5 drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 5 drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 19 drivers/gpu/drm/amd/amdkfd/kfd_device.c | 10 drivers/gpu/drm/amd/amdkfd/kfd_priv.h | 9 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 23 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/vg_clk_mgr.c | 16 drivers/gpu/drm/amd/display/dc/core/dc.c | 19 drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 14 drivers/gpu/drm/amd/display/dc/dc_helper.c | 5 drivers/gpu/drm/amd/display/dc/dc_stream.h | 3 drivers/gpu/drm/amd/display/dc/dm_services.h | 2 drivers/gpu/drm/amd/display/dc/dml/dcn301/dcn301_fpu.c | 20 drivers/gpu/drm/amd/display/dc/link/link_detection.c | 5 drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c | 9 drivers/gpu/drm/amd/display/include/dal_asic_id.h | 5 drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c | 5 drivers/gpu/drm/amd/pm/powerplay/smumgr/fiji_smumgr.c | 2 drivers/gpu/drm/amd/pm/powerplay/smumgr/iceland_smumgr.c | 2 drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c | 2 drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c | 2 drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c | 2 drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 12 drivers/gpu/drm/bridge/display-connector.c | 3 drivers/gpu/drm/drm_gem_atomic_helper.c | 6 drivers/gpu/drm/etnaviv/etnaviv_buffer.c | 2 drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c | 4 drivers/gpu/drm/i915/i915_vma.c | 16 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 10 drivers/gpu/drm/mediatek/mtk_drm_plane.c | 24 drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 5 drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 3 drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c | 10 drivers/gpu/drm/nouveau/nvkm/core/enum.c | 2 drivers/gpu/drm/scheduler/sched_entity.c | 37 drivers/gpu/drm/tidss/tidss_crtc.c | 7 drivers/gpu/drm/tidss/tidss_dispc.c | 16 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 5 drivers/hid/hid-asus.c | 6 drivers/hid/hid-ids.h | 6 drivers/hid/hid-ntrig.c | 7 drivers/hid/hid-quirks.c | 2 drivers/hid/hid-uclogic-params.c | 4 drivers/hid/i2c-hid/i2c-hid-acpi.c | 8 drivers/hid/i2c-hid/i2c-hid-core.c | 28 drivers/hid/i2c-hid/i2c-hid.h | 2 drivers/hwmon/asus-ec-sensors.c | 2 drivers/hwmon/dell-smm-hwmon.c | 7 drivers/hwmon/k10temp.c | 10 drivers/hwmon/sbtsi_temp.c | 46 - drivers/hwmon/sy7636a-hwmon.c | 1 drivers/iio/adc/imx93_adc.c | 18 drivers/iio/adc/spear_adc.c | 9 drivers/infiniband/hw/hns/hns_roce_hw_v2.c | 11 drivers/infiniband/hw/hns/hns_roce_qp.c | 2 drivers/infiniband/hw/irdma/pble.c | 2 drivers/infiniband/hw/irdma/verbs.c | 4 drivers/infiniband/hw/irdma/verbs.h | 8 drivers/iommu/amd/init.c | 28 drivers/iommu/apple-dart.c | 5 drivers/iommu/intel/debugfs.c | 10 drivers/iommu/intel/perf.c | 10 drivers/iommu/intel/perf.h | 5 drivers/iommu/iommufd/io_pagetable.c | 12 drivers/iommu/iommufd/ioas.c | 4 drivers/irqchip/irq-gic-v2m.c | 13 drivers/irqchip/irq-loongson-pch-lpc.c | 9 drivers/irqchip/irq-riscv-intc.c | 3 drivers/irqchip/irq-sifive-plic.c | 6 drivers/isdn/hardware/mISDN/hfcsusb.c | 18 drivers/media/i2c/Kconfig | 2 drivers/media/i2c/adv7180.c | 48 - drivers/media/i2c/ir-kbd-i2c.c | 6 drivers/media/i2c/og01a1b.c | 6 drivers/media/i2c/ov08x40.c | 2 drivers/media/pci/ivtv/ivtv-alsa-pcm.c | 2 drivers/media/pci/ivtv/ivtv-driver.h | 3 drivers/media/pci/ivtv/ivtv-fileops.c | 18 drivers/media/pci/ivtv/ivtv-irq.c | 4 drivers/media/platform/amphion/vpu_v4l2.c | 7 drivers/media/platform/verisilicon/hantro_drv.c | 2 drivers/media/platform/verisilicon/hantro_v4l2.c | 6 drivers/media/rc/imon.c | 61 - drivers/media/rc/redrat3.c | 2 drivers/media/tuners/xc4000.c | 8 drivers/media/tuners/xc5000.c | 12 drivers/media/usb/uvc/uvc_driver.c | 15 drivers/memstick/core/memstick.c | 8 drivers/mfd/da9063-i2c.c | 27 drivers/mfd/madera-core.c | 4 drivers/mfd/stmpe-i2c.c | 1 drivers/mfd/stmpe.c | 3 drivers/mmc/host/renesas_sdhi_core.c | 6 drivers/mmc/host/sdhci-msm.c | 15 drivers/mmc/host/sdhci-of-dwcmshc.c | 2 drivers/mtd/nand/onenand/onenand_samsung.c | 2 drivers/net/dsa/b53/b53_common.c | 15 drivers/net/dsa/b53/b53_regs.h | 3 drivers/net/dsa/dsa_loop.c | 9 drivers/net/dsa/microchip/ksz9477.c | 98 +- drivers/net/dsa/microchip/ksz9477_reg.h | 3 drivers/net/dsa/microchip/ksz_common.c | 4 drivers/net/dsa/microchip/ksz_common.h | 2 drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c | 4 drivers/net/ethernet/cadence/macb_main.c | 4 drivers/net/ethernet/freescale/fec_main.c | 2 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c | 9 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.h | 2 drivers/net/ethernet/intel/fm10k/fm10k_common.c | 5 drivers/net/ethernet/intel/fm10k/fm10k_common.h | 2 drivers/net/ethernet/intel/fm10k/fm10k_pf.c | 2 drivers/net/ethernet/intel/fm10k/fm10k_vf.c | 2 drivers/net/ethernet/intel/ice/ice_main.c | 2 drivers/net/ethernet/intel/ice/ice_trace.h | 10 drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c | 33 drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c | 10 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 5 drivers/net/ethernet/mellanox/mlx5/core/en_stats.c | 12 drivers/net/ethernet/microchip/lan966x/lan966x_ethtool.c | 18 drivers/net/ethernet/microchip/lan966x/lan966x_main.c | 2 drivers/net/ethernet/microchip/lan966x/lan966x_main.h | 4 drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c | 8 drivers/net/ethernet/microchip/sparx5/Kconfig | 2 drivers/net/ethernet/realtek/Kconfig | 2 drivers/net/ethernet/realtek/r8169_main.c | 6 drivers/net/ethernet/renesas/sh_eth.c | 4 drivers/net/ethernet/sfc/mae.c | 4 drivers/net/ethernet/smsc/smsc911x.c | 14 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 23 drivers/net/ethernet/wangxun/libwx/wx_hw.c | 3 drivers/net/ethernet/wangxun/libwx/wx_type.h | 4 drivers/net/hamradio/6pack.c | 57 - drivers/net/ipvlan/ipvlan_l3s.c | 1 drivers/net/mdio/of_mdio.c | 1 drivers/net/phy/dp83867.c | 8 drivers/net/phy/fixed_phy.c | 1 drivers/net/phy/marvell.c | 39 drivers/net/phy/mdio_bus.c | 5 drivers/net/phy/phy.c | 13 drivers/net/usb/asix_devices.c | 12 drivers/net/usb/qmi_wwan.c | 6 drivers/net/usb/usbnet.c | 2 drivers/net/virtio_net.c | 41 drivers/net/wireless/ath/ath10k/mac.c | 12 drivers/net/wireless/ath/ath10k/wmi.c | 40 drivers/net/wireless/ath/ath11k/core.c | 54 + drivers/net/wireless/ath/ath11k/wmi.c | 3 drivers/net/wireless/ath/ath12k/dp.h | 2 drivers/net/wireless/ath/ath12k/mac.c | 34 drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 3 drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 28 drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.h | 3 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 2 drivers/net/wireless/mediatek/mt76/mt7996/init.c | 1 drivers/net/wireless/realtek/rtw88/sdio.c | 4 drivers/net/wireless/virtual/mac80211_hwsim.c | 7 drivers/ntb/hw/epf/ntb_hw_epf.c | 103 +- drivers/nvme/host/core.c | 8 drivers/nvme/host/fc.c | 10 drivers/nvme/target/fc.c | 16 drivers/pci/controller/cadence/pcie-cadence-host.c | 2 drivers/pci/controller/cadence/pcie-cadence.c | 4 drivers/pci/controller/cadence/pcie-cadence.h | 6 drivers/pci/controller/dwc/pcie-designware.c | 4 drivers/pci/p2pdma.c | 2 drivers/pci/pci-driver.c | 2 drivers/pci/pci.c | 5 drivers/pci/quirks.c | 3 drivers/phy/cadence/cdns-dphy.c | 4 drivers/phy/renesas/r8a779f0-ether-serdes.c | 28 drivers/phy/rockchip/phy-rockchip-inno-csidphy.c | 5 drivers/pinctrl/pinctrl-keembay.c | 7 drivers/pinctrl/pinctrl-single.c | 4 drivers/pmdomain/apple/pmgr-pwrstate.c | 1 drivers/pmdomain/samsung/exynos-pm-domains.c | 11 drivers/power/supply/qcom_battmgr.c | 8 drivers/power/supply/sbs-charger.c | 16 drivers/ptp/ptp_clock.c | 13 drivers/regulator/fixed.c | 1 drivers/remoteproc/qcom_q6v5.c | 5 drivers/remoteproc/wkup_m3_rproc.c | 6 drivers/rtc/rtc-pcf2127.c | 19 drivers/rtc/rtc-rx8025.c | 2 drivers/scsi/libfc/fc_encode.h | 2 drivers/scsi/lpfc/lpfc_debugfs.h | 3 drivers/scsi/lpfc/lpfc_els.c | 6 drivers/scsi/lpfc/lpfc_init.c | 7 drivers/scsi/lpfc/lpfc_scsi.c | 14 drivers/scsi/mpi3mr/mpi3mr_fw.c | 10 drivers/scsi/mpt3sas/mpt3sas_transport.c | 3 drivers/scsi/pm8001/pm8001_ctl.c | 24 drivers/scsi/pm8001/pm8001_init.c | 1 drivers/scsi/pm8001/pm8001_sas.h | 4 drivers/soc/aspeed/aspeed-socinfo.c | 4 drivers/soc/qcom/smem.c | 2 drivers/soc/tegra/fuse/fuse-tegra30.c | 122 ++ drivers/spi/spi-loopback-test.c | 12 drivers/spi/spi-rpc-if.c | 2 drivers/spi/spi.c | 10 drivers/tee/tee_core.c | 2 drivers/thunderbolt/tb.c | 2 drivers/ufs/core/ufshcd-crypto.c | 34 drivers/ufs/core/ufshcd-crypto.h | 36 drivers/ufs/core/ufshcd.c | 25 drivers/ufs/host/ufs-mediatek.c | 179 +++- drivers/ufs/host/ufshcd-pci.c | 70 + drivers/usb/cdns3/cdnsp-gadget.c | 8 drivers/usb/gadget/function/f_fs.c | 8 drivers/usb/gadget/function/f_hid.c | 4 drivers/usb/gadget/function/f_ncm.c | 3 drivers/usb/host/xhci-plat.c | 1 drivers/usb/mon/mon_bin.c | 14 drivers/vfio/iova_bitmap.c | 5 drivers/vfio/vfio_main.c | 2 drivers/video/backlight/lp855x_bl.c | 2 drivers/video/fbdev/aty/atyfb_base.c | 8 drivers/video/fbdev/core/bitblit.c | 33 drivers/video/fbdev/core/fbcon.c | 19 drivers/video/fbdev/core/fbmem.c | 1 drivers/video/fbdev/pvr2fb.c | 2 drivers/video/fbdev/valkyriefb.c | 2 drivers/watchdog/s3c2410_wdt.c | 10 fs/9p/v9fs.c | 9 fs/btrfs/extent_io.c | 8 fs/btrfs/file.c | 10 fs/btrfs/scrub.c | 2 fs/btrfs/tree-log.c | 2 fs/ceph/dir.c | 3 fs/ceph/file.c | 6 fs/ceph/locks.c | 5 fs/exfat/fatent.c | 11 fs/ext4/fast_commit.c | 2 fs/ext4/xattr.c | 2 fs/f2fs/compress.c | 2 fs/f2fs/extent_cache.c | 6 fs/fuse/inode.c | 11 fs/hpfs/namei.c | 18 fs/jfs/inode.c | 8 fs/jfs/jfs_txnmgr.c | 9 fs/nfs/nfs3client.c | 15 fs/nfs/nfs4client.c | 17 fs/nfs/nfs4proc.c | 15 fs/nfs/nfs4state.c | 3 fs/nfs/pnfs_nfs.c | 34 fs/nfs/sysfs.c | 1 fs/nfs/write.c | 3 fs/nfsd/nfs4proc.c | 7 fs/nfsd/nfs4state.c | 3 fs/ntfs3/inode.c | 1 fs/open.c | 10 fs/orangefs/xattr.c | 12 fs/proc/generic.c | 12 fs/smb/client/cached_dir.c | 16 fs/smb/client/file.c | 115 ++ fs/smb/client/fs_context.c | 2 fs/smb/client/smb2inode.c | 2 fs/smb/client/smb2ops.c | 3 fs/smb/client/smb2pdu.c | 7 fs/smb/client/transport.c | 12 fs/smb/server/smb2pdu.c | 2 fs/smb/server/transport_tcp.c | 12 include/linux/blk_types.h | 11 include/linux/cgroup.h | 1 include/linux/compiler_types.h | 5 include/linux/fbcon.h | 2 include/linux/filter.h | 22 include/linux/map_benchmark.h | 1 include/linux/memcontrol.h | 8 include/linux/memory-tiers.h | 39 include/linux/netpoll.h | 1 include/linux/node.h | 26 include/linux/pci.h | 2 include/linux/shdma-base.h | 2 include/linux/swap.h | 3 include/linux/vm_event_item.h | 1 include/net/bluetooth/hci.h | 1 include/net/bluetooth/hci_core.h | 8 include/net/bluetooth/mgmt.h | 2 include/net/cls_cgroup.h | 2 include/net/gro.h | 3 include/net/nfc/nci_core.h | 2 include/net/tc_act/tc_connmark.h | 1 include/net/xdp.h | 5 include/ufs/ufs_quirks.h | 3 include/ufs/ufshcd.h | 44 + include/ufs/ufshci.h | 4 kernel/bpf/helpers.c | 2 kernel/bpf/ringbuf.c | 2 kernel/bpf/verifier.c | 6 kernel/cgroup/cgroup.c | 24 kernel/events/uprobes.c | 7 kernel/futex/syscalls.c | 106 +- kernel/gcov/gcc_4_7.c | 4 kernel/sched/fair.c | 15 kernel/trace/ftrace.c | 2 kernel/trace/trace_events_hist.c | 6 lib/crypto/Makefile | 2 mm/filemap.c | 24 mm/memcontrol.c | 290 +++--- mm/memory-tiers.c | 162 +++ mm/memory.c | 24 mm/mm_init.c | 2 mm/page_io.c | 8 mm/percpu.c | 8 mm/secretmem.c | 2 mm/truncate.c | 27 mm/vmscan.c | 3 mm/vmstat.c | 1 mm/workingset.c | 54 - mm/zswap.c | 4 net/8021q/vlan.c | 2 net/bluetooth/6lowpan.c | 97 +- net/bluetooth/hci_event.c | 18 net/bluetooth/hci_sync.c | 21 net/bluetooth/iso.c | 8 net/bluetooth/l2cap_core.c | 1 net/bluetooth/mgmt.c | 7 net/bluetooth/rfcomm/tty.c | 26 net/bluetooth/sco.c | 7 net/bridge/br.c | 5 net/bridge/br_forward.c | 5 net/bridge/br_if.c | 1 net/bridge/br_input.c | 4 net/bridge/br_mst.c | 10 net/bridge/br_private.h | 13 net/core/filter.c | 1 net/core/gro.c | 3 net/core/netpoll.c | 71 - net/core/page_pool.c | 12 net/core/skbuff.c | 10 net/core/sock.c | 15 net/dsa/dsa.c | 7 net/dsa/tag_brcm.c | 10 net/ethernet/eth.c | 5 net/handshake/tlshd.c | 1 net/hsr/hsr_device.c | 3 net/ipv4/esp4.c | 4 net/ipv4/netfilter/nf_reject_ipv4.c | 25 net/ipv4/nexthop.c | 6 net/ipv4/route.c | 5 net/ipv4/udp_tunnel_nic.c | 2 net/ipv6/addrconf.c | 4 net/ipv6/ah6.c | 50 - net/ipv6/esp6.c | 4 net/ipv6/netfilter/nf_reject_ipv6.c | 30 net/ipv6/raw.c | 2 net/ipv6/udp.c | 2 net/mac80211/iface.c | 14 net/mac80211/mlme.c | 2 net/mac80211/rx.c | 10 net/mptcp/protocol.c | 54 - net/mptcp/protocol.h | 2 net/netfilter/nf_tables_api.c | 30 net/rds/rds.h | 2 net/sched/act_bpf.c | 6 net/sched/act_connmark.c | 30 net/sched/act_ife.c | 12 net/sched/cls_bpf.c | 6 net/sched/sch_generic.c | 17 net/sctp/diag.c | 21 net/sctp/transport.c | 13 net/smc/smc_clc.c | 1 net/strparser/strparser.c | 2 net/tipc/net.c | 2 net/unix/garbage.c | 14 net/xfrm/espintcp.c | 4 security/integrity/ima/ima_appraise.c | 23 sound/drivers/serial-generic.c | 12 sound/pci/hda/patch_realtek.c | 17 sound/soc/codecs/cs4271.c | 10 sound/soc/codecs/lpass-va-macro.c | 2 sound/soc/codecs/max98090.c | 6 sound/soc/codecs/tas2781-i2c.c | 9 sound/soc/codecs/tlv320aic3x.c | 32 sound/soc/fsl/fsl_sai.c | 3 sound/soc/intel/avs/pcm.c | 2 sound/soc/meson/aiu-encoder-i2s.c | 9 sound/soc/qcom/qdsp6/q6asm.c | 2 sound/soc/qcom/sc8280xp.c | 3 sound/soc/stm/stm32_sai_sub.c | 8 sound/usb/endpoint.c | 5 sound/usb/mixer.c | 9 sound/usb/mixer_s1810c.c | 28 sound/usb/validate.c | 9 tools/bpf/bpftool/btf_dumper.c | 2 tools/bpf/bpftool/prog.c | 2 tools/include/linux/bitmap.h | 1 tools/lib/bpf/bpf_tracing.h | 2 tools/lib/thermal/Makefile | 9 tools/perf/util/symbol.c | 1 tools/power/cpupower/lib/cpuidle.c | 5 tools/power/cpupower/lib/cpupower.c | 2 tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c | 30 tools/testing/selftests/Makefile | 2 tools/testing/selftests/bpf/test_lirc_mode2_user.c | 2 tools/testing/selftests/bpf/test_xsk.sh | 2 tools/testing/selftests/drivers/net/netdevsim/Makefile | 21 tools/testing/selftests/drivers/net/netdevsim/settings | 1 tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc | 4 tools/testing/selftests/iommu/iommufd.c | 2 tools/testing/selftests/net/fcnal-test.sh | 432 +++++----- tools/testing/selftests/net/forwarding/local_termination.sh | 2 tools/testing/selftests/net/gro.c | 101 ++ tools/testing/selftests/net/mptcp/mptcp_connect.c | 18 tools/testing/selftests/net/mptcp/mptcp_connect.sh | 2 tools/testing/selftests/net/mptcp/mptcp_join.sh | 54 - tools/testing/selftests/net/psock_tpacket.c | 4 tools/testing/selftests/net/traceroute.sh | 13 tools/testing/selftests/user_events/perf_test.c | 2 usr/include/headers_check.pl | 2 503 files changed, 4860 insertions(+), 2077 deletions(-)
Aaron Kling (1):
cpufreq: tegra186: Initialize all cores to max frequencies
Abdun Nihaal (4):
sfc: fix potential memory leak in efx_mae_process_mport()
Bluetooth: btrtl: Fix memory leak in rtlbt_parse_firmware_v2()
HID: uclogic: Fix potential memory leak in error path
isdn: mISDN: hfcsusb: fix memory leak in hfcsusb_probe()
Adrian Hunter (3):
scsi: ufs: ufs-pci: Fix S0ix/S3 for Intel controllers
scsi: ufs: core: Add a quirk to suppress link_startup_again
scsi: ufs: ufs-pci: Set UFSHCD_QUIRK_PERFORM_LINK_STARTUP_ONCE for Intel ADL
Akhil P Oommen (1):
drm/msm/a6xx: Fix GMU firmware parser
Al Viro (3):
allow finish_no_open(file, ERR_PTR(-E...))
sparc64: fix prototypes of reads[bwl]()
nfs4_setup_readdir(): insufficient locking for ->d_parent->d_inode dereferencingAlbin Babu Varghese (1):
fbdev: Add bounds checking in bit_putcs to fix vmalloc-out-of-bounds
Aleksander Jan Bajkowski (5):
mips: lantiq: danube: add missing properties to cpu node
mips: lantiq: danube: add model to EASY50712 dts
mips: lantiq: danube: add missing device_type in pci node
mips: lantiq: xway: sysctrl: rename stp clock
mips: lantiq: danube: rename stp node on EASY50712 reference board
Alex Deucher (4):
drm/amd/display: add more cyan skillfish devices drm/amd: add more cyan skillfish PCI ids drm/amdgpu: don't enable SMU on cyan skillfish drm/amdgpu: add support for cyan skillfish gpu_info
Alex Hung (1):
drm/amd/display: Fix black screen with HDMI outputs
Alex Mastro (1):
vfio: return -ENOTTY for unsupported device feature
Alexander Stein (2):
mfd: stmpe: Remove IRQ domain upon removal
mfd: stmpe-i2c: Add missing MODULE_LICENSE
Alexander Sverdlin (1):
selftests: net: local_termination: Wait for interfaces to come up
Alexey Klimov (2):
regmap: slimbus: fix bus_context pointer in regmap init calls
ASoC: qcom: sc8280xp: explicitly set S16LE format in sc8280xp_be_hw_params_fixup()
Alice Chao (2):
scsi: ufs: host: mediatek: Assign power mode userdata before FASTAUTO mode change
scsi: ufs: host: mediatek: Fix invalid access in vccqx handling
Alistair Francis (1):
nvme: Use non zero KATO for persistent discovery connections
Alok Tiwari (2):
udp_tunnel: use netdev_warn() instead of netdev_WARN()
scsi: libfc: Fix potential buffer overflow in fc_ct_ms_fill()
Amber Lin (1):
drm/amdkfd: Tie UNMAP_LATENCY to queue_preemption
Amery Hung (1):
bpf: Clear pfmemalloc flag when freeing all fragments
Amirreza Zarrabi (1):
tee: allow a driver to allocate a tee_device without a pool
Anand Moon (1):
arm64: dts: rockchip: Set correct pinctrl for I2S1 8ch TX on odroid-m1
Andreas Kemnade (1):
hwmon: sy7636a: add alias
Andrew Davis (1):
remoteproc: wkup_m3: Use devm_pm_runtime_enable() helper
Andrii Nakryiko (1):
libbpf: Fix powerpc's stack register definition in bpf_tracing.h
André Draszik (1):
pmdomain: samsung: plug potential memleak during probe
Ankit Khushwaha (1):
selftests/user_events: fix type cast for write_index packed member in perf_test
Antheas Kapenekakis (1):
HID: asus: add Z13 folio to generic group for multitouch to work
Anthony Iliopoulos (1):
NFSv4.1: fix mount hang after CREATE_SESSION failure
Anton Blanchard (1):
riscv: Improve exception and system call latency
Antonino Maniscalco (1):
drm/msm: make sure to not queue up recovery more than once
Anubhav Singh (2):
selftests/net: fix out-of-order delivery of FIN in gro:tcp test selftests/net: use destination options instead of hop-by-hop
Ariel D'Alessandro (1):
drm/mediatek: Disable AFBC support on Mediatek DRM driver
Arkadiusz Bokowy (1):
Bluetooth: btusb: Check for unexpected bytes when defragmenting HCI frames
Armin Wolf (1):
hwmon: (dell-smm) Add support for Dell OptiPlex 7040
Arnd Bergmann (1):
mfd: madera: Work around false-positive -Wininitialized warning
Arseniy Krasnov (1):
Bluetooth: hci_sync: fix double free in 'hci_discovery_filter_clear()'
Ashish Kalra (1):
iommu/amd: Skip enabling command/event buffers for kdump
Avadhut Naik (1):
hwmon: (k10temp) Add thermal support for AMD Family 1Ah-based models
Baochen Qiang (1):
Revert "wifi: ath10k: avoid unnecessary wait for service ready message"
Bart Van Assche (1):
scsi: ufs: core: Disable timestamp functionality if not supported
Bartosz Golaszewski (1):
pinctrl: keembay: release allocated memory in detach path
Ben Copeland (1):
hwmon: (asus-ec-sensors) increase timeout for locking ACPI mutex
Benjamin Berg (1):
wifi: mac80211: skip rate verification for not captured PSDUs
Benjamin Lin (1):
wifi: mt76: mt7996: Temporarily disable EPCS
Biju Das (2):
mmc: host: renesas_sdhi: Fix the actual clock
spi: rpc-if: Add resume support for RZ/G3E
Borislav Petkov (AMD) (1):
x86/microcode/AMD: Add Zen5 model 0x44, stepping 0x1 minrev
Brahmajit Das (1):
net: intel: fm10k: Fix parameter idx set but not used
Breno Leitao (4):
net: netpoll: Individualize the skb pool
net: netpoll: flush skb pool during cleanup
net: netpoll: fix incorrect refcount handling causing incorrect cleanup
memcg: fix data-race KCSAN bug in rstats
Bruno Thomsen (1):
rtc: pcf2127: fix watchdog interrupt mask on pcf2131
Buday Csaba (1):
net: mdio: fix resource leak in mdiobus_register_device()
Bui Quang Minh (1):
virtio-net: fix received length check in big packets
Carolina Jubran (1):
net/mlx5e: Don't query FEC statistics when FEC is disabled
Cen Zhang (1):
Bluetooth: hci_sync: fix race in hci_cmd_sync_dequeue_once
Cezary Rojewski (1):
ASoC: Intel: avs: Unprepare a stream when XRUN occurs
Chandrakanth Patil (1):
scsi: mpi3mr: Fix controller init failure on fault during queue creation
Chang S. Bae (1):
x86/fpu: Ensure XFD state on signal delivery
Chao Yu (1):
f2fs: fix to avoid overflow while left shift operation
Charalampos Mitrodimas (1):
net: ipv6: fix field-spanning memcpy warning in AH output
Chelsy Ratnawat (1):
media: fix uninitialized symbol warnings
Chen Wang (1):
PCI: cadence: Check for the existence of cdns_pcie::ops before using it
Chen Yufeng (1):
usb: cdns3: gadget: Use-after-free during failed initialization and exit of cdnsp gadget
Chen-Yu Tsai (1):
clk: sunxi-ng: sun6i-rtc: Add A523 specifics
Chenghao Duan (1):
riscv: bpf: Fix uninitialized symbol 'retval_off'
Chi Zhang (1):
pinctrl: single: fix bias pull up/down handling in pin_config_set
Chi Zhiling (1):
exfat: limit log print for IO error
Chris Lu (1):
Bluetooth: btmtksdio: Add pmctrl handling for BT closed state during reset
Christian Bruel (1):
irqchip/gic-v2m: Handle Multiple MSI base IRQ Alignment
Christian König (1):
drm/amdgpu: reject gang submissions under SRIOV
Christoph Paasch (1):
net: When removing nexthops, don't call synchronize_net if it is not necessary
Christopher Ruehl (1):
power: supply: qcom_battmgr: add OOI chemistry
Chuande Chen (1):
hwmon: (sbtsi_temp) AMD CPU extended temperature range support
Chuang Wang (1):
ipv4: route: Prevent rt_bind_exception() from rebinding stale fnhe
Chuck Lever (1):
NFSD: Fix crash in nfsd4_read_release()
ChunHao Lin (1):
r8169: set EEE speed down ratio to 1
Chunyan Zhang (1):
riscv: stacktrace: Disable KASAN checks for non-current tasks
Clay King (1):
drm/amd/display: ensure committing streams is seamless
Clément Léger (1):
riscv: stacktrace: fix backtracing through exceptions
Coiby Xu (1):
ima: don't clear IMA_DIGSIG flag when setting or removing non-IMA xattr
Colin Foster (1):
smsc911x: add second read of EEPROM mac when possible corruption seen
Cryolitia PukNgae (1):
ALSA: usb-audio: apply quirk for MOONDROP Quark2
D. Wythe (1):
net/smc: fix mismatch between CLC header and proposal
Damien Le Moal (2):
block: fix op_is_zone_mgmt() to handle REQ_OP_ZONE_RESET_ALL
block: make REQ_OP_ZONE_OPEN a write operation
Dan Carpenter (1):
mtd: onenand: Pass correct pointer to IRQ handler
Daniel Lezcano (1):
clocksource/drivers/vf-pit: Replace raw_readl/writel to readl/writel
Daniel Palmer (2):
fbdev: atyfb: Check if pll_ops->init_pll failed
eth: 8139too: Make 8139TOO_PIO depend on !NO_IOPORT_MAPDaniel Wagner (2):
nvmet-fc: avoid scheduling association deletion twice
nvme-fc: use lock accessing port_state and rport state
Danil Skrebenkov (1):
RISC-V: clear hot-unplugged cores from all task mm_cpumasks to avoid rfence errors
Dave Jiang (8):
base/node / acpi: Change 'node_hmem_attrs' to 'access_coordinates'
acpi: numa: Create enum for memory_target access coordinates indexing
acpi: numa: Add genport target allocation to the HMAT parsing
acpi: Break out nesting for hmat_parse_locality()
acpi: numa: Add setting of generic port system locality attributes base/node / ACPI: Enumerate node access class for 'struct access_coordinate' acpi/hmat: Fix lockdep warning for hmem_register_resource()
ACPI: HMAT: Remove register of memory node for generic target
David Ahern (2):
selftests: Disable dad for ipv6 in fcnal-test.sh
selftests: Replace sleep with slowwait
David Francis (1):
drm/amdgpu: Allow kfd CRIU with no buffer objects
David Howells (1):
cifs: Fix uncached read into ITER_KVEC iterator
David Wei (1):
netdevsim: add Makefile for selftests
Dennis Beier (1):
cpufreq/longhaul: handle NULL policy in longhaul_exit
Devendra K Verma (1):
dmaengine: dw-edma: Set status for callback_result
Dmitry Baryshkov (1):
drm/bridge: display-connector: don't set OP_DETECT for DisplayPorts
Domenico Cerasuolo (1):
mm: memcg: add per-memcg zswap writeback stat
Dragos Tatulea (2):
page_pool: Clamp pool size to max 16K pages net/mlx5e: SHAMPO, Fix skb size check for 64K pages
Eduard Zingerman (1):
bpf: account for current allocated stack depth in widen_imprecise_scalars()
Edward Adam Davis (1):
cifs: client: fix memory leak in smb3_fs_context_parse_param
Emanuele Ghidoli (1):
net: phy: dp83867: Disable EEE support as not implemented
Emil Dahl Juhl (1):
tools: lib: thermal: don't preserve owner in install
Eric Biggers (6):
lib/crypto: arm/curve25519: Disable on CPU_BIG_ENDIAN
scsi: ufs: core: Add UFSHCD_QUIRK_CUSTOM_CRYPTO_PROFILE
scsi: ufs: core: fold ufshcd_clear_keyslot() into its caller
scsi: ufs: core: Add UFSHCD_QUIRK_BROKEN_CRYPTO_ENABLE
scsi: ufs: core: Add fill_crypto_prdt variant op
scsi: ufs: core: Add UFSHCD_QUIRK_KEYS_IN_PRDT
Eric Dumazet (7):
net: call cond_resched() less often in __release_sock()
ipv6: np->rxpmtu race annotation
sctp: prevent possible shift-out-of-bounds in sctp_transport_update_rto
net_sched: act_connmark: use RCU in tcf_connmark_dump()
net_sched: limit try_bulk_dequeue_skb() batches
bpf: Add bpf_prog_run_data_pointers()
netpoll: remove netpoll_srcu
Eric Huang (1):
drm/amdkfd: fix vram allocation failure for a special case
Fabien Proriol (1):
power: supply: sbs-charger: Support multiple devices
Farhan Ali (1):
s390/pci: Restore IRQ unconditionally for the zPCI device
Felix Maurer (1):
hsr: Fix supervision frame sending on HSRv0
Fenglin Wu (1):
power: supply: qcom_battmgr: handle charging state change notifications
Filipe Manana (1):
btrfs: do not update last_log_commit when logging inode due to a new name
Fiona Ebner (1):
smb: client: transport: avoid reconnects triggered by pending task work
Florian Fuchs (1):
fbdev: pvr2fb: Fix leftover reference to ONCHIP_NR_DMA_CHANNELS
Florian Westphal (1):
netfilter: nf_reject: don't reply to icmp error messages
Forest Crossman (1):
usb: mon: Increase BUFF_MAX to 64 MiB to support multi-MB URBs
Francisco Gutierrez (1):
scsi: pm80xx: Fix race condition caused by static variables
Gal Pressman (5):
net/mlx5e: Use extack in get module eeprom by page callback net/mlx5e: Fix return value in case of module EEPROM read error net/mlx5e: Fix maxrate wraparound in threshold between units net/mlx5e: Fix wraparound in rate limiting for values above 255 Gbps net/mlx5e: Fix potentially misleading debug message
Gaurav Jain (1):
crypto: caam - double the entropy delay interval for retry
Gautham R. Shenoy (3):
ACPI: CPPC: Check _CPC validity for only the online CPUs
ACPI: CPPC: Perform fast check switch only for online CPUs
ACPI: CPPC: Limit perf ctrs in PCC check only to online CPUs
Geert Uytterhoeven (1):
kbuild: uapi: Strip comments before size type check
Geoffrey McRae (1):
drm/amdkfd: return -ENOTTY for unsupported IOCTLs
Gerd Bayer (1):
s390/pci: Avoid deadlock between PCI error recovery and mlx5 crdump
Gokul Sivakumar (1):
wifi: brcmfmac: fix crash while sending Action Frames in standalone AP Mode
Greg Kroah-Hartman (1):
Linux 6.6.117
Haein Lee (1):
ALSA: usb-audio: Fix NULL pointer dereference in snd_usb_mixer_controls_badd
Haibo Chen (1):
iio: adc: imx93_adc: load calibrated values even calibration failed
Han Gao (1):
riscv: acpi: avoid errors caused by probing DT devices when ACPI is used
Hangbin Liu (1):
net: vlan: sync VLAN features with lower device
Hans de Goede (3):
ACPI: scan: Add Intel CVS ACPI HIDs to acpi_ignore_dep_ids[]
ACPICA: dispatcher: Use acpi_ds_clear_operands() in acpi_ds_call_control_method()
spi: Try to get ACPI GPIO IRQ earlier
Hao Yao (1):
media: ov08x40: Fix the horizontal flip control
Haotian Zhang (4):
crypto: aspeed - fix double free caused by devm
regulator: fixed: fix GPIO descriptor leak on register failure
ASoC: cs4271: Fix regulator leak on probe failure
ASoC: codecs: va-macro: fix resource leak in probe error path
Harikrishna Shenoy (1):
phy: cadence: cdns-dphy: Enable lower resolutions in dphy
Hector Martin (1):
iommu/apple-dart: Clear stream error indicator bits for T8110 DARTs
Heiko Carstens (1):
s390: Disable ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP
Heiner Kallweit (1):
net: phy: fixed_phy: let fixed_phy_unregister free the phy_device
Henrique Carvalho (3):
smb: client: fix potential cfid UAF in smb2_query_info_compound
smb: client: fix potential UAF in smb2_close_cached_fid()
smb: client: fix cifs_pick_channel when channel needs reconnect
Horatiu Vultur (1):
lan966x: Fix sleeping in atomic context
Hoyoung Seo (1):
scsi: ufs: core: Include UTP error in INT_FATAL_ERRORS
Huacai Chen (2):
LoongArch: Use correct accessor to read FWPC/MWPC
LoongArch: Use physical addresses for CSR_MERRENTRY/CSR_TLBRENTRY
Huang Ying (3):
memory tiering: add abstract distance calculation algorithms management acpi, hmat: refactor hmat_register_target_initiators() acpi, hmat: calculate abstract distance with HMAT
Ian Forbes (1):
drm/vmwgfx: Validate command header size against SVGA_CMD_MAX_DATASIZE
Ian Rogers (1):
tools bitmap: Add missing asm-generic/bitsperlong.h include
Ido Schimmel (2):
bridge: Redirect to backup port when port is administratively down
selftests: traceroute: Use require_command()
Ilan Peer (1):
wifi: mac80211: Fix HE capabilities element check
Ilia Gavrilov (1):
Bluetooth: MGMT: Fix OOB access in parse_adv_monitor_pattern()
Inochi Amaoto (1):
irqchip/sifive-plic: Respect mask state when setting affinity
Isaac J. Manjarres (1):
mm/mm_init: fix hash table order logging in alloc_large_system_hash()
Ivan Pravdin (1):
Bluetooth: bcsp: receive data only if registered
Jacob Moroni (3):
RDMA/irdma: Fix SD index calculation RDMA/irdma: Remove unused struct irdma_cq fields RDMA/irdma: Set irdma_cq cq_num field during CQ create
Jakub Kicinski (3):
selftests: net: replace sleeps in fcnal-test with waits
page_pool: always add GFP_NOWARN for ATOMIC allocations
selftests: netdevsim: set test timeout to 10 minutes
Janne Grunau (1):
pmdomain: apple: Add "apple,t8103-pmgr-pwrstate"
Janusz Krzysztofik (1):
drm/i915: Avoid lock inversion when pinning to GGTT on CHV/BXT+VTD
Jason Gunthorpe (2):
iommufd: Make vfio_compat's unmap succeed if the range is already empty
iommufd: Don't overflow during division for dirty tracking
Jayesh Choudhary (1):
drm/tidss: Set crtc modesetting parameters with adjusted mode
Jens Kehne (1):
mfd: da9063: Split chip variant reading in two bus transactions
Jens Reidel (1):
soc: qcom: smem: Fix endian-unaware access of num_entries
Jerome Brunet (1):
NTB: epf: Allow arbitrary BAR mapping
Jesse.Zhang (1):
drm/amdgpu: Fix NULL pointer dereference in VRAM logic for APU devices
Jiawen Wu (1):
net: libwx: fix device bus LAN ID
Jiayi Li (1):
memstick: Add timeout to prevent indefinite waiting
Jihed Chaibi (1):
ARM: dts: imx51-zii-rdu1: Fix audmux node names
Jijie Shao (1):
net: hns3: return error code when function fails
Jiri Olsa (1):
uprobe: Do not emulate/sstep original instruction when ip is changed
Johan Hovold (2):
Bluetooth: rfcomm: fix modem control handling drm/mediatek: Fix device use-after-free on unbind
Johannes Berg (1):
wifi: mac80211: reject address change while connecting
John Keeping (1):
ALSA: serial-generic: remove shared static buffer
John Smith (2):
drm/amd/pm/powerplay/smumgr: Fix PCIeBootLinkLevel value on Fiji drm/amd/pm/powerplay/smumgr: Fix PCIeBootLinkLevel value on Iceland
John Sperbeck (1):
net: netpoll: ensure skb_pool list is always initialized
Jonas Gorski (4):
net: dsa: tag_brcm: legacy: fix untagged rx on unbridged ports for bcm63xx
net: dsa: b53: fix resetting speed and pause on forced link
net: dsa: b53: fix enabling ip multicast
net: dsa: b53: stop reading ARL entries if search is done
Josephine Pfeiffer (1):
riscv: ptdump: use seq_puts() in pt_dump_seq_puts() macro
Joshua Rogers (2):
smb: client: validate change notify buffer before copy
ksmbd: close accepted socket when per-IP limit rejects connection
Joshua Watt (1):
NFS4: Fix state renewals missing after boot
Josua Mayer (1):
rtc: pcf2127: clear minute/second interrupt
Julian Sun (1):
ext4: increase IO priority of fastcommit
Junjie Cao (1):
fbdev: bitblit: bound-check glyph index in bit_putcs*
Junxian Huang (1):
RDMA/hns: Fix wrong WQE data when QP wraps around
Juraj Šarinay (1):
net: nfc: nci: Increase NCI_DATA_TIMEOUT to 3000 ms
Justin Tee (3):
scsi: lpfc: Check return status of lpfc_reset_flush_io_context during TGT_RESET
scsi: lpfc: Remove ndlp kref decrement clause for F_Port_Ctrl in lpfc_cleanup
scsi: lpfc: Define size of debugfs entry for xri rebalancing
Kailang Yang (1):
ALSA: hda/realtek: Audio disappears on HP 15-fc000 after warm boot again
Kalesh AP (1):
bnxt_en: Fix a possible memory leak in bnxt_ptp_init
Karthi Kandasamy (1):
drm/amd/display: Add AVI infoframe copy in copy_stream_update_to_stream
Karthik M (1):
wifi: ath12k: free skb during idr cleanup callback
Kaushlendra Kumar (4):
ACPI: button: Call input_free_device() on failing input device registration tools/cpupower: fix error return value in cpupower_write_sysfs() tools/cpupower: Fix incorrect size in cpuidle_state_disable() tools/power x86_energy_perf_policy: Fix incorrect fopen mode usage
Kees Cook (1):
arc: Fix __fls() const-foldability via __builtin_clzl()
Kent Russell (1):
drm/amdkfd: Handle lack of READ permissions in SVM mapping
Kirill A. Shutemov (1):
x86/vsyscall: Do not require X86_PF_INSTR to emulate vsyscall
Kiryl Shutsemau (2):
mm/memory: do not populate page table entries beyond i_size mm/truncate: unmap large folio on split failure
Koakuma (1):
sparc/module: Add R_SPARC_UA64 relocation handling
Konstantin Sinyuk (1):
accel/habanalabs/gaudi2: read preboot status after recovering from dirty state
Krishna Kurapati (1):
usb: xhci: plat: Facilitate using autosuspend for xhci plat devices
Krzysztof Kozlowski (4):
extcon: adc-jack: Fix wakeup source leaks on device unbind drm/msm/dsi/phy: Toggle back buffer resync after preparing PLL drm/msm/dsi/phy_7nm: Fix missing initial VCO rate
extcon: adc-jack: Cleanup wakeup source only if it was enabled
Kumar Kartikeya Dwivedi (1):
bpf: Do not limit bpf_cgroup_from_id to current's namespace
Kuniyuki Iwashima (3):
net: Call trace_sock_exceed_buf_limit() for memcg failure with SK_MEM_RECV.
tipc: Fix use-after-free in tipc_mon_reinit_self().
af_unix: Initialise scc_index in unix_add_edge().
Lance Yang (1):
mm/secretmem: fix use-after-free race in fault handler
Laurent Pinchart (2):
media: pci: ivtv: Don't create fake v4l2_fh
media: amphion: Delete v4l2_fh synchronously in .release()
Len Brown (2):
tools/power x86_energy_perf_policy: Enhance HWP enable tools/power x86_energy_perf_policy: Prefer driver HWP limits
Li RongQing (1):
x86/kvm: Prefer native qspinlock for dedicated vCPUs irrespective of PV_UNHALT
Li Zhijian (1):
mm/memory-tier: fix abstract distance calculation overflow
Lijo Lazar (2):
drm/amd/pm: Use cached metrics data on aldebaran drm/amd/pm: Use cached metrics data on arcturus
Lizhi Xu (1):
usbnet: Prevents free active kevent
Loic Poulain (2):
wifi: ath10k: Fix memory leak on unsupported WMI command
wifi: ath10k: Fix connection after GTK rekeying
Luiz Augusto von Dentz (4):
Bluetooth: HCI: Fix tracking of advertisement set/instance 0x00
Bluetooth: ISO: Fix another instance of dst_type handling
Bluetooth: hci_core: Fix tracking of periodic advertisement
Bluetooth: SCO: Fix UAF on sco_conn_free
Lukas Wunner (1):
thunderbolt: Use is_pciehp instead of is_hotplug_bridge
Manivannan Sadhasivam (1):
scsi: ufs: core: Add a quirk for handling broken LSDBS field in controller capabilities register
Marcos Del Sol Vives (1):
PCI: Disable MSI on RDC PCI to PCIe bridges
Mario Limonciello (2):
PCI/PM: Skip resuming to D0 if device is disconnected drm/amd: Fix suspend failure with secure display TA
Mario Limonciello (AMD) (3):
drm/amd: Avoid evicting resources at S5
HID: i2c-hid: Resolve touchpad issues on Dell systems during S4 x86/microcode/AMD: Add more known models to entry sign checking
Mark Pearson (1):
wifi: ath11k: Add missing platform IDs for quirk table
Martin Willi (1):
wifi: mac80211_hwsim: Limit destroy_on_close radio removal to netgroup
Masami Ichikawa (1):
HID: hid-ntrig: Prevent memory leak in ntrig_report_version()
Matthias Schiffer (1):
clk: ti: am33xx: keep WKUP_DEBUGSS_CLKCTRL enabled
Matthieu Baerts (NGI0) (3):
selftests: mptcp: connect: fix fallback note due to OoO
selftests: mptcp: join: rm: set backup flag
selftests: mptcp: connect: trunc: read all recv data
Mehdi Djait (1):
media: i2c: Kconfig: Ensure a dependency on HAVE_CLK for VIDEO_CAMERA_SENSOR
Miaoqian Lin (3):
net: usb: asix_devices: Check return value of usbnet_get_endpoints
fbdev: valkyriefb: Fix reference count leak in valkyriefb_init
crypto: hisilicon/qm - Fix device reference leak in qm_get_qos_value
Michael Dege (1):
phy: renesas: r8a779f0-ether-serdes: add new step added to latest datasheet
Michael Riesch (1):
phy: rockchip: phy-rockchip-inno-csidphy: allow writes to grf register 0
Michael Strauss (1):
drm/amd/display: Increase AUX Intra-Hop Done Max Wait Duration
Michal Hocko (1):
mm, percpu: do not consider sleepable allocations atomic
Mike Marshall (1):
orangefs: fix xattr related buffer overflow...
Miklos Szeredi (1):
fuse: zero initialize inode private data
Ming Wang (1):
irqchip/loongson-pch-lpc: Use legacy domain for PCH-LPC IRQ controller
Miroslav Lichvar (1):
ptp: Limit time setting of PTP clocks
Moti Haimovski (1):
accel/habanalabs: support mapping cb with vmalloc-backed coherent memory
Nai-Chen Cheng (1):
selftests/Makefile: include $(INSTALL_DEP_TARGETS) in clean target to clean net/lib dependency
Namjae Jeon (1):
ksmbd: use sock_create_kern interface to create kernel socket
Nate Karstens (1):
strparser: Fix signed/unsigned mismatch bug
Nathan Chancellor (1):
lib/crypto: curve25519-hacl64: Fix older clang KASAN workaround for GCC
Nhat Pham (1):
cachestat: do not flush stats in recency check
Nick Hu (1):
irqchip/riscv-intc: Add missing free() callback in riscv_intc_domain_ops
Nicolas Escande (1):
wifi: ath11k: zero init info->status in wmi_process_mgmt_tx_comp()
Nicolas Ferre (2):
ARM: at91: pm: save and restore ACR during PLL disable/enable
clk: at91: clk-sam9x60-pll: force write to PLL_UPDT register
Niklas Cassel (1):
PCI: dwc: Verify the single eDMA IRQ in dw_pcie_edma_irq_verify()
Niklas Schnelle (2):
powerpc/eeh: Use result of error_detected() in uevent s390/pci: Use pci_uevent_ers() in PCI recovery
Niklas Söderlund (4):
media: adv7180: Add missing lock in suspend callback
media: adv7180: Do not write format to device in set_fmt
media: adv7180: Only validate format in querystd
net: sh_eth: Disable WoL if system can not suspend
Nikolay Aleksandrov (2):
net: bridge: fix use-after-free due to MST port state bypass
net: bridge: fix MST static key usage
Niravkumar L Rabara (2):
EDAC/altera: Handle OCRAM ECC enable after warm reset EDAC/altera: Use INTTEST register for Ethernet and USB SBE injection
Nithyanantham Paramasivam (1):
wifi: ath12k: Increase DP_REO_CMD_RING_SIZE to 256
Noorain Eqbal (1):
bpf: Sync pending IRQ work before freeing ring buffer
Oleg Makarenko (1):
HID: quirks: Add ALWAYS_POLL quirk for VRS R295 steering wheel
Oleksij Rempel (2):
net: stmmac: Correctly handle Rx checksum offload errors
net: phy: clear link parameters on admin link down
Olga Kornievskaia (2):
NFSv4: handle ERR_GRACE on delegation recalls
NFSD: free copynotify stateid in nfs4_free_ol_stateid()
Olivier Moysan (1):
ASoC: stm32: sai: manage context in set_sysclk callback
Ondrej Mosnacek (1):
bpf: Do not audit capability check in do_jit()
Ovidiu Panait (1):
crypto: sun8i-ce - remove channel timeout field
Owen Gu (1):
usb: gadget: f_fs: Fix epfile null pointer access after ep enable.
Pablo Neira Ayuso (1):
netfilter: nf_tables: reject duplicate device on updates
Pankaj Raghav (1):
filemap: cap PTE range to be created to allowed zero fill in folio_map_range()
Paolo Abeni (4):
mptcp: drop bogus optimization in __mptcp_check_push()
mptcp: restore window probe
mptcp: fix MSG_PEEK stream corruption
net: allow small head cache usage with large MAX_SKB_FRAGS values
Paul Hsieh (1):
drm/amd/display: update dpp/disp clock from smu clock table
Paul Kocialkowski (1):
media: verisilicon: Explicitly disable selection api ioctls for decoders
Pauli Virtanen (5):
Bluetooth: MGMT: cancel mesh send timer when hdev removed
Bluetooth: 6lowpan: reset link-local header on ipv6 recv path
Bluetooth: 6lowpan: fix BDADDR_LE vs ADDR_LE_DEV address type confusion
Bluetooth: 6lowpan: Don't hold spin lock over sleeping functions
Bluetooth: L2CAP: export l2cap_chan_hold for modules
Peter Oberparleiter (1):
gcov: add support for GCC 15
Peter Wang (5):
scsi: ufs: host: mediatek: Fix auto-hibern8 timer configuration
scsi: ufs: host: mediatek: Change reset sequence for improved stability
scsi: ufs: host: mediatek: Enhance recovery on resume failure
scsi: ufs: host: mediatek: Enhance recovery on hibernation exit failure
scsi: ufs: host: mediatek: Disable auto-hibern8 during power mode changes
Peter Zijlstra (1):
compiler_types: Move unused static inline functions warning to W=2
Petr Machata (1):
net: bridge: Install FDB for bridge MAC on VLAN 0
Philipp Stanner (1):
drm/sched: Fix race in drm_sched_entity_select_rq()
Pierre Gondois (1):
sched/fair: Use all little CPUs for CPU-bound workloads
Pierre-Eric Pelloux-Prayer (1):
drm/sched: Fix deadlock in drm_sched_entity_kill_jobs_cb
Ping-Ke Shih (1):
wifi: rtw88: sdio: use indirect IO for device registers before power-on
Pranav Tyagi (1):
futex: Don't leak robust_list pointer on exec race
Primoz Fiser (1):
ASoC: tlv320aic3x: Fix class-D initialization for tlv320aic3007
Qendrim Maxhuni (1):
net: usb: qmi_wwan: initialize MAC header offset in qmimux_rx_fixup
Qianfeng Rong (3):
crypto: qat - use kcalloc() in qat_uclo_map_objs_from_mof()
scsi: pm8001: Use int instead of u32 to store error codes
media: redrat3: use int type to store negative error codes
Qingfang Deng (2):
6pack: drop redundant locking and refcounting
net: stmmac: Fix accessing freed irq affinity_hint
Qinxin Xia (1):
dma-mapping: benchmark: Restore padding to ensure uABI remained consistent
Qu Wenruo (1):
btrfs: ensure no dirty metadata is written back for an fs with errors
Quan Zhou (1):
wifi: mt76: mt7921: Add 160MHz beamformee capability for mt7922 device
Quanmin Yan (1):
fbcon: Set fb_display[i]->mode to NULL when the mode is released
Radhey Shyam Pandey (1):
arm64: zynqmp: Revert usb node drive strength and slew rate for zcu106
Rafael J. Wysocki (3):
cpuidle: governors: menu: Rearrange main loop in menu_select()
cpuidle: governors: menu: Select polling state in some more cases
cpuidle: Fail cpuidle device registration if there is one already
Rafał Miłecki (1):
ARM: dts: BCM53573: Fix address of Luxul XAP-1440's Ethernet PHY
Randall P. Embry (2):
9p: fix /sys/fs/9p/caches overwriting itself 9p: sysfs_init: don't hardcode error to ENOMEM
Ranganath V N (2):
net: sched: act_connmark: initialize struct tc_ife to fix kernel leak
net: sched: act_ife: initialize struct tc_ife to fix KMSAN kernel-infoleak
Ranjan Kumar (1):
scsi: mpt3sas: Add support for 22.5 Gbps SAS link rate
Raphael Pinsonneault-Thibeault (2):
Bluetooth: hci_event: validate skb length for unknown CC opcode
Bluetooth: btusb: reorder cleanup in btusb_disconnect to avoid UAF
Ricardo B. Marlière (2):
selftests/bpf: Fix bpf_prog_detach2 usage in test_lirc_mode2 selftests/bpf: Upon failures, exit with code 1 in test_xsk.sh
Ricardo Ribalda (1):
media: uvcvideo: Use heuristic to find stream entity
Richard Gobert (1):
selftests/net: fix GRO coalesce test and add ext header coalesce tests
Robert Marko (1):
net: ethernet: microchip: sparx5: make it selectable for ARCH_LAN969X
Rodrigo Gobbi (1):
iio: adc: spear_adc: mask SPEAR_ADC_STATUS channel and avg sample before setting register
Rohan G Thomas (1):
net: phy: marvell: Fix 88e1510 downshift counter errata
Rong Zhang (1):
hwmon: (k10temp) Add device ID for Strix Halo
Rosen Penev (1):
dmaengine: mv_xor: match alloc_wc and free_wc
Roy Vegard Ovesen (2):
ALSA: usb-audio: fix control pipe direction
ALSA: usb-audio: add mono main switch to Presonus S1824c
Ryan Chen (1):
soc: aspeed: socinfo: Add AST27xx silicon IDs
Ryan Wanner (1):
clk: at91: clk-master: Add check for divide by 3
Sabrina Dubroca (1):
espintcp: fix skb leaks
Sakari Ailus (1):
ACPI: property: Return present device nodes only on fwnode interface
Saket Dumbre (1):
ACPICA: Update dsmethod.c to get rid of unused variable warning
Sangwook Shin (1):
watchdog: s3c2410_wdt: Fix max_timeout being calculated larger
Sarthak Garg (1):
mmc: sdhci-msm: Enable tuning for SDR50 mode for SD card
Sascha Hauer (1):
tools: lib: thermal: use pkg-config to locate libnl3
Sathishkumar S (1):
drm/amdgpu/jpeg: Hold pg_lock before jpeg poweroff
Scott Mayhew (1):
NFS: check if suid/sgid was cleared after a write as needed
Seyediman Seyedarab (2):
drm/nouveau: replace snprintf() with scnprintf() in nvkm_snprintbf() iommu/vt-d: Replace snprintf with scnprintf in dmar_latency_snapshot()
Shang song (Lenovo) (1):
ACPI: PRM: Skip handlers with NULL handler_address or NULL VA
Sharique Mohammad (1):
ASoC: max98090/91: fixed max98091 ALSA widget powering up/down
Shaurya Rane (1):
jfs: fix uninitialized waitqueue in transaction manager
Shawn Lin (1):
mmc: sdhci-of-dwcmshc: Change DLL_STRBIN_TAPNUM_DEFAULT to 0x4
Shenghao Ding (1):
ASoC: tas2781: fix getting the wrong device number
Shengjiu Wang (1):
ASoC: fsl_sai: fix bit order for DSD format
Shuai Xue (1):
acpi,srat: Fix incorrect device handle check for Generic Initiator
Shuhao Fu (1):
smb: client: fix refcount leak in smb2_set_path_attr
Shyam Prasad N (1):
cifs: stop writeback extension when change of size is detected
Srinivas Kandagatla (1):
ASoC: qdsp6: q6asm: do not sleep while atomic
Srinivasan Shanmugam (1):
drm/amdgpu: Fix function header names in amdgpu_connectors.c
Stefan Wahren (1):
ethernet: Extend device_get_mac_address() to use NVMEM
Stefan Wiehler (3):
sctp: Hold RCU read lock while iterating over address list
sctp: Prevent TOCTOU out-of-bounds write
sctp: Hold sock lock while iterating over address list
Stephan Gerhold (1):
remoteproc: qcom: q6v5: Avoid handling handover twice
Steven Rostedt (1):
selftests/tracing: Run sample events to clear page cache events
Sungho Kim (1):
PCI/P2PDMA: Fix incorrect pointer usage in devm_kfree() call
Svyatoslav Ryhel (4):
soc/tegra: fuse: Add Tegra114 nvmem cells and fuse lookups
ARM: tegra: transformer-20: add missing magnetometer interrupt
ARM: tegra: transformer-20: fix audio-codec interrupt
video: backlight: lp855x_bl: Set correct EPROM start for LP8556
Takashi Iwai (2):
ALSA: usb-audio: Add validation of UAC2/UAC3 effect units
ALSA: usb-audio: Fix potential overflow of PCM transfer buffer
Tetsuo Handa (3):
media: imon: make send_packet() more robust
ntfs3: pretend $Extend records as regular files
jfs: Verify inode mode when loading from disk
Thadeu Lima de Souza Cascardo (1):
char: misc: restrict the dynamic range to exclude reserved minors
Thomas Andreatta (1):
dmaengine: sh: setup_xref error handling
Thomas Weißschuh (3):
spi: loopback-test: Don't use %pK through printk
bpf: Don't use %pK through printk
ice: Don't use %pK through printk or tracepoints
Thomas Zimmermann (1):
drm/sysfb: Do not dereference NULL pointer in plane reset
Théo Lebrun (1):
net: macb: avoid dealing with endianness in macb_set_hwaddr()
Tianyang Zhang (1):
LoongArch: Let {pte,pmd}_modify() record the status of _PAGE_DIRTY
Tiezhu Yang (1):
net: stmmac: Check stmmac_hw_setup() in stmmac_resume()
Timur Kristóf (4):
drm/amdgpu: Respect max pixel clock for HDMI and DVI-D (v2) drm/amd/display: Fix DVI-D/HDMI adapters drm/amd/display: Disable VRR on DCE 6
drm/amd/pm: Disable MCLK switching on SI at high pixel clocks
Tiwei Bie (1):
um: Fix help message for ssl-non-raw
Tom Stellard (1):
bpftool: Fix -Wuninitialized-const-pointer warnings with clang >= 21
Tomer Tayar (1):
accel/habanalabs: return ENOMEM if less than requested pages were pinned
Tomeu Vizoso (1):
drm/etnaviv: fix flush sequence logic
Tomi Valkeinen (3):
drm/tidss: Use the crtc_* timings when programming the HW drm/bridge: cdns-dsi: Fix REG_WAKEUP_TIME value drm/bridge: cdns-dsi: Don't fail on MIPI_DSI_MODE_VIDEO_BURST
Tristan Lobb (1):
HID: quirks: avoid Cooler Master MM712 dongle wakeup bug
Tristram Ha (1):
net: dsa: microchip: Fix reserved multicast address table programming
Trond Myklebust (4):
pnfs: Fix TLS logic in _nfs4_pnfs_v4_ds_connect()
NFS: enable nconnect for RDMA
pnfs: Set transport security policy to RPC_XPRTSEC_NONE unless using TLS
NFSv4: Fix an incorrect parameter when calling nfs4_call_sync()
Tvrtko Ursulin (1):
drm/amdgpu: Use memdup_array_user in amdgpu_cs_wait_fences_ioctl
Ujwal Kundur (1):
rds: Fix endianness annotation for RDS_MPATH_HASH
Umesh Nerlige Ramappa (1):
drm/i915: Fix conversion between clock ticks and nanoseconds
Uwe Kleine-König (1):
crypto: aspeed-acry - Convert to platform remove callback returning void
Valerio Setti (1):
ASoC: meson: aiu-encoder-i2s: fix bit clock polarity
Vered Yavniely (1):
accel/habanalabs/gaudi2: fix BMON disable configuration
Viacheslav Dubeyko (2):
ceph: add checking of wait_for_completion_killable() return value
ceph: refactor wake_up_bit() pattern of calling
Vincent Guittot (1):
sched/pelt: Avoid underestimation of task utilization
Vladimir Oltean (1):
net: dsa: improve shutdown sequence
Vladimir Riabchun (1):
ftrace: Fix softlockup in ftrace_module_enable
Vladimir Zapolskiy (1):
media: i2c: og01a1b: Specify monochrome media bus format instead of Bayer
Wake Liu (2):
selftests/net: Replace non-standard __WORDSIZE with sizeof(long) * 8 selftests/net: Ensure assert() triggers in psock_tpacket.c
Wang Liang (2):
selftests: netdevsim: Fix ethtool-coalesce.sh fail by installing ethtool-common.sh
net: fix NULL pointer dereference in l3mdev_l3_rcv
Wayne Lin (1):
drm/amd/display: Enable mst when it's detected but yet to be initialized
Wei Fang (1):
net: fec: correct rx_bytes statistic for the case SHIFT16 is set
Wei Yang (1):
fs/proc: fix uaf in proc_readdir_de()
William Wu (1):
usb: gadget: f_hid: Fix zero length packet transfer
Wonkon Kim (1):
scsi: ufs: core: Initialize value of an attribute returned by uic cmd
Xin Hao (1):
mm: memcg: add THP swap out info for anonymous reclaim
Xion Wang (1):
char: Use list_del_init() in misc_deregister() to reinitialize list pointer
Xuan Zhuo (1):
virtio-net: fix incorrect flags recording in big mode
Yafang Shao (1):
net/cls_cgroup: Fix task_get_classid() during qdisc run
Yang Wang (1):
drm/amd/pm: fix smu table id bound check issue in smu_cmn_update_table()
Yang Xiuwei (1):
NFS: sysfs: fix leak when nfs_client kobject add fails
Yifan Zhang (1):
amd/amdkfd: resolve a race in amdgpu_amdkfd_device_fini_sw
Yikang Yue (1):
fs/hpfs: Fix error code for new_inode() failure in mkdir/create/mknod/symlink
Ying Huang (1):
memory tiers: use default_dram_perf_ref_source in log message
Yosry Ahmed (7):
KVM: SVM: Mark VMCB_LBR dirty when MSR_IA32_DEBUGCTLMSR is updated
mm: memcg: change flush_next_time to flush_last_time
mm: memcg: move vmstats structs definition above flushing code
mm: memcg: make stats flushing threshold per-memcg
mm: workingset: move the stats flush into workingset_test_recent()
mm: memcg: restore subtree stats flushing
mm: memcg: optimize parent iteration in memcg_rstat_updated()
Yu Kuai (1):
blk-cgroup: fix possible deadlock while configuring policy
Yue Haibing (1):
ipv6: Add sanity checks on ipv6_devconf.rpl_seg_enabled
Yuhao Jiang (1):
ACPI: video: Fix use-after-free in acpi_video_switch_brightness()
Yuta Hayama (1):
rtc: rx8025: fix incorrect register reference
ZhangGuoDong (2):
smb/server: fix possible memory leak in smb2_read() smb/server: fix possible refcount leak in smb2_sess_setup()
Zijun Hu (2):
char: misc: Make misc_register() reentry for miscdevice who wants dynamic minor
char: misc: Does not request module for miscdevice with dynamic minor
Zilin Guan (3):
tracing: Fix memory leaks in create_field_var() net/handshake: Fix memory leak in tls_handshake_accept()
btrfs: scrub: put bio after errors in scrub_raid56_parity_stripe()
austinchang (1):
btrfs: mark dirty extent range for out of bound prealloc extents
chuguangqing (1):
fs: ext4: change GFP_KERNEL to GFP_NOFS to avoid deadlock
jingxian.li (1):
Revert "perf dso: Add missed dso__put to dso__load_kcore"
raub camaioni (1):
usb: gadget: f_ncm: Fix MAC assignment NCM ethernet
wangzijie (1):
f2fs: fix infinite loop in __insert_extent_tree()
wenglianfa (1):
RDMA/hns: Fix the modification of max_send_sge
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/cgroup-v2.rst +9 -0
@@ -1532,6 +1532,15 @@ PAGE_SIZE multiple when read back. collapsing an existing range of pages. This counter is not present when CONFIG_TRANSPARENT_HUGEPAGE is not set. + thp_swpout (npn) + Number of transparent hugepages which are swapout in one piece + without splitting. + + thp_swpout_fallback (npn) + Number of transparent hugepages which were split before swapout. + Usually because failed to allocate some continuous swap space + for the huge page. + memory.numa_stat A read-only nested-keyed file which exists on non-root cgroups.
MAINTAINERS +1 -0
@@ -14725,6 +14725,7 @@ NETDEVSIM M: Jakub Kicinski <[email protected]> S: Maintained F: drivers/net/netdevsim/* +F: tools/testing/selftests/drivers/net/netdevsim/* NETEM NETWORK EMULATOR M: Stephen Hemminger <[email protected]>
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 116 +SUBLEVEL = 117 EXTRAVERSION = NAME = Pinguïn Aangedreven
arch/arc/include/asm/bitops.h +2 -0
@@ -133,6 +133,8 @@ static inline __attribute__ ((const)) int fls(unsigned int x)*/ static inline __attribute__ ((const))unsigned long __fls (unsigned long x) { +if (__builtin_constant_p (x)) +return x ?BITS_PER_LONG -1 -__builtin_clzl (x) :0 ;/* FLS insn has exactly same semantics as the API */ return __builtin_arc_fls (x); }
arch/arm/boot/dts/broadcom/bcm47189-luxul-xap-1440.dts +2 -2
@@ -55,8 +55,8 @@ &gmac0 { mdio { /delete-node/ switch@1e; - bcm54210e: ethernet-phy@0 { - reg = <0>; + bcm54210e: ethernet-phy@25 { + reg = <25>; }; }; };
arch/arm/boot/dts/nvidia/tegra20-asus-tf101.dts +4 -1
@@ -502,6 +502,9 @@ magnetometer@e { compatible = "asahi-kasei,ak8974"; reg = <0xe>; + interrupt-parent = <&gpio>; + interrupts = <TEGRA_GPIO(N, 5) IRQ_TYPE_EDGE_RISING>; + avdd-supply = <&vdd_3v3_sys>; dvdd-supply = <&vdd_1v8_sys>;
@@ -515,7 +518,7 @@ wm8903: audio-codec@1a { reg = <0x1a>; interrupt-parent = <&gpio>; - interrupts = <TEGRA_GPIO(X, 1) IRQ_TYPE_EDGE_BOTH>; + interrupts = <TEGRA_GPIO(X, 3) IRQ_TYPE_EDGE_BOTH>; gpio-controller; #gpio-cells = <2>;
arch/arm/boot/dts/nxp/imx/imx51-zii-rdu1.dts +2 -2
@@ -259,7 +259,7 @@ &audmux { pinctrl-0 = <&pinctrl_audmux>; status = "okay"; - ssi2 { + mux-ssi2 { fsl,audmux-port = <1>; fsl,port-config = < (IMX_AUDMUX_V2_PTCR_SYN |
@@ -271,7 +271,7 @@ IMX_AUDMUX_V2_PDCR_RXDSEL(2) >; }; - aud3 { + mux-aud3 { fsl,audmux-port = <2>; fsl,port-config = < IMX_AUDMUX_V2_PTCR_SYN
arch/arm/crypto/Kconfig +1 -1
@@ -4,7 +4,7 @@ menu "Accelerated Cryptographic Algorithms for CPU (arm)" config CRYPTO_CURVE25519_NEON tristate "Public key crypto: Curve25519 (NEON)" - depends on KERNEL_MODE_NEON + depends on KERNEL_MODE_NEON && !CPU_BIG_ENDIAN select CRYPTO_LIB_CURVE25519_GENERIC select CRYPTO_ARCH_HAVE_LIB_CURVE25519 help
arch/arm/mach-at91/pm_suspend.S +7 -1
@@ -689,6 +689,10 @@ sr_dis_exit: bic tmp2, tmp2, #AT91_PMC_PLL_UPDT_ID str tmp2, [pmc, #AT91_PMC_PLL_UPDT] + /* save acr */ + ldr tmp2, [pmc, #AT91_PMC_PLL_ACR] + str tmp2, .saved_acr + /* save div. */ mov tmp1, #0 ldr tmp2, [pmc, #AT91_PMC_PLL_CTRL0]
@@ -758,7 +762,7 @@ sr_dis_exit: str tmp1, [pmc, #AT91_PMC_PLL_UPDT] /* step 2. */ - ldr tmp1, =AT91_PMC_PLL_ACR_DEFAULT_PLLA + ldr tmp1, .saved_acr str tmp1, [pmc, #AT91_PMC_PLL_ACR] /* step 3. */
@@ -1134,6 +1138,8 @@ ENDPROC(at91_pm_suspend_in_sram) .word 0 .saved_mckr: .word 0 +.saved_acr: + .word 0 .saved_pllar: .word 0 .saved_sam9_lpr:
arch/arm64/boot/dts/rockchip/rk3568-odroid-m1.dts +2 -0
@@ -482,6 +482,8 @@ &i2s0_8ch { }; &i2s1_8ch { + pinctrl-names = "default"; + pinctrl-0 = <&i2s1m0_sclktx &i2s1m0_lrcktx &i2s1m0_sdi0 &i2s1m0_sdo0>; rockchip,trcm-sync-tx-only; status = "okay"; };
arch/arm64/boot/dts/xilinx/zynqmp-zcu106-revA.dts +2 -2
@@ -808,8 +808,8 @@ conf-tx { pins = "MIO54", "MIO56", "MIO57", "MIO58", "MIO59", "MIO60", "MIO61", "MIO62", "MIO63"; bias-disable; - drive-strength = <4>; - slew-rate = <SLEW_RATE_SLOW>; + drive-strength = <12>; + slew-rate = <SLEW_RATE_FAST>; }; };
arch/loongarch/include/asm/hw_breakpoint.h +2 -2
@@ -134,13 +134,13 @@ static inline void hw_breakpoint_thread_switch(struct task_struct *next)/* Determine number of BRP registers available. */ static inline int get_num_brps (void ) { -return csr_read64 (LOONGARCH_CSR_FWPC ) &CSR_FWPC_NUM ; +return csr_read32 (LOONGARCH_CSR_FWPC ) &CSR_FWPC_NUM ; }/* Determine number of WRP registers available. */ static inline int get_num_wrps (void ) { -return csr_read64 (LOONGARCH_CSR_MWPC ) &CSR_MWPC_NUM ; +return csr_read32 (LOONGARCH_CSR_MWPC ) &CSR_MWPC_NUM ; }#endif /* __KERNEL__ */
arch/loongarch/include/asm/pgtable.h +8 -3
@@ -448,6 +448,9 @@ static inline unsigned long pte_accessible(struct mm_struct *mm, pte_t a)static inline pte_t pte_modify (pte_t pte,pgprot_t newprot) { +if (pte_val (pte) & _PAGE_DIRTY) +pte_val (pte) |= _PAGE_MODIFIED; +return __pte ((pte_val (pte) & _PAGE_CHG_MASK) | (pgprot_val (newprot) & ~_PAGE_CHG_MASK)); }
@@ -570,9 +573,11 @@ static inline struct page *pmd_page(pmd_t pmd)static inline pmd_t pmd_modify (pmd_t pmd,pgprot_t newprot) { -pmd_val (pmd) = (pmd_val (pmd) & _HPAGE_CHG_MASK) | - (pgprot_val (newprot) & ~_HPAGE_CHG_MASK); -return pmd; +if (pmd_val (pmd) & _PAGE_DIRTY) +pmd_val (pmd) |= _PAGE_MODIFIED; + +return __pmd ((pmd_val (pmd) & _HPAGE_CHG_MASK) | + (pgprot_val (newprot) & ~_HPAGE_CHG_MASK)); }static inline pmd_t pmd_mkinvalid (pmd_t pmd)
arch/loongarch/kernel/traps.c +2 -2
@@ -1097,8 +1097,8 @@ static void configure_exception_vector(void) tlbrentry = (unsigned long )exception_handlers +80 *VECSIZE ;csr_write64 (eentry,LOONGARCH_CSR_EENTRY ); -csr_write64 (eentry,LOONGARCH_CSR_MERRENTRY ); -csr_write64 (tlbrentry,LOONGARCH_CSR_TLBRENTRY ); +csr_write64 (__pa (eentry),LOONGARCH_CSR_MERRENTRY ); +csr_write64 (__pa (tlbrentry),LOONGARCH_CSR_TLBRENTRY ); }void per_cpu_trap_init (int cpu)
arch/mips/boot/dts/lantiq/danube.dtsi +6 -0
@@ -5,8 +5,12 @@ / { compatible = "lantiq,xway", "lantiq,danube"; cpus { + #address-cells = <1>; + #size-cells = <0>; + cpu@0 { compatible = "mips,mips24Kc"; + reg = <0>; }; };
@@ -100,6 +104,8 @@ pci0: pci@e105400 { 0x1000000 0 0x00000000 0xae00000 0 0x200000>; /* io space */ reg = <0x7000000 0x8000 /* config space */ 0xe105400 0x400>; /* pci bridge */ + + device_type = "pci"; }; }; };
arch/mips/boot/dts/lantiq/danube_easy50712.dts +3 -1
@@ -4,6 +4,8 @@ /include/ "danube.dtsi" / { + model = "Intel EASY50712"; + chosen { bootargs = "console=ttyLTQ0,115200 init=/etc/preinit"; };
@@ -94,7 +96,7 @@ ethernet@e180000 { lantiq,tx-burst-length = <4>; }; - stp0: stp@e100bb0 { + stp0: gpio@e100bb0 { #gpio-cells = <2>; compatible = "lantiq,gpio-stp-xway"; gpio-controller;
arch/mips/lantiq/xway/sysctrl.c +1 -1
@@ -466,7 +466,7 @@ void __init ltq_soc_init(void)/* add our generic xway clocks */ clkdev_add_pmu ("10000000.fpi" ,NULL ,0 ,0 ,PMU_FPI );clkdev_add_pmu ("1e100a00.gptu" ,NULL ,1 ,0 ,PMU_GPT ); -clkdev_add_pmu ("1e100bb0.stp" ,NULL ,1 ,0 ,PMU_STP ); +clkdev_add_pmu ("1e100bb0.gpio" ,NULL ,1 ,0 ,PMU_STP );clkdev_add_pmu ("1e100c00.serial" ,NULL ,0 ,0 ,PMU_ASC1 );clkdev_add_pmu ("1e104100.dma" ,NULL ,1 ,0 ,PMU_DMA );clkdev_add_pmu ("1e100800.spi" ,NULL ,1 ,0 ,PMU_SPI );
arch/powerpc/kernel/eeh_driver.c +1 -1
@@ -334,7 +334,7 @@ static enum pci_ers_result eeh_report_error(struct eeh_dev *edev, rc = driver->err_handler->error_detected (pdev, pci_channel_io_frozen); edev->in_error = true; -pci_uevent_ers (pdev,PCI_ERS_RESULT_NONE ); +pci_uevent_ers (pdev, rc);return rc; }
arch/riscv/kernel/cpu-hotplug.c +1 -0
@@ -61,6 +61,7 @@ void arch_cpuhp_cleanup_dead_cpu(unsigned int cpu)pr_notice ("CPU%u: off\n" , cpu); +clear_tasks_mm_cpumask (cpu);/* Verify from the firmware if the cpu is really stopped*/ if (cpu_ops[cpu]->cpu_is_stopped) ret = cpu_ops[cpu]->cpu_is_stopped (cpu);
arch/riscv/kernel/entry.S +11 -7
@@ -82,7 +82,6 @@ _save_context: la gp, __global_pointer$ .option pop move a0, sp /* pt_regs */ - la ra, ret_from_exception /* * MSB of cause differentiates between
@@ -91,7 +90,8 @@ _save_context: bge s4, zero, 1f /* Handle interrupts */ - tail do_irq + call do_irq + j ret_from_exception 1: /* Handle other exceptions */ slli t0, s4, RISCV_LGPTR
@@ -99,11 +99,14 @@ _save_context: la t2, excp_vect_table_end add t0, t1, t0 /* Check if exception code lies within bounds */ - bgeu t0, t2, 1f - REG_L t0, 0(t0) - jr t0 -1: - tail do_trap_unknown + bgeu t0, t2, 3f + REG_L t1, 0(t0) +2: jalr t1 + j ret_from_exception +3: + + la t1, do_trap_unknown + j 2b SYM_CODE_END(handle_exception) ASM_NOKPROBE(handle_exception)
@@ -171,6 +174,7 @@ SYM_CODE_START_NOALIGN(ret_from_exception) #else sret #endif +SYM_INNER_LABEL(ret_from_exception_end, SYM_L_GLOBAL) SYM_CODE_END(ret_from_exception) ASM_NOKPROBE(ret_from_exception)
arch/riscv/kernel/setup.c +5 -2
@@ -318,11 +318,14 @@ void __init setup_arch(char **cmdline_p)/* Parse the ACPI tables for possible boot-time configuration */ acpi_boot_table_init (); +if (acpi_disabled) {#if IS_ENABLED (CONFIG_BUILTIN_DTB ) -unflatten_and_copy_device_tree (); +unflatten_and_copy_device_tree ();#else -unflatten_device_tree (); +unflatten_device_tree ();#endif + } +misc_mem_init ();init_resources ();
arch/riscv/kernel/stacktrace.c +23 -4
@@ -16,7 +16,24 @@#ifdef CONFIG_FRAME_POINTER -extern asmlinkage void ret_from_exception(void); +/* +* This disables KASAN checking when reading a value from another task's stack, +* since the other task could be running on another CPU and could have poisoned +* the stack in the meantime. +*/ +#define READ_ONCE_TASK_STACK (task, x) \ +({ \ + unsigned long val; \ + unsigned long addr = x; \ + if ((task) == current) \ + val = READ_ONCE(addr); \ + else \ + val = READ_ONCE_NOCHECK(addr); \ + val; \ +}) + +extern asmlinkage void handle_exception(void); +extern unsigned long ret_from_exception_end;static inline int fp_is_valid (unsigned long fp,unsigned long sp) {
@@ -68,10 +85,12 @@ void notrace walk_stackframe(struct task_struct *task, struct pt_regs *regs, fp = frame->ra; pc = regs->ra; }else { - fp = frame->fp; - pc =ftrace_graph_ret_addr (current, &graph_idx, frame->ra, + fp =READ_ONCE_TASK_STACK (task, frame->fp); + pc =READ_ONCE_TASK_STACK (task, frame->ra); + pc =ftrace_graph_ret_addr (current, &graph_idx, pc, &frame->ra); -if (pc == (unsigned long )ret_from_exception) { +if (pc >= (unsigned long )handle_exception && + pc < (unsigned long )&ret_from_exception_end) {if (unlikely (!__kernel_text_address (pc) || !fn (arg, pc)))break ;
arch/riscv/mm/ptdump.c +1 -1
@@ -22,7 +22,7 @@#define pt_dump_seq_puts (m, fmt) \ ({ \ if (m) \ - seq_printf(m, fmt); \ + seq_puts(m, fmt); \ })/*
arch/riscv/net/bpf_jit_comp64.c +2 -3
@@ -855,10 +855,9 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, stack_size +=16 ; save_ret = flags & (BPF_TRAMP_F_CALL_ORIG |BPF_TRAMP_F_RET_FENTRY_RET ); -if (save_ret) { +if (save_ret) stack_size +=16 ;/* Save both A5 (BPF R0) and A0 */ - retval_off = stack_size; - } + retval_off = stack_size; stack_size += nregs *8 ; args_off = stack_size;
arch/s390/Kconfig +0 -1
@@ -128,7 +128,6 @@ config S390 select ARCH_WANT_DEFAULT_BPF_JIT select ARCH_WANT_IPC_PARSE_VERSION select ARCH_WANT_KERNEL_PMD_MKWRITE - select ARCH_WANT_OPTIMIZE_HUGETLB_VMEMMAP select BUILDTIME_TABLE_SORT select CLONE_BACKWARDS2 select DMA_OPS if PCI
arch/s390/include/asm/pci.h +0 -1
@@ -138,7 +138,6 @@ struct zpci_dev { u8 has_resources : 1; u8 is_physfn : 1; u8 util_str_avail : 1; - u8 irqs_registered : 1; u8 reserved : 2;unsigned int devfn;/* DEVFN part of the RID*/
arch/s390/pci/pci_event.c +5 -2
@@ -83,6 +83,7 @@ static pci_ers_result_t zpci_event_notify_error_detected(struct pci_dev *pdev,pci_ers_result_t ers_res =PCI_ERS_RESULT_DISCONNECT ; ers_res = driver->err_handler->error_detected (pdev, pdev->error_state); +pci_uevent_ers (pdev, ers_res);if (ers_result_indicates_abort (ers_res))pr_info ("%s: Automatic recovery failed after initial reporting\n" ,pci_name (pdev));else if (ers_res ==PCI_ERS_RESULT_NEED_RESET )
@@ -173,7 +174,7 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev)* is unbound or probed and that userspace can't access its * configuration space while we perform recovery. */ -pci_dev_lock (pdev); +device_lock (&pdev->dev);if (pdev->error_state == pci_channel_io_perm_failure) { ers_res =PCI_ERS_RESULT_DISCONNECT ; goto out_unlock;
@@ -212,6 +213,7 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev) ers_res =zpci_event_do_reset (pdev, driver);if (ers_res !=PCI_ERS_RESULT_RECOVERED ) { +pci_uevent_ers (pdev,PCI_ERS_RESULT_DISCONNECT );pr_err ("%s: Automatic recovery failed; operator intervention is required\n" ,pci_name (pdev)); goto out_unlock;
@@ -220,8 +222,9 @@ static pci_ers_result_t zpci_event_attempt_error_recovery(struct pci_dev *pdev)pr_info ("%s: The device is ready to resume operations\n" ,pci_name (pdev));if (driver->err_handler->resume) driver->err_handler->resume (pdev); +pci_uevent_ers (pdev,PCI_ERS_RESULT_RECOVERED ); out_unlock: -pci_dev_unlock (pdev); +device_unlock (&pdev->dev);return ers_res; }
arch/s390/pci/pci_irq.c +1 -8
@@ -107,9 +107,6 @@ static int zpci_set_irq(struct zpci_dev *zdev)else rc =zpci_set_airq (zdev); -if (!rc) - zdev->irqs_registered =1 ; -return rc; }
@@ -123,9 +120,6 @@ static int zpci_clear_irq(struct zpci_dev *zdev)else rc =zpci_clear_airq (zdev); -if (!rc) - zdev->irqs_registered =0 ; -return rc; }
@@ -427,8 +421,7 @@ bool arch_restore_msi_irqs(struct pci_dev *pdev) {struct zpci_dev *zdev =to_zpci (pdev); -if (!zdev->irqs_registered) -zpci_set_irq (zdev); +zpci_set_irq (zdev);return true; }
arch/sparc/include/asm/elf_64.h +1 -0
@@ -58,6 +58,7 @@#define R_SPARC_7 43#define R_SPARC_5 44#define R_SPARC_6 45 +#define R_SPARC_UA64 54/* Bits present in AT_HWCAP, primarily for Sparc32. */ #define HWCAP_SPARC_FLUSH 0x00000001
arch/sparc/include/asm/io_64.h +3 -3
@@ -250,19 +250,19 @@ void insl(unsigned long, void *, unsigned long);#define insw insw#define insl insl -static inline void readsb (void __iomem *port,void *buf,unsigned long count) +static inline void readsb (const volatile void __iomem *port,void *buf,unsigned long count) {insb ((unsigned long __force )port, buf, count); }#define readsb readsb -static inline void readsw (void __iomem *port,void *buf,unsigned long count) +static inline void readsw (const volatile void __iomem *port,void *buf,unsigned long count) {insw ((unsigned long __force )port, buf, count); }#define readsw readsw -static inline void readsl (void __iomem *port,void *buf,unsigned long count) +static inline void readsl (const volatile void __iomem *port,void *buf,unsigned long count) {insl ((unsigned long __force )port, buf, count); }
arch/sparc/kernel/module.c +1 -0
@@ -117,6 +117,7 @@ int apply_relocate_add(Elf_Shdr *sechdrs,break ;#ifdef CONFIG_SPARC64 case R_SPARC_64 : +case R_SPARC_UA64 : location[0 ] = v >>56 ; location[1 ] = v >>48 ; location[2 ] = v >>40 ;
arch/um/drivers/ssl.c +4 -1
@@ -199,4 +199,7 @@ static int ssl_non_raw_setup(char *str)return 1 ; }__setup ("ssl-non-raw" , ssl_non_raw_setup); -__channel_help (ssl_non_raw_setup,"set serial lines to non-raw mode" ); +__uml_help (ssl_non_raw_setup, +"ssl-non-raw\n" +" Set serial lines to non-raw mode.\n\n" +);
arch/x86/entry/vsyscall/vsyscall_64.c +14 -3
@@ -124,7 +124,12 @@ bool emulate_vsyscall(unsigned long error_code,if ((error_code & (X86_PF_WRITE |X86_PF_USER )) !=X86_PF_USER )return false; -if (!(error_code &X86_PF_INSTR )) { +/* +* Assume that faults at regs->ip are because of an +* instruction fetch. Return early and avoid +* emulation for faults during data accesses: +*/ +if (address != regs->ip) {/* Failed vsyscall read */ if (vsyscall_mode ==EMULATE )return false;
@@ -136,13 +141,19 @@ bool emulate_vsyscall(unsigned long error_code,return false; } +/* +* X86_PF_INSTR is only set when NX is supported. When +* available, use it to double-check that the emulation code +* is only being used for instruction fetches: +*/ +if (cpu_feature_enabled (X86_FEATURE_NX )) +WARN_ON_ONCE (!(error_code &X86_PF_INSTR )); +/* * No point in checking CS -- the only way to get here is a user mode * trap to a high address, which means that we're in 64-bit user code. */ -WARN_ON_ONCE (address != regs->ip); -if (vsyscall_mode ==NONE ) {warn_bad_vsyscall (KERN_INFO , regs,"vsyscall attempted with vsyscall=none" );
arch/x86/kernel/cpu/microcode/amd.c +3 -0
@@ -210,10 +210,13 @@ static bool need_sha_check(u32 cur_rev)case 0xaa001 :return cur_rev <=0xaa00116 ;break ;case 0xaa002 :return cur_rev <=0xaa00218 ;break ;case 0xb0021 :return cur_rev <=0xb002146 ;break ; +case 0xb0081 :return cur_rev <=0xb008111 ;break ;case 0xb1010 :return cur_rev <=0xb101046 ;break ;case 0xb2040 :return cur_rev <=0xb204031 ;break ;case 0xb4040 :return cur_rev <=0xb404031 ;break ; +case 0xb4041 :return cur_rev <=0xb404101 ;break ;case 0xb6000 :return cur_rev <=0xb600031 ;break ; +case 0xb6080 :return cur_rev <=0xb608031 ;break ;case 0xb7000 :return cur_rev <=0xb700031 ;break ;default :break ; }
arch/x86/kernel/fpu/core.c +3 -0
@@ -757,6 +757,9 @@ void fpu__clear_user_states(struct fpu *fpu) !fpregs_state_valid(fpu, smp_processor_id()))os_xrstor_supervisor (fpu->fpstate); +/* Ensure XFD state is in sync before reloading XSTATE */ +xfd_update_state (fpu->fpstate); +/* Reset user states in registers. */ restore_fpregs_from_init_fpstate (XFEATURE_MASK_USER_RESTORE );
arch/x86/kernel/kvm.c +10 -10
@@ -1066,16 +1066,6 @@ static void kvm_wait(u8 *ptr, u8 val)*/ void __init kvm_spinlock_init (void ) { -/* -* In case host doesn't support KVM_FEATURE_PV_UNHALT there is still an -* advantage of keeping virt_spin_lock_key enabled: virt_spin_lock() is -* preferred over native qspinlock when vCPU is preempted. -*/ -if (!kvm_para_has_feature (KVM_FEATURE_PV_UNHALT )) { -pr_info ("PV spinlocks disabled, no host support\n" ); -return ; - } -/* * Disable PV spinlocks and use native qspinlock when dedicated pCPUs * are available.
@@ -1095,6 +1085,16 @@ void __init kvm_spinlock_init(void) goto out; } +/* +* In case host doesn't support KVM_FEATURE_PV_UNHALT there is still an +* advantage of keeping virt_spin_lock_key enabled: virt_spin_lock() is +* preferred over native qspinlock when vCPU is preempted. +*/ +if (!kvm_para_has_feature (KVM_FEATURE_PV_UNHALT )) { +pr_info ("PV spinlocks disabled, no host support\n" ); +return ; + } +pr_info ("PV spinlocks enabled\n" );__pv_init_lock_hash ();
arch/x86/kvm/svm/svm.c +4 -0
@@ -3183,7 +3183,11 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr)if (data &DEBUGCTL_RESERVED_BITS )return 1 ; +if (svm_get_lbr_vmcb (svm)->save.dbgctl == data) +break ; +svm_get_lbr_vmcb (svm)->save.dbgctl = data; +vmcb_mark_dirty (svm->vmcb,VMCB_LBR );svm_update_lbrv (vcpu);break ;case MSR_VM_HSAVE_PA :
arch/x86/net/bpf_jit_comp.c +1 -1
@@ -1995,7 +1995,7 @@ st: if (is_imm8(insn->off)) ctx->cleanup_addr = proglen;if (bpf_prog_was_classic (bpf_prog) && - !capable (CAP_SYS_ADMIN )) { + !ns_capable_noaudit (&init_user_ns,CAP_SYS_ADMIN )) {u8 *ip = image + addrs[i -1 ];if (emit_spectre_bhb_barrier (&prog, ip, bpf_prog))
block/blk-cgroup.c +8 -15
@@ -848,14 +848,8 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol, disk = ctx->bdev->bd_disk; q = disk->queue; -/* -* blkcg_deactivate_policy() requires queue to be frozen, we can grab -* q_usage_counter to prevent concurrent with blkcg_deactivate_policy(). -*/ - ret =blk_queue_enter (q,0 ); -if (ret) - goto fail; - +/* Prevent concurrent with blkcg_deactivate_policy() */ +mutex_lock (&q->blkcg_mutex);spin_lock_irq (&q->queue_lock);if (!blkcg_policy_enabled (q, pol)) {
@@ -885,16 +879,16 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,/* Drop locks to do new blkg allocation with GFP_KERNEL. */ spin_unlock_irq (&q->queue_lock); - new_blkg =blkg_alloc (pos, disk,GFP_KERNEL ); + new_blkg =blkg_alloc (pos, disk,GFP_NOIO );if (unlikely (!new_blkg)) { ret = -ENOMEM ; - goto fail_exit_queue; + goto fail_exit; }if (radix_tree_preload (GFP_KERNEL )) {blkg_free (new_blkg); ret = -ENOMEM ; - goto fail_exit_queue; + goto fail_exit; }spin_lock_irq (&q->queue_lock);
@@ -922,7 +916,7 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol, goto success; } success: -blk_queue_exit (q); +mutex_unlock (&q->blkcg_mutex); ctx->blkg = blkg;return 0 ;
@@ -930,9 +924,8 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol,radix_tree_preload_end (); fail_unlock:spin_unlock_irq (&q->queue_lock); -fail_exit_queue: -blk_queue_exit (q); -fail: +fail_exit: +mutex_unlock (&q->blkcg_mutex);/* * If queue was bypassing, we should retry. Do so after a * short msleep(). It isn't strictly necessary but queue
drivers/accel/habanalabs/common/memory.c +1 -1
@@ -2323,7 +2323,7 @@ static int get_user_memory(struct hl_device *hdev, u64 addr, u64 size,if (rc <0 ) goto destroy_pages; npages = rc; - rc = -EFAULT ; + rc = -ENOMEM ; goto put_pages; } userptr->npages = npages;
drivers/accel/habanalabs/gaudi/gaudi.c +19 -0
@@ -4173,10 +4173,29 @@ static int gaudi_mmap(struct hl_device *hdev, struct vm_area_struct *vma,vm_flags_set (vma,VM_IO |VM_PFNMAP |VM_DONTEXPAND |VM_DONTDUMP |VM_DONTCOPY |VM_NORESERVE ); +#ifdef _HAS_DMA_MMAP_COHERENT +/* +* If dma_alloc_coherent() returns a vmalloc address, set VM_MIXEDMAP +* so vm_insert_page() can handle it safely. Without this, the kernel +* may BUG_ON due to VM_PFNMAP. +*/ +if (is_vmalloc_addr (cpu_addr)) +vm_flags_set (vma,VM_MIXEDMAP ); + rc =dma_mmap_coherent (hdev->dev, vma, cpu_addr, (dma_addr -HOST_PHYS_BASE ), size);if (rc)dev_err (hdev->dev,"dma_mmap_coherent error %d" , rc); +#else + + rc =remap_pfn_range (vma, vma->vm_start, +virt_to_phys (cpu_addr) >>PAGE_SHIFT , + size, vma->vm_page_prot); +if (rc) +dev_err (hdev->dev,"remap_pfn_range error %d" , rc); + +#endif +return rc; }
drivers/accel/habanalabs/gaudi2/gaudi2.c +14 -1
@@ -2985,7 +2985,6 @@ static int gaudi2_early_init(struct hl_device *hdev) rc =hl_fw_read_preboot_status (hdev);if (rc) {if (hdev->reset_on_preboot_fail) -/* we are already on failure flow, so don't check if hw_fini fails. */ hdev->asic_funcs->hw_fini (hdev, true, false); goto pci_fini; }
@@ -2997,6 +2996,13 @@ static int gaudi2_early_init(struct hl_device *hdev)dev_err (hdev->dev,"failed to reset HW in dirty state (%d)\n" , rc); goto pci_fini; } + + rc =hl_fw_read_preboot_status (hdev); +if (rc) { +if (hdev->reset_on_preboot_fail) + hdev->asic_funcs->hw_fini (hdev, true, false); + goto pci_fini; + } }return 0 ;
@@ -6339,6 +6345,13 @@ static int gaudi2_mmap(struct hl_device *hdev, struct vm_area_struct *vma, VM_DONTCOPY | VM_NORESERVE);#ifdef _HAS_DMA_MMAP_COHERENT +/* +* If dma_alloc_coherent() returns a vmalloc address, set VM_MIXEDMAP +* so vm_insert_page() can handle it safely. Without this, the kernel +* may BUG_ON due to VM_PFNMAP. +*/ +if (is_vmalloc_addr (cpu_addr)) +vm_flags_set (vma,VM_MIXEDMAP ); rc =dma_mmap_coherent (hdev->dev, vma, cpu_addr, dma_addr, size);if (rc)
drivers/accel/habanalabs/gaudi2/gaudi2_coresight.c +1 -1
@@ -2409,7 +2409,7 @@ static int gaudi2_config_bmon(struct hl_device *hdev, struct hl_debug_params *paWREG32 (base_reg + mmBMON_ADDRH_E3_OFFSET,0 );WREG32 (base_reg + mmBMON_REDUCTION_OFFSET,0 );WREG32 (base_reg + mmBMON_STM_TRC_OFFSET,0x7 | (0xA <<8 )); -WREG32 (base_reg + mmBMON_CR_OFFSET,0x77 |0xf <<24 ); +WREG32 (base_reg + mmBMON_CR_OFFSET,0x41 ); }return 0 ;
drivers/acpi/acpi_video.c +3 -1
@@ -1952,8 +1952,10 @@ static void acpi_video_bus_remove_notify_handler(struct acpi_video_bus *video)struct acpi_video_device *dev;mutex_lock (&video->device_list_lock); -list_for_each_entry (dev, &video->video_device_list, entry) +list_for_each_entry (dev, &video->video_device_list, entry) {acpi_video_dev_remove_notify_handler (dev); +cancel_delayed_work_sync (&dev->switch_brightness_work); + }mutex_unlock (&video->device_list_lock);acpi_video_bus_stop_devices (video);
drivers/acpi/acpica/dsmethod.c +1 -9
@@ -462,7 +462,6 @@ acpi_ds_call_control_method(struct acpi_thread_state *thread,struct acpi_walk_state *next_walk_state =NULL ;union acpi_operand_object *obj_desc;struct acpi_evaluate_info *info; -u32 i;ACPI_FUNCTION_TRACE_PTR (ds_call_control_method, this_walk_state);
@@ -546,14 +545,7 @@ acpi_ds_call_control_method(struct acpi_thread_state *thread,* Delete the operands on the previous walkstate operand stack * (they were copied to new objects) */ -for (i =0 ; i < obj_desc->method.param_count; i++) { -acpi_ut_remove_reference (this_walk_state->operands[i]); - this_walk_state->operands[i] =NULL ; - } - -/* Clear the operand stack */ - - this_walk_state->num_operands =0 ; +acpi_ds_clear_operands (this_walk_state); ACPI_DEBUG_PRINT((ACPI_DB_DISPATCH, "**** Begin nested execution of [%4.4s] **** WalkState=%p\n",
drivers/acpi/button.c +3 -1
@@ -603,8 +603,10 @@ static int acpi_button_add(struct acpi_device *device)input_set_drvdata (input, device); error =input_register_device (input); -if (error) +if (error) { +input_free_device (input); goto err_remove_fs; + }switch (device->device_type) {case ACPI_BUS_TYPE_POWER_BUTTON :
drivers/acpi/cppc_acpi.c +3 -3
@@ -445,7 +445,7 @@ bool acpi_cpc_valid(void)if (acpi_disabled)return false; -for_each_present_cpu (cpu) { +for_each_online_cpu (cpu) { cpc_ptr =per_cpu (cpc_desc_ptr, cpu);if (!cpc_ptr)return false;
@@ -461,7 +461,7 @@ bool cppc_allow_fast_switch(void)struct cpc_desc *cpc_ptr;int cpu; -for_each_present_cpu (cpu) { +for_each_online_cpu (cpu) { cpc_ptr =per_cpu (cpc_desc_ptr, cpu); desired_reg = &cpc_ptr->cpc_regs[DESIRED_PERF ]; if (!CPC_IN_SYSTEM_MEMORY(desired_reg) &&
@@ -1368,7 +1368,7 @@ bool cppc_perf_ctrs_in_pcc(void) {int cpu; -for_each_present_cpu (cpu) { +for_each_online_cpu (cpu) {struct cpc_register_resource *ref_perf_reg;struct cpc_desc *cpc_desc;
drivers/acpi/numa/hmat.c +231 -91
495 lines not on this page · raw message
drivers/acpi/numa/srat.c +1 -1
@@ -140,7 +140,7 @@ acpi_table_print_srat_entry(struct acpi_subtable_header *header)struct acpi_srat_generic_affinity *p = (struct acpi_srat_generic_affinity *)header; -if (p->device_handle_type ==0 ) { +if (p->device_handle_type ==1 ) {/* * For pci devices this may be the only place they * are assigned a proximity domain
drivers/acpi/prmt.c +16 -3
@@ -150,15 +150,28 @@ acpi_parse_prmt(union acpi_subtable_headers *header, const unsigned long end) th = &tm->handlers[cur_handler];guid_copy (&th->guid, (guid_t *)handler_info->handler_guid); + +/* +* Print an error message if handler_address is NULL, the parse of VA also +* can be skipped. +*/ +if (unlikely (!handler_info->handler_address)) { +pr_info ("Skipping handler with NULL address for GUID: %pUL" , + (guid_t *)handler_info->handler_guid); +continue ; + } + th->handler_addr = (void *)efi_pa_va_lookup (&th->guid, handler_info->handler_address);/* -* Print a warning message if handler_addr is zero which is not expected to -* ever happen. +* Print a warning message and skip the parse of VA if handler_addr is zero +* which is not expected to ever happen. */ -if (unlikely (!th->handler_addr)) +if (unlikely (!th->handler_addr)) {pr_warn ("Failed to find VA of handler for GUID: %pUL, PA: 0x%llx" , &th->guid, handler_info->handler_address); +continue ; + } th->static_data_buffer_addr =efi_pa_va_lookup (&th->guid, handler_info->static_data_buffer_address);
drivers/acpi/property.c +23 -1
@@ -1286,6 +1286,28 @@ struct fwnode_handle *acpi_get_next_subnode(const struct fwnode_handle *fwnode,return NULL ; } +/* +* acpi_get_next_present_subnode - Return the next present child node handle +* @fwnode: Firmware node to find the next child node for. +* @child: Handle to one of the device's child nodes or a null handle. +* +* Like acpi_get_next_subnode(), but the device nodes returned by +* acpi_get_next_present_subnode() are guaranteed to be present. +* +* Returns: The fwnode handle of the next present sub-node. +*/ +static struct fwnode_handle * +acpi_get_next_present_subnode (const struct fwnode_handle *fwnode, +struct fwnode_handle *child) +{ +do { + child =acpi_get_next_subnode (fwnode, child); + }while (is_acpi_device_node (child) && + !acpi_device_is_present (to_acpi_device_node (child))); + +return child; +} +/** * acpi_node_get_parent - Return parent fwnode of this fwnode * @fwnode: Firmware node whose parent to get
@@ -1629,7 +1651,7 @@ static int acpi_fwnode_irq_get(const struct fwnode_handle *fwnode, .property_read_string_array = \ acpi_fwnode_property_read_string_array, \ .get_parent = acpi_node_get_parent, \ - .get_next_child_node = acpi_get_next_subnode, \ + .get_next_child_node = acpi_get_next_present_subnode, \ .get_named_child_node = acpi_fwnode_get_named_child_node, \ .get_name = acpi_fwnode_get_name, \ .get_name_prefix = acpi_fwnode_get_name_prefix, \
drivers/acpi/scan.c +2 -0
@@ -784,6 +784,8 @@ static bool acpi_info_matches_ids(struct acpi_device_info *info,static const char *const acpi_ignore_dep_ids[] = {"PNP0D80" ,/* Windows-compatible System Power Management Controller */ "INT33BD" ,/* Intel Baytrail Mailbox Device */ +"INTC10DE" ,/* Intel CVS LNL */ +"INTC10E0" ,/* Intel CVS ARL */ "LATT2021" ,/* Lattice FW Update Client Driver */ NULL };
drivers/base/node.c +9 -9
@@ -74,14 +74,14 @@ static BIN_ATTR_RO(cpulist, CPULIST_FILE_MAX_BYTES);* @dev: Device for this memory access class * @list_node: List element in the node's access list * @access: The access class rank -* @hmem_attrs: Heterogeneous memory performance attributes +* @coord: Heterogeneous memory performance coordinates */ struct node_access_nodes {struct device dev;struct list_head list_node;unsigned int access;#ifdef CONFIG_HMEM_REPORTING -struct node_hmem_attrs hmem_attrs; +struct access_coordinate coord;#endif };#define to_access_nodes (dev) container_of(dev, struct node_access_nodes, dev)
@@ -126,7 +126,7 @@ static void node_access_release(struct device *dev) }static struct node_access_nodes *node_init_node_access (struct node *node, -unsigned int access) +enum access_coordinate_class access) {struct node_access_nodes *access_node;struct device *dev;
@@ -167,7 +167,7 @@ static ssize_t property##_show(struct device *dev, \ char *buf) \ { \return sysfs_emit (buf,"%u\n" , \ -to_access_nodes (dev)->hmem_attrs.property); \ +to_access_nodes (dev)->coord.property); \ } \static DEVICE_ATTR_RO (property)
@@ -187,11 +187,11 @@ static struct attribute *access_attrs[] = {/** * node_set_perf_attrs - Set the performance values for given access class * @nid: Node identifier to be set -* @hmem_attrs: Heterogeneous memory performance attributes +* @coord: Heterogeneous memory performance coordinates * @access: The access class the for the given attributes */ -void node_set_perf_attrs (unsigned int nid,struct node_hmem_attrs *hmem_attrs, -unsigned int access) +void node_set_perf_attrs (unsigned int nid,struct access_coordinate *coord, +enum access_coordinate_class access) {struct node_access_nodes *c;struct node *node;
@@ -205,7 +205,7 @@ void node_set_perf_attrs(unsigned int nid, struct node_hmem_attrs *hmem_attrs,if (!c)return ; - c->hmem_attrs = *hmem_attrs; + c->coord = *coord;for (i =0 ; access_attrs[i] !=NULL ; i++) {if (sysfs_add_file_to_group (&c->dev.kobj, access_attrs[i],"initiators" )) {
@@ -689,7 +689,7 @@ int register_cpu_under_node(unsigned int cpu, unsigned int nid)*/ int register_memory_node_under_compute_node (unsigned int mem_nid,unsigned int cpu_nid, -unsigned int access) +enum access_coordinate_class access) {struct node *init_node, *targ_node;struct node_access_nodes *initiator, *target;
drivers/base/regmap/regmap-slimbus.c +2 -4
@@ -48,8 +48,7 @@ struct regmap *__regmap_init_slimbus(struct slim_device *slimbus,if (IS_ERR (bus))return ERR_CAST (bus); -return __regmap_init (&slimbus->dev, bus, &slimbus->dev, config, - lock_key, lock_name); +return __regmap_init (&slimbus->dev, bus, slimbus, config, lock_key, lock_name); }EXPORT_SYMBOL_GPL (__regmap_init_slimbus);
@@ -63,8 +62,7 @@ struct regmap *__devm_regmap_init_slimbus(struct slim_device *slimbus,if (IS_ERR (bus))return ERR_CAST (bus); -return __devm_regmap_init (&slimbus->dev, bus, &slimbus, config, - lock_key, lock_name); +return __devm_regmap_init (&slimbus->dev, bus, slimbus, config, lock_key, lock_name); }EXPORT_SYMBOL_GPL (__devm_regmap_init_slimbus);
drivers/bluetooth/btmtksdio.c +12 -0
@@ -1257,6 +1257,12 @@ static void btmtksdio_cmd_timeout(struct hci_dev *hdev)sdio_claim_host (bdev->func); +/* set drv_pmctrl if BT is closed before doing reset */ +if (!test_bit (BTMTKSDIO_FUNC_ENABLED , &bdev->tx_state)) { +sdio_enable_func (bdev->func); +btmtksdio_drv_pmctrl (bdev); + } +sdio_writel (bdev->func,C_INT_EN_CLR ,MTK_REG_CHLPCR ,NULL );skb_queue_purge (&bdev->txq);cancel_work_sync (&bdev->txrx_work);
@@ -1272,6 +1278,12 @@ static void btmtksdio_cmd_timeout(struct hci_dev *hdev) goto err; } +/* set fw_pmctrl back if BT is closed after doing reset */ +if (!test_bit (BTMTKSDIO_FUNC_ENABLED , &bdev->tx_state)) { +btmtksdio_fw_pmctrl (bdev); +sdio_disable_func (bdev->func); + } +clear_bit (BTMTKSDIO_PATCH_ENABLED , &bdev->tx_state); err:sdio_release_host (bdev->func);
drivers/bluetooth/btrtl.c +3 -1
@@ -604,8 +604,10 @@ static int rtlbt_parse_firmware_v2(struct hci_dev *hdev, len += entry->len; } -if (!len) +if (!len) { +kvfree (ptr);return -EPERM ; + } *_buf = ptr;return len;
drivers/bluetooth/btusb.c +23 -7
@@ -65,6 +65,7 @@ static struct usb_driver btusb_driver;#define BTUSB_INTEL_BROKEN_INITIAL_NCMD BIT(25)#define BTUSB_INTEL_NO_WBS_SUPPORT BIT(26)#define BTUSB_ACTIONS_SEMI BIT(27) +#define BTUSB_BARROT BIT(28)static const struct usb_device_id btusb_table[] = {/* Generic Bluetooth USB device */
@@ -770,6 +771,10 @@ static const struct usb_device_id quirks_table[] = { { USB_DEVICE(0x0cb5, 0xc547), .driver_info = BTUSB_REALTEK | BTUSB_WIDEBAND_SPEECH }, + /* Barrot Technology Bluetooth devices */ + { USB_DEVICE(0x33fa, 0x0010), .driver_info = BTUSB_BARROT }, + { USB_DEVICE(0x33fa, 0x0012), .driver_info = BTUSB_BARROT }, + /* Actions Semiconductor ATS2851 based devices */ { USB_DEVICE(0x10d7, 0xb012), .driver_info = BTUSB_ACTIONS_SEMI },
@@ -1167,6 +1172,18 @@ static int btusb_recv_intr(struct btusb_data *data, void *buffer, int count) }if (!hci_skb_expect (skb)) { +/* Each chunk should correspond to at least 1 or more +* events so if there are still bytes left that doesn't +* constitute a new event this is likely a bug in the +* controller. +*/ +if (count && count <HCI_EVENT_HDR_SIZE ) { +bt_dev_warn (data->hdev, +"Unexpected continuation: %d bytes" , + count); + count =0 ; + } +/* Complete frame */ btusb_recv_event (data, skb); skb =NULL ;
@@ -4696,6 +4713,11 @@ static void btusb_disconnect(struct usb_interface *intf)hci_unregister_dev (hdev); +if (data->oob_wake_irq) +device_init_wakeup (&data->udev->dev, false); +if (data->reset_gpio) +gpiod_put (data->reset_gpio); +if (intf == data->intf) {if (data->isoc)usb_driver_release_interface (&btusb_driver, data->isoc);
@@ -4706,17 +4728,11 @@ static void btusb_disconnect(struct usb_interface *intf)usb_driver_release_interface (&btusb_driver, data->diag);usb_driver_release_interface (&btusb_driver, data->intf); }else if (intf == data->diag) { -usb_driver_release_interface (&btusb_driver, data->intf);if (data->isoc)usb_driver_release_interface (&btusb_driver, data->isoc); +usb_driver_release_interface (&btusb_driver, data->intf); } -if (data->oob_wake_irq) -device_init_wakeup (&data->udev->dev, false); - -if (data->reset_gpio) -gpiod_put (data->reset_gpio); -hci_free_dev (hdev); }
drivers/bluetooth/hci_bcsp.c +3 -0
@@ -582,6 +582,9 @@ static int bcsp_recv(struct hci_uart *hu, const void *data, int count)struct bcsp_struct *bcsp = hu->priv;const unsigned char *ptr; +if (!test_bit (HCI_UART_REGISTERED , &hu->flags)) +return -EUNATCH ; +BT_DBG ("hu %p count %d rx_state %d rx_count %ld" , hu, count, bcsp->rx_state, bcsp->rx_count);
drivers/char/misc.c +13 -27
@@ -58,9 +58,8 @@ static LIST_HEAD(misc_list);static DEFINE_MUTEX (misc_mtx);/* -* Assigned numbers, used for dynamic minors +* Assigned numbers. */ -#define DYNAMIC_MINORS 128/* like dynamic majors */ static DEFINE_IDA (misc_minors_ida);static int misc_minor_alloc (int minor)
@@ -69,34 +68,17 @@ static int misc_minor_alloc(int minor)if (minor ==MISC_DYNAMIC_MINOR ) {/* allocate free id */ - ret =ida_alloc_max (&misc_minors_ida,DYNAMIC_MINORS -1 ,GFP_KERNEL ); -if (ret >=0 ) { - ret =DYNAMIC_MINORS - ret -1 ; - }else { - ret =ida_alloc_range (&misc_minors_ida,MISC_DYNAMIC_MINOR +1 , -MINORMASK ,GFP_KERNEL ); - } + ret =ida_alloc_range (&misc_minors_ida,MISC_DYNAMIC_MINOR +1 , +MINORMASK ,GFP_KERNEL ); }else { -/* specific minor, check if it is in dynamic or misc dynamic range */ -if (minor <DYNAMIC_MINORS ) { - minor =DYNAMIC_MINORS - minor -1 ; - ret =ida_alloc_range (&misc_minors_ida, minor, minor,GFP_KERNEL ); - }else if (minor >MISC_DYNAMIC_MINOR ) { - ret =ida_alloc_range (&misc_minors_ida, minor, minor,GFP_KERNEL ); - }else { -/* case of non-dynamic minors, no need to allocate id */ - ret =0 ; - } + ret =ida_alloc_range (&misc_minors_ida, minor, minor,GFP_KERNEL ); }return ret; }static void misc_minor_free (int minor) { -if (minor <DYNAMIC_MINORS ) -ida_free (&misc_minors_ida,DYNAMIC_MINORS - minor -1 ); -else if (minor >MISC_DYNAMIC_MINOR ) -ida_free (&misc_minors_ida, minor); +ida_free (&misc_minors_ida, minor); }#ifdef CONFIG_PROC_FS
@@ -150,7 +132,8 @@ static int misc_open(struct inode *inode, struct file *file)break ; } -if (!new_fops) { +/* Only request module for fixed minor code */ +if (!new_fops && minor <MISC_DYNAMIC_MINOR ) {mutex_unlock (&misc_mtx);request_module ("char-major-%d-%d" ,MISC_MAJOR , minor);mutex_lock (&misc_mtx);
@@ -162,10 +145,11 @@ static int misc_open(struct inode *inode, struct file *file) new_fops =fops_get (iter->fops);break ; } -if (!new_fops) - goto fail; } +if (!new_fops) + goto fail; +/* * Place the miscdevice in the file's * private_data so it can be used by the
@@ -297,9 +281,11 @@ void misc_deregister(struct miscdevice *misc)return ;mutex_lock (&misc_mtx); -list_del (&misc->list); +list_del_init (&misc->list);device_destroy (&misc_class,MKDEV (MISC_MAJOR , misc->minor));misc_minor_free (misc->minor); +if (misc->minor >MISC_DYNAMIC_MINOR ) + misc->minor =MISC_DYNAMIC_MINOR ;mutex_unlock (&misc_mtx); }EXPORT_SYMBOL (misc_deregister);
drivers/clk/at91/clk-master.c +3 -0
@@ -580,6 +580,9 @@ clk_sama7g5_master_recalc_rate(struct clk_hw *hw, {struct clk_master *master =to_clk_master (hw); +if (master->div ==MASTER_PRES_MAX ) +return DIV_ROUND_CLOSEST_ULL (parent_rate,3 ); +return DIV_ROUND_CLOSEST_ULL (parent_rate, (1 << master->div)); }
drivers/clk/at91/clk-sam9x60-pll.c +39 -36
162 lines not on this page · raw message
drivers/clk/sunxi-ng/ccu-sun6i-rtc.c +11 -0
@@ -325,6 +325,13 @@ static const struct sun6i_rtc_match_data sun50i_r329_rtc_ccu_data = { .osc32k_fanout_nparents = ARRAY_SIZE(sun50i_r329_osc32k_fanout_parents), }; +static const struct sun6i_rtc_match_data sun55i_a523_rtc_ccu_data = { + .have_ext_osc32k = true, + .have_iosc_calibration = true, + .osc32k_fanout_parents = sun50i_r329_osc32k_fanout_parents, + .osc32k_fanout_nparents =ARRAY_SIZE (sun50i_r329_osc32k_fanout_parents), +}; +static const struct of_device_id sun6i_rtc_ccu_match[] = { { .compatible ="allwinner,sun50i-h616-rtc" ,
@@ -334,6 +341,10 @@ static const struct of_device_id sun6i_rtc_ccu_match[] = { .compatible = "allwinner,sun50i-r329-rtc", .data = &sun50i_r329_rtc_ccu_data, }, + { + .compatible = "allwinner,sun55i-a523-rtc", + .data = &sun55i_a523_rtc_ccu_data, + }, {}, };
drivers/clk/ti/clk-33xx.c +2 -0
@@ -258,6 +258,8 @@ static const char *enable_init_clks[] = {"dpll_ddr_m2_ck" ,"dpll_mpu_m2_ck" ,"l3_gclk" , +/* WKUP_DEBUGSS_CLKCTRL - disable fails, AM335x Errata Advisory 1.0.42 */ +"l3-aon-clkctrl:0000:0" ,/* AM3_L3_L3_MAIN_CLKCTRL, needed during suspend */ "l3-clkctrl:00bc:0" , "l4hs_gclk",
drivers/clocksource/timer-vf-pit.c +11 -11
@@ -35,30 +35,30 @@ static unsigned long cycle_per_jiffy;static inline void pit_timer_enable (void ) { -__raw_writel (PITTCTRL_TEN |PITTCTRL_TIE , clkevt_base +PITTCTRL ); +writel (PITTCTRL_TEN |PITTCTRL_TIE , clkevt_base +PITTCTRL ); }static inline void pit_timer_disable (void ) { -__raw_writel (0 , clkevt_base +PITTCTRL ); +writel (0 , clkevt_base +PITTCTRL ); }static inline void pit_irq_acknowledge (void ) { -__raw_writel (PITTFLG_TIF , clkevt_base +PITTFLG ); +writel (PITTFLG_TIF , clkevt_base +PITTFLG ); } static u64 notrace pit_read_sched_clock(void) { -return ~__raw_readl (clksrc_base +PITCVAL ); +return ~readl (clksrc_base +PITCVAL ); }static int __init pit_clocksource_init (unsigned long rate) {/* set the max load value and start the clock source counter */ -__raw_writel (0 , clksrc_base +PITTCTRL ); -__raw_writel (~0UL , clksrc_base +PITLDVAL ); -__raw_writel (PITTCTRL_TEN , clksrc_base +PITTCTRL ); +writel (0 , clksrc_base +PITTCTRL ); +writel (~0UL , clksrc_base +PITLDVAL ); +writel (PITTCTRL_TEN , clksrc_base +PITTCTRL );sched_clock_register (pit_read_sched_clock,32 , rate); return clocksource_mmio_init(clksrc_base + PITCVAL, "vf-pit", rate,
@@ -76,7 +76,7 @@ static int pit_set_next_event(unsigned long delta,* hardware requirement. */ pit_timer_disable (); -__raw_writel (delta -1 , clkevt_base +PITLDVAL ); +writel (delta -1 , clkevt_base +PITLDVAL );pit_timer_enable ();return 0 ;
@@ -125,8 +125,8 @@ static struct clock_event_device clockevent_pit = {static int __init pit_clockevent_init (unsigned long rate,int irq) { -__raw_writel (0 , clkevt_base +PITTCTRL ); -__raw_writel (PITTFLG_TIF , clkevt_base +PITTFLG ); +writel (0 , clkevt_base +PITTCTRL ); +writel (PITTFLG_TIF , clkevt_base +PITTFLG );BUG_ON (request_irq (irq, pit_timer_interrupt,IRQF_TIMER |IRQF_IRQPOLL ,"VF pit timer" , &clockevent_pit));
@@ -183,7 +183,7 @@ static int __init pit_timer_init(struct device_node *np) cycle_per_jiffy = clk_rate / (HZ );/* enable the pit module */ -__raw_writel (~PITMCR_MDIS , timer_base +PITMCR ); +writel (~PITMCR_MDIS , timer_base +PITMCR ); ret =pit_clocksource_init (clk_rate);if (ret)
drivers/cpufreq/longhaul.c +3 -0
@@ -953,6 +953,9 @@ static void __exit longhaul_exit(void)struct cpufreq_policy *policy =cpufreq_cpu_get (0 );int i; +if (unlikely (!policy)) +return ; +for (i =0 ; i < numscales; i++) {if (mults[i] == maxmult) {struct cpufreq_freqs freqs;
drivers/cpufreq/tegra186-cpufreq.c +21 -6
@@ -132,13 +132,14 @@ static struct cpufreq_driver tegra186_cpufreq_driver = {static struct cpufreq_frequency_table *init_vhint_table (struct platform_device *pdev,struct tegra_bpmp *bpmp, -struct tegra186_cpufreq_cluster *cluster,unsigned int cluster_id) +struct tegra186_cpufreq_cluster *cluster,unsigned int cluster_id, +int *num_rates) {struct cpufreq_frequency_table *table;struct mrq_cpu_vhint_request req;struct tegra_bpmp_message msg;struct cpu_vhint_data *data; -int err, i, j, num_rates =0 ; +int err, i, j;dma_addr_t phys;void *virt;
@@ -168,6 +169,7 @@ static struct cpufreq_frequency_table *init_vhint_table( goto free; } + *num_rates =0 ;for (i = data->vfloor; i <= data->vceil; i++) {u16 ndiv = data->ndiv[i];
@@ -178,10 +180,10 @@ static struct cpufreq_frequency_table *init_vhint_table(if (i >0 && ndiv == data->ndiv[i -1 ])continue ; - num_rates++; + (*num_rates)++; } - table =devm_kcalloc (&pdev->dev, num_rates +1 ,sizeof (*table), + table =devm_kcalloc (&pdev->dev, *num_rates +1 ,sizeof (*table),GFP_KERNEL );if (!table) { table =ERR_PTR (-ENOMEM );
@@ -223,7 +225,9 @@ static int tegra186_cpufreq_probe(struct platform_device *pdev) {struct tegra186_cpufreq_data *data;struct tegra_bpmp *bpmp; -unsigned int i =0 , err; +unsigned int i =0 , err, edvd_offset; +int num_rates =0 ; +u32 edvd_val, cpu; data = devm_kzalloc(&pdev->dev, struct_size(data, clusters, TEGRA186_NUM_CLUSTERS),
@@ -246,10 +250,21 @@ static int tegra186_cpufreq_probe(struct platform_device *pdev)for (i =0 ; i <TEGRA186_NUM_CLUSTERS ; i++) {struct tegra186_cpufreq_cluster *cluster = &data->clusters[i]; - cluster->table =init_vhint_table (pdev, bpmp, cluster, i); + cluster->table =init_vhint_table (pdev, bpmp, cluster, i, &num_rates);if (IS_ERR (cluster->table)) { err =PTR_ERR (cluster->table); goto put_bpmp; + }else if (!num_rates) { + err = -EINVAL ; + goto put_bpmp; + } + +for (cpu =0 ; cpu <ARRAY_SIZE (tegra186_cpus); cpu++) { +if (data->cpus[cpu].bpmp_cluster_id == i) { + edvd_val = cluster->table[num_rates -1 ].driver_data; + edvd_offset = data->cpus[cpu].edvd_offset; +writel (edvd_val, data->regs + edvd_offset); + } } }
drivers/cpuidle/cpuidle.c +7 -1
@@ -634,8 +634,14 @@ static void __cpuidle_device_init(struct cpuidle_device *dev)static int __cpuidle_register_device (struct cpuidle_device *dev) {struct cpuidle_driver *drv =cpuidle_get_cpu_driver (dev); +unsigned int cpu = dev->cpu;int i, ret; +if (per_cpu (cpuidle_devices, cpu)) { +pr_info ("CPU%d: cpuidle device already registered\n" , cpu); +return -EEXIST ; + } +if (!try_module_get (drv->owner))return -EINVAL ;
@@ -647,7 +653,7 @@ static int __cpuidle_register_device(struct cpuidle_device *dev) dev->states_usage[i].disable |=CPUIDLE_STATE_DISABLED_BY_USER ; } -per_cpu (cpuidle_devices, dev->cpu) = dev; +per_cpu (cpuidle_devices, cpu) = dev;list_add (&dev->device_list, &cpuidle_detected_devices); ret =cpuidle_coupled_register_device (dev);
drivers/cpuidle/governors/menu.c +39 -34
84 lines not on this page · raw message
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c +0 -1
@@ -264,7 +264,6 @@ static int sun8i_ce_cipher_prepare(struct crypto_engine *engine, void *async_req goto theend_sgs; } - chan->timeout = areq->cryptlen; rctx->nr_sgs = ns; rctx->nr_sgd = nd;return 0 ;
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c +2 -3
@@ -186,11 +186,10 @@ int sun8i_ce_run_task(struct sun8i_ce_dev *ce, int flow, const char *name)mutex_unlock (&ce->mlock);wait_for_completion_interruptible_timeout (&ce->chanlist[flow].complete, -msecs_to_jiffies (ce->chanlist[flow].timeout)); +msecs_to_jiffies (CE_DMA_TIMEOUT_MS ));if (ce->chanlist[flow].status ==0 ) { -dev_err (ce->dev,"DMA timeout for %s (tm=%d) on flow %d\n" , name, - ce->chanlist[flow].timeout, flow); +dev_err (ce->dev,"DMA timeout for %s on flow %d\n" , name, flow); err = -EFAULT ; }/* No need to lock for this read, the channel is locked so
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c +0 -2
@@ -457,8 +457,6 @@ int sun8i_ce_hash_run(struct crypto_engine *engine, void *breq)else cet->t_dlen =cpu_to_le32 (areq->nbytes /4 + j); - chan->timeout = areq->nbytes; - err =sun8i_ce_run_task (ce, flow,crypto_ahash_alg_name (tfm));dma_unmap_single (ce->dev, addr_pad, j *4 ,DMA_TO_DEVICE );
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-prng.c +0 -1
@@ -137,7 +137,6 @@ int sun8i_ce_prng_generate(struct crypto_rng *tfm, const u8 *src, cet->t_dst[0 ].addr =cpu_to_le32 (dma_dst); cet->t_dst[0 ].len =cpu_to_le32 (todo /4 ); - ce->chanlist[flow].timeout =2000 ; err =sun8i_ce_run_task (ce,3 ,"PRNG" );mutex_unlock (&ce->rnglock);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-trng.c +0 -1
@@ -79,7 +79,6 @@ static int sun8i_ce_trng_read(struct hwrng *rng, void *data, size_t max, bool wa cet->t_dst[0 ].addr =cpu_to_le32 (dma_dst); cet->t_dst[0 ].len =cpu_to_le32 (todo /4 ); - ce->chanlist[flow].timeout = todo; err =sun8i_ce_run_task (ce,3 ,"TRNG" );mutex_unlock (&ce->rnglock);
drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h +1 -1
@@ -106,6 +106,7 @@#define MAX_SG 8#define CE_MAX_CLOCKS 4 +#define CE_DMA_TIMEOUT_MS 3000#define MAXFLOW 4
@@ -195,7 +196,6 @@ struct sun8i_ce_flow {struct completion complete;int status;dma_addr_t t_phy; -int timeout;struct ce_task *tl;void *backup_iv;void *bounce_iv;
drivers/crypto/aspeed/aspeed-acry.c +2 -6
@@ -789,28 +789,24 @@ static int aspeed_acry_probe(struct platform_device *pdev) err_engine_rsa_start:crypto_engine_exit (acry_dev->crypt_engine_rsa); clk_exit: -clk_disable_unprepare (acry_dev->clk);return rc; } -static int aspeed_acry_remove (struct platform_device *pdev) +static void aspeed_acry_remove (struct platform_device *pdev) {struct aspeed_acry_dev *acry_dev =platform_get_drvdata (pdev);aspeed_acry_unregister (acry_dev);crypto_engine_exit (acry_dev->crypt_engine_rsa);tasklet_kill (&acry_dev->done_task); -clk_disable_unprepare (acry_dev->clk); - -return 0 ; }MODULE_DEVICE_TABLE (of, aspeed_acry_of_matches);static struct platform_driver aspeed_acry_driver = { .probe = aspeed_acry_probe, - .remove = aspeed_acry_remove, + .remove_new = aspeed_acry_remove, .driver = { .name =KBUILD_MODNAME , .of_match_table = aspeed_acry_of_matches,
drivers/crypto/caam/ctrl.c +2 -2
@@ -692,12 +692,12 @@ static int caam_ctrl_rng_init(struct device *dev)*/ if (needs_entropy_delay_adjustment ()) ent_delay =12000 ; -if (!(ctrlpriv->rng4_sh_init || inst_handles)) { +if (!inst_handles) {dev_info (dev,"Entropy delay = %u\n" , ent_delay);kick_trng (dev, ent_delay); - ent_delay +=400 ; + ent_delay = ent_delay *2 ; }/* * if instantiate_rng(...) fails, the loop will rerun
drivers/crypto/hisilicon/qm.c +2 -0
@@ -3750,10 +3750,12 @@ static ssize_t qm_get_qos_value(struct hisi_qm *qm, const char *buf, pdev = container_of(dev, struct pci_dev, dev);if (pci_physfn (pdev) != qm->pdev) {pci_err (qm->pdev,"the pdev input does not match the pf!\n" ); +put_device (dev);return -EINVAL ; } *fun_index = pdev->devfn; +put_device (dev);return 0 ; }
drivers/crypto/intel/qat/qat_common/qat_uclo.c +1 -1
@@ -1745,7 +1745,7 @@ static int qat_uclo_map_objs_from_mof(struct icp_qat_mof_handle *mobj_handle)if (sobj_hdr) sobj_chunk_num = sobj_hdr->num_chunks; - mobj_hdr =kzalloc ((uobj_chunk_num + sobj_chunk_num) * + mobj_hdr =kcalloc (size_add (uobj_chunk_num, sobj_chunk_num),sizeof (*mobj_hdr),GFP_KERNEL );if (!mobj_hdr)return -ENOMEM ;
drivers/dma/dw-edma/dw-edma-core.c +22 -0
@@ -595,6 +595,25 @@ dw_edma_device_prep_interleaved_dma(struct dma_chan *dchan,return dw_edma_device_transfer (&xfer); } +static void dw_hdma_set_callback_result (struct virt_dma_desc *vd, +enum dmaengine_tx_result result) +{ +u32 residue =0 ; +struct dw_edma_desc *desc; +struct dmaengine_result *res; + +if (!vd->tx.callback_result) +return ; + + desc =vd2dw_edma_desc (vd); +if (desc) + residue = desc->alloc_sz - desc->xfer_sz; + + res = &vd->tx_result; + res->result = result; + res->residue = residue; +} +static void dw_edma_done_interrupt (struct dw_edma_chan *chan) {struct dw_edma_desc *desc;
@@ -608,6 +627,8 @@ static void dw_edma_done_interrupt(struct dw_edma_chan *chan)case EDMA_REQ_NONE : desc =vd2dw_edma_desc (vd);if (!desc->chunks_alloc) { +dw_hdma_set_callback_result (vd, +DMA_TRANS_NOERROR );list_del (&vd->node);vchan_cookie_complete (vd); }
@@ -644,6 +665,7 @@ static void dw_edma_abort_interrupt(struct dw_edma_chan *chan)spin_lock_irqsave (&chan->vc.lock, flags); vd =vchan_next_desc (&chan->vc);if (vd) { +dw_hdma_set_callback_result (vd,DMA_TRANS_ABORTED );list_del (&vd->node);vchan_cookie_complete (vd); }
drivers/dma/mv_xor.c +2 -2
@@ -1013,7 +1013,7 @@ static int mv_xor_channel_remove(struct mv_xor_chan *mv_chan)dma_async_device_unregister (&mv_chan->dmadev); -dma_free_coherent (dev,MV_XOR_POOL_SIZE , +dma_free_wc (dev,MV_XOR_POOL_SIZE , mv_chan->dma_desc_pool_virt, mv_chan->dma_desc_pool);dma_unmap_single (dev, mv_chan->dummy_src_addr,MV_XOR_MIN_BYTE_COUNT ,DMA_FROM_DEVICE );
@@ -1163,7 +1163,7 @@ mv_xor_channel_add(struct mv_xor_device *xordev, err_free_irq:free_irq (mv_chan->irq, mv_chan); err_free_dma: -dma_free_coherent (&pdev->dev,MV_XOR_POOL_SIZE , +dma_free_wc (&pdev->dev,MV_XOR_POOL_SIZE , mv_chan->dma_desc_pool_virt, mv_chan->dma_desc_pool); err_unmap_dst: dma_unmap_single(dma_dev->dev, mv_chan->dummy_dst_addr,
drivers/dma/sh/shdma-base.c +19 -6
@@ -129,12 +129,25 @@ static dma_cookie_t shdma_tx_submit(struct dma_async_tx_descriptor *tx)const struct shdma_ops *ops = sdev->ops;dev_dbg (schan->dev,"Bring up channel %d\n" , schan->id); -/* -* TODO: .xfer_setup() might fail on some platforms. -* Make it int then, on error remove chunks from the -* queue again -*/ - ops->setup_xfer (schan, schan->slave_id); + + ret = ops->setup_xfer (schan, schan->slave_id); +if (ret <0 ) { +dev_err (schan->dev,"setup_xfer failed: %d\n" , ret); + +/* Remove chunks from the queue and mark them as idle */ +list_for_each_entry_safe (chunk, c, &schan->ld_queue, node) { +if (chunk->cookie == cookie) { + chunk->mark =DESC_IDLE ; +list_move (&chunk->node, &schan->ld_free); + } + } + + schan->pm_state =SHDMA_PM_ESTABLISHED ; + ret =pm_runtime_put (schan->dev); + +spin_unlock_irq (&schan->chan_lock); +return ret; + }if (schan->pm_state ==SHDMA_PM_PENDING )shdma_chan_xfer_ld_queue (schan);
drivers/dma/sh/shdmac.c +13 -4
@@ -300,21 +300,30 @@ static bool sh_dmae_channel_busy(struct shdma_chan *schan)return dmae_is_busy (sh_chan); } -static void sh_dmae_setup_xfer (struct shdma_chan *schan, -int slave_id) +static int sh_dmae_setup_xfer (struct shdma_chan *schan,int slave_id) { struct sh_dmae_chan *sh_chan = container_of(schan, struct sh_dmae_chan, shdma_chan); +int ret =0 ;if (slave_id >=0 ) {const struct sh_dmae_slave_config *cfg = sh_chan->config; -dmae_set_dmars (sh_chan, cfg->mid_rid); -dmae_set_chcr (sh_chan, cfg->chcr); + ret =dmae_set_dmars (sh_chan, cfg->mid_rid); +if (ret <0 ) + goto END; + + ret =dmae_set_chcr (sh_chan, cfg->chcr); +if (ret <0 ) + goto END; + }else {dmae_init (sh_chan); } + +END: +return ret; }/*
drivers/edac/altera_edac.c +17 -5
@@ -1194,10 +1194,22 @@ altr_check_ocram_deps_init(struct altr_edac_device_dev *device)if (ret)return ret; -/* Verify OCRAM has been initialized */ +/* +* Verify that OCRAM has been initialized. +* During a warm reset, OCRAM contents are retained, but the control +* and status registers are reset to their default values. Therefore, +* ECC must be explicitly re-enabled in the control register. +* Error condition: if INITCOMPLETEA is clear and ECC_EN is already set. +*/ if (!ecc_test_bits (ALTR_A10_ECC_INITCOMPLETEA , - (base +ALTR_A10_ECC_INITSTAT_OFST ))) -return -ENODEV ; + (base +ALTR_A10_ECC_INITSTAT_OFST ))) { +if (!ecc_test_bits (ALTR_A10_ECC_EN , + (base +ALTR_A10_ECC_CTRL_OFST ))) +ecc_set_bits (ALTR_A10_ECC_EN , + (base +ALTR_A10_ECC_CTRL_OFST )); +else +return -ENODEV ; + }/* Enable IRQ on Single Bit Error */ writel (ALTR_A10_ECC_SERRINTEN , (base +ALTR_A10_ECC_ERRINTENS_OFST ));
@@ -1367,7 +1379,7 @@ static const struct edac_device_prv_data a10_enetecc_data = { .ue_set_mask = ALTR_A10_ECC_TDERRA, .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, .ecc_irq_handler = altr_edac_a10_ecc_irq, - .inject_fops = &altr_edac_a10_device_inject2_fops, + .inject_fops = &altr_edac_a10_device_inject_fops, };#endif /* CONFIG_EDAC_ALTERA_ETHERNET */
@@ -1457,7 +1469,7 @@ static const struct edac_device_prv_data a10_usbecc_data = { .ue_set_mask = ALTR_A10_ECC_TDERRA, .set_err_ofst = ALTR_A10_ECC_INTTEST_OFST, .ecc_irq_handler = altr_edac_a10_ecc_irq, - .inject_fops = &altr_edac_a10_device_inject2_fops, + .inject_fops = &altr_edac_a10_device_inject_fops, };#endif /* CONFIG_EDAC_ALTERA_USB */
drivers/extcon/extcon-adc-jack.c +2 -0
@@ -162,6 +162,8 @@ static int adc_jack_remove(struct platform_device *pdev) {struct adc_jack_data *data =platform_get_drvdata (pdev); +if (data->wakeup_source) +device_init_wakeup (&pdev->dev, false);free_irq (data->irq, data);cancel_work_sync (&data->handler.work);
drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +53 -13
82 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +7 -16
@@ -286,7 +286,7 @@ static int amdgpu_cs_pass1(struct amdgpu_cs_parser *p, } } -if (!p->gang_size) { +if (!p->gang_size || (amdgpu_sriov_vf (p->adev) && p->gang_size >1 )) { ret = -EINVAL ; goto free_all_kdata; }
@@ -690,7 +690,7 @@ static void amdgpu_cs_get_threshold_for_moves(struct amdgpu_device *adev,*/ const s64 us_upper_bound =200000 ; -if (!adev->mm_stats.log2_max_MBps) { +if ((!adev->mm_stats.log2_max_MBps) || !ttm_resource_manager_used (&adev->mman.vram_mgr.manager)) { *max_bytes =0 ; *max_vis_bytes =0 ;return ;
@@ -1732,30 +1732,21 @@ int amdgpu_cs_wait_fences_ioctl(struct drm_device *dev, void *data, {struct amdgpu_device *adev =drm_to_adev (dev);union drm_amdgpu_wait_fences *wait = data; -uint32_t fence_count = wait->in.fence_count; -struct drm_amdgpu_fence *fences_user;struct drm_amdgpu_fence *fences;int r;/* Get the fences from userspace */ - fences =kmalloc_array (fence_count,sizeof (struct drm_amdgpu_fence ), -GFP_KERNEL ); -if (fences ==NULL ) -return -ENOMEM ; - - fences_user =u64_to_user_ptr (wait->in.fences); -if (copy_from_user (fences, fences_user, -sizeof (struct drm_amdgpu_fence ) * fence_count)) { - r = -EFAULT ; - goto err_free_fences; - } + fences =memdup_array_user (u64_to_user_ptr (wait->in.fences), + wait->in.fence_count, +sizeof (struct drm_amdgpu_fence )); +if (IS_ERR (fences)) +return PTR_ERR (fences);if (wait->in.wait_all) r =amdgpu_cs_wait_all_fences (adev, filp, wait, fences);else r =amdgpu_cs_wait_any_fence (adev, filp, wait, fences); -err_free_fences:kfree (fences);return r;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +8 -0
@@ -93,6 +93,7 @@ MODULE_FIRMWARE("amdgpu/picasso_gpu_info.bin");MODULE_FIRMWARE ("amdgpu/raven2_gpu_info.bin" );MODULE_FIRMWARE ("amdgpu/arcturus_gpu_info.bin" );MODULE_FIRMWARE ("amdgpu/navi12_gpu_info.bin" ); +MODULE_FIRMWARE ("amdgpu/cyan_skillfish_gpu_info.bin" );#define AMDGPU_RESUME_MS 2000#define AMDGPU_MAX_RETRY_LIMIT 2
@@ -1939,6 +1940,9 @@ static int amdgpu_device_parse_gpu_info_fw(struct amdgpu_device *adev)case CHIP_NAVI12 : chip_name ="navi12" ;break ; +case CHIP_CYAN_SKILLFISH : + chip_name ="cyan_skillfish" ; +break ; }snprintf (fw_name,sizeof (fw_name),"amdgpu/%s_gpu_info.bin" , chip_name);
@@ -4109,6 +4113,10 @@ static int amdgpu_device_evict_resources(struct amdgpu_device *adev)if ((adev->in_s3 || adev->in_s0ix) && (adev->flags &AMD_IS_APU ))return 0 ; +/* No need to evict when going to S5 through S4 callbacks */ +if (system_state ==SYSTEM_POWER_OFF ) +return 0 ; + ret =amdgpu_ttm_evict_resources (adev,TTM_PL_VRAM );if (ret)DRM_WARN ("evicting device resources failed\n" );
drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c +4 -1
@@ -1819,13 +1819,16 @@ static int amdgpu_discovery_set_smu_ip_blocks(struct amdgpu_device *adev)case IP_VERSION (11 ,0 ,5 ):case IP_VERSION (11 ,0 ,9 ):case IP_VERSION (11 ,0 ,7 ): -case IP_VERSION (11 ,0 ,8 ):case IP_VERSION (11 ,0 ,11 ):case IP_VERSION (11 ,0 ,12 ):case IP_VERSION (11 ,0 ,13 ):case IP_VERSION (11 ,5 ,0 ):amdgpu_device_ip_block_add (adev, &smu_v11_0_ip_block);break ; +case IP_VERSION (11 ,0 ,8 ): +if (adev->apu_flags &AMD_APU_IS_CYAN_SKILLFISH2 ) +amdgpu_device_ip_block_add (adev, &smu_v11_0_ip_block); +break ;case IP_VERSION (12 ,0 ,0 ):case IP_VERSION (12 ,0 ,1 ):amdgpu_device_ip_block_add (adev, &smu_v12_0_ip_block);
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +5 -0
@@ -1983,6 +1983,11 @@ static const struct pci_device_id pciidlist[] = { {0x1002, 0x7410, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ALDEBARAN},/* CYAN_SKILLFISH */ + {0x1002, 0x13DB, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYAN_SKILLFISH|AMD_IS_APU}, + {0x1002, 0x13F9, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYAN_SKILLFISH|AMD_IS_APU}, + {0x1002, 0x13FA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYAN_SKILLFISH|AMD_IS_APU}, + {0x1002, 0x13FB, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYAN_SKILLFISH|AMD_IS_APU}, + {0x1002, 0x13FC, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYAN_SKILLFISH|AMD_IS_APU}, {0x1002, 0x13FE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYAN_SKILLFISH|AMD_IS_APU}, {0x1002, 0x143F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_CYAN_SKILLFISH|AMD_IS_APU},
drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c +4 -2
@@ -87,10 +87,12 @@ static void amdgpu_jpeg_idle_work_handler(struct work_struct *work) fences +=amdgpu_fence_count_emitted (&adev->jpeg.inst[i].ring_dec[j]); } -if (!fences && !atomic_read (&adev->jpeg.total_submission_cnt)) +if (!fences && !atomic_read (&adev->jpeg.total_submission_cnt)) { +mutex_lock (&adev->jpeg.jpeg_pg_lock);amdgpu_device_ip_set_powergating_state (adev,AMD_IP_BLOCK_TYPE_JPEG ,AMD_PG_STATE_GATE ); -else +mutex_unlock (&adev->jpeg.jpeg_pg_lock); + }else schedule_delayed_work (&adev->jpeg.idle_work,JPEG_IDLE_TIMEOUT ); }
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +4 -3
@@ -651,7 +651,8 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) ui64 =atomic64_read (&adev->num_vram_cpu_page_faults);return copy_to_user (out, &ui64,min (size,8u )) ? -EFAULT :0 ;case AMDGPU_INFO_VRAM_USAGE : - ui64 =ttm_resource_manager_usage (&adev->mman.vram_mgr.manager); + ui64 =ttm_resource_manager_used (&adev->mman.vram_mgr.manager) ? +ttm_resource_manager_usage (&adev->mman.vram_mgr.manager) :0 ;return copy_to_user (out, &ui64,min (size,8u )) ? -EFAULT :0 ;case AMDGPU_INFO_VIS_VRAM_USAGE : ui64 =amdgpu_vram_mgr_vis_usage (&adev->mman.vram_mgr);
@@ -697,8 +698,8 @@ int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file *filp) mem.vram.usable_heap_size = adev->gmc.real_vram_size -atomic64_read (&adev->vram_pin_size) -AMDGPU_VM_RESERVED_VRAM ; - mem.vram.heap_usage = -ttm_resource_manager_usage (vram_man); + mem.vram.heap_usage =ttm_resource_manager_used (&adev->mman.vram_mgr.manager) ? +ttm_resource_manager_usage (vram_man) :0 ; mem.vram.max_allocation = mem.vram.usable_heap_size *3 /4 ; mem.cpu_accessible_vram.total_heap_size =
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +4 -1
@@ -2015,8 +2015,11 @@ static int psp_securedisplay_initialize(struct psp_context *psp)if (!ret && !psp->securedisplay_context.context.resp_status) { psp->securedisplay_context.context.initialized = true;mutex_init (&psp->securedisplay_context.mutex); - }else + }else { +/* don't try again */ + psp->securedisplay_context.context.bin_desc.size_bytes =0 ;return ret; + }mutex_lock (&psp->securedisplay_context.mutex);
drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c +2 -2
@@ -604,8 +604,8 @@ static int amdgpu_virt_write_vf2pf_data(struct amdgpu_device *adev) vf2pf_info->driver_cert =0 ; vf2pf_info->os_info.all =0 ; - vf2pf_info->fb_usage = -ttm_resource_manager_usage (&adev->mman.vram_mgr.manager) >>20 ; + vf2pf_info->fb_usage =ttm_resource_manager_used (&adev->mman.vram_mgr.manager) ? +ttm_resource_manager_usage (&adev->mman.vram_mgr.manager) >>20 :0 ; vf2pf_info->fb_vis_usage =amdgpu_vram_mgr_vis_usage (&adev->mman.vram_mgr) >>20 ; vf2pf_info->fb_size = adev->gmc.real_vram_size >>20 ;
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +14 -5
@@ -1085,7 +1085,12 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep,svm_range_list_lock_and_flush_work (&p->svms, current->mm);mutex_lock (&p->svms.lock);mmap_write_unlock (current->mm); -if (interval_tree_iter_first (&p->svms.objects, + +/* Skip a special case that allocates VRAM without VA, +* VA will be invalid of 0. +*/ +if (!(!args->va_addr && (flags &KFD_IOC_ALLOC_MEM_FLAGS_VRAM )) && +interval_tree_iter_first (&p->svms.objects, args->va_addr >>PAGE_SHIFT , (args->va_addr + args->size -1 ) >>PAGE_SHIFT )) { pr_err("Address: 0x%llx already allocated by SVM\n",
@@ -2567,8 +2572,8 @@ static int criu_restore(struct file *filep,pr_debug ("CRIU restore (num_devices:%u num_bos:%u num_objects:%u priv_data_size:%llu)\n" , args->num_devices, args->num_bos, args->num_objects, args->priv_data_size); -if (!args->bos || !args->devices || !args->priv_data || !args->priv_data_size || - !args->num_devices || !args->num_bos) +if ((args->num_bos >0 && !args->bos) || !args->devices || !args->priv_data || + !args->priv_data_size || !args->num_devices)return -EINVAL ;mutex_lock (&p->mutex);
@@ -3252,8 +3257,10 @@ static long kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)int retcode = -EINVAL ;bool ptrace_attached = false; -if (nr >=AMDKFD_CORE_IOCTL_COUNT ) +if (nr >=AMDKFD_CORE_IOCTL_COUNT ) { + retcode = -ENOTTY ; goto err_i1; + }if ((nr >=AMDKFD_COMMAND_START ) && (nr <AMDKFD_COMMAND_END )) {u32 amdkfd_size;
@@ -3266,8 +3273,10 @@ static long kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg) asize = amdkfd_size; cmd = ioctl->cmd; - }else + }else { + retcode = -ENOTTY ; goto err_i1; + }dev_dbg (kfd_device,"ioctl cmd 0x%x (#0x%x), arg 0x%lx\n" , cmd, nr, arg);
drivers/gpu/drm/amd/amdkfd/kfd_device.c +9 -1
@@ -1017,7 +1017,15 @@ void kgd2kfd_interrupt(struct kfd_dev *kfd, const void *ih_ring_entry) }for (i =0 ; i < kfd->num_nodes; i++) { - node = kfd->nodes[i]; +/* Race if another thread in b/w +* kfd_cleanup_nodes and kfree(kfd), +* when kfd->nodes[i] = NULL +*/ +if (kfd->nodes[i]) + node = kfd->nodes[i]; +else +return ; +spin_lock_irqsave (&node->interrupt_lock, flags); if (node->interrupts_active
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +8 -1
@@ -111,7 +111,14 @@#define KFD_KERNEL_QUEUE_SIZE 2048 -#define KFD_UNMAP_LATENCY_MS (4000) +/* KFD_UNMAP_LATENCY_MS is the timeout CP waiting for SDMA preemption. One XCC +* can be associated to 2 SDMA engines. queue_preemption_timeout_ms is the time +* driver waiting for CP returning the UNMAP_QUEUE fence. Thus the math is +* queue_preemption_timeout_ms = sdma_preemption_time * 2 + cp workload +* The format here makes CP workload 10% of total timeout +*/ +#define KFD_UNMAP_LATENCY_MS \ + ((queue_preemption_timeout_ms - queue_preemption_timeout_ms / 10) >> 1)#define KFD_MAX_SDMA_QUEUES 128
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +23 -0
@@ -1709,6 +1709,29 @@ static int svm_range_validate_and_map(struct mm_struct *mm, next =min (vma->vm_end, end); npages = (next - addr) >>PAGE_SHIFT ; +/* HMM requires at least READ permissions. If provided with PROT_NONE, +* unmap the memory. If it's not already mapped, this is a no-op +* If PROT_WRITE is provided without READ, warn first then unmap +*/ +if (!(vma->vm_flags &VM_READ )) { +unsigned long e, s; + +svm_range_lock (prange); +if (vma->vm_flags &VM_WRITE ) +pr_debug ("VM_WRITE without VM_READ is not supported" ); + s =max (start, prange->start); + e =min (end, prange->last); +if (e >= s) + r =svm_range_unmap_from_gpus (prange, s, e, +KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU ); +svm_range_unlock (prange); +/* If unmap returns non-zero, we'll bail on the next for loop +* iteration, so just leave r and continue +*/ + addr = next; +continue ; + } +WRITE_ONCE (p->svms.faulting_task, current); r = amdgpu_hmm_range_get_pages(&prange->notifier, addr, npages, readonly, owner, NULL,
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +12 -2
@@ -2993,6 +2993,7 @@ 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) { +bool init = false;if (connector->connector_type ==DRM_MODE_CONNECTOR_WRITEBACK )continue ;
@@ -3002,7 +3003,14 @@ static int dm_resume(void *handle) aconnector->mst_root) continue; -drm_dp_mst_topology_queue_probe (&aconnector->mst_mgr); + scoped_guard(mutex, &aconnector->mst_mgr.lock) { + init = !aconnector->mst_mgr.mst_primary; + } +if (init) +dm_helpers_dp_mst_start_top_mgr (aconnector->dc_link->ctx, + aconnector->dc_link, false); +else +drm_dp_mst_topology_queue_probe (&aconnector->mst_mgr); }drm_connector_list_iter_end (&iter);
@@ -9243,6 +9251,8 @@ static void get_freesync_config_for_crtc( }else { config.state =VRR_STATE_INACTIVE ; } + }else { + config.state =VRR_STATE_UNSUPPORTED ; } out: new_crtc_state->freesync_config = config;
@@ -10838,7 +10848,7 @@ void amdgpu_dm_update_freesync_caps(struct drm_connector *connector, dm_con_state =to_dm_connector_state (connector->state); -if (!adev->dm.freesync_module) +if (!adev->dm.freesync_module || !dc_supports_vrr (sink->ctx->dce_version)) goto update;/* Some eDP panels only have the refresh rate range info in DisplayID */
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn301/vg_clk_mgr.c +16 -0
@@ -561,6 +561,7 @@ static void vg_clk_mgr_helper_populate_bw_params( {int i, j;struct clk_bw_params *bw_params = clk_mgr->base.bw_params; +uint32_t max_dispclk =0 , max_dppclk =0 ; j =-1 ;
@@ -581,6 +582,15 @@ static void vg_clk_mgr_helper_populate_bw_params(return ; } +/* dispclk and dppclk can be max at any voltage, same number of levels for both */ +if (clock_table->NumDispClkLevelsEnabled <=VG_NUM_DISPCLK_DPM_LEVELS && + clock_table->NumDispClkLevelsEnabled <=VG_NUM_DPPCLK_DPM_LEVELS ) { + max_dispclk =find_max_clk_value (clock_table->DispClocks, clock_table->NumDispClkLevelsEnabled); + max_dppclk =find_max_clk_value (clock_table->DppClocks, clock_table->NumDispClkLevelsEnabled); + }else { +ASSERT (0 ); + } + bw_params->clk_table.num_entries = j +1 ;for (i =0 ; i < bw_params->clk_table.num_entries -1 ; i++, j--) {
@@ -588,11 +598,17 @@ static void vg_clk_mgr_helper_populate_bw_params( bw_params->clk_table.entries[i].memclk_mhz = clock_table->DfPstateTable[j].memclk; bw_params->clk_table.entries[i].voltage = clock_table->DfPstateTable[j].voltage; bw_params->clk_table.entries[i].dcfclk_mhz =find_dcfclk_for_voltage (clock_table, clock_table->DfPstateTable[j].voltage); + +/* Now update clocks we do read */ + bw_params->clk_table.entries[i].dispclk_mhz = max_dispclk; + bw_params->clk_table.entries[i].dppclk_mhz = max_dppclk; } bw_params->clk_table.entries[i].fclk_mhz = clock_table->DfPstateTable[j].fclk; bw_params->clk_table.entries[i].memclk_mhz = clock_table->DfPstateTable[j].memclk; bw_params->clk_table.entries[i].voltage = clock_table->DfPstateTable[j].voltage; bw_params->clk_table.entries[i].dcfclk_mhz =find_max_clk_value (clock_table->DcfClocks,VG_NUM_DCFCLK_DPM_LEVELS ); + bw_params->clk_table.entries[i].dispclk_mhz =find_max_clk_value (clock_table->DispClocks,VG_NUM_DISPCLK_DPM_LEVELS ); + bw_params->clk_table.entries[i].dppclk_mhz =find_max_clk_value (clock_table->DppClocks,VG_NUM_DPPCLK_DPM_LEVELS ); bw_params->vram_type = bios_info->memory_type; bw_params->num_channels = bios_info->ma_channel_number;
drivers/gpu/drm/amd/display/dc/core/dc.c +18 -1
@@ -2068,6 +2068,18 @@ enum dc_status dc_commit_streams(struct dc *dc, goto fail; } +/* +* If not already seamless, make transition seamless by inserting intermediate minimal transition +*/ +if (dc->hwss.is_pipe_topology_transition_seamless && + !dc->hwss.is_pipe_topology_transition_seamless (dc, dc->current_state, context)) { + res =commit_minimal_transition_state (dc, context); +if (res !=DC_OK ) { +BREAK_TO_DEBUGGER (); + goto fail; + } + } + res =dc_commit_state_no_check (dc, context);for (i =0 ; i < stream_count; i++) {
@@ -2940,6 +2952,9 @@ static void copy_stream_update_to_stream(struct dc *dc,if (update->adaptive_sync_infopacket) stream->adaptive_sync_infopacket = *update->adaptive_sync_infopacket; +if (update->avi_infopacket) + stream->avi_infopacket = *update->avi_infopacket; +if (update->dither_option) stream->dither_option = *update->dither_option;
@@ -3146,7 +3161,8 @@ static void commit_planes_do_stream_update(struct dc *dc, stream_update->vsp_infopacket || stream_update->hfvsif_infopacket || stream_update->adaptive_sync_infopacket || - stream_update->vtem_infopacket) { + stream_update->vtem_infopacket || + stream_update->avi_infopacket) {resource_build_info_frame (pipe_ctx); dc->hwss.update_info_frame (pipe_ctx);
@@ -4229,6 +4245,7 @@ static bool full_update_required(struct dc *dc, stream_update->hfvsif_infopacket || stream_update->vtem_infopacket || stream_update->adaptive_sync_infopacket || + stream_update->avi_infopacket || stream_update->dpms_off || stream_update->allow_freesync || stream_update->vrr_active_variable ||
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +13 -1
@@ -150,7 +150,13 @@ enum dce_version resource_parse_asic_id(struct hw_asic_id asic_id)case FAMILY_NV : dc_version =DCN_VERSION_2_0 ; -if (asic_id.chip_id ==DEVICE_ID_NV_13FE || asic_id.chip_id ==DEVICE_ID_NV_143F ) { +if (asic_id.chip_id ==DEVICE_ID_NV_13FE || + asic_id.chip_id ==DEVICE_ID_NV_143F || + asic_id.chip_id ==DEVICE_ID_NV_13F9 || + asic_id.chip_id ==DEVICE_ID_NV_13FA || + asic_id.chip_id ==DEVICE_ID_NV_13FB || + asic_id.chip_id ==DEVICE_ID_NV_13FC || + asic_id.chip_id ==DEVICE_ID_NV_13DB ) { dc_version =DCN_VERSION_2_01 ;break ; }
@@ -3219,8 +3225,14 @@ static void set_avi_info_frame(unsigned int fr_ind = pipe_ctx->stream->timing.fr_index;enum dc_timing_3d_format format; +if (stream->avi_infopacket.valid) { + *info_packet = stream->avi_infopacket; +return ; + } +memset (&hdmi_info,0 ,sizeof (union hdmi_info_packet )); + color_space = pipe_ctx->stream->output_color_space;if (color_space ==COLOR_SPACE_UNKNOWN ) color_space = (stream->timing.pixel_encoding == PIXEL_ENCODING_RGB) ?
drivers/gpu/drm/amd/display/dc/dc_helper.c +5 -0
@@ -744,3 +744,8 @@ char *dce_version_to_string(const int version)return "Unknown" ; } } + +bool dc_supports_vrr (const enum dce_version v) +{ +return v >=DCE_VERSION_8_0 ; +}
drivers/gpu/drm/amd/display/dc/dc_stream.h +3 -0
@@ -197,6 +197,7 @@ struct dc_stream_state {struct dc_info_packet hfvsif_infopacket;struct dc_info_packet vtem_infopacket;struct dc_info_packet adaptive_sync_infopacket; +struct dc_info_packet avi_infopacket;uint8_t dsc_packed_pps[128 ];struct rect src;/* composition area */ struct rect dst;/* stream addressable area */
@@ -323,6 +324,8 @@ struct dc_stream_update {struct dc_info_packet *hfvsif_infopacket;struct dc_info_packet *vtem_infopacket;struct dc_info_packet *adaptive_sync_infopacket; +struct dc_info_packet *avi_infopacket; +bool *dpms_off;bool integer_scaling_update;bool *allow_freesync;
drivers/gpu/drm/amd/display/dc/dm_services.h +2 -0
@@ -294,4 +294,6 @@ void dm_dtn_log_end(struct dc_context *ctx,char *dce_version_to_string (const int version); +bool dc_supports_vrr (const enum dce_version v); +#endif /* __DM_SERVICES_H__ */
drivers/gpu/drm/amd/display/dc/dml/dcn301/dcn301_fpu.c +17 -3
@@ -326,7 +326,7 @@ void dcn301_update_bw_bounding_box(struct dc *dc, struct clk_bw_params *bw_paramstruct dcn301_resource_pool *pool =TO_DCN301_RES_POOL (dc->res_pool);struct clk_limit_table *clk_table = &bw_params->clk_table;unsigned int i, closest_clk_lvl; -int j; +int j =0 , max_dispclk_mhz =0 , max_dppclk_mhz =0 ;dc_assert_fp_enabled ();
@@ -338,6 +338,15 @@ void dcn301_update_bw_bounding_box(struct dc *dc, struct clk_bw_params *bw_param dcn3_01_soc.num_chans = bw_params->num_channels;ASSERT (clk_table->num_entries); + +/* Prepass to find max clocks independent of voltage level. */ +for (i =0 ; i < clk_table->num_entries; ++i) { +if (clk_table->entries[i].dispclk_mhz > max_dispclk_mhz) + max_dispclk_mhz = clk_table->entries[i].dispclk_mhz; +if (clk_table->entries[i].dppclk_mhz > max_dppclk_mhz) + max_dppclk_mhz = clk_table->entries[i].dppclk_mhz; + } +for (i =0 ; i < clk_table->num_entries; i++) {/* loop backwards*/ for (closest_clk_lvl =0 , j = dcn3_01_soc.num_states -1 ; j >=0 ; j--) {
@@ -353,8 +362,13 @@ void dcn301_update_bw_bounding_box(struct dc *dc, struct clk_bw_params *bw_param s[i].socclk_mhz = clk_table->entries[i].socclk_mhz; s[i].dram_speed_mts = clk_table->entries[i].memclk_mhz *2 ; - s[i].dispclk_mhz = dcn3_01_soc.clock_limits[closest_clk_lvl].dispclk_mhz; - s[i].dppclk_mhz = dcn3_01_soc.clock_limits[closest_clk_lvl].dppclk_mhz; +/* Clocks independent of voltage level. */ + s[i].dispclk_mhz = max_dispclk_mhz ? max_dispclk_mhz : + dcn3_01_soc.clock_limits[closest_clk_lvl].dispclk_mhz; + + s[i].dppclk_mhz = max_dppclk_mhz ? max_dppclk_mhz : + dcn3_01_soc.clock_limits[closest_clk_lvl].dppclk_mhz; + s[i].dram_bw_per_chan_gbps = dcn3_01_soc.clock_limits[closest_clk_lvl].dram_bw_per_chan_gbps; s[i].dscclk_mhz = dcn3_01_soc.clock_limits[closest_clk_lvl].dscclk_mhz;
drivers/gpu/drm/amd/display/dc/link/link_detection.c +5 -0
@@ -1113,6 +1113,11 @@ static bool detect_link_and_local_sink(struct dc_link *link,if (sink->sink_signal ==SIGNAL_TYPE_HDMI_TYPE_A && !sink->edid_caps.edid_hdmi) sink->sink_signal =SIGNAL_TYPE_DVI_SINGLE_LINK ; +else if (dc_is_dvi_signal (sink->sink_signal) && +dc_is_dvi_signal (link->connector_signal) && + aud_support->hdmi_audio_native && + sink->edid_caps.edid_hdmi) + sink->sink_signal =SIGNAL_TYPE_HDMI_TYPE_A ;if (link->local_sink &&dc_is_dp_signal (sink_caps.signal))dp_trace_init (link);
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c +7 -2
@@ -974,14 +974,19 @@ void repeater_training_done(struct dc_link *link, uint32_t offset)static void dpcd_exit_training_mode (struct dc_link *link,enum dp_link_encoding encoding) {uint8_t sink_status =0 ; -uint8_t i; +uint32_t i; +uint8_t lttpr_count =dp_parse_lttpr_repeater_count (link->dpcd_caps.lttpr_caps.phy_repeater_cnt); +uint32_t intra_hop_disable_time_ms = (lttpr_count >0 ? lttpr_count *300 :10 ); + +// Each hop could theoretically take over 256ms (max 128b/132b AUX RD INTERVAL) +// To be safe, allow 300ms per LTTPR and 10ms for no LTTPR case /* clear training pattern set */ dpcd_set_training_pattern (link,DP_TRAINING_PATTERN_VIDEOIDLE );if (encoding == DP_128b_132b_ENCODING) {/* poll for intra-hop disable */ -for (i =0 ; i <10 ; i++) { +for (i =0 ; i < intra_hop_disable_time_ms; i++) {if ((core_link_read_dpcd (link,DP_SINK_STATUS , &sink_status,1 ) ==DC_OK ) && (sink_status &DP_INTRA_HOP_AUX_REPLY_INDICATION ) ==0 )break ;
drivers/gpu/drm/amd/display/include/dal_asic_id.h +5 -0
@@ -213,6 +213,11 @@ enum {#endif #define DEVICE_ID_NV_13FE 0x13FE // CYAN_SKILLFISH#define DEVICE_ID_NV_143F 0x143F +#define DEVICE_ID_NV_13F9 0x13F9 +#define DEVICE_ID_NV_13FA 0x13FA +#define DEVICE_ID_NV_13FB 0x13FB +#define DEVICE_ID_NV_13FC 0x13FC +#define DEVICE_ID_NV_13DB 0x13DB#define FAMILY_VGH 144#define DEVICE_ID_VGH_163F 0x163F#define DEVICE_ID_VGH_1435 0x1435
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c +5 -0
@@ -3485,6 +3485,11 @@ static void si_apply_state_adjust_rules(struct amdgpu_device *adev,* for these GPUs to calculate bandwidth requirements. */ if (high_pixelclock_count) { +/* Work around flickering lines at the bottom edge +* of the screen when using a single 4K 60Hz monitor. +*/ + disable_mclk_switching = true; +/* On Oland, we observe some flickering when two 4K 60Hz * displays are connected, possibly because voltage is too low. * Raise the voltage by requiring a higher SCLK.
drivers/gpu/drm/amd/pm/powerplay/smumgr/fiji_smumgr.c +1 -1
@@ -2024,7 +2024,7 @@ static int fiji_init_smc_table(struct pp_hwmgr *hwmgr) table->VoltageResponseTime =0 ; table->PhaseResponseTime =0 ; table->MemoryThermThrottleEnable =1 ; - table->PCIeBootLinkLevel =0 ;/* 0:Gen1 1:Gen2 2:Gen3*/ + table->PCIeBootLinkLevel = (uint8_t ) (data->dpm_table.pcie_speed_table.count); table->PCIeGenInterval =1 ; table->VRConfig =0 ;
drivers/gpu/drm/amd/pm/powerplay/smumgr/iceland_smumgr.c +1 -1
@@ -2028,7 +2028,7 @@ static int iceland_init_smc_table(struct pp_hwmgr *hwmgr) table->VoltageResponseTime =0 ; table->PhaseResponseTime =0 ; table->MemoryThermThrottleEnable =1 ; - table->PCIeBootLinkLevel =0 ; + table->PCIeBootLinkLevel = (uint8_t ) (data->dpm_table.pcie_speed_table.count); table->PCIeGenInterval =1 ; result =iceland_populate_smc_svi2_config (hwmgr, table);
drivers/gpu/drm/amd/pm/swsmu/smu11/arcturus_ppt.c +1 -1
@@ -2376,7 +2376,7 @@ static ssize_t arcturus_get_gpu_metrics(struct smu_context *smu,
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c +7 -5
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/bridge/display-connector.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/drm_gem_atomic_helper.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/etnaviv/etnaviv_buffer.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/gt/intel_gt_clock_utils.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/mediatek/mtk_drm_drv.c +0 -10
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/mediatek/mtk_drm_plane.c +1 -23
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/msm/dsi/phy/dsi_phy_7nm.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/core/enum.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/scheduler/sched_entity.c +21 -16
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/hwmon/sbtsi_temp.c +31 -15
46 lines not on this page · raw message
drivers/infiniband/hw/hns/hns_roce_hw_v2.c +8 -3
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/hns/hns_roce_qp.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/media/i2c/adv7180.c +21 -27
48 lines not on this page · raw message
drivers/media/platform/amphion/vpu_v4l2.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/verisilicon/hantro_drv.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/verisilicon/hantro_v4l2.c +2 -4
Lines of this file are not shown. View the raw message.
drivers/media/rc/imon.c +37 -24
61 lines not on this page · raw message
drivers/mtd/nand/onenand/onenand_samsung.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/dsa/microchip/ksz9477.c +84 -14
98 lines not on this page · raw message
drivers/net/dsa/microchip/ksz9477_reg.h +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/bnxt/bnxt_ptp.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_main.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_common.c +2 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_common.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_pf.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/fm10k/fm10k_vf.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_main.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_trace.h +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_dcbnl.c +28 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan966x/lan966x_ethtool.c +9 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan966x/lan966x_main.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan966x/lan966x_main.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/sparx5/Kconfig +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/realtek/r8169_main.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +14 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/libwx/wx_hw.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/wangxun/libwx/wx_type.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/hamradio/6pack.c +5 -52
57 lines not on this page · raw message
drivers/net/virtio_net.c +23 -18
41 lines not on this page · raw message
drivers/net/wireless/ath/ath10k/wmi.c +21 -19
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath11k/core.c +48 -6
54 lines not on this page · raw message
drivers/net/wireless/ath/ath12k/mac.c +18 -16
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c +10 -18
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.h +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7996/init.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/sdio.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/mac80211_hwsim.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/ntb/hw/epf/ntb_hw_epf.c +53 -50
103 lines not on this page · raw message
drivers/pci/controller/cadence/pcie-cadence-host.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/cadence/pcie-cadence.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/cadence/pcie-cadence.h +3 -3
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-designware.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/phy/renesas/r8a779f0-ether-serdes.c +28 -0
Lines of this file are not shown. View the raw message.
drivers/phy/rockchip/phy-rockchip-inno-csidphy.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/pmdomain/samsung/exynos-pm-domains.c +5 -6
Lines of this file are not shown. View the raw message.
drivers/scsi/mpt3sas/mpt3sas_transport.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/soc/tegra/fuse/fuse-tegra30.c +122 -0
122 lines not on this page · raw message
drivers/ufs/host/ufs-mediatek.c +137 -42
179 lines not on this page · raw message
drivers/ufs/host/ufshcd-pci.c +67 -3
70 lines not on this page · raw message
fs/smb/client/file.c +109 -6
115 lines not on this page · raw message
include/ufs/ufshcd.h +44 -0
44 lines not on this page · raw message
kernel/futex/syscalls.c +56 -50
106 lines not on this page · raw message
mm/memcontrol.c +169 -121
290 lines not on this page · raw message
mm/memory-tiers.c +161 -1
162 lines not on this page · raw message
mm/workingset.c +39 -15
54 lines not on this page · raw message
net/bluetooth/6lowpan.c +68 -29
97 lines not on this page · raw message
net/core/netpoll.c +37 -34
71 lines not on this page · raw message
net/ipv6/ah6.c +31 -19
50 lines not on this page · raw message
net/mptcp/protocol.c +35 -19
54 lines not on this page · raw message
tools/power/x86/x86_energy_perf_policy/x86_energy_perf_policy.c +20 -10
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_lirc_mode2_user.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_xsk.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/netdevsim/Makefile new file +21 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/netdevsim/settings new file +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ftrace/test.d/filter/event-filter-function.tc +4 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/iommu/iommufd.c +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/fcnal-test.sh +217 -215
432 lines not on this page · raw message
tools/testing/selftests/net/forwarding/local_termination.sh +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/gro.c +95 -6
101 lines not on this page · raw message
tools/testing/selftests/net/mptcp/mptcp_connect.c +13 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_connect.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/mptcp_join.sh +27 -27
54 lines not on this page · raw message
tools/testing/selftests/net/psock_tpacket.c +2 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/traceroute.sh +3 -10
Lines of this file are not shown. View the raw message.
tools/testing/selftests/user_events/perf_test.c +1 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.