Linux 6.12.24
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.12.24 kernel.
All users of the 6.12 kernel series must upgrade.
The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.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/kernel-parameters.txt | 2 Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml | 3 Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml | 3 Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml | 2 Makefile | 5 arch/arm64/boot/dts/exynos/google/gs101.dtsi | 1 arch/arm64/boot/dts/mediatek/mt8173.dtsi | 6 arch/arm64/boot/dts/nvidia/tegra234-p3768-0000+p3767.dtsi | 7 arch/arm64/include/asm/cputype.h | 4 arch/arm64/include/asm/spectre.h | 1 arch/arm64/include/asm/traps.h | 4 arch/arm64/kernel/proton-pack.c | 218 ++- arch/arm64/kvm/arm.c | 6 arch/arm64/mm/mmu.c | 3 arch/powerpc/kvm/powerpc.c | 5 arch/s390/Makefile | 2 arch/s390/kernel/perf_cpum_cf.c | 9 arch/s390/kernel/perf_cpum_sf.c | 3 arch/s390/pci/pci_bus.c | 3 arch/s390/pci/pci_mmio.c | 18 arch/sparc/include/asm/pgtable_64.h | 2 arch/sparc/mm/tlb.c | 5 arch/x86/Kconfig | 20 arch/x86/include/asm/irqflags.h | 40 arch/x86/include/asm/paravirt.h | 20 arch/x86/include/asm/paravirt_types.h | 3 arch/x86/kernel/acpi/boot.c | 11 arch/x86/kernel/cpu/amd.c | 2 arch/x86/kernel/e820.c | 17 arch/x86/kernel/paravirt.c | 13 arch/x86/kernel/signal_32.c | 62 - arch/x86/kvm/cpuid.c | 8 arch/x86/kvm/x86.c | 4 arch/x86/mm/pat/set_memory.c | 6 arch/x86/xen/enlighten.c | 10 arch/x86/xen/setup.c | 3 drivers/accel/ivpu/ivpu_debugfs.c | 4 drivers/accel/ivpu/ivpu_ipc.c | 3 drivers/accel/ivpu/ivpu_ms.c | 24 drivers/acpi/platform_profile.c | 20 drivers/ata/ahci.c | 11 drivers/ata/ahci.h | 1 drivers/ata/libahci.c | 4 drivers/ata/libata-core.c | 38 drivers/ata/libata-eh.c | 11 drivers/ata/pata_pxa.c | 6 drivers/ata/sata_sx4.c | 13 drivers/auxdisplay/hd44780.c | 4 drivers/base/devres.c | 7 drivers/block/ublk_drv.c | 90 + drivers/bluetooth/btintel_pcie.c | 1 drivers/bluetooth/btqca.c | 13 drivers/bluetooth/btusb.c | 4 drivers/bluetooth/hci_ldisc.c | 19 drivers/bluetooth/hci_qca.c | 2 drivers/bluetooth/hci_uart.h | 1 drivers/bus/mhi/host/main.c | 16 drivers/char/tpm/tpm-chip.c | 6 drivers/char/tpm/tpm-interface.c | 7 drivers/char/tpm/tpm_tis_core.c | 20 drivers/char/tpm/tpm_tis_core.h | 1 drivers/clk/qcom/clk-branch.c | 4 drivers/clk/qcom/gdsc.c | 61 - drivers/clk/renesas/r9a07g043-cpg.c | 7 drivers/clocksource/timer-stm32-lp.c | 4 drivers/crypto/ccp/sp-pci.c | 15 drivers/gpio/gpio-tegra186.c | 27 drivers/gpio/gpio-zynq.c | 1 drivers/gpio/gpiolib-of.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 10 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c | 43 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 10 drivers/gpu/drm/amd/amdkfd/kfd_device.c | 5 drivers/gpu/drm/amd/amdkfd/kfd_process.c | 17 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 2 drivers/gpu/drm/amd/amdkfd/kfd_svm.c | 31 drivers/gpu/drm/amd/display/dc/dml2/dml2_dc_resource_mgmt.c | 26 drivers/gpu/drm/amd/display/dc/hubp/dcn31/dcn31_hubp.c | 2 drivers/gpu/drm/amd/display/dc/hwss/dcn10/dcn10_hwseq.c | 22 drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c | 5 drivers/gpu/drm/drm_atomic_helper.c | 2 drivers/gpu/drm/drm_debugfs.c | 2 drivers/gpu/drm/drm_panel.c | 5 drivers/gpu/drm/drm_panel_orientation_quirks.c | 46 drivers/gpu/drm/i915/gt/intel_rc6.c | 19 drivers/gpu/drm/i915/gt/uc/intel_huc.c | 11 drivers/gpu/drm/i915/gt/uc/intel_huc.h | 1 drivers/gpu/drm/i915/gt/uc/intel_uc.c | 1 drivers/gpu/drm/i915/selftests/i915_selftest.c | 18 drivers/gpu/drm/mediatek/mtk_dpi.c | 23 drivers/gpu/drm/tests/drm_client_modeset_test.c | 3 drivers/gpu/drm/tests/drm_cmdline_parser_test.c | 10 drivers/gpu/drm/tests/drm_kunit_helpers.c | 22 drivers/gpu/drm/tests/drm_modes_test.c | 22 drivers/gpu/drm/tests/drm_probe_helper_test.c | 8 drivers/gpu/drm/xe/xe_gt.c | 4 drivers/gpu/drm/xe/xe_gt_sriov_vf.c | 16 drivers/gpu/drm/xe/xe_gt_sriov_vf.h | 1 drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c | 108 - drivers/gpu/drm/xe/xe_tuning.c | 8 drivers/gpu/drm/xe/xe_wa.c | 7 drivers/hid/Kconfig | 14 drivers/hid/Makefile | 1 drivers/hid/hid-ids.h | 37 drivers/hid/hid-universal-pidff.c | 202 +++ drivers/hid/usbhid/hid-core.c | 1 drivers/hid/usbhid/hid-pidff.c | 569 ++++++---- drivers/hid/usbhid/hid-pidff.h | 33 drivers/hsi/clients/ssi_protocol.c | 1 drivers/i3c/master.c | 3 drivers/i3c/master/svc-i3c-master.c | 2 drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c | 32 drivers/iommu/exynos-iommu.c | 4 drivers/iommu/intel/iommu.c | 2 drivers/iommu/intel/irq_remapping.c | 71 - drivers/iommu/iommufd/device.c | 123 ++ drivers/iommu/iommufd/fault.c | 8 drivers/iommu/iommufd/iommufd_private.h | 33 drivers/iommu/mtk_iommu.c | 26 drivers/leds/rgb/leds-qcom-lpg.c | 8 drivers/mailbox/tegra-hsp.c | 72 + drivers/md/dm-ebs-target.c | 7 drivers/md/dm-integrity.c | 48 drivers/md/dm-verity-target.c | 8 drivers/media/common/siano/smsdvb-main.c | 2 drivers/media/i2c/adv748x/adv748x.h | 2 drivers/media/i2c/ccs/ccs-core.c | 6 drivers/media/i2c/hi556.c | 5 drivers/media/i2c/imx214.c | 25 drivers/media/i2c/imx219.c | 106 + drivers/media/i2c/imx319.c | 9 drivers/media/i2c/ov7251.c | 4 drivers/media/pci/intel/ipu6/ipu6-isys-video.c | 1 drivers/media/pci/mgb4/mgb4_cmt.c | 8 drivers/media/platform/chips-media/wave5/wave5-hw.c | 2 drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 31 drivers/media/platform/chips-media/wave5/wave5-vpu.c | 4 drivers/media/platform/chips-media/wave5/wave5-vpuapi.c | 10 drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_scp.c | 5 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c | 3 drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c | 6 drivers/media/platform/nuvoton/npcm-video.c | 6 drivers/media/platform/qcom/venus/hfi_parser.c | 100 + drivers/media/platform/qcom/venus/hfi_venus.c | 18 drivers/media/platform/rockchip/rga/rga-hw.c | 2 drivers/media/platform/samsung/s5p-mfc/s5p_mfc_opr_v6.c | 5 drivers/media/platform/st/stm32/dma2d/dma2d.c | 3 drivers/media/rc/streamzap.c | 68 - drivers/media/test-drivers/vim2m.c | 6 drivers/media/test-drivers/visl/visl-core.c | 12 drivers/media/usb/uvc/uvc_driver.c | 9 drivers/media/v4l2-core/v4l2-dv-timings.c | 4 drivers/mfd/ene-kb3930.c | 2 drivers/misc/pci_endpoint_test.c | 3 drivers/mmc/host/dw_mmc.c | 94 + drivers/mmc/host/dw_mmc.h | 27 drivers/mtd/inftlcore.c | 9 drivers/mtd/mtdpstore.c | 12 drivers/mtd/nand/raw/brcmnand/brcmnand.c | 2 drivers/mtd/nand/raw/r852.c | 3 drivers/net/can/flexcan/flexcan-core.c | 35 drivers/net/can/flexcan/flexcan.h | 5 drivers/net/dsa/mv88e6xxx/chip.c | 23 drivers/net/ethernet/google/gve/gve_ethtool.c | 4 drivers/net/ethernet/marvell/octeontx2/nic/qos.c | 5 drivers/net/ethernet/microsoft/mana/mana_en.c | 46 drivers/net/ethernet/wangxun/libwx/wx_lib.c | 3 drivers/net/phy/phy_device.c | 57 - drivers/net/phy/sfp.c | 13 drivers/net/ppp/ppp_synctty.c | 5 drivers/net/usb/asix_devices.c | 17 drivers/net/usb/cdc_ether.c | 7 drivers/net/usb/r8152.c | 6 drivers/net/usb/r8153_ecm.c | 6 drivers/net/wireless/ath/ath11k/ahb.c | 4 drivers/net/wireless/ath/ath11k/core.c | 3 drivers/net/wireless/ath/ath11k/dp.c | 35 drivers/net/wireless/ath/ath11k/fw.c | 3 drivers/net/wireless/ath/ath11k/pci.c | 3 drivers/net/wireless/ath/ath12k/dp_mon.c | 2 drivers/net/wireless/ath/ath12k/dp_rx.c | 42 drivers/net/wireless/ath/ath12k/pci.c | 1 drivers/net/wireless/mediatek/mt76/eeprom.c | 4 drivers/net/wireless/mediatek/mt76/mt76.h | 1 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c | 4 drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 1 drivers/net/wireless/mediatek/mt76/mt7925/main.c | 16 drivers/net/wireless/mediatek/mt76/mt7925/mcu.c | 5 drivers/net/wireless/mediatek/mt76/mt7925/mcu.h | 4 drivers/ntb/ntb_transport.c | 2 drivers/nvme/target/fcloop.c | 2 drivers/of/irq.c | 80 - drivers/pci/controller/cadence/pci-j721e.c | 5 drivers/pci/controller/pcie-brcmstb.c | 13 drivers/pci/controller/pcie-rockchip-host.c | 2 drivers/pci/controller/pcie-rockchip.h | 1 drivers/pci/controller/vmd.c | 12 drivers/pci/devres.c | 18 drivers/pci/hotplug/pciehp_core.c | 5 drivers/pci/iomap.c | 29 drivers/pci/pci.c | 6 drivers/pci/pci.h | 16 drivers/pci/probe.c | 22 drivers/perf/arm_pmu.c | 8 drivers/perf/dwc_pcie_pmu.c | 33 drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 11 drivers/pinctrl/qcom/pinctrl-msm.c | 12 drivers/pinctrl/samsung/pinctrl-exynos-arm64.c | 98 - drivers/pinctrl/samsung/pinctrl-exynos.h | 22 drivers/pinctrl/samsung/pinctrl-samsung.c | 1 drivers/pinctrl/samsung/pinctrl-samsung.h | 4 drivers/platform/chrome/cros_ec_lpc.c | 22 drivers/platform/x86/x86-android-tablets/Kconfig | 1 drivers/pwm/pwm-fsl-ftm.c | 6 drivers/pwm/pwm-mediatek.c | 8 drivers/pwm/pwm-rcar.c | 24 drivers/s390/virtio/virtio_ccw.c | 16 drivers/scsi/mpi3mr/mpi3mr.h | 14 drivers/scsi/mpi3mr/mpi3mr_app.c | 24 drivers/scsi/mpi3mr/mpi3mr_fw.c | 99 + drivers/scsi/st.c | 2 drivers/soc/samsung/exynos-chipid.c | 2 drivers/spi/spi-cadence-quadspi.c | 6 drivers/target/target_core_spc.c | 2 drivers/thermal/mediatek/lvts_thermal.c | 52 drivers/thermal/rockchip_thermal.c | 1 drivers/vdpa/mlx5/core/mr.c | 7 drivers/video/backlight/led_bl.c | 5 drivers/video/fbdev/omap2/omapfb/dss/dispc.c | 6 drivers/xen/balloon.c | 34 drivers/xen/xenfs/xensyms.c | 4 fs/btrfs/disk-io.c | 12 fs/btrfs/extent-tree.c | 8 fs/btrfs/tests/extent-map-tests.c | 1 fs/btrfs/transaction.c | 12 fs/btrfs/zoned.c | 6 fs/dlm/lock.c | 2 fs/erofs/fileio.c | 2 fs/ext4/inode.c | 68 - fs/ext4/namei.c | 2 fs/ext4/super.c | 17 fs/ext4/xattr.c | 11 fs/f2fs/checkpoint.c | 21 fs/f2fs/f2fs.h | 32 fs/f2fs/inode.c | 8 fs/f2fs/node.c | 110 - fs/f2fs/super.c | 4 fs/file.c | 26 fs/jbd2/journal.c | 1 fs/jfs/jfs_dmap.c | 10 fs/jfs/jfs_imap.c | 4 fs/namespace.c | 3 fs/nfsd/nfs4callback.c | 2 fs/nfsd/nfsctl.c | 9 fs/nfsd/stats.c | 4 fs/nfsd/stats.h | 2 fs/smb/client/cifsencrypt.c | 16 fs/smb/client/connect.c | 3 fs/smb/client/fs_context.c | 5 fs/smb/client/inode.c | 10 fs/smb/client/reparse.c | 4 fs/smb/client/sess.c | 7 fs/smb/client/smb2misc.c | 9 fs/smb/client/smb2ops.c | 6 fs/smb/client/smb2pdu.c | 11 fs/udf/inode.c | 1 fs/userfaultfd.c | 51 include/drm/drm_kunit_helpers.h | 3 include/drm/intel/i915_pciids.h | 5 include/linux/cgroup-defs.h | 1 include/linux/cgroup.h | 2 include/linux/hid.h | 6 include/linux/io_uring_types.h | 3 include/linux/kvm_host.h | 2 include/linux/page-flags.h | 6 include/linux/pci_ids.h | 2 include/linux/perf_event.h | 45 include/linux/pgtable.h | 14 include/linux/printk.h | 6 include/linux/tpm.h | 1 include/net/bluetooth/hci.h | 16 include/net/bluetooth/hci_core.h | 4 include/net/mac80211.h | 6 include/net/sctp/structs.h | 3 include/net/sock.h | 40 include/uapi/linux/kfd_ioctl.h | 2 include/uapi/linux/landlock.h | 2 include/uapi/linux/perf_event.h | 11 include/uapi/linux/psp-sev.h | 21 include/uapi/linux/rkisp1-config.h | 2 include/xen/interface/xen-mca.h | 2 io_uring/io_uring.c | 4 io_uring/kbuf.c | 2 io_uring/net.c | 3 kernel/cgroup/cgroup.c | 6 kernel/cgroup/cpuset.c | 176 +-- kernel/events/core.c | 255 ++-- kernel/events/internal.h | 1 kernel/locking/lockdep.c | 3 kernel/power/hibernate.c | 6 kernel/printk/printk.c | 4 kernel/reboot.c | 1 kernel/sched/ext.c | 4 kernel/trace/ftrace.c | 9 kernel/trace/ring_buffer.c | 5 kernel/trace/trace_events.c | 4 kernel/trace/trace_events_synth.c | 1 kernel/trace/trace_fprobe.c | 26 kernel/trace/trace_probe.c | 28 lib/sg_split.c | 2 lib/zstd/common/portability_macros.h | 2 mm/damon/ops-common.c | 2 mm/damon/paddr.c | 24 mm/hugetlb.c | 2 mm/memory-failure.c | 11 mm/memory_hotplug.c | 3 mm/mremap.c | 10 mm/page_vma_mapped.c | 13 mm/rmap.c | 2 mm/shmem.c | 3 mm/vmscan.c | 2 net/8021q/vlan_dev.c | 31 net/bluetooth/hci_sync.c | 6 net/core/filter.c | 80 - net/core/page_pool.c | 8 net/core/page_pool_user.c | 2 net/core/sock.c | 5 net/ethtool/netlink.c | 8 net/ipv6/route.c | 8 net/mac80211/debugfs.c | 44 net/mac80211/iface.c | 5 net/mac80211/mesh_hwmp.c | 14 net/mac80211/mlme.c | 45 net/mptcp/sockopt.c | 28 net/mptcp/subflow.c | 19 net/netfilter/nft_set_pipapo_avx2.c | 3 net/sched/cls_api.c | 66 - net/sched/sch_codel.c | 5 net/sched/sch_fq_codel.c | 6 net/sched/sch_sfq.c | 66 - net/sctp/socket.c | 22 net/sctp/transport.c | 2 net/sunrpc/xprtrdma/svc_rdma_transport.c | 3 net/tipc/link.c | 1 net/tls/tls_main.c | 6 scripts/generate_builtin_ranges.awk | 5 security/integrity/ima/ima.h | 3 security/integrity/ima/ima_main.c | 18 security/landlock/errata.h | 99 + security/landlock/errata/abi-4.h | 15 security/landlock/errata/abi-6.h | 19 security/landlock/fs.c | 39 security/landlock/setup.c | 38 security/landlock/setup.h | 3 security/landlock/syscalls.c | 22 security/landlock/task.c | 12 sound/pci/hda/hda_intel.c | 44 sound/pci/hda/patch_realtek.c | 22 sound/soc/amd/ps/acp63.h | 1 sound/soc/amd/ps/pci-ps.c | 2 sound/soc/amd/yc/acp6x-mach.c | 14 sound/soc/codecs/wcd937x.c | 2 sound/soc/fsl/fsl_audmix.c | 16 sound/soc/intel/common/soc-acpi-intel-adl-match.c | 29 sound/soc/qcom/qdsp6/q6apm-dai.c | 60 - sound/soc/qcom/qdsp6/q6apm.c | 18 sound/soc/qcom/qdsp6/q6apm.h | 3 sound/soc/qcom/qdsp6/q6asm-dai.c | 19 sound/soc/sof/topology.c | 4 sound/usb/midi.c | 80 + tools/lib/bpf/btf_dump.c | 4 tools/objtool/check.c | 5 tools/power/cpupower/bench/parse.c | 4 tools/testing/ktest/ktest.pl | 8 tools/testing/selftests/futex/functional/futex_wait_wouldblock.c | 2 tools/testing/selftests/landlock/base_test.c | 46 tools/testing/selftests/landlock/common.h | 1 tools/testing/selftests/landlock/scoped_signal_test.c | 108 + tools/testing/selftests/net/mptcp/mptcp_connect.c | 11 virt/kvm/Kconfig | 2 virt/kvm/eventfd.c | 10 383 files changed, 5034 insertions(+), 2068 deletions(-)
Aakarsh Jain (1):
media: s5p-mfc: Corrected NV12M/NV21M plane-sizes
Abel Vesa (2):
leds: rgb: leds-qcom-lpg: Fix pwm resolution max for Hi-Res PWMs
leds: rgb: leds-qcom-lpg: Fix calculation of best period Hi-Res PWMs
Abhinav Kumar (1):
drm: allow encoder mode_set even when connectors change for crtc
Adrian Hunter (1):
perf/core: Add aux_pause, aux_resume, aux_start_paused
Ajit Pandey (1):
clk: qcom: clk-branch: Fix invert halt status bit check for votable clocks
Alain Volmat (1):
dt-bindings: media: st,stmipid02: correct lane-polarities maxItems
Alexander Aring (2):
dlm: fix error if inactive rsb is not hashed
dlm: fix error if active rsb is not hashed
Alexandra Diupina (1):
cifs: avoid NULL pointer dereference in dbg call
Alexandre Torgue (1):
clocksource/drivers/stm32-lptimer: Use wakeup capable instead of init wakeup
Alexey Klimov (1):
ASoC: qdsp6: q6asm-dai: fix q6asm_dai_compr_set_params error path
Aman (1):
CIFS: Propagate min offload along with other parameters from primary to secondary channels.
Amit Machhiwal (1):
KVM: PPC: Enable CAP_SPAPR_TCE_VFIO on pSeries KVM guests
Andrew Wyatt (5):
drm: panel-orientation-quirks: Add support for AYANEO 2S
drm: panel-orientation-quirks: Add quirks for AYA NEO Flip DS and KB
drm: panel-orientation-quirks: Add quirk for AYA NEO Slide
drm: panel-orientation-quirks: Add new quirk for GPD Win 2
drm: panel-orientation-quirks: Add quirk for OneXPlayer Mini (Intel)
Andy Chiu (1):
ftrace: Properly merge notrace hashes
Andy Shevchenko (1):
gpiolib: of: Fix the choice for Ingenic NAND quirk
AngeloGioacchino Del Regno (2):
drm/mediatek: mtk_dpi: Move the input_2p_en bit to platform data drm/mediatek: mtk_dpi: Explicitly manage TVD clock in power on/off
Arnaud Lecomte (1):
net: ppp: Add bound checking for skb data on ppp_sync_txmung
Arnd Bergmann (2):
media: mtk-vcodec: venc: avoid -Wenum-compare-conditional warning
media: mediatek: vcodec: mark vdec_vp9_slice_map_counts_eob_coef noinline
Arseniy Krasnov (2):
Bluetooth: hci_uart: fix race during initialization
Bluetooth: hci_uart: Fix another race during initialization
Artem Sadovnikov (1):
ext4: fix off-by-one error in do_split
Ayush Jain (1):
ktest: Fix Test Failures Due to Missing LOG_FILE Directories
Badal Nilawar (1):
drm/i915: Disable RPG during live selftest
Bard Liao (1):
ASoC: Intel: adl: add 2xrt1316 audio configuration
Bhupesh (1):
ext4: ignore xattrs past end
Bingbu Cao (1):
media: intel/ipu6: set the dev_parent of video device to pdev
Birger Koblitz (1):
net: sfp: add quirk for 2.5G OEM BX SFP
Bjorn Helgaas (1):
PCI: Enable Configuration RRS SV early
Boqun Feng (1):
locking/lockdep: Decrease nr_unused_locks if lock unused in zap_class()
Boris Burkov (1):
btrfs: harden block_group::bg_list against list_del() races
Bryan O'Donoghue (2):
clk: qcom: gdsc: Release pm subdomains in reverse add order
clk: qcom: gdsc: Capture pm_genpd_add_subdomain result code
Chao Yu (3):
f2fs: don't retry IO for corrupted data scenario
f2fs: fix to avoid out-of-bounds access in f2fs_truncate_inode_blocks() Revert "f2fs: rebuild nat_bits during umount"
Chaohai Chen (1):
scsi: target: spc: Fix RSOC parameter data header size
Chen-Yu Tsai (1):
arm64: dts: mediatek: mt8173: Fix disp-pwm compatible string
Chenyuan Yang (3):
net: libwx: handle page_pool_dev_alloc_pages error
soc: samsung: exynos-chipid: Add NULL pointer check in exynos_chipid_probe()
mfd: ene-kb3930: Fix a potential NULL pointer dereference
Christian König (1):
drm/amdgpu: grab an additional reference on the gang fence v2
Chuck Lever (1):
NFSD: Fix CB_GETATTR status fix
Ciprian Marian Costea (2):
can: flexcan: Add quirk to handle separate interrupt lines for mailboxes
can: flexcan: add NXP S32G2/S32G3 SoC support
Cong Liu (1):
selftests: mptcp: fix incorrect fd checks in main_loop
Cong Wang (1):
codel: remove sch->q.qlen check before qdisc_tree_reduce_backlog()
Daniel Kral (1):
ahci: add PCI ID for Marvell 88SE9215 SATA Controller
Daniel Schaefer (1):
platform/chrome: cros_ec_lpc: Match on Framework ACPI device
Daniel Wagner (1):
nvmet-fcloop: swap list_add_tail arguments
Dave Stevenson (1):
media: imx219: Adjust PLL settings based on the number of MIPI lanes
David Hildenbrand (2):
mm/rmap: reject hugetlb folios in folio_make_device_exclusive() s390/virtio_ccw: Don't allocate/assign airqs for non-existing queues
David Yat Sin (1):
drm/amdkfd: clamp queue size to minimum
Dionna Glaze (1):
crypto: ccp - Fix uAPI definitions of PSP errors
Dmitry Baryshkov (1):
Bluetooth: qca: simplify WCN399x NVM loading
Douglas Anderson (6):
arm64: cputype: Add QCOM_CPU_PART_KRYO_3XX_GOLD
arm64: cputype: Add MIDR_CORTEX_A76AE
arm64: errata: Add QCOM_KRYO_4XX_GOLD to the spectre_bhb_k24_list
arm64: errata: Assume that unknown CPUs _are_ vulnerable to Spectre BHB
arm64: errata: Add KRYO 2XX/3XX/4XX silver cores to Spectre BHB safe list
arm64: errata: Add newer ARM cores to the spectre_bhb_loop_affected() lists
Eder Zulian (1):
libbpf: Prevent compiler warnings/errors
Edward Adam Davis (2):
jfs: Prevent copying of nlink with value 0 from disk inode
jfs: add sanity check for agwidth in dbMount
Edward Liaw (1):
selftests/futex: futex_waitv wouldblock test should fail
Emily Deng (1):
drm/amdgpu: Fix the race condition for draining retry fault
Fedor Pchelkin (1):
ntb: use 64-bit arithmetic for the MSI doorbell mask
Filipe Manana (2):
btrfs: fix non-empty delayed iputs list on unmount due to compressed write workers
btrfs: tests: fix chunk map leak after failure to add it to the tree
Florian Westphal (1):
nft_set_pipapo: fix incorrect avx2 match of 5th field octet
Frederic Weisbecker (1):
perf: Fix hang while freeing sigtrap event
Gabriele Paoloni (1):
tracing: fix return value in __ftrace_event_enable_disable for TRACE_REG_UNREGISTER
Gang Yan (1):
mptcp: fix NULL pointer in can_accept_new_subflow
Gavrilov Ilia (1):
wifi: mac80211: fix integer overflow in hwmp_route_info_get()
Geliang Tang (1):
selftests: mptcp: close fd_in before returning in main_loop
Greg Kroah-Hartman (1):
Linux 6.12.24
Guixin Liu (1):
gpio: tegra186: fix resource handling in ACPI probe path
Haiyang Zhang (1):
net: mana: Switch to page pool for jumbo frames
Hans de Goede (2):
platform/x86: x86-android-tablets: Add select POWER_SUPPLY to Kconfig
media: hi556: Fix memory leak (on error) in hi556_check_hwcfg()
Haoxiang Li (3):
auxdisplay: hd44780: Fix an API misuse in hd44780.c
wifi: mt76: Add check for devm_kstrdup()
ASoC: codecs: wcd937x: fix a potential memory leak in wcd937x_soc_codec_probe()
Hariprasad Kelam (1):
octeontx2-pf: qos: fix VF root node parent queue index
Henry Martin (1):
ata: pata_pxa: Fix potential NULL pointer dereference in pxa_ata_probe()
Herve Codina (1):
backlight: led_bl: Hold led_access lock when calling led_sysfs_disable()
Huacai Chen (1):
ahci: Marvell 88SE9215 controllers prefer DMA for ATAPI
Icenowy Zheng (1):
wifi: mt76: mt76x2u: add TP-Link TL-WDN6200 ID to device table
Ido Schimmel (1):
ipv6: Align behavior across nexthops during path selection
Ingo Molnar (1):
zstd: Increase DYNAMIC_BMI2 GCC version cutoff from 4.8 to 11.0 to work around compiler segfault
Jacek Lawrynowicz (3):
accel/ivpu: Fix PM related deadlocks in MS IOCTLs accel/ivpu: Fix warning in ivpu_ipc_send_receive_internal() accel/ivpu: Fix deadlock in ivpu_ms_cleanup()
Jackson.lee (4):
media: chips-media: wave5: Fix gray color on screen
media: chips-media: wave5: Avoid race condition in the interrupt handler
media: chips-media: wave5: Fix a hang after seeking
media: chips-media: wave5: Fix timeout while testing 10bit hevc fluster
Jake Hillion (1):
sched_ext: create_dsq: Return -EEXIST on duplicate request
Jakub Kicinski (1):
net: tls: explicitly disallow disconnect
Jan Beulich (1):
xenfs/xensyms: respect hypervisor's "next" indication
Jan Kara (2):
udf: Fix inode_getblk() return value
jbd2: remove wrong sb->s_sequence check
Janaki Ramaiah Thota (1):
Bluetooth: hci_qca: use the power sequencer for wcn6750
Jane Chu (1):
mm: make page_mapped_in_vma() hugetlb walk aware
Jann Horn (1):
ext4: don't treat fhandle lookup of ea_inode as FS corruption
Janusz Krzysztofik (1):
drm/i915/huc: Fix fence not released on early probe errors
Jason Xing (1):
page_pool: avoid infinite loop to schedule delayed worker
Jeff Hugo (1):
bus: mhi: host: Fix race between unprepare and queue_buf
Jeff Layton (1):
nfsd: don't ignore the return code of svc_proc_register()
Jens Axboe (1):
io_uring/kbuf: reject zero sized provided buffers
Jiande Lu (1):
Bluetooth: btusb: Add 2 HWIDs for MT7922
Jiasheng Jiang (4):
media: mediatek: vcodec: Fix a resource leak related to the scp device in FW initialization
media: platform: stm32: Add check for clk_enable()
mtd: Add check for devm_kcalloc()
mtd: Replace kcalloc() with devm_kcalloc()
Jinjiang Tu (1):
mm/hwpoison: introduce folio_contain_hwpoisoned_page() helper
Jo Van Bulck (1):
dm-integrity: fix non-constant-time tag verification
Johannes Berg (1):
wifi: mac80211: add strict mode disabling workarounds
Johannes Thumshirn (2):
btrfs: zoned: fix zone activation with missing devices
btrfs: zoned: fix zone finishing with missing devices
John Keeping (1):
media: rockchip: rga: fix rga offset lookup
Jonathan McDowell (3):
tpm, tpm_tis: Workaround failed command reception on Infineon devices
tpm: End any active auth session before shutdown
tpm, tpm_tis: Fix timeout handling when waiting for TPM status
Josh Poimboeuf (2):
objtool: Fix INSN_CONTEXT_SWITCH handling in validate_unret()
pwm: mediatek: Prevent divide-by-zero in pwm_mediatek_config()
Joshua Washington (1):
gve: handle overflow when reporting TX consumed descriptors
Kai Mäkisara (1):
scsi: st: Fix array overflow in st_setup()
Kaixin Wang (1):
HSI: ssi_protocol: Fix use after free vulnerability in ssi_protocol Driver Due to Race Condition
Kamal Dasu (1):
mtd: rawnand: brcmnand: fix PM resume warning
Karina Yankevich (1):
media: v4l2-dv-timings: prevent possible overflow in v4l2_detect_gtf()
Kartik Rajput (1):
mailbox: tegra-hsp: Define dimensioning masks in SoC data
Kaustabh Chakraborty (1):
mmc: dw_mmc: add a quirk for accessing 64-bit FIFOs in two halves
Kees Cook (1):
xen/mcelog: Add __nonstring annotations for unterminated strings
Keir Fraser (1):
arm64: mops: Do not dereference src reg for a set operation
Kiran K (1):
Bluetooth: btintel_pcie: Add device id of Whale Peak
Kirill A. Shutemov (1):
x86/paravirt: Move halt paravirt calls under CONFIG_PARAVIRT
Kris Van Hees (1):
kbuild: exclude .rodata.(cst|str)* when building ranges
Krzysztof Kozlowski (3):
dt-bindings: coresight: qcom,coresight-tpda: Fix too many 'reg'
dt-bindings: coresight: qcom,coresight-tpdm: Fix too many 'reg'
gpio: zynq: Fix wakeup source leaks on device unbind
Kunihiko Hayashi (1):
misc: pci_endpoint_test: Fix displaying 'irq_type' after 'request_irq' error
Kuniyuki Iwashima (1):
net: Fix null-ptr-deref by sock_lock_init_class_and_name() and rmmod.
Lad Prabhakar (1):
clk: renesas: r9a07g043: Fix HP clock source for RZ/Five
Leonid Arapov (1):
fbdev: omapfb: Add 'plane' value check
Lizhi Xu (1):
PM: hibernate: Avoid deadlock in hibernate_compressor_param_set()
Lorenzo Stoakes (1):
mm/mremap: correctly handle partial mremap() of VMA starting at 0
Louis-Alexis Eyraud (1):
iommu/mediatek: Fix NULL pointer deference in mtk_iommu_device_group
Lu Baolu (1):
iommu/vt-d: Fix possible circular locking dependency
Luca Ceresoli (2):
drm/debugfs: fix printk format for bridge index
drm/bridge: panel: forbid initializing a panel with unknown connector type
Lucas De Marchi (1):
drivers: base: devres: Allow to release group on device release
Lukas Wunner (1):
PCI: pciehp: Avoid unnecessary device replacement check
Ma Ke (2):
PCI: Fix reference leak in pci_alloc_child_bus()
PCI: Fix reference leak in pci_register_host_bridge()
Manish Dharanenthiran (1):
wifi: ath12k: Fix invalid data access in ath12k_dp_rx_h_undecap_nwifi
Manjunatha Venkatesh (1):
i3c: Add NULL pointer check in i3c_master_queue_ibi()
Marc Herbert (1):
mm/hugetlb: move hugetlb_sysctl_init() to the __init section
Marek Behún (2):
net: dsa: mv88e6xxx: workaround RGMII transmit delay erratum for 6320 family
net: dsa: mv88e6xxx: fix internal PHYs for 6320 family
Marek Szyprowski (1):
iommu/exynos: Fix suspend/resume with IDENTITY domain
Mark Rutland (1):
perf: arm_pmu: Don't disable counter in armpmu_add()
Martin Schiller (1):
net: sfp: add quirk for FS SFP-10GM-T copper SFP+ module
Martin Tůma (2):
media: mgb4: Fix CMT registers update logic
media: mgb4: Fix switched CMT frequency range "magic values" sets
Masami Hiramatsu (Google) (2):
tracing: probe-events: Add comments about entry data storing code
tracing: fprobe events: Fix possible UAF on modules
Mateusz Guzik (1):
fs: consistently deref the files table with rcu_dereference_raw()
Mathieu Desnoyers (1):
mm: add missing release barrier on PGDAT_RECLAIM_LOCKED unlock
Matthew Majewski (1):
media: vim2m: print device name after registering device
Matthew Wilcox (Oracle) (1):
x86/mm: Clear _PAGE_DIRTY for kernel mappings when we clear _PAGE_RW
Matthieu Baerts (NGI0) (3):
mptcp: sockopt: fix getting IPV6_V6ONLY
mptcp: sockopt: fix getting freebind & transparent
mptcp: only inc MPJoinAckHMacFailure for HMAC failures
Max Grobecker (1):
x86/cpu: Don't clear X86_FEATURE_LAHF_LM flag in init_amd_k8() on AMD when running in a virtual machine
Max Schulze (1):
net: usb: asix_devices: add FiberGecko DeviceID
Maxim Mikityanskiy (2):
ALSA: hda: intel: Fix Optimus when GPU has no sound
ALSA: hda: intel: Add Lenovo IdeaPad Z570 to probe denylist
Maxime Chevallier (1):
net: ethtool: Don't call .cleanup_data when prepare_data fails
Maxime Ripard (5):
drm/tests: modeset: Fix drm_display_mode memory leak drm/tests: helpers: Create kunit helper to destroy a drm_display_mode drm/tests: cmdline: Fix drm_display_mode memory leak drm/tests: modes: Fix drm_display_mode memory leak drm/tests: probe-helper: Fix drm_display_mode memory leak
Miaoqing Pan (2):
wifi: ath11k: fix memory leak in ath11k_xxx_remove()
wifi: ath12k: fix memory leak in ath12k_pci_remove()
Michal Wajdeczko (1):
drm/xe/vf: Don't try to trigger a full GT reset if VF
Mickaël Salaün (7):
landlock: Move code to ease future backports
landlock: Add the errata interface
landlock: Add erratum for TCP fix
landlock: Always allow signals between threads of the same process
landlock: Prepare to add second errata selftests/landlock: Split signal_scoping_threads tests selftests/landlock: Add a new test for setuid()
Mike Katsnelson (1):
drm/amd/display: stop DML2 from removing pipes based on planes
Mikulas Patocka (3):
dm-ebs: fix prefetch-vs-suspend race
dm-integrity: set ti->error on memory allocation failure
dm-verity: fix prefetch-vs-suspend race
Mimi Zohar (2):
ima: limit the number of open-writers integrity violations
ima: limit the number of ToMToU integrity violations
Ming Lei (1):
ublk: fix handling recovery & reissue in ublk_abort_queue()
Ming Yen Hsieh (4):
wifi: mt76: mt7925: ensure wow pattern command align fw format
wifi: mt76: mt7925: fix country count limitation for CLC
wifi: mt76: mt7925: fix the wrong link_idx when a p2p_device is present
wifi: mt76: mt7925: fix the wrong simultaneous cap for MLO
Miquel Raynal (1):
spi: cadence-qspi: Fix probe on AM62A LP SK
Miri Korenblit (1):
wifi: mac80211: ensure sdata->work is canceled before initialized.
Murad Masimov (1):
media: streamzap: prevent processing IR data on URB failure
Myrrh Periwinkle (1):
x86/e820: Fix handling of subpage regions when calculating nosave ranges in e820__register_nosave_regions()
Nathan Chancellor (2):
ACPI: platform-profile: Fix CFI violation when accessing sysfs files
kbuild: Add '-fno-builtin-wcslen'
Nicolas Dufresne (1):
media: visl: Fix ERANGE error when setting enum controls
Nicolin Chen (3):
iommufd: Fix uninitialized rc in iommufd_access_rw() iommu/tegra241-cmdqv: Fix warnings due to dmam_free_coherent()
iommufd: Make attach_handle generic than fault specific
Niklas Cassel (2):
ata: libata-core: Add 'external' to the libata.force kernel parameter
ata: libata-eh: Do not use ATAPI DMA for a device limited to PIO mode
Niklas Schnelle (2):
s390/pci: Fix s390_mmio_read/write syscall page fault handling s390/pci: Fix zpci_bus_is_isolated_vf() for non-VFs
Niklas Söderlund (2):
media: uapi: rkisp1-config: Fix typo in extensible params example
media: i2c: adv748x: Fix test pattern selection mask
Ninad Malwade (1):
arm64: tegra: Remove the Orin NX/Nano suspend key
Nícolas F. R. A. Prado (2):
thermal/drivers/mediatek/lvts: Disable monitor mode during suspend thermal/drivers/mediatek/lvts: Disable Stage 3 thermal threshold
Octavian Purdila (2):
net_sched: sch_sfq: use a temporary work area for validating configuration
net_sched: sch_sfq: move the limit validation
Ojaswin Mujoo (1):
ext4: protect ext4_release_dquot against freezing
Olga Kornievskaia (2):
svcrdma: do not unregister device for listeners
NFSD: fix decoding in nfs4_xdr_dec_cb_getattr
P Praneesh (2):
wifi: ath11k: Fix DMA buffer allocation to resolve SWIOTLB issues
wifi: ath12k: Fix invalid entry fetch in ath12k_dp_mon_srng_process
Pali Rohár (1):
cifs: Ensure that all non-client-specific reparse points are processed by the server
Paul E. McKenney (1):
Flush console log from kernel_power_off()
Paulo Alcantara (1):
smb: client: fix UAF in decryption with multichannel
Pavel Begunkov (3):
net: page_pool: don't cast mp param to devmem io_uring/net: fix accept multishot handling io_uring/net: fix io_req_post_cqe abuse by send bundle
Pedro Nishiyama (2):
Bluetooth: Add quirk for broken READ_VOICE_SETTING
Bluetooth: Add quirk for broken READ_PAGE_SCAN_TYPE
Peter Griffin (2):
arm64: dts: exynos: gs101: disable pinctrl_gsacore node
pinctrl: samsung: add support for eint_fltcon_offset
Peter Xu (1):
mm/userfaultfd: fix release hang over concurrent GUP
Peter Zijlstra (1):
perf/core: Simplify the perf_event_alloc() error path
Petr Vaněk (1):
x86/acpi: Don't limit CPUs to 1 for Xen PV guests due to disabled ACPI
Philip Yang (4):
drm/amdgpu: Unlocked unmap only clear page table leaves drm/amdkfd: Fix mode1 reset crash issue drm/amdkfd: Fix pqm_destroy_queue race with GPU reset drm/amdkfd: debugfs hang_hws skip GPU with MES
Philipp Hahn (1):
cdc_ether|r8152: ThinkPad Hybrid USB-C/A Dock quirk
Philipp Stanner (2):
PCI: Check BAR index for validity
PCI: Fix wrong length of devres array
Rand Deeb (2):
fs/jfs: cast inactags to s64 to prevent potential overflow fs/jfs: Prevent integer overflow in AG size calculation
Ranjan Kumar (2):
scsi: mpi3mr: Avoid reply queue full condition
scsi: mpi3mr: Synchronous access b/w reset and tm thread for reply queue
Ricard Wanderlof (1):
ALSA: usb-audio: Fix CME quirk for UF series keyboards
Ricardo Cañuelo Navarro (1):
sctp: detect and prevent references to a freed transport in sendmsg
Ricardo Ribalda (3):
media: uvcvideo: Add quirk for Actions UVC05
media: nuvoton: Fix reference handling of ece_node
media: nuvoton: Fix reference handling of ece_pdev
Roger Pau Monne (1):
x86/xen: fix balloon target initialization for PVH dom0
Roman Smirnov (1):
cifs: fix integer overflow in match_server()
Ryan Roberts (3):
sparc/mm: disable preemption in lazy mmu mode sparc/mm: avoid calling arch_enter/leave_lazy_mmu() in set_ptes
mm: fix lazy mmu docs and usage
Ryo Takakura (1):
PCI: vmd: Make vmd_dev::cfg_lock a raw_spinlock_t type
Sakari Ailus (8):
Revert "media: imx214: Fix the error handling in imx214_probe()"
media: i2c: ccs: Set the device's runtime PM status correctly in remove
media: i2c: ccs: Set the device's runtime PM status correctly in probe
media: i2c: ov7251: Set enable GPIO low in probe
media: i2c: ov7251: Introduce 1 ms delay between regulators and en GPIO
media: i2c: imx319: Rectify runtime PM handling probe and remove
media: i2c: imx219: Rectify runtime PM handling in probe and remove
media: i2c: imx214: Rectify probe error handling related to runtime PM
Sean Christopherson (6):
iommu/vt-d: Put IRTE back into posted MSI mode if vCPU posting is disabled iommu/vt-d: Don't clobber posted vCPU IRTE when host IRQ affinity changes iommu/vt-d: Wire up irq_ack() to irq_move_irq() for posted MSIs
KVM: Allow building irqbypass.ko as as module when kvm.ko is a module
KVM: x86: Explicitly zero-initialize on-stack CPUID unions
KVM: x86: Acquire SRCU in KVM_GET_MP_STATE to protect guest memory accesses
Sharan Kumar M (1):
ALSA: hda/realtek: Enable Mute LED on HP OMEN 16 Laptop xd000xx
Shawn Lin (1):
PCI: Add Rockchip Vendor ID
Shekhar Chauhan (1):
drm/xe/bmg: Add new PCI IDs
Sheng Yong (1):
erofs: set error to bio if file-backed IO fails
Shengjiu Wang (1):
ASoC: fsl_audmix: register card device depends on 'dais' property
Shuai Xue (1):
mm/hwpoison: do not send SIGBUS to processes with recovered clean pages
Si-Wei Liu (1):
vdpa/mlx5: Fix oversized null mkey longer than 32bit
Siddharth Vadapalli (1):
PCI: j721e: Fix the value of .linkdown_irq_regfield for J784S4
Srinivas Kandagatla (5):
ASoC: q6apm: add q6apm_get_hw_pointer helper
ASoC: q6apm-dai: schedule all available frames to avoid dsp under-runs
ASoC: q6apm-dai: make use of q6apm_get_hw_pointer
ASoC: qdsp6: q6apm-dai: set 10 ms period and buffer alignment.
ASoC: qdsp6: q6apm-dai: fix capture pipeline overruns.
Stanimir Varbanov (1):
PCI: brcmstb: Fix missing of_node_put() in brcm_pcie_probe()
Stanislav Fomichev (1):
net: vlan: don't propagate flags on open
Stanley Chu (1):
i3c: master: svc: Use readsb helper for reading MDB
Stefan Eichenberger (1):
phy: freescale: imx8m-pcie: assert phy reset and perst in power off
Stephan Gerhold (1):
pinctrl: qcom: Clear latched interrupt status when changing IRQ type
Steve French (1):
smb311 client: fix missing tcon check when mounting with linux/posix extensions
Steven Rostedt (2):
tracing: Do not add length to print format in synthetic events
ring-buffer: Use flush_kernel_vmap_range() over flush_dcache_folio()
Sumanth Korikkar (1):
s390: Fix linker error when -no-pie option is unavailable
Syed Saba kareem (1):
ASoC: amd: yc: update quirk data for new Lenovo model
T Pratham (1):
lib: scatterlist: fix sg_split_phys to preserve original scatterlist offsets
Taniya Das (1):
clk: qcom: gdsc: Set retain_ff before moving to HW CTRL
Tejas Upadhyay (1):
drm/xe/hw_engine: define sysfs_ops on all directories
Thadeu Lima de Souza Cascardo (1):
tpm: do not start chip while suspended
Thomas Richter (1):
s390/cpumf: Fix double free on error in cpumf_pmu_event_init()
Toke Høiland-Jørgensen (1):
tc: Ensure we have enough buffer space when sending filter netlink notifications
Tom Lendacky (1):
crypto: ccp - Fix check for the primary ASP device
Tomasz Pakuła (31):
HID: pidff: Convert infinite length from Linux API to PID standard
HID: pidff: Do not send effect envelope if it's empty
HID: pidff: Add MISSING_DELAY quirk and its detection
HID: pidff: Add MISSING_PBO quirk and its detection
HID: pidff: Add PERMISSIVE_CONTROL quirk
HID: pidff: Add hid_pidff_init_with_quirks and export as GPL symbol
HID: pidff: Add FIX_WHEEL_DIRECTION quirk
HID: Add hid-universal-pidff driver and supported device ids
HID: pidff: Add PERIODIC_SINE_ONLY quirk
HID: pidff: Fix null pointer dereference in pidff_find_fields
HID: pidff: Clamp PERIODIC effect period to device's logical range
HID: pidff: Stop all effects before enabling actuators
HID: pidff: Completely rework and fix pidff_reset function
HID: pidff: Simplify pidff_upload_effect function
HID: pidff: Define values used in pidff_find_special_fields
HID: pidff: Rescale time values to match field units
HID: pidff: Factor out code for setting gain
HID: pidff: Move all hid-pidff definitions to a dedicated header
HID: pidff: Simplify pidff_rescale_signed
HID: pidff: Use macros instead of hardcoded min/max values for shorts
HID: pidff: Factor out pool report fetch and remove excess declaration
HID: pidff: Make sure to fetch pool before checking SIMULTANEOUS_MAX
HID: hid-universal-pidff: Add Asetek wheelbases support
HID: pidff: Comment and code style update
HID: pidff: Support device error response from PID_BLOCK_LOAD
HID: pidff: Remove redundant call to pidff_find_special_keys
HID: pidff: Rename two functions to align them with naming convention
HID: pidff: Clamp effect playback LOOP_COUNT value
HID: pidff: Compute INFINITE value instead of using hardcoded 0xffff
HID: pidff: Fix 90 degrees direction name North -> East
HID: pidff: Fix set_device_control()
Trevor Woerner (1):
thermal/drivers/rockchip: Add missing rk3328 mapping entry
Trond Myklebust (1):
umount: Allow superblock owners to force umount
Tung Nguyen (1):
tipc: fix memory leak in tipc_link_xmit
Tvrtko Ursulin (1):
drm/xe/xelp: Move Wa_16011163337 from tunings to workarounds
Uday Shankar (1):
ublk: refactor recovery configuration flag helpers
Uros Bizjak (1):
x86/percpu: Disable named address spaces for UBSAN_BOOL with KASAN for GCC < 14.2
Usama Arif (1):
mm/damon/ops: have damon_get_folio return folio even for tail pages
Uwe Kleine-König (2):
pwm: rcar: Improve register calculation
pwm: fsl-ftm: Handle clk_get_rate() returning 0
Vijendar Mukunda (1):
ASoC: amd: ps: use macro for ACP6.3 pci revision id
Vikash Garodia (4):
media: venus: hfi: add a check to handle OOB in sfr region
media: venus: hfi: add check to handle incorrect queue size
media: venus: hfi_parser: add check to avoid out of bound access
media: venus: hfi_parser: refactor hfi packet parsing logic
Vladimir Oltean (2):
net: phy: move phy_link_change() prior to mdio_bus_phy_may_suspend()
net: phy: allow MDIO bus PM ops to start/stop state machine for phylink-controlled PHY
Waiman Long (6):
cgroup/cpuset: Fix incorrect isolated_cpus update in update_parent_effective_cpumask() cgroup/cpuset: Fix error handling in remote_partition_disable() cgroup/cpuset: Revert "Allow suppression of sched domain rebuild in update_cpumasks_hier()" cgroup/cpuset: Enforce at most one rebuild_sched_domains_locked() call per operation cgroup/cpuset: Further optimize code if CONFIG_CPUSETS_V1 not set cgroup/cpuset: Fix race between newly created partition and dying one
Wentao Liang (4):
ata: sata_sx4: Add error handling in pdc20621_i2c_read() drm/amdgpu: handle amdgpu_cgs_create_device() errors in amd_powerplay_create()
mtd: inftlcore: Add error check for inftl_read_oob()
mtd: rawnand: Add status chack in r852_ready()
Will Deacon (1):
KVM: arm64: Tear down vGIC on failed vCPU creation
Willem de Bruijn (1):
bpf: support SKF_NET_OFF and SKF_LL_OFF on skb frags
Xin Li (Intel) (1):
x86/ia32: Leave NULL selector values 0~3 unchanged
Yeongjin Gil (1):
f2fs: fix to avoid atomicity corruption of atomic file
Yi Liu (1):
iommufd: Fail replace if device has not been attached
Yuan Can (1):
media: siano: Fix error handling in smsdvb_module_init()
Yunhui Cui (1):
perf/dwc_pcie: fix some unreleased resources
Zhang Heng (1):
ASoC: SOF: topology: Use krealloc_array() to replace krealloc()
Zhenhua Huang (1):
arm64: mm: Correct the update of max_pfn
Zhikai Zhai (1):
drm/amd/display: Update Cursor request mode to the beginning prefetch always
Zhongqiu Han (2):
pm: cpupower: bench: Prevent NULL dereference on malloc failure
jfs: Fix uninit-value access of imap allocated in the diMount() function
Zijun Hu (5):
of/irq: Fix device node refcount leakage in API of_irq_parse_one() of/irq: Fix device node refcount leakage in API of_irq_parse_raw() of/irq: Fix device node refcount leakages in of_irq_count() of/irq: Fix device node refcount leakage in API irq_of_parse_and_map() of/irq: Fix device node refcount leakages in of_irq_init()
keenplify (1):
ASoC: amd: Add DMI quirk for ACP6X mic support
zhoumin (1):
ftrace: Add cond_resched() to ftrace_graph_set_hash()
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +2 -0
@@ -3028,6 +3028,8 @@ * max_sec_lba48: Set or clear transfer size limit to 65535 sectors. + * external: Mark port as external (hotplug-capable). + * [no]lpm: Enable or disable link power management. * [no]setxfer: Indicate if transfer speed mode setting
Documentation/devicetree/bindings/arm/qcom,coresight-tpda.yaml +1 -2
@@ -55,8 +55,7 @@ properties: - const: arm,primecell reg: - minItems: 1 - maxItems: 2 + maxItems: 1 clocks: maxItems: 1
Documentation/devicetree/bindings/arm/qcom,coresight-tpdm.yaml +1 -2
@@ -41,8 +41,7 @@ properties: - const: arm,primecell reg: - minItems: 1 - maxItems: 2 + maxItems: 1 qcom,dsb-element-bits: description:
Documentation/devicetree/bindings/media/i2c/st,st-mipid02.yaml +1 -1
@@ -71,7 +71,7 @@ properties: description: Any lane can be inverted or not. minItems: 1 - maxItems: 2 + maxItems: 3 required: - data-lanes
Makefile +4 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 12 -SUBLEVEL = 23 +SUBLEVEL = 24 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -1013,6 +1013,9 @@ ifdef CONFIG_CC_IS_GCC KBUILD_CFLAGS += -fconserve-stack endif +# Ensure compilers do not transform certain loops into calls to wcslen() +KBUILD_CFLAGS += -fno-builtin-wcslen + # change __FILE__ to the relative path from the srctree KBUILD_CPPFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)
arch/arm64/boot/dts/exynos/google/gs101.dtsi +1 -0
@@ -1451,6 +1451,7 @@ pinctrl_gsacore: pinctrl@17a80000 { /* TODO: update once support for this CMU exists */ clocks = <0>; clock-names = "pclk"; + status = "disabled"; }; cmu_top: clock-controller@1e080000 {
arch/arm64/boot/dts/mediatek/mt8173.dtsi +2 -4
@@ -1255,8 +1255,7 @@ dpi0_out: endpoint { }; pwm0: pwm@1401e000 { - compatible = "mediatek,mt8173-disp-pwm", - "mediatek,mt6595-disp-pwm"; + compatible = "mediatek,mt8173-disp-pwm"; reg = <0 0x1401e000 0 0x1000>; #pwm-cells = <2>; clocks = <&mmsys CLK_MM_DISP_PWM026M>,
@@ -1266,8 +1265,7 @@ pwm0: pwm@1401e000 { }; pwm1: pwm@1401f000 { - compatible = "mediatek,mt8173-disp-pwm", - "mediatek,mt6595-disp-pwm"; + compatible = "mediatek,mt8173-disp-pwm"; reg = <0 0x1401f000 0 0x1000>; #pwm-cells = <2>; clocks = <&mmsys CLK_MM_DISP_PWM126M>,
arch/arm64/boot/dts/nvidia/tegra234-p3768-0000+p3767.dtsi +0 -7
@@ -227,13 +227,6 @@ key-power { wakeup-event-action = <EV_ACT_ASSERTED>; wakeup-source; }; - - key-suspend { - label = "Suspend"; - gpios = <&gpio TEGRA234_MAIN_GPIO(G, 2) GPIO_ACTIVE_LOW>; - linux,input-type = <EV_KEY>; - linux,code = <KEY_SLEEP>; - }; }; fan: pwm-fan {
arch/arm64/include/asm/cputype.h +4 -0
@@ -75,6 +75,7 @@#define ARM_CPU_PART_CORTEX_A76 0xD0B#define ARM_CPU_PART_NEOVERSE_N1 0xD0C#define ARM_CPU_PART_CORTEX_A77 0xD0D +#define ARM_CPU_PART_CORTEX_A76AE 0xD0E#define ARM_CPU_PART_NEOVERSE_V1 0xD40#define ARM_CPU_PART_CORTEX_A78 0xD41#define ARM_CPU_PART_CORTEX_A78AE 0xD42
@@ -119,6 +120,7 @@#define QCOM_CPU_PART_KRYO 0x200#define QCOM_CPU_PART_KRYO_2XX_GOLD 0x800#define QCOM_CPU_PART_KRYO_2XX_SILVER 0x801 +#define QCOM_CPU_PART_KRYO_3XX_GOLD 0x802#define QCOM_CPU_PART_KRYO_3XX_SILVER 0x803#define QCOM_CPU_PART_KRYO_4XX_GOLD 0x804#define QCOM_CPU_PART_KRYO_4XX_SILVER 0x805
@@ -158,6 +160,7 @@#define MIDR_CORTEX_A76 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76)#define MIDR_NEOVERSE_N1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_N1)#define MIDR_CORTEX_A77 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A77) +#define MIDR_CORTEX_A76AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A76AE)#define MIDR_NEOVERSE_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_NEOVERSE_V1)#define MIDR_CORTEX_A78 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78)#define MIDR_CORTEX_A78AE MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A78AE)
@@ -195,6 +198,7 @@#define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)#define MIDR_QCOM_KRYO_2XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_GOLD)#define MIDR_QCOM_KRYO_2XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_2XX_SILVER) +#define MIDR_QCOM_KRYO_3XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_GOLD)#define MIDR_QCOM_KRYO_3XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_3XX_SILVER)#define MIDR_QCOM_KRYO_4XX_GOLD MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_GOLD)#define MIDR_QCOM_KRYO_4XX_SILVER MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO_4XX_SILVER)
arch/arm64/include/asm/spectre.h +0 -1
@@ -97,7 +97,6 @@ enum mitigation_state arm64_get_meltdown_state(void);enum mitigation_state arm64_get_spectre_bhb_state (void );bool is_spectre_bhb_affected (const struct arm64_cpu_capabilities *entry,int scope); -u8 spectre_bhb_loop_affected (int scope);void spectre_bhb_enable_mitigation (const struct arm64_cpu_capabilities *__unused);bool try_emulate_el1_ssbs (struct pt_regs *regs,u32 instr);
arch/arm64/include/asm/traps.h +2 -2
@@ -109,10 +109,9 @@ static inline void arm64_mops_reset_regs(struct user_pt_regs *regs, unsigned lonint dstreg =ESR_ELx_MOPS_ISS_DESTREG (esr);int srcreg =ESR_ELx_MOPS_ISS_SRCREG (esr);int sizereg =ESR_ELx_MOPS_ISS_SIZEREG (esr); -unsigned long dst, src, size; +unsigned long dst, size; dst = regs->regs[dstreg]; - src = regs->regs[srcreg]; size = regs->regs[sizereg];/*
@@ -129,6 +128,7 @@ static inline void arm64_mops_reset_regs(struct user_pt_regs *regs, unsigned lon } }else {/* CPY* instruction */ +unsigned long src = regs->regs[srcreg];if (!(option_a ^ wrong_option)) {/* Format is from Option B */ if (regs->pstate &PSR_N_BIT ) {
arch/arm64/kernel/proton-pack.c +118 -100
281 lines not on this page · raw message
arch/arm64/kvm/arm.c +5 -1
@@ -493,7 +493,11 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu)if (err)return err; -return kvm_share_hyp (vcpu, vcpu +1 ); + err =kvm_share_hyp (vcpu, vcpu +1 ); +if (err) +kvm_vgic_vcpu_destroy (vcpu); + +return err; }void kvm_arch_vcpu_postcreate (struct kvm_vcpu *vcpu)
arch/arm64/mm/mmu.c +2 -1
@@ -1360,7 +1360,8 @@ int arch_add_memory(int nid, u64 start, u64 size,__remove_pgd_mapping (swapper_pg_dir,__phys_to_virt (start), size); else { - max_pfn =PFN_UP (start + size); +/* Address of hotplugged memory can be smaller */ + max_pfn =max (max_pfn,PFN_UP (start + size)); max_low_pfn = max_pfn; }
arch/powerpc/kvm/powerpc.c +1 -4
@@ -550,12 +550,9 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)#ifdef CONFIG_PPC_BOOK3S_64 case KVM_CAP_SPAPR_TCE : + fallthrough;case KVM_CAP_SPAPR_TCE_64 : - r =1 ; -break ;case KVM_CAP_SPAPR_TCE_VFIO : - r = !!cpu_has_feature (CPU_FTR_HVMODE ); -break ;case KVM_CAP_PPC_RTAS :case KVM_CAP_PPC_FIXUP_HCALL :case KVM_CAP_PPC_ENABLE_HCALL :
arch/s390/Makefile +1 -1
@@ -15,7 +15,7 @@ KBUILD_CFLAGS_MODULE += -fPIC KBUILD_AFLAGS += -m64 KBUILD_CFLAGS += -m64 KBUILD_CFLAGS += -fPIC -LDFLAGS_vmlinux := -no-pie --emit-relocs --discard-none +LDFLAGS_vmlinux := $(call ld-option,-no-pie) --emit-relocs --discard-none extra_tools := relocs aflags_dwarf := -Wa,-gdwarf-2 KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
arch/s390/kernel/perf_cpum_cf.c +1 -8
@@ -858,18 +858,13 @@ static int cpumf_pmu_event_type(struct perf_event *event)static int cpumf_pmu_event_init (struct perf_event *event) {unsigned int type = event->attr.type; -int err; +int err = -ENOENT ;if (type ==PERF_TYPE_HARDWARE || type ==PERF_TYPE_RAW ) err =__hw_perf_event_init (event, type);else if (event->pmu->type == type)/* Registered as unknown PMU */ err =__hw_perf_event_init (event,cpumf_pmu_event_type (event)); -else -return -ENOENT ; - -if (unlikely (err) && event->destroy) - event->destroy (event);return err; }
@@ -1819,8 +1814,6 @@ static int cfdiag_event_init(struct perf_event *event) event->destroy = hw_perf_event_destroy; err =cfdiag_event_init2 (event); -if (unlikely (err)) - event->destroy (event); out:return err; }
arch/s390/kernel/perf_cpum_sf.c +0 -3
@@ -898,9 +898,6 @@ static int cpumsf_pmu_event_init(struct perf_event *event) event->attr.exclude_idle =0 ; err =__hw_perf_event_init (event); -if (unlikely (err)) -if (event->destroy) - event->destroy (event);return err; }
arch/s390/pci/pci_bus.c +3 -0
@@ -335,6 +335,9 @@ static bool zpci_bus_is_isolated_vf(struct zpci_bus *zbus, struct zpci_dev *zdev {struct pci_dev *pdev; +if (!zdev->vfn) +return false; + pdev =zpci_iov_find_parent_pf (zbus, zdev);if (!pdev)return true;
arch/s390/pci/pci_mmio.c +13 -5
@@ -171,8 +171,12 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned long, mmio_addr, args.address = mmio_addr; args.vma = vma; ret =follow_pfnmap_start (&args); -if (ret) - goto out_unlock_mmap; +if (ret) { +fixup_user_fault (current->mm, mmio_addr,FAULT_FLAG_WRITE ,NULL ); + ret =follow_pfnmap_start (&args); +if (ret) + goto out_unlock_mmap; + } io_addr = (void __iomem *)((args.pfn <<PAGE_SHIFT ) | (mmio_addr & ~PAGE_MASK ));
@@ -305,14 +309,18 @@ SYSCALL_DEFINE3(s390_pci_mmio_read, unsigned long, mmio_addr,if (!(vma->vm_flags & (VM_IO |VM_PFNMAP ))) goto out_unlock_mmap; ret = -EACCES ; -if (!(vma->vm_flags &VM_WRITE )) +if (!(vma->vm_flags &VM_READ )) goto out_unlock_mmap; args.vma = vma; args.address = mmio_addr; ret =follow_pfnmap_start (&args); -if (ret) - goto out_unlock_mmap; +if (ret) { +fixup_user_fault (current->mm, mmio_addr,0 ,NULL ); + ret =follow_pfnmap_start (&args); +if (ret) + goto out_unlock_mmap; + } io_addr = (void __iomem *)((args.pfn <<PAGE_SHIFT ) | (mmio_addr & ~PAGE_MASK ));
arch/sparc/include/asm/pgtable_64.h +0 -2
@@ -936,7 +936,6 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr,static inline void set_ptes (struct mm_struct *mm,unsigned long addr,pte_t *ptep,pte_t pte,unsigned int nr) { -arch_enter_lazy_mmu_mode ();for (;;) {__set_pte_at (mm, addr, ptep, pte,0 );if (--nr ==0 )
@@ -945,7 +944,6 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,pte_val (pte) +=PAGE_SIZE ; addr +=PAGE_SIZE ; } -arch_leave_lazy_mmu_mode (); }#define set_ptes set_ptes
arch/sparc/mm/tlb.c +4 -1
@@ -52,8 +52,10 @@ void flush_tlb_pending(void)void arch_enter_lazy_mmu_mode (void ) { -struct tlb_batch *tb =this_cpu_ptr (&tlb_batch); +struct tlb_batch *tb; +preempt_disable (); + tb =this_cpu_ptr (&tlb_batch); tb->active =1 ; }
@@ -64,6 +66,7 @@ void arch_leave_lazy_mmu_mode(void)if (tb->tlb_nr)flush_tlb_pending (); tb->active =0 ; +preempt_enable (); } static void tlb_batch_add_one(struct mm_struct *mm, unsigned long vaddr,
arch/x86/Kconfig +11 -9
@@ -2434,18 +2434,20 @@ config CC_HAS_NAMED_AS def_bool $(success,echo 'int __seg_fs fs; int __seg_gs gs;' | $(CC) -x c - -S -o /dev/null) depends on CC_IS_GCC +# +# -fsanitize=kernel-address (KASAN) and -fsanitize=thread (KCSAN) +# are incompatible with named address spaces with GCC < 13.3 +# (see GCC PR sanitizer/111736 and also PR sanitizer/115172). +# + config CC_HAS_NAMED_AS_FIXED_SANITIZERS - def_bool CC_IS_GCC && GCC_VERSION >= 130300 + def_bool y + depends on !(KASAN || KCSAN) || GCC_VERSION >= 130300 + depends on !(UBSAN_BOOL && KASAN) || GCC_VERSION >= 140200 config USE_X86_SEG_SUPPORT - def_bool y - depends on CC_HAS_NAMED_AS - # - # -fsanitize=kernel-address (KASAN) and -fsanitize=thread - # (KCSAN) are incompatible with named address spaces with - # GCC < 13.3 - see GCC PR sanitizer/111736. - # - depends on !(KASAN || KCSAN) || CC_HAS_NAMED_AS_FIXED_SANITIZERS + def_bool CC_HAS_NAMED_AS + depends on CC_HAS_NAMED_AS_FIXED_SANITIZERS config CC_HAS_SLS def_bool $(cc-option,-mharden-sls=all)
arch/x86/include/asm/irqflags.h +22 -18
@@ -76,6 +76,28 @@ static __always_inline void native_local_irq_restore(unsigned long flags)#endif +#ifndef CONFIG_PARAVIRT +#ifndef __ASSEMBLY__ +/* +* Used in the idle loop; sti takes one instruction cycle +* to complete: +*/ +static __always_inline void arch_safe_halt(void) +{ +native_safe_halt (); +} + +/* +* Used when interrupts are already enabled or to +* shutdown the processor: +*/ +static __always_inline void halt(void) +{ +native_halt (); +} +#endif /* __ASSEMBLY__ */ +#endif /* CONFIG_PARAVIRT */ +#ifdef CONFIG_PARAVIRT_XXL #include <asm/paravirt.h> #else
@@ -97,24 +119,6 @@ static __always_inline void arch_local_irq_enable(void)native_irq_enable (); } -/* -* Used in the idle loop; sti takes one instruction cycle -* to complete: -*/ -static __always_inline void arch_safe_halt(void) -{ -native_safe_halt (); -} - -/* -* Used when interrupts are already enabled or to -* shutdown the processor: -*/ -static __always_inline void halt(void) -{ -native_halt (); -} -/* * For spinlocks, etc: */
arch/x86/include/asm/paravirt.h +10 -10
@@ -107,6 +107,16 @@ static inline void notify_page_enc_status_changed(unsigned long pfn,PVOP_VCALL3 (mmu.notify_page_enc_status_changed, pfn, npages, enc); } +static __always_inline void arch_safe_halt(void) +{ +PVOP_VCALL0 (irq.safe_halt); +} + +static inline void halt (void ) +{ +PVOP_VCALL0 (irq.halt); +} +#ifdef CONFIG_PARAVIRT_XXL static inline void load_sp0 (unsigned long sp0) {
@@ -170,16 +180,6 @@ static inline void __write_cr4(unsigned long x)PVOP_VCALL1 (cpu.write_cr4, x); } -static __always_inline void arch_safe_halt(void) -{ -PVOP_VCALL0 (irq.safe_halt); -} - -static inline void halt (void ) -{ -PVOP_VCALL0 (irq.halt); -} - extern noinstr void pv_native_wbinvd(void); static __always_inline void wbinvd(void)
arch/x86/include/asm/paravirt_types.h +1 -2
@@ -122,10 +122,9 @@ struct pv_irq_ops {struct paravirt_callee_save save_fl;struct paravirt_callee_save irq_disable;struct paravirt_callee_save irq_enable; - +#endif void (*safe_halt)(void );void (*halt)(void ); -#endif } __no_randomize_layout;struct pv_mmu_ops {
arch/x86/kernel/acpi/boot.c +11 -0
@@ -23,6 +23,8 @@#include <linux/serial_core.h> #include <linux/pgtable.h> +#include <xen/xen.h> +#include <asm/e820/api.h> #include <asm/irqdomain.h> #include <asm/pci_x86.h>
@@ -1730,6 +1732,15 @@ int __init acpi_mps_check(void) {#if defined(CONFIG_X86_LOCAL_APIC ) && !defined(CONFIG_X86_MPPARSE )/* mptable code is not built-in*/ + +/* +* Xen disables ACPI in PV DomU guests but it still emulates APIC and +* supports SMP. Returning early here ensures that APIC is not disabled +* unnecessarily and the guest is not limited to a single vCPU. +*/ +if (xen_pv_domain () && !xen_initial_domain ()) +return 0 ; +if (acpi_disabled || acpi_noirq) {pr_warn ("MPS support code is not built-in, using acpi=off or acpi=noirq or pci=noacpi may have problem\n" );return 1 ;
arch/x86/kernel/cpu/amd.c +1 -1
@@ -627,7 +627,7 @@ static void init_amd_k8(struct cpuinfo_x86 *c)* (model = 0x14) and later actually support it. * (AMD Erratum #110, docId: 25759). */ -if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM )) { +if (c->x86_model <0x14 &&cpu_has (c,X86_FEATURE_LAHF_LM ) && !cpu_has (c,X86_FEATURE_HYPERVISOR )) {clear_cpu_cap (c,X86_FEATURE_LAHF_LM );if (!rdmsrl_amd_safe (0xc001100d , &value)) { value &= ~BIT_64 (32 );
arch/x86/kernel/e820.c +8 -9
@@ -754,22 +754,21 @@ void __init e820__memory_setup_extended(u64 phys_addr, u32 data_len)void __init e820__register_nosave_regions (unsigned long limit_pfn) {int i; -unsigned long pfn =0 ; +u64 last_addr =0 ;for (i =0 ; i < e820_table->nr_entries; i++) {struct e820_entry *entry = &e820_table->entries[i]; -if (pfn <PFN_UP (entry->addr)) -register_nosave_region (pfn,PFN_UP (entry->addr)); - - pfn =PFN_DOWN (entry->addr + entry->size); -if (entry->type !=E820_TYPE_RAM && entry->type !=E820_TYPE_RESERVED_KERN ) -register_nosave_region (PFN_UP (entry->addr), pfn); +continue ; -if (pfn >= limit_pfn) -break ; +if (last_addr < entry->addr) +register_nosave_region (PFN_DOWN (last_addr),PFN_UP (entry->addr)); + + last_addr = entry->addr + entry->size; } + +register_nosave_region (PFN_DOWN (last_addr), limit_pfn); }#ifdef CONFIG_ACPI
arch/x86/kernel/paravirt.c +8 -5
@@ -100,6 +100,11 @@ int paravirt_disable_iospace(void)return request_resource (&ioport_resource, &reserve_ioports); } +static noinstr void pv_native_safe_halt(void) +{ +native_safe_halt (); +} +#ifdef CONFIG_PARAVIRT_XXL static noinstr void pv_native_write_cr2(unsigned long val) {
@@ -121,10 +126,6 @@ noinstr void pv_native_wbinvd(void)native_wbinvd (); } -static noinstr void pv_native_safe_halt(void) -{ -native_safe_halt (); -}#endif struct pv_info pv_info = {
@@ -182,9 +183,11 @@ struct paravirt_patch_template pv_ops = { .irq.save_fl = __PV_IS_CALLEE_SAVE(pv_native_save_fl), .irq.irq_disable = __PV_IS_CALLEE_SAVE(pv_native_irq_disable), .irq.irq_enable = __PV_IS_CALLEE_SAVE(pv_native_irq_enable), +#endif /* CONFIG_PARAVIRT_XXL */ + +/* Irq HLT ops. */ .irq.safe_halt = pv_native_safe_halt, .irq.halt = native_halt, -#endif /* CONFIG_PARAVIRT_XXL */ /* Mmu ops. */ .mmu.flush_tlb_user = native_flush_tlb_local,
arch/x86/kernel/signal_32.c +43 -19
86 lines not on this page · raw message
arch/x86/kvm/cpuid.c +3 -5
@@ -1047,8 +1047,8 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function) }break ;case 0xa : {/* Architectural Performance Monitoring */ -union cpuid10_eax eax; -union cpuid10_edx edx; +union cpuid10_eax eax = { }; +union cpuid10_edx edx = { };if (!enable_pmu || !static_cpu_has (X86_FEATURE_ARCH_PERFMON )) { entry->eax = entry->ebx = entry->ecx = entry->edx =0 ;
@@ -1064,8 +1064,6 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)if (kvm_pmu_cap.version) edx.split.anythread_deprecated =1 ; - edx.split.reserved1 =0 ; - edx.split.reserved2 =0 ; entry->eax = eax.full; entry->ebx = kvm_pmu_cap.events_mask;
@@ -1383,7 +1381,7 @@ static inline int __do_cpuid_func(struct kvm_cpuid_array *array, u32 function)break ;/* AMD Extended Performance Monitoring and Debug */ case 0x80000022 : { -union cpuid_0x80000022_ebx ebx; +union cpuid_0x80000022_ebx ebx = { }; entry->ecx = entry->edx =0 ;if (!enable_pmu || !kvm_cpu_cap_has (X86_FEATURE_PERFMON_V2 )) {
arch/x86/kvm/x86.c +4 -0
@@ -11769,6 +11769,8 @@ int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu,if (kvm_mpx_supported ())kvm_load_guest_fpu (vcpu); +kvm_vcpu_srcu_read_lock (vcpu); + r =kvm_apic_accept_events (vcpu);if (r <0 ) goto out;
@@ -11782,6 +11784,8 @@ int kvm_arch_vcpu_ioctl_get_mpstate(struct kvm_vcpu *vcpu, mp_state->mp_state = vcpu->arch.mp_state; out: +kvm_vcpu_srcu_read_unlock (vcpu); +if (kvm_mpx_supported ())kvm_put_guest_fpu (vcpu);vcpu_put (vcpu);
arch/x86/mm/pat/set_memory.c +3 -3
@@ -2422,7 +2422,7 @@ static int __set_pages_np(struct page *page, int numpages) .pgd = NULL, .numpages = numpages, .mask_set = __pgprot(0), - .mask_clr = __pgprot(_PAGE_PRESENT | _PAGE_RW), + .mask_clr = __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY), .flags = CPA_NO_CHECK_ALIAS };/*
@@ -2501,7 +2501,7 @@ int __init kernel_map_pages_in_pgd(pgd_t *pgd, u64 pfn, unsigned long address, .pgd = pgd, .numpages = numpages, .mask_set = __pgprot(0), - .mask_clr = __pgprot(~page_flags & (_PAGE_NX|_PAGE_RW)), + .mask_clr = __pgprot(~page_flags & (_PAGE_NX|_PAGE_RW|_PAGE_DIRTY)), .flags = CPA_NO_CHECK_ALIAS, };
@@ -2544,7 +2544,7 @@ int __init kernel_unmap_pages_in_pgd(pgd_t *pgd, unsigned long address, .pgd = pgd, .numpages = numpages, .mask_set = __pgprot(0), - .mask_clr = __pgprot(_PAGE_PRESENT | _PAGE_RW), + .mask_clr = __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY), .flags = CPA_NO_CHECK_ALIAS, };
arch/x86/xen/enlighten.c +10 -0
@@ -70,6 +70,9 @@ EXPORT_SYMBOL(xen_start_flags);*/ struct shared_info *HYPERVISOR_shared_info = &xen_dummy_shared_info; +/* Number of pages released from the initial allocation. */ +unsigned long xen_released_pages; +static __ref void xen_get_vendor (void ) {init_cpu_devs ();
@@ -465,6 +468,13 @@ int __init arch_xen_unpopulated_init(struct resource **res)xen_free_unpopulated_pages (1 , &pg); } +/* +* Account for the region being in the physmap but unpopulated. +* The value in xen_released_pages is used by the balloon +* driver to know how much of the physmap is unpopulated and +* set an accurate initial memory target. +*/ + xen_released_pages += xen_extra_mem[i].n_pfns;/* Zero so region is not also added to the balloon driver. */ xen_extra_mem[i].n_pfns =0 ; }
arch/x86/xen/setup.c +0 -3
@@ -37,9 +37,6 @@#define GB (x) ((uint64_t)(x) * 1024 * 1024 * 1024) -/* Number of pages released from the initial allocation. */ -unsigned long xen_released_pages; -/* Memory map would allow PCI passthrough. */ bool xen_pv_pci_possible;
drivers/accel/ivpu/ivpu_debugfs.c +2 -2
@@ -331,7 +331,7 @@ ivpu_force_recovery_fn(struct file *file, const char __user *user_buf, size_t sireturn -EINVAL ; ret =ivpu_rpm_get (vdev); -if (ret) +if (ret <0 )return ret;ivpu_pm_trigger_recovery (vdev,"debugfs" );
@@ -408,7 +408,7 @@ static int dct_active_set(void *data, u64 active_percent)return -EINVAL ; ret =ivpu_rpm_get (vdev); -if (ret) +if (ret <0 )return ret;if (active_percent)
drivers/accel/ivpu/ivpu_ipc.c +2 -1
@@ -299,7 +299,8 @@ ivpu_ipc_send_receive_internal(struct ivpu_device *vdev, struct vpu_jsm_msg *reqstruct ivpu_ipc_consumer cons;int ret; -drm_WARN_ON (&vdev->drm,pm_runtime_status_suspended (vdev->drm.dev)); +drm_WARN_ON (&vdev->drm,pm_runtime_status_suspended (vdev->drm.dev) && +pm_runtime_enabled (vdev->drm.dev));ivpu_ipc_consumer_add (vdev, &cons, channel,NULL );
drivers/accel/ivpu/ivpu_ms.c +24 -0
@@ -4,6 +4,7 @@*/ #include <drm/drm_file.h> +#include <linux/pm_runtime.h> #include "ivpu_drv.h" #include "ivpu_gem.h"
@@ -44,6 +45,10 @@ int ivpu_ms_start_ioctl(struct drm_device *dev, void *data, struct drm_file *fil args->sampling_period_ns < MS_MIN_SAMPLE_PERIOD_NS)return -EINVAL ; + ret =ivpu_rpm_get (vdev); +if (ret <0 ) +return ret; +mutex_lock (&file_priv->ms_lock);if (get_instance_by_mask (file_priv, args->metric_group_mask)) {
@@ -96,6 +101,8 @@ int ivpu_ms_start_ioctl(struct drm_device *dev, void *data, struct drm_file *filkfree (ms); unlock:mutex_unlock (&file_priv->ms_lock); + +ivpu_rpm_put (vdev);return ret; }
@@ -160,6 +167,10 @@ int ivpu_ms_get_data_ioctl(struct drm_device *dev, void *data, struct drm_file *if (!args->metric_group_mask)return -EINVAL ; + ret =ivpu_rpm_get (vdev); +if (ret <0 ) +return ret; +mutex_lock (&file_priv->ms_lock); ms =get_instance_by_mask (file_priv, args->metric_group_mask);
@@ -187,6 +198,7 @@ int ivpu_ms_get_data_ioctl(struct drm_device *dev, void *data, struct drm_file * unlock:mutex_unlock (&file_priv->ms_lock); +ivpu_rpm_put (vdev);return ret; }
@@ -204,11 +216,17 @@ int ivpu_ms_stop_ioctl(struct drm_device *dev, void *data, struct drm_file *file {struct ivpu_file_priv *file_priv = file->driver_priv;struct drm_ivpu_metric_streamer_stop *args = data; +struct ivpu_device *vdev = file_priv->vdev;struct ivpu_ms_instance *ms; +int ret;if (!args->metric_group_mask)return -EINVAL ; + ret =ivpu_rpm_get (vdev); +if (ret <0 ) +return ret; +mutex_lock (&file_priv->ms_lock); ms =get_instance_by_mask (file_priv, args->metric_group_mask);
@@ -217,6 +235,7 @@ int ivpu_ms_stop_ioctl(struct drm_device *dev, void *data, struct drm_file *filemutex_unlock (&file_priv->ms_lock); +ivpu_rpm_put (vdev);return ms ?0 : -EINVAL ; }
@@ -281,6 +300,9 @@ int ivpu_ms_get_info_ioctl(struct drm_device *dev, void *data, struct drm_file *void ivpu_ms_cleanup (struct ivpu_file_priv *file_priv) {struct ivpu_ms_instance *ms, *tmp; +struct ivpu_device *vdev = file_priv->vdev; + +pm_runtime_get_sync (vdev->drm.dev);mutex_lock (&file_priv->ms_lock);
@@ -293,6 +315,8 @@ void ivpu_ms_cleanup(struct ivpu_file_priv *file_priv)free_instance (file_priv, ms);mutex_unlock (&file_priv->ms_lock); + +pm_runtime_put_autosuspend (vdev->drm.dev); }void ivpu_ms_cleanup_all (struct ivpu_device *vdev)
drivers/acpi/platform_profile.c +10 -10
@@ -22,8 +22,8 @@ static const char * const profile_names[] = { };static_assert (ARRAY_SIZE (profile_names) ==PLATFORM_PROFILE_LAST ); -static ssize_t platform_profile_choices_show (struct device *dev, -struct device_attribute *attr, +static ssize_t platform_profile_choices_show (struct kobject *kobj, +struct kobj_attribute *attr,char *buf) {int len =0 ;
@@ -49,8 +49,8 @@ static ssize_t platform_profile_choices_show(struct device *dev,return len; } -static ssize_t platform_profile_show (struct device *dev, -struct device_attribute *attr, +static ssize_t platform_profile_show (struct kobject *kobj, +struct kobj_attribute *attr,char *buf) {enum platform_profile_option profile =PLATFORM_PROFILE_BALANCED ;
@@ -77,8 +77,8 @@ static ssize_t platform_profile_show(struct device *dev,return sysfs_emit (buf,"%s\n" , profile_names[profile]); } -static ssize_t platform_profile_store (struct device *dev, -struct device_attribute *attr, +static ssize_t platform_profile_store (struct kobject *kobj, +struct kobj_attribute *attr,const char *buf,size_t count) {int err, i;
@@ -115,12 +115,12 @@ static ssize_t platform_profile_store(struct device *dev,return count; } -static DEVICE_ATTR_RO (platform_profile_choices); -static DEVICE_ATTR_RW (platform_profile); +static struct kobj_attribute attr_platform_profile_choices =__ATTR_RO (platform_profile_choices); +static struct kobj_attribute attr_platform_profile =__ATTR_RW (platform_profile);static struct attribute *platform_profile_attrs[] = { - &dev_attr_platform_profile_choices.attr, - &dev_attr_platform_profile.attr, + &attr_platform_profile_choices.attr, + &attr_platform_profile.attr,NULL };
drivers/ata/ahci.c +11 -0
@@ -63,6 +63,7 @@ enum board_ids { board_ahci_pcs_quirk_no_devslp, board_ahci_pcs_quirk_no_sntf, board_ahci_yes_fbs, + board_ahci_yes_fbs_atapi_dma,/* board IDs for specific chipsets in alphabetical order */ board_ahci_al,
@@ -188,6 +189,14 @@ static const struct ata_port_info ahci_port_info[] = { .udma_mask = ATA_UDMA6, .port_ops = &ahci_ops, }, + [board_ahci_yes_fbs_atapi_dma] = { +AHCI_HFLAGS (AHCI_HFLAG_YES_FBS | + AHCI_HFLAG_ATAPI_DMA_QUIRK), + .flags = AHCI_FLAG_COMMON, + .pio_mask = ATA_PIO4, + .udma_mask = ATA_UDMA6, + .port_ops = &ahci_ops, + },/* by chipsets */ [board_ahci_al] = { AHCI_HFLAGS (AHCI_HFLAG_NO_PMP | AHCI_HFLAG_NO_MSI),
@@ -589,6 +598,8 @@ static const struct pci_device_id ahci_pci_tbl[] = { .driver_data = board_ahci_yes_fbs }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x91a3), .driver_data = board_ahci_yes_fbs }, + { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9215), + .driver_data = board_ahci_yes_fbs_atapi_dma }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9230), .driver_data = board_ahci_yes_fbs }, { PCI_DEVICE(PCI_VENDOR_ID_MARVELL_EXT, 0x9235),
drivers/ata/ahci.h +1 -0
@@ -246,6 +246,7 @@ enum {AHCI_HFLAG_NO_SXS =BIT (26 ),/* SXS not supported */ AHCI_HFLAG_43BIT_ONLY =BIT (27 ),/* 43bit DMA addr limit */ AHCI_HFLAG_INTEL_PCS_QUIRK =BIT (28 ),/* apply Intel PCS quirk */ + AHCI_HFLAG_ATAPI_DMA_QUIRK = BIT(29), /* force ATAPI to use DMA *//* ap->flags bits */
drivers/ata/libahci.c +4 -0
@@ -1321,6 +1321,10 @@ static void ahci_dev_config(struct ata_device *dev) {struct ahci_host_priv *hpriv = dev->link->ap->host->private_data; +if ((dev->class ==ATA_DEV_ATAPI ) && + (hpriv->flags &AHCI_HFLAG_ATAPI_DMA_QUIRK )) + dev->quirks |=ATA_QUIRK_ATAPI_MOD16_DMA ; +if (hpriv->flags &AHCI_HFLAG_SECT255 ) { dev->max_sectors =255 ; ata_dev_info(dev,
drivers/ata/libata-core.c +38 -0
@@ -88,6 +88,7 @@ struct ata_force_param {unsigned int xfer_mask;unsigned int quirk_on;unsigned int quirk_off; +unsigned int pflags_on;u16 lflags_on;u16 lflags_off; };
@@ -331,6 +332,35 @@ void ata_force_cbl(struct ata_port *ap) } } +/** +* ata_force_pflags - force port flags according to libata.force +* @ap: ATA port of interest +* +* Force port flags according to libata.force and whine about it. +* +* LOCKING: +* EH context. +*/ +static void ata_force_pflags (struct ata_port *ap) +{ +int i; + +for (i = ata_force_tbl_size -1 ; i >=0 ; i--) { +const struct ata_force_ent *fe = &ata_force_tbl[i]; + +if (fe->port !=-1 && fe->port != ap->print_id) +continue ; + +/* let pflags stack */ +if (fe->param.pflags_on) { + ap->pflags |= fe->param.pflags_on; +ata_port_notice (ap, +"FORCE: port flag 0x%x forced -> 0x%x\n" , + fe->param.pflags_on, ap->pflags); + } + } +} +/** * ata_force_link_limits - force link limits according to libata.force * @link: ATA link of interest
@@ -486,6 +516,7 @@ static void ata_force_quirks(struct ata_device *dev) } }#else +static inline void ata_force_pflags (struct ata_port *ap) { }static inline void ata_force_link_limits (struct ata_link *link) { }static inline void ata_force_xfermask (struct ata_device *dev) { }static inline void ata_force_quirks (struct ata_device *dev) { }
@@ -5460,6 +5491,8 @@ struct ata_port *ata_port_alloc(struct ata_host *host)#endif ata_sff_port_init (ap); +ata_force_pflags (ap); +return ap; }EXPORT_SYMBOL_GPL (ata_port_alloc);
@@ -6272,6 +6305,9 @@ EXPORT_SYMBOL_GPL(ata_platform_remove_one); { "no" #name, .lflags_on = (flags) }, \ { #name, .lflags_off = (flags) } +#define force_pflag_on (name, flags) \ + { #name, .pflags_on = (flags) } +#define force_quirk_on (name, flag) \ { #name, .quirk_on = (flag) }
@@ -6331,6 +6367,8 @@ static const struct ata_force_param force_tbl[] __initconst = {force_lflag_on (rstonce,ATA_LFLAG_RST_ONCE ),force_lflag_onoff (dbdelay,ATA_LFLAG_NO_DEBOUNCE_DELAY ), +force_pflag_on (external,ATA_PFLAG_EXTERNAL ), +force_quirk_onoff (ncq,ATA_QUIRK_NONCQ ),force_quirk_onoff (ncqtrim,ATA_QUIRK_NO_NCQ_TRIM ), force_quirk_onoff(ncqati, ATA_QUIRK_NO_NCQ_ON_ATI),
drivers/ata/libata-eh.c +9 -2
@@ -1542,8 +1542,15 @@ unsigned int atapi_eh_request_sense(struct ata_device *dev, tf.flags |=ATA_TFLAG_ISADDR |ATA_TFLAG_DEVICE ; tf.command =ATA_CMD_PACKET ; -/* is it pointless to prefer PIO for "safety reasons"? */ -if (ap->flags &ATA_FLAG_PIO_DMA ) { +/* +* Do not use DMA if the connected device only supports PIO, even if the +* port prefers PIO commands via DMA. +* +* Ideally, we should call atapi_check_dma() to check if it is safe for +* the LLD to use DMA for REQUEST_SENSE, but we don't have a qc. +* Since we can't check the command, perhaps we should only use pio? +*/ +if ((ap->flags &ATA_FLAG_PIO_DMA ) && !(dev->flags &ATA_DFLAG_PIO )) { tf.protocol =ATAPI_PROT_DMA ; tf.feature |=ATAPI_PKT_DMA ; }else {
drivers/ata/pata_pxa.c +6 -0
@@ -223,10 +223,16 @@ static int pxa_ata_probe(struct platform_device *pdev) ap->ioaddr.cmd_addr =devm_ioremap (&pdev->dev, cmd_res->start,resource_size (cmd_res)); +if (!ap->ioaddr.cmd_addr) +return -ENOMEM ; ap->ioaddr.ctl_addr =devm_ioremap (&pdev->dev, ctl_res->start,resource_size (ctl_res)); +if (!ap->ioaddr.ctl_addr) +return -ENOMEM ; ap->ioaddr.bmdma_addr =devm_ioremap (&pdev->dev, dma_res->start,resource_size (dma_res)); +if (!ap->ioaddr.bmdma_addr) +return -ENOMEM ;/* * Adjust register offsets
drivers/ata/sata_sx4.c +10 -3
@@ -1117,9 +1117,14 @@ static int pdc20621_prog_dimm0(struct ata_host *host) mmio +=PDC_CHIP0_OFS ;for (i =0 ; i <ARRAY_SIZE (pdc_i2c_read_data); i++) -pdc20621_i2c_read (host,PDC_DIMM0_SPD_DEV_ADDRESS , - pdc_i2c_read_data[i].reg, - &spd0[pdc_i2c_read_data[i].ofs]); +if (!pdc20621_i2c_read (host,PDC_DIMM0_SPD_DEV_ADDRESS , + pdc_i2c_read_data[i].reg, + &spd0[pdc_i2c_read_data[i].ofs])) { +dev_err (host->dev, +"Failed in i2c read at index %d: device=%#x, reg=%#x\n" , + i,PDC_DIMM0_SPD_DEV_ADDRESS , pdc_i2c_read_data[i].reg); +return -EIO ; + } data |= (spd0[4 ] -8 ) | ((spd0[21 ] !=0 ) <<3 ) | ((spd0[3 ]-11 ) <<4 ); data |= ((spd0[17] / 4) << 6) | ((spd0[5] / 2) << 7) |
@@ -1284,6 +1289,8 @@ static unsigned int pdc20621_dimm_init(struct ata_host *host)/* Programming DIMM0 Module Control Register (index_CID0:80h) */ size =pdc20621_prog_dimm0 (host); +if (size <0 ) +return size;dev_dbg (host->dev,"Local DIMM Size = %dMB\n" , size);/* Programming DIMM Module Global Control Register (index_CID0:88h) */
drivers/auxdisplay/hd44780.c +2 -2
@@ -313,7 +313,7 @@ static int hd44780_probe(struct platform_device *pdev) fail3:kfree (hd); fail2: -kfree (lcd); +charlcd_free (lcd); fail1:kfree (hdc);return ret;
@@ -328,7 +328,7 @@ static void hd44780_remove(struct platform_device *pdev)kfree (hdc->hd44780);kfree (lcd->drvdata); -kfree (lcd); +charlcd_free (lcd); }static const struct of_device_id hd44780_of_match[] = {
drivers/base/devres.c +7 -0
@@ -687,6 +687,13 @@ int devres_release_group(struct device *dev, void *id)spin_unlock_irqrestore (&dev->devres_lock, flags);release_nodes (dev, &todo); + }else if (list_empty (&dev->devres_head)) { +/* +* dev is probably dying via devres_release_all(): groups +* have already been removed and are on the process of +* being released - don't touch and don't warn. +*/ +spin_unlock_irqrestore (&dev->devres_lock, flags); }else {WARN_ON (1 );spin_unlock_irqrestore (&dev->devres_lock, flags);
drivers/block/ublk_drv.c +67 -23
160 lines not on this page · raw message
drivers/bluetooth/btintel_pcie.c +1 -0
@@ -36,6 +36,7 @@/* Intel Bluetooth PCIe device id table */ static const struct pci_device_id btintel_pcie_table[] = { {BTINTEL_PCI_DEVICE (0xA876 ,PCI_ANY_ID ) }, + {BTINTEL_PCI_DEVICE (0xE476 ,PCI_ANY_ID ) }, {0 } };MODULE_DEVICE_TABLE (pci, btintel_pcie_table);
drivers/bluetooth/btqca.c +6 -7
@@ -785,6 +785,7 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate, const char *firmware_name) {struct qca_fw_config config = {}; +const char *variant ="" ;int err;u8 rom_ver =0 ;u32 soc_ver;
@@ -879,13 +880,11 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudrate,case QCA_WCN3990 :case QCA_WCN3991 :case QCA_WCN3998 : -if (le32_to_cpu (ver.soc_id) ==QCA_WCN3991_SOC_ID ) { -snprintf (config.fwname,sizeof (config.fwname), -"qca/crnv%02xu.bin" , rom_ver); - }else { -snprintf (config.fwname,sizeof (config.fwname), -"qca/crnv%02x.bin" , rom_ver); - } +if (le32_to_cpu (ver.soc_id) ==QCA_WCN3991_SOC_ID ) + variant ="u" ; + +snprintf (config.fwname,sizeof (config.fwname), +"qca/crnv%02x%s.bin" , rom_ver, variant);break ;case QCA_WCN3988 : snprintf(config.fwname, sizeof(config.fwname),
drivers/bluetooth/btusb.c +4 -0
@@ -626,6 +626,10 @@ static const struct usb_device_id quirks_table[] = { BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x0489, 0xe102), .driver_info = BTUSB_MEDIATEK | BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x0489, 0xe152), .driver_info = BTUSB_MEDIATEK | + BTUSB_WIDEBAND_SPEECH }, + { USB_DEVICE(0x0489, 0xe153), .driver_info = BTUSB_MEDIATEK | + BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x04ca, 0x3804), .driver_info = BTUSB_MEDIATEK | BTUSB_WIDEBAND_SPEECH }, { USB_DEVICE(0x04ca, 0x38e4), .driver_info = BTUSB_MEDIATEK |
drivers/bluetooth/hci_ldisc.c +14 -5
@@ -102,7 +102,8 @@ static inline struct sk_buff *hci_uart_dequeue(struct hci_uart *hu)if (!skb) {percpu_down_read (&hu->proto_lock); -if (test_bit (HCI_UART_PROTO_READY , &hu->flags)) +if (test_bit (HCI_UART_PROTO_READY , &hu->flags) || +test_bit (HCI_UART_PROTO_INIT , &hu->flags)) skb = hu->proto->dequeue (hu);percpu_up_read (&hu->proto_lock);
@@ -124,7 +125,8 @@ int hci_uart_tx_wakeup(struct hci_uart *hu)if (!percpu_down_read_trylock (&hu->proto_lock))return 0 ; -if (!test_bit (HCI_UART_PROTO_READY , &hu->flags)) +if (!test_bit (HCI_UART_PROTO_READY , &hu->flags) && + !test_bit (HCI_UART_PROTO_INIT , &hu->flags)) goto no_schedule;set_bit (HCI_UART_TX_WAKEUP , &hu->tx_state);
@@ -278,7 +280,8 @@ static int hci_uart_send_frame(struct hci_dev *hdev, struct sk_buff *skb)percpu_down_read (&hu->proto_lock); -if (!test_bit (HCI_UART_PROTO_READY , &hu->flags)) { +if (!test_bit (HCI_UART_PROTO_READY , &hu->flags) && + !test_bit (HCI_UART_PROTO_INIT , &hu->flags)) {percpu_up_read (&hu->proto_lock);return -EUNATCH ; }
@@ -585,7 +588,8 @@ static void hci_uart_tty_wakeup(struct tty_struct *tty)if (tty != hu->tty)return ; -if (test_bit (HCI_UART_PROTO_READY , &hu->flags)) +if (test_bit (HCI_UART_PROTO_READY , &hu->flags) || +test_bit (HCI_UART_PROTO_INIT , &hu->flags))hci_uart_tx_wakeup (hu); }
@@ -611,7 +615,8 @@ static void hci_uart_tty_receive(struct tty_struct *tty, const u8 *data,percpu_down_read (&hu->proto_lock); -if (!test_bit (HCI_UART_PROTO_READY , &hu->flags)) { +if (!test_bit (HCI_UART_PROTO_READY , &hu->flags) && + !test_bit (HCI_UART_PROTO_INIT , &hu->flags)) {percpu_up_read (&hu->proto_lock);return ; }
@@ -707,12 +712,16 @@ static int hci_uart_set_proto(struct hci_uart *hu, int id) hu->proto = p; +set_bit (HCI_UART_PROTO_INIT , &hu->flags); + err =hci_uart_register_dev (hu);if (err) {return err; }set_bit (HCI_UART_PROTO_READY , &hu->flags); +clear_bit (HCI_UART_PROTO_INIT , &hu->flags); +return 0 ; }
drivers/bluetooth/hci_qca.c +1 -1
@@ -2353,6 +2353,7 @@ static int qca_serdev_probe(struct serdev_device *serdev)switch (qcadev->btsoc_type) {case QCA_WCN6855 :case QCA_WCN7850 : +case QCA_WCN6750 :if (!device_property_present (&serdev->dev,"enable-gpios" )) {/* * Backward compatibility with old DT sources. If the
@@ -2372,7 +2373,6 @@ static int qca_serdev_probe(struct serdev_device *serdev)case QCA_WCN3990 :case QCA_WCN3991 :case QCA_WCN3998 : -case QCA_WCN6750 : qcadev->bt_power->dev = &serdev->dev; err =qca_init_regulators (qcadev->bt_power, data->vregs, data->num_vregs);
drivers/bluetooth/hci_uart.h +1 -0
@@ -90,6 +90,7 @@ struct hci_uart {#define HCI_UART_REGISTERED 1#define HCI_UART_PROTO_READY 2#define HCI_UART_NO_SUSPEND_NOTIFIER 3 +#define HCI_UART_PROTO_INIT 4/* TX states */ #define HCI_UART_SENDING 1
drivers/bus/mhi/host/main.c +10 -6
@@ -1207,11 +1207,16 @@ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,struct mhi_ring_element *mhi_tre;struct mhi_buf_info *buf_info;int eot, eob, chain, bei; -int ret; +int ret =0 ;/* Protect accesses for reading and incrementing WP */ write_lock_bh (&mhi_chan->lock); +if (mhi_chan->ch_state !=MHI_CH_STATE_ENABLED ) { + ret = -ENODEV ; + goto out; + } + buf_ring = &mhi_chan->buf_ring; tre_ring = &mhi_chan->tre_ring;
@@ -1229,10 +1234,8 @@ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,if (!info->pre_mapped) { ret = mhi_cntrl->map_single (mhi_cntrl, buf_info); -if (ret) { -write_unlock_bh (&mhi_chan->lock); -return ret; - } +if (ret) + goto out; } eob = !!(flags &MHI_EOB );
@@ -1250,9 +1253,10 @@ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,mhi_add_ring_element (mhi_cntrl, tre_ring);mhi_add_ring_element (mhi_cntrl, buf_ring); +out:write_unlock_bh (&mhi_chan->lock); -return 0 ; +return ret; } int mhi_queue_buf(struct mhi_device *mhi_dev, enum dma_data_direction dir,
drivers/char/tpm/tpm-chip.c +6 -0
@@ -168,6 +168,11 @@ int tpm_try_get_ops(struct tpm_chip *chip) goto out_ops;mutex_lock (&chip->tpm_mutex); + +/* tmp_chip_start may issue IO that is denied while suspended */ +if (chip->flags &TPM_CHIP_FLAG_SUSPENDED ) + goto out_lock; + rc =tpm_chip_start (chip);if (rc) goto out_lock;
@@ -300,6 +305,7 @@ int tpm_class_shutdown(struct device *dev)down_write (&chip->ops_sem);if (chip->flags &TPM_CHIP_FLAG_TPM2 ) {if (!tpm_chip_start (chip)) { +tpm2_end_auth_session (chip);tpm2_shutdown (chip,TPM2_SU_CLEAR );tpm_chip_stop (chip); }
drivers/char/tpm/tpm-interface.c +0 -7
@@ -445,18 +445,11 @@ int tpm_get_random(struct tpm_chip *chip, u8 *out, size_t max)if (!chip)return -ENODEV ; -/* Give back zero bytes, as TPM chip has not yet fully resumed: */ -if (chip->flags &TPM_CHIP_FLAG_SUSPENDED ) { - rc =0 ; - goto out; - } -if (chip->flags &TPM_CHIP_FLAG_TPM2 ) rc =tpm2_get_random (chip, out, max);else rc =tpm1_get_random (chip, out, max); -out:tpm_put_ops (chip);return rc; }
drivers/char/tpm/tpm_tis_core.c +15 -5
@@ -114,11 +114,10 @@ static int wait_for_tpm_stat(struct tpm_chip *chip, u8 mask,return 0 ;/* process status changes without irq support */ do { +usleep_range (priv->timeout_min, priv->timeout_max); status = chip->ops->status (chip);if ((status & mask) == mask)return 0 ; -usleep_range (priv->timeout_min, - priv->timeout_max); }while (time_before (jiffies, stop));return -ETIME ; }
@@ -464,7 +463,10 @@ static int tpm_tis_send_data(struct tpm_chip *chip, const u8 *buf, size_t len)if (wait_for_tpm_stat (chip,TPM_STS_VALID , chip->timeout_c, &priv->int_queue, false) <0 ) { - rc = -ETIME ; +if (test_bit (TPM_TIS_STATUS_VALID_RETRY , &priv->flags)) + rc = -EAGAIN ; +else + rc = -ETIME ; goto out_err; } status =tpm_tis_status (chip);
@@ -481,7 +483,10 @@ static int tpm_tis_send_data(struct tpm_chip *chip, const u8 *buf, size_t len)if (wait_for_tpm_stat (chip,TPM_STS_VALID , chip->timeout_c, &priv->int_queue, false) <0 ) { - rc = -ETIME ; +if (test_bit (TPM_TIS_STATUS_VALID_RETRY , &priv->flags)) + rc = -EAGAIN ; +else + rc = -ETIME ; goto out_err; } status =tpm_tis_status (chip);
@@ -546,9 +551,11 @@ static int tpm_tis_send_main(struct tpm_chip *chip, const u8 *buf, size_t len)if (rc >=0 )/* Data transfer done successfully */ break ; -else if (rc != -EIO ) +else if (rc != -EAGAIN && rc != -EIO )/* Data transfer failed, not recoverable */ return rc; + +usleep_range (priv->timeout_min, priv->timeout_max); }/* go and do it */
@@ -1144,6 +1151,9 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq, priv->timeout_max =TIS_TIMEOUT_MAX_ATML ; } +if (priv->manufacturer_id ==TPM_VID_IFX ) +set_bit (TPM_TIS_STATUS_VALID_RETRY , &priv->flags); +if (is_bsw ()) { priv->ilb_base_addr =ioremap (INTEL_LEGACY_BLK_BASE_ADDR ,ILB_REMAP_SIZE );
drivers/char/tpm/tpm_tis_core.h +1 -0
@@ -89,6 +89,7 @@ enum tpm_tis_flags {TPM_TIS_INVALID_STATUS =1 ,TPM_TIS_DEFAULT_CANCELLATION =2 ,TPM_TIS_IRQ_TESTED =3 , + TPM_TIS_STATUS_VALID_RETRY = 4, }; struct tpm_tis_data {
drivers/clk/qcom/clk-branch.c +2 -2
@@ -28,7 +28,7 @@ static bool clk_branch_in_hwcg_mode(const struct clk_branch *br)static bool clk_branch_check_halt (const struct clk_branch *br,bool enabling) { -bool invert = (br->halt_check ==BRANCH_HALT_ENABLE ); +bool invert = (br->halt_check &BRANCH_HALT_ENABLE );u32 val;regmap_read (br->clkr.regmap, br->halt_reg, &val);
@@ -44,7 +44,7 @@ static bool clk_branch2_check_halt(const struct clk_branch *br, bool enabling) {u32 val;u32 mask; -bool invert = (br->halt_check ==BRANCH_HALT_ENABLE ); +bool invert = (br->halt_check &BRANCH_HALT_ENABLE ); mask =CBCR_NOC_FSM_STATUS ; mask |=CBCR_CLK_OFF ;
drivers/clk/qcom/gdsc.c +38 -23
108 lines not on this page · raw message
drivers/clk/renesas/r9a07g043-cpg.c +7 -0
@@ -89,7 +89,9 @@ static const struct clk_div_table dtable_1_32[] = {/* Mux clock tables */ static const char *const sel_pll3_3[] = {".pll3_533" ,".pll3_400" }; +#ifdef CONFIG_ARM64 static const char *const sel_pll6_2[] = {".pll6_250" ,".pll5_250" }; +#endif static const char *const sel_sdhi[] = {".clk_533" ,".clk_400" ,".clk_266" };static const u32 mtable_sdhi[] = {1 ,2 ,3 };
@@ -137,7 +139,12 @@ static const struct cpg_core_clk r9a07g043_core_clks[] __initconst = {DEF_DIV ("P2" ,R9A07G043_CLK_P2 ,CLK_PLL3_DIV2_4_2 ,DIVPL3A , dtable_1_32),DEF_FIXED ("M0" ,R9A07G043_CLK_M0 ,CLK_PLL3_DIV2_4 ,1 ,1 ),DEF_FIXED ("ZT" ,R9A07G043_CLK_ZT ,CLK_PLL3_DIV2_4_2 ,1 ,1 ), +#ifdef CONFIG_ARM64DEF_MUX ("HP" ,R9A07G043_CLK_HP ,SEL_PLL6_2 , sel_pll6_2), +#endif +#ifdef CONFIG_RISCV +DEF_FIXED ("HP" ,R9A07G043_CLK_HP ,CLK_PLL6_250 ,1 ,1 ), +#endifDEF_FIXED ("SPI0" ,R9A07G043_CLK_SPI0 ,CLK_DIV_PLL3_C ,1 ,2 ),DEF_FIXED ("SPI1" ,R9A07G043_CLK_SPI1 ,CLK_DIV_PLL3_C ,1 ,4 ), DEF_SD_MUX("SD0", R9A07G043_CLK_SD0, SEL_SDHI0, SEL_SDHI0_STS, sel_sdhi,
drivers/clocksource/timer-stm32-lp.c +1 -3
@@ -168,9 +168,7 @@ static int stm32_clkevent_lp_probe(struct platform_device *pdev) }if (of_property_read_bool (pdev->dev.parent->of_node,"wakeup-source" )) { - ret =device_init_wakeup (&pdev->dev, true); -if (ret) - goto out_clk_disable; +device_set_wakeup_capable (&pdev->dev, true); ret =dev_pm_set_wake_irq (&pdev->dev, irq);if (ret)
drivers/crypto/ccp/sp-pci.c +9 -6
@@ -189,14 +189,17 @@ static bool sp_pci_is_master(struct sp_device *sp) pdev_new =to_pci_dev (dev_new); pdev_cur =to_pci_dev (dev_cur); -if (pdev_new->bus->number < pdev_cur->bus->number) -return true; +if (pci_domain_nr (pdev_new->bus) !=pci_domain_nr (pdev_cur->bus)) +return pci_domain_nr (pdev_new->bus) <pci_domain_nr (pdev_cur->bus); -if (PCI_SLOT (pdev_new->devfn) <PCI_SLOT (pdev_cur->devfn)) -return true; +if (pdev_new->bus->number != pdev_cur->bus->number) +return pdev_new->bus->number < pdev_cur->bus->number; -if (PCI_FUNC (pdev_new->devfn) <PCI_FUNC (pdev_cur->devfn)) -return true; +if (PCI_SLOT (pdev_new->devfn) !=PCI_SLOT (pdev_cur->devfn)) +return PCI_SLOT (pdev_new->devfn) <PCI_SLOT (pdev_cur->devfn); + +if (PCI_FUNC (pdev_new->devfn) !=PCI_FUNC (pdev_cur->devfn)) +return PCI_FUNC (pdev_new->devfn) <PCI_FUNC (pdev_cur->devfn);return false; }
drivers/gpio/gpio-tegra186.c +14 -13
@@ -823,6 +823,7 @@ static int tegra186_gpio_probe(struct platform_device *pdev)struct gpio_irq_chip *irq;struct tegra_gpio *gpio;struct device_node *np; +struct resource *res;char **names;int err;
@@ -842,19 +843,19 @@ static int tegra186_gpio_probe(struct platform_device *pdev) gpio->num_banks++;/* get register apertures */ - gpio->secure =devm_platform_ioremap_resource_byname (pdev,"security" ); -if (IS_ERR (gpio->secure)) { - gpio->secure =devm_platform_ioremap_resource (pdev,0 ); -if (IS_ERR (gpio->secure)) -return PTR_ERR (gpio->secure); - } - - gpio->base =devm_platform_ioremap_resource_byname (pdev,"gpio" ); -if (IS_ERR (gpio->base)) { - gpio->base =devm_platform_ioremap_resource (pdev,1 ); -if (IS_ERR (gpio->base)) -return PTR_ERR (gpio->base); - } + res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"security" ); +if (!res) + res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); + gpio->secure =devm_ioremap_resource (&pdev->dev, res); +if (IS_ERR (gpio->secure)) +return PTR_ERR (gpio->secure); + + res =platform_get_resource_byname (pdev,IORESOURCE_MEM ,"gpio" ); +if (!res) + res =platform_get_resource (pdev,IORESOURCE_MEM ,1 ); + gpio->base =devm_ioremap_resource (&pdev->dev, res); +if (IS_ERR (gpio->base)) +return PTR_ERR (gpio->base); err =platform_irq_count (pdev);if (err <0 )
drivers/gpio/gpio-zynq.c +1 -0
@@ -1011,6 +1011,7 @@ static void zynq_gpio_remove(struct platform_device *pdev) ret =pm_runtime_get_sync (&pdev->dev);if (ret <0 )dev_warn (&pdev->dev,"pm_runtime_get_sync() Failed\n" ); +device_init_wakeup (&pdev->dev,0 );gpiochip_remove (&gpio->chip);device_set_wakeup_capable (&pdev->dev,0 );pm_runtime_disable (&pdev->dev);
drivers/gpio/gpiolib-of.c +2 -0
@@ -193,6 +193,8 @@ static void of_gpio_try_fixup_polarity(const struct device_node *np, */ { "himax,hx8357", "gpios-reset", false }, { "himax,hx8369", "gpios-reset", false }, +#endif +#if IS_ENABLED(CONFIG_MTD_NAND_JZ4780) /* * The rb-gpios semantics was undocumented and qi,lb60 (along with * the ingenic driver) got it wrong. The active state encodes the
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +9 -1
@@ -6575,18 +6575,26 @@ struct dma_fence *amdgpu_device_switch_gang(struct amdgpu_device *adev, {struct dma_fence *old =NULL ; +dma_fence_get (gang);do {dma_fence_put (old); old =amdgpu_device_get_gang (adev);if (old == gang)break ; -if (!dma_fence_is_signaled (old)) +if (!dma_fence_is_signaled (old)) { +dma_fence_put (gang);return old; + } }while (cmpxchg ((struct dma_fence __force **)&adev->gang_submit, old, gang) != old); +/* +* Drop it once for the exchanged reference in adev and once for the +* thread local reference acquired in amdgpu_device_get_gang(). +*/ +dma_fence_put (old);dma_fence_put (old);return NULL ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +0 -4
@@ -2434,8 +2434,6 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,spin_lock_init (&vm->status_lock);INIT_LIST_HEAD (&vm->freed);INIT_LIST_HEAD (&vm->done); -INIT_LIST_HEAD (&vm->pt_freed); -INIT_WORK (&vm->pt_free_work, amdgpu_vm_pt_free_work);INIT_KFIFO (vm->faults); r =amdgpu_vm_init_entities (adev, vm);
@@ -2607,8 +2605,6 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)amdgpu_amdkfd_gpuvm_destroy_cb (adev, vm); -flush_work (&vm->pt_free_work); - root =amdgpu_bo_ref (vm->root.bo);amdgpu_bo_reserve (root, true);amdgpu_vm_put_task_info (vm->task_info);
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +0 -4
@@ -360,10 +360,6 @@ struct amdgpu_vm {/* BOs which are invalidated, has been updated in the PTs */ struct list_head done; -/* PT BOs scheduled to free and fill with zero if vm_resv is not hold */ -struct list_head pt_freed; -struct work_struct pt_free_work; -/* contains the page directory */ struct amdgpu_vm_bo_base root;struct dma_fence *last_update;
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c +13 -30
66 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +10 -0
@@ -212,6 +212,11 @@ static int set_queue_properties_from_user(struct queue_properties *q_properties,return -EINVAL ; } +if (args->ring_size <KFD_MIN_QUEUE_RING_SIZE ) { + args->ring_size =KFD_MIN_QUEUE_RING_SIZE ; +pr_debug ("Size lower. clamped to KFD_MIN_QUEUE_RING_SIZE" ); + } +if (!access_ok ((const void __user *) args->read_pointer_address,sizeof (uint32_t ))) {pr_err ("Can't access read pointer\n" );
@@ -461,6 +466,11 @@ static int kfd_ioctl_update_queue(struct file *filp, struct kfd_process *p,return -EINVAL ; } +if (args->ring_size <KFD_MIN_QUEUE_RING_SIZE ) { + args->ring_size =KFD_MIN_QUEUE_RING_SIZE ; +pr_debug ("Size lower. clamped to KFD_MIN_QUEUE_RING_SIZE" ); + } + properties.queue_address = args->ring_base_address; properties.queue_size = args->ring_size; properties.queue_percent = args->queue_percentage &0xFF ;
drivers/gpu/drm/amd/amdkfd/kfd_device.c +5 -0
@@ -1493,6 +1493,11 @@ int kfd_debugfs_hang_hws(struct kfd_node *dev)return -EINVAL ; } +if (dev->kfd->shared_resources.enable_mes) { +dev_err (dev->adev->dev,"Inducing MES hang is not supported\n" ); +return -EINVAL ; + } +return dqm_debugfs_hang_hws (dev->dqm); }
drivers/gpu/drm/amd/amdkfd/kfd_process.c +17 -0
@@ -35,6 +35,7 @@#include <linux/pm_runtime.h> #include "amdgpu_amdkfd.h" #include "amdgpu.h" +#include "amdgpu_reset.h" struct mm_struct ;
@@ -1140,6 +1141,17 @@ static void kfd_process_remove_sysfs(struct kfd_process *p) p->kobj =NULL ; } +/* +* If any GPU is ongoing reset, wait for reset complete. +*/ +static void kfd_process_wait_gpu_reset_complete (struct kfd_process *p) +{ +int i; + +for (i =0 ; i < p->n_pdds; i++) +flush_workqueue (p->pdds[i]->dev->adev->reset_domain->wq); +} +/* No process locking is needed in this function, because the process * is not findable any more. We must assume that no other thread is * using it any more, otherwise we couldn't safely free the process
@@ -1154,6 +1166,11 @@ static void kfd_process_wq_release(struct work_struct *work)kfd_process_dequeue_from_all_devices (p);pqm_uninit (&p->pqm); +/* +* If GPU in reset, user queues may still running, wait for reset complete. +*/ +kfd_process_wait_gpu_reset_complete (p); +/* Signal the eviction fence after user mode queues are * destroyed. This allows any BOs to be freed without * triggering pointless evictions or waiting for fences.
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +1 -1
@@ -546,7 +546,7 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)pr_err ("Pasid 0x%x destroy queue %d failed, ret %d\n" , pqm->process->pasid, pqn->q->properties.queue_id, retval); -if (retval != -ETIME ) +if (retval != -ETIME && retval != -EIO ) goto err_destroy_queue; }kfd_procfs_del_queue (pqn->q);
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +17 -14
@@ -2992,19 +2992,6 @@ svm_range_restore_pages(struct amdgpu_device *adev, unsigned int pasid, goto out; } -/* check if this page fault time stamp is before svms->checkpoint_ts */ -if (svms->checkpoint_ts[gpuidx] !=0 ) { -if (amdgpu_ih_ts_after (ts, svms->checkpoint_ts[gpuidx])) { -pr_debug ("draining retry fault, drop fault 0x%llx\n" , addr); - r =0 ; - goto out; - }else -/* ts is after svms->checkpoint_ts now, reset svms->checkpoint_ts -* to zero to avoid following ts wrap around give wrong comparing -*/ - svms->checkpoint_ts[gpuidx] =0 ; - } -if (!p->xnack_enabled) {pr_debug ("XNACK not enabled for pasid 0x%x\n" , pasid); r = -EFAULT ;
@@ -3024,6 +3011,21 @@ svm_range_restore_pages(struct amdgpu_device *adev, unsigned int pasid,mmap_read_lock (mm); retry_write_locked:mutex_lock (&svms->lock); + +/* check if this page fault time stamp is before svms->checkpoint_ts */ +if (svms->checkpoint_ts[gpuidx] !=0 ) { +if (amdgpu_ih_ts_after (ts, svms->checkpoint_ts[gpuidx])) { +pr_debug ("draining retry fault, drop fault 0x%llx\n" , addr); + r = -EAGAIN ; + goto out_unlock_svms; + }else { +/* ts is after svms->checkpoint_ts now, reset svms->checkpoint_ts +* to zero to avoid following ts wrap around give wrong comparing +*/ + svms->checkpoint_ts[gpuidx] =0 ; + } + } + prange =svm_range_from_addr (svms, addr,NULL );if (!prange) { pr_debug("failed to find prange svms 0x%p address [0x%llx]\n",
@@ -3148,7 +3150,8 @@ svm_range_restore_pages(struct amdgpu_device *adev, unsigned int pasid,mutex_unlock (&svms->lock);mmap_read_unlock (mm); -svm_range_count_fault (node, p, gpuidx); +if (r != -EAGAIN ) +svm_range_count_fault (node, p, gpuidx);mmput (mm); out:
drivers/gpu/drm/amd/display/dc/dml2/dml2_dc_resource_mgmt.c +0 -26
@@ -532,26 +532,6 @@ static void calculate_odm_slices(const struct dc_stream_state *stream, unsigned odm_slice_end_x[odm_factor -1 ] = stream->src.width -1 ; } -static bool is_plane_in_odm_slice (const struct dc_plane_state *plane,unsigned int slice_index,unsigned int *odm_slice_end_x,unsigned int num_slices) -{ -unsigned int slice_start_x, slice_end_x; - -if (slice_index ==0 ) - slice_start_x =0 ; -else - slice_start_x = odm_slice_end_x[slice_index -1 ] +1 ; - - slice_end_x = odm_slice_end_x[slice_index]; - -if (plane->clip_rect.x + plane->clip_rect.width < slice_start_x) -return false; - -if (plane->clip_rect.x > slice_end_x) -return false; - -return true; -} - static void add_odm_slice_to_odm_tree(struct dml2_context *ctx, struct dc_state *state, struct dc_pipe_mapping_scratch *scratch,
@@ -791,12 +771,6 @@ static void map_pipes_for_plane(struct dml2_context *ctx, struct dc_state *statesort_pipes_for_splitting (&scratch->pipe_pool);for (odm_slice_index =0 ; odm_slice_index < scratch->odm_info.odm_factor; odm_slice_index++) { -// We build the tree for one ODM slice at a time. -// Each ODM slice shares a common OPP -if (!is_plane_in_odm_slice (plane, odm_slice_index, scratch->odm_info.odm_slice_end_x, scratch->odm_info.odm_factor)) { -continue ; - } -// Now we have a list of all pipes to be used for this plane/stream, now setup the tree. scratch->odm_info.next_higher_pipe_for_odm_slice[odm_slice_index] = add_plane_to_blend_tree(ctx, state, plane,
drivers/gpu/drm/amd/display/dc/hubp/dcn31/dcn31_hubp.c +1 -1
@@ -44,7 +44,7 @@ void hubp31_set_unbounded_requesting(struct hubp *hubp, bool enable)struct dcn20_hubp *hubp2 =TO_DCN20_HUBP (hubp);REG_UPDATE (DCHUBP_CNTL ,HUBP_UNBOUNDED_REQ_MODE , enable); -REG_UPDATE (CURSOR_CONTROL ,CURSOR_REQ_MODE , enable); +REG_UPDATE (CURSOR_CONTROL ,CURSOR_REQ_MODE ,1 ); }void hubp31_soft_reset (struct hubp *hubp,bool reset)
drivers/gpu/drm/amd/display/dc/hwss/dcn10/dcn10_hwseq.c +9 -13
@@ -1992,20 +1992,11 @@ static void delay_cursor_until_vupdate(struct dc *dc, struct pipe_ctx *pipe_ctx) dc->hwss.get_position (&pipe_ctx,1 , &position); vpos = position.vertical_count; -/* Avoid wraparound calculation issues */ - vupdate_start += stream->timing.v_total; - vupdate_end += stream->timing.v_total; - vpos += stream->timing.v_total; -if (vpos <= vupdate_start) {/* VPOS is in VACTIVE or back porch. */ lines_to_vupdate = vupdate_start - vpos; - }else if (vpos > vupdate_end) { -/* VPOS is in the front porch. */ -return ; }else { -/* VPOS is in VUPDATE. */ - lines_to_vupdate =0 ; + lines_to_vupdate = stream->timing.v_total - vpos + vupdate_start; }/* Calculate time until VUPDATE in microseconds. */
@@ -2013,13 +2004,18 @@ static void delay_cursor_until_vupdate(struct dc *dc, struct pipe_ctx *pipe_ctx) stream->timing.h_total *10000u / stream->timing.pix_clk_100hz; us_to_vupdate = lines_to_vupdate * us_per_line; +/* Stall out until the cursor update completes. */ +if (vupdate_end < vupdate_start) + vupdate_end += stream->timing.v_total; + +/* Position is in the range of vupdate start and end*/ +if (lines_to_vupdate > stream->timing.v_total - vupdate_end + vupdate_start) + us_to_vupdate =0 ; +/* 70 us is a conservative estimate of cursor update time*/ if (us_to_vupdate >70 )return ; -/* Stall out until the cursor update completes. */ -if (vupdate_end < vupdate_start) - vupdate_end += stream->timing.v_total; us_vupdate = (vupdate_end - vupdate_start +1 ) * us_per_line;udelay (us_to_vupdate + us_vupdate); }
drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c +5 -0
@@ -51,6 +51,11 @@ static int amd_powerplay_create(struct amdgpu_device *adev) hwmgr->adev = adev; hwmgr->not_vf = !amdgpu_sriov_vf (adev); hwmgr->device =amdgpu_cgs_create_device (adev); +if (!hwmgr->device) { +kfree (hwmgr); +return -ENOMEM ; + } +mutex_init (&hwmgr->msg_lock); hwmgr->chip_family = adev->family; hwmgr->chip_id = adev->asic_type;
drivers/gpu/drm/drm_atomic_helper.c +1 -1
@@ -1376,7 +1376,7 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *old_state) mode = &new_crtc_state->mode; adjusted_mode = &new_crtc_state->adjusted_mode; -if (!new_crtc_state->mode_changed) +if (!new_crtc_state->mode_changed && !new_crtc_state->connectors_changed)continue ; drm_dbg_atomic(dev, "modeset on [ENCODER:%d:%s]\n",
drivers/gpu/drm/drm_debugfs.c +1 -1
@@ -743,7 +743,7 @@ static int bridges_show(struct seq_file *m, void *data)unsigned int idx =0 ;drm_for_each_bridge_in_chain (encoder, bridge) { -drm_printf (&p,"bridge[%d]: %ps\n" , idx++, bridge->funcs); +drm_printf (&p,"bridge[%u]: %ps\n" , idx++, bridge->funcs);drm_printf (&p,"\ttype: [%d] %s\n" , bridge->type,drm_get_connector_type_name (bridge->type));
drivers/gpu/drm/drm_panel.c +4 -1
@@ -49,7 +49,7 @@ static LIST_HEAD(panel_list);* @dev: parent device of the panel * @funcs: panel operations * @connector_type: the connector type (DRM_MODE_CONNECTOR_*) corresponding to -* the panel interface +* the panel interface (must NOT be DRM_MODE_CONNECTOR_Unknown) * * Initialize the panel structure for subsequent registration with * drm_panel_add().
@@ -57,6 +57,9 @@ static LIST_HEAD(panel_list);void drm_panel_init (struct drm_panel *panel,struct device *dev,const struct drm_panel_funcs *funcs,int connector_type) { +if (connector_type == DRM_MODE_CONNECTOR_Unknown) +DRM_WARN ("%s: %s: a valid connector type is required!\n" , __func__,dev_name (dev)); +INIT_LIST_HEAD (&panel->list);INIT_LIST_HEAD (&panel->followers);mutex_init (&panel->follower_lock);
drivers/gpu/drm/drm_panel_orientation_quirks.c +44 -2
90 lines not on this page · raw message
drivers/gpu/drm/i915/gt/intel_rc6.c +4 -15
@@ -117,21 +117,10 @@ static void gen11_rc6_enable(struct intel_rc6 *rc6)GEN6_RC_CTL_RC6_ENABLE |GEN6_RC_CTL_EI_MODE (1 ); -/* -* BSpec 52698 - Render powergating must be off. -* FIXME BSpec is outdated, disabling powergating for MTL is just -* temporary wa and should be removed after fixing real cause -* of forcewake timeouts. -*/ -if (IS_GFX_GT_IP_RANGE (gt,IP_VER (12 ,70 ),IP_VER (12 ,74 ))) - pg_enable = -GEN9_MEDIA_PG_ENABLE | -GEN11_MEDIA_SAMPLER_PG_ENABLE ; -else - pg_enable = -GEN9_RENDER_PG_ENABLE | -GEN9_MEDIA_PG_ENABLE | -GEN11_MEDIA_SAMPLER_PG_ENABLE ; + pg_enable = +GEN9_RENDER_PG_ENABLE | +GEN9_MEDIA_PG_ENABLE | +GEN11_MEDIA_SAMPLER_PG_ENABLE ;if (GRAPHICS_VER (gt->i915) >=12 && !IS_DG1 (gt->i915)) {for (i =0 ; i <I915_MAX_VCS ; i++)
drivers/gpu/drm/i915/gt/uc/intel_huc.c +5 -6
@@ -317,6 +317,11 @@ void intel_huc_init_early(struct intel_huc *huc) } } +void intel_huc_fini_late (struct intel_huc *huc) +{ +delayed_huc_load_fini (huc); +} +#define HUC_LOAD_MODE_STRING (x) (x ? "GSC" : "legacy")static int check_huc_loading_mode (struct intel_huc *huc) {
@@ -414,12 +419,6 @@ int intel_huc_init(struct intel_huc *huc)void intel_huc_fini (struct intel_huc *huc) { -/* -* the fence is initialized in init_early, so we need to clean it up -* even if HuC loading is off. -*/ -delayed_huc_load_fini (huc); -if (huc->heci_pkt)i915_vma_unpin_and_release (&huc->heci_pkt,0 );
drivers/gpu/drm/i915/gt/uc/intel_huc.h +1 -0
@@ -55,6 +55,7 @@ struct intel_huc {int intel_huc_sanitize (struct intel_huc *huc);void intel_huc_init_early (struct intel_huc *huc); +void intel_huc_fini_late (struct intel_huc *huc);int intel_huc_init (struct intel_huc *huc);void intel_huc_fini (struct intel_huc *huc);void intel_huc_suspend (struct intel_huc *huc);
drivers/gpu/drm/i915/gt/uc/intel_uc.c +1 -0
@@ -136,6 +136,7 @@ void intel_uc_init_late(struct intel_uc *uc)void intel_uc_driver_late_release (struct intel_uc *uc) { +intel_huc_fini_late (&uc->huc); }/**
drivers/gpu/drm/i915/selftests/i915_selftest.c +18 -0
@@ -23,7 +23,9 @@#include <linux/random.h> +#include "gt/intel_gt.h" #include "gt/intel_gt_pm.h" +#include "gt/intel_gt_regs.h" #include "gt/uc/intel_gsc_fw.h" #include "i915_driver.h"
@@ -253,11 +255,27 @@ int i915_mock_selftests(void)int i915_live_selftests (struct pci_dev *pdev) {struct drm_i915_private *i915 =pdev_to_i915 (pdev); +struct intel_uncore *uncore = &i915->uncore;int err; +u32 pg_enable; +intel_wakeref_t wakeref;if (!i915_selftest.live)return 0 ; +/* +* FIXME Disable render powergating, this is temporary wa and should be removed +* after fixing real cause of forcewake timeouts. +*/ + with_intel_runtime_pm(uncore->rpm, wakeref) { +if (IS_GFX_GT_IP_RANGE (to_gt (i915),IP_VER (12 ,00 ),IP_VER (12 ,74 ))) { + pg_enable =intel_uncore_read (uncore,GEN9_PG_ENABLE ); +if (pg_enable &GEN9_RENDER_PG_ENABLE ) +intel_uncore_write_fw (uncore,GEN9_PG_ENABLE , + pg_enable & ~GEN9_RENDER_PG_ENABLE ); + } + } +__wait_gsc_proxy_completed (i915);__wait_gsc_huc_load_completed (i915);
drivers/gpu/drm/mediatek/mtk_dpi.c +16 -7
@@ -127,14 +127,14 @@ struct mtk_dpi_yc_limit {* @is_ck_de_pol: Support CK/DE polarity. * @swap_input_support: Support input swap function. * @support_direct_pin: IP supports direct connection to dpi panels. -* @input_2pixel: Input pixel of dp_intf is 2 pixel per round, so enable this -* config to enable this feature. * @dimension_mask: Mask used for HWIDTH, HPORCH, VSYNC_WIDTH and VSYNC_PORCH * (no shift). * @hvsize_mask: Mask of HSIZE and VSIZE mask (no shift). * @channel_swap_shift: Shift value of channel swap. * @yuv422_en_bit: Enable bit of yuv422. * @csc_enable_bit: Enable bit of CSC. +* @input_2p_en_bit: Enable bit for input two pixel per round feature. +* If present, implies that the feature must be enabled. * @pixels_per_iter: Quantity of transferred pixels per iteration. * @edge_cfg_in_mmsys: If the edge configuration for DPI's output needs to be set in MMSYS. */
@@ -148,12 +148,12 @@ struct mtk_dpi_conf {bool is_ck_de_pol;bool swap_input_support;bool support_direct_pin; -bool input_2pixel;u32 dimension_mask;u32 hvsize_mask;u32 channel_swap_shift;u32 yuv422_en_bit;u32 csc_enable_bit; +u32 input_2p_en_bit;u32 pixels_per_iter;bool edge_cfg_in_mmsys; };
@@ -471,6 +471,7 @@ static void mtk_dpi_power_off(struct mtk_dpi *dpi)mtk_dpi_disable (dpi);clk_disable_unprepare (dpi->pixel_clk); +clk_disable_unprepare (dpi->tvd_clk);clk_disable_unprepare (dpi->engine_clk); }
@@ -487,6 +488,12 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi) goto err_refcount; } + ret =clk_prepare_enable (dpi->tvd_clk); +if (ret) { +dev_err (dpi->dev,"Failed to enable tvd pll: %d\n" , ret); + goto err_engine; + } + ret =clk_prepare_enable (dpi->pixel_clk);if (ret) {dev_err (dpi->dev,"Failed to enable pixel clock: %d\n" , ret);
@@ -496,6 +503,8 @@ static int mtk_dpi_power_on(struct mtk_dpi *dpi)return 0 ; err_pixel: +clk_disable_unprepare (dpi->tvd_clk); +err_engine:clk_disable_unprepare (dpi->engine_clk); err_refcount: dpi->refcount--;
@@ -610,9 +619,9 @@ static int mtk_dpi_set_display_mode(struct mtk_dpi *dpi,mtk_dpi_dual_edge (dpi);mtk_dpi_config_disable_edge (dpi); } -if (dpi->conf->input_2pixel) { -mtk_dpi_mask (dpi,DPI_CON ,DPINTF_INPUT_2P_EN , -DPINTF_INPUT_2P_EN ); +if (dpi->conf->input_2p_en_bit) { +mtk_dpi_mask (dpi,DPI_CON , dpi->conf->input_2p_en_bit, + dpi->conf->input_2p_en_bit); }mtk_dpi_sw_reset (dpi, false);
@@ -992,12 +1001,12 @@ static const struct mtk_dpi_conf mt8195_dpintf_conf = { .output_fmts = mt8195_output_fmts, .num_output_fmts = ARRAY_SIZE(mt8195_output_fmts), .pixels_per_iter = 4, - .input_2pixel = true, .dimension_mask = DPINTF_HPW_MASK, .hvsize_mask = DPINTF_HSIZE_MASK, .channel_swap_shift = DPINTF_CH_SWAP, .yuv422_en_bit = DPINTF_YUV422_EN, .csc_enable_bit = DPINTF_CSC_ENABLE, + .input_2p_en_bit = DPINTF_INPUT_2P_EN, };static int mtk_dpi_probe (struct platform_device *pdev)
drivers/gpu/drm/tests/drm_client_modeset_test.c +3 -0
@@ -95,6 +95,9 @@ static void drm_test_pick_cmdline_res_1920_1080_60(struct kunit *test) expected_mode =drm_mode_find_dmt (priv->drm,1920 ,1080 ,60 , false);KUNIT_ASSERT_NOT_NULL (test, expected_mode); + ret =drm_kunit_add_mode_destroy_action (test, expected_mode); +KUNIT_ASSERT_EQ (test, ret,0 ); + KUNIT_ASSERT_TRUE(test, drm_mode_parse_command_line_for_connector(cmdline, connector,
drivers/gpu/drm/tests/drm_cmdline_parser_test.c +9 -1
@@ -7,6 +7,7 @@#include <kunit/test.h> #include <drm/drm_connector.h> +#include <drm/drm_kunit_helpers.h> #include <drm/drm_modes.h> static const struct drm_connector no_connector = {};
@@ -955,8 +956,15 @@ struct drm_cmdline_tv_option_test {static void drm_test_cmdline_tv_options (struct kunit *test) {const struct drm_cmdline_tv_option_test *params = test->param_value; -const struct drm_display_mode *expected_mode = params->mode_fn (NULL ); +struct drm_display_mode *expected_mode;struct drm_cmdline_mode mode = { }; +int ret; + + expected_mode = params->mode_fn (NULL ); +KUNIT_ASSERT_NOT_NULL (test, expected_mode); + + ret =drm_kunit_add_mode_destroy_action (test, expected_mode); +KUNIT_ASSERT_EQ (test, ret,0 );KUNIT_EXPECT_TRUE (test,drm_mode_parse_command_line_for_connector (params->cmdline, &no_connector, &mode));
drivers/gpu/drm/tests/drm_kunit_helpers.c +22 -0
@@ -319,6 +319,28 @@ static void kunit_action_drm_mode_destroy(void *ptr)drm_mode_destroy (NULL , mode); } +/** +* drm_kunit_add_mode_destroy_action() - Add a drm_destroy_mode kunit action +* @test: The test context object +* @mode: The drm_display_mode to destroy eventually +* +* Registers a kunit action that will destroy the drm_display_mode at +* the end of the test. +* +* If an error occurs, the drm_display_mode will be destroyed. +* +* Returns: +* 0 on success, an error code otherwise. +*/ +int drm_kunit_add_mode_destroy_action (struct kunit *test, +struct drm_display_mode *mode) +{ +return kunit_add_action_or_reset (test, + kunit_action_drm_mode_destroy, + mode); +} +EXPORT_SYMBOL_GPL (drm_kunit_add_mode_destroy_action); +/** * drm_kunit_display_mode_from_cea_vic() - return a mode for CEA VIC for a KUnit test * @test: The test context object
drivers/gpu/drm/tests/drm_modes_test.c +22 -0
@@ -40,6 +40,7 @@ static void drm_test_modes_analog_tv_ntsc_480i(struct kunit *test) {struct drm_test_modes_priv *priv = test->priv;struct drm_display_mode *mode; +int ret; mode = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_NTSC,
@@ -47,6 +48,9 @@ static void drm_test_modes_analog_tv_ntsc_480i(struct kunit *test) true);KUNIT_ASSERT_NOT_NULL (test, mode); + ret =drm_kunit_add_mode_destroy_action (test, mode); +KUNIT_ASSERT_EQ (test, ret,0 ); +KUNIT_EXPECT_EQ (test,drm_mode_vrefresh (mode),60 );KUNIT_EXPECT_EQ (test, mode->hdisplay,720 );
@@ -70,6 +74,7 @@ static void drm_test_modes_analog_tv_ntsc_480i_inlined(struct kunit *test) {struct drm_test_modes_priv *priv = test->priv;struct drm_display_mode *expected, *mode; +int ret; expected = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_NTSC,
@@ -77,9 +82,15 @@ static void drm_test_modes_analog_tv_ntsc_480i_inlined(struct kunit *test) true);KUNIT_ASSERT_NOT_NULL (test, expected); + ret =drm_kunit_add_mode_destroy_action (test, expected); +KUNIT_ASSERT_EQ (test, ret,0 ); + mode =drm_mode_analog_ntsc_480i (priv->drm);KUNIT_ASSERT_NOT_NULL (test, mode); + ret =drm_kunit_add_mode_destroy_action (test, mode); +KUNIT_ASSERT_EQ (test, ret,0 ); +KUNIT_EXPECT_TRUE (test,drm_mode_equal (expected, mode)); }
@@ -87,6 +98,7 @@ static void drm_test_modes_analog_tv_pal_576i(struct kunit *test) {struct drm_test_modes_priv *priv = test->priv;struct drm_display_mode *mode; +int ret; mode = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_PAL,
@@ -94,6 +106,9 @@ static void drm_test_modes_analog_tv_pal_576i(struct kunit *test) true);KUNIT_ASSERT_NOT_NULL (test, mode); + ret =drm_kunit_add_mode_destroy_action (test, mode); +KUNIT_ASSERT_EQ (test, ret,0 ); +KUNIT_EXPECT_EQ (test,drm_mode_vrefresh (mode),50 );KUNIT_EXPECT_EQ (test, mode->hdisplay,720 );
@@ -117,6 +132,7 @@ static void drm_test_modes_analog_tv_pal_576i_inlined(struct kunit *test) {struct drm_test_modes_priv *priv = test->priv;struct drm_display_mode *expected, *mode; +int ret; expected = drm_analog_tv_mode(priv->drm, DRM_MODE_TV_MODE_PAL,
@@ -124,9 +140,15 @@ static void drm_test_modes_analog_tv_pal_576i_inlined(struct kunit *test) true);KUNIT_ASSERT_NOT_NULL (test, expected); + ret =drm_kunit_add_mode_destroy_action (test, expected); +KUNIT_ASSERT_EQ (test, ret,0 ); + mode =drm_mode_analog_pal_576i (priv->drm);KUNIT_ASSERT_NOT_NULL (test, mode); + ret =drm_kunit_add_mode_destroy_action (test, mode); +KUNIT_ASSERT_EQ (test, ret,0 ); +KUNIT_EXPECT_TRUE (test,drm_mode_equal (expected, mode)); }
drivers/gpu/drm/tests/drm_probe_helper_test.c +7 -1
@@ -98,7 +98,7 @@ drm_test_connector_helper_tv_get_modes_check(struct kunit *test)struct drm_connector *connector = &priv->connector;struct drm_cmdline_mode *cmdline = &connector->cmdline_mode;struct drm_display_mode *mode; -const struct drm_display_mode *expected; +struct drm_display_mode *expected;size_t len;int ret;
@@ -134,6 +134,9 @@ drm_test_connector_helper_tv_get_modes_check(struct kunit *test)KUNIT_EXPECT_TRUE (test,drm_mode_equal (mode, expected));KUNIT_EXPECT_TRUE (test, mode->type &DRM_MODE_TYPE_PREFERRED ); + + ret =drm_kunit_add_mode_destroy_action (test, expected); +KUNIT_ASSERT_EQ (test, ret,0 ); }if (params->num_expected_modes >=2 ) {
@@ -145,6 +148,9 @@ drm_test_connector_helper_tv_get_modes_check(struct kunit *test)KUNIT_EXPECT_TRUE (test,drm_mode_equal (mode, expected));KUNIT_EXPECT_FALSE (test, mode->type &DRM_MODE_TYPE_PREFERRED ); + + ret =drm_kunit_add_mode_destroy_action (test, expected); +KUNIT_ASSERT_EQ (test, ret,0 ); }mutex_unlock (&priv->drm->mode_config.mutex);
drivers/gpu/drm/xe/xe_gt.c +4 -0
@@ -32,6 +32,7 @@#include "xe_gt_pagefault.h" #include "xe_gt_printk.h" #include "xe_gt_sriov_pf.h" +#include "xe_gt_sriov_vf.h" #include "xe_gt_sysfs.h" #include "xe_gt_tlb_invalidation.h" #include "xe_gt_topology.h"
@@ -647,6 +648,9 @@ static int do_gt_reset(struct xe_gt *gt) {int err; +if (IS_SRIOV_VF (gt_to_xe (gt))) +return xe_gt_sriov_vf_reset (gt); +xe_gsc_wa_14015076503 (gt, true);xe_mmio_write32 (gt,GDRST ,GRDOM_FULL );
drivers/gpu/drm/xe/xe_gt_sriov_vf.c +16 -0
@@ -57,6 +57,22 @@ static int vf_reset_guc_state(struct xe_gt *gt)return err; } +/** +* xe_gt_sriov_vf_reset - Reset GuC VF internal state. +* @gt: the &xe_gt +* +* It requires functional `GuC MMIO based communication`_. +* +* Return: 0 on success or a negative error code on failure. +*/ +int xe_gt_sriov_vf_reset (struct xe_gt *gt) +{ +if (!xe_device_uc_enabled (gt_to_xe (gt))) +return -ENODEV ; + +return vf_reset_guc_state (gt); +} +static int guc_action_match_version (struct xe_guc *guc,u32 wanted_branch,u32 wanted_major,u32 wanted_minor,u32 *branch,u32 *major,u32 *minor,u32 *patch)
drivers/gpu/drm/xe/xe_gt_sriov_vf.h +1 -0
@@ -12,6 +12,7 @@ struct drm_printer;struct xe_gt ;struct xe_reg ; +int xe_gt_sriov_vf_reset (struct xe_gt *gt);int xe_gt_sriov_vf_bootstrap (struct xe_gt *gt);int xe_gt_sriov_vf_query_config (struct xe_gt *gt);int xe_gt_sriov_vf_connect (struct xe_gt *gt);
drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.c +52 -56
137 lines not on this page · raw message
drivers/gpu/drm/xe/xe_tuning.c +0 -8
@@ -97,14 +97,6 @@ static const struct xe_rtp_entry_sr engine_tunings[] = { };static const struct xe_rtp_entry_sr lrc_tunings[] = { - {XE_RTP_NAME ("Tuning: ganged timer, also known as 16011163337" ), -XE_RTP_RULES (GRAPHICS_VERSION_RANGE (1200 ,1210 ),ENGINE_CLASS (RENDER )), -/* read verification is ignored due to 1608008084. */ -XE_RTP_ACTIONS (FIELD_SET_NO_READ_MASK (FF_MODE2 , -FF_MODE2_GS_TIMER_MASK , -FF_MODE2_GS_TIMER_224 )) - }, -/* DG2 */ {XE_RTP_NAME ("Tuning: L3 cache" ),
drivers/gpu/drm/xe/xe_wa.c +7 -0
@@ -606,6 +606,13 @@ static const struct xe_rtp_entry_sr engine_was[] = { };static const struct xe_rtp_entry_sr lrc_was[] = { + {XE_RTP_NAME ("16011163337" ),
Lines of this file are not shown. View the raw message.
drivers/hid/hid-universal-pidff.c new file +202 -0
202 lines not on this page · raw message
drivers/hid/usbhid/hid-pidff.c +372 -197
569 lines not on this page · raw message
drivers/hid/usbhid/hid-pidff.h new file +33 -0
Lines of this file are not shown. View the raw message.
drivers/iommu/arm/arm-smmu-v3/tegra241-cmdqv.c +5 -27
Lines of this file are not shown. View the raw message.
drivers/iommu/intel/irq_remapping.c +42 -29
71 lines not on this page · raw message
drivers/iommu/iommufd/device.c +122 -1
123 lines not on this page · raw message
drivers/iommu/iommufd/iommufd_private.h +4 -29
Lines of this file are not shown. View the raw message.
drivers/mailbox/tegra-hsp.c +60 -12
72 lines not on this page · raw message
drivers/md/dm-integrity.c +25 -23
48 lines not on this page · raw message
drivers/media/common/siano/smsdvb-main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/media/i2c/imx219.c +77 -29
106 lines not on this page · raw message
drivers/media/pci/intel/ipu6/ipu6-isys-video.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/chips-media/wave5/wave5-hw.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +30 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/chips-media/wave5/wave5-vpu.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/chips-media/wave5/wave5-vpuapi.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_scp.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_vp9_req_lat_if.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/vcodec/encoder/venc/venc_h264_if.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/nuvoton/npcm-video.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/hfi_parser.c +74 -26
100 lines not on this page · raw message
drivers/media/platform/qcom/venus/hfi_venus.c +16 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/rockchip/rga/rga-hw.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/samsung/s5p-mfc/s5p_mfc_opr_v6.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/st/stm32/dma2d/dma2d.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/rc/streamzap.c +38 -30
68 lines not on this page · raw message
drivers/media/test-drivers/visl/visl-core.c +12 -0
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/v4l2-dv-timings.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/mmc/host/dw_mmc.c +92 -2
94 lines not on this page · raw message
drivers/mtd/nand/raw/brcmnand/brcmnand.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/can/flexcan/flexcan-core.c +34 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/google/gve/gve_ethtool.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/nic/qos.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +9 -37
46 lines not on this page · raw message
drivers/net/ethernet/wangxun/libwx/wx_lib.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/phy/phy_device.c +42 -15
57 lines not on this page · raw message
drivers/net/wireless/ath/ath12k/dp_mon.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath12k/dp_rx.c +40 -2
42 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/eeprom.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x2/usb.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7925/main.c +11 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7925/mcu.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/of/irq.c +46 -34
80 lines not on this page · raw message
drivers/pci/controller/cadence/pci-j721e.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-rockchip-host.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/phy/freescale/phy-fsl-imx8m-pcie.c +11 -0
Lines of this file are not shown. View the raw message.
drivers/pinctrl/samsung/pinctrl-exynos-arm64.c +49 -49
98 lines not on this page · raw message
drivers/pinctrl/samsung/pinctrl-exynos.h +22 -0
Lines of this file are not shown. View the raw message.
drivers/pinctrl/samsung/pinctrl-samsung.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/pinctrl/samsung/pinctrl-samsung.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/platform/x86/x86-android-tablets/Kconfig +1 -0
Lines of this file are not shown. View the raw message.
drivers/scsi/mpi3mr/mpi3mr_fw.c +92 -7
99 lines not on this page · raw message
drivers/thermal/mediatek/lvts_thermal.c +36 -16
52 lines not on this page · raw message
drivers/video/fbdev/omap2/omapfb/dss/dispc.c +5 -1
Lines of this file are not shown. View the raw message.
fs/ext4/inode.c +48 -20
68 lines not on this page · raw message
fs/f2fs/node.c +31 -79
110 lines not on this page · raw message
fs/userfaultfd.c +25 -26
51 lines not on this page · raw message
include/linux/perf_event.h +37 -8
45 lines not on this page · raw message
kernel/cgroup/cpuset.c +103 -73
176 lines not on this page · raw message
kernel/events/core.c +147 -108
255 lines not on this page · raw message
net/core/filter.c +44 -36
80 lines not on this page · raw message
net/mac80211/debugfs.c +42 -2
44 lines not on this page · raw message
net/mac80211/mlme.c +31 -14
45 lines not on this page · raw message
net/sched/cls_api.c +45 -21
66 lines not on this page · raw message
net/sched/sch_sfq.c +50 -16
66 lines not on this page · raw message
net/sunrpc/xprtrdma/svc_rdma_transport.c +2 -1
Lines of this file are not shown. View the raw message.
security/landlock/errata.h new file +99 -0
99 lines not on this page · raw message
security/landlock/errata/abi-4.h new file +15 -0
Lines of this file are not shown. View the raw message.
security/landlock/errata/abi-6.h new file +19 -0
Lines of this file are not shown. View the raw message.
sound/pci/hda/hda_intel.c +43 -1
44 lines not on this page · raw message
sound/soc/intel/common/soc-acpi-intel-adl-match.c +29 -0
Lines of this file are not shown. View the raw message.
sound/soc/qcom/qdsp6/q6apm-dai.c +32 -28
60 lines not on this page · raw message
sound/usb/midi.c +74 -6
80 lines not on this page · raw message
tools/testing/selftests/futex/functional/futex_wait_wouldblock.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/landlock/base_test.c +45 -1
46 lines not on this page · raw message
tools/testing/selftests/landlock/common.h +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/landlock/scoped_signal_test.c +93 -15
108 lines not on this page · raw message
tools/testing/selftests/net/mptcp/mptcp_connect.c +7 -4
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.