Linux 6.6.15
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.15 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-class-devfreq | 3 Documentation/admin-guide/abi-obsolete.rst | 2 Documentation/admin-guide/abi-removed.rst | 2 Documentation/admin-guide/abi-stable.rst | 2 Documentation/admin-guide/abi-testing.rst | 2 Documentation/admin-guide/features.rst | 2 Documentation/arch/arc/features.rst | 2 Documentation/arch/arm/features.rst | 2 Documentation/arch/arm64/features.rst | 2 Documentation/arch/arm64/silicon-errata.rst | 2 Documentation/arch/loongarch/features.rst | 2 Documentation/arch/m68k/features.rst | 2 Documentation/arch/mips/features.rst | 2 Documentation/arch/nios2/features.rst | 2 Documentation/arch/openrisc/features.rst | 2 Documentation/arch/parisc/features.rst | 2 Documentation/arch/s390/features.rst | 2 Documentation/arch/sh/features.rst | 2 Documentation/arch/sparc/features.rst | 2 Documentation/arch/x86/features.rst | 2 Documentation/arch/xtensa/features.rst | 2 Documentation/devicetree/bindings/net/snps,dwmac.yaml | 5 Documentation/filesystems/directory-locking.rst | 29 Documentation/filesystems/locking.rst | 5 Documentation/filesystems/porting.rst | 18 Documentation/gpu/drm-kms.rst | 2 Documentation/gpu/todo.rst | 7 Documentation/powerpc/features.rst | 2 Documentation/riscv/features.rst | 2 Documentation/sphinx/kernel_abi.py | 56 Documentation/sphinx/kernel_feat.py | 55 Documentation/translations/zh_CN/arch/loongarch/features.rst | 2 Documentation/translations/zh_CN/arch/mips/features.rst | 2 Documentation/translations/zh_TW/dev-tools/index.rst | 40 Documentation/translations/zh_TW/dev-tools/sparse.txt | 91 + Documentation/translations/zh_TW/index.rst | 2 Documentation/translations/zh_TW/sparse.txt | 91 - Makefile | 2 arch/alpha/kernel/rtc.c | 2 arch/arm/boot/dts/nxp/imx/imx6q-apalis-ixora-v1.2.dts | 2 arch/arm/boot/dts/qcom/qcom-sdx55.dtsi | 10 arch/arm/boot/dts/samsung/exynos4210-i9100.dts | 8 arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi | 1 arch/arm64/Kconfig | 18 arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts | 1 arch/arm64/boot/dts/qcom/msm8916-wingtech-wt88047.dts | 1 arch/arm64/boot/dts/qcom/msm8916.dtsi | 1 arch/arm64/boot/dts/qcom/msm8939.dtsi | 1 arch/arm64/boot/dts/qcom/msm8953-xiaomi-mido.dts | 1 arch/arm64/boot/dts/qcom/msm8953-xiaomi-tissot.dts | 1 arch/arm64/boot/dts/qcom/msm8953-xiaomi-vince.dts | 1 arch/arm64/boot/dts/qcom/sc7180.dtsi | 4 arch/arm64/boot/dts/qcom/sc7280.dtsi | 4 arch/arm64/boot/dts/qcom/sc8180x.dtsi | 16 arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 2 arch/arm64/boot/dts/qcom/sdm670.dtsi | 8 arch/arm64/boot/dts/qcom/sdm845.dtsi | 16 arch/arm64/boot/dts/qcom/sm8150.dtsi | 16 arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus-lts.dts | 4 arch/arm64/boot/dts/rockchip/rk3588s.dtsi | 1 arch/arm64/boot/dts/sprd/ums512.dtsi | 4 arch/arm64/boot/install.sh | 3 arch/arm64/kernel/cpu_errata.c | 21 arch/arm64/kernel/entry.S | 22 arch/arm64/kernel/fpsimd.c | 6 arch/arm64/tools/cpucaps | 2 arch/loongarch/kernel/smp.c | 3 arch/mips/kernel/elf.c | 6 arch/mips/lantiq/prom.c | 7 arch/mips/mm/init.c | 12 arch/parisc/kernel/firmware.c | 4 arch/powerpc/configs/ps3_defconfig | 1 arch/riscv/include/asm/pgtable.h | 2 arch/riscv/include/asm/processor.h | 2 arch/riscv/kernel/pi/cmdline_early.c | 3 arch/s390/crypto/aes_s390.c | 4 arch/s390/crypto/paes_s390.c | 4 arch/sh/boards/mach-ecovec24/setup.c | 2 arch/x86/include/asm/syscall_wrapper.h | 25 arch/x86/kernel/hpet.c | 2 arch/x86/kernel/rtc.c | 2 block/ioctl.c | 2 block/partitions/core.c | 5 crypto/algapi.c | 1 drivers/base/power/main.c | 148 - drivers/base/power/trace.c | 2 drivers/block/nbd.c | 6 drivers/block/rbd.c | 22 drivers/bus/mhi/host/main.c | 29 drivers/char/hw_random/core.c | 34 drivers/cpufreq/amd-pstate.c | 7 drivers/cpufreq/intel_pstate.c | 55 drivers/cxl/core/region.c | 4 drivers/devfreq/devfreq.c | 57 drivers/dma/dmaengine.c | 3 drivers/dma/fsl-edma-main.c | 8 drivers/dma/idxd/device.c | 9 drivers/firmware/arm_scmi/common.h | 1 drivers/firmware/arm_scmi/mailbox.c | 14 drivers/firmware/arm_scmi/perf.c | 23 drivers/firmware/arm_scmi/raw_mode.c | 12 drivers/firmware/arm_scmi/shmem.c | 6 drivers/firmware/sysfb.c | 2 drivers/gpio/gpio-eic-sprd.c | 32 drivers/gpio/gpiolib-acpi.c | 14 drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 17 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 5 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c | 1 drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c | 1 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c | 5 drivers/gpu/drm/amd/display/dc/clk_mgr/dcn314/dcn314_clk_mgr.c | 21 drivers/gpu/drm/amd/display/dc/link/link_dpms.c | 8 drivers/gpu/drm/amd/display/dc/link/protocols/link_dpcd.c | 4 drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c | 11 drivers/gpu/drm/amd/display/modules/power/power_helpers.c | 2 drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 13 drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c | 2 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c | 2 drivers/gpu/drm/bridge/analogix/anx7625.c | 7 drivers/gpu/drm/bridge/analogix/anx7625.h | 2 drivers/gpu/drm/bridge/nxp-ptn3460.c | 6 drivers/gpu/drm/bridge/parade-ps8640.c | 23 drivers/gpu/drm/bridge/samsung-dsim.c | 32 drivers/gpu/drm/bridge/sii902x.c | 42 drivers/gpu/drm/drm_damage_helper.c | 3 drivers/gpu/drm/drm_plane.c | 14 drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 4 drivers/gpu/drm/exynos/exynos_drm_fimd.c | 4 drivers/gpu/drm/exynos/exynos_drm_gsc.c | 2 drivers/gpu/drm/i915/display/icl_dsi.c | 3 drivers/gpu/drm/i915/display/intel_psr.c | 22 drivers/gpu/drm/nouveau/nouveau_vmm.c | 3 drivers/gpu/drm/panel/panel-edp.c | 7 drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c | 2 drivers/gpu/drm/panel/panel-simple.c | 2 drivers/gpu/drm/qxl/qxl_drv.c | 2 drivers/gpu/drm/tidss/tidss_crtc.c | 10 drivers/gpu/drm/vboxvideo/vbox_drv.c | 2 drivers/gpu/drm/virtio/virtgpu_drv.c | 2 drivers/gpu/drm/virtio/virtgpu_plane.c | 10 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 drivers/iio/adc/ad7091r-base.c | 169 + drivers/iio/adc/ad7091r-base.h | 8 drivers/iio/adc/ad7091r5.c | 28 drivers/media/common/videobuf2/videobuf2-dma-sg.c | 10 drivers/media/i2c/imx290.c | 42 drivers/media/i2c/imx355.c | 12 drivers/media/i2c/ov01a10.c | 18 drivers/media/i2c/ov13b10.c | 14 drivers/media/i2c/ov9734.c | 19 drivers/media/i2c/st-mipid02.c | 9 drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c | 12 drivers/media/v4l2-core/v4l2-cci.c | 52 drivers/mmc/core/block.c | 46 drivers/mmc/host/mmc_spi.c | 186 -- drivers/mtd/maps/vmu-flash.c | 2 drivers/mtd/nand/raw/nand_base.c | 87 drivers/net/ethernet/broadcom/bnxt/bnxt.c | 8 drivers/net/ethernet/engleder/tsnep_main.c | 17 drivers/net/ethernet/freescale/fec_main.c | 2 drivers/net/ethernet/intel/i40e/i40e_main.c | 47 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 49 drivers/net/ethernet/intel/i40e/i40e_xsk.c | 4 drivers/net/ethernet/intel/ice/ice_base.c | 37 drivers/net/ethernet/intel/ice/ice_txrx.c | 19 drivers/net/ethernet/intel/ice/ice_txrx.h | 1 drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 31 drivers/net/ethernet/intel/ice/ice_xsk.c | 4 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 27 drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 5 drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en/params.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c | 10 drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c | 26 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 3 drivers/net/ethernet/mellanox/mlx5/core/esw/bridge_mcast.c | 14 drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c | 2 drivers/net/ethernet/mellanox/mlx5/core/lib/aso.c | 2 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c | 17 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 43 drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c | 3 drivers/net/fjes/fjes_hw.c | 37 drivers/net/hyperv/netvsc_drv.c | 4 drivers/net/phy/micrel.c | 11 drivers/net/tun.c | 10 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c | 4 drivers/opp/core.c | 6 drivers/parisc/power.c | 2 drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.c | 82 drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h | 32 drivers/platform/x86/p2sb.c | 180 +- drivers/rpmsg/virtio_rpmsg_bus.c | 1 drivers/rtc/rtc-cmos.c | 28 drivers/rtc/rtc-mc146818-lib.c | 39 drivers/s390/crypto/vfio_ap_ops.c | 269 ++- drivers/s390/crypto/vfio_ap_private.h | 3 drivers/scsi/scsi_error.c | 9 drivers/soc/fsl/qe/qmc.c | 35 drivers/soc/fsl/qe/tsa.c | 22 drivers/soc/qcom/pmic_glink_altmode.c | 4 drivers/soundwire/amd_manager.c | 8 drivers/soundwire/bus.c | 4 drivers/soundwire/debugfs.c | 2 drivers/soundwire/intel_auxdevice.c | 3 drivers/soundwire/master.c | 2 drivers/soundwire/qcom.c | 3 drivers/soundwire/slave.c | 12 drivers/spi/spi-bcm-qspi.c | 4 drivers/spi/spi-cadence.c | 17 drivers/spi/spi-intel-pci.c | 1 drivers/spi/spi.c | 4 drivers/thermal/gov_bang_bang.c | 23 drivers/thermal/gov_fair_share.c | 5 drivers/thermal/gov_power_allocator.c | 13 drivers/thermal/gov_step_wise.c | 16 drivers/thermal/intel/intel_hfi.c | 106 - drivers/thermal/thermal_core.c | 15 drivers/thermal/thermal_core.h | 4 drivers/thermal/thermal_helpers.c | 5 drivers/thermal/thermal_sysfs.c | 3 drivers/thermal/thermal_trip.c | 16 drivers/tty/serial/imx.c | 4 drivers/tty/serial/sc16is7xx.c | 389 ++-- drivers/tty/serial/serial_core.c | 58 drivers/tty/serial/stm32-usart.c | 8 drivers/ufs/core/ufshcd.c | 7 fs/afs/dir.c | 8 fs/btrfs/extent-tree.c | 53 fs/btrfs/inode.c | 22 fs/btrfs/ioctl.c | 7 fs/btrfs/ref-verify.c | 6 fs/btrfs/scrub.c | 29 fs/btrfs/sysfs.c | 4 fs/btrfs/tree-checker.c | 2 fs/btrfs/zoned.c | 8 fs/dlm/lowcomms.c | 14 fs/erofs/decompressor.c | 31 fs/exec.c | 3 fs/ext4/mballoc.c | 15 fs/fscache/cache.c | 3 fs/ioctl.c | 3 fs/namei.c | 60 fs/nfsd/nfs4state.c | 26 fs/pipe.c | 19 fs/smb/client/cifs_debug.c | 5 fs/smb/client/cifsglob.h | 2 fs/smb/client/cifsproto.h | 5 fs/smb/client/connect.c | 31 fs/smb/client/sess.c | 96 - fs/smb/client/smb2ops.c | 10 fs/smb/client/smb2pdu.c | 162 + fs/smb/client/smb2transport.c | 8 fs/smb/client/transport.c | 2 fs/smb/server/connection.c | 1 fs/smb/server/ksmbd_netlink.h | 3 fs/smb/server/oplock.c | 16 fs/smb/server/smb2pdu.c | 8 fs/smb/server/transport_ipc.c | 4 fs/ubifs/dir.c | 2 fs/xfs/xfs_super.c | 27 include/drm/drm_drv.h | 9 include/drm/drm_file.h | 12 include/drm/drm_plane.h | 10 include/linux/async.h | 2 include/linux/bpf-cgroup.h | 73 include/linux/bpf_verifier.h | 32 include/linux/filter.h | 1 include/linux/lsm_hook_defs.h | 2 include/linux/mc146818rtc.h | 3 include/linux/mlx5/fs.h | 2 include/linux/mlx5/mlx5_ifc.h | 2 include/linux/mmzone.h | 14 include/linux/mtd/rawnand.h | 2 include/linux/pipe_fs_i.h | 16 include/linux/rmap.h | 4 include/linux/security.h | 9 include/linux/serial_core.h | 79 include/linux/skmsg.h | 6 include/linux/soundwire/sdw.h | 4 include/linux/stmmac.h | 1 include/linux/syscalls.h | 1 include/media/v4l2-cci.h | 11 include/net/inet_connection_sock.h | 8 include/net/inet_sock.h | 5 include/net/llc_pdu.h | 6 include/net/sch_generic.h | 4 include/net/sock.h | 18 include/net/xdp_sock_drv.h | 27 include/uapi/linux/btrfs.h | 3 kernel/async.c | 85 kernel/bpf/btf.c | 1 kernel/bpf/cgroup.c | 17 kernel/bpf/verifier.c | 875 +++++++--- kernel/irq/irqdesc.c | 2 kernel/kexec_core.c | 1 kernel/power/swap.c | 38 kernel/rcu/tree.c | 34 kernel/rcu/tree_exp.h | 3 kernel/time/clocksource.c | 25 kernel/time/tick-sched.c | 5 kernel/trace/tracing_map.c | 7 lib/crypto/mpi/ec.c | 3 mm/memblock.c | 3 mm/migrate.c | 65 mm/mm_init.c | 6 mm/page_alloc.c | 16 mm/sparse.c | 17 net/8021q/vlan_netlink.c | 4 net/core/dev.c | 9 net/core/dev.h | 3 net/core/filter.c | 79 net/core/request_sock.c | 3 net/core/sock.c | 11 net/ipv4/af_inet.c | 12 net/ipv4/inet_connection_sock.c | 4 net/ipv4/ping.c | 2 net/ipv4/tcp.c | 1 net/ipv4/tcp_ipv4.c | 2 net/ipv4/udp.c | 9 net/ipv6/af_inet6.c | 12 net/ipv6/ping.c | 2 net/ipv6/tcp_ipv6.c | 2 net/ipv6/udp.c | 6 net/llc/af_llc.c | 24 net/llc/llc_core.c | 7 net/mac80211/sta_info.c | 5 net/netfilter/nf_tables_api.c | 20 net/netfilter/nft_chain_filter.c | 11 net/netfilter/nft_compat.c | 12 net/netfilter/nft_flow_offload.c | 5 net/netfilter/nft_limit.c | 23 net/netfilter/nft_nat.c | 5 net/netfilter/nft_rt.c | 5 net/netfilter/nft_socket.c | 5 net/netfilter/nft_synproxy.c | 7 net/netfilter/nft_tproxy.c | 5 net/netfilter/nft_xfrm.c | 5 net/netlink/af_netlink.c | 2 net/rds/af_rds.c | 2 net/sched/cls_api.c | 9 net/sched/cls_flower.c | 23 net/smc/smc_diag.c | 2 net/sunrpc/svcsock.c | 4 net/xdp/xsk.c | 12 net/xdp/xsk_buff_pool.c | 1 scripts/get_abi.pl | 2 security/security.c | 18 security/selinux/hooks.c | 28 security/smack/smack_lsm.c | 1 security/tomoyo/tomoyo.c | 1 sound/soc/intel/boards/sof_sdw.c | 4 tools/testing/selftests/bpf/prog_tests/verifier.c | 2 tools/testing/selftests/bpf/progs/cb_refs.c | 1 tools/testing/selftests/bpf/progs/iters.c | 695 +++++++ tools/testing/selftests/bpf/progs/strobemeta.h | 78 tools/testing/selftests/bpf/progs/verifier_iterating_callbacks.c | 242 ++ tools/testing/selftests/bpf/progs/verifier_subprog_precision.c | 86 tools/testing/selftests/bpf/progs/xdp_synproxy_kern.c | 84 tools/testing/selftests/drivers/net/bonding/bond_options.sh | 8 tools/testing/selftests/drivers/net/bonding/settings | 2 tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh | 9 tools/testing/selftests/mm/hugepage-vmemmap.c | 29 tools/testing/selftests/net/config | 28 tools/testing/selftests/net/rps_default_mask.sh | 6 tools/testing/selftests/net/so_incoming_cpu.c | 68 367 files changed, 5837 insertions(+), 2282 deletions(-)
Al Viro (1):
rename(): fix the locking of subdirectories
Alain Volmat (1):
media: i2c: st-mipid02: correct format propagation
Aleksander Jan Bajkowski (1):
MIPS: lantiq: register smp_ops on non-smp platforms
Alex Deucher (2):
drm/amdgpu/gfx10: set UNORD_DISPATCH in compute MQDs drm/amdgpu/gfx11: set UNORD_DISPATCH in compute MQDs
Alexander Stein (2):
media: v4l2-cci: Add support for little-endian encoded registers
media: i2c: imx290: Properly encode registers as little-endian
Alfred Piccioni (1):
lsm: new security_file_ioctl_compat() hook
Amelie Delaunay (1):
dmaengine: fix NULL pointer in channel unregistration function
Amit Kumar Mahapatra (1):
spi: spi-cadence: Reverse the order of interleaved write and read operations
Andrejs Cainikovs (1):
ARM: dts: imx6q-apalis: add can power-up delay on ixora board
Andy Shevchenko (2):
serial: core: Simplify uart_get_rs485_mode()
mmc: mmc_spi: remove custom DMA mapped buffers
Anthony Krowiak (1):
s390/vfio-ap: unpin pages on gisc registration failure
Arnd Bergmann (1):
drm/exynos: fix accidental on-stack copy of exynos_drm_plane
Artur Weber (2):
drm/panel: samsung-s6d7aa0: drop DRM_BUS_FLAG_DE_HIGH for lsl080al02
ARM: dts: exynos4212-tab3: add samsung,invert-vclk flag to fimd
Avri Altman (1):
mmc: core: Use mrq.sbc in close-ended ffu
Baolin Wang (2):
mm: migrate: record the mlocked page status to remove unnecessary lru drain
mm: migrate: fix getting incorrect page mapping during page migration
Bart Van Assche (1):
scsi: ufs: core: Remove the ufshcd_hba_exit() call from ufshcd_async_scan()
Benjamin Poirier (1):
selftests: bonding: Increase timeout to 1200s
Bernd Edlinger (2):
net: stmmac: Wait a bit for the reset to take effect
exec: Fix error handling in begin_new_exec()
Bhaumik Bhatt (1):
bus: mhi: host: Add spinlock to protect WP access when queueing TREs
Bingbu Cao (4):
media: imx355: Enable runtime PM before registering async sub-device
media: ov9734: Enable runtime PM before registering async sub-device
media: ov13b10: Enable runtime PM before registering async sub-device
media: ov01a10: Enable runtime PM before registering async sub-device
Charan Teja Kalla (2):
mm/sparsemem: fix race in accessing memory_section->usage
mm: page_alloc: unreserve highatomic page blocks before oom
Christian Marangi (1):
PM / devfreq: Fix buffer overflow in trans_stat_show
Christophe JAILLET (1):
riscv: Fix an off-by-one in get_early_cmdline()
Chung-Chiang Cheng (1):
btrfs: tree-checker: fix inline ref size in error messages
Cixi Geng (1):
arm64: dts: sprd: fix the cpu node for UMS512
Cristian Marussi (3):
firmware: arm_scmi: Check mailbox/SMT channel for consistency
firmware: arm_scmi: Use xa_insert() to store opps
firmware: arm_scmi: Use xa_insert() when saving raw queues
Daan De Meyer (2):
bpf: Propagate modified uaddrlen from cgroup sockaddr programs
bpf: Add bpf_sock_addr_set_sun_path() to allow writing unix sockaddr from bpf
Dan Carpenter (3):
netfs, fscache: Prevent Oops in fscache_put_cache() drm/bridge: nxp-ptn3460: fix i2c_master_send() error checking drm/bridge: nxp-ptn3460: simplify some error checking
Dave Airlie (1):
nouveau/vmm: don't set addr on the fail path to avoid warning
Dave Chinner (1):
xfs: read only mounts with fsopen mount API are busted
David Disseldorp (1):
btrfs: sysfs: validate scrub_speed_max value
David Howells (1):
afs: Hide silly-rename files from userspace
David Lechner (1):
spi: fix finalize message on error return
David Sterba (1):
btrfs: don't warn if discard range is not aligned to sector
Dawei Li (1):
genirq: Initialize resend_node hlist for all interrupt descriptors
Di Shen (1):
thermal: gov_power_allocator: avoid inability to reset a cdev
Dinghao Liu (1):
net/mlx5e: fix a potential double-free in fs_any_create_groups
Donet Tom (1):
selftests: mm: hugepage-vmemmap fails on 64K page size systems
Douglas Anderson (2):
drm/bridge: parade-ps8640: Wait for HPD when doing an AUX transfer drm/bridge: parade-ps8640: Make sure we drop the AUX mutex in the error case
Eduard Zingerman (17):
bpf: move explored_state() closer to the beginning of verifier.c
bpf: extract same_callsites() as utility function
bpf: exact states comparison for iterator convergence checks selftests/bpf: tests with delayed read/precision makrs in loop body
bpf: correct loop detection for iterators convergence selftests/bpf: test if state loops are detected in a tricky case
bpf: print full verifier states on infinite loop detection selftests/bpf: track tcp payload offset as scalar in xdp_synproxy selftests/bpf: track string payload offset as scalar in strobemeta
bpf: extract __check_reg_arg() utility function
bpf: extract setup_func_entry() utility function
bpf: verify callbacks as if they are called unknown number of times selftests/bpf: tests for iterating callbacks
bpf: widening for callback iterators
selftests/bpf: test widening for iterating callbacks
bpf: keep track of max number of bpf_loop callback iterations selftests/bpf: check if max number of bpf_loop iterations is tracked
Emmanuel Grumbach (1):
wifi: iwlwifi: fix a memory corruption
Erez Shitrit (1):
net/mlx5: Bridge, Enable mcast in smfs steering mode
Eric Dumazet (3):
nbd: always initialize struct msghdr completely
llc: make llc_ui_sendmsg() more robust against bonding changes
udp: fix busy polling
Fedor Pchelkin (2):
btrfs: ref-verify: free ref cache before clearing mount opt drm/exynos: gsc: minor fix for loop iteration in gsc_runtime_resume
Florian Westphal (3):
netfilter: nft_limit: reject configurations that cause integer overflow
netfilter: nf_tables: restrict anonymous set and map names to 16 bytes
netfilter: nf_tables: reject QUEUE/DROP verdict parameters
Frank Li (1):
dmaengine: fsl-edma: fix eDMAv4 channel allocation issue
Frederic Weisbecker (1):
rcu: Defer RCU kthreads wakeup when CPU is dying
Gao Xiang (1):
erofs: fix lz4 inplace decompression
Geert Uytterhoeven (1):
sh: ecovec24: Rename missed backlight field from fbdev to dev
Geoff Levand (1):
powerpc/ps3_defconfig: Disable PPC64_BIG_ENDIAN_ELF_ABI_V2
Gerhard Engleder (2):
tsnep: Remove FCS for XDP data path
tsnep: Fix XDP_RING_NEED_WAKEUP for empty fill ring
Greg Kroah-Hartman (1):
Linux 6.6.15
Guo Ren (2):
riscv: mm: Fixup compat arch_get_mmap_end
riscv: mm: Fixup compat mode boot failure
Hangbin Liu (1):
selftests: bonding: do not test arp/ns target with mode balance-alb/tlb
Helge Deller (2):
parisc/firmware: Fix F-extend for PDC addresses parisc/power: Fix power soft-off button emulation on qemu
Herbert Xu (3):
crypto: api - Disallow identical driver names
hwrng: core - Fix page fault dead lock on mmap-ed hwrng
crypto: s390/aes - Fix buffer overread in CTR mode
Herve Codina (3):
soc: fsl: cpm1: tsa: Fix __iomem addresses declaration
soc: fsl: cpm1: qmc: Fix __iomem addresses declaration
soc: fsl: cpm1: qmc: Fix rx channel reset
Hongchen Zhang (1):
PM: hibernate: Enforce ordering during image compression/decompression
Horatiu Vultur (1):
net: micrel: Fix PTP frame parsing for lan8814
Hsin-Yi Wang (3):
drm/panel-edp: drm/panel-edp: Fix AUO B116XAK01 name and timing drm/panel-edp: drm/panel-edp: Fix AUO B116XTN02 name drm/bridge: anx7625: Ensure bridge is suspended in disable()
Huacai Chen (1):
LoongArch/smp: Call rcutree_report_cpu_starting() earlier
Hugo Villeneuve (10):
serial: sc16is7xx: improve regmap debugfs by using one regmap per port
serial: sc16is7xx: remove wasteful static buffer in sc16is7xx_regmap_name()
serial: sc16is7xx: remove global regmap from struct sc16is7xx_port
serial: sc16is7xx: remove unused line structure member
serial: sc16is7xx: change EFR lock to operate on each channels
serial: sc16is7xx: convert from _raw_ to _noinc_ regmap functions for FIFO
serial: sc16is7xx: fix invalid sc16is7xx_lines bitfield in case of probe error
serial: sc16is7xx: remove obsolete loop in sc16is7xx_port_irq()
serial: sc16is7xx: improve do/while loop in sc16is7xx_irq()
serial: sc16is7xx: fix unconditional activation of THRI interrupt
Ido Schimmel (1):
net/sched: flower: Fix chain template offload
Ilya Dryomov (1):
rbd: don't move requests to the running list on errors
Ivan Lipski (1):
Revert "drm/amd/display: fix bandwidth validation failure on DCN 2.1"
Jakub Kicinski (4):
net: fix removing a namespace with conflicting altnames
selftests: fill in some missing configs for net
selftests: net: fix rps_default_mask with >32 CPUs
selftests: netdevsim: fix the udp_tunnel_nic test
James Gowans (1):
kexec: do syscore_shutdown() in kernel_kexec
Javier Martinez Canillas (2):
drm/virtio: Disable damage clipping if FB changed since last page-flip
drm: Allow drivers to indicate the damage helpers to ignore damage clips
Jenishkumar Maheshbhai Patel (1):
net: mvpp2: clear BM pool before initialization
Jiri Wiesner (1):
clocksource: Skip watchdog check for large watchdog intervals
Johan Hovold (20):
soc: qcom: pmic_glink_altmode: fix port sanity check
arm64: dts: qcom: sc8280xp-crd: fix eDP phy compatible
ARM: dts: qcom: sdx55: fix USB wakeup interrupt types
ARM: dts: qcom: sdx55: fix pdc '#interrupt-cells'
arm64: dts: qcom: sc7180: fix USB wakeup interrupt types
arm64: dts: qcom: sdm845: fix USB wakeup interrupt types
arm64: dts: qcom: sdm670: fix USB wakeup interrupt types
arm64: dts: qcom: sm8150: fix USB wakeup interrupt types
arm64: dts: qcom: sc8180x: fix USB wakeup interrupt types
arm64: dts: qcom: sc7280: fix usb_1 wakeup interrupt types
ARM: dts: qcom: sdx55: fix USB DP/DM HS PHY interrupts
arm64: dts: qcom: sdm845: fix USB DP/DM HS PHY interrupts
arm64: dts: qcom: sdm845: fix USB SS wakeup
arm64: dts: qcom: sm8150: fix USB DP/DM HS PHY interrupts
arm64: dts: qcom: sm8150: fix USB SS wakeup
arm64: dts: qcom: sc8180x: fix USB DP/DM HS PHY interrupts
arm64: dts: qcom: sc8180x: fix USB SS wakeup
arm64: dts: qcom: sdm670: fix USB DP/DM HS PHY interrupts
arm64: dts: qcom: sdm670: fix USB SS wakeup
ARM: dts: qcom: sdx55: fix USB SS wakeup
Johannes Berg (1):
wifi: mac80211: fix potential sta-link leak
Jonathan Gray (1):
Revert "drm/amd: Enable PCIe PME from D3"
Jordan Rife (1):
dlm: use kernel_connect() and kernel_bind()
Josef Bacik (1):
arm64: properly install vmlinuz.efi
Kamal Dasu (1):
spi: bcm-qspi: fix SFDP BFPT read by usig mspi read
Krishna chaitanya chundru (1):
bus: mhi: host: Add alignment check for event ring read pointer
Krzysztof Kozlowski (1):
soundwire: fix initializing sysfs for same devices on different buses
Kuniyuki Iwashima (2):
llc: Drop support for ETH_P_TR_802_2.
selftest: Don't reuse port for SO_INCOMING_CPU test.
Leon Romanovsky (2):
net/mlx5e: Allow software parsing when IPsec crypto is enabled net/mlx5e: Ignore IPsec replay window values on sender side
Li Lingfeng (1):
block: Move checking GENHD_FL_NO_PART to bdev_add_partition()
Likun Gao (1):
drm/amdgpu: correct the cu count for gfx v11
Lin Ma (2):
vlan: skip nested type that is not IFLA_VLAN_QOS_MAPPING
ksmbd: fix global oob in ksmbd_nl_policy
Lino Sanfilippo (2):
serial: core: set missing supported flag for RX during TX GPIO
serial: Do not hold the port lock when setting rx-during-tx GPIO
Lucas Stach (1):
SUNRPC: use request size to initialize bio_vec in svc_udp_sendto()
Lukas Schauer (1):
pipe: wakeup wr_wait after setting max_usage
Ma Jun (2):
drm/amdgpu: Fix the null pointer when load rlc firmware drm/amdgpu/pm: Fix the power source flag error
Ma Wupeng (1):
efi: disable mirror feature during crashkernel
Maciej Fijalkowski (10):
xsk: recycle buffer in case Rx queue was full
xsk: make xsk_buff_pool responsible for clearing xdp_buff::flags
xsk: fix usage of multi-buffer BPF helpers for ZC XDP
ice: work on pre-XDP prog frag count
ice: remove redundant xdp_rxq_info registration
intel: xsk: initialize skb_frag_t::bv_offset in ZC drivers
ice: update xdp_rxq_info::frag_size for ZC enabled Rx queue
xdp: reflect tail increase for MEM_TYPE_XSK_BUFF_POOL
i40e: set xdp_rxq_info::frag_size
i40e: update xdp_rxq_info::frag_size for ZC enabled Rx queue
Marcelo Schmitt (3):
iio: adc: ad7091r: Set alert bit in config register
iio: adc: ad7091r: Allow users to configure device events
iio: adc: ad7091r: Enable internal vref if external vref is not supplied
Mario Limonciello (8):
rtc: cmos: Use ACPI alarm for non-Intel x86 systems too
rtc: Adjust failure return code for cmos_set_alarm()
rtc: mc146818-lib: Adjust failure return code for mc146818_get_time()
rtc: Add support for configuring the UIP timeout for RTC reads
rtc: Extend timeout for waiting for UIP to clear to 1s
gpiolib: acpi: Ignore touchpad wakeup on GPD G1619-04 drm/amd/display: Disable PSR-SU on Parade 0803 TCON again cpufreq/amd-pstate: Fix setting scaling max/min freq values
Mark Brown (1):
arm64/sme: Always exit sme_alloc() early with existing storage
Mark Rutland (1):
arm64: entry: fix ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD
Markus Niebel (1):
drm: panel-simple: add missing bus flags for Tianma tm070jvhg[30/33]
Martin KaFai Lau (1):
net/bpf: Avoid unused "sin_addr_len" warning when CONFIG_CGROUP_BPF is not set
Max Kellermann (1):
fs/pipe: move check to pipe_has_watch_queue()
Melissa Wen (1):
drm/amd/display: fix bandwidth validation failure on DCN 2.1
Michael Chan (2):
bnxt_en: Wait for FLR to complete during probe
bnxt_en: Prevent kernel warning when running offline self test
Michael Grzeschik (1):
media: videobuf2-dma-sg: fix vmap callback
Michael Kelley (1):
hv_netvsc: Calculate correct ring size when PAGE_SIZE is not 4 Kbytes
Michael Walle (1):
drm: bridge: samsung-dsim: Don't use FORCE_STOP_STATE
Mika Kahola (1):
drm/i915/lnl: Remove watchdog timers for PSR
Mika Westerberg (1):
spi: intel-pci: Remove Meteor Lake-S SoC PCI ID from the list
Min-Hua Chen (2):
docs: sparse: move TW sparse.txt to TW dev-tools
docs: sparse: add sparse.rst to toctree
Miquel Raynal (5):
mtd: maps: vmu-flash: Fix the (mtd core) switch to ref counters
mtd: rawnand: Prevent crossing LUN boundaries during sequential reads
mtd: rawnand: Fix core interference with sequential reads
mtd: rawnand: Prevent sequential reads with on-die ECC engines
mtd: rawnand: Clarify conditions to enable continuous reads
Moshe Shemesh (1):
net/mlx5: Bridge, fix multicast packets sent to uplink
Namjae Jeon (5):
ksmbd: set v2 lease version on lease upgrade
ksmbd: fix potential circular locking issue in smb2_set_ea()
ksmbd: don't increment epoch if current state and request state are same
ksmbd: send lease break notification on FILE_RENAME_INFORMATION
ksmbd: Add missing set_freezable() for freezable kthread
Naohiro Aota (3):
btrfs: zoned: fix lock ordering in btrfs_zone_activate()
btrfs: zoned: factor out prepare_allocation_zoned()
btrfs: zoned: optimize hint byte for zoned allocator
Nathan Chancellor (1):
platform/x86: intel-uncore-freq: Fix types in sysfs callbacks
NeilBrown (1):
nfsd: fix RELEASE_LOCKOWNER
Nicholas Kazlauskas (1):
drm/amd/display: Port DENTIST hang and TDR fixes to OTG disable W/A
Niklas Cassel (1):
scsi: core: Kick the requeue list after inserting when flushing
Omar Sandoval (2):
btrfs: avoid copying BTRFS_ROOT_SUBVOL_DEAD flag to snapshot of subvolume being deleted
btrfs: don't abort filesystem when attempting to snapshot deleted subvolume
Pablo Neira Ayuso (2):
netfilter: nf_tables: validate NFPROTO_* family
netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress basechain
Paul Cercueil (1):
ARM: dts: samsung: exynos4210-i9100: Unconditionally enable LDO12
Paulo Alcantara (1):
smb: client: fix parsing of SMB3.1.1 POSIX create context
Petr Pavlu (1):
tracing: Ensure visibility when inserting an element into tracing_map
Pierre-Louis Bossart (1):
soundwire: bus: introduce controller_id
Pin-yen Lin (1):
drm/bridge: parade-ps8640: Ensure bridge is suspended in .post_disable()
Qiang Yu (1):
bus: mhi: host: Drop chan lock before queuing buffers
Qu Wenruo (2):
btrfs: scrub: avoid use-after-free when chunk length is not 64K aligned
btrfs: defrag: reject unknown flags of btrfs_ioctl_defrag_range_args
Quanquan Cao (1):
cxl/region:Fix overflow issue in alloc_hpa()
Rafael J. Wysocki (7):
async: Split async_schedule_node_domain()
async: Introduce async_schedule_dev_nocall()
PM: sleep: Fix possible deadlocks in core system-wide PM code
cpufreq: intel_pstate: Refine computation of P-state for given frequency
thermal: trip: Drop redundant trips check from for_each_thermal_trip()
thermal: core: Store trip pointer in struct thermal_instance
thermal: trip: Drop lockdep assertion from thermal_zone_trip_id()
Rahul Rameshbabu (2):
net/mlx5e: Fix operation precedence bug in port timestamping napi_poll context net/mlx5: Use mlx5 device constant for selecting CQ period mode for ASO
Randy Dunlap (1):
serial: core: fix kernel-doc for uart_port_unlock_irqrestore()
Rex Zhang (1):
dmaengine: idxd: Move dma_free_coherent() out of spinlocked context
Ricardo Neri (3):
thermal: intel: hfi: Refactor enabling code into helper functions
thermal: intel: hfi: Disable an HFI instance when all its CPUs go offline
thermal: intel: hfi: Add syscore callbacks for system-wide PM
Richard Palethorpe (1):
x86/entry/ia32: Ensure s32 is sign extended to s64
Rob Herring (2):
arm64: Rename ARM64_WORKAROUND_2966298
arm64: errata: Add Cortex-A510 speculative unprivileged load workaround
Rohan G Thomas (2):
net: stmmac: Tx coe sw fallback
dt-bindings: net: snps,dwmac: Tx coe unsupported
Romain Gantois (1):
net: stmmac: Prevent DSA tags from breaking COE
Sakari Ailus (2):
media: v4l: cci: Include linux/bits.h
media: v4l: cci: Add macros to obtain register width and address
Salvatore Dipietro (1):
tcp: Add memory barrier to tcp_push()
Sam Edwards (1):
arm64: dts: rockchip: Fix rk3588 USB power-domain clocks
Serge Semin (1):
mips: Fix max_mapnr being uninitialized on early stages
Sharath Srinivasan (1):
net/rds: Fix UBSAN: array-index-out-of-bounds in rds_cmsg_recv
Sheng-Liang Pan (1):
drm/panel-edp: Add AUO B116XTN02, BOE NT116WHM-N21,836X2, NV116WHM-N49 V8.0
Shenwei Wang (1):
net: fec: fix the unhandled context fault from smmu
Shin'ichiro Kawasaki (1):
platform/x86: p2sb: Allow p2sb_bar() calls during PCI device probe
Shyam Prasad N (12):
cifs: handle cases where a channel is closed
cifs: reconnect work should have reference on server struct
cifs: handle when server starts supporting multichannel
cifs: handle when server stops supporting multichannel
Revert "cifs: reconnect work should have reference on server struct"
cifs: reconnect worker should take reference on server struct unconditionally
cifs: handle servers that still advertise multichannel after disabling
cifs: update iface_last_update on each query-and-update
cifs: fix lock ordering while disabling multichannel
cifs: fix a pending undercount of srv_count
cifs: after disabling multichannel, mark tcon for reconnect
cifs: fix stray unlock in cifs_chan_skip_or_disable
Srinivasan Shanmugam (3):
drm/amd/display: Fix variable deferencing before NULL check in edp_setup_replay() drm/amd/display: Fix late derefrence 'dsc' check in 'link_set_dsc_pps_packet()' drm/amd/display: Fix uninitialized variable usage in core_link_ 'read_dpcd() & write_dpcd()' functions
Stephan Gerhold (3):
arm64: dts: qcom: msm8916: Make blsp_dma controlled-remotely
arm64: dts: qcom: msm8939: Make blsp_dma controlled-remotely
arm64: dts: qcom: Add missing vio-supply for AW2013
Steven Rostedt (Google) (1):
mm/rmap: fix misplaced parenthesis of a likely()
Suraj Jitindar Singh (1):
ext4: allow for the last group to be marked as trimmed
Thomas Gleixner (2):
serial: core: Provide port lock wrappers
serial: sc16is7xx: Use port lock wrappers
Thomas Zimmermann (2):
Revert "drivers/firmware: Move sysfb_init() from device_initcall to subsys_initcall_sync"
drm: Fix TODO list mentioning non-KMS drivers
Tianjia Zhang (1):
crypto: lib/mpi - Fix unexpected pointer access in mpi_ec_init
Tianling Shen (1):
arm64: dts: rockchip: configure eth pad driver strength for orangepi r1 plus lts
Tim Chen (1):
tick/sched: Preserve number of idle sleeps across CPU hotplug events
Tirthendu Sarkar (1):
i40e: handle multi-buffer packets that are shrunk by xdp prog
Tomi Valkeinen (3):
drm/tidss: Fix atomic_flush check drm/bridge: sii902x: Fix probing race issue drm/bridge: sii902x: Fix audio codec unregistration
Tony Krowiak (6):
s390/vfio-ap: always filter entire AP matrix
s390/vfio-ap: loop over the shadow APCB when filtering guest's AP configuration s390/vfio-ap: let on_scan_complete() callback filter matrix and update guest's APCB s390/vfio-ap: reset queues filtered from the guest's AP config s390/vfio-ap: reset queues associated with adapter for queue unbound from driver s390/vfio-ap: do not reset queue removed from host config
Vegard Nossum (3):
docs: kernel_feat.py: fix potential command injection
docs: kernel_abi.py: fix command injection scripts/get_abi: fix source path leak
Ville Syrjälä (3):
Revert "drm/i915/dsi: Do display on sequence later on icl+"
drm: Don't unref the same fb many times by mistake due to deadlock handling drm/i915/psr: Only allow PSR in LPSP mode on HSW non-ULT
Viresh Kumar (1):
OPP: Pass rounded rate to _set_opp()
Vlad Buslov (1):
net/mlx5e: Fix peer flow lists handling
Wayne Lin (1):
drm/amd/display: Align the returned error code with legacy DP
Wen Gu (1):
net/smc: fix illegal rmb_desc access in SMC-D connection dump
Wenhua Lin (1):
gpio: eic-sprd: Clear interrupt after set the interrupt type
Xi Ruoyao (1):
mips: Call lose_fpu(0) before initializing fcr31 in mips_set_personality_nan
Xiaolei Wang (1):
rpmsg: virtio: Free driver_override when rpmsg_remove()
Yajun Deng (1):
memblock: fix crash when reserved memory is not added to memory
Yevgeny Kliteynik (2):
net/mlx5: DR, Use the right GVMI number for drop action net/mlx5: DR, Can't go to uplink vport on RX rule
Yishai Hadas (1):
net/mlx5: Fix a WARN upon a callback command failure
Yunjian Wang (2):
tun: fix missing dropped counter in tun_xdp_act
tun: add missing rx stats accounting in tun_xdp_act
Zack Rusin (1):
drm: Disable the cursor plane on atomic contexts with virtualized drivers
Zheng Wang (2):
media: mtk-jpeg: Fix timeout schedule error in mtk_jpegdec_worker.
media: mtk-jpeg: Fix use after free bug due to error path handling in mtk_jpeg_dec_device_run
Zhengchao Shao (3):
tcp: make sure init the accept_queue's spinlocks once
netlink: fix potential sleeping issue in mqueue_flush_file
ipv6: init the accept_queue's spinlocks in inet6_create
Zhihao Cheng (1):
ubifs: ubifs_symlink: Fix memleak of inode->i_link in error path
Zhipeng Lu (2):
net/mlx5e: fix a double-free in arfs_create_groups
fjes: fix memleaks in fjes_hw_setup
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-class-devfreq +3 -0
@@ -52,6 +52,9 @@ Description: echo 0 > /sys/class/devfreq/.../trans_stat + If the transition table is bigger than PAGE_SIZE, reading + this will return an -EFBIG error. + What: /sys/class/devfreq/.../available_frequencies Date: October 2012 Contact: Nishanth Menon <[email protected]>
Documentation/admin-guide/abi-obsolete.rst +1 -1
@@ -7,5 +7,5 @@ marked to be removed at some later point in time. The description of the interface will document the reason why it is obsolete and when it can be expected to be removed. -.. kernel-abi:: $srctree/Documentation/ABI/obsolete +.. kernel-abi:: ABI/obsolete :rst:
Documentation/admin-guide/abi-removed.rst +1 -1
@@ -1,5 +1,5 @@ ABI removed symbols =================== -.. kernel-abi:: $srctree/Documentation/ABI/removed +.. kernel-abi:: ABI/removed :rst:
Documentation/admin-guide/abi-stable.rst +1 -1
@@ -10,5 +10,5 @@ for at least 2 years. Most interfaces (like syscalls) are expected to never change and always be available. -.. kernel-abi:: $srctree/Documentation/ABI/stable +.. kernel-abi:: ABI/stable :rst:
Documentation/admin-guide/abi-testing.rst +1 -1
@@ -16,5 +16,5 @@ Programs that use these interfaces are strongly encouraged to add their name to the description of these interfaces, so that the kernel developers can easily notify them if any changes occur. -.. kernel-abi:: $srctree/Documentation/ABI/testing +.. kernel-abi:: ABI/testing :rst:
Documentation/admin-guide/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features +.. kernel-feat:: features
Documentation/arch/arc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features arc +.. kernel-feat:: features arc
Documentation/arch/arm/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features arm +.. kernel-feat:: features arm
Documentation/arch/arm64/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features arm64 +.. kernel-feat:: features arm64
Documentation/arch/arm64/silicon-errata.rst +2 -0
@@ -71,6 +71,8 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A510 | #2658417 | ARM64_ERRATUM_2658417 | +----------------+-----------------+-----------------+-----------------------------+ +| ARM | Cortex-A510 | #3117295 | ARM64_ERRATUM_3117295 | ++----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A520 | #2966298 | ARM64_ERRATUM_2966298 | +----------------+-----------------+-----------------+-----------------------------+ | ARM | Cortex-A53 | #826319 | ARM64_ERRATUM_826319 |
Documentation/arch/loongarch/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features loongarch +.. kernel-feat:: features loongarch
Documentation/arch/m68k/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features m68k +.. kernel-feat:: features m68k
Documentation/arch/mips/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features mips +.. kernel-feat:: features mips
Documentation/arch/nios2/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features nios2 +.. kernel-feat:: features nios2
Documentation/arch/openrisc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features openrisc +.. kernel-feat:: features openrisc
Documentation/arch/parisc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features parisc +.. kernel-feat:: features parisc
Documentation/arch/s390/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features s390 +.. kernel-feat:: features s390
Documentation/arch/sh/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features sh +.. kernel-feat:: features sh
Documentation/arch/sparc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features sparc +.. kernel-feat:: features sparc
Documentation/arch/x86/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features x86 +.. kernel-feat:: features x86
Documentation/arch/xtensa/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features xtensa +.. kernel-feat:: features xtensa
Documentation/devicetree/bindings/net/snps,dwmac.yaml +5 -0
@@ -394,6 +394,11 @@ properties: When a PFC frame is received with priorities matching the bitmask, the queue is blocked from transmitting for the pause time specified in the PFC frame. + + snps,coe-unsupported: + type: boolean + description: TX checksum offload is unsupported by the TX queue. + allOf: - if: required:
Documentation/filesystems/directory-locking.rst +15 -14
@@ -22,13 +22,16 @@ exclusive. 3) object removal. Locking rules: caller locks parent, finds victim, locks victim and calls the method. Locks are exclusive. -4) rename() that is _not_ cross-directory. Locking rules: caller locks the -parent and finds source and target. We lock both (provided they exist). If we -need to lock two inodes of different type (dir vs non-dir), we lock directory -first. If we need to lock two inodes of the same type, lock them in inode -pointer order. Then call the method. All locks are exclusive. -NB: we might get away with locking the source (and target in exchange -case) shared. +4) rename() that is _not_ cross-directory. Locking rules: caller locks +the parent and finds source and target. Then we decide which of the +source and target need to be locked. Source needs to be locked if it's a +non-directory; target - if it's a non-directory or about to be removed. +Take the locks that need to be taken, in inode pointer order if need +to take both (that can happen only when both source and target are +non-directories - the source because it wouldn't be locked otherwise +and the target because mixing directory and non-directory is allowed +only with RENAME_EXCHANGE, and that won't be removing the target). +After the locks had been taken, call the method. All locks are exclusive. 5) link creation. Locking rules:
@@ -44,20 +47,17 @@ rules: * lock the filesystem * lock parents in "ancestors first" order. If one is not ancestor of - the other, lock them in inode pointer order. + the other, lock the parent of source first. * find source and target. * if old parent is equal to or is a descendent of target fail with -ENOTEMPTY * if new parent is equal to or is a descendent of source fail with -ELOOP - * Lock both the source and the target provided they exist. If we - need to lock two inodes of different type (dir vs non-dir), we lock - the directory first. If we need to lock two inodes of the same type, - lock them in inode pointer order. + * Lock subdirectories involved (source before target). + * Lock non-directories involved, in inode pointer order. * call the method. -All ->i_rwsem are taken exclusive. Again, we might get away with locking -the source (and target in exchange case) shared. +All ->i_rwsem are taken exclusive. The rules above obviously guarantee that all directories that are going to be read, modified or removed by method will be locked by caller.
@@ -67,6 +67,7 @@ If no directory is its own ancestor, the scheme above is deadlock-free. Proof: +[XXX: will be updated once we are done massaging the lock_rename()] First of all, at any moment we have a linear ordering of the objects - A < B iff (A is an ancestor of B) or (B is not an ancestor of A and ptr(A) < ptr(B)).
Documentation/filesystems/locking.rst +4 -1
@@ -101,7 +101,7 @@ symlink: exclusive mkdir: exclusive unlink: exclusive (both) rmdir: exclusive (both)(see below) -rename: exclusive (all) (see below) +rename: exclusive (both parents, some children) (see below) readlink: no get_link: no setattr: exclusive
@@ -123,6 +123,9 @@ get_offset_ctx no Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_rwsem exclusive on victim. cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. + ->unlink() and ->rename() have ->i_rwsem exclusive on all non-directories + involved. + ->rename() has ->i_rwsem exclusive on any subdirectory that changes parent. See Documentation/filesystems/directory-locking.rst for more detailed discussion of the locking scheme for directory operations.
Documentation/filesystems/porting.rst +18 -0
@@ -1045,3 +1045,21 @@ filesystem type is now moved to a later point when the devices are closed: As this is a VFS level change it has no practical consequences for filesystems other than that all of them must use one of the provided kill_litter_super(), kill_anon_super(), or kill_block_super() helpers. + +--- + +**mandatory** + +If ->rename() update of .. on cross-directory move needs an exclusion with +directory modifications, do *not* lock the subdirectory in question in your +->rename() - it's done by the caller now [that item should've been added in +28eceeda130f "fs: Lock moved directories"]. + +--- + +**mandatory** + +On same-directory ->rename() the (tautological) update of .. is not protected +by any locks; just don't do it if the old parent is the same as the new one. +We really can't lock two subdirectories in same-directory rename - not without +deadlocks.
Documentation/gpu/drm-kms.rst +2 -0
@@ -546,6 +546,8 @@ Plane Composition Properties .. kernel-doc:: drivers/gpu/drm/drm_blend.c :doc: overview +.. _damage_tracking_properties: + Damage Tracking Properties --------------------------
Documentation/gpu/todo.rst +3 -4
@@ -337,8 +337,8 @@ connector register/unregister fixes Level: Intermediate -Remove load/unload callbacks from all non-DRIVER_LEGACY drivers ---------------------------------------------------------------- +Remove load/unload callbacks +---------------------------- The load/unload callbacks in struct &drm_driver are very much midlayers, plus for historical reasons they get the ordering wrong (and we can't fix that)
@@ -347,8 +347,7 @@ between setting up the &drm_driver structure and calling drm_dev_register(). - Rework drivers to no longer use the load/unload callbacks, directly coding the load/unload sequence into the driver's probe function. -- Once all non-DRIVER_LEGACY drivers are converted, disallow the load/unload - callbacks for all modern drivers. +- Once all drivers are converted, remove the load/unload callbacks. Contact: Daniel Vetter
Documentation/powerpc/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features powerpc +.. kernel-feat:: features powerpc
Documentation/riscv/features.rst +1 -1
@@ -1,3 +1,3 @@ .. SPDX-License-Identifier: GPL-2.0 -.. kernel-feat:: $srctree/Documentation/features riscv +.. kernel-feat:: features riscv
Documentation/sphinx/kernel_abi.py +10 -46
78 lines not on this page · raw message
Documentation/sphinx/kernel_feat.py +11 -44
82 lines not on this page · raw message
Documentation/translations/zh_CN/arch/loongarch/features.rst +1 -1
@@ -5,4 +5,4 @@ :Original: Documentation/arch/loongarch/features.rst :Translator: Huacai Chen <[email protected]> -.. kernel-feat:: $srctree/Documentation/features loongarch +.. kernel-feat:: features loongarch
Documentation/translations/zh_CN/arch/mips/features.rst +1 -1
@@ -10,4 +10,4 @@ .. _cn_features: -.. kernel-feat:: $srctree/Documentation/features mips +.. kernel-feat:: features mips
Documentation/translations/zh_TW/dev-tools/index.rst new file +40 -0
@@ -0,0 +1,40 @@ +.. include:: ../disclaimer-zh_TW.rst + +:Original: Documentation/dev-tools/index.rst +:Translator: Min-Hua Chen <[email protected]> + +============ +內核開發工具 +============ + +本文檔是有關內核開發工具文檔的合集。 +目前這些文檔已經整理在一起,不需要再花費額外的精力。 +歡迎任何補丁。 + +有關測試專用工具的簡要概述,參見 +Documentation/dev-tools/testing-overview.rst + +.. class:: toc-title + + 目錄 + +.. toctree:: + :maxdepth: 2 + + sparse + +Todolist: + + - coccinelle + - kcov + - ubsan + - kmemleak + - kcsan + - kfence + - kgdb + - kselftest + - kunit/index + - testing-overview + - gcov + - kasan + - gdb-kernel-debugging
Documentation/translations/zh_TW/dev-tools/sparse.txt new file +91 -0
91 lines not on this page · raw message
Documentation/translations/zh_TW/index.rst +1 -1
@@ -55,11 +55,11 @@ TODOList: :maxdepth: 1 process/license-rules + dev-tools/index TODOList: * doc-guide/index -* dev-tools/index * dev-tools/testing-overview * kernel-hacking/index * rust/index
Documentation/translations/zh_TW/sparse.txt deleted +0 -91
91 lines not on this page · raw message
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 14 +SUBLEVEL = 15 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/alpha/kernel/rtc.c +1 -1
@@ -80,7 +80,7 @@ init_rtc_epoch(void)static int alpha_rtc_read_time (struct device *dev,struct rtc_time *tm) { -int ret =mc146818_get_time (tm); +int ret =mc146818_get_time (tm,10 );if (ret <0 ) {dev_err_ratelimited (dev,"unable to read current time\n" );
arch/arm/boot/dts/nxp/imx/imx6q-apalis-ixora-v1.2.dts +2 -0
@@ -76,6 +76,7 @@ reg_can1_supply: regulator-can1-supply { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enable_can1_power>; regulator-name = "can1_supply"; + startup-delay-us = <1000>; }; reg_can2_supply: regulator-can2-supply {
@@ -85,6 +86,7 @@ reg_can2_supply: regulator-can2-supply { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enable_can2_power>; regulator-name = "can2_supply"; + startup-delay-us = <1000>; }; };
arch/arm/boot/dts/qcom/qcom-sdx55.dtsi +5 -5
@@ -592,10 +592,10 @@ usb: usb@a6f8800 { <&gcc GCC_USB30_MASTER_CLK>; assigned-clock-rates = <19200000>, <200000000>; - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 51 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 11 IRQ_TYPE_EDGE_BOTH>, + <&pdc 10 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
@@ -619,7 +619,7 @@ pdc: interrupt-controller@b210000 { compatible = "qcom,sdx55-pdc", "qcom,pdc"; reg = <0x0b210000 0x30000>; qcom,pdc-ranges = <0 179 52>; - #interrupt-cells = <3>; + #interrupt-cells = <2>; interrupt-parent = <&intc>; interrupt-controller; };
arch/arm/boot/dts/samsung/exynos4210-i9100.dts +8 -0
@@ -527,6 +527,14 @@ vtcam_reg: LDO12 { regulator-name = "VT_CAM_1.8V"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; + + /* + * Force-enable this regulator; otherwise the + * kernel hangs very early in the boot process + * for about 12 seconds, without apparent + * reason. + */ + regulator-always-on; }; vcclcd_reg: LDO13 {
arch/arm/boot/dts/samsung/exynos4212-tab3.dtsi +1 -0
@@ -435,6 +435,7 @@ &exynos_usbphy { }; &fimd { + samsung,invert-vclk; status = "okay"; };
arch/arm64/Kconfig +18 -0
@@ -1037,8 +1037,12 @@ config ARM64_ERRATUM_2645198 If unsure, say Y. +config ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD + bool + config ARM64_ERRATUM_2966298 bool "Cortex-A520: 2966298: workaround for speculatively executed unprivileged load" + select ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD default y help This option adds the workaround for ARM Cortex-A520 erratum 2966298.
@@ -1050,6 +1054,20 @@ config ARM64_ERRATUM_2966298 If unsure, say Y. +config ARM64_ERRATUM_3117295 + bool "Cortex-A510: 3117295: workaround for speculatively executed unprivileged load" + select ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD + default y + help + This option adds the workaround for ARM Cortex-A510 erratum 3117295. + + On an affected Cortex-A510 core, a speculatively executed unprivileged + load might leak data from a privileged level via a cache side channel. + + Work around this problem by executing a TLBI before returning to EL0. + + If unsure, say Y. + config CAVIUM_ERRATUM_22375 bool "Cavium erratum 22375, 24313" default y
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts +1 -0
@@ -88,6 +88,7 @@ led-controller@45 { #size-cells = <0>; vcc-supply = <&pm8916_l17>; + vio-supply = <&pm8916_l6>; led@0 { reg = <0>;
arch/arm64/boot/dts/qcom/msm8916-wingtech-wt88047.dts +1 -0
@@ -118,6 +118,7 @@ led-controller@45 { #size-cells = <0>; vcc-supply = <&pm8916_l16>; + vio-supply = <&pm8916_l5>; led@0 { reg = <0>;
arch/arm64/boot/dts/qcom/msm8916.dtsi +1 -0
@@ -2085,6 +2085,7 @@ blsp_dma: dma-controller@7884000 { clock-names = "bam_clk"; #dma-cells = <1>; qcom,ee = <0>; + qcom,controlled-remotely; }; blsp_uart1: serial@78af000 {
arch/arm64/boot/dts/qcom/msm8939.dtsi +1 -0
@@ -1661,6 +1661,7 @@ blsp_dma: dma-controller@7884000 { clock-names = "bam_clk"; #dma-cells = <1>; qcom,ee = <0>; + qcom,controlled-remotely; }; blsp_uart1: serial@78af000 {
arch/arm64/boot/dts/qcom/msm8953-xiaomi-mido.dts +1 -0
@@ -111,6 +111,7 @@ led-controller@45 { reg = <0x45>; vcc-supply = <&pm8953_l10>; + vio-supply = <&pm8953_l5>; #address-cells = <1>; #size-cells = <0>;
arch/arm64/boot/dts/qcom/msm8953-xiaomi-tissot.dts +1 -0
@@ -104,6 +104,7 @@ led-controller@45 { reg = <0x45>; vcc-supply = <&pm8953_l10>; + vio-supply = <&pm8953_l5>; #address-cells = <1>; #size-cells = <0>;
arch/arm64/boot/dts/qcom/msm8953-xiaomi-vince.dts +1 -0
@@ -113,6 +113,7 @@ led-controller@45 { reg = <0x45>; vcc-supply = <&pm8953_l10>; + vio-supply = <&pm8953_l5>; #address-cells = <1>; #size-cells = <0>;
arch/arm64/boot/dts/qcom/sc7180.dtsi +2 -2
@@ -2978,8 +2978,8 @@ usb_1: usb@a6f8800 { interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, <&pdc 6 IRQ_TYPE_LEVEL_HIGH>, - <&pdc 8 IRQ_TYPE_LEVEL_HIGH>, - <&pdc 9 IRQ_TYPE_LEVEL_HIGH>; + <&pdc 8 IRQ_TYPE_EDGE_BOTH>, + <&pdc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
arch/arm64/boot/dts/qcom/sc7280.dtsi +2 -2
@@ -3668,9 +3668,9 @@ usb_1: usb@a6f8800 { assigned-clock-rates = <19200000>, <200000000>; interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <&pdc 14 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 14 IRQ_TYPE_EDGE_BOTH>, <&pdc 15 IRQ_TYPE_EDGE_BOTH>, - <&pdc 17 IRQ_TYPE_EDGE_BOTH>; + <&pdc 17 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "hs_phy_irq", "dp_hs_phy_irq", "dm_hs_phy_irq",
arch/arm64/boot/dts/qcom/sc8180x.dtsi +8 -8
@@ -2560,10 +2560,10 @@ gem_noc: interconnect@9680000 { usb_prim: usb@a6f8800 { compatible = "qcom,sc8180x-dwc3", "qcom,dwc3"; reg = <0 0x0a6f8800 0 0x400>; - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 6 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 8 IRQ_TYPE_EDGE_BOTH>, + <&pdc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq",
@@ -2634,10 +2634,10 @@ usb_sec: usb@a8f8800 { "xo"; resets = <&gcc GCC_USB30_SEC_BCR>; power-domains = <&gcc USB30_SEC_GDSC>; - interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 7 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 10 IRQ_TYPE_EDGE_BOTH>, + <&pdc 11 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts +2 -0
@@ -458,6 +458,8 @@ mdss0_dp3_out: endpoint { }; &mdss0_dp3_phy { + compatible = "qcom,sc8280xp-edp-phy"; + vdda-phy-supply = <&vreg_l6b>; vdda-pll-supply = <&vreg_l3b>;
arch/arm64/boot/dts/qcom/sdm670.dtsi +4 -4
@@ -1295,10 +1295,10 @@ usb_1: usb@a6f8800 { <&gcc GCC_USB30_PRIM_MASTER_CLK>; assigned-clock-rates = <19200000>, <150000000>; - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 6 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 8 IRQ_TYPE_EDGE_BOTH>, + <&pdc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
arch/arm64/boot/dts/qcom/sdm845.dtsi +8 -8
@@ -4084,10 +4084,10 @@ usb_1: usb@a6f8800 { <&gcc GCC_USB30_PRIM_MASTER_CLK>; assigned-clock-rates = <19200000>, <150000000>; - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 6 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 8 IRQ_TYPE_EDGE_BOTH>, + <&pdc_intc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
@@ -4135,10 +4135,10 @@ usb_2: usb@a8f8800 { <&gcc GCC_USB30_SEC_MASTER_CLK>; assigned-clock-rates = <19200000>, <150000000>; - interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 7 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 10 IRQ_TYPE_EDGE_BOTH>, + <&pdc_intc 11 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
arch/arm64/boot/dts/qcom/sm8150.dtsi +8 -8
@@ -3592,10 +3592,10 @@ usb_1: usb@a6f8800 { <&gcc GCC_USB30_PRIM_MASTER_CLK>; assigned-clock-rates = <19200000>, <200000000>; - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 6 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 8 IRQ_TYPE_EDGE_BOTH>, + <&pdc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
@@ -3645,10 +3645,10 @@ usb_2: usb@a8f8800 { <&gcc GCC_USB30_SEC_MASTER_CLK>; assigned-clock-rates = <19200000>, <200000000>; - interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>, - <GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>; + interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 7 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 10 IRQ_TYPE_EDGE_BOTH>, + <&pdc 11 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq", "dm_hs_phy_irq", "dp_hs_phy_irq";
arch/arm64/boot/dts/rockchip/rk3328-orangepi-r1-plus-lts.dts +3 -1
@@ -26,9 +26,11 @@ yt8531c: ethernet-phy@0 { compatible = "ethernet-phy-ieee802.3-c22"; reg = <0>; + motorcomm,auto-sleep-disabled; motorcomm,clk-out-frequency-hz = <125000000>; motorcomm,keep-pll-enabled; - motorcomm,auto-sleep-disabled; + motorcomm,rx-clk-drv-microamp = <5020>; + motorcomm,rx-data-drv-microamp = <5020>; pinctrl-0 = <ð_phy_reset_pin>; pinctrl-names = "default";
arch/arm64/boot/dts/rockchip/rk3588s.dtsi +1 -0
@@ -890,6 +890,7 @@ power-domain@RK3588_PD_USB { reg = <RK3588_PD_USB>; clocks = <&cru PCLK_PHP_ROOT>, <&cru ACLK_USB_ROOT>, + <&cru ACLK_USB>, <&cru HCLK_USB_ROOT>, <&cru HCLK_HOST0>, <&cru HCLK_HOST_ARB0>,
arch/arm64/boot/dts/sprd/ums512.dtsi +2 -2
@@ -96,7 +96,7 @@ CPU5: cpu@500 { CPU6: cpu@600 { device_type = "cpu"; - compatible = "arm,cortex-a55"; + compatible = "arm,cortex-a75"; reg = <0x0 0x600>; enable-method = "psci"; cpu-idle-states = <&CORE_PD>;
@@ -104,7 +104,7 @@ CPU6: cpu@600 { CPU7: cpu@700 { device_type = "cpu"; - compatible = "arm,cortex-a55"; + compatible = "arm,cortex-a75"; reg = <0x0 0x700>; enable-method = "psci"; cpu-idle-states = <&CORE_PD>;
arch/arm64/boot/install.sh +2 -1
@@ -17,7 +17,8 @@ # $3 - kernel map file # $4 - default install path (blank if root directory) -if [ "$(basename $2)" = "Image.gz" ]; then +if [ "$(basename $2)" = "Image.gz" ] || [ "$(basename $2)" = "vmlinuz.efi" ] +then # Compressed install echo "Installing compressed kernel" base=vmlinuz
arch/arm64/kernel/cpu_errata.c +17 -4
@@ -432,6 +432,19 @@ static struct midr_range broken_aarch32_aes[] = { };#endif /* CONFIG_ARM64_WORKAROUND_TRBE_WRITE_OUT_OF_RANGE */ +#ifdef CONFIG_ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD +static const struct midr_range erratum_spec_unpriv_load_list[] = { +#ifdef CONFIG_ARM64_ERRATUM_3117295 +MIDR_ALL_VERSIONS (MIDR_CORTEX_A510 ), +#endif +#ifdef CONFIG_ARM64_ERRATUM_2966298 +/* Cortex-A520 r0p0 to r0p1 */ +MIDR_REV_RANGE (MIDR_CORTEX_A520 ,0 ,0 ,1 ), +#endif + {}, +}; +#endif + const struct arm64_cpu_capabilities arm64_errata[] = {#ifdef CONFIG_ARM64_WORKAROUND_CLEAN_CACHE {
@@ -730,12 +743,12 @@ const struct arm64_cpu_capabilities arm64_errata[] = { .cpu_enable = cpu_clear_bf16_from_user_emulation, },#endif -#ifdef CONFIG_ARM64_ERRATUM_2966298 +#ifdef CONFIG_ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD { - .desc = "ARM erratum 2966298", - .capability = ARM64_WORKAROUND_2966298, + .desc = "ARM errata 2966298, 3117295", + .capability = ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD, /* Cortex-A520 r0p0 - r0p1 */ - ERRATA_MIDR_REV_RANGE(MIDR_CORTEX_A520, 0, 0, 1), + ERRATA_MIDR_RANGE_LIST(erratum_spec_unpriv_load_list), }, #endif #ifdef CONFIG_AMPERE_ERRATUM_AC03_CPU_38
arch/arm64/kernel/entry.S +13 -9
@@ -428,16 +428,9 @@ alternative_else_nop_endif ldp x28, x29, [sp, #16 * 14] .if \el == 0 -alternative_if ARM64_WORKAROUND_2966298 - tlbi vale1, xzr - dsb nsh -alternative_else_nop_endif -alternative_if_not ARM64_UNMAP_KERNEL_AT_EL0 - ldr lr, [sp, #S_LR] - add sp, sp, #PT_REGS_SIZE // restore sp - eret -alternative_else_nop_endif #ifdef CONFIG_UNMAP_KERNEL_AT_EL0 + alternative_insn "b .L_skip_tramp_exit_\@", nop, ARM64_UNMAP_KERNEL_AT_EL0 + msr far_el1, x29 ldr_this_cpu x30, this_cpu_vector, x29
@@ -446,7 +439,18 @@ alternative_else_nop_endif ldr lr, [sp, #S_LR] // restore x30 add sp, sp, #PT_REGS_SIZE // restore sp br x29 + +.L_skip_tramp_exit_\@: #endif + ldr lr, [sp, #S_LR] + add sp, sp, #PT_REGS_SIZE // restore sp + + /* This must be after the last explicit memory access */ +alternative_if ARM64_WORKAROUND_SPECULATIVE_UNPRIV_LOAD + tlbi vale1, xzr + dsb nsh +alternative_else_nop_endif + eret .else ldr lr, [sp, #S_LR] add sp, sp, #PT_REGS_SIZE // restore sp
arch/arm64/kernel/fpsimd.c +4 -2
@@ -1280,8 +1280,10 @@ void fpsimd_release_task(struct task_struct *dead_task)*/ void sme_alloc (struct task_struct *task,bool flush) { -if (task->thread.sme_state && flush) { -memset (task->thread.sme_state,0 ,sme_state_size (task)); +if (task->thread.sme_state) { +if (flush) +memset (task->thread.sme_state,0 , +sme_state_size (task));return ; }
arch/arm64/tools/cpucaps +1 -1
@@ -84,7 +84,6 @@ WORKAROUND_2077057 WORKAROUND_2457168 WORKAROUND_2645198 WORKAROUND_2658417 -WORKAROUND_2966298 WORKAROUND_AMPERE_AC03_CPU_38 WORKAROUND_TRBE_OVERWRITE_FILL_MODE WORKAROUND_TSB_FLUSH_FAILURE
@@ -100,3 +99,4 @@ WORKAROUND_NVIDIA_CARMEL_CNP WORKAROUND_QCOM_FALKOR_E1003 WORKAROUND_REPEAT_TLBI WORKAROUND_SPECULATIVE_AT +WORKAROUND_SPECULATIVE_UNPRIV_LOAD
arch/loongarch/kernel/smp.c +2 -1
@@ -504,8 +504,9 @@ asmlinkage void start_secondary(void)unsigned int cpu;sync_counter (); - cpu =smp_processor_id (); + cpu =raw_smp_processor_id ();set_my_cpu_offset (per_cpu_offset (cpu)); +rcu_cpu_starting (cpu);cpu_probe ();constant_clockevent_init ();
arch/mips/kernel/elf.c +6 -0
@@ -11,6 +11,7 @@#include <asm/cpu-features.h> #include <asm/cpu-info.h> +#include <asm/fpu.h> #ifdef CONFIG_MIPS_FP_SUPPORT
@@ -309,6 +310,11 @@ void mips_set_personality_nan(struct arch_elf_state *state)struct cpuinfo_mips *c = &boot_cpu_data;struct task_struct *t = current; +/* Do this early so t->thread.fpu.fcr31 won't be clobbered in case +* we are preempted before the lose_fpu(0) in start_thread. +*/ +lose_fpu (0 ); + t->thread.fpu.fcr31 = c->fpu_csr31;switch (state->nan_2008) {case 0 :
arch/mips/lantiq/prom.c +3 -4
@@ -108,10 +108,9 @@ void __init prom_init(void)prom_init_cmdline ();#if defined(CONFIG_MIPS_MT_SMP ) -if (cpu_has_mipsmt) { - lantiq_smp_ops = vsmp_smp_ops; + lantiq_smp_ops = vsmp_smp_ops; +if (cpu_has_mipsmt) lantiq_smp_ops.init_secondary = lantiq_init_secondary; -register_smp_ops (&lantiq_smp_ops); - } +register_smp_ops (&lantiq_smp_ops);#endif }
arch/mips/mm/init.c +5 -7
@@ -422,7 +422,12 @@ void __init paging_init(void) (highend_pfn - max_low_pfn) << (PAGE_SHIFT - 10)); max_zone_pfns[ZONE_HIGHMEM] = max_low_pfn; } + + max_mapnr = highend_pfn ? highend_pfn : max_low_pfn; +#else + max_mapnr = max_low_pfn;#endif + high_memory = (void *)__va (max_low_pfn <<PAGE_SHIFT );free_area_init (max_zone_pfns); }
@@ -458,13 +463,6 @@ void __init mem_init(void)*/ BUILD_BUG_ON (IS_ENABLED (CONFIG_32BIT ) && (PFN_PTE_SHIFT >PAGE_SHIFT )); -#ifdef CONFIG_HIGHMEM - max_mapnr = highend_pfn ? highend_pfn : max_low_pfn; -#else - max_mapnr = max_low_pfn; -#endif - high_memory = (void *)__va (max_low_pfn <<PAGE_SHIFT ); -maar_init ();memblock_free_all ();setup_zero_pages ();/* Setup zeroed pages. */
arch/parisc/kernel/firmware.c +2 -2
@@ -123,10 +123,10 @@ static unsigned long f_extend(unsigned long address)#ifdef CONFIG_64BIT if (unlikely (parisc_narrow_firmware)) {if ((address &0xff000000 ) ==0xf0000000 ) -return 0xf0f0f0f000000000UL | (u32 )address; +return (0xfffffff0UL <<32 ) | (u32 )address;if ((address &0xf0000000 ) ==0xf0000000 ) -return 0xffffffff00000000UL | (u32 )address; +return (0xffffffffUL <<32 ) | (u32 )address; }#endif return address;
arch/powerpc/configs/ps3_defconfig +1 -0
@@ -24,6 +24,7 @@ CONFIG_PS3_VRAM=m CONFIG_PS3_LPM=m # CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set CONFIG_KEXEC=y +# CONFIG_PPC64_BIG_ENDIAN_ELF_ABI_V2 is not set CONFIG_PPC_4K_PAGES=y CONFIG_SCHED_SMT=y CONFIG_PM=y
arch/riscv/include/asm/pgtable.h +1 -1
@@ -880,7 +880,7 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte)#define TASK_SIZE_MIN (PGDIR_SIZE_L3 * PTRS_PER_PGD / 2)#ifdef CONFIG_COMPAT -#define TASK_SIZE_32 (_AC(0x80000000, UL) - PAGE_SIZE) +#define TASK_SIZE_32 (_AC(0x80000000, UL))#define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \ TASK_SIZE_32 : TASK_SIZE_64)#else
arch/riscv/include/asm/processor.h +1 -1
@@ -15,7 +15,7 @@#ifdef CONFIG_64BIT #define DEFAULT_MAP_WINDOW (UL(1) << (MMAP_VA_BITS - 1)) -#define STACK_TOP_MAX TASK_SIZE_64 +#define STACK_TOP_MAX TASK_SIZE#define arch_get_mmap_end (addr, len, flags) \ ({ \
arch/riscv/kernel/pi/cmdline_early.c +1 -2
@@ -38,8 +38,7 @@ static char *get_early_cmdline(uintptr_t dtb_pa)if (IS_ENABLED (CONFIG_CMDLINE_EXTEND ) ||IS_ENABLED (CONFIG_CMDLINE_FORCE ) || fdt_cmdline_size ==0 /* CONFIG_CMDLINE_FALLBACK */ ) { -strncat (early_cmdline,CONFIG_CMDLINE , -COMMAND_LINE_SIZE - fdt_cmdline_size); +strlcat (early_cmdline,CONFIG_CMDLINE ,COMMAND_LINE_SIZE ); }return early_cmdline;
arch/s390/crypto/aes_s390.c +3 -1
@@ -597,7 +597,9 @@ static int ctr_aes_crypt(struct skcipher_request *req)* final block may be < AES_BLOCK_SIZE, copy only nbytes */ if (nbytes) { -cpacf_kmctr (sctx->fc, sctx->key, buf, walk.src.virt.addr, +memset (buf,0 ,AES_BLOCK_SIZE ); +memcpy (buf, walk.src.virt.addr, nbytes); +cpacf_kmctr (sctx->fc, sctx->key, buf, buf,AES_BLOCK_SIZE , walk.iv);memcpy (walk.dst.virt.addr, buf, nbytes);crypto_inc (walk.iv,AES_BLOCK_SIZE );
arch/s390/crypto/paes_s390.c +3 -1
@@ -693,9 +693,11 @@ static int ctr_paes_crypt(struct skcipher_request *req)* final block may be < AES_BLOCK_SIZE, copy only nbytes */ if (nbytes) { +memset (buf,0 ,AES_BLOCK_SIZE ); +memcpy (buf, walk.src.virt.addr, nbytes);while (1 ) {if (cpacf_kmctr (ctx->fc, ¶m, buf, - walk.src.virt.addr,AES_BLOCK_SIZE , + buf,AES_BLOCK_SIZE , walk.iv) ==AES_BLOCK_SIZE )break ;if (__paes_convert_key (ctx))
arch/sh/boards/mach-ecovec24/setup.c +1 -1
@@ -1220,7 +1220,7 @@ static int __init arch_setup(void) lcdc_info.ch[0 ].num_modes =ARRAY_SIZE (ecovec_dvi_modes);/* No backlight */ - gpio_backlight_data.fbdev =NULL ; + gpio_backlight_data.dev =NULL ;gpio_set_value (GPIO_PTA2 ,1 );gpio_set_value (GPIO_PTU1 ,1 );
arch/x86/include/asm/syscall_wrapper.h +21 -4
@@ -58,12 +58,29 @@ extern long __ia32_sys_ni_syscall(const struct pt_regs *regs); ,,regs->di,,regs->si,,regs->dx \ ,,regs->r10,,regs->r8,,regs->r9) \ + +/* SYSCALL_PT_ARGS is Adapted from s390x */ +#define SYSCALL_PT_ARG6 (m, t1, t2, t3, t4, t5, t6) \ + SYSCALL_PT_ARG5(m, t1, t2, t3, t4, t5), m(t6, (regs->bp)) +#define SYSCALL_PT_ARG5 (m, t1, t2, t3, t4, t5) \ + SYSCALL_PT_ARG4(m, t1, t2, t3, t4), m(t5, (regs->di)) +#define SYSCALL_PT_ARG4 (m, t1, t2, t3, t4) \ + SYSCALL_PT_ARG3(m, t1, t2, t3), m(t4, (regs->si)) +#define SYSCALL_PT_ARG3 (m, t1, t2, t3) \ + SYSCALL_PT_ARG2(m, t1, t2), m(t3, (regs->dx)) +#define SYSCALL_PT_ARG2 (m, t1, t2) \ + SYSCALL_PT_ARG1(m, t1), m(t2, (regs->cx)) +#define SYSCALL_PT_ARG1 (m, t1) m(t1, (regs->bx)) +#define SYSCALL_PT_ARGS (x, ...) SYSCALL_PT_ARG##x(__VA_ARGS__) + +#define __SC_COMPAT_CAST (t, a) \ + (__typeof(__builtin_choose_expr(__TYPE_IS_L(t), 0, 0U))) \ + (unsigned int)a +/* Mapping of registers to parameters for syscalls on i386 */ #define SC_IA32_REGS_TO_ARGS (x, ...) \ - __MAP(x,__SC_ARGS \ - ,,(unsigned int)regs->bx,,(unsigned int)regs->cx \ - ,,(unsigned int)regs->dx,,(unsigned int)regs->si \ - ,,(unsigned int)regs->di,,(unsigned int)regs->bp) + SYSCALL_PT_ARGS(x, __SC_COMPAT_CAST, \ + __MAP(x, __SC_TYPE, __VA_ARGS__)) \#define __SYS_STUB0 (abi, name) \ long __##abi##_##name(const struct pt_regs *regs); \
arch/x86/kernel/hpet.c +1 -1
@@ -1438,7 +1438,7 @@ irqreturn_t hpet_rtc_interrupt(int irq, void *dev_id)memset (&curr_time,0 ,sizeof (struct rtc_time ));if (hpet_rtc_flags & (RTC_UIE |RTC_AIE )) { -if (unlikely (mc146818_get_time (&curr_time) <0 )) { +if (unlikely (mc146818_get_time (&curr_time,10 ) <0 )) {pr_err_ratelimited ("unable to read current time from RTC\n" );return IRQ_HANDLED ; }
arch/x86/kernel/rtc.c +1 -1
@@ -67,7 +67,7 @@ void mach_get_cmos_time(struct timespec64 *now)return ; } -if (mc146818_get_time (&tm)) { +if (mc146818_get_time (&tm,1000 )) {pr_err ("Unable to read current time from RTC\n" ); now->tv_sec = now->tv_nsec =0 ;return ;
block/ioctl.c +0 -2
@@ -20,8 +20,6 @@ static int blkpg_do_ioctl(struct block_device *bdev,struct blkpg_partition p;sector_t start, length; -if (disk->flags &GENHD_FL_NO_PART ) -return -EINVAL ;if (!capable (CAP_SYS_ADMIN ))return -EACCES ;if (copy_from_user (&p, upart,sizeof (struct blkpg_partition )))
block/partitions/core.c +5 -0
@@ -458,6 +458,11 @@ int bdev_add_partition(struct gendisk *disk, int partno, sector_t start, goto out; } +if (disk->flags &GENHD_FL_NO_PART ) { + ret = -EINVAL ; + goto out; + } +if (partition_overlaps (disk, start, length,-1 )) { ret = -EBUSY ; goto out;
crypto/algapi.c +1 -0
@@ -341,6 +341,7 @@ __crypto_register_alg(struct crypto_alg *alg, struct list_head *algs_to_put) }if (!strcmp (q->cra_driver_name, alg->cra_name) || + !strcmp (q->cra_driver_name, alg->cra_driver_name) || !strcmp (q->cra_name, alg->cra_driver_name)) goto err; }
drivers/base/power/main.c +68 -80
271 lines not on this page · raw message
drivers/base/power/trace.c +1 -1
@@ -120,7 +120,7 @@ static unsigned int read_magic_time(void)struct rtc_time time;unsigned int val; -if (mc146818_get_time (&time) <0 ) { +if (mc146818_get_time (&time,1000 ) <0 ) {pr_err ("Unable to read current time from RTC\n" );return 0 ; }
drivers/block/nbd.c +1 -5
@@ -510,7 +510,7 @@ static int __sock_xmit(struct nbd_device *nbd, struct socket *sock, int send, struct iov_iter *iter, int msg_flags, int *sent) { int result; -struct msghdr msg; +struct msghdr msg = {} ;unsigned int noreclaim_flag;if (unlikely (!sock)) {
@@ -526,10 +526,6 @@ static int __sock_xmit(struct nbd_device *nbd, struct socket *sock, int send, do { sock->sk->sk_allocation = GFP_NOIO | __GFP_MEMALLOC; sock->sk->sk_use_task_frag = false; - msg.msg_name = NULL; - msg.msg_namelen = 0; - msg.msg_control = NULL; - msg.msg_controllen = 0; msg.msg_flags = msg_flags | MSG_NOSIGNAL; if (send)
drivers/block/rbd.c +14 -8
@@ -3452,14 +3452,15 @@ static bool rbd_lock_add_request(struct rbd_img_request *img_req)static void rbd_lock_del_request (struct rbd_img_request *img_req) {struct rbd_device *rbd_dev = img_req->rbd_dev; -bool need_wakeup; +bool need_wakeup = false;lockdep_assert_held (&rbd_dev->lock_rwsem);spin_lock (&rbd_dev->lock_lists_lock); -rbd_assert (!list_empty (&img_req->lock_item)); -list_del_init (&img_req->lock_item); - need_wakeup = (rbd_dev->lock_state ==RBD_LOCK_STATE_RELEASING && -list_empty (&rbd_dev->running_list)); +if (!list_empty (&img_req->lock_item)) { +list_del_init (&img_req->lock_item); + need_wakeup = (rbd_dev->lock_state ==RBD_LOCK_STATE_RELEASING && +list_empty (&rbd_dev->running_list)); + }spin_unlock (&rbd_dev->lock_lists_lock);if (need_wakeup)complete (&rbd_dev->releasing_wait);
@@ -3842,14 +3843,19 @@ static void wake_lock_waiters(struct rbd_device *rbd_dev, int result)return ; } -list_for_each_entry (img_req, &rbd_dev->acquiring_list, lock_item) { +while (!list_empty (&rbd_dev->acquiring_list)) { + img_req =list_first_entry (&rbd_dev->acquiring_list, + struct rbd_img_request, lock_item);mutex_lock (&img_req->state_mutex);rbd_assert (img_req->state ==RBD_IMG_EXCLUSIVE_LOCK ); +if (!result) +list_move_tail (&img_req->lock_item, + &rbd_dev->running_list); +else +list_del_init (&img_req->lock_item);rbd_img_schedule (img_req, result);mutex_unlock (&img_req->state_mutex); } - -list_splice_tail_init (&rbd_dev->acquiring_list, &rbd_dev->running_list); } static bool locker_equal(const struct ceph_locker *lhs,
drivers/bus/mhi/host/main.c +19 -10
@@ -268,7 +268,8 @@ static void mhi_del_ring_element(struct mhi_controller *mhi_cntrl,static bool is_valid_ring_ptr (struct mhi_ring *ring,dma_addr_t addr) { -return addr >= ring->iommu_base && addr < ring->iommu_base + ring->len; +return addr >= ring->iommu_base && addr < ring->iommu_base + ring->len && + !(addr & (sizeof (struct mhi_ring_element ) -1 )); }int mhi_destroy_device (struct device *dev,void *data)
@@ -642,6 +643,8 @@ static int parse_xfer_event(struct mhi_controller *mhi_cntrl,mhi_del_ring_element (mhi_cntrl, tre_ring); local_rp = tre_ring->rp; +read_unlock_bh (&mhi_chan->lock); +/* notify client */ mhi_chan->xfer_cb (mhi_chan->mhi_dev, &result);
@@ -667,6 +670,8 @@ static int parse_xfer_event(struct mhi_controller *mhi_cntrl,kfree (buf_info->cb_buf); } } + +read_lock_bh (&mhi_chan->lock); }break ; }/* CC_EOT */
@@ -1122,17 +1127,15 @@ static int mhi_queue(struct mhi_device *mhi_dev, struct mhi_buf_info *buf_info,if (unlikely (MHI_PM_IN_ERROR_STATE (mhi_cntrl->pm_state)))return -EIO ; -read_lock_irqsave (&mhi_cntrl->pm_lock, flags); - ret =mhi_is_ring_full (mhi_cntrl, tre_ring); -if (unlikely (ret)) { - ret = -EAGAIN ; - goto exit_unlock; - } +if (unlikely (ret)) +return -EAGAIN ; ret =mhi_gen_tre (mhi_cntrl, mhi_chan, buf_info, mflags);if (unlikely (ret)) - goto exit_unlock; +return ret; + +read_lock_irqsave (&mhi_cntrl->pm_lock, flags);/* Packet is queued, take a usage ref to exit M3 if necessary * for host->device buffer, balanced put is done on buffer completion
@@ -1152,7 +1155,6 @@ static int mhi_queue(struct mhi_device *mhi_dev, struct mhi_buf_info *buf_info,if (dir ==DMA_FROM_DEVICE ) mhi_cntrl->runtime_put (mhi_cntrl); -exit_unlock:read_unlock_irqrestore (&mhi_cntrl->pm_lock, flags);return ret;
@@ -1204,6 +1206,9 @@ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,int eot, eob, chain, bei;int ret; +/* Protect accesses for reading and incrementing WP */ +write_lock_bh (&mhi_chan->lock); + buf_ring = &mhi_chan->buf_ring; tre_ring = &mhi_chan->tre_ring;
@@ -1221,8 +1226,10 @@ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,if (!info->pre_mapped) { ret = mhi_cntrl->map_single (mhi_cntrl, buf_info); -if (ret) +if (ret) { +write_unlock_bh (&mhi_chan->lock);return ret; + } } eob = !!(flags &MHI_EOB );
@@ -1239,6 +1246,8 @@ int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,mhi_add_ring_element (mhi_cntrl, tre_ring);mhi_add_ring_element (mhi_cntrl, buf_ring); +write_unlock_bh (&mhi_chan->lock); +return 0 ; }
drivers/char/hw_random/core.c +21 -13
@@ -23,10 +23,13 @@#include <linux/sched.h> #include <linux/sched/signal.h> #include <linux/slab.h> +#include <linux/string.h> #include <linux/uaccess.h> #define RNG_MODULE_NAME "hw_random" +#define RNG_BUFFER_SIZE (SMP_CACHE_BYTES < 32 ? 32 : SMP_CACHE_BYTES) +static struct hwrng *current_rng;/* the current rng has been explicitly chosen by user via sysfs */ static int cur_rng_set_by_user;
@@ -58,7 +61,7 @@ static inline int rng_get_data(struct hwrng *rng, u8 *buffer, size_t size,static size_t rng_buffer_size (void ) { -return SMP_CACHE_BYTES <32 ?32 :SMP_CACHE_BYTES ; +return RNG_BUFFER_SIZE ; }static void add_early_randomness (struct hwrng *rng)
@@ -209,6 +212,7 @@ static inline int rng_get_data(struct hwrng *rng, u8 *buffer, size_t size,static ssize_t rng_dev_read (struct file *filp,char __user *buf,size_t size,loff_t *offp) { +u8 buffer[RNG_BUFFER_SIZE ];ssize_t ret =0 ;int err =0 ;int bytes_read, len;
@@ -236,34 +240,37 @@ static ssize_t rng_dev_read(struct file *filp, char __user *buf,if (bytes_read <0 ) { err = bytes_read; goto out_unlock_reading; + }else if (bytes_read ==0 && + (filp->f_flags &O_NONBLOCK )) { + err = -EAGAIN ; + goto out_unlock_reading; } + data_avail = bytes_read; } -if (!data_avail) { -if (filp->f_flags &O_NONBLOCK ) { - err = -EAGAIN ; - goto out_unlock_reading; - } - }else { - len = data_avail; + len = data_avail; +if (len) {if (len > size) len = size; data_avail -= len; -if (copy_to_user (buf + ret, rng_buffer + data_avail, - len)) { +memcpy (buffer, rng_buffer + data_avail, len); + } +mutex_unlock (&reading_mutex); +put_rng (rng); + +if (len) { +if (copy_to_user (buf + ret, buffer, len)) { err = -EFAULT ; - goto out_unlock_reading; + goto out; } size -= len; ret += len; } -mutex_unlock (&reading_mutex); -put_rng (rng);if (need_resched ())schedule_timeout_interruptible (1 );
@@ -274,6 +281,7 @@ static ssize_t rng_dev_read(struct file *filp, char __user *buf, } } out: +memzero_explicit (buffer,sizeof (buffer));return ret ? : err; out_unlock_reading:
drivers/cpufreq/amd-pstate.c +3 -4
@@ -1232,14 +1232,13 @@ static void amd_pstate_epp_update_limit(struct cpufreq_policy *policy) max_limit_perf =div_u64 (policy->max * cpudata->highest_perf, cpudata->max_freq); min_limit_perf =div_u64 (policy->min * cpudata->highest_perf, cpudata->max_freq); +WRITE_ONCE (cpudata->max_limit_perf, max_limit_perf); +WRITE_ONCE (cpudata->min_limit_perf, min_limit_perf); + max_perf = clamp_t(unsigned long, max_perf, cpudata->min_limit_perf, cpudata->max_limit_perf); min_perf = clamp_t(unsigned long, min_perf, cpudata->min_limit_perf, cpudata->max_limit_perf); - -WRITE_ONCE (cpudata->max_limit_perf, max_limit_perf); -WRITE_ONCE (cpudata->min_limit_perf, min_limit_perf); - value =READ_ONCE (cpudata->cppc_req_cached);if (cpudata->policy ==CPUFREQ_POLICY_PERFORMANCE )
drivers/cpufreq/intel_pstate.c +34 -21
100 lines not on this page · raw message
drivers/cxl/core/region.c +2 -2
@@ -525,7 +525,7 @@ static int alloc_hpa(struct cxl_region *cxlr, resource_size_t size)struct cxl_root_decoder *cxlrd =to_cxl_root_decoder (cxlr->dev.parent);struct cxl_region_params *p = &cxlr->params;struct resource *res; -u32 remainder =0 ; +u64 remainder =0 ;lockdep_assert_held_write (&cxl_region_rwsem);
@@ -545,7 +545,7 @@ static int alloc_hpa(struct cxl_region *cxlr, resource_size_t size) (cxlr->mode == CXL_DECODER_PMEM && uuid_is_null(&p->uuid)))return -ENXIO ; -div_u64_rem (size,SZ_256M * p->interleave_ways, &remainder); +div64_u64_rem (size, (u64 )SZ_256M * p->interleave_ways, &remainder);if (remainder)return -EINVAL ;
drivers/devfreq/devfreq.c +39 -18
84 lines not on this page · raw message
drivers/dma/dmaengine.c +3 -0
@@ -1103,6 +1103,9 @@ EXPORT_SYMBOL_GPL(dma_async_device_channel_register);static void __dma_async_device_channel_unregister (struct dma_device *device,struct dma_chan *chan) { +if (chan->local ==NULL ) +return ; +WARN_ONCE (!device->device_release && chan->client_count,"%s called while %d clients hold a reference\n" , __func__, chan->client_count);
drivers/dma/fsl-edma-main.c +8 -0
@@ -26,6 +26,8 @@#define ARGS_RX BIT(0)#define ARGS_REMOTE BIT(1)#define ARGS_MULTI_FIFO BIT(2) +#define ARGS_EVEN_CH BIT(3) +#define ARGS_ODD_CH BIT(4)static void fsl_edma_synchronize (struct dma_chan *chan) {
@@ -159,6 +161,12 @@ static struct dma_chan *fsl_edma3_xlate(struct of_phandle_args *dma_spec, fsl_chan->is_remote = dma_spec->args[2 ] &ARGS_REMOTE ; fsl_chan->is_multi_fifo = dma_spec->args[2 ] &ARGS_MULTI_FIFO ; +if ((dma_spec->args[2 ] &ARGS_EVEN_CH ) && (i &0x1 )) +continue ; + +if ((dma_spec->args[2 ] &ARGS_ODD_CH ) && !(i &0x1 )) +continue ; +if (!b_chmux && i == dma_spec->args[0 ]) { chan =dma_get_slave_channel (chan); chan->device->privatecnt++;
drivers/dma/idxd/device.c +8 -1
@@ -802,6 +802,9 @@ static int idxd_device_evl_setup(struct idxd_device *idxd)static void idxd_device_evl_free (struct idxd_device *idxd) { +void *evl_log; +unsigned int evl_log_size; +dma_addr_t evl_dma;union gencfg_reg gencfg;union genctrl_reg genctrl;struct device *dev = &idxd->pdev->dev;
@@ -822,11 +825,15 @@ static void idxd_device_evl_free(struct idxd_device *idxd)iowrite64 (0 , idxd->reg_base +IDXD_EVLCFG_OFFSET );iowrite64 (0 , idxd->reg_base +IDXD_EVLCFG_OFFSET +8 ); -dma_free_coherent (dev, evl->log_size, evl->log, evl->dma);bitmap_free (evl->bmap); + evl_log = evl->log; + evl_log_size = evl->log_size; + evl_dma = evl->dma; evl->log =NULL ; evl->size =IDXD_EVL_SIZE_MIN ;spin_unlock (&evl->lock); + +dma_free_coherent (dev, evl_log_size, evl_log, evl_dma); }static void idxd_group_config_write (struct idxd_group *group)
drivers/firmware/arm_scmi/common.h +1 -0
@@ -314,6 +314,7 @@ void shmem_fetch_notification(struct scmi_shared_mem __iomem *shmem,void shmem_clear_channel (struct scmi_shared_mem __iomem *shmem);bool shmem_poll_done (struct scmi_shared_mem __iomem *shmem,struct scmi_xfer *xfer); +bool shmem_channel_free (struct scmi_shared_mem __iomem *shmem);/* declarations for message passing transports */ struct scmi_msg_payld ;
drivers/firmware/arm_scmi/mailbox.c +14 -0
@@ -45,6 +45,20 @@ static void rx_callback(struct mbox_client *cl, void *m) {struct scmi_mailbox *smbox =client_to_scmi_mailbox (cl); +/* +* An A2P IRQ is NOT valid when received while the platform still has +* the ownership of the channel, because the platform at first releases +* the SMT channel and then sends the completion interrupt. +* +* This addresses a possible race condition in which a spurious IRQ from +* a previous timed-out reply which arrived late could be wrongly +* associated with the next pending transaction. +*/ +if (cl->knows_txdone && !shmem_channel_free (smbox->shmem)) { +dev_warn (smbox->cinfo->dev,"Ignoring spurious A2P IRQ !\n" ); +return ; + } +scmi_rx_callback (smbox->cinfo,shmem_read_header (smbox->shmem),NULL ); }
drivers/firmware/arm_scmi/perf.c +18 -5
@@ -347,8 +347,8 @@ process_response_opp(struct scmi_opp *opp, unsigned int loop_idx, }static inline void -process_response_opp_v4 (struct perf_dom_info *dom,struct scmi_opp *opp, -unsigned int loop_idx, +process_response_opp_v4 (struct device *dev,struct perf_dom_info *dom, +struct scmi_opp *opp,unsigned int loop_idx,const struct scmi_msg_resp_perf_describe_levels_v4 *r) { opp->perf =le32_to_cpu (r->opp[loop_idx].perf_val);
@@ -359,10 +359,23 @@ process_response_opp_v4(struct perf_dom_info *dom, struct scmi_opp *opp,/* Note that PERF v4 reports always five 32-bit words */ opp->indicative_freq =le32_to_cpu (r->opp[loop_idx].indicative_freq);if (dom->level_indexing_mode) { +int ret; + opp->level_index =le32_to_cpu (r->opp[loop_idx].level_index); -xa_store (&dom->opps_by_idx, opp->level_index, opp,GFP_KERNEL ); -xa_store (&dom->opps_by_lvl, opp->perf, opp,GFP_KERNEL ); + ret =xa_insert (&dom->opps_by_idx, opp->level_index, opp, +GFP_KERNEL ); +if (ret) +dev_warn (dev, +"Failed to add opps_by_idx at %d - ret:%d\n" , + opp->level_index, ret); + + ret =xa_insert (&dom->opps_by_lvl, opp->perf, opp,GFP_KERNEL ); +if (ret) +dev_warn (dev, +"Failed to add opps_by_lvl at %d - ret:%d\n" , + opp->perf, ret); +hash_add (dom->opps_by_freq, &opp->hash, opp->indicative_freq); } }
@@ -379,7 +392,7 @@ iter_perf_levels_process_response(const struct scmi_protocol_handle *ph,if (PROTOCOL_REV_MAJOR (p->version) <=0x3 )process_response_opp (opp, st->loop_idx, response);else -process_response_opp_v4 (p->perf_dom, opp, st->loop_idx, +process_response_opp_v4 (ph->dev, p->perf_dom, opp, st->loop_idx, response); p->perf_dom->opp_count++;
drivers/firmware/arm_scmi/raw_mode.c +8 -4
@@ -1111,7 +1111,6 @@ static int scmi_raw_mode_setup(struct scmi_raw_mode_info *raw,int i;for (i =0 ; i < num_chans; i++) { -void *xret;struct scmi_raw_queue *q; q =scmi_raw_queue_init (raw);
@@ -1120,13 +1119,12 @@ static int scmi_raw_mode_setup(struct scmi_raw_mode_info *raw, goto err_xa; } - xret =xa_store (&raw->chans_q, channels[i], q, + ret =xa_insert (&raw->chans_q, channels[i], q,GFP_KERNEL ); -if (xa_err (xret)) { +if (ret) {dev_err (dev,"Fail to allocate Raw queue 0x%02X\n" , channels[i]); - ret =xa_err (xret); goto err_xa; } }
@@ -1322,6 +1320,12 @@ void scmi_raw_message_report(void *r, struct scmi_xfer *xfer, dev = raw->handle->dev; q =scmi_raw_queue_select (raw, idx,SCMI_XFER_IS_CHAN_SET (xfer) ? chan_id :0 ); +if (!q) { +dev_warn (dev, +"RAW[%d] - NO queue for chan 0x%X. Dropping report.\n" , + idx, chan_id); +return ; + }/* * Grab the msg_q_lock upfront to avoid a possible race between
drivers/firmware/arm_scmi/shmem.c +6 -0
@@ -122,3 +122,9 @@ bool shmem_poll_done(struct scmi_shared_mem __iomem *shmem, (SCMI_SHMEM_CHAN_STAT_CHANNEL_ERROR |SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE ); } + +bool shmem_channel_free (struct scmi_shared_mem __iomem *shmem) +{ +return (ioread32 (&shmem->channel_status) & +SCMI_SHMEM_CHAN_STAT_CHANNEL_FREE ); +}
drivers/firmware/sysfb.c +1 -1
@@ -128,4 +128,4 @@ static __init int sysfb_init(void) }/* must execute after PCI subsystem for EFI quirks */ -subsys_initcall_sync (sysfb_init); +device_initcall (sysfb_init);
drivers/gpio/gpio-eic-sprd.c +28 -4
@@ -321,20 +321,27 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)switch (flow_type) {case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IC ,1 );break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IC ,1 );break ;case IRQ_TYPE_EDGE_RISING :case IRQ_TYPE_EDGE_FALLING :case IRQ_TYPE_EDGE_BOTH : state =sprd_eic_get (chip, offset); -if (state) +if (state) {sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,0 ); -else +sprd_eic_update (chip, offset, +SPRD_EIC_DBNC_IC ,1 ); + }else {sprd_eic_update (chip, offset,SPRD_EIC_DBNC_IEV ,1 ); +sprd_eic_update (chip, offset, +SPRD_EIC_DBNC_IC ,1 ); + }break ;default :return -ENOTSUPP ;
@@ -346,20 +353,27 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)switch (flow_type) {case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTCLR ,1 );break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTCLR ,1 );break ;case IRQ_TYPE_EDGE_RISING :case IRQ_TYPE_EDGE_FALLING :case IRQ_TYPE_EDGE_BOTH : state =sprd_eic_get (chip, offset); -if (state) +if (state) {sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,0 ); -else +sprd_eic_update (chip, offset, +SPRD_EIC_LATCH_INTCLR ,1 ); + }else {sprd_eic_update (chip, offset,SPRD_EIC_LATCH_INTPOL ,1 ); +sprd_eic_update (chip, offset, +SPRD_EIC_LATCH_INTCLR ,1 ); + }break ;default :return -ENOTSUPP ;
@@ -373,29 +387,34 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_FALLING :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_BOTH :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_ASYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;default :
@@ -408,29 +427,34 @@ static int sprd_eic_irq_set_type(struct irq_data *data, unsigned int flow_type)sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_FALLING :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_EDGE_BOTH :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_edge_irq);break ;case IRQ_TYPE_LEVEL_HIGH :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,1 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;case IRQ_TYPE_LEVEL_LOW :sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTBOTH ,0 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTMODE ,1 );sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTPOL ,0 ); +sprd_eic_update (chip, offset,SPRD_EIC_SYNC_INTCLR ,1 );irq_set_handler_locked (data, handle_level_irq);break ;default :
drivers/gpio/gpiolib-acpi.c +14 -0
@@ -1675,6 +1675,20 @@ static const struct dmi_system_id gpiolib_acpi_quirks[] __initconst = { .ignore_interrupt = "INT33FC:00@3", }, }, + { + /* + * Spurious wakeups from TP_ATTN# pin + * Found in BIOS 0.35 + * https://gitlab.freedesktop.org/drm/amd/-/issues/3073 + */ + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "GPD"), + DMI_MATCH(DMI_PRODUCT_NAME, "G1619-04"), + }, + .driver_data = &(struct acpi_gpiolib_dmi_quirk) { + .ignore_wake = "PNP0C50:00@8", + }, + }, {} /* Terminating entry */ };
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +0 -2
@@ -2197,8 +2197,6 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,pci_wake_from_d3 (pdev, TRUE); -pci_wake_from_d3 (pdev, TRUE); -/* * For runpm implemented via BACO, PMFW will handle the * timing for BACO in and out:
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c +7 -10
@@ -3989,16 +3989,13 @@ static int gfx_v10_0_init_microcode(struct amdgpu_device *adev)if (!amdgpu_sriov_vf (adev)) {snprintf (fw_name,sizeof (fw_name),"amdgpu/%s_rlc.bin" , ucode_prefix); - err =amdgpu_ucode_request (adev, &adev->gfx.rlc_fw, fw_name); -/* don't check this. There are apparently firmwares in the wild with -* incorrect size in the header -*/ -if (err == -ENODEV ) - goto out; + err =request_firmware (&adev->gfx.rlc_fw, fw_name, adev->dev);if (err) -dev_dbg (adev->dev, -"gfx10: amdgpu_ucode_request() failed \"%s\"\n" , - fw_name); + goto out; + +/* don't validate this firmware. There are apparently firmwares +* in the wild with incorrect size in the header +*/ rlc_hdr = (const struct rlc_firmware_header_v2_0 *)adev->gfx.rlc_fw->data; version_major =le16_to_cpu (rlc_hdr->header.header_version_major); version_minor =le16_to_cpu (rlc_hdr->header.header_version_minor);
@@ -6575,7 +6572,7 @@ static int gfx_v10_0_compute_mqd_init(struct amdgpu_device *adev, void *m,#ifdef __BIG_ENDIAN tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,ENDIAN_SWAP ,1 );#endif - tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,UNORD_DISPATCH ,0 ); + tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,UNORD_DISPATCH ,1 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,TUNNEL_DISPATCH ,0 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,PRIV_STATE ,1 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,KMD_QUEUE ,1 );
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +4 -1
@@ -3807,7 +3807,7 @@ static int gfx_v11_0_compute_mqd_init(struct amdgpu_device *adev, void *m, (order_base_2(prop->queue_size / 4) - 1)); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,RPTR_BLOCK_SIZE , (order_base_2 (AMDGPU_GPU_PAGE_SIZE /4 ) -1 )); - tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,UNORD_DISPATCH ,0 ); + tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,UNORD_DISPATCH ,1 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,TUNNEL_DISPATCH ,0 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,PRIV_STATE ,1 ); tmp =REG_SET_FIELD (tmp,CP_HQD_PQ_CONTROL ,KMD_QUEUE ,1 );
@@ -6353,6 +6353,9 @@ static int gfx_v11_0_get_cu_info(struct amdgpu_device *adev,mutex_lock (&adev->grbm_idx_mutex);for (i =0 ; i < adev->gfx.config.max_shader_engines; i++) {for (j =0 ; j < adev->gfx.config.max_sh_per_se; j++) { + bitmap = i * adev->gfx.config.max_sh_per_se + j; +if (!((gfx_v11_0_get_sa_active_bitmap (adev) >> bitmap) &1 )) +continue ; mask =1 ; counter =0 ;gfx_v11_0_select_se_sh (adev, i, j,0xffffffff ,0 );
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v10.c +1 -0
@@ -170,6 +170,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd, m->cp_hqd_pq_control =5 <<CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT ; m->cp_hqd_pq_control |=ffs (q->queue_size /sizeof (unsigned int )) -1 -1 ; + m->cp_hqd_pq_control |=CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK ;pr_debug ("cp_hqd_pq_control 0x%x\n" , m->cp_hqd_pq_control); m->cp_hqd_pq_base_lo =lower_32_bits ((uint64_t )q->queue_address >>8 );
drivers/gpu/drm/amd/amdkfd/kfd_mqd_manager_v11.c +1 -0
@@ -224,6 +224,7 @@ static void update_mqd(struct mqd_manager *mm, void *mqd, m->cp_hqd_pq_control =5 <<CP_HQD_PQ_CONTROL__RPTR_BLOCK_SIZE__SHIFT ; m->cp_hqd_pq_control |=ffs (q->queue_size /sizeof (unsigned int )) -1 -1 ; + m->cp_hqd_pq_control |=CP_HQD_PQ_CONTROL__UNORD_DISPATCH_MASK ;pr_debug ("cp_hqd_pq_control 0x%x\n" , m->cp_hqd_pq_control); m->cp_hqd_pq_base_lo =lower_32_bits ((uint64_t )q->queue_address >>8 );
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_helpers.c +5 -0
@@ -956,6 +956,11 @@ int dm_helper_dmub_aux_transfer_sync( struct aux_payload *payload, enum aux_return_code_type *operation_result) { +if (!link->hpd_status) { + *operation_result =AUX_RET_ERROR_HPD_DISCON ; +return -1 ; + } +return amdgpu_dm_process_dmub_aux_transfer_sync (ctx, link->link_index, payload, operation_result); }
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn314/dcn314_clk_mgr.c +9 -12
@@ -131,30 +131,27 @@ static int dcn314_get_active_display_cnt_wa(return display_count; } -static void dcn314_disable_otg_wa (struct clk_mgr *clk_mgr_base,struct dc_state *context,bool disable) +static void dcn314_disable_otg_wa (struct clk_mgr *clk_mgr_base,struct dc_state *context, +bool safe_to_lower,bool disable) {struct dc *dc = clk_mgr_base->ctx->dc;int i;for (i =0 ; i < dc->res_pool->pipe_count; ++i) { -struct pipe_ctx *pipe = &dc->current_state->res_ctx.pipe_ctx[i]; +struct pipe_ctx *pipe = safe_to_lower + ? &context->res_ctx.pipe_ctx[i] + : &dc->current_state->res_ctx.pipe_ctx[i];if (pipe->top_pipe || pipe->prev_odm_pipe)continue ;if (pipe->stream && (pipe->stream->dpms_off ||dc_is_virtual_signal (pipe->stream->signal))) { -struct stream_encoder *stream_enc = pipe->stream_res.stream_enc; -if (disable) { -if (stream_enc && stream_enc->funcs->disable_fifo) - pipe->stream_res.stream_enc->funcs->disable_fifo (stream_enc); +if (pipe->stream_res.tg && pipe->stream_res.tg->funcs->immediate_disable_crtc) + pipe->stream_res.tg->funcs->immediate_disable_crtc (pipe->stream_res.tg); - pipe->stream_res.tg->funcs->immediate_disable_crtc (pipe->stream_res.tg);reset_sync_context_for_pipe (dc, context, i); }else { pipe->stream_res.tg->funcs->enable_crtc (pipe->stream_res.tg); - -if (stream_enc && stream_enc->funcs->enable_fifo) - pipe->stream_res.stream_enc->funcs->enable_fifo (stream_enc); } } }
@@ -252,11 +249,11 @@ void dcn314_update_clocks(struct clk_mgr *clk_mgr_base, }if (should_set_clock (safe_to_lower, new_clocks->dispclk_khz, clk_mgr_base->clks.dispclk_khz)) { -dcn314_disable_otg_wa (clk_mgr_base, context, true); +dcn314_disable_otg_wa (clk_mgr_base, context, safe_to_lower, true); clk_mgr_base->clks.dispclk_khz = new_clocks->dispclk_khz;dcn314_smu_set_dispclk (clk_mgr, clk_mgr_base->clks.dispclk_khz); -dcn314_disable_otg_wa (clk_mgr_base, context, false); +dcn314_disable_otg_wa (clk_mgr_base, context, safe_to_lower, false); update_dispclk = true; }
drivers/gpu/drm/amd/display/dc/link/link_dpms.c +6 -2
@@ -873,11 +873,15 @@ bool link_set_dsc_pps_packet(struct pipe_ctx *pipe_ctx, bool enable, bool immedi {struct display_stream_compressor *dsc = pipe_ctx->stream_res.dsc;struct dc_stream_state *stream = pipe_ctx->stream; -DC_LOGGER_INIT (dsc->ctx->logger); -if (!pipe_ctx->stream->timing.flags.DSC || !dsc) +if (!pipe_ctx->stream->timing.flags.DSC)return false; +if (!dsc) +return false; + +DC_LOGGER_INIT (dsc->ctx->logger); +if (enable) {struct dsc_config dsc_cfg;uint8_t dsc_packed_pps[128 ];
drivers/gpu/drm/amd/display/dc/link/protocols/link_dpcd.c +2 -2
@@ -205,7 +205,7 @@ enum dc_status core_link_read_dpcd(uint32_t extended_size;/* size of the remaining partitioned address space */ uint32_t size_left_to_read; -enum dc_status status; +enum dc_status status =DC_ERROR_UNEXPECTED ;/* size of the next partition to be read from */ uint32_t partition_size;uint32_t data_index =0 ;
@@ -234,7 +234,7 @@ enum dc_status core_link_write_dpcd( {uint32_t partition_size;uint32_t data_index =0 ; -enum dc_status status; +enum dc_status status =DC_ERROR_UNEXPECTED ;while (size) { partition_size =dpcd_get_next_partition_size (address, size);
drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c +7 -4
@@ -920,8 +920,8 @@ bool edp_get_replay_state(const struct dc_link *link, uint64_t *state)bool edp_setup_replay (struct dc_link *link,const struct dc_stream_state *stream) {/* To-do: Setup Replay */ -struct dc *dc = link->ctx->dc; -struct dmub_replay *replay = dc->res_pool->replay; +struct dc *dc; +struct dmub_replay *replay;int i;unsigned int panel_inst;struct replay_context replay_context = {0 };
@@ -937,6 +937,10 @@ bool edp_setup_replay(struct dc_link *link, const struct dc_stream_state *streamif (!link)return false; + dc = link->ctx->dc; + + replay = dc->res_pool->replay; +if (!replay)return false;
@@ -965,8 +969,7 @@ bool edp_setup_replay(struct dc_link *link, const struct dc_stream_state *stream replay_context.line_time_in_ns = lineTimeInNs; -if (replay) - link->replay_settings.replay_feature_enabled = + link->replay_settings.replay_feature_enabled = replay->funcs->replay_copy_settings (replay, link, &replay_context, panel_inst);if (link->replay_settings.replay_feature_enabled) {
drivers/gpu/drm/amd/display/modules/power/power_helpers.c +2 -0
@@ -841,6 +841,8 @@ bool is_psr_su_specific_panel(struct dc_link *link) isPSRSUSupported = false; else if (dpcd_caps->sink_dev_id_str[1] == 0x08 && dpcd_caps->sink_dev_id_str[0] == 0x03) isPSRSUSupported = false; + else if (dpcd_caps->sink_dev_id_str[1] == 0x08 && dpcd_caps->sink_dev_id_str[0] == 0x03) + isPSRSUSupported = false; else if (dpcd_caps->psr_info.force_psrsu_cap == 0x1) isPSRSUSupported = true; }
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c +3 -10
@@ -24,6 +24,7 @@#include <linux/firmware.h> #include <linux/pci.h> +#include <linux/power_supply.h> #include <linux/reboot.h> #include "amdgpu.h"
@@ -741,16 +742,8 @@ static int smu_late_init(void *handle)* handle the switch automatically. Driver involvement * is unnecessary. */ -if (!smu->dc_controlled_by_gpio) { - ret =smu_set_power_source (smu, - adev->pm.ac_power ?SMU_POWER_SOURCE_AC : -SMU_POWER_SOURCE_DC ); -if (ret) { -dev_err (adev->dev,"Failed to switch to %s mode!\n" , - adev->pm.ac_power ?"AC" :"DC" ); -return ret; - } - } + adev->pm.ac_power =power_supply_is_system_supplied () >0 ; +smu_set_ac_dc (smu);if ((adev->ip_versions[MP1_HWIP ][0 ] ==IP_VERSION (13 ,0 ,1 )) || (adev->ip_versions[MP1_HWIP ][0 ] ==IP_VERSION (13 ,0 ,3 )))
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +2 -0
@@ -1441,10 +1441,12 @@ static int smu_v11_0_irq_process(struct amdgpu_device *adev,case 0x3 :dev_dbg (adev->dev,"Switched to AC mode!\n" );schedule_work (&smu->interrupt_work); + adev->pm.ac_power = true;break ;case 0x4 :dev_dbg (adev->dev,"Switched to DC mode!\n" );schedule_work (&smu->interrupt_work); + adev->pm.ac_power = false;break ;case 0x7 :/*
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +2 -0
@@ -1377,10 +1377,12 @@ static int smu_v13_0_irq_process(struct amdgpu_device *adev,case 0x3 :dev_dbg (adev->dev,"Switched to AC mode!\n" );smu_v13_0_ack_ac_dc_interrupt (smu); + adev->pm.ac_power = true;break ;case 0x4 :dev_dbg (adev->dev,"Switched to DC mode!\n" );smu_v13_0_ack_ac_dc_interrupt (smu); + adev->pm.ac_power = false;break ;case 0x7 :/*
drivers/gpu/drm/bridge/analogix/anx7625.c +6 -1
@@ -1741,6 +1741,7 @@ static ssize_t anx7625_aux_transfer(struct drm_dp_aux *aux,u8 request = msg->request & ~DP_AUX_I2C_MOT ;int ret =0 ; +mutex_lock (&ctx->aux_lock);pm_runtime_get_sync (dev); msg->reply =0 ;switch (request) {
@@ -1757,6 +1758,7 @@ static ssize_t anx7625_aux_transfer(struct drm_dp_aux *aux, msg->size, msg->buffer);pm_runtime_mark_last_busy (dev);pm_runtime_put_autosuspend (dev); +mutex_unlock (&ctx->aux_lock);return ret; }
@@ -2453,7 +2455,9 @@ static void anx7625_bridge_atomic_disable(struct drm_bridge *bridge, ctx->connector =NULL ;anx7625_dp_stop (ctx); -pm_runtime_put_sync (dev); +mutex_lock (&ctx->aux_lock); +pm_runtime_put_sync_suspend (dev); +mutex_unlock (&ctx->aux_lock); } static enum drm_connector_status
@@ -2647,6 +2651,7 @@ static int anx7625_i2c_probe(struct i2c_client *client)mutex_init (&platform->lock);mutex_init (&platform->hdcp_wq_lock); +mutex_init (&platform->aux_lock);INIT_DELAYED_WORK (&platform->hdcp_work, hdcp_check_work_func); platform->hdcp_workqueue =create_workqueue ("hdcp workqueue" );
drivers/gpu/drm/bridge/analogix/anx7625.h +2 -0
@@ -471,6 +471,8 @@ struct anx7625_data {struct workqueue_struct *hdcp_workqueue;/* Lock for hdcp work queue */ struct mutex hdcp_wq_lock; +/* Lock for aux transfer and disable */ +struct mutex aux_lock;char edid_block;struct display_timing dt;u8 display_timing_valid;
drivers/gpu/drm/bridge/nxp-ptn3460.c +3 -3
@@ -54,13 +54,13 @@ static int ptn3460_read_bytes(struct ptn3460_bridge *ptn_bridge, char addr,int ret; ret =i2c_master_send (ptn_bridge->client, &addr,1 ); -if (ret <=0 ) { +if (ret <0 ) {DRM_ERROR ("Failed to send i2c command, ret=%d\n" , ret);return ret; } ret =i2c_master_recv (ptn_bridge->client, buf, len); -if (ret <=0 ) { +if (ret <0 ) {DRM_ERROR ("Failed to recv i2c data, ret=%d\n" , ret);return ret; }
@@ -78,7 +78,7 @@ static int ptn3460_write_byte(struct ptn3460_bridge *ptn_bridge, char addr, buf[1 ] = val; ret =i2c_master_send (ptn_bridge->client, buf,ARRAY_SIZE (buf)); -if (ret <=0 ) { +if (ret <0 ) {DRM_ERROR ("Failed to send i2c command, ret=%d\n" , ret);return ret; }
drivers/gpu/drm/bridge/parade-ps8640.c +23 -0
@@ -107,6 +107,7 @@ struct ps8640 {struct device_link *link;bool pre_enabled;bool need_post_hpd_delay; +struct mutex aux_lock; };static const struct regmap_config ps8640_regmap_config[] = {
@@ -345,11 +346,20 @@ static ssize_t ps8640_aux_transfer(struct drm_dp_aux *aux,struct device *dev = &ps_bridge->page[PAGE0_DP_CNTL ]->dev;int ret; +mutex_lock (&ps_bridge->aux_lock);pm_runtime_get_sync (dev); + ret =_ps8640_wait_hpd_asserted (ps_bridge,200 *1000 ); +if (ret) { +pm_runtime_put_sync_suspend (dev); + goto exit; + } ret =ps8640_aux_transfer_msg (aux, msg);pm_runtime_mark_last_busy (dev);pm_runtime_put_autosuspend (dev); +exit: +mutex_unlock (&ps_bridge->aux_lock); +return ret; }
@@ -470,7 +480,18 @@ static void ps8640_atomic_post_disable(struct drm_bridge *bridge, ps_bridge->pre_enabled = false;ps8640_bridge_vdo_control (ps_bridge,DISABLE ); + +/* +* The bridge seems to expect everything to be power cycled at the +* disable process, so grab a lock here to make sure +* ps8640_aux_transfer() is not holding a runtime PM reference and +* preventing the bridge from suspend. +*/ +mutex_lock (&ps_bridge->aux_lock); +pm_runtime_put_sync_suspend (&ps_bridge->page[PAGE0_DP_CNTL ]->dev); + +mutex_unlock (&ps_bridge->aux_lock); } static int ps8640_bridge_attach(struct drm_bridge *bridge,
@@ -619,6 +640,8 @@ static int ps8640_probe(struct i2c_client *client)if (!ps_bridge)return -ENOMEM ; +mutex_init (&ps_bridge->aux_lock); + ps_bridge->supplies[0 ].supply ="vdd12" ; ps_bridge->supplies[1 ].supply ="vdd33" ; ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ps_bridge->supplies),
drivers/gpu/drm/bridge/samsung-dsim.c +2 -30
@@ -941,10 +941,6 @@ static int samsung_dsim_init_link(struct samsung_dsim *dsi) reg =samsung_dsim_read (dsi,DSIM_ESCMODE_REG ); reg &= ~DSIM_STOP_STATE_CNT_MASK ; reg |=DSIM_STOP_STATE_CNT (driver_data->reg_values[STOP_STATE_CNT ]); - -if (!samsung_dsim_hw_is_exynos (dsi->plat_data->hw_type)) - reg |=DSIM_FORCE_STOP_STATE ; -samsung_dsim_write (dsi,DSIM_ESCMODE_REG , reg); reg =DSIM_BTA_TIMEOUT (0xff ) |DSIM_LPDR_TIMEOUT (0xffff );
@@ -1401,18 +1397,6 @@ static void samsung_dsim_disable_irq(struct samsung_dsim *dsi)disable_irq (dsi->irq); } -static void samsung_dsim_set_stop_state (struct samsung_dsim *dsi,bool enable) -{ -u32 reg =samsung_dsim_read (dsi,DSIM_ESCMODE_REG ); - -if (enable) - reg |=DSIM_FORCE_STOP_STATE ; -else - reg &= ~DSIM_FORCE_STOP_STATE ; - -samsung_dsim_write (dsi,DSIM_ESCMODE_REG , reg); -} -static int samsung_dsim_init (struct samsung_dsim *dsi) {const struct samsung_dsim_driver_data *driver_data = dsi->driver_data;
@@ -1462,9 +1446,6 @@ static void samsung_dsim_atomic_pre_enable(struct drm_bridge *bridge, ret =samsung_dsim_init (dsi);if (ret)return ; - -samsung_dsim_set_display_mode (dsi); -samsung_dsim_set_display_enable (dsi, true); } }
@@ -1473,12 +1454,8 @@ static void samsung_dsim_atomic_enable(struct drm_bridge *bridge, {struct samsung_dsim *dsi =bridge_to_dsi (bridge); -if (samsung_dsim_hw_is_exynos (dsi->plat_data->hw_type)) { -samsung_dsim_set_display_mode (dsi); -samsung_dsim_set_display_enable (dsi, true); - }else { -samsung_dsim_set_stop_state (dsi, false); - } +samsung_dsim_set_display_mode (dsi); +samsung_dsim_set_display_enable (dsi, true); dsi->state |=DSIM_STATE_VIDOUT_AVAILABLE ; }
@@ -1491,9 +1468,6 @@ static void samsung_dsim_atomic_disable(struct drm_bridge *bridge,if (!(dsi->state &DSIM_STATE_ENABLED ))return ; -if (!samsung_dsim_hw_is_exynos (dsi->plat_data->hw_type)) -samsung_dsim_set_stop_state (dsi, true); - dsi->state &= ~DSIM_STATE_VIDOUT_AVAILABLE ; }
@@ -1795,8 +1769,6 @@ static ssize_t samsung_dsim_host_transfer(struct mipi_dsi_host *host,if (ret)return ret; -samsung_dsim_set_stop_state (dsi, false); - ret =mipi_dsi_create_packet (&xfer.packet, msg);if (ret <0 )return ret;
drivers/gpu/drm/bridge/sii902x.c +29 -13
66 lines not on this page · raw message
drivers/gpu/drm/drm_damage_helper.c +2 -1
@@ -241,7 +241,8 @@ drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, iter->plane_src.x2 = (src.x2 >>16 ) + !!(src.x2 &0xFFFF ); iter->plane_src.y2 = (src.y2 >>16 ) + !!(src.y2 &0xFFFF ); -if (!iter->clips || !drm_rect_equals (&state->src, &old_state->src)) { +if (!iter->clips || state->ignore_damage_clips || + !drm_rect_equals (&state->src, &old_state->src)) { iter->clips =NULL ; iter->num_clips =0 ; iter->full_update = true;
drivers/gpu/drm/drm_plane.c +14 -0
@@ -678,6 +678,19 @@ int drm_mode_getplane_res(struct drm_device *dev, void *data, !file_priv->universal_planes)continue ; +/* +* If we're running on a virtualized driver then, +* unless userspace advertizes support for the +* virtualized cursor plane, disable cursor planes +* because they'll be broken due to missing cursor +* hotspot info. +*/ +if (plane->type ==DRM_PLANE_TYPE_CURSOR && +drm_core_check_feature (dev,DRIVER_CURSOR_HOTSPOT ) && + file_priv->atomic && + !file_priv->supports_virtualized_cursor_plane) +continue ; +if (drm_lease_held (file_priv, plane->base.id)) {if (count < plane_resp->count_planes &&put_user (plane->base.id, plane_ptr + count))
@@ -1387,6 +1400,7 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, out:if (fb)drm_framebuffer_put (fb); + fb =NULL ;if (plane->old_fb)drm_framebuffer_put (plane->old_fb); plane->old_fb =NULL ;
drivers/gpu/drm/exynos/exynos5433_drm_decon.c +2 -2
@@ -319,9 +319,9 @@ static void decon_win_set_bldmod(struct decon_context *ctx, unsigned int win,static void decon_win_set_pixfmt (struct decon_context *ctx,unsigned int win,struct drm_framebuffer *fb) { -struct exynos_drm_plane plane = ctx->planes[win]; +struct exynos_drm_plane *plane = &ctx->planes[win];struct exynos_drm_plane_state *state = -to_exynos_plane_state (plane.base.state); +to_exynos_plane_state (plane->base.state);unsigned int alpha = state->base.alpha;unsigned int pixel_alpha;unsigned long val;
drivers/gpu/drm/exynos/exynos_drm_fimd.c +2 -2
@@ -661,9 +661,9 @@ static void fimd_win_set_bldmod(struct fimd_context *ctx, unsigned int win,static void fimd_win_set_pixfmt (struct fimd_context *ctx,unsigned int win,struct drm_framebuffer *fb,int width) { -struct exynos_drm_plane plane = ctx->planes[win]; +struct exynos_drm_plane *plane = &ctx->planes[win];struct exynos_drm_plane_state *state = -to_exynos_plane_state (plane.base.state); +to_exynos_plane_state (plane->base.state);uint32_t pixel_format = fb->format->format;unsigned int alpha = state->base.alpha;u32 val = WINCONx_ENWIN;
drivers/gpu/drm/exynos/exynos_drm_gsc.c +1 -1
@@ -1342,7 +1342,7 @@ static int __maybe_unused gsc_runtime_resume(struct device *dev)for (i =0 ; i < ctx->num_clocks; i++) { ret =clk_prepare_enable (ctx->clocks[i]);if (ret) { -while (--i >0 ) +while (--i >=0 )clk_disable_unprepare (ctx->clocks[i]);return ret; }
drivers/gpu/drm/i915/display/icl_dsi.c +1 -2
@@ -1155,6 +1155,7 @@ static void gen11_dsi_powerup_panel(struct intel_encoder *encoder) }intel_dsi_vbt_exec_sequence (intel_dsi,MIPI_SEQ_INIT_OTP ); +intel_dsi_vbt_exec_sequence (intel_dsi,MIPI_SEQ_DISPLAY_ON );/* ensure all panel commands dispatched before enabling transcoder */ wait_for_cmds_dispatched_to_panel (encoder);
@@ -1255,8 +1256,6 @@ static void gen11_dsi_enable(struct intel_atomic_state *state,/* step6d: enable dsi transcoder */ gen11_dsi_enable_transcoder (encoder); -intel_dsi_vbt_exec_sequence (intel_dsi,MIPI_SEQ_DISPLAY_ON ); -/* step7: enable backlight */ intel_backlight_enable (crtc_state, conn_state);intel_dsi_vbt_exec_sequence (intel_dsi,MIPI_SEQ_BACKLIGHT_ON );
drivers/gpu/drm/i915/display/intel_psr.c +18 -4
@@ -674,7 +674,9 @@ static void hsw_activate_psr1(struct intel_dp *intel_dp) val |=EDP_PSR_IDLE_FRAMES (psr_compute_idle_frames (intel_dp)); - val |=EDP_PSR_MAX_SLEEP_TIME (max_sleep_time); +if (DISPLAY_VER (dev_priv) <20 ) + val |=EDP_PSR_MAX_SLEEP_TIME (max_sleep_time); +if (IS_HASWELL (dev_priv)) val |=EDP_PSR_MIN_LINK_ENTRY_TIME_8_LINES ;
@@ -1398,9 +1400,21 @@ static void intel_psr_enable_source(struct intel_dp *intel_dp,* can rely on frontbuffer tracking. */ mask =EDP_PSR_DEBUG_MASK_MEMUP | -EDP_PSR_DEBUG_MASK_HPD | -EDP_PSR_DEBUG_MASK_LPSP | -EDP_PSR_DEBUG_MASK_MAX_SLEEP ; +EDP_PSR_DEBUG_MASK_HPD ; + +/* +* For some unknown reason on HSW non-ULT (or at least on +* Dell Latitude E6540) external displays start to flicker +* when PSR is enabled on the eDP. SR/PC6 residency is much +* higher than should be possible with an external display. +* As a workaround leave LPSP unmasked to prevent PSR entry +* when external displays are active. +*/ +if (DISPLAY_VER (dev_priv) >=8 ||IS_HASWELL_ULT (dev_priv)) + mask |=EDP_PSR_DEBUG_MASK_LPSP ; + +if (DISPLAY_VER (dev_priv) <20 ) + mask |=EDP_PSR_DEBUG_MASK_MAX_SLEEP ;/* * No separate pipe reg write mask on hsw/bdw, so have to unmask all
drivers/gpu/drm/nouveau/nouveau_vmm.c +3 -0
@@ -108,6 +108,9 @@ nouveau_vma_new(struct nouveau_bo *nvbo, struct nouveau_vmm *vmm, }else { ret =nvif_vmm_get (&vmm->vmm,PTES , false, mem->mem.page,0 , mem->mem.size, &tmp); +if (ret) + goto done; + vma->addr = tmp.addr; }
drivers/gpu/drm/panel/panel-edp.c +6 -1
@@ -973,6 +973,8 @@ static const struct panel_desc auo_b116xak01 = { }, .delay = { .hpd_absent = 200, + .unprepare = 500, + .enable = 50, }, };
@@ -1840,7 +1842,8 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x145c , &delay_200_500_e50,"B116XAB01.4" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x1e9b , &delay_200_500_e50,"B133UAN02.1" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x1ea5 , &delay_200_500_e50,"B116XAK01.6" ), -EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x405c , &auo_b116xak01.delay,"B116XAK01" ), +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x235c , &delay_200_500_e50,"B116XTN02.3" ), +EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x405c , &auo_b116xak01.delay,"B116XAK01.0" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x582d , &delay_200_500_e50,"B133UAN01.0" ),EDP_PANEL_ENTRY ('A' ,'U' ,'O' ,0x615c , &delay_200_500_e50,"B116XAN06.1" ), EDP_PANEL_ENTRY('A', 'U', 'O', 0x8594, &delay_200_500_e50, "B133UAN01.0"),
@@ -1848,8 +1851,10 @@ static const struct edp_panel_entry edp_panels[] = {EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0786 , &delay_200_500_p2e80,"NV116WHM-T01" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x07d1 , &boe_nv133fhm_n61.delay,"NV133FHM-N61" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x082d , &boe_nv133fhm_n61.delay,"NV133FHM-N62" ), +EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x09c3 , &delay_200_500_e50,"NT116WHM-N21,836X2" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x094b , &delay_200_500_e50,"NT116WHM-N21" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x095f , &delay_200_500_e50,"NE135FBM-N41 v8.1" ), +EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x0979 , &delay_200_500_e50,"NV116WHM-N49 V8.0" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x098d , &boe_nv110wtm_n61.delay,"NV110WTM-N61" ),EDP_PANEL_ENTRY ('B' ,'O' ,'E' ,0x09dd , &delay_200_500_e50,"NT116WHM-N21" ), EDP_PANEL_ENTRY('B', 'O', 'E', 0x0a5d, &delay_200_500_e50, "NV116WHM-N45"),
drivers/gpu/drm/panel/panel-samsung-s6d7aa0.c +1 -1
@@ -309,7 +309,7 @@ static const struct s6d7aa0_panel_desc s6d7aa0_lsl080al02_desc = { .off_func = s6d7aa0_lsl080al02_off, .drm_mode = &s6d7aa0_lsl080al02_mode, .mode_flags = MIPI_DSI_MODE_VSYNC_FLUSH | MIPI_DSI_MODE_VIDEO_NO_HFP, - .bus_flags = DRM_BUS_FLAG_DE_HIGH, + .bus_flags = 0, .has_backlight = false, .use_passwd3 = false,
drivers/gpu/drm/panel/panel-simple.c +2 -0
@@ -3782,6 +3782,7 @@ static const struct panel_desc tianma_tm070jdhg30 = { }, .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, .connector_type = DRM_MODE_CONNECTOR_LVDS, + .bus_flags = DRM_BUS_FLAG_DE_HIGH, };static const struct panel_desc tianma_tm070jvhg33 = {
@@ -3794,6 +3795,7 @@ static const struct panel_desc tianma_tm070jvhg33 = { }, .bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, .connector_type = DRM_MODE_CONNECTOR_LVDS, + .bus_flags = DRM_BUS_FLAG_DE_HIGH, };static const struct display_timing tianma_tm070rvhg71_timing = {
drivers/gpu/drm/qxl/qxl_drv.c +1 -1
@@ -283,7 +283,7 @@ static const struct drm_ioctl_desc qxl_ioctls[] = { };static struct drm_driver qxl_driver = { - .driver_features =DRIVER_GEM |DRIVER_MODESET |DRIVER_ATOMIC , + .driver_features =DRIVER_GEM |DRIVER_MODESET |DRIVER_ATOMIC |DRIVER_CURSOR_HOTSPOT , .dumb_create = qxl_mode_dumb_create, .dumb_map_offset = drm_gem_ttm_dumb_map_offset,
drivers/gpu/drm/tidss/tidss_crtc.c +5 -5
@@ -169,13 +169,13 @@ static void tidss_crtc_atomic_flush(struct drm_crtc *crtc,struct tidss_device *tidss =to_tidss (ddev);unsigned long flags; - dev_dbg(ddev->dev, - "%s: %s enabled %d, needs modeset %d, event %p\n", __func__,
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/virtio/virtgpu_plane.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/iio/adc/ad7091r-base.c +169 -0
169 lines not on this page · raw message
drivers/media/common/videobuf2/videobuf2-dma-sg.c +8 -2
Lines of this file are not shown. View the raw message.
drivers/media/i2c/imx290.c +21 -21
42 lines not on this page · raw message
drivers/media/platform/mediatek/jpeg/mtk_jpeg_core.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/v4l2-cci.c +40 -12
52 lines not on this page · raw message
drivers/mmc/core/block.c +43 -3
46 lines not on this page · raw message
drivers/mmc/host/mmc_spi.c +5 -181
186 lines not on this page · raw message
drivers/mtd/nand/raw/nand_base.c +74 -13
87 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/engleder/tsnep_main.c +15 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fec_main.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_main.c +31 -16
47 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_txrx.c +23 -26
49 lines not on this page · raw message
drivers/net/ethernet/intel/i40e/i40e_xsk.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_base.c +23 -14
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_txrx.c +9 -10
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_txrx.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_txrx_lib.h +22 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_xsk.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +26 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/cmd.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/fs_tt_redirect.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/params.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec.c +8 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_arfs.c +15 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/esw/bridge_mcast.c +5 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/lib/aso.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_action.c +12 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +41 -2
43 lines not on this page · raw message
drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.c +41 -41
82 lines not on this page · raw message
drivers/platform/x86/intel/uncore-frequency/uncore-frequency-common.h +16 -16
Lines of this file are not shown. View the raw message.
drivers/platform/x86/p2sb.c +139 -41
180 lines not on this page · raw message
drivers/s390/crypto/vfio_ap_ops.c +178 -91
269 lines not on this page · raw message
drivers/thermal/intel/intel_hfi.c +85 -21
106 lines not on this page · raw message
drivers/tty/serial/sc16is7xx.c +203 -186
389 lines not on this page · raw message
drivers/tty/serial/serial_core.c +38 -20
58 lines not on this page · raw message
fs/btrfs/extent-tree.c +39 -14
53 lines not on this page · raw message
fs/namei.c +37 -23
60 lines not on this page · raw message
fs/smb/client/sess.c +84 -12
96 lines not on this page · raw message
fs/smb/client/smb2pdu.c +146 -16
162 lines not on this page · raw message
include/linux/bpf-cgroup.h +37 -36
73 lines not on this page · raw message
include/linux/serial_core.h +79 -0
79 lines not on this page · raw message
kernel/async.c +63 -22
85 lines not on this page · raw message
kernel/bpf/verifier.c +686 -189
875 lines not on this page · raw message
mm/migrate.c +34 -31
65 lines not on this page · raw message
net/core/filter.c +72 -7
79 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/verifier.c +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/cb_refs.c +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/iters.c +695 -0
695 lines not on this page · raw message
tools/testing/selftests/bpf/progs/strobemeta.h +48 -30
78 lines not on this page · raw message
tools/testing/selftests/bpf/progs/verifier_iterating_callbacks.c new file +242 -0
242 lines not on this page · raw message
tools/testing/selftests/bpf/progs/verifier_subprog_precision.c +72 -14
86 lines not on this page · raw message
tools/testing/selftests/bpf/progs/xdp_synproxy_kern.c +52 -32
84 lines not on this page · raw message
tools/testing/selftests/drivers/net/bonding/bond_options.sh +4 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/bonding/settings +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/drivers/net/netdevsim/udp_tunnel_nic.sh +9 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/hugepage-vmemmap.c +18 -11
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/rps_default_mask.sh +5 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/so_incoming_cpu.c +50 -18
68 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.