Linux 6.11.7
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.11.7 kernel.
All users of the 6.11 kernel series must upgrade.
The updated 6.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.11.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/iio/adc/adi,ad7380.yaml | 21 Documentation/driver-api/dpll.rst | 21 Documentation/netlink/specs/dpll.yaml | 24 Documentation/rust/arch-support.rst | 2 Makefile | 2 arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 2 arch/arm64/boot/dts/qcom/msm8939.dtsi | 2 arch/arm64/boot/dts/qcom/x1e80100-asus-vivobook-s15.dts | 2 arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 2 arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 2 arch/arm64/boot/dts/qcom/x1e80100-qcp.dts | 2 arch/arm64/boot/dts/qcom/x1e80100.dtsi | 34 - arch/mips/kernel/cmpxchg.c | 1 arch/riscv/Kconfig | 2 arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 2 arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts | 3 arch/riscv/kernel/acpi.c | 4 arch/riscv/kernel/asm-offsets.c | 2 arch/riscv/kernel/cacheinfo.c | 7 arch/riscv/kernel/cpu-hotplug.c | 2 arch/riscv/kernel/efi-header.S | 2 arch/riscv/kernel/traps_misaligned.c | 2 arch/riscv/kernel/vdso/Makefile | 1 arch/x86/include/asm/bug.h | 12 arch/x86/kernel/traps.c | 71 ++ block/blk-map.c | 4 drivers/accel/ivpu/ivpu_debugfs.c | 9 drivers/accel/ivpu/ivpu_hw.c | 1 drivers/accel/ivpu/ivpu_hw.h | 1 drivers/accel/ivpu/ivpu_hw_ip.c | 5 drivers/acpi/cppc_acpi.c | 9 drivers/acpi/resource.c | 18 drivers/base/core.c | 48 + drivers/base/module.c | 4 drivers/char/tpm/tpm-chip.c | 10 drivers/char/tpm/tpm-dev-common.c | 3 drivers/char/tpm/tpm-interface.c | 6 drivers/char/tpm/tpm2-sessions.c | 100 ++- drivers/cxl/Kconfig | 1 drivers/cxl/Makefile | 20 drivers/cxl/acpi.c | 7 drivers/cxl/core/hdm.c | 50 + drivers/cxl/core/port.c | 13 drivers/cxl/core/region.c | 48 - drivers/cxl/core/trace.h | 17 drivers/cxl/cxl.h | 3 drivers/cxl/port.c | 17 drivers/dpll/dpll_netlink.c | 130 ++++ drivers/dpll/dpll_nl.c | 5 drivers/firmware/arm_sdei.c | 2 drivers/firmware/microchip/mpfs-auto-update.c | 42 - drivers/gpio/gpio-sloppy-logic-analyzer.c | 4 drivers/gpio/gpiolib.c | 4 drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c | 9 drivers/gpu/drm/amd/display/dc/dml2/dml2_policy.c | 1 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 15 drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c | 4 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 6 drivers/gpu/drm/i915/display/intel_alpm.c | 2 drivers/gpu/drm/i915/display/intel_backlight.c | 10 drivers/gpu/drm/i915/display/intel_display_device.c | 5 drivers/gpu/drm/i915/display/intel_display_device.h | 2 drivers/gpu/drm/i915/display/intel_display_power.c | 8 drivers/gpu/drm/i915/display/intel_display_power_well.c | 4 drivers/gpu/drm/i915/display/intel_display_types.h | 1 drivers/gpu/drm/i915/display/intel_display_wa.h | 8 drivers/gpu/drm/i915/display/intel_dp.c | 29 drivers/gpu/drm/i915/display/intel_dp.h | 1 drivers/gpu/drm/i915/display/intel_dp_aux.c | 4 drivers/gpu/drm/i915/display/intel_dp_hdcp.c | 11 drivers/gpu/drm/i915/display/intel_fbc.c | 6 drivers/gpu/drm/i915/display/intel_hdcp.c | 7 drivers/gpu/drm/i915/display/intel_pps.c | 14 drivers/gpu/drm/i915/display/intel_psr.c | 6 drivers/gpu/drm/i915/display/intel_tc.c | 3 drivers/gpu/drm/i915/display/intel_vrr.c | 3 drivers/gpu/drm/i915/display/skl_universal_plane.c | 5 drivers/gpu/drm/i915/intel_device_info.c | 5 drivers/gpu/drm/i915/intel_device_info.h | 2 drivers/gpu/drm/mediatek/mtk_crtc.c | 47 - drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 9 drivers/gpu/drm/mediatek/mtk_dp.c | 85 ++ drivers/gpu/drm/panthor/panthor_fw.c | 4 drivers/gpu/drm/panthor/panthor_gem.c | 11 drivers/gpu/drm/panthor/panthor_mmu.c | 16 drivers/gpu/drm/panthor/panthor_mmu.h | 1 drivers/gpu/drm/panthor/panthor_sched.c | 20 drivers/gpu/drm/tegra/drm.c | 4 drivers/gpu/drm/tests/drm_connector_test.c | 24 drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 8 drivers/gpu/drm/tests/drm_kunit_helpers.c | 42 + drivers/gpu/drm/xe/Makefile | 1 drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h | 1 drivers/gpu/drm/xe/display/xe_display_wa.c | 16 drivers/gpu/drm/xe/regs/xe_gt_regs.h | 17 drivers/gpu/drm/xe/regs/xe_regs.h | 10 drivers/gpu/drm/xe/regs/xe_sriov_regs.h | 23 drivers/gpu/drm/xe/xe_device_types.h | 6 drivers/gpu/drm/xe/xe_ggtt.c | 10 drivers/gpu/drm/xe/xe_gt.c | 10 drivers/gpu/drm/xe/xe_gt_sriov_pf.c | 2 drivers/gpu/drm/xe/xe_guc_submit.c | 18 drivers/gpu/drm/xe/xe_lmtt.c | 2 drivers/gpu/drm/xe/xe_module.c | 39 + drivers/gpu/drm/xe/xe_sriov.c | 2 drivers/gpu/drm/xe/xe_tuning.c | 21 drivers/gpu/drm/xe/xe_wa.c | 4 drivers/iio/adc/ad7124.c | 2 drivers/iio/industrialio-gts-helper.c | 4 drivers/iio/light/veml6030.c | 2 drivers/infiniband/hw/bnxt_re/qplib_fp.c | 4 drivers/infiniband/hw/bnxt_re/qplib_rcfw.c | 38 - drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 2 drivers/infiniband/hw/cxgb4/provider.c | 1 drivers/infiniband/hw/mlx5/qp.c | 4 drivers/input/input.c | 134 ++-- drivers/input/touchscreen/edt-ft5x06.c | 19 drivers/misc/mei/client.c | 4 drivers/misc/sgi-gru/grukservices.c | 2 drivers/misc/sgi-gru/grumain.c | 4 drivers/misc/sgi-gru/grutlbpurge.c | 2 drivers/mmc/host/sdhci-pci-gli.c | 38 - drivers/net/ethernet/amd/mvme147.c | 7 drivers/net/ethernet/intel/ice/ice_dpll.c | 293 +++++++++- drivers/net/ethernet/intel/ice/ice_dpll.h | 1 drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 21 drivers/net/ethernet/intel/ice/ice_ptp_hw.h | 1 drivers/net/ethernet/mediatek/mtk_wed_wo.h | 4 drivers/net/ethernet/mellanox/mlxsw/pci.c | 25 drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c | 26 drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c | 7 drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c | 8 drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.h | 2 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 22 drivers/net/gtp.c | 22 drivers/net/macsec.c | 3 drivers/net/mctp/mctp-i2c.c | 3 drivers/net/netdevsim/fib.c | 4 drivers/net/wireless/ath/ath10k/wmi-tlv.c | 7 drivers/net/wireless/ath/ath10k/wmi.c | 2 drivers/net/wireless/ath/ath11k/dp_rx.c | 7 drivers/net/wireless/broadcom/brcm80211/Kconfig | 1 drivers/net/wireless/intel/iwlegacy/common.c | 15 drivers/net/wireless/intel/iwlegacy/common.h | 12 drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 28 drivers/net/wireless/intel/iwlwifi/iwl-drv.h | 3 drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 10 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 12 drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c | 34 - drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 6 drivers/net/wireless/realtek/rtlwifi/rtl8192du/sw.c | 1 drivers/net/wireless/realtek/rtw89/pci.c | 48 + drivers/nvme/host/core.c | 19 drivers/nvme/host/ioctl.c | 7 drivers/nvme/target/auth.c | 1 drivers/pci/pci.c | 14 drivers/phy/freescale/phy-fsl-imx8m-pcie.c | 10 drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c | 1 drivers/phy/qualcomm/phy-qcom-qmp-usb.c | 1 drivers/phy/qualcomm/phy-qcom-qmp-usbc.c | 1 drivers/powercap/intel_rapl_msr.c | 1 drivers/scsi/scsi_debug.c | 10 drivers/scsi/scsi_transport_fc.c | 4 drivers/soc/qcom/pmic_glink.c | 25 drivers/spi/spi-fsl-dspi.c | 6 drivers/spi/spi-geni-qcom.c | 8 drivers/staging/iio/frequency/ad9832.c | 7 drivers/thermal/intel/int340x_thermal/processor_thermal_rapl.c | 70 -- drivers/thunderbolt/retimer.c | 5 drivers/thunderbolt/tb.c | 48 + drivers/ufs/core/ufshcd.c | 2 drivers/usb/host/xhci-pci.c | 6 drivers/usb/host/xhci-ring.c | 16 drivers/usb/phy/phy.c | 2 drivers/usb/typec/class.c | 1 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c | 10 drivers/usb/typec/tcpm/tcpm.c | 10 fs/afs/dir.c | 25 fs/afs/dir_edit.c | 91 +++ fs/afs/internal.h | 2 fs/btrfs/bio.c | 62 -- fs/btrfs/bio.h | 3 fs/btrfs/defrag.c | 10 fs/btrfs/extent_map.c | 7 fs/btrfs/volumes.c | 1 fs/dax.c | 45 - fs/iomap/buffered-io.c | 7 fs/nfs/delegation.c | 5 fs/nfsd/nfs4proc.c | 8 fs/nilfs2/namei.c | 3 fs/nilfs2/page.c | 1 fs/ntfs3/file.c | 9 fs/ntfs3/frecord.c | 4 fs/ntfs3/inode.c | 15 fs/ntfs3/lznt.c | 3 fs/ntfs3/namei.c | 2 fs/ntfs3/ntfs_fs.h | 2 fs/ntfs3/record.c | 31 - fs/ocfs2/file.c | 8 fs/smb/client/cifs_unicode.c | 17 fs/smb/client/reparse.c | 174 +++++ fs/smb/client/reparse.h | 9 fs/smb/client/smb2inode.c | 3 fs/smb/client/smb2proto.h | 1 fs/userfaultfd.c | 28 fs/xfs/xfs_filestream.c | 23 fs/xfs/xfs_trace.h | 15 include/acpi/cppc_acpi.h | 2 include/drm/drm_kunit_helpers.h | 4 include/linux/bpf_mem_alloc.h | 3 include/linux/compiler-gcc.h | 4 include/linux/device.h | 3 include/linux/dpll.h | 15 include/linux/input.h | 10 include/linux/iomap.h | 19 include/linux/ksm.h | 10 include/linux/mmzone.h | 7 include/linux/rcutiny.h | 5 include/linux/rcutree.h | 1 include/linux/tick.h | 8 include/linux/ubsan.h | 5 include/linux/userfaultfd_k.h | 5 include/net/ip_tunnels.h | 2 include/trace/events/afs.h | 7 include/uapi/linux/dpll.h | 3 io_uring/rw.c | 23 kernel/bpf/cgroup.c | 19 kernel/bpf/helpers.c | 21 kernel/bpf/lpm_trie.c | 2 kernel/bpf/memalloc.c | 14 kernel/bpf/verifier.c | 9 kernel/cgroup/cgroup.c | 4 kernel/fork.c | 14 kernel/rcu/tree.c | 118 +++- kernel/resource.c | 4 kernel/sched/fair.c | 4 lib/Kconfig.ubsan | 4 lib/codetag.c | 3 lib/iov_iter.c | 6 lib/slub_kunit.c | 2 mm/kasan/kasan_test.c | 27 mm/migrate.c | 2 mm/mmap.c | 3 mm/page_alloc.c | 10 mm/rmap.c | 24 mm/shmem.c | 2 mm/shrinker.c | 8 mm/vmscan.c | 109 ++- net/bluetooth/hci_sync.c | 18 net/bpf/test_run.c | 1 net/core/dev.c | 4 net/core/rtnetlink.c | 4 net/core/sock_map.c | 4 net/ipv4/ip_tunnel.c | 2 net/ipv6/netfilter/nf_reject_ipv6.c | 15 net/mac80211/Kconfig | 2 net/mac80211/cfg.c | 3 net/mac80211/key.c | 42 - net/mptcp/protocol.c | 2 net/netfilter/nft_payload.c | 3 net/netfilter/x_tables.c | 2 net/sched/cls_api.c | 1 net/sched/sch_api.c | 2 net/sunrpc/xprtrdma/ib_client.c | 1 net/wireless/core.c | 1 rust/kernel/device.rs | 15 rust/kernel/firmware.rs | 2 sound/pci/hda/patch_realtek.c | 23 sound/soc/codecs/cs42l51.c | 7 sound/soc/soc-dapm.c | 2 sound/usb/mixer_quirks.c | 3 tools/mm/page-types.c | 9 tools/mm/slabinfo.c | 4 tools/perf/util/python.c | 3 tools/perf/util/syscalltbl.c | 10 tools/testing/cxl/test/cxl.c | 14 tools/testing/selftests/mm/uffd-common.c | 5 tools/testing/selftests/mm/uffd-common.h | 3 tools/testing/selftests/mm/uffd-unit-tests.c | 21 tools/usb/usbip/src/usbip_detach.c | 1 280 files changed, 2925 insertions(+), 1075 deletions(-)
Abel Vesa (1):
arm64: dts: qcom: x1e80100: Add Broadcast_AND region in LLCC block
Akshata Jahagirdar (1):
drm/xe/xe2: Introduce performance changes
Aleksei Vetrov (1):
ASoC: dapm: fix bounds checker error in dapm_widget_list_create
Alex Deucher (4):
drm/amdgpu/smu13: fix profile reporting
drm/amdgpu/swsmu: fix ordering for setting workload_mask drm/amdgpu/swsmu: default to fullscreen 3D profile for dGPUs drm/amdgpu: handle default profile on on devices without fullscreen 3D
Alexander Usyskin (1):
mei: use kvmalloc for read buffer
Alexandre Ghiti (1):
riscv: vdso: Prevent the compiler from inserting calls to memset()
Amit Cohen (3):
mlxsw: spectrum_ptp: Add missing verification before pushing Tx header
mlxsw: pci: Sync Rx buffers for CPU
mlxsw: pci: Sync Rx buffers for device
Amit Sunil Dhamne (1):
usb: typec: tcpm: restrict SNK_WAIT_CAPABILITIES_TIMEOUT transitions to non self-powered devices
Andrew Ballance (1):
fs/ntfs3: Check if more than chunk-size bytes are written
Andrey Konovalov (1):
kasan: remove vmalloc_percpu test
Andrzej Kacprowski (1):
accel/ivpu: Fix NOC firewall interrupt handling
Andy Shevchenko (1):
gpio: sloppy-logic-analyzer: Check for error code from devm_mutex_init() call
Arkadiusz Kubalewski (3):
dpll: add Embedded SYNC feature for a pin
ice: add callbacks for Embedded SYNC enablement on dpll pins
ice: fix crash on probe for DPLL enabled E810 LOM
Arnaldo Carvalho de Melo (1):
perf python: Fix up the build on architectures without HAVE_KVM_STAT_SUPPORT
Basavaraj Natikar (1):
xhci: Use pm_runtime_get to prevent RPM on unsupported systems
Ben Chuang (2):
mmc: sdhci-pci-gli: GL9767: Fix low power mode on the set clock function
mmc: sdhci-pci-gli: GL9767: Fix low power mode in the SD Express process
Ben Hutchings (1):
wifi: iwlegacy: Fix "field-spanning write" warning in il_enqueue_hcmd()
Benjamin Marzinski (1):
scsi: scsi_transport_fc: Allow setting rport state to current state
Benjamin Segall (1):
posix-cpu-timers: Clear TICK_DEP_BIT_POSIX_TIMER on clone
Benoît Monin (1):
net: skip offload for NETIF_F_IPV6_CSUM if ipv6 header contains extension
Bitterblue Smith (1):
wifi: rtlwifi: rtl8192du: Don't claim USB ID 0bda:8171
Bjorn Andersson (1):
soc: qcom: pmic_glink: Handle GLINK intent allocation rejections
Boris Brezillon (3):
drm/panthor: Fix firmware initialization on systems with a page size > 4k drm/panthor: Fail job creation when the group is dead drm/panthor: Report group as timedout when we fail to properly suspend
Byeonguk Jeong (1):
bpf: Fix out-of-bounds write in trie_get_next_key()
Chen Ridong (2):
mm: shrinker: avoid memleak in alloc_shrinker_info cgroup/bpf: use a dedicated workqueue for cgroup bpf destruction
Christoffer Sandberg (2):
ALSA: hda/realtek: Fix headset mic on TUXEDO Gemini 17 Gen3
ALSA: hda/realtek: Fix headset mic on TUXEDO Stellaris 16 Gen6 mb1
Christoph Hellwig (3):
iomap: improve shared block detection in iomap_unshare_iter
iomap: turn iomap_want_unshare_iter into an inline function
xfs: fix finding a last resort AG in xfs_filestream_pick_ag
Christophe JAILLET (1):
ASoC: cs42l51: Fix some error handling paths in cs42l51_probe()
Chuck Lever (3):
NFSD: Initialize struct nfsd4_copy earlier
NFSD: Never decrement pending_async_copies on error
rpcrdma: Always release the rpcrdma_device's xa_array
Chun-Kuang Hu (1):
drm/mediatek: Use cmdq_pkt_create() and cmdq_pkt_destroy()
Chunyan Zhang (2):
riscv: Remove unused GENERATING_ASM_OFFSETS
riscv: Remove duplicated GET_RM
Cong Wang (1):
sock_map: fix a NULL pointer dereference in sock_map_link_update_prog()
Conor Dooley (3):
firmware: microchip: auto-update: fix poll_complete() to not report spurious timeout errors
riscv: dts: starfive: disable unused csi/camss nodes
RISC-V: disallow gcc + rust builds
Dai Ngo (1):
NFS: remove revoked delegation from server's delegation list
Dan Carpenter (2):
drm/mediatek: Fix potential NULL dereference in mtk_crtc_destroy() drm/tegra: Fix NULL vs IS_ERR() check in probe()
Dan Williams (4):
cxl/port: Fix use-after-free, permit out-of-order decoder shutdown cxl/port: Fix CXL port initialization order when the subsystem is built-in cxl/port: Fix cxl_bus_rescan() vs bus_rescan_devices() cxl/acpi: Ensure ports ready at cxl_acpi_probe() return
Daniel Gabay (1):
wifi: iwlwifi: mvm: Fix response handling in iwl_mvm_send_recovery_cmd()
Daniel Golle (1):
net: ethernet: mtk_wed: fix path of MT7988 WO firmware
Daniel Palmer (1):
net: amd: mvme147: Fix probe banner message
Darrick J. Wong (4):
iomap: don't bother unsharing delalloc extents
iomap: share iomap_unshare_iter predicate code with fsdax
fsdax: remove zeroing code from dax_unshare_iter
fsdax: dax_unshare_iter needs to copy entire blocks
David Howells (1):
afs: Fix missing subdir edit when renamed between parent dirs
David Sterba (1):
MIPS: export __cmpxchg_small()
Dimitri Sivanich (1):
misc: sgi-gru: Don't disable preemption in GRU driver
Dmitry Torokhov (2):
Input: edt-ft5x06 - fix regmap leak when probe fails
Input: fix regression when re-registering input handlers
Dong Chenchen (1):
netfilter: Fix use-after-free in get_info()
E Shattow (1):
riscv: dts: starfive: Update ethernet phy0 delay parameter values for Star64
Eduard Zingerman (1):
bpf: Force checkpoint when jmp history is too long
Edward Adam Davis (1):
ocfs2: pass u64 to ocfs2_truncate_inline maybe overflow
Edward Liaw (2):
Revert "selftests/mm: fix deadlock for fork after pthread_create on ARM" Revert "selftests/mm: replace atomic_bool with pthread_barrier_t"
Emmanuel Grumbach (3):
wifi: iwlwifi: mvm: don't leak a link on AP removal
wifi: iwlwifi: mvm: don't add default link in fw restart flow Revert "wifi: iwlwifi: remove retry loops in start"
Eric Dumazet (1):
netfilter: nf_reject_ipv6: fix potential crash in nf_send_reset6()
Fabien Parent (1):
arm64: dts: qcom: msm8939: revert use of APCS mbox for RPM
Faisal Hassan (1):
xhci: Fix Link TRB DMA in command ring stopped completion event
Felix Fietkau (2):
wifi: mac80211: skip non-uploaded keys in ieee80211_iter_keys
wifi: mac80211: do not pass a stopped vif to the driver in .get_txpower
Filipe Manana (2):
btrfs: fix extent map merging not happening for adjacent extents
btrfs: fix defrag not merging contiguous extents due to merged extent maps
Florian Westphal (1):
lib: alloc_tag_module_unload must wait for pending kfree_rcu calls
Frank Li (1):
spi: spi-fsl-dspi: Fix crash when not using GPIO chip select
Frank Min (1):
drm/amdgpu: fix random data corruption for sdma 7
Furong Xu (1):
net: stmmac: TSO: Fix unbalanced DMA map/unmap for non-paged SKB data
Gatlin Newhouse (1):
x86/traps: Enable UBSAN traps on x86
Geert Uytterhoeven (2):
mac80211: MAC80211_MESSAGE_TRACING should depend on TRACING
wifi: brcm80211: BRCM_TRACING should depend on TRACING
Georgi Djakov (1):
spi: geni-qcom: Fix boot warning related to pm_runtime and devres
Gil Fine (1):
thunderbolt: Honor TMU requirements in the domain when setting TMU mode
Greg Kroah-Hartman (2):
Revert "driver core: Fix uevent_show() vs driver detach race" Linux 6.11.7
Gregory Price (2):
resource,kexec: walk_system_ram_res_rev must retain resource flags vmscan,migrate: fix page count imbalance on node stats when demoting pages
Guilherme Giacomo Simoes (1):
rust: device: change the from_raw() function
Gustavo Sousa (1):
drm/i915: Skip programming FIA link enable bits for MTL+
Haibo Chen (1):
arm64: dts: imx8ulp: correct the flexspi compatible string
Hans de Goede (1):
ACPI: resource: Fold Asus Vivobook Pro N6506M* DMI quirks together
Heinrich Schuchardt (1):
riscv: efi: Set NX compat flag in PE/COFF header
Hou Tao (3):
bpf: Free dynamically allocated bits in bpf_iter_bits_destroy()
bpf: Add bpf_mem_alloc_check_size() helper
bpf: Check the validity of nr_words in bpf_iter_bits_new()
Hsin-Te Yuan (1):
drm/mediatek: Fix color format MACROs in OVL
Hugh Dickins (1):
iov_iter: fix copy_page_from_iter_atomic() if KMAP_LOCAL_FORCE_MAP
Ido Schimmel (3):
ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_init_flow()
ipv4: ip_tunnel: Fix suspicious RCU usage warning in ip_tunnel_find()
mlxsw: spectrum_ipip: Fix memory leak when changing remote IPv6 address
Jan Schär (1):
ALSA: usb-audio: Add quirks for Dell WD19 dock
Jani Nikula (2):
drm/i915: move rawclk from runtime to display runtime info drm/xe/display: drop unused rawclk_freq and RUNTIME_INFO()
Jarkko Sakkinen (3):
tpm: Return tpm2_sessions_init() when null key creation fails
tpm: Rollback tpm2_load_null()
tpm: Lazily flush the auth session
Jason Gunthorpe (1):
PCI: Fix pci_enable_acs() support for the ACS quirks
Jason-JH.Lin (1):
drm/mediatek: ovl: Remove the color format comment for ovl_fmt_convert()
Javier Carrasco (4):
usb: typec: fix unreleased fwnode_handle in typec_port_register_altmodes()
usb: typec: qcom-pmic-typec: use fwnode_handle_put() to release fwnodes
usb: typec: qcom-pmic-typec: fix missing fwnode removal in error path
iio: light: veml6030: fix microlux value calculation
Jens Axboe (1):
io_uring/rw: fix missing NOWAIT check for O_DIRECT start write
Jeongjun Park (1):
mm: shmem: fix data-race in shmem_getattr()
Jianbo Liu (1):
macsec: Fix use-after-free while sending the offloading packet
Jinjie Ruan (5):
iio: gts-helper: Fix memory leaks for the error path of iio_gts_build_avail_scale_table()
iio: gts-helper: Fix memory leaks in iio_gts_build_avail_scale_table() drm/tests: helpers: Add helper for drm_display_mode_from_cea_vic() drm/connector: hdmi: Fix memory leak in drm_display_mode_from_cea_vic() drm/tests: hdmi: Fix memory leaks in drm_display_mode_from_cea_vic()
Jiri Slaby (1):
perf trace: Fix non-listed archs in the syscalltbl routines
Johan Hovold (11):
phy: qcom: qmp-usb: fix NULL-deref on runtime suspend
phy: qcom: qmp-usb-legacy: fix NULL-deref on runtime suspend
phy: qcom: qmp-usbc: fix NULL-deref on runtime suspend
gpiolib: fix debugfs newline separators
gpiolib: fix debugfs dangling chip separator
arm64: dts: qcom: x1e80100-yoga-slim7x: fix nvme regulator boot glitch
arm64: dts: qcom: x1e80100-vivobook-s15: fix nvme regulator boot glitch
arm64: dts: qcom: x1e80100: fix PCIe4 interconnect
arm64: dts: qcom: x1e80100-qcp: fix nvme regulator boot glitch
arm64: dts: qcom: x1e80100-crd: fix nvme regulator boot glitch
arm64: dts: qcom: x1e80100: fix PCIe4 and PCIe6a PHY clocks
Johannes Berg (2):
wifi: cfg80211: clear wdev->cqm_config pointer on free
wifi: iwlwifi: mvm: fix 6 GHz scan construction
John Garry (1):
scsi: scsi_debug: Fix do_device_access() handling of unexpected SG copy length
Jouni Högander (1):
drm/i915/psr: Prevent Panel Replay if CRC calculation is enabled
Juha-Pekka Heikkila (1):
drm/i915/display: Don't enable decompression on Xe2 with Tile4
Julien Stephan (1):
dt-bindings: iio: adc: ad7380: fix ad7380-4 reference supply
Kailang Yang (1):
ALSA: hda/realtek: Limit internal Mic boost on Dell platform
Keith Busch (2):
nvme: module parameter to disable pi with offsets
nvme: re-fix error-handling for io_uring nvme-passthrough
Konrad Dybcio (1):
arm64: dts: qcom: x1e80100: Fix up BAR spaces
Konstantin Komarov (8):
fs/ntfs3: Fix warning possible deadlock in ntfs_set_state fs/ntfs3: Stale inode instead of bad
fs/ntfs3: Add rough attr alloc_size check
fs/ntfs3: Fix possible deadlock in mi_read
fs/ntfs3: Additional check in ni_clear()
fs/ntfs3: Fix general protection fault in run_is_mapped_full fs/ntfs3: Additional check in ntfs_file_release fs/ntfs3: Sequential field availability check in mi_enum_attr()
Leon Romanovsky (1):
RDMA/cxgb4: Dump vendor specific QP details
Ley Foon Tan (1):
net: stmmac: dwmac4: Fix high address display by updating reg_space[] from register values
Liankun Yang (1):
drm/mediatek: Fix get efuse issue for MT8188 DPTX
Lorenzo Stoakes (2):
fork: do not invoke uffd on fork if error occurs
fork: only invoke khugepaged, ksm hooks if no error
Manikanta Pubbisetty (1):
wifi: ath10k: Fix memory leak in management tx
Marco Elver (1):
kasan: Fix Software Tag-Based KASAN with GCC
Matt Fleming (1):
mm/page_alloc: let GFP_ATOMIC order-0 allocs access highatomic reserves
Matt Johnston (1):
mctp i2c: handle NULL header address
Matthew Auld (1):
drm/i915: disable fbc due to Wa_16023588340
Matthew Brost (2):
drm/xe: Add mmio read before GGTT invalidate drm/xe: Don't short circuit TDR on jobs not started
Matthieu Baerts (NGI0) (1):
mptcp: init: protect sched with rcu_read_lock
Michal Wajdeczko (2):
drm/xe: Fix register definition order in xe_regs.h drm/xe: Kill regs/xe_sriov_regs.h
Mika Westerberg (1):
thunderbolt: Fix KASAN reported stack out-of-bounds read in tb_retimer_scan()
Miquel Sabaté Solà (1):
riscv: Prevent a bad reference count on CPU nodes
Miri Korenblit (1):
wifi: iwlwifi: mvm: really send iwl_txpower_constraints_cmd
Mitul Golani (3):
drm/i915/display: Cache adpative sync caps to use it later drm/i915/display: WA for Re-initialize dispcnlunitt1 xosc clock drm/i915/display/dp: Compute AS SDP when vrr is also enabled
Naohiro Aota (1):
btrfs: fix error propagation of split bios
Ovidiu Bunea (1):
Revert "drm/amd/display: update DML2 policy EnhancedPrefetchScheduleAccelerationFinal DCN35"
Pablo Neira Ayuso (2):
gtp: allow -1 to be specified as file description from userspace
netfilter: nft_payload: sanitize offset and length before calling skb_checksum()
Pali Rohár (2):
cifs: Improve creating native symlinks pointing to directory
cifs: Fix creating native symlinks pointing to current or parent directory
Patrisious Haddad (1):
RDMA/mlx5: Round max_rd_atomic/max_dest_rd_atomic up instead of down
Paulo Alcantara (2):
smb: client: fix parsing of device numbers
smb: client: set correct device number on nfs reparse points
Pedro Tammela (1):
net/sched: stop qdisc_tree_reduce_backlog on TC_H_ROOT
Pei Xiao (1):
slub/kunit: fix a WARNING due to unwrapped __kmalloc_cache_noprof
Peter Wang (1):
scsi: ufs: core: Fix another deadlock during RTC update
Pierre Gondois (1):
ACPI: CPPC: Make rmw_lock a raw_spin_lock
Ping-Ke Shih (1):
wifi: rtw89: pci: early chips only enable 36-bit DMA on specific PCI hosts
Qu Wenruo (1):
btrfs: merge btrfs_orig_bbio_end_io() into btrfs_bio_end_io()
Remi Pommarel (1):
wifi: ath11k: Fix invalid ring usage in full monitor mode
Richard Zhu (1):
phy: freescale: imx8m-pcie: Do CMN_RST just before PHY PLL lock check
Ryusuke Konishi (2):
nilfs2: fix kernel bug due to missing clearing of checked flag
nilfs2: fix potential deadlock with newly created symlinks
Sabyrzhan Tasbolatov (1):
x86/traps: move kmsan check after instrumentation_begin
Sai Teja Pottumuttu (1):
drm/xe/xe2hpg: Introduce performance tuning changes for Xe2_HPG
Selvin Xavier (2):
RDMA/bnxt_re: Fix the usage of control path spin locks RDMA/bnxt_re: synchronize the qp-handle table array
Shawn Wang (1):
sched/numa: Fix the potential null pointer dereference in task_numa_work()
Shekhar Chauhan (1):
drm/xe/xe2: Add performance turning changes
Shiju Jose (1):
cxl/events: Fix Trace DRAM Event Record
Sumeet Pawnikar (1):
powercap: intel_rapl_msr: Add PL4 support for Arrowlake-U
Sungwoo Kim (1):
Bluetooth: hci: fix null-ptr-deref in hci_read_supported_codecs
Suraj Kandpal (4):
drm/i915/hdcp: Add encoder check in intel_hdcp_get_capability drm/i915/hdcp: Add encoder check in hdcp2_get_capability drm/i915/dp: Clear VSC SDP during post ddi disable routine drm/i915/pps: Disable DPLS_GATING around pps sequence
Tejas Upadhyay (4):
drm/xe/xe2hpg: Add Wa_15016589081
drm/xe: Move enable host l2 VRAM post MCR init drm/xe: Define STATELESS_COMPRESSION_CTRL as mcr register drm/xe: Write all slices if its mcr register
Thomas Zimmermann (1):
drm/xe: Support 'nomodeset' kernel command-line option
Toke Høiland-Jørgensen (1):
bpf, test_run: Fix LIVE_FRAME frame update after a page has been recycled
Tvrtko Ursulin (1):
drm/amd/pm: Vangogh: Fix kernel memory out of bounds write
Uladzislau Rezki (Sony) (2):
rcu/kvfree: Add kvfree_rcu_barrier() API rcu/kvfree: Refactor kvfree_rcu_queue_batch()
Ville Syrjälä (1):
wifi: iwlegacy: Clear stale interrupts before resuming device
Vitaliy Shevtsov (1):
nvmet-auth: assign dh_key to NULL after kfree_sensitive
Vladimir Oltean (1):
net/sched: sch_api: fix xa_insert() error path in tcf_block_get_ext()
Vlastimil Babka (1):
mm, mmap: limit THP alignment of anonymous mappings to PMD-aligned sizes
Wang Liang (1):
net: fix crash when config small gso_max_size/gso_ipv4_max_size
WangYuli (1):
riscv: Use '%u' to format the output of 'cpu'
Wladislav Wiebe (1):
tools/mm: -Werror fixes in page-types/slabinfo
Xinyu Zhang (1):
block: fix sanity checks in blk_rq_map_user_bvec
Xiongfeng Wang (1):
firmware: arm_sdei: Fix the input parameter of cpuhp_remove_state()
Xiu Jianfeng (1):
cgroup: Fix potential overflow issue when checking max_depth
Yu Zhao (2):
mm: multi-gen LRU: remove MM_LEAF_OLD and MM_NONLEAF_TOTAL stats
mm: multi-gen LRU: use {ptep,pmdp}_clear_young_notify()
Yuanchu Xie (1):
mm: multi-gen LRU: ignore non-leaf pmd_young for force_scan=true
Yunhui Cui (1):
RISC-V: ACPI: fix early_ioremap to early_memremap
Zhang Rui (2):
thermal: intel: int340x: processor: Remove MMIO RAPL CPU hotplug support
thermal: intel: int340x: processor: Add MMIO RAPL PL4 supportZhiguo Jiang (1):
mm: shrink skip folio mapped by an exiting process
Zhihao Cheng (1):
btrfs: fix use-after-free of block device file in __btrfs_free_extra_devids()
Zichen Xie (1):
netdevsim: Add trailing zero to terminate the string in nsim_nexthop_bucket_activity_write()
Zicheng Qu (2):
staging: iio: frequency: ad9832: fix division by zero in ad9832_calc_freqreg()
iio: adc: ad7124: fix division by zero in ad7124_set_channel_odr()
Zijun Hu (1):
usb: phy: Fix API devm_usb_put_phy() can not release the phy
Zongmin Zhou (1):
usbip: tools: Fix detach_port() invalid port error path
lei lu (1):
ntfs3: Add bounds checking to mi_enum_attr()
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/iio/adc/adi,ad7380.yaml +21 -0
@@ -54,6 +54,10 @@ properties: A 2.5V to 3.3V supply for the external reference voltage. When omitted, the internal 2.5V reference is used. + refin-supply: + description: + A 2.5V to 3.3V supply for external reference voltage, for ad7380-4 only. + aina-supply: description: The common mode voltage supply for the AINA- pin on pseudo-differential
@@ -122,6 +126,23 @@ allOf: ainc-supply: false aind-supply: false + # ad7380-4 uses refin-supply as external reference. + # All other chips from ad738x family use refio as optional external reference. + # When refio-supply is omitted, internal reference is used. + - if: + properties: + compatible: + enum: + - adi,ad7380-4 + then: + properties: + refio-supply: false + required: + - refin-supply + else: + properties: + refin-supply: false + examples: - | #include <dt-bindings/interrupt-controller/irq.h>
Documentation/driver-api/dpll.rst +21 -0
@@ -214,6 +214,27 @@ offset values are fractional with 3-digit decimal places and shell be divided with ``DPLL_PIN_PHASE_OFFSET_DIVIDER`` to get integer part and modulo divided to get fractional part. +Embedded SYNC +============= + +Device may provide ability to use Embedded SYNC feature. It allows +to embed additional SYNC signal into the base frequency of a pin - a one +special pulse of base frequency signal every time SYNC signal pulse +happens. The user can configure the frequency of Embedded SYNC. +The Embedded SYNC capability is always related to a given base frequency +and HW capabilities. The user is provided a range of Embedded SYNC +frequencies supported, depending on current base frequency configured for +the pin. + + ========================================= ================================= + ``DPLL_A_PIN_ESYNC_FREQUENCY`` current Embedded SYNC frequency + ``DPLL_A_PIN_ESYNC_FREQUENCY_SUPPORTED`` nest available Embedded SYNC + frequency ranges + ``DPLL_A_PIN_FREQUENCY_MIN`` attr minimum value of frequency + ``DPLL_A_PIN_FREQUENCY_MAX`` attr maximum value of frequency + ``DPLL_A_PIN_ESYNC_PULSE`` pulse type of Embedded SYNC + ========================================= ================================= + Configuration commands group ============================
Documentation/netlink/specs/dpll.yaml +24 -0
@@ -345,6 +345,26 @@ attribute-sets: Value is in PPM (parts per million). This may be implemented for example for pin of type PIN_TYPE_SYNCE_ETH_PORT. + - + name: esync-frequency + type: u64 + doc: | + Frequency of Embedded SYNC signal. If provided, the pin is configured + with a SYNC signal embedded into its base clock frequency. + - + name: esync-frequency-supported + type: nest + multi-attr: true + nested-attributes: frequency-range + doc: | + If provided a pin is capable of embedding a SYNC signal (within given + range) into its base frequency signal. + - + name: esync-pulse + type: u32 + doc: | + A ratio of high to low state of a SYNC signal pulse embedded + into base clock frequency. Value is in percents. - name: pin-parent-device subset-of: pin
@@ -510,6 +530,9 @@ operations: - phase-adjust-max - phase-adjust - fractional-frequency-offset + - esync-frequency + - esync-frequency-supported + - esync-pulse dump: request:
@@ -536,6 +559,7 @@ operations: - parent-device - parent-pin - phase-adjust + - esync-frequency - name: pin-create-ntf doc: Notification about pin appearing
Documentation/rust/arch-support.rst +1 -1
@@ -17,7 +17,7 @@ Architecture Level of support Constraints ============= ================ ============================================== ``arm64`` Maintained Little Endian only. ``loongarch`` Maintained \- -``riscv`` Maintained ``riscv64`` only. +``riscv`` Maintained ``riscv64`` and LLVM/Clang only. ``um`` Maintained \- ``x86`` Maintained ``x86_64`` only. ============= ================ ==============================================
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 11 -SUBLEVEL = 6 +SUBLEVEL = 7 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm64/boot/dts/freescale/imx8ulp.dtsi +1 -1
@@ -384,7 +384,7 @@ pcc4: clock-controller@29800000 { }; flexspi2: spi@29810000 { - compatible = "nxp,imx8mm-fspi"; + compatible = "nxp,imx8ulp-fspi"; reg = <0x29810000 0x10000>, <0x60000000 0x10000000>; reg-names = "fspi_base", "fspi_mmap"; #address-cells = <1>;
arch/arm64/boot/dts/qcom/msm8939.dtsi +1 -1
@@ -248,7 +248,7 @@ rpm: remoteproc { smd-edge { interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; - mboxes = <&apcs1_mbox 0>; + qcom,ipc = <&apcs1_mbox 8 0>; qcom,smd-edge = <15>; rpm_requests: rpm-requests {
arch/arm64/boot/dts/qcom/x1e80100-asus-vivobook-s15.dts +2 -0
@@ -134,6 +134,8 @@ vreg_nvme: regulator-nvme { pinctrl-0 = <&nvme_reg_en>; pinctrl-names = "default"; + + regulator-boot-on; }; };
arch/arm64/boot/dts/qcom/x1e80100-crd.dts +2 -0
@@ -283,6 +283,8 @@ vreg_nvme: regulator-nvme { pinctrl-names = "default"; pinctrl-0 = <&nvme_reg_en>; + + regulator-boot-on; }; };
arch/arm64/boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts +2 -0
@@ -206,6 +206,8 @@ vreg_nvme: regulator-nvme { pinctrl-0 = <&nvme_reg_en>; pinctrl-names = "default"; + + regulator-boot-on; }; };
arch/arm64/boot/dts/qcom/x1e80100-qcp.dts +2 -0
@@ -253,6 +253,8 @@ vreg_nvme: regulator-nvme { pinctrl-names = "default"; pinctrl-0 = <&nvme_reg_en>; + + regulator-boot-on; }; };
arch/arm64/boot/dts/qcom/x1e80100.dtsi +20 -14
@@ -2895,9 +2895,9 @@ pcie6a: pci@1bf8000 { "mhi"; #address-cells = <3>; #size-cells = <2>; - ranges = <0x01000000 0 0x00000000 0 0x70200000 0 0x100000>, - <0x02000000 0 0x70300000 0 0x70300000 0 0x3d00000>; - bus-range = <0 0xff>; + ranges = <0x01000000 0x0 0x00000000 0x0 0x70200000 0x0 0x100000>, + <0x02000000 0x0 0x70300000 0x0 0x70300000 0x0 0x1d00000>; + bus-range = <0x00 0xff>; dma-coherent;
@@ -2973,14 +2973,16 @@ pcie6a_phy: phy@1bfc000 { clocks = <&gcc GCC_PCIE_6A_PHY_AUX_CLK>, <&gcc GCC_PCIE_6A_CFG_AHB_CLK>, - <&rpmhcc RPMH_CXO_CLK>, + <&tcsr TCSR_PCIE_4L_CLKREF_EN>, <&gcc GCC_PCIE_6A_PHY_RCHNG_CLK>, - <&gcc GCC_PCIE_6A_PIPE_CLK>; + <&gcc GCC_PCIE_6A_PIPE_CLK>, + <&gcc GCC_PCIE_6A_PIPEDIV2_CLK>; clock-names = "aux", "cfg_ahb", "ref", "rchng", - "pipe"; + "pipe", + "pipediv2"; resets = <&gcc GCC_PCIE_6A_PHY_BCR>, <&gcc GCC_PCIE_6A_NOCSR_COM_PHY_BCR>;
@@ -3017,8 +3019,8 @@ pcie4: pci@1c08000 { "mhi"; #address-cells = <3>; #size-cells = <2>; - ranges = <0x01000000 0 0x00000000 0 0x7c200000 0 0x100000>, - <0x02000000 0 0x7c300000 0 0x7c300000 0 0x3d00000>; + ranges = <0x01000000 0x0 0x00000000 0x0 0x7c200000 0x0 0x100000>, + <0x02000000 0x0 0x7c300000 0x0 0x7c300000 0x0 0x1d00000>; bus-range = <0x00 0xff>; dma-coherent;
@@ -3068,7 +3070,7 @@ pcie4: pci@1c08000 { assigned-clocks = <&gcc GCC_PCIE_4_AUX_CLK>; assigned-clock-rates = <19200000>; - interconnects = <&pcie_south_anoc MASTER_PCIE_4 QCOM_ICC_TAG_ALWAYS + interconnects = <&pcie_north_anoc MASTER_PCIE_4 QCOM_ICC_TAG_ALWAYS &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ALWAYS &cnoc_main SLAVE_PCIE_4 QCOM_ICC_TAG_ALWAYS>;
@@ -3105,14 +3107,16 @@ pcie4_phy: phy@1c0e000 { clocks = <&gcc GCC_PCIE_4_AUX_CLK>, <&gcc GCC_PCIE_4_CFG_AHB_CLK>, - <&rpmhcc RPMH_CXO_CLK>, + <&tcsr TCSR_PCIE_2L_4_CLKREF_EN>, <&gcc GCC_PCIE_4_PHY_RCHNG_CLK>, - <&gcc GCC_PCIE_4_PIPE_CLK>; + <&gcc GCC_PCIE_4_PIPE_CLK>, + <&gcc GCC_PCIE_4_PIPEDIV2_CLK>; clock-names = "aux", "cfg_ahb", "ref", "rchng", - "pipe"; + "pipe", + "pipediv2"; resets = <&gcc GCC_PCIE_4_PHY_BCR>; reset-names = "phy";
@@ -5700,7 +5704,8 @@ system-cache-controller@25000000 { <0 0x25a00000 0 0x200000>, <0 0x25c00000 0 0x200000>, <0 0x25e00000 0 0x200000>, - <0 0x26000000 0 0x200000>; + <0 0x26000000 0 0x200000>, + <0 0x26200000 0 0x200000>; reg-names = "llcc0_base", "llcc1_base", "llcc2_base",
@@ -5709,7 +5714,8 @@ system-cache-controller@25000000 { "llcc5_base", "llcc6_base", "llcc7_base", - "llcc_broadcast_base"; + "llcc_broadcast_base", + "llcc_broadcast_and_base"; interrupts = <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>; };
arch/mips/kernel/cmpxchg.c +1 -0
@@ -102,3 +102,4 @@ unsigned long __cmpxchg_small(volatile void *ptr, unsigned long old,return old; } } +EXPORT_SYMBOL (__cmpxchg_small);
arch/riscv/Kconfig +1 -1
@@ -172,7 +172,7 @@ config RISCV select HAVE_REGS_AND_STACK_ACCESS_API select HAVE_RETHOOK if !XIP_KERNEL select HAVE_RSEQ - select HAVE_RUST if 64BIT + select HAVE_RUST if 64BIT && CC_IS_CLANG select HAVE_SAMPLE_FTRACE_DIRECT select HAVE_SAMPLE_FTRACE_DIRECT_MULTI select HAVE_STACKPROTECTOR
arch/riscv/boot/dts/starfive/jh7110-common.dtsi +0 -2
@@ -128,7 +128,6 @@ &camss { assigned-clocks = <&ispcrg JH7110_ISPCLK_DOM4_APB_FUNC>, <&ispcrg JH7110_ISPCLK_MIPI_RX0_PXL>; assigned-clock-rates = <49500000>, <198000000>; - status = "okay"; ports { #address-cells = <1>;
@@ -151,7 +150,6 @@ camss_from_csi2rx: endpoint { &csi2rx { assigned-clocks = <&ispcrg JH7110_ISPCLK_VIN_SYS>; assigned-clock-rates = <297000000>; - status = "okay"; ports { #address-cells = <1>;
arch/riscv/boot/dts/starfive/jh7110-pine64-star64.dts +1 -2
@@ -44,8 +44,7 @@ &pcie1 { }; &phy0 { - rx-internal-delay-ps = <1900>; - tx-internal-delay-ps = <1500>; + rx-internal-delay-ps = <1500>; motorcomm,rx-clk-drv-microamp = <2910>; motorcomm,rx-data-drv-microamp = <2910>; motorcomm,tx-clk-adj-enabled;
arch/riscv/kernel/acpi.c +2 -2
@@ -210,7 +210,7 @@ void __init __iomem *__acpi_map_table(unsigned long phys, unsigned long size)if (!size)return NULL ; -return early_ioremap (phys, size); +return early_memremap (phys, size); }void __init __acpi_unmap_table (void __iomem *map,unsigned long size)
@@ -218,7 +218,7 @@ void __init __acpi_unmap_table(void __iomem *map, unsigned long size)if (!map || !size)return ; -early_iounmap (map, size); +early_memunmap (map, size); }void __iomem *acpi_os_ioremap (acpi_physical_address phys,acpi_size size)
arch/riscv/kernel/asm-offsets.c +0 -2
@@ -4,8 +4,6 @@* Copyright (C) 2017 SiFive */ -#define GENERATING_ASM_OFFSETS -#include <linux/kbuild.h> #include <linux/mm.h> #include <linux/sched.h>
arch/riscv/kernel/cacheinfo.c +5 -2
@@ -75,8 +75,7 @@ int populate_cache_leaves(unsigned int cpu) {struct cpu_cacheinfo *this_cpu_ci =get_cpu_cacheinfo (cpu);struct cacheinfo *this_leaf = this_cpu_ci->info_list; -struct device_node *np =of_cpu_device_node_get (cpu); -struct device_node *prev =NULL ; +struct device_node *np, *prev;int levels =1 , level =1 ;if (!acpi_disabled) {
@@ -100,6 +99,10 @@ int populate_cache_leaves(unsigned int cpu)return 0 ; } + np =of_cpu_device_node_get (cpu); +if (!np) +return -ENOENT ; +if (of_property_read_bool (np,"cache-size" ))ci_leaf_init (this_leaf++,CACHE_TYPE_UNIFIED , level);if (of_property_read_bool (np,"i-cache-size" ))
arch/riscv/kernel/cpu-hotplug.c +1 -1
@@ -58,7 +58,7 @@ void arch_cpuhp_cleanup_dead_cpu(unsigned int cpu)if (cpu_ops->cpu_is_stopped) ret = cpu_ops->cpu_is_stopped (cpu);if (ret) -pr_warn ("CPU%d may not have stopped: %d\n" , cpu, ret); +pr_warn ("CPU%u may not have stopped: %d\n" , cpu, ret); }/*
arch/riscv/kernel/efi-header.S +1 -1
@@ -64,7 +64,7 @@ extra_header_fields: .long efi_header_end - _start // SizeOfHeaders .long 0 // CheckSum .short IMAGE_SUBSYSTEM_EFI_APPLICATION // Subsystem - .short 0 // DllCharacteristics + .short IMAGE_DLL_CHARACTERISTICS_NX_COMPAT // DllCharacteristics .quad 0 // SizeOfStackReserve .quad 0 // SizeOfStackCommit .quad 0 // SizeOfHeapReserve
arch/riscv/kernel/traps_misaligned.c +0 -2
@@ -136,8 +136,6 @@#define REG_PTR (insn, pos, regs) \ (ulong *)((ulong)(regs) + REG_OFFSET(insn, pos)) -#define GET_RM (insn) (((insn) >> 12) & 7) -#define GET_RS1 (insn, regs) (*REG_PTR(insn, SH_RS1, regs))#define GET_RS2 (insn, regs) (*REG_PTR(insn, SH_RS2, regs))#define GET_RS1S (insn, regs) (*REG_PTR(RVC_RS1S(insn), 0, regs))
arch/riscv/kernel/vdso/Makefile +1 -0
@@ -18,6 +18,7 @@ obj-vdso = $(patsubst %, %.o, $(vdso-syms)) note.o ccflags-y := -fno-stack-protector ccflags-y += -DDISABLE_BRANCH_PROFILING +ccflags-y += -fno-builtin ifneq ($(c-gettimeofday-y),) CFLAGS_vgettimeofday.o += -fPIC -include $(c-gettimeofday-y)
arch/x86/include/asm/bug.h +12 -0
@@ -13,6 +13,18 @@#define INSN_UD2 0x0b0f#define LEN_UD2 2 +/* +* In clang we have UD1s reporting UBSAN failures on X86, 64 and 32bit. +*/ +#define INSN_ASOP 0x67 +#define OPCODE_ESCAPE 0x0f +#define SECOND_BYTE_OPCODE_UD1 0xb9 +#define SECOND_BYTE_OPCODE_UD2 0x0b + +#define BUG_NONE 0xffff +#define BUG_UD1 0xfffe +#define BUG_UD2 0xfffd +#ifdef CONFIG_GENERIC_BUG #ifdef CONFIG_X86_32
arch/x86/kernel/traps.c +60 -11
102 lines not on this page · raw message
block/blk-map.c +1 -3
@@ -600,9 +600,7 @@ static int blk_rq_map_user_bvec(struct request *rq, const struct iov_iter *iter)if (nsegs >= nr_segs || bytes >UINT_MAX - bv->bv_len) goto put_bio;if (bytes + bv->bv_len > nr_iter) - goto put_bio; -if (bv->bv_offset + bv->bv_len >PAGE_SIZE ) - goto put_bio; +break ; nsegs++; bytes += bv->bv_len;
drivers/accel/ivpu/ivpu_debugfs.c +9 -0
@@ -108,6 +108,14 @@ static int reset_pending_show(struct seq_file *s, void *v)return 0 ; } +static int firewall_irq_counter_show (struct seq_file *s,void *v) +{ +struct ivpu_device *vdev =seq_to_ivpu (s); + +seq_printf (s,"%d\n" ,atomic_read (&vdev->hw->firewall_irq_counter)); +return 0 ; +} +static const struct drm_debugfs_info vdev_debugfs_list[] = { {"bo_list" , bo_list_show,0 }, {"fw_name" , fw_name_show,0 },
@@ -116,6 +124,7 @@ static const struct drm_debugfs_info vdev_debugfs_list[] = { {"last_bootmode", last_bootmode_show, 0}, {"reset_counter", reset_counter_show, 0}, {"reset_pending", reset_pending_show, 0}, + {"firewall_irq_counter", firewall_irq_counter_show, 0}, }; static ssize_t
drivers/accel/ivpu/ivpu_hw.c +1 -0
@@ -249,6 +249,7 @@ int ivpu_hw_init(struct ivpu_device *vdev)platform_init (vdev);wa_init (vdev);timeouts_init (vdev); +atomic_set (&vdev->hw->firewall_irq_counter,0 );return 0 ; }
drivers/accel/ivpu/ivpu_hw.h +1 -0
@@ -52,6 +52,7 @@ struct ivpu_hw_info {int dma_bits;ktime_t d0i3_entry_host_ts;u64 d0i3_entry_vpu_ts; +atomic_t firewall_irq_counter; };int ivpu_hw_init (struct ivpu_device *vdev);
drivers/accel/ivpu/ivpu_hw_ip.c +4 -1
@@ -1062,7 +1062,10 @@ static void irq_wdt_mss_handler(struct ivpu_device *vdev)static void irq_noc_firewall_handler (struct ivpu_device *vdev) { -ivpu_pm_trigger_recovery (vdev,"NOC Firewall IRQ" ); +atomic_inc (&vdev->hw->firewall_irq_counter); + +ivpu_dbg (vdev,IRQ ,"NOC Firewall interrupt detected, counter %d\n" , +atomic_read (&vdev->hw->firewall_irq_counter)); }/* Handler for IRQs from NPU core */
drivers/acpi/cppc_acpi.c +5 -4
@@ -867,7 +867,7 @@ int acpi_cppc_processor_probe(struct acpi_processor *pr)/* Store CPU Logical ID */ cpc_ptr->cpu_id = pr->id; -spin_lock_init (&cpc_ptr->rmw_lock); +raw_spin_lock_init (&cpc_ptr->rmw_lock);/* Parse PSD data for this CPU */ ret =acpi_get_psd (cpc_ptr, handle);
@@ -1087,6 +1087,7 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)int pcc_ss_id =per_cpu (cpu_pcc_subspace_idx, cpu);struct cpc_reg *reg = ®_res->cpc_entry.reg;struct cpc_desc *cpc_desc; +unsigned long flags; size =GET_BIT_WIDTH (reg);
@@ -1126,7 +1127,7 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val)return -ENODEV ; } -spin_lock (&cpc_desc->rmw_lock); +raw_spin_lock_irqsave (&cpc_desc->rmw_lock, flags);switch (size) {case 8 : prev_val =readb_relaxed (vaddr);
@@ -1141,7 +1142,7 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val) prev_val =readq_relaxed (vaddr);break ;default : -spin_unlock (&cpc_desc->rmw_lock); +raw_spin_unlock_irqrestore (&cpc_desc->rmw_lock, flags);return -EFAULT ; } val =MASK_VAL_WRITE (reg, prev_val, val);
@@ -1174,7 +1175,7 @@ static int cpc_write(int cpu, struct cpc_register_resource *reg_res, u64 val) }if (reg->space_id ==ACPI_ADR_SPACE_SYSTEM_MEMORY ) -spin_unlock (&cpc_desc->rmw_lock); +raw_spin_unlock_irqrestore (&cpc_desc->rmw_lock, flags);return ret_val; }
drivers/acpi/resource.c +2 -16
@@ -511,24 +511,10 @@ static const struct dmi_system_id irq1_level_low_skip_override[] = { }, }, { -/* Asus Vivobook Pro N6506MV */ +/* Asus Vivobook Pro N6506M* */ .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "N6506MV"), - }, - }, - { -/* Asus Vivobook Pro N6506MU */ - .matches = { -DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "N6506MU"), - }, - }, - { -/* Asus Vivobook Pro N6506MJ */ - .matches = { -DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "N6506MJ"), + DMI_MATCH(DMI_BOARD_NAME, "N6506M"), }, }, {
drivers/base/core.c +40 -8
80 lines not on this page · raw message
drivers/base/module.c +0 -4
@@ -7,7 +7,6 @@#include <linux/errno.h> #include <linux/slab.h> #include <linux/string.h> -#include <linux/rcupdate.h> #include "base.h" static char *make_driver_name (const struct device_driver *drv)
@@ -102,9 +101,6 @@ void module_remove_driver(const struct device_driver *drv)if (!drv)return ; -/* Synchronize with dev_uevent() */ -synchronize_rcu (); -sysfs_remove_link (&drv->p->kobj,"module" );if (drv->owner)
drivers/char/tpm/tpm-chip.c +10 -0
@@ -674,6 +674,16 @@ EXPORT_SYMBOL_GPL(tpm_chip_register);*/ void tpm_chip_unregister (struct tpm_chip *chip) { +#ifdef CONFIG_TCG_TPM2_HMAC +int rc; + + rc =tpm_try_get_ops (chip); +if (!rc) { +tpm2_end_auth_session (chip); +tpm_put_ops (chip); + } +#endif +tpm_del_legacy_sysfs (chip);if (tpm_is_hwrng_enabled (chip))hwrng_unregister (&chip->hwrng);
drivers/char/tpm/tpm-dev-common.c +3 -0
@@ -27,6 +27,9 @@ static ssize_t tpm_dev_transmit(struct tpm_chip *chip, struct tpm_space *space,struct tpm_header *header = (void *)buf;ssize_t ret, len; +if (chip->flags &TPM_CHIP_FLAG_TPM2 ) +tpm2_end_auth_session (chip); + ret =tpm2_prepare_space (chip, space, buf, bufsiz);/* If the command is not implemented by the TPM, synthesize a * response with a TPM2_RC_COMMAND_CODE return for user-space.
drivers/char/tpm/tpm-interface.c +4 -2
@@ -379,10 +379,12 @@ int tpm_pm_suspend(struct device *dev) rc =tpm_try_get_ops (chip);if (!rc) { -if (chip->flags &TPM_CHIP_FLAG_TPM2 ) +if (chip->flags &TPM_CHIP_FLAG_TPM2 ) { +tpm2_end_auth_session (chip);tpm2_shutdown (chip,TPM2_SU_STATE ); -else + }else { rc =tpm1_pm_suspend (chip, tpm_suspend_pcr); + }tpm_put_ops (chip); }
drivers/char/tpm/tpm2-sessions.c +60 -40
186 lines not on this page · raw message
drivers/cxl/Kconfig +1 -0
@@ -60,6 +60,7 @@ config CXL_ACPI default CXL_BUS select ACPI_TABLE_LIB select ACPI_HMAT + select CXL_PORT help Enable support for host managed device memory (HDM) resources published by a platform's ACPI CXL memory layout description. See
drivers/cxl/Makefile +14 -6
@@ -1,13 +1,21 @@ # SPDX-License-Identifier: GPL-2.0 + +# Order is important here for the built-in case: +# - 'core' first for fundamental init +# - 'port' before platform root drivers like 'acpi' so that CXL-root ports +# are immediately enabled +# - 'mem' and 'pmem' before endpoint drivers so that memdevs are +# immediately enabled +# - 'pci' last, also mirrors the hardware enumeration hierarchy obj-y += core/ -obj-$(CONFIG_CXL_PCI) += cxl_pci.o -obj-$(CONFIG_CXL_MEM) += cxl_mem.o +obj-$(CONFIG_CXL_PORT) += cxl_port.o obj-$(CONFIG_CXL_ACPI) += cxl_acpi.o obj-$(CONFIG_CXL_PMEM) += cxl_pmem.o -obj-$(CONFIG_CXL_PORT) += cxl_port.o +obj-$(CONFIG_CXL_MEM) += cxl_mem.o +obj-$(CONFIG_CXL_PCI) += cxl_pci.o -cxl_mem-y := mem.o -cxl_pci-y := pci.o +cxl_port-y := port.o cxl_acpi-y := acpi.o cxl_pmem-y := pmem.o security.o -cxl_port-y := port.o +cxl_mem-y := mem.o +cxl_pci-y := pci.o
drivers/cxl/acpi.c +7 -0
@@ -924,6 +924,13 @@ static void __exit cxl_acpi_exit(void)/* load before dax_hmem sees 'Soft Reserved' CXL ranges */ subsys_initcall (cxl_acpi_init); + +/* +* Arrange for host-bridge ports to be active synchronous with +* cxl_acpi_probe() exit. +*/ +MODULE_SOFTDEP ("pre: cxl_port" ); +module_exit (cxl_acpi_exit);MODULE_DESCRIPTION ("CXL ACPI: Platform Support" );MODULE_LICENSE ("GPL v2" );
drivers/cxl/core/hdm.c +42 -8
78 lines not on this page · raw message
drivers/cxl/core/port.c +10 -3
@@ -2088,11 +2088,18 @@ static void cxl_bus_remove(struct device *dev)static struct workqueue_struct *cxl_bus_wq; -static void cxl_bus_rescan_queue (struct work_struct *w) +static int cxl_rescan_attach (struct device *dev,void *data) { -int rc =bus_rescan_devices (&cxl_bus_type); +int rc =device_attach (dev); + +dev_vdbg (dev,"rescan: %s\n" , rc ?"attach" :"detached" ); -pr_debug ("CXL bus rescan result: %d\n" , rc); +return 0 ; +} + +static void cxl_bus_rescan_queue (struct work_struct *w) +{ +bus_for_each_dev (&cxl_bus_type,NULL ,NULL , cxl_rescan_attach); }void cxl_bus_rescan (void )
drivers/cxl/core/region.c +13 -35
92 lines not on this page · raw message
drivers/cxl/core/trace.h +14 -3
@@ -279,7 +279,7 @@ TRACE_EVENT(cxl_generic_event,#define CXL_GMER_MEM_EVT_TYPE_ECC_ERROR 0x00#define CXL_GMER_MEM_EVT_TYPE_INV_ADDR 0x01#define CXL_GMER_MEM_EVT_TYPE_DATA_PATH_ERROR 0x02 -#define show_mem_event_type (type) __print_symbolic(type, \ +#define show_gmer_mem_event_type (type) __print_symbolic(type, \ { CXL_GMER_MEM_EVT_TYPE_ECC_ERROR, "ECC Error" }, \ { CXL_GMER_MEM_EVT_TYPE_INV_ADDR, "Invalid Address" }, \ { CXL_GMER_MEM_EVT_TYPE_DATA_PATH_ERROR, "Data Path Error" } \
@@ -373,7 +373,7 @@ TRACE_EVENT(cxl_general_media,"hpa=%llx region=%s region_uuid=%pUb" , __entry->dpa,show_dpa_flags (__entry->dpa_flags),show_event_desc_flags (__entry->descriptor), -show_mem_event_type (__entry->type), +show_gmer_mem_event_type (__entry->type),show_trans_type (__entry->transaction_type), __entry->channel, __entry->rank, __entry->device, __print_hex(__entry->comp_id, CXL_EVENT_GEN_MED_COMP_ID_SIZE),
@@ -391,6 +391,17 @@ TRACE_EVENT(cxl_general_media,* DRAM Event Record defines many fields the same as the General Media Event * Record. Reuse those definitions as appropriate. */ +#define CXL_DER_MEM_EVT_TYPE_ECC_ERROR 0x00 +#define CXL_DER_MEM_EVT_TYPE_SCRUB_MEDIA_ECC_ERROR 0x01 +#define CXL_DER_MEM_EVT_TYPE_INV_ADDR 0x02 +#define CXL_DER_MEM_EVT_TYPE_DATA_PATH_ERROR 0x03 +#define show_dram_mem_event_type (type) __print_symbolic(type, \ + { CXL_DER_MEM_EVT_TYPE_ECC_ERROR, "ECC Error" }, \ + { CXL_DER_MEM_EVT_TYPE_SCRUB_MEDIA_ECC_ERROR, "Scrub Media ECC Error" }, \ + { CXL_DER_MEM_EVT_TYPE_INV_ADDR, "Invalid Address" }, \ + { CXL_DER_MEM_EVT_TYPE_DATA_PATH_ERROR, "Data Path Error" } \ +) +#define CXL_DER_VALID_CHANNEL BIT(0)#define CXL_DER_VALID_RANK BIT(1)#define CXL_DER_VALID_NIBBLE BIT(2)
@@ -477,7 +488,7 @@ TRACE_EVENT(cxl_dram,"hpa=%llx region=%s region_uuid=%pUb" , __entry->dpa,show_dpa_flags (__entry->dpa_flags),show_event_desc_flags (__entry->descriptor), -show_mem_event_type (__entry->type), +show_dram_mem_event_type (__entry->type),show_trans_type (__entry->transaction_type), __entry->channel, __entry->rank, __entry->nibble_mask, __entry->bank_group, __entry->bank,
drivers/cxl/cxl.h +2 -1
@@ -359,7 +359,7 @@ struct cxl_decoder {struct cxl_region *region;unsigned long flags;int (*commit)(struct cxl_decoder *cxld); -int (*reset)(struct cxl_decoder *cxld); +void (*reset)(struct cxl_decoder *cxld); };/*
@@ -730,6 +730,7 @@ static inline bool is_cxl_root(struct cxl_port *port)int cxl_num_decoders_committed (struct cxl_port *port);bool is_cxl_port (const struct device *dev);struct cxl_port *to_cxl_port (const struct device *dev); +void cxl_port_commit_reap (struct cxl_decoder *cxld);struct pci_bus ;int devm_cxl_register_pci_bus (struct device *host,struct device *uport_dev,struct pci_bus *bus);
drivers/cxl/port.c +16 -1
@@ -208,7 +208,22 @@ static struct cxl_driver cxl_port_driver = { }, }; -module_cxl_driver (cxl_port_driver); +static int __init cxl_port_init (void ) +{ +return cxl_driver_register (&cxl_port_driver); +} +/* +* Be ready to immediately enable ports emitted by the platform CXL root +* (e.g. cxl_acpi) when CONFIG_CXL_PORT=y. +*/ +subsys_initcall (cxl_port_init); + +static void __exit cxl_port_exit(void) +{ +cxl_driver_unregister (&cxl_port_driver); +} +module_exit (cxl_port_exit); +MODULE_DESCRIPTION ("CXL: Port enumeration and services" );MODULE_LICENSE ("GPL v2" );MODULE_IMPORT_NS (CXL );
drivers/dpll/dpll_netlink.c +130 -0
154 lines not on this page · raw message
drivers/dpll/dpll_nl.c +3 -2
@@ -62,7 +62,7 @@ static const struct nla_policy dpll_pin_get_dump_nl_policy[DPLL_A_PIN_ID + 1] = };/* DPLL_CMD_PIN_SET - do */ -static const struct nla_policy dpll_pin_set_nl_policy[DPLL_A_PIN_PHASE_ADJUST +1 ] = { +static const struct nla_policy dpll_pin_set_nl_policy[DPLL_A_PIN_ESYNC_FREQUENCY +1 ] = { [DPLL_A_PIN_ID ] = { .type =NLA_U32 , }, [DPLL_A_PIN_FREQUENCY ] = { .type =NLA_U64 , }, [DPLL_A_PIN_DIRECTION ] =NLA_POLICY_RANGE (NLA_U32 ,1 ,2 ),
@@ -71,6 +71,7 @@ static const struct nla_policy dpll_pin_set_nl_policy[DPLL_A_PIN_PHASE_ADJUST + [DPLL_A_PIN_PARENT_DEVICE] = NLA_POLICY_NESTED(dpll_pin_parent_device_nl_policy), [DPLL_A_PIN_PARENT_PIN] = NLA_POLICY_NESTED(dpll_pin_parent_pin_nl_policy), [DPLL_A_PIN_PHASE_ADJUST] = { .type = NLA_S32, }, + [DPLL_A_PIN_ESYNC_FREQUENCY] = { .type = NLA_U64, }, };/* Ops table for dpll */
@@ -138,7 +139,7 @@ static const struct genl_split_ops dpll_nl_ops[] = { .doit = dpll_nl_pin_set_doit, .post_doit = dpll_pin_post_doit, .policy = dpll_pin_set_nl_policy, - .maxattr = DPLL_A_PIN_PHASE_ADJUST, + .maxattr = DPLL_A_PIN_ESYNC_FREQUENCY, .flags = GENL_ADMIN_PERM | GENL_CMD_CAP_DO, }, };
drivers/firmware/arm_sdei.c +1 -1
@@ -763,7 +763,7 @@ static int sdei_device_freeze(struct device *dev)int err;/* unregister private events */ -cpuhp_remove_state (sdei_entry_point); +cpuhp_remove_state (sdei_hp_state); err =sdei_unregister_shared ();if (err)
drivers/firmware/microchip/mpfs-auto-update.c +7 -35
81 lines not on this page · raw message
drivers/gpio/gpio-sloppy-logic-analyzer.c +3 -1
@@ -235,7 +235,9 @@ static int gpio_la_poll_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ; -devm_mutex_init (dev, &priv->blob_lock); + ret =devm_mutex_init (dev, &priv->blob_lock); +if (ret) +return ret;fops_buf_size_set (priv,GPIO_LA_DEFAULT_BUF_SIZE );
drivers/gpio/gpiolib.c +3 -1
@@ -4834,6 +4834,8 @@ static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos)return NULL ; s->private = priv; +if (*pos >0 ) + priv->newline = true; priv->idx =srcu_read_lock (&gpio_devices_srcu); list_for_each_entry_srcu(gdev, &gpio_devices, list,
@@ -4877,7 +4879,7 @@ static int gpiolib_seq_show(struct seq_file *s, void *v) gc =srcu_dereference (gdev->chip, &gdev->srcu);if (!gc) { -seq_printf (s,"%s%s: (dangling chip)" , +seq_printf (s,"%s%s: (dangling chip)\n" , priv->newline ?"\n" :"" ,dev_name (&gdev->dev));return 0 ;
drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c +8 -1
@@ -51,6 +51,12 @@ MODULE_FIRMWARE("amdgpu/sdma_7_0_1.bin");#define SDMA0_HYP_DEC_REG_END 0x589a#define SDMA1_HYP_DEC_REG_OFFSET 0x20 +/*define for compression field for sdma7*/ +#define SDMA_PKT_CONSTANT_FILL_HEADER_compress_offset 0 +#define SDMA_PKT_CONSTANT_FILL_HEADER_compress_mask 0x00000001 +#define SDMA_PKT_CONSTANT_FILL_HEADER_compress_shift 16 +#define SDMA_PKT_CONSTANT_FILL_HEADER_COMPRESS (x) (((x) & SDMA_PKT_CONSTANT_FILL_HEADER_compress_mask) << SDMA_PKT_CONSTANT_FILL_HEADER_compress_shift) +static void sdma_v7_0_set_ring_funcs (struct amdgpu_device *adev);static void sdma_v7_0_set_buffer_funcs (struct amdgpu_device *adev);static void sdma_v7_0_set_vm_pte_funcs (struct amdgpu_device *adev);
@@ -1611,7 +1617,8 @@ static void sdma_v7_0_emit_fill_buffer(struct amdgpu_ib *ib, uint64_t dst_offset, uint32_t byte_count) { - ib->ptr[ib->length_dw++] =SDMA_PKT_COPY_LINEAR_HEADER_OP (SDMA_OP_CONST_FILL ); + ib->ptr[ib->length_dw++] =SDMA_PKT_CONSTANT_FILL_HEADER_OP (SDMA_OP_CONST_FILL ) | +SDMA_PKT_CONSTANT_FILL_HEADER_COMPRESS (1 ); ib->ptr[ib->length_dw++] =lower_32_bits (dst_offset); ib->ptr[ib->length_dw++] =upper_32_bits (dst_offset); ib->ptr[ib->length_dw++] = src_data;
drivers/gpu/drm/amd/display/dc/dml2/dml2_policy.c +1 -0
@@ -303,6 +303,7 @@ void build_unoptimized_policy_settings(enum dml_project_id project, struct dml_mif (project == dml_project_dcn35 || project == dml_project_dcn351) { policy->DCCProgrammingAssumesScanDirectionUnknownFinal = false; + policy->EnhancedPrefetchScheduleAccelerationFinal =0 ; policy->AllowForPStateChangeOrStutterInVBlankFinal = dml_prefetch_support_uclk_fclk_and_stutter_if_possible;/*new*/ policy->UseOnlyMaxPrefetchModes =1 ; }
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +14 -1
@@ -1234,6 +1234,14 @@ static void smu_init_xgmi_plpd_mode(struct smu_context *smu) } } +static bool smu_is_workload_profile_available (struct smu_context *smu, +u32 profile) +{ +if (profile >=PP_SMC_POWER_PROFILE_COUNT ) +return false; +return smu->workload_map && smu->workload_map[profile].valid_mapping; +} +static int smu_sw_init (void *handle) {struct amdgpu_device *adev = (struct amdgpu_device *)handle;
@@ -1257,7 +1265,6 @@ static int smu_sw_init(void *handle)atomic_set (&smu->smu_power.power_gate.vpe_gated,1 );atomic_set (&smu->smu_power.power_gate.umsch_mm_gated,1 ); - smu->workload_mask =1 << smu->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT ]; smu->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT ] =0 ; smu->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D ] =1 ; smu->workload_prority[PP_SMC_POWER_PROFILE_POWERSAVING ] =2 ;
@@ -1266,6 +1273,12 @@ static int smu_sw_init(void *handle) smu->workload_prority[PP_SMC_POWER_PROFILE_COMPUTE ] =5 ; smu->workload_prority[PP_SMC_POWER_PROFILE_CUSTOM ] =6 ; +if (smu->is_apu || + !smu_is_workload_profile_available (smu,PP_SMC_POWER_PROFILE_FULLSCREEN3D )) + smu->workload_mask =1 << smu->workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT ]; +else + smu->workload_mask =1 << smu->workload_prority[PP_SMC_POWER_PROFILE_FULLSCREEN3D ]; + smu->workload_setting[0 ] =PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT ; smu->workload_setting[1 ] =PP_SMC_POWER_PROFILE_FULLSCREEN3D ; smu->workload_setting[2 ] =PP_SMC_POWER_PROFILE_POWERSAVING ;
drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c +3 -1
@@ -242,7 +242,9 @@ static int vangogh_tables_init(struct smu_context *smu) goto err0_out; smu_table->metrics_time =0 ; - smu_table->gpu_metrics_table_size =max (sizeof (struct gpu_metrics_v2_3 ),sizeof (struct gpu_metrics_v2_2 )); + smu_table->gpu_metrics_table_size =sizeof (struct gpu_metrics_v2_2 ); + smu_table->gpu_metrics_table_size =max (smu_table->gpu_metrics_table_size,sizeof (struct gpu_metrics_v2_3 )); + smu_table->gpu_metrics_table_size =max (smu_table->gpu_metrics_table_size,sizeof (struct gpu_metrics_v2_4 )); smu_table->gpu_metrics_table =kzalloc (smu_table->gpu_metrics_table_size,GFP_KERNEL );if (!smu_table->gpu_metrics_table) goto err1_out;
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +3 -3
@@ -2485,7 +2485,7 @@ static int smu_v13_0_0_set_power_profile_mode(struct smu_context *smu,DpmActivityMonitorCoeffInt_t *activity_monitor = &(activity_monitor_external.DpmActivityMonitorCoeffInt);int workload_type, ret =0 ; -u32 workload_mask; +u32 workload_mask, selected_workload_mask; smu->power_profile_mode = input[size];
@@ -2552,7 +2552,7 @@ static int smu_v13_0_0_set_power_profile_mode(struct smu_context *smu,if (workload_type <0 )return -EINVAL ; - workload_mask =1 << workload_type; + selected_workload_mask = workload_mask =1 << workload_type;/* Add optimizations for SMU13.0.0/10. Reuse the power saving profile */ if ((amdgpu_ip_version(smu->adev, MP1_HWIP, 0) == IP_VERSION(13, 0, 0) &&
@@ -2572,7 +2572,7 @@ static int smu_v13_0_0_set_power_profile_mode(struct smu_context *smu, workload_mask, NULL);if (!ret) - smu->workload_mask = workload_mask; + smu->workload_mask = selected_workload_mask;return ret; }
drivers/gpu/drm/i915/display/intel_alpm.c +1 -1
@@ -280,7 +280,7 @@ void intel_alpm_lobf_compute_config(struct intel_dp *intel_dp,if (DISPLAY_VER (i915) <20 )return ; -if (!intel_dp_as_sdp_supported (intel_dp)) +if (!intel_dp->as_sdp_supported)return ;if (crtc_state->has_psr)
drivers/gpu/drm/i915/display/intel_backlight.c +5 -5
@@ -1011,7 +1011,7 @@ static u32 cnp_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) {struct drm_i915_private *i915 =to_i915 (connector->base.dev); -return DIV_ROUND_CLOSEST (KHz (RUNTIME_INFO (i915)->rawclk_freq), +return DIV_ROUND_CLOSEST (KHz (DISPLAY_RUNTIME_INFO (i915)->rawclk_freq), pwm_freq_hz); }
@@ -1073,7 +1073,7 @@ static u32 pch_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) {struct drm_i915_private *i915 =to_i915 (connector->base.dev); -return DIV_ROUND_CLOSEST (KHz (RUNTIME_INFO (i915)->rawclk_freq), +return DIV_ROUND_CLOSEST (KHz (DISPLAY_RUNTIME_INFO (i915)->rawclk_freq), pwm_freq_hz *128 ); }
@@ -1091,7 +1091,7 @@ static u32 i9xx_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)int clock;if (IS_PINEVIEW (i915)) - clock =KHz (RUNTIME_INFO (i915)->rawclk_freq); + clock =KHz (DISPLAY_RUNTIME_INFO (i915)->rawclk_freq);else clock =KHz (i915->display.cdclk.hw.cdclk);
@@ -1109,7 +1109,7 @@ static u32 i965_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz)int clock;if (IS_G4X (i915)) - clock =KHz (RUNTIME_INFO (i915)->rawclk_freq); + clock =KHz (DISPLAY_RUNTIME_INFO (i915)->rawclk_freq);else clock =KHz (i915->display.cdclk.hw.cdclk);
@@ -1133,7 +1133,7 @@ static u32 vlv_hz_to_pwm(struct intel_connector *connector, u32 pwm_freq_hz) clock =MHz (25 ); mul =16 ; }else { - clock =KHz (RUNTIME_INFO (i915)->rawclk_freq); + clock =KHz (DISPLAY_RUNTIME_INFO (i915)->rawclk_freq); mul =128 ; }
drivers/gpu/drm/i915/display/intel_display_device.c +5 -0
@@ -1474,6 +1474,9 @@ static void __intel_display_device_info_runtime_init(struct drm_i915_private *i9 } } + display_runtime->rawclk_freq =intel_read_rawclk (i915); +drm_dbg_kms (&i915->drm,"rawclk rate: %d kHz\n" , display_runtime->rawclk_freq); +return ; display_fused_off:
@@ -1516,6 +1519,8 @@ void intel_display_device_info_print(const struct intel_display_device_info *infdrm_printf (p,"has_hdcp: %s\n" ,str_yes_no (runtime->has_hdcp));drm_printf (p,"has_dmc: %s\n" ,str_yes_no (runtime->has_dmc));drm_printf (p,"has_dsc: %s\n" ,str_yes_no (runtime->has_dsc)); + +drm_printf (p,"rawclk rate: %u kHz\n" , runtime->rawclk_freq); }/*
drivers/gpu/drm/i915/display/intel_display_device.h +2 -0
@@ -204,6 +204,8 @@ struct intel_display_runtime_info {u16 step; } ip; +u32 rawclk_freq; +u8 pipe_mask;u8 cpu_transcoder_mask;u16 port_mask;
drivers/gpu/drm/i915/display/intel_display_power.c +8 -0
@@ -1704,6 +1704,14 @@ static void icl_display_core_init(struct drm_i915_private *dev_priv,/* Wa_14011503030:xelpd */ if (DISPLAY_VER (dev_priv) ==13 )intel_de_write (dev_priv,XELPD_DISPLAY_ERR_FATAL_MASK , ~0 ); + +/* Wa_15013987218 */ +if (DISPLAY_VER (dev_priv) ==20 ) { +intel_de_rmw (dev_priv,SOUTH_DSPCLK_GATE_D , +0 ,PCH_GMBUSUNIT_CLOCK_GATE_DISABLE ); +intel_de_rmw (dev_priv,SOUTH_DSPCLK_GATE_D , +PCH_GMBUSUNIT_CLOCK_GATE_DISABLE ,0 ); + } }static void icl_display_core_uninit (struct drm_i915_private *dev_priv)
drivers/gpu/drm/i915/display/intel_display_power_well.c +2 -2
@@ -1176,9 +1176,9 @@ static void vlv_init_display_clock_gating(struct drm_i915_private *dev_priv) MI_ARB_DISPLAY_TRICKLE_FEED_DISABLE);intel_de_write (dev_priv,CBR1_VLV ,0 ); -drm_WARN_ON (&dev_priv->drm,RUNTIME_INFO (dev_priv)->rawclk_freq ==0 ); +drm_WARN_ON (&dev_priv->drm,DISPLAY_RUNTIME_INFO (dev_priv)->rawclk_freq ==0 );intel_de_write (dev_priv,RAWCLK_FREQ_VLV , -DIV_ROUND_CLOSEST (RUNTIME_INFO (dev_priv)->rawclk_freq, +DIV_ROUND_CLOSEST (DISPLAY_RUNTIME_INFO (dev_priv)->rawclk_freq,1000 )); }
drivers/gpu/drm/i915/display/intel_display_types.h +1 -0
@@ -1806,6 +1806,7 @@ struct intel_dp {/* connector directly attached - won't be use for modeset in mst world */ struct intel_connector *attached_connector; +bool as_sdp_supported;struct drm_dp_tunnel *tunnel; bool tunnel_suspended:1;
drivers/gpu/drm/i915/display/intel_display_wa.h +8 -0
@@ -6,8 +6,16 @@#ifndef __INTEL_DISPLAY_WA_H__#define __INTEL_DISPLAY_WA_H__ +#include <linux/types.h> +struct drm_i915_private ;void intel_display_wa_apply (struct drm_i915_private *i915); +#ifdef I915 +static inline bool intel_display_needs_wa_16023588340 (struct drm_i915_private *i915) {return false; } +#else +bool intel_display_needs_wa_16023588340 (struct drm_i915_private *i915); +#endif +#endif
drivers/gpu/drm/i915/display/intel_dp.c +17 -12
@@ -130,14 +130,6 @@ bool intel_dp_is_edp(struct intel_dp *intel_dp)return dig_port->base.type ==INTEL_OUTPUT_EDP ; } -bool intel_dp_as_sdp_supported (struct intel_dp *intel_dp) -{ -struct drm_i915_private *i915 =dp_to_i915 (intel_dp); - -return HAS_AS_SDP (i915) && -drm_dp_as_sdp_supported (&intel_dp->aux, intel_dp->dpcd); -} -static void intel_dp_unset_edid (struct intel_dp *intel_dp);/* Is link rate UHBR and thus 128b/132b? */
@@ -2635,8 +2627,7 @@ static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,const struct drm_display_mode *adjusted_mode = &crtc_state->hw.adjusted_mode; -if (!crtc_state->vrr.enable || - !intel_dp_as_sdp_supported (intel_dp)) +if (!crtc_state->vrr.enable || !intel_dp->as_sdp_supported)return ; crtc_state->infoframes.enable |=intel_hdmi_infoframe_enable (DP_SDP_ADAPTIVE_SYNC );
@@ -4402,8 +4393,11 @@ void intel_dp_set_infoframes(struct intel_encoder *encoder,if (!enable &&HAS_DSC (dev_priv)) val &= ~VDIP_ENABLE_PPS ; -/* When PSR is enabled, this routine doesn't disable VSC DIP */ -if (!crtc_state->has_psr) +/* +* This routine disables VSC DIP if the function is called +* to disable SDP or if it does not have PSR +*/ +if (!enable || !crtc_state->has_psr) val &= ~VIDEO_DIP_ENABLE_VSC_HSW ;intel_de_write (dev_priv, reg, val);
@@ -5921,6 +5915,15 @@ intel_dp_detect_dsc_caps(struct intel_dp *intel_dp, struct intel_connector *conn connector); } +static void +intel_dp_detect_sdp_caps (struct intel_dp *intel_dp) +{ +struct drm_i915_private *i915 =dp_to_i915 (intel_dp); + + intel_dp->as_sdp_supported =HAS_AS_SDP (i915) && +drm_dp_as_sdp_supported (&intel_dp->aux, intel_dp->dpcd); +} + static int intel_dp_detect(struct drm_connector *connector, struct drm_modeset_acquire_ctx *ctx,
@@ -5991,6 +5994,8 @@ intel_dp_detect(struct drm_connector *connector,intel_dp_detect_dsc_caps (intel_dp, intel_connector); +intel_dp_detect_sdp_caps (intel_dp); +intel_dp_mst_configure (intel_dp);if (intel_dp->reset_link_params) {
drivers/gpu/drm/i915/display/intel_dp.h +0 -1
@@ -85,7 +85,6 @@ void intel_dp_audio_compute_config(struct intel_encoder *encoder, struct drm_connector_state *conn_state);bool intel_dp_has_hdmi_sink (struct intel_dp *intel_dp);bool intel_dp_is_edp (struct intel_dp *intel_dp); -bool intel_dp_as_sdp_supported (struct intel_dp *intel_dp);bool intel_dp_is_uhbr (const struct intel_crtc_state *crtc_state);bool intel_dp_has_dsc (const struct intel_connector *connector);int intel_dp_link_symbol_size (int rate);
drivers/gpu/drm/i915/display/intel_dp_aux.c +2 -2
@@ -84,7 +84,7 @@ static u32 g4x_get_aux_clock_divider(struct intel_dp *intel_dp, int index)* The clock divider is based off the hrawclk, and would like to run at * 2MHz. So, take the hrawclk value and divide by 2000 and use that */ -return DIV_ROUND_CLOSEST (RUNTIME_INFO (i915)->rawclk_freq,2000 ); +return DIV_ROUND_CLOSEST (DISPLAY_RUNTIME_INFO (i915)->rawclk_freq,2000 ); }static u32 ilk_get_aux_clock_divider (struct intel_dp *intel_dp,int index)
@@ -104,7 +104,7 @@ static u32 ilk_get_aux_clock_divider(struct intel_dp *intel_dp, int index)if (dig_port->aux_ch ==AUX_CH_A ) freq = i915->display.cdclk.hw.cdclk;else - freq =RUNTIME_INFO (i915)->rawclk_freq; + freq =DISPLAY_RUNTIME_INFO (i915)->rawclk_freq;return DIV_ROUND_CLOSEST (freq,2000 ); }
drivers/gpu/drm/i915/display/intel_dp_hdcp.c +9 -2
@@ -677,8 +677,15 @@ staticint intel_dp_hdcp2_get_capability (struct intel_connector *connector,bool *capable) { -struct intel_digital_port *dig_port =intel_attached_dig_port (connector); -struct drm_dp_aux *aux = &dig_port->dp.aux; +struct intel_digital_port *dig_port; +struct drm_dp_aux *aux; + + *capable = false; +if (!intel_attached_encoder (connector)) +return -EINVAL ; + + dig_port =intel_attached_dig_port (connector); + aux = &dig_port->dp.aux;return _intel_dp_hdcp2_get_capability (aux, capable); }
drivers/gpu/drm/i915/display/intel_fbc.c +6 -0
@@ -56,6 +56,7 @@#include "intel_display_device.h" #include "intel_display_trace.h" #include "intel_display_types.h" +#include "intel_display_wa.h" #include "intel_fbc.h" #include "intel_fbc_regs.h" #include "intel_frontbuffer.h"
@@ -1237,6 +1238,11 @@ static int intel_fbc_check_plane(struct intel_atomic_state *state,return 0 ; } +if (intel_display_needs_wa_16023588340 (i915)) { + plane_state->no_fbc_reason ="Wa_16023588340" ; +return 0 ; + } +/* WaFbcTurnOffFbcWhenHyperVisorIsUsed:skl,bxt */ if (i915_vtd_active (i915) && (IS_SKYLAKE (i915) ||IS_BROXTON (i915))) { plane_state->no_fbc_reason ="VT-d enabled" ;
drivers/gpu/drm/i915/display/intel_hdcp.c +6 -1
@@ -203,11 +203,16 @@ int intel_hdcp_read_valid_bksv(struct intel_digital_port *dig_port,/* Is HDCP1.4 capable on Platform and Sink */ bool intel_hdcp_get_capability (struct intel_connector *connector) { -struct intel_digital_port *dig_port =intel_attached_dig_port (connector); +struct intel_digital_port *dig_port;const struct intel_hdcp_shim *shim = connector->hdcp.shim;bool capable = false;u8 bksv[5 ]; +if (!intel_attached_encoder (connector)) +return capable; + + dig_port =intel_attached_dig_port (connector); +if (!shim)return capable;
drivers/gpu/drm/i915/display/intel_pps.c +13 -1
@@ -951,6 +951,14 @@ void intel_pps_on_unlocked(struct intel_dp *intel_dp)intel_de_posting_read (dev_priv, pp_ctrl_reg); } +/* +* WA: 22019252566 +* Disable DPLS gating around power sequence. +*/ +if (IS_DISPLAY_VER (dev_priv,13 ,14 )) +intel_de_rmw (dev_priv,SOUTH_DSPCLK_GATE_D , +0 ,PCH_DPLSUNIT_CLOCK_GATE_DISABLE ); + pp |=PANEL_POWER_ON ;if (!IS_IRONLAKE (dev_priv)) pp |=PANEL_POWER_RESET ;
@@ -961,6 +969,10 @@ void intel_pps_on_unlocked(struct intel_dp *intel_dp)wait_panel_on (intel_dp); intel_dp->pps.last_power_on = jiffies; +if (IS_DISPLAY_VER (dev_priv,13 ,14 )) +intel_de_rmw (dev_priv,SOUTH_DSPCLK_GATE_D , +PCH_DPLSUNIT_CLOCK_GATE_DISABLE ,0 ); +if (IS_IRONLAKE (dev_priv)) { pp |=PANEL_POWER_RESET ;/* restore panel reset bit */ intel_de_write (dev_priv, pp_ctrl_reg, pp);
@@ -1471,7 +1483,7 @@ static void pps_init_registers(struct intel_dp *intel_dp, bool force_disable_vdd {struct drm_i915_private *dev_priv =dp_to_i915 (intel_dp);u32 pp_on, pp_off, port_sel =0 ; -int div =RUNTIME_INFO (dev_priv)->rawclk_freq /1000 ; +int div =DISPLAY_RUNTIME_INFO (dev_priv)->rawclk_freq /1000 ;struct pps_registers regs;enum port port =dp_to_dig_port (intel_dp)->base.port;const struct edp_power_seq *seq = &intel_dp->pps.pps_delays;
drivers/gpu/drm/i915/display/intel_psr.c +6 -0
@@ -1605,6 +1605,12 @@ _panel_replay_compute_config(struct intel_dp *intel_dp,if (!alpm_config_valid (intel_dp, crtc_state, true))return false; +if (crtc_state->crc_enabled) { +drm_dbg_kms (&i915->drm, +"Panel Replay not enabled because it would inhibit pipe CRC calculation\n" ); +return false; + } +return true; }
drivers/gpu/drm/i915/display/intel_tc.c +3 -0
@@ -393,6 +393,9 @@ void intel_tc_port_set_fia_lane_count(struct intel_digital_port *dig_port,bool lane_reversal = dig_port->saved_port_bits &DDI_BUF_PORT_REVERSAL ;u32 val; +if (DISPLAY_VER (i915) >=14 ) +return ; +drm_WARN_ON (&i915->drm, lane_reversal && tc->mode !=TC_PORT_LEGACY );
drivers/gpu/drm/i915/display/intel_vrr.c +1 -2
@@ -233,8 +233,7 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state, crtc_state->mode_flags |=I915_MODE_FLAG_VRR ; } -if (intel_dp_as_sdp_supported (intel_dp) && - crtc_state->vrr.enable) { +if (intel_dp->as_sdp_supported && crtc_state->vrr.enable) { crtc_state->vrr.vsync_start = (crtc_state->hw.adjusted_mode.crtc_vtotal - crtc_state->hw.adjusted_mode.vsync_start);
drivers/gpu/drm/i915/display/skl_universal_plane.c +0 -5
@@ -1085,11 +1085,6 @@ static u32 skl_plane_ctl(const struct intel_crtc_state *crtc_state,if (DISPLAY_VER (dev_priv) ==13 ) plane_ctl |=adlp_plane_ctl_arb_slots (plane_state); -if (GRAPHICS_VER (dev_priv) >=20 && - fb->modifier ==I915_FORMAT_MOD_4_TILED ) { - plane_ctl |=PLANE_CTL_RENDER_DECOMPRESSION_ENABLE ; - } -return plane_ctl; }
drivers/gpu/drm/i915/intel_device_info.c +0 -5
@@ -124,7 +124,6 @@ void intel_device_info_print(const struct intel_device_info *info,#undef PRINT_FLAGdrm_printf (p,"has_pooled_eu: %s\n" ,str_yes_no (runtime->has_pooled_eu)); -drm_printf (p,"rawclk rate: %u kHz\n" , runtime->rawclk_freq); }#define ID (id) (id)
@@ -377,10 +376,6 @@ void intel_device_info_runtime_init(struct drm_i915_private *dev_priv) "Disabling ppGTT for VT-d support\n"); runtime->ppgtt_type =INTEL_PPGTT_NONE ; } - - runtime->rawclk_freq =intel_read_rawclk (dev_priv); -drm_dbg (&dev_priv->drm,"rawclk rate: %d kHz\n" , runtime->rawclk_freq); - }/*
drivers/gpu/drm/i915/intel_device_info.h +0 -2
@@ -207,8 +207,6 @@ struct intel_runtime_info {u16 device_id; -u32 rawclk_freq; -struct intel_step_info step;unsigned int page_sizes;/* page sizes supported by the HW */
drivers/gpu/drm/mediatek/mtk_crtc.c +4 -43
66 lines not on this page · raw message
drivers/gpu/drm/mediatek/mtk_disp_ovl.c +2 -7
@@ -61,8 +61,8 @@#define OVL_CON_CLRFMT_RGB (1 << 12)#define OVL_CON_CLRFMT_ARGB8888 (2 << 12)#define OVL_CON_CLRFMT_RGBA8888 (3 << 12) -#define OVL_CON_CLRFMT_ABGR8888 (OVL_CON_CLRFMT_RGBA8888 | OVL_CON_BYTE_SWAP) -#define OVL_CON_CLRFMT_BGRA8888 (OVL_CON_CLRFMT_ARGB8888 | OVL_CON_BYTE_SWAP) +#define OVL_CON_CLRFMT_ABGR8888 (OVL_CON_CLRFMT_ARGB8888 | OVL_CON_BYTE_SWAP) +#define OVL_CON_CLRFMT_BGRA8888 (OVL_CON_CLRFMT_RGBA8888 | OVL_CON_BYTE_SWAP)#define OVL_CON_CLRFMT_UYVY (4 << 12)#define OVL_CON_CLRFMT_YUYV (5 << 12)#define OVL_CON_CLRFMT_RGB565 (ovl) ((ovl)->data->fmt_rgb565_is_0 ? \
@@ -379,11 +379,6 @@ void mtk_ovl_layer_off(struct device *dev, unsigned int idx,static unsigned int ovl_fmt_convert (struct mtk_disp_ovl *ovl,unsigned int fmt) { -/* The return value in switch "MEM_MODE_INPUT_FORMAT_XXX" -* is defined in mediatek HW data sheet. -* The alphabet order in XXX is no relation to data -* arrangement in memory. -*/ switch (fmt) {default :case DRM_FORMAT_RGB565 :
drivers/gpu/drm/mediatek/mtk_dp.c +84 -1
97 lines not on this page · raw message
drivers/gpu/drm/panthor/panthor_fw.c +2 -2
@@ -487,6 +487,7 @@ static int panthor_fw_load_section_entry(struct panthor_device *ptdev,struct panthor_fw_binary_iter *iter, u32 ehdr) { + ssize_t vm_pgsz = panthor_vm_page_size(ptdev->fw->vm);struct panthor_fw_binary_section_entry_hdr hdr;struct panthor_fw_section *section;u32 section_size;
@@ -515,8 +516,7 @@ static int panthor_fw_load_section_entry(struct panthor_device *ptdev,return -EINVAL ; } -if ((hdr.va.start & ~PAGE_MASK ) !=0 || - (hdr.va.end & ~PAGE_MASK ) !=0 ) { +if (!IS_ALIGNED (hdr.va.start, vm_pgsz) || !IS_ALIGNED (hdr.va.end, vm_pgsz)) {drm_err (&ptdev->base,"Firmware corrupted, virtual addresses not page aligned: 0x%x-0x%x\n" , hdr.va.start, hdr.va.end);return -EINVAL ;
drivers/gpu/drm/panthor/panthor_gem.c +8 -3
@@ -44,8 +44,7 @@ void panthor_kernel_bo_destroy(struct panthor_kernel_bo *bo) to_panthor_bo(bo->obj)->exclusive_vm_root_gem != panthor_vm_root_gem(vm))) goto out_free_bo; - ret =panthor_vm_unmap_range (vm, bo->va_node.start, -panthor_kernel_bo_size (bo)); + ret =panthor_vm_unmap_range (vm, bo->va_node.start, bo->va_node.size);if (ret) goto out_free_bo;
@@ -95,10 +94,16 @@ panthor_kernel_bo_create(struct panthor_device *ptdev, struct panthor_vm *vm, } bo =to_panthor_bo (&obj->base); - size = obj->base.size; kbo->obj = &obj->base; bo->flags = bo_flags; +/* The system and GPU MMU page size might differ, which becomes a +* problem for FW sections that need to be mapped at explicit address +* since our PAGE_SIZE alignment might cover a VA range that's +* expected to be used for another section. +* Make sure we never map more than we need. +*/ + size =ALIGN (size,panthor_vm_page_size (vm)); ret =panthor_vm_alloc_va (vm, gpu_va, size, &kbo->va_node);if (ret) goto err_put_obj;
drivers/gpu/drm/panthor/panthor_mmu.c +13 -3
@@ -826,6 +826,14 @@ void panthor_vm_idle(struct panthor_vm *vm)mutex_unlock (&ptdev->mmu->as.slots_lock); } +u32 panthor_vm_page_size (struct panthor_vm *vm) +{ +const struct io_pgtable *pgt =io_pgtable_ops_to_pgtable (vm->pgtbl_ops); +u32 pg_shift =ffs (pgt->cfg.pgsize_bitmap) -1 ; + +return 1u << pg_shift; +} +static void panthor_vm_stop (struct panthor_vm *vm) {drm_sched_stop (&vm->sched,NULL );
@@ -1025,12 +1033,13 @@ int panthor_vm_alloc_va(struct panthor_vm *vm, u64 va, u64 size, struct drm_mm_node *va_node) { + ssize_t vm_pgsz = panthor_vm_page_size(vm);int ret; -if (!size || (size & ~PAGE_MASK )) +if (!size || !IS_ALIGNED (size, vm_pgsz))return -EINVAL ; -if (va !=PANTHOR_VM_KERNEL_AUTO_VA && (va & ~PAGE_MASK )) +if (va !=PANTHOR_VM_KERNEL_AUTO_VA && !IS_ALIGNED (va, vm_pgsz))return -EINVAL ;mutex_lock (&vm->mm_lock);
@@ -2366,11 +2375,12 @@ panthor_vm_bind_prepare_op_ctx(struct drm_file *file,const struct drm_panthor_vm_bind_op *op, struct panthor_vm_op_ctx *op_ctx) { + ssize_t vm_pgsz = panthor_vm_page_size(vm);struct drm_gem_object *gem;int ret;/* Aligned on page size. */ -if ((op->va | op->size) & ~PAGE_MASK ) +if (!IS_ALIGNED (op->va | op->size, vm_pgsz))return -EINVAL ;switch (op->flags &DRM_PANTHOR_VM_BIND_OP_TYPE_MASK ) {
drivers/gpu/drm/panthor/panthor_mmu.h +1 -0
@@ -30,6 +30,7 @@ panthor_vm_get_bo_for_va(struct panthor_vm *vm, u64 va, u64 *bo_offset);int panthor_vm_active (struct panthor_vm *vm);void panthor_vm_idle (struct panthor_vm *vm); +u32 panthor_vm_page_size (struct panthor_vm *vm);int panthor_vm_as (struct panthor_vm *vm);int panthor_vm_flush_all (struct panthor_vm *vm);
drivers/gpu/drm/panthor/panthor_sched.c +16 -4
@@ -589,10 +589,11 @@ struct panthor_group {* @timedout: True when a timeout occurred on any of the queues owned by * this group. * -* Timeouts can be reported by drm_sched or by the FW. In any case, any -* timeout situation is unrecoverable, and the group becomes useless. -* We simply wait for all references to be dropped so we can release the -* group object. +* Timeouts can be reported by drm_sched or by the FW. If a reset is required, +* and the group can't be suspended, this also leads to a timeout. In any case, +* any timeout situation is unrecoverable, and the group becomes useless. We +* simply wait for all references to be dropped so we can release the group +* object. */ bool timedout;
@@ -2640,6 +2641,12 @@ void panthor_sched_suspend(struct panthor_device *ptdev)csgs_upd_ctx_init (&upd_ctx);while (slot_mask) {u32 csg_id =ffs (slot_mask) -1 ; +struct panthor_csg_slot *csg_slot = &sched->csg_slots[csg_id]; + +/* We consider group suspension failures as fatal and flag the +* group as unusable by setting timedout=true. +*/ + csg_slot->group->timedout = true; csgs_upd_ctx_queue_reqs(ptdev, &upd_ctx, csg_id, CSG_STATE_TERMINATE,
@@ -3409,6 +3416,11 @@ panthor_job_create(struct panthor_file *pfile, goto err_put_job; } +if (!group_can_run (job->group)) { + ret = -EINVAL ; + goto err_put_job; + } +if (job->queue_idx >= job->group->queue_count || !job->group->queues[job->queue_idx]) { ret = -EINVAL ;
drivers/gpu/drm/tegra/drm.c +2 -2
@@ -1152,8 +1152,8 @@ static int host1x_drm_probe(struct host1x_device *dev)if (host1x_drm_wants_iommu (dev) &&device_iommu_mapped (dma_dev)) { tegra->domain =iommu_paging_domain_alloc (dma_dev); -if (!tegra->domain) { - err = -ENOMEM ; +if (IS_ERR (tegra->domain)) { + err =PTR_ERR (tegra->domain); goto free; }
drivers/gpu/drm/tests/drm_connector_test.c +12 -12
@@ -996,7 +996,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb(struct kunit *test)unsigned long long rate;struct drm_device *drm = &priv->drm; - mode =drm_display_mode_from_cea_vic (drm,16 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,16 );KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1017,7 +1017,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc(struct kunit *test)unsigned long long rate;struct drm_device *drm = &priv->drm; - mode =drm_display_mode_from_cea_vic (drm,16 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,16 );KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1038,7 +1038,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1(struct kunit *tunsigned long long rate;struct drm_device *drm = &priv->drm; - mode =drm_display_mode_from_cea_vic (drm,1 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,1 );KUNIT_ASSERT_NOT_NULL (test, mode); rate =drm_hdmi_compute_mode_clock (mode,10 ,HDMI_COLORSPACE_RGB );
@@ -1056,7 +1056,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc(struct kunit *test)unsigned long long rate;struct drm_device *drm = &priv->drm; - mode =drm_display_mode_from_cea_vic (drm,16 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,16 );KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1077,7 +1077,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1(struct kunit *tunsigned long long rate;struct drm_device *drm = &priv->drm; - mode =drm_display_mode_from_cea_vic (drm,1 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,1 );KUNIT_ASSERT_NOT_NULL (test, mode); rate =drm_hdmi_compute_mode_clock (mode,12 ,HDMI_COLORSPACE_RGB );
@@ -1095,7 +1095,7 @@ static void drm_test_drm_hdmi_compute_mode_clock_rgb_double(struct kunit *test)unsigned long long rate;struct drm_device *drm = &priv->drm; - mode =drm_display_mode_from_cea_vic (drm,6 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,6 );KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_TRUE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1118,7 +1118,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv420_valid(struct kunitunsigned long long rate;unsigned int vic = *(unsigned int *)test->param_value; - mode =drm_display_mode_from_cea_vic (drm, vic); + mode =drm_kunit_display_mode_from_cea_vic (test, drm, vic);KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1155,7 +1155,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc(struct kuni drm_hdmi_compute_mode_clock_yuv420_vic_valid_tests[0 ];unsigned long long rate; - mode =drm_display_mode_from_cea_vic (drm, vic); + mode =drm_kunit_display_mode_from_cea_vic (test, drm, vic);KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1180,7 +1180,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc(struct kuni drm_hdmi_compute_mode_clock_yuv420_vic_valid_tests[0 ];unsigned long long rate; - mode =drm_display_mode_from_cea_vic (drm, vic); + mode =drm_kunit_display_mode_from_cea_vic (test, drm, vic);KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1203,7 +1203,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc(struct kunitstruct drm_device *drm = &priv->drm;unsigned long long rate; - mode =drm_display_mode_from_cea_vic (drm,16 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,16 );KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1225,7 +1225,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc(struct kunistruct drm_device *drm = &priv->drm;unsigned long long rate; - mode =drm_display_mode_from_cea_vic (drm,16 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,16 );KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
@@ -1247,7 +1247,7 @@ static void drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc(struct kunistruct drm_device *drm = &priv->drm;unsigned long long rate; - mode =drm_display_mode_from_cea_vic (drm,16 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,16 );KUNIT_ASSERT_NOT_NULL (test, mode);KUNIT_ASSERT_FALSE (test, mode->flags &DRM_MODE_FLAG_DBLCLK );
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c +4 -4
@@ -441,7 +441,7 @@ static void drm_test_check_broadcast_rgb_auto_cea_mode_vic_1(struct kunit *test) ctx =drm_kunit_helper_acquire_ctx_alloc (test);KUNIT_ASSERT_NOT_ERR_OR_NULL (test, ctx); - mode =drm_display_mode_from_cea_vic (drm,1 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,1 );KUNIT_ASSERT_NOT_NULL (test, mode); drm = &priv->drm;
@@ -555,7 +555,7 @@ static void drm_test_check_broadcast_rgb_full_cea_mode_vic_1(struct kunit *test) ctx =drm_kunit_helper_acquire_ctx_alloc (test);KUNIT_ASSERT_NOT_ERR_OR_NULL (test, ctx); - mode =drm_display_mode_from_cea_vic (drm,1 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,1 );KUNIT_ASSERT_NOT_NULL (test, mode); drm = &priv->drm;
@@ -671,7 +671,7 @@ static void drm_test_check_broadcast_rgb_limited_cea_mode_vic_1(struct kunit *te ctx =drm_kunit_helper_acquire_ctx_alloc (test);KUNIT_ASSERT_NOT_ERR_OR_NULL (test, ctx); - mode =drm_display_mode_from_cea_vic (drm,1 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,1 );KUNIT_ASSERT_NOT_NULL (test, mode); drm = &priv->drm;
@@ -1263,7 +1263,7 @@ static void drm_test_check_output_bpc_format_vic_1(struct kunit *test) ctx =drm_kunit_helper_acquire_ctx_alloc (test);KUNIT_ASSERT_NOT_ERR_OR_NULL (test, ctx); - mode =drm_display_mode_from_cea_vic (drm,1 ); + mode =drm_kunit_display_mode_from_cea_vic (test, drm,1 );KUNIT_ASSERT_NOT_NULL (test, mode);/*
drivers/gpu/drm/tests/drm_kunit_helpers.c +42 -0
54 lines not on this page · raw message
drivers/gpu/drm/xe/Makefile +1 -0
@@ -175,6 +175,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \ display/xe_display.o \ display/xe_display_misc.o \ display/xe_display_rps.o \ + display/xe_display_wa.o \ display/xe_dsb_buffer.o \ display/xe_fb_pin.o \ display/xe_hdcp_gsc.o \
drivers/gpu/drm/xe/compat-i915-headers/i915_drv.h +0 -1
@@ -116,7 +116,6 @@ struct i915_sched_attr {#define i915_gem_fence_wait_priority (fence, attr) do { (void) attr; } while (0)#define pdev_to_i915 pdev_to_xe_device -#define RUNTIME_INFO (xe) (&(xe)->info.i915_runtime)#define FORCEWAKE_ALL XE_FORCEWAKE_ALL
drivers/gpu/drm/xe/display/xe_display_wa.c new file +16 -0
@@ -0,0 +1,16 @@ +// SPDX-License-Identifier: MIT +/* +* Copyright © 2024 Intel Corporation +*/ + +#include "intel_display_wa.h" + +#include "xe_device.h" +#include "xe_wa.h" + +#include <generated/xe_wa_oob.h> + +bool intel_display_needs_wa_16023588340 (struct drm_i915_private *i915) +{ +return XE_WA (xe_root_mmio_gt (i915),16023588340 ); +}
drivers/gpu/drm/xe/regs/xe_gt_regs.h +16 -1
@@ -80,7 +80,10 @@#define LE_CACHEABILITY_MASK REG_GENMASK(1, 0)#define LE_CACHEABILITY (value) REG_FIELD_PREP(LE_CACHEABILITY_MASK, value) -#define XE2_GAMREQSTRM_CTRL XE_REG(0x4194) +#define STATELESS_COMPRESSION_CTRL XE_REG_MCR(0x4148) +#define UNIFIED_COMPRESSION_FORMAT REG_GENMASK(3, 0) + +#define XE2_GAMREQSTRM_CTRL XE_REG_MCR(0x4194)#define CG_DIS_CNTLBUS REG_BIT(6)#define CCS_AUX_INV XE_REG(0x4208)
@@ -91,6 +94,8 @@#define VE1_AUX_INV XE_REG(0x42b8)#define AUX_INV REG_BIT(0) +#define XE2_LMEM_CFG XE_REG(0x48b0) +#define XEHP_TILE_ADDR_RANGE (_idx) XE_REG_MCR(0x4900 + (_idx) * 4)#define XEHP_FLAT_CCS_BASE_ADDR XE_REG_MCR(0x4910)#define XEHP_FLAT_CCS_PTR REG_GENMASK(31, 8)
@@ -100,12 +105,14 @@#define CHICKEN_RASTER_1 XE_REG_MCR(0x6204, XE_REG_OPTION_MASKED)#define DIS_SF_ROUND_NEAREST_EVEN REG_BIT(8) +#define DIS_CLIP_NEGATIVE_BOUNDING_BOX REG_BIT(6)#define CHICKEN_RASTER_2 XE_REG_MCR(0x6208, XE_REG_OPTION_MASKED)#define TBIMR_FAST_CLIP REG_BIT(5)#define FF_MODE XE_REG_MCR(0x6210)#define DIS_TE_AUTOSTRIP REG_BIT(31) +#define VS_HIT_MAX_VALUE_MASK REG_GENMASK(25, 20)#define DIS_MESH_PARTIAL_AUTOSTRIP REG_BIT(16)#define DIS_MESH_AUTOSTRIP REG_BIT(15)
@@ -190,6 +197,7 @@#define GSCPSMI_BASE XE_REG(0x880c)#define CCCHKNREG1 XE_REG_MCR(0x8828) +#define L3CMPCTRL REG_BIT(23)#define ENCOMPPERFFIX REG_BIT(18)/* Fuse readout registers for GT */
@@ -364,6 +372,9 @@#define XEHP_L3NODEARBCFG XE_REG_MCR(0xb0b4)#define XEHP_LNESPARE REG_BIT(19) +#define L3SQCREG2 XE_REG_MCR(0xb104) +#define COMPMEMRD256BOVRFETCHEN REG_BIT(20) +#define L3SQCREG3 XE_REG_MCR(0xb108)#define COMPPWOVERFETCHEN REG_BIT(28)
@@ -403,6 +414,10 @@#define INVALIDATION_BROADCAST_MODE_DIS REG_BIT(12)#define GLOBAL_INVALIDATION_MODE REG_BIT(2) +#define LMEM_CFG XE_REG(0xcf58) +#define LMEM_EN REG_BIT(31) +#define LMTT_DIR_PTR REG_GENMASK(30, 0)/* in multiples of 64KB */ +#define HALF_SLICE_CHICKEN5 XE_REG_MCR(0xe188, XE_REG_OPTION_MASKED)#define DISABLE_SAMPLE_G_PERFORMANCE REG_BIT(0)
drivers/gpu/drm/xe/regs/xe_regs.h +8 -2
@@ -24,11 +24,14 @@#define LMEM_INIT REG_BIT(7)#define DRIVERFLR REG_BIT(31) +#define XEHP_CLOCK_GATE_DIS XE_REG(0x101014) +#define SGSI_SIDECLK_DIS REG_BIT(17) +#define GU_DEBUG XE_REG(0x101018)#define DRIVERFLR_STATUS REG_BIT(31) -#define XEHP_CLOCK_GATE_DIS XE_REG(0x101014) -#define SGSI_SIDECLK_DIS REG_BIT(17) +#define VIRTUAL_CTRL_REG XE_REG(0x10108c) +#define GUEST_GTT_UPDATE_EN REG_BIT(8)#define XEHP_MTCFG_ADDR XE_REG(0x101800)#define TILE_COUNT REG_GENMASK(15, 8)
@@ -66,6 +69,9 @@#define DISPLAY_IRQ REG_BIT(16)#define GT_DW_IRQ (x) REG_BIT(x) +#define VF_CAP_REG XE_REG(0x1901f8, XE_REG_OPTION_VF) +#define VF_CAP REG_BIT(0) +#define PVC_RP_STATE_CAP XE_REG(0x281014)#endif
drivers/gpu/drm/xe/regs/xe_sriov_regs.h deleted +0 -23
@@ -1,23 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* -* Copyright © 2023 Intel Corporation -*/ - -#ifndef _REGS_XE_SRIOV_REGS_H_ -#define _REGS_XE_SRIOV_REGS_H_ - -#include "regs/xe_reg_defs.h" - -#define XE2_LMEM_CFG XE_REG(0x48b0) - -#define LMEM_CFG XE_REG(0xcf58) -#define LMEM_EN REG_BIT(31) -#define LMTT_DIR_PTR REG_GENMASK(30, 0)/* in multiples of 64KB */ - -#define VIRTUAL_CTRL_REG XE_REG(0x10108c) -#define GUEST_GTT_UPDATE_EN REG_BIT(8) - -#define VF_CAP_REG XE_REG(0x1901f8, XE_REG_OPTION_VF) -#define VF_CAP REG_BIT(0) - -#endif
drivers/gpu/drm/xe/xe_device_types.h +0 -6
@@ -297,12 +297,6 @@ struct xe_device { u8 has_atomic_enable_pte_bit:1;/** @info.has_device_atomics_on_smem: Supports device atomics on SMEM */ u8 has_device_atomics_on_smem:1; - -#if IS_ENABLED (CONFIG_DRM_XE_DISPLAY ) -struct { -u32 rawclk_freq; - } i915_runtime; -#endif } info;/** @irq: device interrupt state */
drivers/gpu/drm/xe/xe_ggtt.c +10 -0
@@ -309,6 +309,16 @@ static void ggtt_invalidate_gt_tlb(struct xe_gt *gt)static void xe_ggtt_invalidate (struct xe_ggtt *ggtt) { +struct xe_device *xe =tile_to_xe (ggtt->tile); + +/* +* XXX: Barrier for GGTT pages. Unsure exactly why this required but +* without this LNL is having issues with the GuC reading scratch page +* vs. correct GGTT page. Not particularly a hot code path so blindly +* do a mmio read here which results in GuC reading correct GGTT page. +*/ +xe_mmio_read32 (xe_root_mmio_gt (xe),VF_CAP_REG ); +/* Each GT in a tile has its own TLB to cache GGTT lookups */ ggtt_invalidate_gt_tlb (ggtt->tile->primary_gt);ggtt_invalidate_gt_tlb (ggtt->tile->media_gt);
drivers/gpu/drm/xe/xe_gt.c +5 -5
@@ -109,9 +109,9 @@ static void xe_gt_enable_host_l2_vram(struct xe_gt *gt)if (!xe_gt_is_media_type (gt)) {xe_mmio_write32 (gt,SCRATCH1LPFC ,EN_L3_RW_CCS_CACHE_FLUSH ); - reg =xe_mmio_read32 (gt,XE2_GAMREQSTRM_CTRL ); + reg =xe_gt_mcr_unicast_read_any (gt,XE2_GAMREQSTRM_CTRL ); reg |=CG_DIS_CNTLBUS ; -xe_mmio_write32 (gt,XE2_GAMREQSTRM_CTRL , reg); +xe_gt_mcr_multicast_write (gt,XE2_GAMREQSTRM_CTRL , reg); }xe_gt_mcr_multicast_write (gt,XEHPC_L3CLOS_MASK (3 ),0x3 );
@@ -133,9 +133,9 @@ static void xe_gt_disable_host_l2_vram(struct xe_gt *gt)if (WARN_ON (err))return ; - reg =xe_mmio_read32 (gt,XE2_GAMREQSTRM_CTRL ); + reg =xe_gt_mcr_unicast_read_any (gt,XE2_GAMREQSTRM_CTRL ); reg &= ~CG_DIS_CNTLBUS ; -xe_mmio_write32 (gt,XE2_GAMREQSTRM_CTRL , reg); +xe_gt_mcr_multicast_write (gt,XE2_GAMREQSTRM_CTRL , reg);xe_force_wake_put (gt_to_fw (gt),XE_FW_GT ); }
@@ -555,7 +555,6 @@ int xe_gt_init_hwconfig(struct xe_gt *gt)xe_gt_mcr_init_early (gt);xe_pat_init (gt); -xe_gt_enable_host_l2_vram (gt); err =xe_uc_init (>->uc);if (err)
@@ -567,6 +566,7 @@ int xe_gt_init_hwconfig(struct xe_gt *gt)xe_gt_topology_init (gt);xe_gt_mcr_init (gt); +xe_gt_enable_host_l2_vram (gt); out_fw:xe_force_wake_put (gt_to_fw (gt),XE_FW_GT );
drivers/gpu/drm/xe/xe_gt_sriov_pf.c +1 -1
@@ -5,7 +5,7 @@#include <drm/drm_managed.h> -#include "regs/xe_sriov_regs.h" +#include "regs/xe_regs.h" #include "xe_gt_sriov_pf.h" #include "xe_gt_sriov_pf_config.h"
drivers/gpu/drm/xe/xe_guc_submit.c +12 -6
@@ -989,12 +989,22 @@ static void xe_guc_exec_queue_lr_cleanup(struct work_struct *w)static bool check_timeout (struct xe_exec_queue *q,struct xe_sched_job *job) {struct xe_gt *gt =guc_to_gt (exec_queue_to_guc (q)); -u32 ctx_timestamp =xe_lrc_ctx_timestamp (q->lrc[0 ]); -u32 ctx_job_timestamp =xe_lrc_ctx_job_timestamp (q->lrc[0 ]); +u32 ctx_timestamp, ctx_job_timestamp;u32 timeout_ms = q->sched_props.job_timeout_ms;u32 diff;u64 running_time_ms; +if (!xe_sched_job_started (job)) { +xe_gt_warn (gt,"Check job timeout: seqno=%u, lrc_seqno=%u, guc_id=%d, not started" , +xe_sched_job_seqno (job),xe_sched_job_lrc_seqno (job), + q->guc->id); + +return xe_sched_invalidate_job (job,2 ); + } + + ctx_timestamp =xe_lrc_ctx_timestamp (q->lrc[0 ]); + ctx_job_timestamp =xe_lrc_ctx_job_timestamp (q->lrc[0 ]); +/* * Counter wraps at ~223s at the usual 19.2MHz, be paranoid catch * possible overflows with a high timeout.
@@ -1120,10 +1130,6 @@ guc_exec_queue_timedout_job(struct drm_sched_job *drm_job)exec_queue_killed_or_banned_or_wedged (q) ||exec_queue_destroyed (q); -/* Job hasn't started, can't be timed out */ -if (!skip_timeout_check && !xe_sched_job_started (job)) - goto rearm; -/* * XXX: Sampling timeout doesn't work in wedged mode as we have to * modify scheduling state to read timestamp. We could read the
drivers/gpu/drm/xe/xe_lmtt.c +1 -1
@@ -7,7 +7,7 @@#include <drm/drm_managed.h> -#include "regs/xe_sriov_regs.h" +#include "regs/xe_gt_regs.h" #include "xe_assert.h" #include "xe_bo.h"
drivers/gpu/drm/xe/xe_module.c +36 -3
@@ -8,6 +8,8 @@#include <linux/init.h> #include <linux/module.h> +#include <drm/drm_module.h> +#include "xe_drv.h" #include "xe_hw_fence.h" #include "xe_pci.h"
@@ -61,12 +63,23 @@ module_param_named_unsafe(wedged_mode, xe_modparam.wedged_mode, int, 0600);MODULE_PARM_DESC (wedged_mode,"Module's default policy for the wedged mode - 0=never, 1=upon-critical-errors[default], 2=upon-any-hang" ); +static int xe_check_nomodeset (void ) +{ +if (drm_firmware_drivers_only ()) +return -ENODEV ; + +return 0 ; +} +struct init_funcs {int (*init)(void );void (*exit)(void ); };static const struct init_funcs init_funcs[] = { + { + .init = xe_check_nomodeset, + }, { .init = xe_hw_fence_module_init, .exit = xe_hw_fence_module_exit,
@@ -85,15 +98,35 @@ static const struct init_funcs init_funcs[] = { }, }; +static int __init xe_call_init_func (unsigned int i) +{ +if (WARN_ON (i >=ARRAY_SIZE (init_funcs))) +return 0 ; +if (!init_funcs[i].init) +return 0 ; + +return init_funcs[i].init (); +} + +static void xe_call_exit_func (unsigned int i) +{ +if (WARN_ON (i >=ARRAY_SIZE (init_funcs))) +return ; +if (!init_funcs[i].exit) +return ; + + init_funcs[i].exit (); +} +static int __init xe_init (void ) {int err, i;for (i =0 ; i <ARRAY_SIZE (init_funcs); i++) { - err = init_funcs[i].init (); + err =xe_call_init_func (i);if (err) {while (i--) - init_funcs[i].exit (); +xe_call_exit_func (i);return err; } }
@@ -106,7 +139,7 @@ static void __exit xe_exit(void)int i;for (i =ARRAY_SIZE (init_funcs) -1 ; i >=0 ; i--) - init_funcs[i].exit (); +xe_call_exit_func (i); }module_init (xe_init);
drivers/gpu/drm/xe/xe_sriov.c +1 -1
@@ -5,7 +5,7 @@#include <drm/drm_managed.h> -#include "regs/xe_sriov_regs.h" +#include "regs/xe_regs.h" #include "xe_assert.h" #include "xe_device.h"
drivers/gpu/drm/xe/xe_tuning.c +20 -1
@@ -39,12 +39,23 @@ static const struct xe_rtp_entry_sr gt_tunings[] = { }, {XE_RTP_NAME ("Tuning: Compression Overfetch" ),XE_RTP_RULES (GRAPHICS_VERSION_RANGE (2001 ,XE_RTP_END_VERSION_UNDEFINED )), -XE_RTP_ACTIONS (CLR (CCCHKNREG1 ,ENCOMPPERFFIX )), +XE_RTP_ACTIONS (CLR (CCCHKNREG1 ,ENCOMPPERFFIX ), +SET (CCCHKNREG1 ,L3CMPCTRL )) }, { XE_RTP_NAME("Tuning: Enable compressible partial write overfetch in L3"),XE_RTP_RULES (GRAPHICS_VERSION_RANGE (2001 ,XE_RTP_END_VERSION_UNDEFINED )),XE_RTP_ACTIONS (SET (L3SQCREG3 ,COMPPWOVERFETCHEN )) }, + { XE_RTP_NAME("Tuning: L2 Overfetch Compressible Only"), +XE_RTP_RULES (GRAPHICS_VERSION_RANGE (2001 ,XE_RTP_END_VERSION_UNDEFINED )), +XE_RTP_ACTIONS (SET (L3SQCREG2 , +COMPMEMRD256BOVRFETCHEN )) + }, + { XE_RTP_NAME("Tuning: Stateless compression control"), +XE_RTP_RULES (GRAPHICS_VERSION_RANGE (2001 ,XE_RTP_END_VERSION_UNDEFINED )), +XE_RTP_ACTIONS (FIELD_SET (STATELESS_COMPRESSION_CTRL ,UNIFIED_COMPRESSION_FORMAT , +REG_FIELD_PREP (UNIFIED_COMPRESSION_FORMAT ,0 ))) + }, {} };
@@ -93,6 +104,14 @@ static const struct xe_rtp_entry_sr lrc_tunings[] = { REG_FIELD_PREP(L3_PWM_TIMER_INIT_VAL_MASK, 0x7f))) }, +/* Xe2_HPG */ + + {XE_RTP_NAME ("Tuning: vs hit max value" ), +XE_RTP_RULES (GRAPHICS_VERSION (2001 ),ENGINE_CLASS (RENDER )), +XE_RTP_ACTIONS (FIELD_SET (FF_MODE ,VS_HIT_MAX_VALUE_MASK , +REG_FIELD_PREP (VS_HIT_MAX_VALUE_MASK ,0x3f ))) + }, + {} };
drivers/gpu/drm/xe/xe_wa.c +4 -0
@@ -733,6 +733,10 @@ static const struct xe_rtp_entry_sr lrc_was[] = { DIS_PARTIAL_AUTOSTRIP | DIS_AUTOSTRIP)) }, + {XE_RTP_NAME ("15016589081" ), +XE_RTP_RULES (GRAPHICS_VERSION (2001 ),ENGINE_CLASS (RENDER )), +XE_RTP_ACTIONS (SET (CHICKEN_RASTER_1 ,DIS_CLIP_NEGATIVE_BOUNDING_BOX )) + }, {} };
drivers/iio/adc/ad7124.c +1 -1
@@ -645,7 +645,7 @@ static int ad7124_write_raw(struct iio_dev *indio_dev,switch (info) {case IIO_CHAN_INFO_SAMP_FREQ : -if (val2 !=0 ) { +if (val2 !=0 || val ==0 ) { ret = -EINVAL ;break ; }
drivers/iio/industrialio-gts-helper.c +3 -1
@@ -307,13 +307,15 @@ static int iio_gts_build_avail_scale_table(struct iio_gts *gts)if (ret) goto err_free_out; +for (i =0 ; i < gts->num_itime; i++) +kfree (per_time_gains[i]);kfree (per_time_gains); gts->per_time_avail_scale_tables = per_time_scales;return 0 ; err_free_out: -for (i--; i; i--) { +for (i--; i >=0 ; i--) {kfree (per_time_scales[i]);kfree (per_time_gains[i]); }
drivers/iio/light/veml6030.c +1 -1
@@ -522,7 +522,7 @@ static int veml6030_read_raw(struct iio_dev *indio_dev, }if (mask ==IIO_CHAN_INFO_PROCESSED ) { *val = (reg * data->cur_resolution) /10000 ; - *val2 = (reg * data->cur_resolution) %10000 ; + *val2 = (reg * data->cur_resolution) %10000 *100 ;return IIO_VAL_INT_PLUS_MICRO ; } *val = reg;
drivers/infiniband/hw/bnxt_re/qplib_fp.c +4 -0
@@ -1532,9 +1532,11 @@ int bnxt_qplib_destroy_qp(struct bnxt_qplib_res *res,u32 tbl_indx;int rc; +spin_lock_bh (&rcfw->tbl_lock); tbl_indx =map_qp_id_to_tbl_indx (qp->id, rcfw); rcfw->qp_tbl[tbl_indx].qp_id =BNXT_QPLIB_QP_ID_INVALID ; rcfw->qp_tbl[tbl_indx].qp_handle =NULL ; +spin_unlock_bh (&rcfw->tbl_lock); bnxt_qplib_rcfw_cmd_prep((struct cmdq_base *)&req, CMDQ_BASE_OPCODE_DESTROY_QP,
@@ -1545,8 +1547,10 @@ int bnxt_qplib_destroy_qp(struct bnxt_qplib_res *res, sizeof(resp), 0); rc =bnxt_qplib_rcfw_send_message (rcfw, &msg);if (rc) { +spin_lock_bh (&rcfw->tbl_lock); rcfw->qp_tbl[tbl_indx].qp_id = qp->id; rcfw->qp_tbl[tbl_indx].qp_handle = qp; +spin_unlock_bh (&rcfw->tbl_lock);return rc; }
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c +19 -19
@@ -290,7 +290,6 @@ static int __send_message(struct bnxt_qplib_rcfw *rcfw,struct bnxt_qplib_hwq *hwq;u32 sw_prod, cmdq_prod;struct pci_dev *pdev; -unsigned long flags;u16 cookie;u8 *preq;
@@ -301,7 +300,7 @@ static int __send_message(struct bnxt_qplib_rcfw *rcfw,/* Cmdq are in 16-byte units, each request can consume 1 or more * cmdqe */ -spin_lock_irqsave (&hwq->lock, flags); +spin_lock_bh (&hwq->lock); required_slots =bnxt_qplib_get_cmd_slots (msg->req); free_slots =HWQ_FREE_SLOTS (hwq); cookie = cmdq->seq_num &RCFW_MAX_COOKIE_VALUE ;
@@ -311,7 +310,7 @@ static int __send_message(struct bnxt_qplib_rcfw *rcfw,dev_info_ratelimited (&pdev->dev,"CMDQ is full req/free %d/%d!" , required_slots, free_slots); -spin_unlock_irqrestore (&hwq->lock, flags); +spin_unlock_bh (&hwq->lock);return -EAGAIN ; }if (msg->block)
@@ -367,7 +366,7 @@ static int __send_message(struct bnxt_qplib_rcfw *rcfw,wmb ();writel (cmdq_prod, cmdq->cmdq_mbox.prod);writel (RCFW_CMDQ_TRIG_VAL , cmdq->cmdq_mbox.db); -spin_unlock_irqrestore (&hwq->lock, flags); +spin_unlock_bh (&hwq->lock);/* Return the CREQ response pointer */ return 0 ; }
@@ -486,7 +485,6 @@ static int __bnxt_qplib_rcfw_send_message(struct bnxt_qplib_rcfw *rcfw, {struct creq_qp_event *evnt = (struct creq_qp_event *)msg->resp;struct bnxt_qplib_crsqe *crsqe; -unsigned long flags;u16 cookie;int rc;u8 opcode;
@@ -512,12 +510,12 @@ static int __bnxt_qplib_rcfw_send_message(struct bnxt_qplib_rcfw *rcfw, rc =__poll_for_resp (rcfw, cookie);if (rc) { -spin_lock_irqsave (&rcfw->cmdq.hwq.lock, flags); +spin_lock_bh (&rcfw->cmdq.hwq.lock); crsqe = &rcfw->crsqe_tbl[cookie]; crsqe->is_waiter_alive = false;if (rc == -ENODEV )set_bit (FIRMWARE_STALL_DETECTED , &rcfw->cmdq.flags); -spin_unlock_irqrestore (&rcfw->cmdq.hwq.lock, flags); +spin_unlock_bh (&rcfw->cmdq.hwq.lock);return -ETIMEDOUT ; }
@@ -628,7 +626,6 @@ static int bnxt_qplib_process_qp_event(struct bnxt_qplib_rcfw *rcfw,u16 cookie, blocked =0 ;bool is_waiter_alive;struct pci_dev *pdev; -unsigned long flags;u32 wait_cmds =0 ;int rc =0 ;
@@ -637,17 +634,21 @@ static int bnxt_qplib_process_qp_event(struct bnxt_qplib_rcfw *rcfw,case CREQ_QP_EVENT_EVENT_QP_ERROR_NOTIFICATION : err_event = (struct creq_qp_error_notification *)qp_event; qp_id =le32_to_cpu (err_event->xid); +spin_lock (&rcfw->tbl_lock); tbl_indx =map_qp_id_to_tbl_indx (qp_id, rcfw); qp = rcfw->qp_tbl[tbl_indx].qp_handle; +if (!qp) { +spin_unlock (&rcfw->tbl_lock); +break ; + } +bnxt_qplib_mark_qp_error (qp); + rc = rcfw->creq.aeq_handler (rcfw, qp_event, qp); +spin_unlock (&rcfw->tbl_lock);dev_dbg (&pdev->dev,"Received QP error notification\n" );dev_dbg (&pdev->dev,"qpid 0x%x, req_err=0x%x, resp_err=0x%x\n" , qp_id, err_event->req_err_state_reason, err_event->res_err_state_reason); -if (!qp) -break ;
Lines of this file are not shown. View the raw message.
drivers/infiniband/hw/bnxt_re/qplib_rcfw.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/input/input.c +73 -61
134 lines not on this page · raw message
drivers/input/touchscreen/edt-ft5x06.c +18 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_dpll.c +290 -3
293 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_dpll.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_ptp_hw.c +19 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_ptp_hw.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mediatek/mtk_wed_wo.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/pci.c +17 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_ipip.c +24 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/dwmac4_dma.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +17 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath10k/wmi-tlv.c +6 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath11k/dp_rx.c +5 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/broadcom/brcm80211/Kconfig +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/common.c +14 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlegacy/common.h +12 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/iwl-drv.c +19 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/iwl-drv.h +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/fw.c +4 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c +23 -11
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/scan.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8192du/sw.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/pci.c +41 -7
48 lines not on this page · raw message
drivers/phy/freescale/phy-fsl-imx8m-pcie.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/phy/qualcomm/phy-qcom-qmp-usb-legacy.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/phy/qualcomm/phy-qcom-qmp-usb.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/thermal/intel/int340x_thermal/processor_thermal_rapl.c +24 -46
70 lines not on this page · raw message
drivers/thunderbolt/tb.c +42 -6
48 lines not on this page · raw message
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec.c +6 -4
Lines of this file are not shown. View the raw message.
fs/afs/dir_edit.c +89 -2
91 lines not on this page · raw message
fs/btrfs/bio.c +22 -40
62 lines not on this page · raw message
fs/dax.c +28 -17
45 lines not on this page · raw message
fs/smb/client/reparse.c +166 -8
174 lines not on this page · raw message
kernel/rcu/tree.c +106 -12
118 lines not on this page · raw message
mm/vmscan.c +60 -49
109 lines not on this page · raw message
net/mac80211/key.c +25 -17
42 lines not on this page · raw message
tools/testing/selftests/mm/uffd-common.c +2 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/uffd-common.h +2 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/uffd-unit-tests.c +6 -15
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.