Linux 6.19.9
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.19.9 kernel.
All users of the 6.19 kernel series must upgrade.
The updated 6.19.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.19.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/devicetree/bindings/display/msm/dp-controller.yaml | 21 + Documentation/devicetree/bindings/display/msm/qcom,glymur-mdss.yaml | 16 Documentation/devicetree/bindings/display/msm/qcom,sm8750-mdss.yaml | 2 Documentation/virt/kvm/api.rst | 8 Makefile | 3 arch/arm64/include/asm/kvm_host.h | 3 arch/arm64/include/asm/pgtable-prot.h | 10 arch/arm64/kernel/cpufeature.c | 9 arch/arm64/kvm/hyp/nvhe/mem_protect.c | 2 arch/arm64/kvm/mmu.c | 12 arch/arm64/kvm/vgic/vgic-init.c | 34 - arch/arm64/kvm/vgic/vgic-v2.c | 4 arch/arm64/kvm/vgic/vgic-v3.c | 12 arch/arm64/kvm/vgic/vgic.c | 6 arch/arm64/mm/contpte.c | 53 ++ arch/arm64/mm/mmap.c | 6 arch/parisc/include/asm/pgtable.h | 2 arch/parisc/kernel/head.S | 7 arch/parisc/kernel/setup.c | 20 - arch/powerpc/include/asm/uaccess.h | 2 arch/powerpc/kexec/core.c | 17 arch/powerpc/kexec/file_load_64.c | 14 arch/powerpc/net/bpf_jit_comp.c | 30 + arch/powerpc/net/bpf_jit_comp64.c | 101 ++++- arch/powerpc/perf/callchain.c | 5 arch/powerpc/perf/callchain_32.c | 1 arch/powerpc/perf/callchain_64.c | 1 arch/powerpc/platforms/83xx/km83xx.c | 4 arch/powerpc/platforms/pseries/msi.c | 2 arch/s390/include/asm/processor.h | 2 arch/s390/lib/xor.c | 5 arch/s390/mm/pfault.c | 4 arch/x86/include/asm/kvm_host.h | 3 arch/x86/include/uapi/asm/kvm.h | 1 arch/x86/kernel/apic/apic.c | 6 arch/x86/kvm/svm/avic.c | 9 arch/x86/kvm/svm/svm.c | 9 arch/x86/kvm/vmx/nested.c | 22 - drivers/accel/amdxdna/aie2_ctx.c | 14 drivers/accel/amdxdna/amdxdna_ctx.c | 10 drivers/acpi/osi.c | 13 drivers/acpi/osl.c | 2 drivers/acpi/sleep.c | 8 drivers/android/binder/page_range.rs | 83 +++- drivers/android/binder/process.rs | 3 drivers/android/binder/range_alloc/array.rs | 35 + drivers/android/binder/range_alloc/mod.rs | 4 drivers/android/binder/range_alloc/tree.rs | 18 drivers/android/binder/thread.rs | 17 drivers/ata/libata-core.c | 2 drivers/base/property.c | 27 - drivers/block/ublk_drv.c | 12 drivers/char/ipmi/ipmi_si_intf.c | 37 + drivers/cpufreq/intel_pstate.c | 4 drivers/cpuidle/cpuidle.c | 10 drivers/crypto/ccp/sev-dev.c | 10 drivers/cxl/Kconfig | 1 drivers/firmware/cirrus/cs_dsp.c | 24 - drivers/firmware/stratix10-rsu.c | 2 drivers/gpib/lpvo_usb_gpib/lpvo_usb_gpib.c | 7 drivers/gpio/gpiolib.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 17 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 2 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h | 16 drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 14 drivers/gpu/drm/amd/amdgpu/mes_v11_0.c | 5 drivers/gpu/drm/amd/amdgpu/mes_v12_0.c | 5 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 1 drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c | 6 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c | 11 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c | 6 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 3 drivers/gpu/drm/bridge/samsung-dsim.c | 25 - drivers/gpu/drm/bridge/ti-sn65dsi83.c | 13 drivers/gpu/drm/bridge/ti-sn65dsi86.c | 6 drivers/gpu/drm/i915/display/intel_alpm.c | 13 drivers/gpu/drm/i915/display/intel_display.c | 1 drivers/gpu/drm/i915/display/intel_dp.c | 7 drivers/gpu/drm/i915/display/intel_psr.c | 50 ++ drivers/gpu/drm/i915/display/intel_vrr.c | 14 drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 12 drivers/gpu/drm/msm/adreno/a2xx_gpummu.c | 2 drivers/gpu/drm/msm/adreno/a6xx_catalog.c | 3 drivers/gpu/drm/msm/adreno/a8xx_gpu.c | 14 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h | 12 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h | 12 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h | 4 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h | 12 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_1_sar2130p.h | 12 drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h | 12 drivers/gpu/drm/msm/dsi/dsi_host.c | 43 +- drivers/gpu/drm/nouveau/nouveau_connector.c | 3 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c | 12 drivers/gpu/drm/sitronix/st7586.c | 15 drivers/gpu/drm/ttm/ttm_pool_internal.h | 2 drivers/gpu/drm/xe/xe_sync.c | 30 + drivers/gpu/drm/xe/xe_wa.c | 13 drivers/hwmon/pmbus/q54sj108a2.c | 19 - drivers/i3c/master/dw-i3c-master.c | 4 drivers/i3c/master/mipi-i3c-hci/cmd.h | 1 drivers/i3c/master/mipi-i3c-hci/cmd_v1.c | 2 drivers/i3c/master/mipi-i3c-hci/cmd_v2.c | 2 drivers/i3c/master/mipi-i3c-hci/core.c | 9 drivers/i3c/master/mipi-i3c-hci/dma.c | 96 +++-- drivers/i3c/master/mipi-i3c-hci/hci.h | 2 drivers/i3c/master/mipi-i3c-hci/pio.c | 16 drivers/iio/chemical/bme680_core.c | 2 drivers/iio/chemical/sps30_i2c.c | 2 drivers/iio/chemical/sps30_serial.c | 2 drivers/iio/dac/ds4424.c | 2 drivers/iio/frequency/adf4377.c | 2 drivers/iio/gyro/mpu3050-core.c | 18 drivers/iio/gyro/mpu3050-i2c.c | 3 drivers/iio/imu/adis.c | 2 drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c | 2 drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c | 4 drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c | 2 drivers/iio/imu/inv_icm45600/inv_icm45600.h | 2 drivers/iio/imu/inv_icm45600/inv_icm45600_core.c | 11 drivers/iio/imu/inv_mpu6050/inv_mpu_core.c | 8 drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h | 2 drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c | 5 drivers/iio/industrialio-buffer.c | 6 drivers/iio/light/bh1780.c | 2 drivers/iio/magnetometer/tlv493d.c | 2 drivers/iio/potentiometer/mcp4131.c | 2 drivers/iio/proximity/hx9023s.c | 6 drivers/irqchip/irq-gic-v3-its.c | 4 drivers/irqchip/irq-riscv-aplic-direct.c | 10 drivers/irqchip/irq-riscv-aplic-main.c | 187 +++++++++- drivers/irqchip/irq-riscv-aplic-main.h | 19 + drivers/media/dvb-core/dvb_net.c | 3 drivers/mmc/host/dw_mmc-rockchip.c | 38 +- drivers/mmc/host/mmci_qcom_dml.c | 1 drivers/mmc/host/sdhci-brcmstb.c | 2 drivers/net/bonding/bond_main.c | 70 +++ drivers/net/caif/caif_serial.c | 3 drivers/net/can/dev/calc_bittiming.c | 2 drivers/net/can/spi/hi311x.c | 5 drivers/net/can/usb/gs_usb.c | 22 - drivers/net/dsa/microchip/ksz_ptp.c | 11 drivers/net/dsa/realtek/rtl8365mb.c | 3 drivers/net/dsa/realtek/rtl8366rb-leds.c | 6 drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 19 - drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c | 82 ++++ drivers/net/ethernet/amd/xgbe/xgbe.h | 4 drivers/net/ethernet/arc/emac_main.c | 11 drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 4 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 31 - drivers/net/ethernet/broadcom/genet/bcmgenet.h | 5 drivers/net/ethernet/broadcom/genet/bcmmii.c | 10 drivers/net/ethernet/cadence/macb_main.c | 98 +++++ drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c | 24 - drivers/net/ethernet/intel/e1000/e1000_main.c | 2 drivers/net/ethernet/intel/e1000e/netdev.c | 2 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 14 drivers/net/ethernet/intel/iavf/iavf.h | 3 drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 19 - drivers/net/ethernet/intel/iavf/iavf_main.c | 81 +--- drivers/net/ethernet/intel/iavf/iavf_virtchnl.c | 1 drivers/net/ethernet/intel/ice/devlink/devlink.c | 4 drivers/net/ethernet/intel/ice/ice_common.c | 13 drivers/net/ethernet/intel/ice/ice_ethtool.c | 35 - drivers/net/ethernet/intel/ixgbevf/vf.c | 3 drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c | 6 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_rx.c | 23 - drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 7 drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 2 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 45 +- drivers/net/ethernet/microsoft/mana/gdma_main.c | 1 drivers/net/ethernet/microsoft/mana/mana_en.c | 23 - drivers/net/ethernet/spacemit/k1_emac.c | 19 - drivers/net/ethernet/ti/am65-cpsw-nuss.c | 16 drivers/net/ethernet/ti/am65-cpsw-nuss.h | 2 drivers/net/mctp/mctp-i2c.c | 1 drivers/net/mctp/mctp-usb.c | 3 drivers/net/phy/sfp.c | 8 drivers/net/usb/lan78xx.c | 12 drivers/net/usb/lan78xx.h | 3 drivers/net/usb/qmi_wwan.c | 4 drivers/net/usb/usbnet.c | 7 drivers/nvme/host/pci.c | 8 drivers/pinctrl/pinctrl-cy8c95x0.c | 4 drivers/pmdomain/bcm/bcm2835-power.c | 6 drivers/pmdomain/rockchip/pm-domains.c | 2 drivers/regulator/pca9450-regulator.c | 14 drivers/regulator/pf9453-regulator.c | 2 drivers/remoteproc/mtk_scp.c | 39 ++ drivers/remoteproc/qcom_sysmon.c | 2 drivers/remoteproc/qcom_wcnss.c | 2 drivers/s390/block/dasd_eckd.c | 16 drivers/s390/crypto/zcrypt_ccamisc.c | 12 drivers/s390/crypto/zcrypt_cex4.c | 3 drivers/scsi/hisi_sas/hisi_sas_main.c | 2 drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 2 drivers/scsi/mpi3mr/mpi3mr_fw.c | 34 + drivers/scsi/qla2xxx/qla_iocb.c | 2 drivers/scsi/scsi_scan.c | 8 drivers/scsi/ses.c | 5 drivers/scsi/storvsc_drv.c | 5 drivers/spi/spi-amlogic-spifc-a4.c | 5 drivers/spi/spi-rockchip-sfc.c | 2 drivers/staging/rtl8723bs/core/rtw_ieee80211.c | 15 drivers/staging/rtl8723bs/core/rtw_mlme.c | 5 drivers/staging/sm750fb/sm750.c | 1 drivers/staging/sm750fb/sm750_hw.c | 22 - drivers/ufs/core/ufshcd.c | 11 drivers/usb/class/cdc-acm.c | 5 drivers/usb/class/cdc-acm.h | 1 drivers/usb/class/cdc-wdm.c | 4 drivers/usb/class/usbtmc.c | 6 drivers/usb/core/message.c | 100 ++++- drivers/usb/core/phy.c | 8 drivers/usb/core/quirks.c | 16 drivers/usb/dwc3/dwc3-pci.c | 2 drivers/usb/gadget/function/f_hid.c | 4 drivers/usb/gadget/function/f_mass_storage.c | 12 drivers/usb/gadget/function/f_ncm.c | 146 ++++--- drivers/usb/gadget/function/f_tcm.c | 14 drivers/usb/gadget/function/u_ether.c | 67 +-- drivers/usb/gadget/function/u_ether.h | 56 +- drivers/usb/gadget/function/u_ether_configfs.h | 176 --------- drivers/usb/gadget/function/u_ncm.h | 4 drivers/usb/gadget/function/uvc_video.c | 2 drivers/usb/host/xhci-debugfs.c | 10 drivers/usb/host/xhci-ring.c | 1 drivers/usb/host/xhci.c | 4 drivers/usb/image/mdc800.c | 6 drivers/usb/misc/uss720.c | 2 drivers/usb/misc/yurex.c | 2 drivers/usb/renesas_usbhs/common.c | 9 drivers/usb/roles/class.c | 7 drivers/usb/typec/altmodes/displayport.c | 7 drivers/usb/typec/tcpm/tcpm.c | 2 fs/afs/addr_list.c | 8 fs/btrfs/extent_io.c | 1 fs/btrfs/inode.c | 19 + fs/btrfs/ioctl.c | 24 + fs/btrfs/space-info.c | 5 fs/btrfs/transaction.c | 16 fs/btrfs/uuid-tree.c | 38 ++ fs/btrfs/uuid-tree.h | 2 fs/btrfs/volumes.c | 6 fs/ceph/addr.c | 1 fs/ceph/debugfs.c | 4 fs/ceph/dir.c | 17 fs/ceph/file.c | 4 fs/ceph/inode.c | 2 fs/ceph/mds_client.c | 3 fs/file_attr.c | 2 fs/iomap/buffered-io.c | 15 fs/iomap/ioend.c | 13 fs/nfs/nfs3proc.c | 7 fs/nfsd/nfsctl.c | 2 fs/nsfs.c | 15 fs/smb/client/cifsglob.h | 11 fs/smb/client/dir.c | 1 fs/smb/client/file.c | 18 fs/smb/client/fs_context.c | 2 fs/smb/client/smb2ops.c | 14 fs/smb/client/smb2pdu.c | 5 fs/smb/server/auth.c | 22 - fs/smb/server/oplock.c | 35 + fs/smb/server/oplock.h | 5 fs/smb/server/smb2pdu.c | 8 fs/xfs/libxfs/xfs_defer.c | 2 fs/xfs/xfs_bmap_item.c | 2 fs/xfs/xfs_dquot.c | 8 fs/xfs/xfs_log.c | 2 include/kunit/run-in-irq-context.h | 44 +- include/linux/damon.h | 10 include/linux/io_uring_types.h | 1 include/linux/irqchip/arm-gic-v3.h | 1 include/linux/kthread.h | 21 + include/linux/liveupdate.h | 9 include/linux/migrate.h | 10 include/linux/mm.h | 17 include/linux/mmc/host.h | 9 include/linux/netdevice.h | 32 + include/linux/ns_common.h | 2 include/linux/rseq_types.h | 6 include/linux/sched.h | 2 include/linux/usb.h | 8 include/linux/usb/usbnet.h | 1 include/net/ip6_tunnel.h | 14 include/net/ip_tunnels.h | 7 include/net/page_pool/types.h | 2 include/trace/events/kmem.h | 8 io_uring/eventfd.c | 10 io_uring/io_uring.c | 26 + io_uring/kbuf.c | 13 io_uring/net.c | 2 io_uring/register.c | 12 io_uring/zcrx.c | 5 kernel/bpf/verifier.c | 1 kernel/cgroup/cgroup.c | 7 kernel/exit.c | 6 kernel/fork.c | 5 kernel/kprobes.c | 8 kernel/kthread.c | 41 -- kernel/liveupdate/luo_file.c | 41 +- kernel/nscommon.c | 6 kernel/nstree.c | 29 - kernel/sched/core.c | 79 +--- kernel/sched/ext.c | 85 +++- kernel/sched/idle.c | 11 kernel/time/time.c | 2 kernel/trace/bpf_trace.c | 4 kernel/trace/trace.c | 6 kernel/trace/trace_events.c | 58 ++- kernel/trace/trace_functions_graph.c | 19 - kernel/workqueue.c | 2 lib/bootconfig.c | 6 mm/damon/core.c | 79 ++-- mm/damon/lru_sort.c | 4 mm/damon/reclaim.c | 4 mm/damon/stat.c | 2 mm/damon/sysfs.c | 11 mm/damon/tests/vaddr-kunit.h | 2 mm/damon/vaddr.c | 24 - mm/filemap.c | 15 mm/huge_memory.c | 13 mm/kfence/core.c | 29 + mm/memcontrol.c | 2 mm/memfd_luo.c | 56 ++ mm/memory.c | 3 mm/migrate.c | 8 mm/migrate_device.c | 2 mm/page_alloc.c | 3 mm/slub.c | 54 +- net/batman-adv/bat_v_elp.c | 10 net/batman-adv/hard-interface.c | 8 net/batman-adv/hard-interface.h | 1 net/ceph/auth.c | 6 net/ceph/messenger_v2.c | 31 + net/ceph/mon_client.c | 6 net/core/dev.c | 17 net/core/dev.h | 35 - net/core/neighbour.c | 3 net/core/page_pool_user.c | 4 net/ipv4/Kconfig | 2 net/ipv4/ip_tunnel_core.c | 15 net/ipv4/nexthop.c | 14 net/ipv4/tcp.c | 3 net/ipv4/tcp_ao.c | 3 net/ipv4/tcp_ipv4.c | 3 net/ipv6/tcp_ipv6.c | 3 net/mac80211/link.c | 2 net/mctp/route.c | 11 net/ncsi/ncsi-aen.c | 3 net/ncsi/ncsi-rsp.c | 16 net/netfilter/nf_tables_api.c | 4 net/netfilter/nfnetlink_cthelper.c | 8 net/netfilter/nfnetlink_queue.c | 4 net/netfilter/nft_chain_filter.c | 2 net/netfilter/nft_set_pipapo.c | 3 net/netfilter/xt_IDLETIMER.c | 6 net/netfilter/xt_dccp.c | 4 net/netfilter/xt_tcpudp.c | 6 net/rxrpc/af_rxrpc.c | 8 net/sched/sch_teql.c | 1 net/shaper/shaper.c | 11 net/sunrpc/xprtrdma/verbs.c | 7 net/tipc/socket.c | 2 rust/Makefile | 6 rust/kernel/str.rs | 4 sound/core/pcm_native.c | 19 - sound/hda/codecs/realtek/alc269.c | 25 + sound/soc/amd/acp/acp-mach-common.c | 18 sound/soc/amd/acp3x-rt5682-max9836.c | 9 sound/soc/amd/yc/acp6x-mach.c | 14 sound/soc/codecs/cs42l43-jack.c | 1 sound/soc/codecs/rt1011.c | 2 sound/soc/generic/simple-card-utils.c | 12 sound/soc/qcom/qdsp6/q6apm-dai.c | 1 sound/soc/qcom/qdsp6/q6apm-lpass-dais.c | 1 sound/soc/qcom/qdsp6/q6apm.c | 1 sound/soc/soc-core.c | 11 sound/usb/endpoint.c | 1 sound/usb/format.c | 70 +++ sound/usb/mixer_scarlett2.c | 2 sound/usb/quirks.c | 2 tools/objtool/check.c | 10 tools/objtool/elf.c | 2 tools/objtool/klp-diff.c | 3 tools/perf/builtin-ftrace.c | 9 tools/perf/util/annotate.c | 5 tools/perf/util/disasm.c | 2 tools/perf/util/synthetic-events.c | 5 tools/testing/selftests/filesystems/nsfs/iterate_mntns.c | 25 - 394 files changed, 3523 insertions(+), 1770 deletions(-)
A1RM4X (1):
USB: add QUIRK_NO_BOS for video capture several devices
Abel Vesa (1):
dt-bindings: display: msm: Fix reg ranges and clocks on Glymur
Abhinav Kumar (1):
drm/msm/dpu: Correct the SA8775P intr_underrun/intr_underrun index
Adrian Hunter (7):
i3c: mipi-i3c-hci: Use ETIMEDOUT instead of ETIME for timeout errors
i3c: mipi-i3c-hci: Factor out DMA mapping from queuing path
i3c: mipi-i3c-hci: Consolidate spinlocks
i3c: mipi-i3c-hci: Restart DMA ring correctly after dequeue abort
i3c: mipi-i3c-hci: Add missing TID field to no-op command descriptor
i3c: mipi-i3c-hci: Fix race in DMA ring dequeue
i3c: mipi-i3c-hci: Correct RING_CTRL_ABORT handling in DMA dequeue
Adrian Ng Ho Yin (1):
i3c: dw-i3c-master: Set SIR_REJECT in DAT on device attach and reattach
Akhil P Oommen (2):
drm/msm/a6xx: Fix the bogus protect error on X2-85 drm/msm/a8xx: Fix ubwc config related to swizzling
Al Viro (1):
unshare: fix unshare_fs() handling
Alan Stern (3):
USB: usbcore: Introduce usb_bulk_msg_killable()
USB: usbtmc: Use usb_bulk_msg_killable() with user-specified timeouts
USB: core: Limit the length of unkillable synchronous timeouts
Alexander Gordeev (1):
s390/pfault: Fix virtual vs physical address confusion
Alexander Potapenko (2):
mm/kfence: fix KASAN hardware tag faults during late enablement mm/kfence: disable KFENCE upon KASAN HW tags enablement
Alexandre Courbot (1):
rust: str: make NullTerminatedFormatter public
Alice Ryhl (3):
rust_binder: check ownership before using vma
rust_binder: avoid reading the written value in offsets array
rust_binder: call set_notification_done() without proc lock
Alok Tiwari (3):
i40e: fix src IP mask checks and memcpy argument names in cloud filter
octeontx2-af: devlink: fix NIX RAS reporter recovery condition
octeontx2-af: devlink: fix NIX RAS reporter to use RAS interrupt status
Alysa Liu (1):
drm/amdgpu: Fix use-after-free race in VM acquire
Andreas Kemnade (1):
iio: imu: inv-mpu9150: fix irq ack preventing irq storms
Andrei-Alexandru Tachici (1):
tracing: Fix enabling multiple events on the kernel command line and bootconfig
Andy Shevchenko (2):
device property: Allow secondary lookup in fwnode_get_next_child_node()
pinctrl: cy8c95x0: Don't miss reading the last bank registers
Antoniu Miclaus (6):
iio: chemical: sps30_serial: fix buffer size in sps30_serial_read_meas()
iio: chemical: sps30_i2c: fix buffer size in sps30_i2c_read_meas()
iio: magnetometer: tlv493d: remove erroneous shift in X-axis data
iio: gyro: mpu3050-core: fix pm_runtime error handling
iio: gyro: mpu3050-i2c: fix pm_runtime error handling
iio: light: bh1780: fix PM runtime leak on error path
Ariel Silver (1):
media: dvb-net: fix OOB access in ULE extension header tables
Artem Lytkin (1):
staging: sm750fb: add missing pci_release_region on error and removal
Arun R Murthy (1):
drm/i915/dp: Read ALPM caps after DPCD init
Ashish Kalra (1):
crypto: ccp - allow callers to use HV-Fixed page API when SEV is disabled
Axel Rasmussen (1):
Revert "ptdesc: remove references to folios from __pagetable_ctor() and pagetable_dtor()"
Azamat Almazbek uulu (1):
ASoC: amd: yc: Add ASUS EXPERTBOOK BM1503CDA to quirk table
Bart Van Assche (1):
btrfs: add missing RCU unlock in error path in try_release_subpage_extent_buffer()
Bartosz Golaszewski (1):
gpiolib: normalize the return value of gc->get() on behalf of buggy drivers
Bastien Curutchet (Schneider Electric) (1):
net: dsa: microchip: Fix error path in PTP IRQ setup
Ben Dooks (1):
ACPI: OSL: fix __iomem type on return from acpi_os_map_generic_address()
Bharath SM (1):
smb: client: fix in-place encryption corruption in SMB2_write()
Bjorn Andersson (1):
remoteproc: sysmon: Correct subsys_name_len type in QMI request
Breno Leitao (1):
workqueue: Use POOL_BH instead of WQ_BH when checking pool flags
Calvin Owens (1):
tracing: Fix trace_buf_size= cmdline parameter with sizes >= 2G
Carlos Llamas (1):
rust_binder: fix oneway spam detection
Carlos Maiolino (1):
xfs: fix returned valued from xfs_defer_can_append
Carolina Jubran (1):
net/mlx5: Fix peer miss rules host disabled checks
Casey Connolly (1):
ASoC: detect empty DMI strings
Catalin Marinas (2):
arm64: gcs: Honour mprotect(PROT_NONE) on shadow stack mappings
arm64: mm: Add PTE_DIRTY back to PAGE_KERNEL* to fix kexec/hibernation
Charles Keepax (1):
ASoC: cs42l43: Report insert for exotic peripherals
Chen Ni (4):
perf annotate: Fix hashmap__new() error checking
perf ftrace: Fix hashmap__new() error checking
ASoC: amd: acp3x-rt5682-max9836: Add missing error check for clock acquisition
ASoC: amd: acp-mach-common: Add missing error check for clock acquisition
Cheng-Yang Chou (1):
sched_ext: Remove redundant css_put() in scx_cgroup_init()
Chengfeng Ye (1):
mctp: route: hold key->lock in mctp_flow_prepare_output()
Chintan Vankar (1):
net: ethernet: ti: am65-cpsw-nuss: Fix rx_filter value for PTP support
Chris Spencer (1):
iio: chemical: bme680: Fix measurement wait duration calculation
Christian Brauner (5):
nsfs: tighten permission checks for ns iteration ioctls
kthread: consolidate kthread exit paths to prevent use-after-free
nsfs: tighten permission checks for handle opening
nstree: tighten permission checks for listing
selftests: fix mntns iteration selftests
Christian Loehle (1):
bpf: drop kthread_exit from noreturn_deny
Christoffer Sandberg (1):
usb/core/quirks: Add Huawei ME906S-device to wakeup quirk
Christophe Leroy (CS GROUP) (1):
powerpc/uaccess: Fix inline assembly for clang build on PPC32
Chuck Lever (1):
perf synthetic-events: Fix stale build ID in module MMAP2 records
Corey Minyard (4):
ipmi:si: Don't block module unload if the BMC is messed up ipmi:si: Use a long timeout when the BMC is misbehaving ipmi:si: Handle waiting messages when BMC failure detected ipmi:si: Fix check for a misbehaving BMC
Cosmin Ratiu (1):
net/mlx5: Fix deadlock between devlink lock and esw->wq
Cristian Ciocaltea (1):
drm/amdgpu: Fix kernel-doc comments for some LUT properties
Darrick J. Wong (2):
iomap: reject delalloc mappings during writeback
xfs: fix undersized l_iclog_roundoff values
Dave Airlie (2):
nouveau/gsp: drop WARN_ON in ACPI probes nouveau/dpcd: return EBUSY for aux xfer if the device is asleep
David Arcari (1):
cpufreq: intel_pstate: Fix NULL pointer dereference in update_cpu_qos_request()
David Dull (1):
netfilter: x_tables: guard option walkers against 1-byte tail reads
David Lechner (1):
drm/sitronix/st7586: fix bad pixel data due to byte swap
Dayu Jiang (1):
usb: xhci: Prevent interrupt storm on host controller error (HCE)
Dillon Varone (1):
drm/amd/display: Fallback to boot snapshot for dispclk
Dragos Tatulea (2):
net/mlx5e: RX, Fix XDP multi-buf frag counting for striding RQ net/mlx5e: RX, Fix XDP multi-buf frag counting for legacy RQ
Edward Adam Davis (1):
fs: init flags_valid before calling vfs_fileattr_get
Eric Badger (1):
xprtrdma: Decrement re_receiving on the early exit paths
Eric Biggers (3):
kunit: irq: Ensure timer doesn't fire too frequently net/tcp-ao: Fix MAC comparison to be constant-time net/tcp-md5: Fix MAC comparison to be constant-time
Eric Dumazet (1):
net: prevent NULL deref in ip[6]tunnel_xmit()
Fan Wu (2):
usb: renesas_usbhs: fix use-after-free in ISR during device removal
net: ethernet: arc: emac: quiesce interrupts before requesting IRQ
Felix Gu (3):
spi: amlogic: spifc-a4: Fix DMA mapping error handling
spi: rockchip-sfc: Fix double-free in remove() callback
mmc: mmci: Fix device_node reference leak in of_get_dml_pipe_index()
Filipe Manana (4):
btrfs: fix transaction abort when snapshotting received subvolumes
btrfs: fix transaction abort on file creation due to name hash collision
btrfs: fix transaction abort on set received ioctl due to item overflow
btrfs: abort transaction on failure to update root in the received subvol ioctl
Florian Westphal (1):
netfilter: nf_tables: always walk all pending catchall elements
Franz Schnyder (2):
drm/bridge: ti-sn65dsi86: Enable HPD polling if IRQ is not used
regulator: pf9453: Respect IRQ trigger settings from firmware
Gabor Juhos (1):
usb: core: don't power off roothub PHYs if phy_set_mode() fails
Gal Pressman (1):
net/mlx5e: Fix DMA FIFO desync on error CQE SQ recovery
Gary Guo (1):
rust: kbuild: emit dep-info into $(depfile) directly
Geoffrey D. Bennett (1):
ALSA: usb-audio: Improve Focusrite sample rate filtering
Greg Kroah-Hartman (3):
usb: misc: uss720: properly clean up reference in uss720_probe()
staging: rtl8723bs: properly validate the data in rtw_get_ie_ex() Linux 6.19.9
Guenter Roeck (1):
smb/server: Fix another refcount leak in smb2_open()
Haibo Chen (1):
can: dev: keep the max bitrate error at 5%
Haiyue Wang (1):
mctp: i2c: fix skb memory leak in receive path
Hangbin Liu (2):
bonding: do not set usable_slaves for broadcast mode
bonding: handle BOND_LINK_FAIL, BOND_LINK_BACK as valid link states
Hao Li (1):
memcg: fix slab accounting in refill_obj_stock() trylock path
Harald Freudenberger (1):
s390/zcrypt: Enable AUTOSEL_DOM for CCA serialnr sysfs attribute
Hari Bathini (2):
powerpc64/bpf: fix kfunc call support powerpc64/bpf: fix the address returned by bpf_get_func_ip
Harry Yoo (1):
mm/slab: fix an incorrect check in obj_exts_alloc_size()
Heikki Krogerus (1):
usb: dwc3: pci: add support for the Intel Nova Lake -H
Heiko Carstens (2):
s390/stackleak: Fix __stackleak_poison() inline assembly constraint s390/xor: Fix xor_xc_2() inline assembly constraints
Helge Deller (3):
parisc: Increase initial mapping to 64 MB with KALLSYMS
parisc: Fix initial page table creation for boot
parisc: Check kernel mapping earlier at bootup
Henrique Carvalho (1):
smb: client: fix iface port assignment in parse_server_interfaces
Hristo Venev (1):
ceph: do not skip the first folio of the next object in writeback
Huiwen He (1):
tracing: Fix syscall events activation by ensuring refcount hits zero
Hyunwoo Kim (2):
netfilter: nfnetlink_queue: fix entry leak in bridge verdict error path
netfilter: nfnetlink_cthelper: fix OOB read in nfnl_cthelper_dump_table()
Ilya Dryomov (3):
libceph: reject preamble if control segment is empty
libceph: prevent potential out-of-bounds reads in process_message_header()
libceph: admit message frames only in CEPH_CON_S_OPEN state
J. Neuschäfer (1):
powerpc: 83xx: km83xx: Fix keymile vendor prefix
Jakub Kicinski (1):
page_pool: store detach_time as ktime_t to avoid false-negatives
Jakub Staniszewski (2):
ice: reintroduce retry mechanism for indirect AQ
ice: fix retry for AQ command 0x06EE
Jan Kiszka (1):
scsi: storvsc: Fix scheduling while atomic on PREEMPT_RT
Janusz Krzysztofik (1):
drm/i915: Fix potential overflow of shmem scatterlist length
Jean-Baptiste Maneyrol (4):
iio: imu: inv_icm45600: fix regulator put warning when probe fails
iio: imu: inv_icm45600: fix INT1 drive bit inverted
iio: imu: inv_icm42600: fix odr switch to the same value
iio: imu: inv_icm42600: fix odr switch when turning buffer off
Jedrzej Jagielski (1):
ixgbevf: fix link setup issue
Jenny Guanni Qu (1):
netfilter: nft_set_pipapo: fix stack out-of-bounds read in pipapo_drop()
Jens Axboe (3):
io_uring/kbuf: check if target buffer list is still legacy on recycle
io_uring: ensure ctx->rings is stable for task work flags manipulation
io_uring/eventfd: use ctx->rings_rcu for flags checkingJessica Liu (2):
irqchip/riscv-aplic: Do not clear ACPI dependencies on probe failure irqchip/riscv-aplic: Register syscore operations only once
Jian Zhang (1):
net: ncsi: fix skb leak in error paths
Jiasheng Jiang (1):
usb: gadget: f_tcm: Fix NULL pointer dereferences in nexus handling
Jiayuan Chen (1):
bonding: fix type confusion in bond_setup_by_slave()
Jim Mattson (1):
KVM: x86: Introduce KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM
Jiri Olsa (1):
bpf: Fix kprobe_multi cookies access in show_fdinfo callback
Joanne Koong (1):
iomap: don't mark folio uptodate if read IO has bytes pending
Johan Hovold (2):
gpib: lpvo_usb: fix unintended binding of FTDI 8U232AM devices
net: mctp: fix device leak on probe failure
John Keeping (1):
usb: gadget: f_hid: fix SuperSpeed descriptors
Josh Law (3):
lib/bootconfig: fix off-by-one in xbc_verify_tree() unclosed brace error lib/bootconfig: fix snprintf truncation check in xbc_node_compose_key_after() lib/bootconfig: check bounds before writing in __xbc_open_brace()
Josh Poimboeuf (3):
objtool/klp: Fix detection of corrupt static branch/call entries
objtool: Fix data alignment in elf_add_data()
objtool: Fix another stack overflow in validate_branch()
Jouni Högander (2):
drm/i915/alpm: ALPM disable fixes drm/i915/psr: Repeat Selective Update area alignment
Junxiao Bi (1):
scsi: core: Fix error handling for scsi_alloc_sdev()
Junzhong Pan (1):
usb: gadget: uvc: fix interval_duration calculation
Kalesh Singh (1):
mm/tracing: rss_stat: ensure curr is false from kthread context
Kamal Dasu (1):
mmc: sdhci-brcmstb: use correct register offset for V1 pin_sel restore
Keith Busch (1):
cxl/acpi: Fix CXL_ACPI and CXL_PMEM Kconfig tristate mismatch
Kevin Hao (1):
net: macb: Shuffle the tx ring before enabling tx
Konrad Dybcio (1):
drm/msm/dpu: Fix LM size on a number of platforms
Krzysztof Kozlowski (1):
dt-bindings: display/msm: qcom,sm8750-mdss: Fix model typo
Kuen-Han Tsai (8):
usb: gadget: f_ncm: Fix atomic context locking issue
usb: legacy: ncm: Fix NPE in gncm_bind
Revert "usb: gadget: f_ncm: Fix atomic context locking issue" Revert "usb: legacy: ncm: Fix NPE in gncm_bind"
Revert "usb: gadget: u_ether: Add auto-cleanup helper for freeing net_device" Revert "usb: gadget: f_ncm: align net_device lifecycle with bind/unbind" Revert "usb: gadget: u_ether: add gether_opts for config caching"
usb: gadget: f_ncm: Fix net_device lifecycle with device_move
Kuniyuki Iwashima (1):
nfsd: Fix cred ref leak in nfsd_nl_listener_set_doit().
Laurent Vivier (1):
qmi_wwan: allow max_mtu above hard_mtu to control rx_urb_size
Liwei Song (1):
firmware: stratix10-rsu: Fix NULL pointer dereference when RSU is disabled
Lizhi Hou (1):
accel/amdxdna: Fix runtime suspend deadlock when there is pending job
Long Li (3):
net: mana: Ring doorbell at 4 CQ wraparounds
xfs: fix integer overflow in bmap intent sort comparator
xfs: ensure dquot item is deleted from AIL only after log shutdown
Luca Ceresoli (2):
drm/bridge: ti-sn65dsi83: fix CHA_DSI_CLK_RANGE rounding drm/bridge: ti-sn65dsi83: halve horizontal syncs for dual LVDS output
Luka Gejak (1):
staging: rtl8723bs: fix potential out-of-bounds read in rtw_restruct_wmm_ie
Lukas Schmid (1):
iio: potentiometer: mcp4131: fix double application of wiper shift
Marc Kleine-Budde (1):
can: gs_usb: gs_can_open(): always configure bitrates before starting device
Marc Zyngier (7):
KVM: arm64: Fix protected mode handling of pages larger than 4kB
KVM: arm64: pkvm: Fallback to level-3 mapping on host stage-2 fault
KVM: arm64: vgic: Pick EOIcount deactivations from AP-list tail
KVM: arm64: pkvm: Don't reprobe for ICH_VTR_EL2.TDS on CPU hotplug
usb: cdc-acm: Restore CAP_BRK functionnality to CH343 irqchip/gic-v3-its: Limit number of per-device MSIs to the range the ITS supports
KVM: arm64: Eagerly init vgic dist/redist on vgic creation
Marek Behún (1):
net: dsa: realtek: Fix LED group port bit for non-zero LED group
Mario Limonciello (4):
drm/amd: Disable MES LR compute W/A
drm/amd: Set num IP blocks to 0 if discovery fails drm/amd: Fix NULL pointer dereference in device cleanup drm/amd: Fix a few more NULL pointer dereference in device cleanup
Marios Makassikis (1):
smb: server: fix use-after-free in smb2_open()
Mark Harmstone (1):
btrfs: fix chunk map leak in btrfs_map_block() after btrfs_chunk_map_num_copies()
Masami Hiramatsu (Google) (2):
kprobes: avoid crash when rmmod/insmod after ftrace killed
kprobes: Remove unneeded warnings from __arm_kprobe_ftrace()
Mathias Nyman (1):
xhci: Fix NULL pointer dereference when reading portli debugfs files
Matt Roper (1):
drm/xe/xe2_hpg: Correct implementation of Wa_16025250150
Matt Vollrath (1):
e1000/e1000e: Fix leak in DMA error cleanup
Max Kellermann (3):
ceph: fix i_nlink underrun during async unlink
ceph: fix memory leaks in ceph_mdsc_build_path()
ceph: add a bunch of missing ceph_path_info initializers
Maximilian Pezzullo (1):
ata: libata-core: Disable LPM on ST1000DM010-2EP102
Maíra Canal (1):
pmdomain: bcm: bcm2835-power: Fix broken reset status read
Mehul Rao (4):
ALSA: pcm: fix use-after-free on linked stream runtime in snd_pcm_drain()
tipc: fix divide-by-zero in tipc_sk_filter_connect()
net: nexthop: fix percpu use-after-free in remove_nh_grp_entry
ublk: fix NULL pointer dereference in ublk_ctrl_set_size()
Miaoqian Lin (1):
rxrpc, afs: Fix missing error pointer check after rxrpc_kernel_lookup_peer()
Mieczyslaw Nalewaj (1):
net: dsa: realtek: rtl8365mb: remove ifOutDiscards from rx_packets
Miguel Ojeda (1):
rust: kbuild: allow unused_features
Nam Cao (1):
powerpc/pseries: Correct MSI allocation tracking
Namjae Jeon (2):
ksmbd: fix use-after-free in smb_lazy_parent_lease_break_close()
ksmbd: fix use-after-free by using call_rcu() for oplock_info
Nick Hu (1):
irqchip/riscv-aplic: Preserve APLIC states across suspend/resume
Nicolai Buchwitz (1):
net: bcmgenet: fix broken EEE by converting to phylib-managed state
Nikolay Aleksandrov (1):
drivers: net: ice: fix devlink parameters get without irdma
Nuno Sá (1):
iio: buffer: Fix wait_queue not being removed
Oleksij Rempel (5):
net: usb: lan78xx: fix silent drop of packets with checksum errors
net: usb: lan78xx: fix TX byte statistics for small packets
net: usb: lan78xx: fix WARN in __netif_napi_del_locked on disconnect
net: usb: lan78xx: skip LTM configuration for LAN7850
iio: dac: ds4424: reject -128 RAW value
Oliver Neukum (3):
usb: yurex: fix race in probe
usb: class: cdc-wdm: fix reordering issue in read code path
usb: mdc800: handle signal and read racing
Osama Abdelkader (1):
drm/bridge: samsung-dsim: Fix memory leak in error path
Patrisious Haddad (1):
net/mlx5: Fix crash when moving to switchdev mode
Paul Moses (1):
net-shapers: don't free reply skb after genlmsg_reply()
Paulo Alcantara (1):
smb: client: fix atomic open with O_DIRECT & O_SYNC
Pavan Chebbi (1):
bnxt_en: Fix RSS table size check when changing ethtool channels
Pavel Begunkov (2):
io_uring/zcrx: use READ_ONCE with user shared RQEs io_uring/net: reject SEND_VECTORIZED when unsupported
Pedro Falcato (1):
ata: libata-core: Add BRIDGE_OK quirk for QEMU drives
Peng Fan (2):
regulator: pca9450: Correct interrupt type
regulator: pca9450: Correct probed name for PCA9452
Penghe Geng (1):
mmc: core: Avoid bitfield RMW for claim/retune flags
Pengyu Luo (2):
drm/msm/dsi: fix hdisplay calculation when programming dsi registers drm/msm/dsi: fix pclk rate calculation for bonded dsi
Perry Yuan (1):
drm/amdgpu: ensure no_hw_access is visible before MMIO
Peter Collingbourne (1):
perf disasm: Fix off-by-one bug in outside check
Peter Ujfalusi (1):
ASoC: codecs: rt1011: Use component to get the dapm context in spk_mode_put
Peter Wang (1):
scsi: ufs: core: Fix possible NULL pointer dereference in ufshcd_add_command_trace()
Petr Oros (2):
iavf: fix PTP use-after-free during reset
iavf: fix incorrect reset handling in callbacks
Phil Sutter (1):
netfilter: nf_tables: Fix for duplicate device in netdev hooks
Philip Yang (1):
drm/amdkfd: Unreserve bo if queue update failed
Piotr Jaroszynski (1):
arm64: contpte: fix set_access_flags() no-op check for SMMU/ATS faults
Piotr Mazek (1):
ACPI: PM: Save NVS memory on Lenovo G70-35
Pratyush Yadav (Google) (3):
liveupdate: luo_file: remember retrieve() status
mm: memfd_luo: always make all folios uptodate
mm: memfd_luo: always dirty all folios
Qingye Zhao (1):
cgroup: fix race between task migration and iteration
RD Babiera (1):
usb: typec: altmode/displayport: set displayport signaling rate in configure message
Radu Sabau (1):
iio: imu: adis: Fix NULL pointer dereference in adis_init
Rafael J. Wysocki (1):
sched: idle: Make skipping governor callbacks more consistent
Raju Rangoju (3):
amd-xgbe: fix link status handling in xgbe_rx_adaptation
amd-xgbe: prevent CRC errors during RX adaptation with AN disabled
amd-xgbe: reset PHY settings before starting PHY
Ramanathan Choodamani (1):
wifi: mac80211: set default WMM parameters on all links
Ranjan Kumar (1):
scsi: mpi3mr: Add NULL checks when resetting request and reply queues
Raphael Zimmer (2):
libceph: Fix potential out-of-bounds access in ceph_handle_auth_reply()
libceph: Use u32 for non-negative values in ceph_monmap_decode()
Raul Pazemecxas De Andrade (1):
mm/damon/core: clear walk_control on inactive context in damos_walk()
Ravi Hothi (1):
ASoC: qcom: qdsp6: Fix q6apm remove ordering during ADSP stop and start
Ricardo B. Marlière (1):
net: bonding: Fix nd_tbl NULL dereference when IPv6 is disabled
Richard Fitzgerald (1):
firmware: cs_dsp: Fix fragmentation regression in firmware download
Rob Herring (Arm) (1):
remoteproc: qcom_wcnss: Fix reserved region mapping failure
Roberto Bergantinos Corpas (1):
nfs: return EISDIR on nfs3_proc_create if d_alias is a dir
Sabrina Dubroca (1):
neighbour: restore protocol != 0 check in pneigh update
Sanman Pradhan (1):
hwmon: (pmbus/q54sj108a2) fix stack overflow in debugfs read
Sascha Bischoff (1):
KVM: arm64: gic: Set vgic_model before initing private IRQs
Sean Christopherson (2):
KVM: SVM: Initialize AVIC VMCB fields if AVIC is enabled with in-kernel APIC
KVM: SVM: Set/clear CR8 write interception when AVIC is (de)activated
Sean Rhodes (1):
ALSA: hda/realtek: Fix speaker pop on Star Labs StarFighter
Sebastian Andrzej Siewior (1):
cgroup: Don't expose dead tasks in cgroup
Sen Wang (1):
ASoC: simple-card-utils: fix graph_util_is_ports0() for DT overlays
SeongJae Park (3):
mm/damon: rename DAMON_MIN_REGION to DAMON_MIN_REGION_SZ mm/damon: rename min_sz_region of damon_ctx to min_region_sz mm/damon/core: disallow non-power of two min_region_sz
SeungJu Cheon (1):
iio: frequency: adf4377: Fix duplicated soft reset mask
Seungjin Bae (1):
usb: gadget: f_mass_storage: Fix potential integer overflow in check_command_size_in_blocks()
Shashank Balaji (1):
x86/apic: Disable x2apic on resume if the kernel expects so
Shawn Lin (2):
mmc: dw_mmc-rockchip: Fix runtime PM support for internal phase support
pmdomain: rockchip: Fix PD_VCODEC for RK3588
Shengming Hu (2):
fgraph: Fix thresh_return clear per-task notrace
fgraph: Fix thresh_return nosleeptime double-adjust
Shiraz Saleem (1):
net/mana: Null service_wq on setup error to prevent double destroy
Shuangpeng Bai (1):
serial: caif: hold tty->link reference in ldisc_open and ser_release
Shuicheng Lin (2):
drm/xe/sync: Fix user fence leak on alloc failure drm/xe/sync: Cleanup partially initialized sync on parse failure
Shyam Prasad N (1):
cifs: make default value of retrans as zero
Sofia Schneider (1):
ACPI: OSI: Add DMI quirk for Acer Aspire One D255
Sourabh Jain (2):
powerpc/kexec/core: use big-endian types for crash variables powerpc/crash: adjust the elfcorehdr size
Stefan Haberland (2):
s390/dasd: Move quiesce state with pprc swap s390/dasd: Copy detected format information to secondary device
Steven Rostedt (1):
time/jiffies: Mark jiffies_64_to_clock_t() notrace
Sun YangKai (1):
btrfs: hold space_info->lock when clearing periodic reclaim ready
Sungwoo Kim (2):
nvme-pci: Fix slab-out-of-bounds in nvme_dbbuf_set
nvme-pci: Fix race bug in nvme_poll_irqdisable()
Sunil Khatri (2):
drm/amdgpu: add upper bound check on user inputs in signal ioctl drm/amdgpu: add upper bound check on user inputs in wait ioctl
Sven Eckelmann (1):
batman-adv: Avoid double-rtnl_lock ELP metric worker
Takashi Iwai (3):
ALSA: usb-audio: Avoid implicit feedback mode on DIYINHK USB Audio 2.0
ALSA: usb-audio: Check max frame size for implicit feedback mode, too
ALSA: usb-audio: Check endpoint numbers at parsing Scarlett2 mixer interfaces
Tejun Heo (3):
sched_ext: Disable preemption between scx_claim_exit() and kicking helper work
sched_ext: Fix starvation of scx_enable() under fair-class saturation
sched_ext: Fix enqueue_task_scx() truncation of upper enqueue flags
Thomas Fourier (1):
drm/msm: Fix dma_free_attrs() buffer size
Thomas Gleixner (4):
sched/mmcid: Prevent CID stalls due to concurrent forks sched/mmcid: Handle vfork()/CLONE_VM correctly sched/mmcid: Remove pointless preempt guard sched/mmcid: Avoid full tasklist walks
Thomas Hellström (1):
mm: Fix a hmm_range_fault() livelock / starvation problem
Thorsten Blum (1):
ksmbd: Don't log keys in SMB3 signing and encryption key generation
Tom Ryan (1):
io_uring: fix physical SQE bounds check for SQE_MIXED 128-byte ops
Tomas Henzl (1):
scsi: ses: Fix devices attaching to different hosts
Tvrtko Ursulin (2):
drm/amdgpu/userq: Fix reference leak in amdgpu_userq_wait_ioctl drm/ttm: Fix ttm_pool_beneficial_order() return type
Tzung-Bi Shih (1):
remoteproc: mediatek: Unprepare SCP clock during system suspend
Vasily Gorbik (1):
s390/xor: Fix xor_xc_5() inline assembly
Viktor Malik (1):
powerpc, perf: Check that current->mm is alive before getting user callchain
Ville Syrjälä (1):
drm/i915/vrr: Configure VRR timings after enabling TRANS_DDI_FUNC_CTL
Vivian Wang (2):
net: spacemit: Fix error handling in emac_alloc_rx_desc_buffers()
net: spacemit: Fix error handling in emac_tx_mem_map()
Vladimir Riabchun (1):
scsi: qla2xxx: Completely fix fcport double free
Vlastimil Babka (1):
slab: distinguish lock and trylock for sheaf_flush_main()
Vyacheslav Vahnenko (1):
USB: ezcap401 needs USB_QUIRK_NO_BOS to function on 10gbs usb speed
Wang Shuaiwei (1):
scsi: ufs: core: Fix SError in ufshcd_rtc_work() during UFS suspend
Wei Fang (2):
net: enetc: fix incorrect fallback PHY address handling
net: enetc: do not skip setting LaBCR[MDIO_PHYAD_PRTAD] for addr 0
Weiming Shi (2):
net/sched: teql: fix NULL pointer dereference in iptunnel_xmit on TEQL slave xmit
net: add xmit recursion limit to tunnel xmit functions
Wenyuan Li (1):
can: hi311x: hi3110_open(): add check for hi3110_power_enable() return value
Won Jung (1):
scsi: ufs: core: Reset urgent_bkops_lvl to allow runtime PM power mode
Xingui Yang (1):
scsi: hisi_sas: Fix NULL pointer exception during user_scan()
Xu Yang (2):
usb: roles: get usb role switch from parent only for usb-b-connector Revert "tcpm: allow looking for role_sw device in the main node"
Yang Wang (3):
drm/amd/pm: add missing od setting PP_OD_FEATURE_ZERO_FAN_BIT for smu v13 drm/amd/pm: add missing od setting PP_OD_FEATURE_ZERO_FAN_BIT for smu v14 drm/amd/pm: remove invalid gpu_metrics.energy_accumulator on smu v13.0.x
Yasin Lee (2):
iio: proximity: hx9023s: fix assignment order for __counted_by
iio: proximity: hx9023s: Protect against division by zero in set_samp_freq
YiFei Zhu (1):
net: Fix rcu_tasks stall in threaded busypoll
Yuan Tan (1):
netfilter: xt_IDLETIMER: reject rev0 reuse of ALARM timer labels
Zhang Heng (1):
ASoC: amd: yc: Add DMI quirk for ASUS EXPERTBOOK PM1503CDA
Zi Yan (1):
mm/huge_memory: fix a folio_split() race condition with folio_try_get()
Zilin Guan (1):
usb: xhci: Fix memory leak in xhci_disable_slot()
Ziyi Guo (1):
usb: image: mdc800: kill download URB on timeout
matteo.cotifava (2):
ASoC: soc-core: drop delayed_work_pending() check before flush
ASoC: soc-core: flush delayed work before removing DAIs and widgets
sguttula (1):
drm/amdgpu/vcn5: Add SMU dpm interface type
wangshuaiwei (1):
scsi: ufs: core: Fix shift out of bounds when MAXQ=32
zhidao su (1):
sched_ext: Use WRITE_ONCE() for the write side of scx_enable helper pointer
Álvaro Fernández Rojas (1):
net: sfp: improve Huawei MA5671a fixup
Greg Kroah-Hartman
maintainerDocumentation/devicetree/bindings/display/msm/dp-controller.yaml +20 -1
@@ -253,7 +253,6 @@ allOf: enum: # these platforms support 2 streams MST on some interfaces, # others are SST only - - qcom,glymur-dp - qcom,sc8280xp-dp - qcom,x1e80100-dp then:
@@ -310,6 +309,26 @@ allOf: minItems: 6 maxItems: 8 + - if: + properties: + compatible: + contains: + enum: + # these platforms support 2 streams MST on some interfaces, + # others are SST only, but all controllers have 4 ports + - qcom,glymur-dp + then: + properties: + reg: + minItems: 9 + maxItems: 9 + clocks: + minItems: 5 + maxItems: 6 + clocks-names: + minItems: 5 + maxItems: 6 + unevaluatedProperties: false examples:
Documentation/devicetree/bindings/display/msm/qcom,glymur-mdss.yaml +10 -6
@@ -176,13 +176,17 @@ examples: }; }; - displayport-controller@ae90000 { + displayport-controller@af54000 { compatible = "qcom,glymur-dp"; - reg = <0xae90000 0x200>, - <0xae90200 0x200>, - <0xae90400 0x600>, - <0xae91000 0x400>, - <0xae91400 0x400>; + reg = <0xaf54000 0x200>, + <0xaf54200 0x200>, + <0xaf55000 0xc00>, + <0xaf56000 0x400>, + <0xaf57000 0x400>, + <0xaf58000 0x400>, + <0xaf59000 0x400>, + <0xaf5a000 0x600>, + <0xaf5b000 0x600>; interrupt-parent = <&mdss>; interrupts = <12>;
Documentation/devicetree/bindings/display/msm/qcom,sm8750-mdss.yaml +1 -1
@@ -10,7 +10,7 @@ maintainers: - Krzysztof Kozlowski <[email protected]> description: - SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like + SM8750 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like DPU display controller, DSI and DP interfaces etc. $ref: /schemas/display/msm/mdss-common.yaml#
Documentation/virt/kvm/api.rst +8 -0
@@ -8438,6 +8438,14 @@ KVM_X86_QUIRK_IGNORE_GUEST_PAT By default, on Intel platforms, KVM ignores guest software, for example if it does not expose a bochs graphics device (which is known to have had a buggy driver). + +KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM By default, KVM relaxes the consistency + check for GUEST_IA32_DEBUGCTL in vmcs12 + to allow FREEZE_IN_SMM to be set. When + this quirk is disabled, KVM requires this + bit to be cleared. Note that the vmcs02 + bit is still completely controlled by the + host, regardless of the quirk setting. =================================== ============================================ 7.32 KVM_CAP_MAX_VCPU_ID
Makefile +2 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 19 -SUBLEVEL = 8 +SUBLEVEL = 9 EXTRAVERSION = NAME = Baby Opossum Posse
@@ -473,6 +473,7 @@ KBUILD_USERLDFLAGS := $(USERLDFLAGS) export rust_common_flags := --edition=2021 \ -Zbinary_dep_depinfo=y \ -Astable_features \ + -Aunused_features \ -Dnon_ascii_idents \ -Dunsafe_op_in_unsafe_fn \ -Wmissing_docs \
arch/arm64/include/asm/kvm_host.h +3 -0
@@ -760,6 +760,9 @@ struct kvm_host_data {/* Number of debug breakpoints/watchpoints for this CPU (minus 1) */ unsigned int debug_brps;unsigned int debug_wrps; + +/* Last vgic_irq part of the AP list recorded in an LR */ +struct vgic_irq *last_lr_irq; };struct kvm_host_psci_config {
arch/arm64/include/asm/pgtable-prot.h +5 -5
@@ -50,11 +50,11 @@#define _PAGE_DEFAULT (_PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL)) -#define _PAGE_KERNEL (PROT_NORMAL) -#define _PAGE_KERNEL_RO ((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY) -#define _PAGE_KERNEL_ROX ((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY) -#define _PAGE_KERNEL_EXEC (PROT_NORMAL & ~PTE_PXN) -#define _PAGE_KERNEL_EXEC_CONT ((PROT_NORMAL & ~PTE_PXN) | PTE_CONT) +#define _PAGE_KERNEL (PROT_NORMAL | PTE_DIRTY) +#define _PAGE_KERNEL_RO ((PROT_NORMAL & ~PTE_WRITE) | PTE_RDONLY | PTE_DIRTY) +#define _PAGE_KERNEL_ROX ((PROT_NORMAL & ~(PTE_WRITE | PTE_PXN)) | PTE_RDONLY | PTE_DIRTY) +#define _PAGE_KERNEL_EXEC ((PROT_NORMAL & ~PTE_PXN) | PTE_DIRTY) +#define _PAGE_KERNEL_EXEC_CONT ((PROT_NORMAL & ~PTE_PXN) | PTE_CONT | PTE_DIRTY)#define _PAGE_SHARED (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_UXN | PTE_WRITE)#define _PAGE_SHARED_EXEC (_PAGE_DEFAULT | PTE_USER | PTE_RDONLY | PTE_NG | PTE_PXN | PTE_WRITE)
arch/arm64/kernel/cpufeature.c +9 -0
@@ -2336,6 +2336,15 @@ static bool can_trap_icv_dir_el1(const struct arm64_cpu_capabilities *entry,if (this_cpu_has_cap (ARM64_HAS_GICV5_LEGACY ))return true; +/* +* pKVM prevents late onlining of CPUs. This means that whatever +* state the capability is in after deprivilege cannot be affected +* by a new CPU booting -- this is garanteed to be a CPU we have +* already seen, and the cap is therefore unchanged. +*/ +if (system_capabilities_finalized () &&is_protected_kvm_enabled ()) +return cpus_have_final_cap (ARM64_HAS_ICH_HCR_EL2_TDIR ); +if (is_kernel_in_hyp_mode ()) res.a1 =read_sysreg_s (SYS_ICH_VTR_EL2 );else
arch/arm64/kvm/hyp/nvhe/mem_protect.c +1 -1
@@ -516,7 +516,7 @@ static int host_stage2_adjust_range(u64 addr, struct kvm_mem_range *range) granule =kvm_granule_size (level); cur.start =ALIGN_DOWN (addr, granule); cur.end = cur.start + granule; -if (!range_included (&cur, range)) +if (!range_included (&cur, range) && level <KVM_PGTABLE_LAST_LEVEL )continue ; *range = cur;return 0 ;
arch/arm64/kvm/mmu.c +5 -7
@@ -1753,14 +1753,12 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa, }/* -* Both the canonical IPA and fault IPA must be hugepage-aligned to -* ensure we find the right PFN and lay down the mapping in the right -* place. +* Both the canonical IPA and fault IPA must be aligned to the +* mapping size to ensure we find the right PFN and lay down the +* mapping in the right place. */ -if (vma_pagesize ==PMD_SIZE || vma_pagesize ==PUD_SIZE ) { - fault_ipa &= ~(vma_pagesize -1 ); - ipa &= ~(vma_pagesize -1 ); - } + fault_ipa =ALIGN_DOWN (fault_ipa, vma_pagesize); + ipa =ALIGN_DOWN (ipa, vma_pagesize); gfn = ipa >>PAGE_SHIFT ; mte_allowed =kvm_vma_mte_allowed (vma);
arch/arm64/kvm/vgic/vgic-init.c +17 -17
@@ -140,26 +140,9 @@ int kvm_vgic_create(struct kvm *kvm, u32 type) goto out_unlock; } -kvm_for_each_vcpu (i, vcpu, kvm) { - ret =vgic_allocate_private_irqs_locked (vcpu, type); -if (ret) -break ; - } - -if (ret) { -kvm_for_each_vcpu (i, vcpu, kvm) { -struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; -kfree (vgic_cpu->private_irqs); - vgic_cpu->private_irqs =NULL ; - } - - goto out_unlock; - } - kvm->arch.vgic.in_kernel = true; kvm->arch.vgic.vgic_model = type; kvm->arch.vgic.implementation_rev =KVM_VGIC_IMP_REV_LATEST ; - kvm->arch.vgic.vgic_dist_base =VGIC_ADDR_UNDEF ; aa64pfr0 =kvm_read_vm_id_reg (kvm,SYS_ID_AA64PFR0_EL1 ) & ~ID_AA64PFR0_EL1_GIC ;
@@ -176,6 +159,23 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)kvm_set_vm_id_reg (kvm,SYS_ID_AA64PFR0_EL1 , aa64pfr0);kvm_set_vm_id_reg (kvm,SYS_ID_PFR1_EL1 , pfr1); +kvm_for_each_vcpu (i, vcpu, kvm) { + ret =vgic_allocate_private_irqs_locked (vcpu, type); +if (ret) +break ; + } + +if (ret) { +kvm_for_each_vcpu (i, vcpu, kvm) { +struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu; +kfree (vgic_cpu->private_irqs); + vgic_cpu->private_irqs =NULL ; + } + + kvm->arch.vgic.vgic_model =0 ; + goto out_unlock; + } +if (type ==KVM_DEV_TYPE_ARM_VGIC_V3 ) kvm->arch.vgic.nassgicap =system_supports_direct_sgis ();
arch/arm64/kvm/vgic/vgic-v2.c +2 -2
@@ -115,7 +115,7 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu)struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;struct vgic_v2_cpu_if *cpuif = &vgic_cpu->vgic_v2;u32 eoicount =FIELD_GET (GICH_HCR_EOICOUNT , cpuif->vgic_hcr); -struct vgic_irq *irq; +struct vgic_irq *irq = *host_data_ptr (last_lr_irq);DEBUG_SPINLOCK_BUG_ON (!irqs_disabled ());
@@ -123,7 +123,7 @@ void vgic_v2_fold_lr_state(struct kvm_vcpu *vcpu)vgic_v2_fold_lr (vcpu, cpuif->vgic_lr[lr]);/* See the GICv3 equivalent for the EOIcount handling rationale */ -list_for_each_entry (irq, &vgic_cpu->ap_list_head, ap_list) { +list_for_each_entry_continue (irq, &vgic_cpu->ap_list_head, ap_list) {u32 lr;if (!eoicount) {
arch/arm64/kvm/vgic/vgic-v3.c +6 -6
@@ -148,7 +148,7 @@ void vgic_v3_fold_lr_state(struct kvm_vcpu *vcpu)struct vgic_cpu *vgic_cpu = &vcpu->arch.vgic_cpu;struct vgic_v3_cpu_if *cpuif = &vgic_cpu->vgic_v3;u32 eoicount =FIELD_GET (ICH_HCR_EL2_EOIcount, cpuif->vgic_hcr); -struct vgic_irq *irq; +struct vgic_irq *irq = *host_data_ptr (last_lr_irq);DEBUG_SPINLOCK_BUG_ON (!irqs_disabled ());
@@ -158,12 +158,12 @@ void vgic_v3_fold_lr_state(struct kvm_vcpu *vcpu)/* * EOIMode=0: use EOIcount to emulate deactivation. We are * guaranteed to deactivate in reverse order of the activation, so -* just pick one active interrupt after the other in the ap_list, -* and replay the deactivation as if the CPU was doing it. We also -* rely on priority drop to have taken place, and the list to be -* sorted by priority. +* just pick one active interrupt after the other in the tail part +* of the ap_list, past the LRs, and replay the deactivation as if +* the CPU was doing it. We also rely on priority drop to have taken +* place, and the list to be sorted by priority. */ -list_for_each_entry (irq, &vgic_cpu->ap_list_head, ap_list) { +list_for_each_entry_continue (irq, &vgic_cpu->ap_list_head, ap_list) {u64 lr;/*
arch/arm64/kvm/vgic/vgic.c +6 -0
@@ -814,6 +814,9 @@ static void vgic_prune_ap_list(struct kvm_vcpu *vcpu)static inline void vgic_fold_lr_state (struct kvm_vcpu *vcpu) { +if (!*host_data_ptr (last_lr_irq)) +return ; +if (kvm_vgic_global_state.type ==VGIC_V2 )vgic_v2_fold_lr_state (vcpu);else
@@ -960,10 +963,13 @@ static void vgic_flush_lr_state(struct kvm_vcpu *vcpu)if (irqs_outside_lrs (&als))vgic_sort_ap_list (vcpu); + *host_data_ptr (last_lr_irq) =NULL ; +list_for_each_entry (irq, &vgic_cpu->ap_list_head, ap_list) { scoped_guard(raw_spinlock, &irq->irq_lock) {if (likely (vgic_target_oracle (irq) == vcpu)) {vgic_populate_lr (vcpu, irq, count++); + *host_data_ptr (last_lr_irq) = irq; } }
arch/arm64/mm/contpte.c +49 -4
68 lines not on this page · raw message
arch/arm64/mm/mmap.c +5 -1
@@ -91,7 +91,11 @@ pgprot_t vm_get_page_prot(vm_flags_t vm_flags)/* Short circuit GCS to avoid bloating the table. */ if (system_supports_gcs () && (vm_flags &VM_SHADOW_STACK )) { - prot = gcs_page_prot; +/* Honour mprotect(PROT_NONE) on shadow stack mappings */ +if (vm_flags &VM_ACCESS_FLAGS ) + prot = gcs_page_prot; +else + prot =pgprot_val (protection_map[VM_NONE ]); }else { prot =pgprot_val (protection_map[vm_flags & (VM_READ |VM_WRITE |VM_EXEC |VM_SHARED )]);
arch/parisc/include/asm/pgtable.h +1 -1
@@ -85,7 +85,7 @@ extern void __update_cache(pte_t pte);printk ("%s:%d: bad pgd %08lx.\n" , __FILE__, __LINE__, (unsigned long )pgd_val (e)) /* This is the size of the initially mapped kernel memory */ -#if defined(CONFIG_64BIT ) +#if defined(CONFIG_64BIT ) || defined(CONFIG_KALLSYMS )#define KERNEL_INITIAL_ORDER 26/* 1<<26 = 64MB */ #else #define KERNEL_INITIAL_ORDER 25/* 1<<25 = 32MB */
arch/parisc/kernel/head.S +6 -1
@@ -56,6 +56,7 @@ ENTRY(parisc_kernel_start) .import __bss_start,data .import __bss_stop,data + .import __end,data load32 PA(__bss_start),%r3 load32 PA(__bss_stop),%r4
@@ -149,7 +150,11 @@ $cpu_ok: * everything ... it will get remapped correctly later */ ldo 0+_PAGE_KERNEL_RWX(%r0),%r3 /* Hardwired 0 phys addr start */ load32 (1<<(KERNEL_INITIAL_ORDER-PAGE_SHIFT)),%r11 /* PFN count */ - load32 PA(pg0),%r1 + load32 PA(_end),%r1 + SHRREG %r1,PAGE_SHIFT,%r1 /* %r1 is PFN count for _end symbol */ + cmpb,<<,n %r11,%r1,1f + copy %r1,%r11 /* %r1 PFN count smaller than %r11 */ +1: load32 PA(pg0),%r1 $pgt_fill_loop: STREGM %r3,ASM_PTE_ENTRY_SIZE(%r1)
arch/parisc/kernel/setup.c +12 -8
@@ -120,14 +120,6 @@ void __init setup_arch(char **cmdline_p)#endif printk (KERN_CONT ".\n" ); -/* -* Check if initial kernel page mappings are sufficient. -* panic early if not, else we may access kernel functions -* and variables which can't be reached. -*/ -if (__pa ((unsigned long ) &_end) >=KERNEL_INITIAL_SIZE ) -panic ("KERNEL_INITIAL_ORDER too small!" ); -#ifdef CONFIG_64BIT if (parisc_narrow_firmware) {printk (KERN_INFO "Kernel is using PDC in 32-bit mode.\n" );
@@ -279,6 +271,18 @@ void __init start_parisc(void)int ret, cpunum;struct pdc_coproc_cfg coproc_cfg; +/* +* Check if initial kernel page mapping is sufficient. +* Print warning if not, because we may access kernel functions and +* variables which can't be reached yet through the initial mappings. +* Note that the panic() and printk() functions are not functional +* yet, so we need to use direct iodc() firmware calls instead. +*/ +const char warn1[] ="CRITICAL: Kernel may crash because " +"KERNEL_INITIAL_ORDER is too small.\n" ; +if (__pa ((unsigned long ) &_end) >=KERNEL_INITIAL_SIZE ) +pdc_iodc_print (warn1,sizeof (warn1) -1 ); +/* check QEMU/SeaBIOS marker in PAGE0 */ running_on_qemu = (memcmp (&PAGE0 ->pad0,"SeaBIOS" ,8 ) ==0 );
arch/powerpc/include/asm/uaccess.h +1 -1
@@ -253,7 +253,7 @@ __gus_failed: \".section .fixup,\"ax\"\n" \"4: li %0,%3\n" \" li %1,0\n" \ -" li %1+1,0\n" \ +" li %L1,0\n" \" b 3b\n" \".previous\n" \EX_TABLE (1b ,4b ) \
arch/powerpc/kexec/core.c +9 -8
@@ -23,6 +23,7 @@#include <asm/firmware.h> #define cpu_to_be_ulong __PASTE(cpu_to_be, BITS_PER_LONG) +#define __be_word __PASTE(__be, BITS_PER_LONG)#ifdef CONFIG_CRASH_DUMP void machine_crash_shutdown (struct pt_regs *regs)
@@ -146,25 +147,25 @@ int __init overlaps_crashkernel(unsigned long start, unsigned long size) }/* Values we need to export to the second kernel via the device tree. */ -static phys_addr_t crashk_base; -static phys_addr_t crashk_size; -static unsigned long long mem_limit; +static __be_word crashk_base; +static __be_word crashk_size; +static __be_word mem_limit;static struct property crashk_base_prop = { .name ="linux,crashkernel-base" , - .length =sizeof (phys_addr_t), + .length =sizeof (__be_word), .value = &crashk_base };static struct property crashk_size_prop = { .name ="linux,crashkernel-size" , - .length =sizeof (phys_addr_t), + .length =sizeof (__be_word), .value = &crashk_size, };static struct property memory_limit_prop = { .name ="linux,memory-limit" , - .length =sizeof (unsigned long long ), + .length =sizeof (__be_word), .value = &mem_limit, };
@@ -193,11 +194,11 @@ static void __init export_crashk_values(struct device_node *node) }#endif /* CONFIG_CRASH_RESERVE */ -static phys_addr_t kernel_end; +static __be_word kernel_end;static struct property kernel_end_prop = { .name ="linux,kernel-end" , - .length =sizeof (phys_addr_t), + .length =sizeof (__be_word), .value = &kernel_end, };
arch/powerpc/kexec/file_load_64.c +13 -1
@@ -450,6 +450,11 @@ static int load_elfcorehdr_segment(struct kimage *image, struct kexec_buf *kbuf) kbuf->buffer = headers; kbuf->mem =KEXEC_BUF_MEM_UNKNOWN ; kbuf->bufsz = headers_sz; + +/* +* Account for extra space required to accommodate additional memory +* ranges in elfcorehdr due to memory hotplug events. +*/ kbuf->memsz = headers_sz +kdump_extra_elfcorehdr_size (cmem); kbuf->top_down = false;
@@ -460,7 +465,14 @@ static int load_elfcorehdr_segment(struct kimage *image, struct kexec_buf *kbuf) } image->elf_load_addr = kbuf->mem; - image->elf_headers_sz = headers_sz; + +/* +* If CONFIG_CRASH_HOTPLUG is enabled, the elfcorehdr kexec segment +* memsz can be larger than bufsz. Always initialize elf_headers_sz +* with memsz. This ensures the correct size is reserved for elfcorehdr +* memory in the FDT prepared for kdump. +*/ + image->elf_headers_sz = kbuf->memsz; image->elf_headers = headers; out:kfree (cmem);
arch/powerpc/net/bpf_jit_comp.c +20 -10
@@ -437,7 +437,7 @@ void bpf_jit_free(struct bpf_prog *fp)bool bpf_jit_supports_kfunc_call (void ) { -return true; +return IS_ENABLED (CONFIG_PPC64 ); }bool bpf_jit_supports_arena (void )
@@ -722,9 +722,9 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_im* retval_off [ return value ] * [ reg argN ] * [ ... ] -* regs_off [ reg_arg1 ] prog ctx context -* nregs_off [ args count ] -* ip_off [ traced function ] +* regs_off [ reg_arg1 ] prog_ctx +* nregs_off [ args count ] ((u64 *)prog_ctx)[-1] +* ip_off [ traced function ] ((u64 *)prog_ctx)[-2] * [ ... ] * run_ctx_off [ bpf_tramp_run_ctx ] * [ reg argN ]
@@ -824,7 +824,7 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_imbpf_trampoline_save_args (image, ctx, func_frame_offset, nr_regs, regs_off); -/* Save our return address */ +/* Save our LR/return address */ EMIT (PPC_RAW_MFLR (_R3));if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE ))EMIT (PPC_RAW_STL (_R3, _R1, alt_lr_off));
@@ -832,24 +832,34 @@ static int __arch_prepare_bpf_trampoline(struct bpf_tramp_image *im, void *rw_imEMIT (PPC_RAW_STL (_R3, _R1, bpf_frame_size +PPC_LR_STKOFF ));/* -* Save ip address of the traced function. -* We could recover this from LR, but we will need to address for OOL trampoline, -* and optional GEP area. +* Derive IP address of the traced function. +* In case of CONFIG_PPC_FTRACE_OUT_OF_LINE or BPF program, LR points to the instruction +* after the 'bl' instruction in the OOL stub. Refer to ftrace_init_ool_stub() and +* bpf_arch_text_poke() for OOL stub of kernel functions and bpf programs respectively. +* Relevant stub sequence: +* +* bl <tramp> +* LR (R3) => mtlr r0 +* b <func_addr+4> +* +* Recover kernel function/bpf program address from the unconditional +* branch instruction at the end of OOL stub. */ if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE ) || flags &BPF_TRAMP_F_IP_ARG ) {EMIT (PPC_RAW_LWZ (_R4, _R3,4 ));EMIT (PPC_RAW_SLWI (_R4, _R4,6 ));EMIT (PPC_RAW_SRAWI (_R4, _R4,6 ));EMIT (PPC_RAW_ADD (_R3, _R3, _R4)); -EMIT (PPC_RAW_ADDI (_R3, _R3,4 )); }if (flags &BPF_TRAMP_F_IP_ARG )EMIT (PPC_RAW_STL (_R3, _R1, ip_off)); -if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE )) +if (IS_ENABLED (CONFIG_PPC_FTRACE_OUT_OF_LINE )) {/* Fake our LR for unwind */ +EMIT (PPC_RAW_ADDI (_R3, _R3,4 ));EMIT (PPC_RAW_STL (_R3, _R1, bpf_frame_size +PPC_LR_STKOFF )); + }/* Save function arg count -- see bpf_get_func_arg_cnt() */ EMIT (PPC_RAW_LI (_R3, nr_regs));
arch/powerpc/net/bpf_jit_comp64.c +93 -8
119 lines not on this page · raw message
arch/powerpc/perf/callchain.c +5 -0
@@ -103,6 +103,11 @@ perf_callchain_kernel(struct perf_callchain_entry_ctx *entry, struct pt_regs *revoid perf_callchain_user (struct perf_callchain_entry_ctx *entry,struct pt_regs *regs) { +perf_callchain_store (entry,perf_arch_instruction_pointer (regs)); + +if (!current->mm) +return ; +if (!is_32bit_task ())perf_callchain_user_64 (entry, regs);else
arch/powerpc/perf/callchain_32.c +0 -1
@@ -142,7 +142,6 @@ void perf_callchain_user_32(struct perf_callchain_entry_ctx *entry, next_ip =perf_arch_instruction_pointer (regs); lr = regs->link; sp = regs->gpr[1 ]; -perf_callchain_store (entry, next_ip);while (entry->nr < entry->max_stack) { fp = (unsigned int __user *) (unsigned long ) sp;
arch/powerpc/perf/callchain_64.c +0 -1
@@ -77,7 +77,6 @@ void perf_callchain_user_64(struct perf_callchain_entry_ctx *entry, next_ip =perf_arch_instruction_pointer (regs); lr = regs->link; sp = regs->gpr[1 ]; -perf_callchain_store (entry, next_ip);while (entry->nr < entry->max_stack) { fp = (unsigned long __user *) sp;
arch/powerpc/platforms/83xx/km83xx.c +2 -2
@@ -155,8 +155,8 @@ machine_device_initcall(mpc83xx_km, mpc83xx_declare_of_platform_devices);/* list of the supported boards */ static char *board[]__initdata = { -"Keymile,KMETER1" , -"Keymile,kmpbec8321" , +"keymile,KMETER1" , +"keymile,kmpbec8321" ,NULL };
arch/powerpc/platforms/pseries/msi.c +1 -1
@@ -605,7 +605,7 @@ static int pseries_irq_domain_alloc(struct irq_domain *domain, unsigned int virq &pseries_msi_irq_chip, pseries_dev); } - pseries_dev->msi_used++; + pseries_dev->msi_used += nr_irqs;return 0 ; out:
arch/s390/include/asm/processor.h +1 -1
@@ -158,7 +158,7 @@ static __always_inline void __stackleak_poison(unsigned long erase_low," j 4f\n" "3: mvc 8(1,%[addr]),0(%[addr])\n" "4:" - : [addr] "+&a" (erase_low), [count] "+&d" (count), [tmp] "=&a" (tmp) + : [addr] "+&a" (erase_low), [count] "+&a" (count), [tmp] "=&a" (tmp) : [poison] "d" (poison) : "memory", "cc" );
arch/s390/lib/xor.c +2 -3
@@ -28,8 +28,8 @@ static void xor_xc_2(unsigned long bytes, unsigned long * __restrict p1," j 3f\n" "2: xc 0(1,%1),0(%2)\n" "3:" - : : "d" (bytes), "a" (p1), "a" (p2) - : "0", "cc", "memory"); + : "+d" (bytes), "+a" (p1), "+a" (p2) + : : "0", "cc", "memory"); } static void xor_xc_3(unsigned long bytes, unsigned long * __restrict p1,
@@ -96,7 +96,6 @@ static void xor_xc_5(unsigned long bytes, unsigned long * __restrict p1, const unsigned long * __restrict p5) { asmvolatile ( -" larl 1,2f\n" " aghi %0,-1\n" " jm 6f\n" " srlg 0,%0,8\n"
arch/s390/mm/pfault.c +2 -2
@@ -62,7 +62,7 @@ int __pfault_init(void)"0: nopr %%r7\n" EX_TABLE (0b ,0b ) : [rc] "+d" (rc) - : [refbk] "a" (&pfault_init_refbk), "m" (pfault_init_refbk) + : [refbk] "a" (virt_to_phys(&pfault_init_refbk)), "m" (pfault_init_refbk) : "cc"); return rc; }
@@ -84,7 +84,7 @@ void __pfault_fini(void)"0: nopr %%r7\n" EX_TABLE (0b ,0b ) : - : [refbk] "a" (&pfault_fini_refbk), "m" (pfault_fini_refbk) + : [refbk] "a" (virt_to_phys(&pfault_fini_refbk)), "m" (pfault_fini_refbk) : "cc"); }
arch/x86/include/asm/kvm_host.h +2 -1
@@ -2470,7 +2470,8 @@ int memslot_rmap_alloc(struct kvm_memory_slot *slot, unsigned long npages); KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS | \ KVM_X86_QUIRK_SLOT_ZAP_ALL | \ KVM_X86_QUIRK_STUFF_FEATURE_MSRS | \ - KVM_X86_QUIRK_IGNORE_GUEST_PAT) + KVM_X86_QUIRK_IGNORE_GUEST_PAT | \ + KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM)#define KVM_X86_CONDITIONAL_QUIRKS \ (KVM_X86_QUIRK_CD_NW_CLEARED | \
arch/x86/include/uapi/asm/kvm.h +1 -0
@@ -476,6 +476,7 @@ struct kvm_sync_regs {#define KVM_X86_QUIRK_SLOT_ZAP_ALL (1 << 7)#define KVM_X86_QUIRK_STUFF_FEATURE_MSRS (1 << 8)#define KVM_X86_QUIRK_IGNORE_GUEST_PAT (1 << 9) +#define KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM (1 << 10)#define KVM_STATE_NESTED_FORMAT_VMX 0#define KVM_STATE_NESTED_FORMAT_SVM 1
arch/x86/kernel/apic/apic.c +6 -0
@@ -1894,6 +1894,7 @@ void __init check_x2apic(void)static inline void try_to_enable_x2apic (int remap_mode) { }static inline void __x2apic_enable (void ) { } +static inline void __x2apic_disable (void ) { }#endif /* !CONFIG_X86_X2APIC */ void __init enable_IR_x2apic (void )
@@ -2456,6 +2457,11 @@ static void lapic_resume(void *data)if (x2apic_mode) {__x2apic_enable (); }else { +if (x2apic_enabled ()) { +pr_warn_once ("x2apic: re-enabled by firmware during resume. Disabling\n" ); +__x2apic_disable (); + } +/* * Make sure the APICBASE points to the right address *
arch/x86/kvm/svm/avic.c +6 -3
@@ -189,12 +189,12 @@ static void avic_activate_vmcb(struct vcpu_svm *svm)struct kvm_vcpu *vcpu = &svm->vcpu; vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK |X2APIC_MODE_MASK ); - vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK ; vmcb->control.avic_physical_id |=avic_get_max_physical_id (vcpu); - vmcb->control.int_ctl |=AVIC_ENABLE_MASK ; +svm_clr_intercept (svm,INTERCEPT_CR8_WRITE ); +/* * Note: KVM supports hybrid-AVIC mode, where KVM emulates x2APIC MSR * accesses, while interrupt injection to a running vCPU can be
@@ -226,6 +226,9 @@ static void avic_deactivate_vmcb(struct vcpu_svm *svm) vmcb->control.int_ctl &= ~(AVIC_ENABLE_MASK |X2APIC_MODE_MASK ); vmcb->control.avic_physical_id &= ~AVIC_PHYSICAL_MAX_INDEX_MASK ; +if (!sev_es_guest (svm->vcpu.kvm)) +svm_set_intercept (svm,INTERCEPT_CR8_WRITE ); +/* * If running nested and the guest uses its own MSR bitmap, there * is no need to update L0's msr bitmap
@@ -368,7 +371,7 @@ void avic_init_vmcb(struct vcpu_svm *svm, struct vmcb *vmcb) vmcb->control.avic_physical_id =__sme_set (__pa (kvm_svm->avic_physical_id_table)); vmcb->control.avic_vapic_bar =APIC_DEFAULT_PHYS_BASE ; -if (kvm_apicv_activated (svm->vcpu.kvm)) +if (kvm_vcpu_apicv_active (&svm->vcpu))avic_activate_vmcb (svm);else avic_deactivate_vmcb (svm);
arch/x86/kvm/svm/svm.c +5 -4
@@ -1032,8 +1032,7 @@ static void init_vmcb(struct kvm_vcpu *vcpu, bool init_event)svm_set_intercept (svm,INTERCEPT_CR0_WRITE );svm_set_intercept (svm,INTERCEPT_CR3_WRITE );svm_set_intercept (svm,INTERCEPT_CR4_WRITE ); -if (!kvm_vcpu_apicv_active (vcpu)) -svm_set_intercept (svm,INTERCEPT_CR8_WRITE ); +svm_set_intercept (svm,INTERCEPT_CR8_WRITE );set_dr_intercepts (svm);
@@ -1141,7 +1140,7 @@ static void init_vmcb(struct kvm_vcpu *vcpu, bool init_event)svm_clr_intercept (svm,INTERCEPT_PAUSE ); } -if (kvm_vcpu_apicv_active (vcpu)) +if (enable_apicv &&irqchip_in_kernel (vcpu->kvm))avic_init_vmcb (svm, vmcb);if (vnmi)
@@ -2603,9 +2602,11 @@ static int dr_interception(struct kvm_vcpu *vcpu)static int cr8_write_interception (struct kvm_vcpu *vcpu) { +u8 cr8_prev =kvm_get_cr8 (vcpu);int r; -u8 cr8_prev =kvm_get_cr8 (vcpu); +WARN_ON_ONCE (kvm_vcpu_apicv_active (vcpu)); +/* instruction emulation calls kvm_set_cr8() */ r =cr_interception (vcpu);if (lapic_in_kernel (vcpu))
arch/x86/kvm/vmx/nested.c +18 -4
@@ -3292,10 +3292,24 @@ static int nested_vmx_check_guest_state(struct kvm_vcpu *vcpu,if (CC (vmcs12->guest_cr4 &X86_CR4_CET && !(vmcs12->guest_cr0 &X86_CR0_WP )))return -EINVAL ; -if ((vmcs12->vm_entry_controls &VM_ENTRY_LOAD_DEBUG_CONTROLS ) && - (CC (!kvm_dr7_valid (vmcs12->guest_dr7)) || -CC (!vmx_is_valid_debugctl (vcpu, vmcs12->guest_ia32_debugctl, false)))) -return -EINVAL ; +if (vmcs12->vm_entry_controls &VM_ENTRY_LOAD_DEBUG_CONTROLS ) { +u64 debugctl = vmcs12->guest_ia32_debugctl; + +/* +* FREEZE_IN_SMM is not virtualized, but allow L1 to set it in +* vmcs12's DEBUGCTL under a quirk for backwards compatibility. +* Note that the quirk only relaxes the consistency check. The +* vmcc02 bit is still under the control of the host. In +* particular, if a host administrator decides to clear the bit, +* then L1 has no say in the matter. +*/ +if (kvm_check_has_quirk (vcpu->kvm,KVM_X86_QUIRK_VMCS12_ALLOW_FREEZE_IN_SMM )) + debugctl &= ~DEBUGCTLMSR_FREEZE_IN_SMM ; + +if (CC (!kvm_dr7_valid (vmcs12->guest_dr7)) || +CC (!vmx_is_valid_debugctl (vcpu, debugctl, false))) +return -EINVAL ; + }if ((vmcs12->vm_entry_controls &VM_ENTRY_LOAD_IA32_PAT ) &&CC (!kvm_pat_valid (vmcs12->guest_ia32_pat)))
drivers/accel/amdxdna/aie2_ctx.c +2 -12
@@ -165,7 +165,6 @@ aie2_sched_notify(struct amdxdna_sched_job *job)trace_xdna_job (&job->base, job->hwctx->name,"signaled fence" , job->seq); -amdxdna_pm_suspend_put (job->hwctx->client->xdna); job->hwctx->priv->completed++;dma_fence_signal (fence);
@@ -290,19 +289,11 @@ aie2_sched_job_run(struct drm_sched_job *sched_job)struct dma_fence *fence;int ret; - ret =amdxdna_pm_resume_get (hwctx->client->xdna); -if (ret) +if (!hwctx->priv->mbox_chann)return NULL ; -if (!hwctx->priv->mbox_chann) { -amdxdna_pm_suspend_put (hwctx->client->xdna); -return NULL ; - } - -if (!mmget_not_zero (job->mm)) { -amdxdna_pm_suspend_put (hwctx->client->xdna); +if (!mmget_not_zero (job->mm))return ERR_PTR (-ESRCH ); - }kref_get (&job->refcnt); fence =dma_fence_get (job->fence);
@@ -333,7 +324,6 @@ aie2_sched_job_run(struct drm_sched_job *sched_job) out:if (ret) { -amdxdna_pm_suspend_put (hwctx->client->xdna);dma_fence_put (job->fence);aie2_job_put (job);mmput (job->mm);
drivers/accel/amdxdna/amdxdna_ctx.c +10 -0
@@ -17,6 +17,7 @@#include "amdxdna_ctx.h" #include "amdxdna_gem.h" #include "amdxdna_pci_drv.h" +#include "amdxdna_pm.h" #define MAX_HWCTX_ID 255#define MAX_ARG_COUNT 4095
@@ -445,6 +446,7 @@ amdxdna_arg_bos_lookup(struct amdxdna_client *client,void amdxdna_sched_job_cleanup (struct amdxdna_sched_job *job) {trace_amdxdna_debug_point (job->hwctx->name, job->seq,"job release" ); +amdxdna_pm_suspend_put (job->hwctx->client->xdna);amdxdna_arg_bos_put (job);amdxdna_gem_put_obj (job->cmd_bo);dma_fence_put (job->fence);
@@ -482,6 +484,12 @@ int amdxdna_cmd_submit(struct amdxdna_client *client, goto cmd_put; } + ret =amdxdna_pm_resume_get (xdna); +if (ret) { +XDNA_ERR (xdna,"Resume failed, ret %d" , ret); + goto put_bos; + } + idx =srcu_read_lock (&client->hwctx_srcu); hwctx =xa_load (&client->hwctx_xa, hwctx_hdl);if (!hwctx) {
@@ -522,6 +530,8 @@ int amdxdna_cmd_submit(struct amdxdna_client *client,dma_fence_put (job->fence); unlock_srcu:srcu_read_unlock (&client->hwctx_srcu, idx); +amdxdna_pm_suspend_put (xdna); +put_bos:amdxdna_arg_bos_put (job); cmd_put:amdxdna_gem_put_obj (job->cmd_bo);
drivers/acpi/osi.c +13 -0
@@ -389,6 +389,19 @@ static const struct dmi_system_id acpi_osi_dmi_table[] __initconst = { }, }, +/* +* The screen backlight turns off during udev device creation +* when returning true for _OSI("Windows 2009") +*/ + { + .callback = dmi_disable_osi_win7, + .ident = "Acer Aspire One D255", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "Acer"), + DMI_MATCH(DMI_PRODUCT_NAME, "AOD255"), + }, + }, + /* * The wireless hotkey does not work on those machines when * returning true for _OSI("Windows 2012")
drivers/acpi/osl.c +1 -1
@@ -1681,7 +1681,7 @@ acpi_status __init acpi_os_initialize(void)* Use acpi_os_map_generic_address to pre-map the reset * register if it's in system memory. */ -void *rv; +void __iomem *rv; rv =acpi_os_map_generic_address (&acpi_gbl_FADT.reset_register); pr_debug("%s: Reset register mapping %s\n", __func__,
drivers/acpi/sleep.c +8 -0
@@ -386,6 +386,14 @@ static const struct dmi_system_id acpisleep_dmi_table[] __initconst = { DMI_MATCH(DMI_PRODUCT_NAME, "80E1"), }, }, + { + .callback = init_nvs_save_s3, + .ident = "Lenovo G70-35", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_MATCH(DMI_PRODUCT_NAME, "80Q5"), + }, + },/* * ThinkPad X1 Tablet(2016) cannot do suspend-to-idle using * the Low Power S0 Idle firmware interface (see
drivers/android/binder/page_range.rs +63 -20
118 lines not on this page · raw message
drivers/android/binder/process.rs +2 -1
@@ -1289,7 +1289,8 @@ pub(crate) fn clear_death(&self, reader: &mut UserSliceReader, thread: &Thread) }pub (crate )fn dead_binder_done (&self, cookie:u64 , thread: &Thread ) { -if let Some (death) = self.inner.lock ().pull_delivered_death (cookie) { +let death = self.inner.lock ().pull_delivered_death (cookie); +if let Some (death) = death { death.set_notification_done (thread); } }
drivers/android/binder/range_alloc/array.rs +33 -2
@@ -118,7 +118,7 @@ pub(crate) fn reserve_new( size: usize, is_oneway: bool, pid: Pid, - ) -> Result<usize> { + ) -> Result<(usize, bool)> {// Compute new value of free_oneway_space, which is set only on success. let new_oneway_space =if is_oneway {match self.free_oneway_space.checked_sub (size) {
@@ -146,7 +146,38 @@ pub(crate) fn reserve_new( .ok() .unwrap (); -Ok (insert_at_offset) +// Start detecting spammers once we have less than 20% +// of async space left (which is less than 10% of total +// buffer size). +// +// (This will short-circuit, so `low_oneway_space` is +// only called when necessary.) +let oneway_spam_detected = + is_oneway && new_oneway_space < self.size /10 && self.low_oneway_space (pid); + +Ok ((insert_at_offset, oneway_spam_detected)) + } + +/// Find the amount and size of buffers allocated by the current caller. +/// +/// The idea is that once we cross the threshold, whoever is responsible +/// for the low async space is likely to try to send another async transaction, +/// and at some point we'll catch them in the act. This is more efficient +/// than keeping a map per pid. +fn low_oneway_space (&self, calling_pid:Pid ) ->bool { +let mut total_alloc_size =0 ; +let mut num_buffers =0 ; + +// Warn if this pid has more than 50 transactions, or more than 50% of +// async space (which is 25% of total buffer size). Oneway spam is only +// detected when the threshold is exceeded. +for rangein &self.ranges { +if range.state.is_oneway () && range.state.pid () == calling_pid { + total_alloc_size += range.size; + num_buffers +=1 ; + } + } + num_buffers >50 || total_alloc_size > self.size /4 }pub (crate )fn reservation_abort (&mut self, offset:usize ) ->Result <FreedRange > {
drivers/android/binder/range_alloc/mod.rs +2 -2
@@ -188,11 +188,11 @@ pub(crate) fn reserve_new(&mut self, mut args: ReserveNewArgs<T>) -> Result<Rese self.reserve_new (args) } Impl::Array(array) => { - let offset = + let (offset, oneway_spam_detected) = array.reserve_new(args.debug_id, args.size, args.is_oneway, args.pid)?; Ok(ReserveNew::Success(ReserveNewSuccess { offset, - oneway_spam_detected: false, + oneway_spam_detected, _empty_array_alloc: args.empty_array_alloc, _new_tree_alloc: args.new_tree_alloc, _tree_alloc: args.tree_alloc,
drivers/android/binder/range_alloc/tree.rs +9 -9
@@ -164,15 +164,6 @@ pub(crate) fn reserve_new( self.free_oneway_space }; -// Start detecting spammers once we have less than 20% -// of async space left (which is less than 10% of total -// buffer size). -// -// (This will short-circut, so `low_oneway_space` is -// only called when necessary.) -let oneway_spam_detected = - is_oneway && new_oneway_space < self.size /10 && self.low_oneway_space (pid); -let (found_size, found_off, tree_node, free_tree_node) =match self.find_best_match (size) {None => {pr_warn! ("ENOSPC from range_alloc.reserve_new - size: {}" , size);
@@ -203,6 +194,15 @@ pub(crate) fn reserve_new( self.free_tree.insert (free_tree_node); } +// Start detecting spammers once we have less than 20% +// of async space left (which is less than 10% of total +// buffer size). +// +// (This will short-circuit, so `low_oneway_space` is +// only called when necessary.) +let oneway_spam_detected = + is_oneway && new_oneway_space < self.size /10 && self.low_oneway_space (pid); +Ok ((found_off, oneway_spam_detected)) }
drivers/android/binder/thread.rs +6 -11
@@ -1018,12 +1018,9 @@ pub(crate) fn copy_transaction_data(// Copy offsets if there are any. if offsets_size >0 { - { -let mut reader = -UserSlice ::new (UserPtr ::from_addr (trd_data_ptr.offsetsas _ ), offsets_size) - .reader (); - alloc.copy_into (&mut reader, aligned_data_size, offsets_size)?; - } +let mut offsets_reader = +UserSlice ::new (UserPtr ::from_addr (trd_data_ptr.offsetsas _ ), offsets_size) + .reader ();let offsets_start = aligned_data_size;let offsets_end = aligned_data_size + offsets_size;
@@ -1044,11 +1041,9 @@ pub(crate) fn copy_transaction_data( .step_by(size_of::<u64>()) .enumerate() { -let offset:usize = view - .alloc - .read ::<u64 >(index_offset)? - .try_into () - .map_err (|_|EINVAL )?; +let offset = offsets_reader.read ::<u64 >()?; + view.alloc.write (index_offset, &offset)?; +let offset:usize = offset.try_into ().map_err (|_|EINVAL )?;if offset < end_of_previous_object || !is_aligned (offset,size_of ::<u32 >()) {pr_warn! ("Got transaction with invalid offset." );
drivers/ata/libata-core.c +2 -0
@@ -4186,6 +4186,7 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = { ATA_QUIRK_FIRMWARE_WARN },/* Seagate disks with LPM issues */ + { "ST1000DM010-2EP102", NULL, ATA_QUIRK_NOLPM }, { "ST2000DM008-2FR102", NULL, ATA_QUIRK_NOLPM },/* drives which fail FPDMA_AA activation (some may freeze afterwards)
@@ -4228,6 +4229,7 @@ static const struct ata_dev_quirks_entry __ata_dev_quirks[] = {/* Devices that do not need bridging limits applied */ { "MTRON MSP-SATA*", NULL, ATA_QUIRK_BRIDGE_OK }, { "BUFFALO HD-QSU2/R5", NULL, ATA_QUIRK_BRIDGE_OK }, + { "QEMU HARDDISK", "2.5+", ATA_QUIRK_BRIDGE_OK },/* Devices which aren't very happy with higher link speeds */ { "WD My Book", NULL, ATA_QUIRK_1_5_GBPS },
drivers/base/property.c +13 -14
@@ -797,7 +797,18 @@ struct fwnode_handle * fwnode_get_next_child_node(const struct fwnode_handle *fwnode, struct fwnode_handle *child) { - return fwnode_call_ptr_op(fwnode, get_next_child_node, child); + struct fwnode_handle *next; + +if (IS_ERR_OR_NULL (fwnode)) +return NULL ; + +/* Try to find a child in primary fwnode */ + next =fwnode_call_ptr_op (fwnode, get_next_child_node, child); +if (next) +return next; + +/* When no more children in primary, continue with secondary */ +return fwnode_call_ptr_op (fwnode->secondary, get_next_child_node, child); }EXPORT_SYMBOL_GPL (fwnode_get_next_child_node);
@@ -841,19 +852,7 @@ EXPORT_SYMBOL_GPL(fwnode_get_next_available_child_node);struct fwnode_handle *device_get_next_child_node (const struct device *dev,struct fwnode_handle *child) { -const struct fwnode_handle *fwnode =dev_fwnode (dev); -struct fwnode_handle *next; - -if (IS_ERR_OR_NULL (fwnode)) -return NULL ; - -/* Try to find a child in primary fwnode */ - next =fwnode_get_next_child_node (fwnode, child); -if (next) -return next; - -/* When no more children in primary, continue with secondary */ -return fwnode_get_next_child_node (fwnode->secondary, child); +return fwnode_get_next_child_node (dev_fwnode (dev), child); }EXPORT_SYMBOL_GPL (device_get_next_child_node);
drivers/block/ublk_drv.c +9 -3
@@ -3534,15 +3534,22 @@ static int ublk_ctrl_get_features(const struct ublksrv_ctrl_cmd *header)return 0 ; } -static void ublk_ctrl_set_size (struct ublk_device *ub,const struct ublksrv_ctrl_cmd *header) +static int ublk_ctrl_set_size (struct ublk_device *ub,const struct ublksrv_ctrl_cmd *header) {struct ublk_param_basic *p = &ub->params.basic;u64 new_size = header->data[0 ]; +int ret =0 ;mutex_lock (&ub->mutex); +if (!ub->ub_disk) { + ret = -ENODEV ; + goto out; + } p->dev_sectors = new_size;set_capacity_and_notify (ub->ub_disk, p->dev_sectors); +out:mutex_unlock (&ub->mutex); +return ret; }struct count_busy {
@@ -3853,8 +3860,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd, ret =ublk_ctrl_end_recovery (ub, &header);break ;case UBLK_CMD_UPDATE_SIZE : -ublk_ctrl_set_size (ub, &header); - ret =0 ; + ret =ublk_ctrl_set_size (ub, &header);break ;case UBLK_CMD_QUIESCE_DEV : ret =ublk_ctrl_quiesce_dev (ub, &header);
drivers/char/ipmi/ipmi_si_intf.c +24 -13
@@ -809,6 +809,12 @@ static enum si_sm_result smi_event_handler(struct smi_info *smi_info,*/ return_hosed_msg (smi_info,IPMI_BUS_ERR ); } +if (smi_info->waiting_msg !=NULL ) { +/* Also handle if there was a message waiting. */ + smi_info->curr_msg = smi_info->waiting_msg; + smi_info->waiting_msg =NULL ; +return_hosed_msg (smi_info,IPMI_BUS_ERR ); + }smi_mod_timer (smi_info, jiffies +SI_TIMEOUT_HOSED ); goto out; }
@@ -918,9 +924,14 @@ static int sender(void *send_info, struct ipmi_smi_msg *msg) {struct smi_info *smi_info = send_info;unsigned long flags; +int rv =IPMI_CC_NO_ERROR ;debug_timestamp (smi_info,"Enqueue" ); +/* +* Check here for run to completion mode. A check under lock is +* later. +*/ if (smi_info->si_state ==SI_HOSED )return IPMI_BUS_ERR ;
@@ -934,18 +945,15 @@ static int sender(void *send_info, struct ipmi_smi_msg *msg) }spin_lock_irqsave (&smi_info->si_lock, flags); -/* -* The following two lines don't need to be under the lock for -* the lock's sake, but they do need SMP memory barriers to -* avoid getting things out of order. We are already claiming -* the lock, anyway, so just do it under the lock to avoid the -* ordering problem. -*/ -BUG_ON (smi_info->waiting_msg); - smi_info->waiting_msg = msg; -check_start_timer_thread (smi_info); +if (smi_info->si_state ==SI_HOSED ) { + rv =IPMI_BUS_ERR ; + }else { +BUG_ON (smi_info->waiting_msg); + smi_info->waiting_msg = msg; +check_start_timer_thread (smi_info); + }spin_unlock_irqrestore (&smi_info->si_lock, flags); -return IPMI_CC_NO_ERROR ; +return rv; }static void set_run_to_completion (void *send_info,bool i_run_to_completion)
@@ -1113,7 +1121,9 @@ static void smi_timeout(struct timer_list *t) * SI_USEC_PER_JIFFY); smi_result =smi_event_handler (smi_info, time_diff); -if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) { +if (smi_info->si_state ==SI_HOSED ) { + timeout = jiffies +SI_TIMEOUT_HOSED ; + }else if ((smi_info->io.irq) && (!smi_info->interrupt_disabled)) {/* Running with interrupts, only do long timeouts. */ timeout = jiffies +SI_TIMEOUT_JIFFIES ;smi_inc_stat (smi_info, long_timeouts);
@@ -2226,7 +2236,8 @@ static void wait_msg_processed(struct smi_info *smi_info)unsigned long jiffies_now;long time_diff; -while (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL )) { +while (smi_info->si_state !=SI_HOSED && + (smi_info->curr_msg || (smi_info->si_state !=SI_NORMAL ))) { jiffies_now = jiffies; time_diff = (((long )jiffies_now - (long )smi_info->last_timeout_jiffies) *SI_USEC_PER_JIFFY );
drivers/cpufreq/intel_pstate.c +3 -1
@@ -1647,8 +1647,8 @@ static ssize_t store_no_turbo(struct kobject *a, struct kobj_attribute *b,static void update_cpu_qos_request (int cpu,enum freq_qos_req_type type) {struct cpudata *cpudata = all_cpu_data[cpu]; -unsigned int freq = cpudata->pstate.turbo_freq;struct freq_qos_request *req; +unsigned int freq; struct cpufreq_policy *policy __free(put_cpufreq_policy) = cpufreq_cpu_get(cpu);if (!policy)
@@ -1661,6 +1661,8 @@ static void update_cpu_qos_request(int cpu, enum freq_qos_req_type type)if (hwp_active)intel_pstate_get_hwp_cap (cpudata); + freq = cpudata->pstate.turbo_freq; +if (type ==FREQ_QOS_MIN ) { freq =DIV_ROUND_UP (freq * global.min_perf_pct,100 ); }else {
drivers/cpuidle/cpuidle.c +0 -10
@@ -359,16 +359,6 @@ noinstr int cpuidle_enter_state(struct cpuidle_device *dev,int cpuidle_select (struct cpuidle_driver *drv,struct cpuidle_device *dev,bool *stop_tick) { -/* -* If there is only a single idle state (or none), there is nothing -* meaningful for the governor to choose. Skip the governor and -* always use state 0 with the tick running. -*/ -if (drv->state_count <=1 ) { - *stop_tick = false; -return 0 ; - } -return cpuidle_curr_governor->select (drv, dev, stop_tick); }
drivers/crypto/ccp/sev-dev.c +4 -6
@@ -1105,15 +1105,12 @@ struct page *snp_alloc_hv_fixed_pages(unsigned int num_2mb_pages) {struct psp_device *psp_master =psp_get_master_device ();struct snp_hv_fixed_pages_entry *entry; -struct sev_device *sev;unsigned int order;struct page *page; -if (!psp_master || !psp_master->sev_data) +if (!psp_master)return NULL ; - sev = psp_master->sev_data; - order =get_order (PMD_SIZE * num_2mb_pages);/*
@@ -1126,7 +1123,8 @@ struct page *snp_alloc_hv_fixed_pages(unsigned int num_2mb_pages)* This API uses SNP_INIT_EX to transition allocated pages to HV_Fixed * page state, fail if SNP is already initialized. */ -if (sev->snp_initialized) +if (psp_master->sev_data && + ((struct sev_device *)psp_master->sev_data)->snp_initialized)return NULL ;/* Re-use freed pages that match the request */
@@ -1162,7 +1160,7 @@ void snp_free_hv_fixed_pages(struct page *page)struct psp_device *psp_master =psp_get_master_device ();struct snp_hv_fixed_pages_entry *entry, *nentry; -if (!psp_master || !psp_master->sev_data) +if (!psp_master)return ;/*
drivers/cxl/Kconfig +1 -0
@@ -58,6 +58,7 @@ config CXL_ACPI tristate "CXL ACPI: Platform Support" depends on ACPI depends on ACPI_NUMA + depends on CXL_PMEM || !CXL_PMEM default CXL_BUS select ACPI_TABLE_LIB select ACPI_HMAT
drivers/firmware/cirrus/cs_dsp.c +18 -6
@@ -1610,11 +1610,17 @@ static int cs_dsp_load(struct cs_dsp *dsp, const struct firmware *firmware, region_name);if (reg) { +/* +* Although we expect the underlying bus does not require +* physically-contiguous buffers, we pessimistically use +* a temporary buffer instead of trusting that the +* alignment of region->data is ok. +*/ region_len =le32_to_cpu (region->len);if (region_len > buf_len) { buf_len =round_up (region_len,PAGE_SIZE ); -kfree (buf); - buf =kmalloc (buf_len,GFP_KERNEL |GFP_DMA ); +vfree (buf); + buf =vmalloc (buf_len);if (!buf) { ret = -ENOMEM ; goto out_fw;
@@ -1643,7 +1649,7 @@ static int cs_dsp_load(struct cs_dsp *dsp, const struct firmware *firmware, ret =0 ; out_fw: -kfree (buf); +vfree (buf);if (ret == -EOVERFLOW )cs_dsp_err (dsp,"%s: file content overflows file data\n" , file);
@@ -2320,11 +2326,17 @@ static int cs_dsp_load_coeff(struct cs_dsp *dsp, const struct firmware *firmware }if (reg) { +/* +* Although we expect the underlying bus does not require +* physically-contiguous buffers, we pessimistically use +* a temporary buffer instead of trusting that the +* alignment of blk->data is ok. +*/ region_len =le32_to_cpu (blk->len);if (region_len > buf_len) { buf_len =round_up (region_len,PAGE_SIZE ); -kfree (buf); - buf =kmalloc (buf_len,GFP_KERNEL |GFP_DMA ); +vfree (buf); + buf =vmalloc (buf_len);if (!buf) { ret = -ENOMEM ; goto out_fw;
@@ -2355,7 +2367,7 @@ static int cs_dsp_load_coeff(struct cs_dsp *dsp, const struct firmware *firmware ret =0 ; out_fw: -kfree (buf); +vfree (buf);if (ret == -EOVERFLOW )cs_dsp_err (dsp,"%s: file content overflows file data\n" , file);
drivers/firmware/stratix10-rsu.c +2 -0
@@ -768,7 +768,9 @@ static int stratix10_rsu_probe(struct platform_device *pdev) rsu_async_status_callback);if (ret) {dev_err (dev,"Error, getting RSU status %i\n" , ret); +stratix10_svc_remove_async_client (priv->chan);stratix10_svc_free_channel (priv->chan); +return ret; }/* get DCMF version from firmware */
drivers/gpib/lpvo_usb_gpib/lpvo_usb_gpib.c +4 -3
@@ -38,8 +38,10 @@ MODULE_DESCRIPTION("GPIB driver for LPVO usb devices");/* * Table of devices that work with this driver. * -* Currently, only one device is known to be used in the -* lpvo_usb_gpib adapter (FTDI 0403:6001). +* Currently, only one device is known to be used in the lpvo_usb_gpib +* adapter (FTDI 0403:6001) but as this device id is already handled by the +* ftdi_sio USB serial driver the LPVO driver must not bind to it by default. +* * If your adapter uses a different chip, insert a line * in the following table with proper <Vendor-id>, <Product-id>. *
@@ -50,7 +52,6 @@ MODULE_DESCRIPTION("GPIB driver for LPVO usb devices");*/ static const struct usb_device_id skel_table[] = { - {USB_DEVICE (0x0403 ,0x6001 ) }, { }/* Terminating entry */ };MODULE_DEVICE_TABLE (usb, skel_table);
drivers/gpio/gpiolib.c +6 -2
@@ -3268,8 +3268,12 @@ static int gpiochip_get(struct gpio_chip *gc, unsigned int offset)/* Make sure this is called after checking for gc->get(). */ ret = gc->get (gc, offset); -if (ret >1 ) - ret = -EBADE ; +if (ret >1 ) { +gpiochip_warn (gc, +"invalid return value from gc->get(): %d, consider fixing the driver\n" , + ret); + ret = !!ret; + }return ret; }
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +5 -1
@@ -1428,7 +1428,10 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info, *process_info = info; } - vm->process_info = *process_info; +if (cmpxchg (&vm->process_info,NULL , *process_info) !=NULL ) { + ret = -EINVAL ; + goto already_acquired; + }/* Validate page directory and attach eviction fence */ ret =amdgpu_bo_reserve (vm->root.bo, true);
@@ -1468,6 +1471,7 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,amdgpu_bo_unreserve (vm->root.bo); reserve_pd_fail: vm->process_info =NULL ; +already_acquired:if (info) {dma_fence_put (&info->eviction_fence->base); *process_info =NULL ;
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +16 -1
@@ -2843,8 +2843,10 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)break ;default : r =amdgpu_discovery_set_ip_blocks (adev); -if (r) +if (r) { + adev->num_ip_blocks =0 ;return r; + }break ; }
@@ -3402,6 +3404,8 @@ int amdgpu_device_set_cg_state(struct amdgpu_device *adev, i = state ==AMD_CG_STATE_GATE ? j : adev->num_ip_blocks - j -1 ;if (!adev->ip_blocks[i].status.late_initialized)continue ; +if (!adev->ip_blocks[i].version) +continue ;/* skip CG for GFX, SDMA on S0ix */ if (adev->in_s0ix && (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
@@ -3441,6 +3445,8 @@ int amdgpu_device_set_pg_state(struct amdgpu_device *adev, i = state ==AMD_PG_STATE_GATE ? j : adev->num_ip_blocks - j -1 ;if (!adev->ip_blocks[i].status.late_initialized)continue ; +if (!adev->ip_blocks[i].version) +continue ;/* skip PG for GFX, SDMA on S0ix */ if (adev->in_s0ix && (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GFX ||
@@ -3648,6 +3654,8 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)int i, r;for (i =0 ; i < adev->num_ip_blocks; i++) { +if (!adev->ip_blocks[i].version) +continue ;if (!adev->ip_blocks[i].version->funcs->early_fini)continue ;
@@ -3724,6 +3732,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)if (!adev->ip_blocks[i].status.sw)continue ; +if (!adev->ip_blocks[i].version) +continue ;if (adev->ip_blocks[i].version->type ==AMD_IP_BLOCK_TYPE_GMC ) {amdgpu_ucode_free_bo (adev);amdgpu_free_static_csa (&adev->virt.csa_obj);
@@ -3750,6 +3760,8 @@ static int amdgpu_device_ip_fini(struct amdgpu_device *adev)for (i = adev->num_ip_blocks -1 ; i >=0 ; i--) {if (!adev->ip_blocks[i].status.late_initialized)continue ; +if (!adev->ip_blocks[i].version) +continue ;if (adev->ip_blocks[i].version->funcs->late_fini) adev->ip_blocks[i].version->funcs->late_fini (&adev->ip_blocks[i]); adev->ip_blocks[i].status.late_initialized = false;
@@ -5878,6 +5890,9 @@ int amdgpu_device_mode1_reset(struct amdgpu_device *adev)/* enable mmio access after mode 1 reset completed */ adev->no_hw_access = false; +/* ensure no_hw_access is updated before we access hw */ +smp_mb (); +amdgpu_device_load_pci_state (adev->pdev); ret =amdgpu_psp_wait_for_bootloader (adev);if (ret)
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +1 -1
@@ -83,7 +83,7 @@ void amdgpu_driver_unload_kms(struct drm_device *dev) {struct amdgpu_device *adev =drm_to_adev (dev); -if (adev ==NULL ) +if (adev ==NULL || !adev->num_ip_blocks)return ;amdgpu_unregister_gpu_instance (adev);
drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h +8 -8
@@ -368,15 +368,15 @@ struct amdgpu_mode_info {struct drm_property *plane_ctm_property;/** -* @shaper_lut_property: Plane property to set pre-blending shaper LUT -* that converts color content before 3D LUT. If -* plane_shaper_tf_property != Identity TF, AMD color module will +* @plane_shaper_lut_property: Plane property to set pre-blending +* shaper LUT that converts color content before 3D LUT. +* If plane_shaper_tf_property != Identity TF, AMD color module will * combine the user LUT values with pre-defined TF into the LUT * parameters to be programmed. */ struct drm_property *plane_shaper_lut_property;/** -* @shaper_lut_size_property: Plane property for the size of +* @plane_shaper_lut_size_property: Plane property for the size of * pre-blending shaper LUT as supported by the driver (read-only). */ struct drm_property *plane_shaper_lut_size_property;
@@ -400,10 +400,10 @@ struct amdgpu_mode_info {*/ struct drm_property *plane_lut3d_property;/** -* @plane_degamma_lut_size_property: Plane property to define the max -* size of 3D LUT as supported by the driver (read-only). The max size -* is the max size of one dimension and, therefore, the max number of -* entries for 3D LUT array is the 3D LUT size cubed; +* @plane_lut3d_size_property: Plane property to define the max size +* of 3D LUT as supported by the driver (read-only). The max size is +* the max size of one dimension and, therefore, the max number of +* entries for 3D LUT array is the 3D LUT size cubed. */ struct drm_property *plane_lut3d_size_property;/**
drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c +14 -0
@@ -35,6 +35,8 @@static const struct dma_fence_ops amdgpu_userq_fence_ops;static struct kmem_cache *amdgpu_userq_fence_slab; +#define AMDGPU_USERQ_MAX_HANDLES (1U << 16) +int amdgpu_userq_fence_slab_init (void ) { amdgpu_userq_fence_slab = kmem_cache_create("amdgpu_userq_fence",
@@ -476,6 +478,11 @@ int amdgpu_userq_signal_ioctl(struct drm_device *dev, void *data,if (!amdgpu_userq_enabled (dev))return -ENOTSUPP ; +if (args->num_syncobj_handles >AMDGPU_USERQ_MAX_HANDLES || + args->num_bo_write_handles >AMDGPU_USERQ_MAX_HANDLES || + args->num_bo_read_handles >AMDGPU_USERQ_MAX_HANDLES ) +return -EINVAL ; + num_syncobj_handles = args->num_syncobj_handles; syncobj_handles =memdup_user (u64_to_user_ptr (args->syncobj_handles),size_mul (sizeof (u32), num_syncobj_handles));
@@ -661,6 +668,11 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,if (!amdgpu_userq_enabled (dev))return -ENOTSUPP ; +if (wait_info->num_syncobj_handles >AMDGPU_USERQ_MAX_HANDLES || + wait_info->num_bo_write_handles >AMDGPU_USERQ_MAX_HANDLES || + wait_info->num_bo_read_handles >AMDGPU_USERQ_MAX_HANDLES ) +return -EINVAL ; + num_read_bo_handles = wait_info->num_bo_read_handles; bo_handles_read =memdup_user (u64_to_user_ptr (wait_info->bo_read_handles),size_mul (sizeof (u32), num_read_bo_handles));
@@ -873,6 +885,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,dma_fence_unwrap_for_each (f, &iter, fence) {if (num_fences >= wait_info->num_fences) { r = -EINVAL ; +dma_fence_put (fence); goto free_fences; }
@@ -897,6 +910,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,if (num_fences >= wait_info->num_fences) { r = -EINVAL ; +dma_fence_put (fence); goto free_fences; }
drivers/gpu/drm/amd/amdgpu/mes_v11_0.c +0 -5
@@ -718,11 +718,6 @@ static int mes_v11_0_set_hw_resources(struct amdgpu_mes *mes) mes_set_hw_res_pkt.enable_reg_active_poll =1 ; mes_set_hw_res_pkt.enable_level_process_quantum_check =1 ; mes_set_hw_res_pkt.oversubscription_timer =50 ; -if ((mes->adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x7f ) - mes_set_hw_res_pkt.enable_lr_compute_wa =1 ; -else -dev_info_once (mes->adev->dev, -"MES FW version must be >= 0x7f to enable LR compute workaround.\n" );if (amdgpu_mes_log_enable) { mes_set_hw_res_pkt.enable_mes_event_int_logging =1 ;
drivers/gpu/drm/amd/amdgpu/mes_v12_0.c +0 -5
@@ -779,11 +779,6 @@ static int mes_v12_0_set_hw_resources(struct amdgpu_mes *mes, int pipe) mes_set_hw_res_pkt.use_different_vmid_compute =1 ; mes_set_hw_res_pkt.enable_reg_active_poll =1 ; mes_set_hw_res_pkt.enable_level_process_quantum_check =1 ; -if ((mes->adev->mes.sched_version &AMDGPU_MES_VERSION_MASK ) >=0x82 ) - mes_set_hw_res_pkt.enable_lr_compute_wa =1 ; -else -dev_info_once (adev->dev, -"MES FW version must be >= 0x82 to enable LR compute workaround.\n" );/* * Keep oversubscribe timer for sdma . When we have unmapped doorbell
drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c +4 -0
@@ -174,6 +174,10 @@ static int vcn_v5_0_0_sw_init(struct amdgpu_ip_block *ip_block) fw_shared->present_flag_0 =cpu_to_le32 (AMDGPU_FW_SHARED_FLAG_0_UNIFIED_QUEUE ); fw_shared->sq.is_enabled =1 ; + fw_shared->present_flag_0 |=cpu_to_le32 (AMDGPU_VCN_SMU_DPM_INTERFACE_FLAG ); + fw_shared->smu_dpm_interface.smu_interface_type = (adev->flags &AMD_IS_APU ) ? +AMDGPU_VCN_SMU_DPM_INTERFACE_APU :AMDGPU_VCN_SMU_DPM_INTERFACE_DGPU ; +if (amdgpu_vcnfw_log)amdgpu_vcn_fwlog_init (&adev->vcn.inst[i]);
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +1 -0
@@ -606,6 +606,7 @@ int pqm_update_queue_properties(struct process_queue_manager *pqm, p->queue_size)) {pr_debug ("ring buf 0x%llx size 0x%llx not mapped on GPU\n" , p->queue_address, p->queue_size); +amdgpu_bo_unreserve (vm->root.bo);return -EFAULT ; }
drivers/gpu/drm/amd/display/dc/hwss/dcn401/dcn401_hwseq.c +5 -1
@@ -71,7 +71,11 @@ void dcn401_initialize_min_clocks(struct dc *dc)* audio corruption. Read current DISPCLK from DENTIST and request the same * freq to ensure that the timing is valid and unchanged. */ - clocks->dispclk_khz = dc->clk_mgr->funcs->get_dispclk_from_dentist (dc->clk_mgr); +if (dc->clk_mgr->funcs->get_dispclk_from_dentist) { + clocks->dispclk_khz = dc->clk_mgr->funcs->get_dispclk_from_dentist (dc->clk_mgr); + }else { + clocks->dispclk_khz = dc->clk_mgr->boot_snapshot.dispclk *1000 ; + } } clocks->ref_dtbclk_khz = dc->clk_mgr->bw_params->clk_table.entries[0 ].dtbclk_mhz *1000 ; clocks->fclk_p_state_change_support = true;
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c +9 -2
@@ -2110,6 +2110,7 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu, (struct gpu_metrics_v1_3 *)smu_table->gpu_metrics_table;SmuMetricsExternal_t metrics_ext;SmuMetrics_t *metrics = &metrics_ext.SmuMetrics; +uint32_t mp1_ver =amdgpu_ip_version (smu->adev,MP1_HWIP ,0 );int ret =0 ; ret = smu_cmn_get_metrics_table(smu,
@@ -2134,7 +2135,12 @@ static ssize_t smu_v13_0_0_get_gpu_metrics(struct smu_context *smu, metrics->Vcn1ActivityPercentage); gpu_metrics->average_socket_power = metrics->AverageSocketPower; - gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; + +if ((mp1_ver ==IP_VERSION (13 ,0 ,0 ) && smu->smc_fw_version <=0x004e1e00 ) || + (mp1_ver ==IP_VERSION (13 ,0 ,10 ) && smu->smc_fw_version <=0x00500800 )) + gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; +else + gpu_metrics->energy_accumulator =UINT_MAX ;if (metrics->AverageGfxActivity <=SMU_13_0_0_BUSY_THRESHOLD ) gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;
@@ -2290,7 +2296,8 @@ static int smu_v13_0_0_restore_user_od_settings(struct smu_context *smu) user_od_table->OverDriveTable.FeatureCtrlMask =BIT (PP_OD_FEATURE_GFXCLK_BIT ) |BIT (PP_OD_FEATURE_UCLK_BIT ) |BIT (PP_OD_FEATURE_GFX_VF_CURVE_BIT ) | -BIT (PP_OD_FEATURE_FAN_CURVE_BIT ); +BIT (PP_OD_FEATURE_FAN_CURVE_BIT ) | +BIT (PP_OD_FEATURE_ZERO_FAN_BIT ); res =smu_v13_0_0_upload_overdrive_table (smu, user_od_table); user_od_table->OverDriveTable.FeatureCtrlMask =0 ;if (res ==0 )
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c +4 -2
@@ -2120,7 +2120,8 @@ static ssize_t smu_v13_0_7_get_gpu_metrics(struct smu_context *smu, metrics->Vcn1ActivityPercentage); gpu_metrics->average_socket_power = metrics->AverageSocketPower; - gpu_metrics->energy_accumulator = metrics->EnergyAccumulator; + gpu_metrics->energy_accumulator = smu->smc_fw_version <=0x00521400 ? + metrics->EnergyAccumulator :UINT_MAX ;if (metrics->AverageGfxActivity <=SMU_13_0_7_BUSY_THRESHOLD ) gpu_metrics->average_gfxclk_frequency = metrics->AverageGfxclkFrequencyPostDs;
@@ -2276,7 +2277,8 @@ static int smu_v13_0_7_restore_user_od_settings(struct smu_context *smu) user_od_table->OverDriveTable.FeatureCtrlMask =BIT (PP_OD_FEATURE_GFXCLK_BIT ) |BIT (PP_OD_FEATURE_UCLK_BIT ) |BIT (PP_OD_FEATURE_GFX_VF_CURVE_BIT ) | -BIT (PP_OD_FEATURE_FAN_CURVE_BIT ); +BIT (PP_OD_FEATURE_FAN_CURVE_BIT ) | +BIT (PP_OD_FEATURE_ZERO_FAN_BIT ); res =smu_v13_0_7_upload_overdrive_table (smu, user_od_table); user_od_table->OverDriveTable.FeatureCtrlMask =0 ;if (res ==0 )
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +2 -1
@@ -2413,7 +2413,8 @@ static int smu_v14_0_2_restore_user_od_settings(struct smu_context *smu) user_od_table->OverDriveTable.FeatureCtrlMask =BIT (PP_OD_FEATURE_GFXCLK_BIT ) |BIT (PP_OD_FEATURE_UCLK_BIT ) |BIT (PP_OD_FEATURE_GFX_VF_CURVE_BIT ) | -BIT (PP_OD_FEATURE_FAN_CURVE_BIT ); +BIT (PP_OD_FEATURE_FAN_CURVE_BIT ) | +BIT (PP_OD_FEATURE_ZERO_FAN_BIT ); res =smu_v14_0_2_upload_overdrive_table (smu, user_od_table); user_od_table->OverDriveTable.FeatureCtrlMask =0 ;if (res ==0 )
drivers/gpu/drm/bridge/samsung-dsim.c +16 -9
@@ -1881,6 +1881,14 @@ static int samsung_dsim_register_te_irq(struct samsung_dsim *dsi, struct devicereturn 0 ; } +static void samsung_dsim_unregister_te_irq (struct samsung_dsim *dsi) +{ +if (dsi->te_gpio) { +free_irq (gpiod_to_irq (dsi->te_gpio), dsi); +gpiod_put (dsi->te_gpio); + } +} +static int samsung_dsim_host_attach (struct mipi_dsi_host *host,struct mipi_dsi_device *device) {
@@ -1955,13 +1963,13 @@ static int samsung_dsim_host_attach(struct mipi_dsi_host *host,if (!(device->mode_flags &MIPI_DSI_MODE_VIDEO )) { ret =samsung_dsim_register_te_irq (dsi, &device->dev);if (ret) -return ret; + goto err_remove_bridge; }if (pdata->host_ops && pdata->host_ops->attach) { ret = pdata->host_ops->attach (dsi, device);if (ret) -return ret; + goto err_unregister_te_irq; } dsi->lanes = device->lanes;
@@ -1969,14 +1977,13 @@ static int samsung_dsim_host_attach(struct mipi_dsi_host *host, dsi->mode_flags = device->mode_flags;return 0 ; -} -static void samsung_dsim_unregister_te_irq (struct samsung_dsim *dsi) -{ -if (dsi->te_gpio) { -free_irq (gpiod_to_irq (dsi->te_gpio), dsi); -gpiod_put (dsi->te_gpio); - } +err_unregister_te_irq: +if (!(device->mode_flags &MIPI_DSI_MODE_VIDEO )) +samsung_dsim_unregister_te_irq (dsi); +err_remove_bridge: +drm_bridge_remove (&dsi->bridge); +return ret; } static int samsung_dsim_host_detach(struct mipi_dsi_host *host,
drivers/gpu/drm/bridge/ti-sn65dsi83.c +7 -6
@@ -351,9 +351,9 @@ static u8 sn65dsi83_get_dsi_range(struct sn65dsi83 *ctx,* DSI_CLK = mode clock * bpp / dsi_data_lanes / 2 * the 2 is there because the bus is DDR. */ -return DIV_ROUND_UP (clamp ((unsigned int )mode->clock * -mipi_dsi_pixel_format_to_bpp (ctx->dsi->format) / - ctx->dsi->lanes /2 ,40000U ,500000U ),5000U ); +return clamp ((unsigned int )mode->clock * +mipi_dsi_pixel_format_to_bpp (ctx->dsi->format) / + ctx->dsi->lanes /2 ,40000U ,500000U ) /5000U ; }static u8 sn65dsi83_get_dsi_div (struct sn65dsi83 *ctx)
@@ -474,6 +474,7 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge, struct drm_atomic_state *state) {struct sn65dsi83 *ctx =bridge_to_sn65dsi83 (bridge); +const unsigned int dual_factor = ctx->lvds_dual_link ?2 :1 ;const struct drm_bridge_state *bridge_state;const struct drm_crtc_state *crtc_state;const struct drm_display_mode *mode;
@@ -606,18 +607,18 @@ static void sn65dsi83_atomic_pre_enable(struct drm_bridge *bridge,/* 32 + 1 pixel clock to ensure proper operation */ le16val =cpu_to_le16 (32 +1 );regmap_bulk_write (ctx->regmap,REG_VID_CHA_SYNC_DELAY_LOW , &le16val,2 ); - le16val =cpu_to_le16 (mode->hsync_end - mode->hsync_start); + le16val =cpu_to_le16 ((mode->hsync_end - mode->hsync_start) / dual_factor);regmap_bulk_write (ctx->regmap,REG_VID_CHA_HSYNC_PULSE_WIDTH_LOW , &le16val,2 ); le16val =cpu_to_le16 (mode->vsync_end - mode->vsync_start);regmap_bulk_write (ctx->regmap,REG_VID_CHA_VSYNC_PULSE_WIDTH_LOW , &le16val,2 );regmap_write (ctx->regmap,REG_VID_CHA_HORIZONTAL_BACK_PORCH , - mode->htotal - mode->hsync_end); + (mode->htotal - mode->hsync_end) / dual_factor);regmap_write (ctx->regmap,REG_VID_CHA_VERTICAL_BACK_PORCH , mode->vtotal - mode->vsync_end);regmap_write (ctx->regmap,REG_VID_CHA_HORIZONTAL_FRONT_PORCH , - mode->hsync_start - mode->hdisplay); + (mode->hsync_start - mode->hdisplay) / dual_factor);regmap_write (ctx->regmap,REG_VID_CHA_VERTICAL_FRONT_PORCH , mode->vsync_start - mode->vdisplay);regmap_write (ctx->regmap,REG_VID_CHA_TEST_PATTERN ,0x00 );
drivers/gpu/drm/bridge/ti-sn65dsi86.c +4 -2
@@ -1415,6 +1415,7 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev, {struct ti_sn65dsi86 *pdata =dev_get_drvdata (adev->dev.parent);struct device_node *np = pdata->dev->of_node; +const struct i2c_client *client =to_i2c_client (pdata->dev);int ret; pdata->next_bridge =devm_drm_of_get_bridge (&adev->dev, np,1 ,0 );
@@ -1433,8 +1434,9 @@ static int ti_sn_bridge_probe(struct auxiliary_device *adev, ? DRM_MODE_CONNECTOR_DisplayPort : DRM_MODE_CONNECTOR_eDP;if (pdata->bridge.type == DRM_MODE_CONNECTOR_DisplayPort) { - pdata->bridge.ops =DRM_BRIDGE_OP_EDID |DRM_BRIDGE_OP_DETECT | -DRM_BRIDGE_OP_HPD ; + pdata->bridge.ops =DRM_BRIDGE_OP_EDID |DRM_BRIDGE_OP_DETECT ; +if (client->irq) + pdata->bridge.ops |=DRM_BRIDGE_OP_HPD ;/* * If comms were already enabled they would have been enabled * with the wrong value of HPD_DISABLE. Update it now. Comms
drivers/gpu/drm/i915/display/intel_alpm.c +1 -12
@@ -43,12 +43,6 @@ bool intel_alpm_is_alpm_aux_less(struct intel_dp *intel_dp,void intel_alpm_init (struct intel_dp *intel_dp) { -u8 dpcd; - -if (drm_dp_dpcd_readb (&intel_dp->aux,DP_RECEIVER_ALPM_CAP , &dpcd) <0 ) -return ; - - intel_dp->alpm_dpcd = dpcd;mutex_init (&intel_dp->alpm.lock); }
@@ -564,12 +558,7 @@ void intel_alpm_disable(struct intel_dp *intel_dp)mutex_lock (&intel_dp->alpm.lock);intel_de_rmw (display,ALPM_CTL (display, cpu_transcoder), -ALPM_CTL_ALPM_ENABLE |ALPM_CTL_LOBF_ENABLE | -ALPM_CTL_ALPM_AUX_LESS_ENABLE ,0 ); - -intel_de_rmw (display, -PORT_ALPM_CTL (cpu_transcoder), -PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE ,0 ); +ALPM_CTL_ALPM_ENABLE |ALPM_CTL_LOBF_ENABLE ,0 );drm_dbg_kms (display->drm,"Disabling ALPM\n" );mutex_unlock (&intel_dp->alpm.lock);
drivers/gpu/drm/i915/display/intel_display.c +0 -1
@@ -1614,7 +1614,6 @@ static void hsw_configure_cpu_transcoder(const struct intel_crtc_state *crtc_sta }intel_set_transcoder_timings (crtc_state); -intel_vrr_set_transcoder_timings (crtc_state);if (cpu_transcoder !=TRANSCODER_EDP ) intel_de_write(display, TRANS_MULT(display, cpu_transcoder),
drivers/gpu/drm/i915/display/intel_dp.c +7 -0
@@ -4547,6 +4547,7 @@ static bool intel_edp_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector) { struct intel_display *display = to_intel_display(intel_dp); +int ret;/* this function is meant to be called only once */ drm_WARN_ON (display->drm, intel_dp->dpcd[DP_DPCD_REV ] !=0 );
@@ -4586,6 +4587,12 @@ intel_edp_init_dpcd(struct intel_dp *intel_dp, struct intel_connector *connector*/ intel_dp_init_source_oui (intel_dp); +/* Read the ALPM DPCD caps */ + ret =drm_dp_dpcd_read_byte (&intel_dp->aux,DP_RECEIVER_ALPM_CAP , + &intel_dp->alpm_dpcd); +if (ret <0 ) +return false; +/* * This has to be called after intel_dp->edp_dpcd is filled, PSR checks * for SET_POWER_CAPABLE bit in intel_dp->edp_dpcd[1]
drivers/gpu/drm/i915/display/intel_psr.c +38 -12
81 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_vrr.c +14 -0
@@ -528,6 +528,18 @@ void intel_vrr_set_transcoder_timings(const struct intel_crtc_state *crtc_state)if (!HAS_VRR (display))return ; +/* +* Bspec says: +* "(note: VRR needs to be programmed after +* TRANS_DDI_FUNC_CTL and before TRANS_CONF)." +* +* In practice it turns out that ICL can hang if +* TRANS_VRR_VMAX/FLIPLINE are written before +* enabling TRANS_DDI_FUNC_CTL. +*/ +drm_WARN_ON (display->drm, + !(intel_de_read (display,TRANS_DDI_FUNC_CTL (display, cpu_transcoder)) &TRANS_DDI_FUNC_ENABLE )); +/* * This bit seems to have two meanings depending on the platform: * TGL: generate VRR "safe window" for DSB vblank waits
@@ -754,6 +766,8 @@ void intel_vrr_transcoder_enable(const struct intel_crtc_state *crtc_state) {struct intel_display *display =to_intel_display (crtc_state); +intel_vrr_set_transcoder_timings (crtc_state); +if (!intel_vrr_possible (crtc_state))return ;
drivers/gpu/drm/i915/gem/i915_gem_shmem.c +9 -3
@@ -151,8 +151,12 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st, } }while (1 ); - nr_pages = min_t(unsigned long, -folio_nr_pages (folio), page_count - i); + nr_pages =min_array (((unsigned long []) { +folio_nr_pages (folio), + page_count - i, + max_segment /PAGE_SIZE , + }),3 ); +if (!i || sg->length >= max_segment ||folio_pfn (folio) != next_pfn) {
@@ -162,7 +166,9 @@ int shmem_sg_alloc_table(struct drm_i915_private *i915, struct sg_table *st, st->nents++;sg_set_folio (sg, folio, nr_pages *PAGE_SIZE ,0 ); }else { -/* XXX: could overflow? */ + nr_pages = min_t(unsigned long, nr_pages, + (max_segment - sg->length) /PAGE_SIZE ); + sg->length += nr_pages *PAGE_SIZE ; } next_pfn =folio_pfn (folio) + nr_pages;
drivers/gpu/drm/msm/adreno/a2xx_gpummu.c +1 -1
@@ -78,7 +78,7 @@ static void a2xx_gpummu_destroy(struct msm_mmu *mmu) {struct a2xx_gpummu *gpummu =to_a2xx_gpummu (mmu); -dma_free_attrs (mmu->dev,TABLE_SIZE , gpummu->table, gpummu->pt_base, +dma_free_attrs (mmu->dev,TABLE_SIZE +32 , gpummu->table, gpummu->pt_base,DMA_ATTR_FORCE_CONTIGUOUS );kfree (gpummu);
drivers/gpu/drm/msm/adreno/a6xx_catalog.c +1 -2
@@ -1759,7 +1759,7 @@ static const u32 x285_protect_regs[] = {A6XX_PROTECT_NORDWR (0x27c06 ,0x0000 ), }; -DECLARE_ADRENO_PROTECT (x285_protect,64 ); +DECLARE_ADRENO_PROTECT (x285_protect,15 );static const struct adreno_reglist_pipe a840_nonctxt_regs[] = { { REG_A8XX_CP_SMMU_STREAM_ID_LPAC, 0x00000101, BIT(PIPE_NONE) },
@@ -1966,5 +1966,4 @@ static inline __always_unused void __build_asserts(void)BUILD_BUG_ON (a660_protect.count > a660_protect.count_max);BUILD_BUG_ON (a690_protect.count > a690_protect.count_max);BUILD_BUG_ON (a730_protect.count > a730_protect.count_max); -BUILD_BUG_ON (a840_protect.count > a840_protect.count_max); }
drivers/gpu/drm/msm/adreno/a8xx_gpu.c +12 -2
@@ -306,11 +306,21 @@ static void a8xx_set_ubwc_config(struct msm_gpu *gpu) hbb = cfg->highest_bank_bit -13 ; hbb_hi = hbb >>2 ; hbb_lo = hbb &3 ; -a8xx_write_pipe (gpu,PIPE_BV ,REG_A8XX_GRAS_NC_MODE_CNTL , hbb <<5 ); -a8xx_write_pipe (gpu,PIPE_BR ,REG_A8XX_GRAS_NC_MODE_CNTL , hbb <<5 ); + +a8xx_write_pipe (gpu,PIPE_BV ,REG_A8XX_GRAS_NC_MODE_CNTL , + hbb <<5 | + level3_swizzling_dis <<4 | + level2_swizzling_dis <<3 ); + +a8xx_write_pipe (gpu,PIPE_BR ,REG_A8XX_GRAS_NC_MODE_CNTL , + hbb <<5 | + level3_swizzling_dis <<4 | + level2_swizzling_dis <<3 );a8xx_write_pipe (gpu,PIPE_BR ,REG_A8XX_RB_CCU_NC_MODE_CNTL , yuvnotcomptofc <<6 | + level3_swizzling_dis <<5 | + level2_swizzling_dis <<4 | hbb_hi <<3 | hbb_lo <<1 );
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_0_sc8280xp.h +6 -6
@@ -133,7 +133,7 @@ static const struct dpu_sspp_cfg sc8280xp_sspp[] = {static const struct dpu_lm_cfg sc8280xp_lm[] = { { .name ="lm_0" , .id =LM_0 , - .base =0x44000 , .len =0x320 , + .base =0x44000 , .len =0x400 , .features =MIXER_MSM8998_MASK , .sblk = &sdm845_lm_sblk, .lm_pair =LM_1 ,
@@ -141,7 +141,7 @@ static const struct dpu_lm_cfg sc8280xp_lm[] = { .dspp = DSPP_0, }, { .name = "lm_1", .id = LM_1, - .base = 0x45000, .len = 0x320, + .base = 0x45000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_0,
@@ -149,7 +149,7 @@ static const struct dpu_lm_cfg sc8280xp_lm[] = { .dspp = DSPP_1, }, { .name = "lm_2", .id = LM_2, - .base = 0x46000, .len = 0x320, + .base = 0x46000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_3,
@@ -157,7 +157,7 @@ static const struct dpu_lm_cfg sc8280xp_lm[] = { .dspp = DSPP_2, }, { .name = "lm_3", .id = LM_3, - .base = 0x47000, .len = 0x320, + .base = 0x47000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_2,
@@ -165,14 +165,14 @@ static const struct dpu_lm_cfg sc8280xp_lm[] = { .dspp = DSPP_3, }, { .name = "lm_4", .id = LM_4, - .base = 0x48000, .len = 0x320, + .base = 0x48000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_5, .pingpong = PINGPONG_4, }, { .name = "lm_5", .id = LM_5, - .base = 0x49000, .len = 0x320, + .base = 0x49000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_4,
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_1_sm8450.h +6 -6
@@ -134,7 +134,7 @@ static const struct dpu_sspp_cfg sm8450_sspp[] = {static const struct dpu_lm_cfg sm8450_lm[] = { { .name ="lm_0" , .id =LM_0 , - .base =0x44000 , .len =0x320 , + .base =0x44000 , .len =0x400 , .features =MIXER_MSM8998_MASK , .sblk = &sdm845_lm_sblk, .lm_pair =LM_1 ,
@@ -142,7 +142,7 @@ static const struct dpu_lm_cfg sm8450_lm[] = { .dspp = DSPP_0, }, { .name = "lm_1", .id = LM_1, - .base = 0x45000, .len = 0x320, + .base = 0x45000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_0,
@@ -150,7 +150,7 @@ static const struct dpu_lm_cfg sm8450_lm[] = { .dspp = DSPP_1, }, { .name = "lm_2", .id = LM_2, - .base = 0x46000, .len = 0x320, + .base = 0x46000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_3,
@@ -158,7 +158,7 @@ static const struct dpu_lm_cfg sm8450_lm[] = { .dspp = DSPP_2, }, { .name = "lm_3", .id = LM_3, - .base = 0x47000, .len = 0x320, + .base = 0x47000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_2,
@@ -166,14 +166,14 @@ static const struct dpu_lm_cfg sm8450_lm[] = { .dspp = DSPP_3, }, { .name = "lm_4", .id = LM_4, - .base = 0x48000, .len = 0x320, + .base = 0x48000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_5, .pingpong = PINGPONG_4, }, { .name = "lm_5", .id = LM_5, - .base = 0x49000, .len = 0x320, + .base = 0x49000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_4,
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_8_4_sa8775p.h +2 -2
@@ -366,8 +366,8 @@ static const struct dpu_intf_cfg sa8775p_intf[] = { .type = INTF_NONE, .controller_id = MSM_DP_CONTROLLER_0, /* pair with intf_0 for DP MST */ .prog_fetch_lines_worst_case = 24, - .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17), - .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16), + .intr_underrun = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 16), + .intr_vsync = DPU_IRQ_IDX(MDP_SSPP_TOP0_INTR, 17), }, { .name = "intf_7", .id = INTF_7, .base = 0x3b000, .len = 0x280,
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_0_sm8550.h +6 -6
@@ -131,7 +131,7 @@ static const struct dpu_sspp_cfg sm8550_sspp[] = {static const struct dpu_lm_cfg sm8550_lm[] = { { .name ="lm_0" , .id =LM_0 , - .base =0x44000 , .len =0x320 , + .base =0x44000 , .len =0x400 , .features =MIXER_MSM8998_MASK , .sblk = &sdm845_lm_sblk, .lm_pair =LM_1 ,
@@ -139,7 +139,7 @@ static const struct dpu_lm_cfg sm8550_lm[] = { .dspp = DSPP_0, }, { .name = "lm_1", .id = LM_1, - .base = 0x45000, .len = 0x320, + .base = 0x45000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_0,
@@ -147,7 +147,7 @@ static const struct dpu_lm_cfg sm8550_lm[] = { .dspp = DSPP_1, }, { .name = "lm_2", .id = LM_2, - .base = 0x46000, .len = 0x320, + .base = 0x46000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_3,
@@ -155,7 +155,7 @@ static const struct dpu_lm_cfg sm8550_lm[] = { .dspp = DSPP_2, }, { .name = "lm_3", .id = LM_3, - .base = 0x47000, .len = 0x320, + .base = 0x47000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_2,
@@ -163,14 +163,14 @@ static const struct dpu_lm_cfg sm8550_lm[] = { .dspp = DSPP_3, }, { .name = "lm_4", .id = LM_4, - .base = 0x48000, .len = 0x320, + .base = 0x48000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_5, .pingpong = PINGPONG_4, }, { .name = "lm_5", .id = LM_5, - .base = 0x49000, .len = 0x320, + .base = 0x49000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_4,
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_1_sar2130p.h +6 -6
@@ -131,7 +131,7 @@ static const struct dpu_sspp_cfg sar2130p_sspp[] = {static const struct dpu_lm_cfg sar2130p_lm[] = { { .name ="lm_0" , .id =LM_0 , - .base =0x44000 , .len =0x320 , + .base =0x44000 , .len =0x400 , .features =MIXER_MSM8998_MASK , .sblk = &sdm845_lm_sblk, .lm_pair =LM_1 ,
@@ -139,7 +139,7 @@ static const struct dpu_lm_cfg sar2130p_lm[] = { .dspp = DSPP_0, }, { .name = "lm_1", .id = LM_1, - .base = 0x45000, .len = 0x320, + .base = 0x45000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_0,
@@ -147,7 +147,7 @@ static const struct dpu_lm_cfg sar2130p_lm[] = { .dspp = DSPP_1, }, { .name = "lm_2", .id = LM_2, - .base = 0x46000, .len = 0x320, + .base = 0x46000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_3,
@@ -155,7 +155,7 @@ static const struct dpu_lm_cfg sar2130p_lm[] = { .dspp = DSPP_2, }, { .name = "lm_3", .id = LM_3, - .base = 0x47000, .len = 0x320, + .base = 0x47000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_2,
@@ -163,14 +163,14 @@ static const struct dpu_lm_cfg sar2130p_lm[] = { .dspp = DSPP_3, }, { .name = "lm_4", .id = LM_4, - .base = 0x48000, .len = 0x320, + .base = 0x48000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_5, .pingpong = PINGPONG_4, }, { .name = "lm_5", .id = LM_5, - .base = 0x49000, .len = 0x320, + .base = 0x49000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_4,
drivers/gpu/drm/msm/disp/dpu1/catalog/dpu_9_2_x1e80100.h +6 -6
@@ -130,7 +130,7 @@ static const struct dpu_sspp_cfg x1e80100_sspp[] = {static const struct dpu_lm_cfg x1e80100_lm[] = { { .name ="lm_0" , .id =LM_0 , - .base =0x44000 , .len =0x320 , + .base =0x44000 , .len =0x400 , .features =MIXER_MSM8998_MASK , .sblk = &sdm845_lm_sblk, .lm_pair =LM_1 ,
@@ -138,7 +138,7 @@ static const struct dpu_lm_cfg x1e80100_lm[] = { .dspp = DSPP_0, }, { .name = "lm_1", .id = LM_1, - .base = 0x45000, .len = 0x320, + .base = 0x45000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_0,
@@ -146,7 +146,7 @@ static const struct dpu_lm_cfg x1e80100_lm[] = { .dspp = DSPP_1, }, { .name = "lm_2", .id = LM_2, - .base = 0x46000, .len = 0x320, + .base = 0x46000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_3,
@@ -154,7 +154,7 @@ static const struct dpu_lm_cfg x1e80100_lm[] = { .dspp = DSPP_2, }, { .name = "lm_3", .id = LM_3, - .base = 0x47000, .len = 0x320, + .base = 0x47000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_2,
@@ -162,14 +162,14 @@ static const struct dpu_lm_cfg x1e80100_lm[] = { .dspp = DSPP_3, }, { .name = "lm_4", .id = LM_4, - .base = 0x48000, .len = 0x320, + .base = 0x48000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_5, .pingpong = PINGPONG_4, }, { .name = "lm_5", .id = LM_5, - .base = 0x49000, .len = 0x320, + .base = 0x49000, .len = 0x400, .features = MIXER_MSM8998_MASK, .sblk = &sdm845_lm_sblk, .lm_pair = LM_4,
drivers/gpu/drm/msm/dsi/dsi_host.c +31 -12
77 lines not on this page · raw message
drivers/gpu/drm/nouveau/nouveau_connector.c +3 -0
@@ -1230,6 +1230,9 @@ nouveau_connector_aux_xfer(struct drm_dp_aux *obj, struct drm_dp_aux_msg *msg)u8 size = msg->size;int ret; +if (pm_runtime_suspended (nv_connector->base.dev->dev)) +return -EBUSY ; + nv_encoder =find_encoder (&nv_connector->base,DCB_OUTPUT_DP );if (!nv_encoder)return -ENODEV ;
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c +6 -6
@@ -737,8 +737,8 @@ r535_gsp_acpi_caps(acpi_handle handle, CAPS_METHOD_DATA *caps)if (!obj) goto done; -if (WARN_ON (obj->type !=ACPI_TYPE_BUFFER ) || -WARN_ON (obj->buffer.length !=4 )) +if (obj->type !=ACPI_TYPE_BUFFER || + obj->buffer.length !=4 ) goto done; caps->status =0 ;
@@ -773,8 +773,8 @@ r535_gsp_acpi_jt(acpi_handle handle, JT_METHOD_DATA *jt)if (!obj) goto done; -if (WARN_ON (obj->type !=ACPI_TYPE_BUFFER ) || -WARN_ON (obj->buffer.length !=4 )) +if (obj->type !=ACPI_TYPE_BUFFER || + obj->buffer.length !=4 ) goto done; jt->status =0 ;
@@ -861,8 +861,8 @@ r535_gsp_acpi_dod(acpi_handle handle, DOD_METHOD_DATA *dod) _DOD = output.pointer; -if (WARN_ON (_DOD->type !=ACPI_TYPE_PACKAGE ) || -WARN_ON (_DOD->package.count >ARRAY_SIZE (dod->acpiIdList))) +if (_DOD->type !=ACPI_TYPE_PACKAGE || + _DOD->package.count >ARRAY_SIZE (dod->acpiIdList))return ;for (int i =0 ; i < _DOD->package.count; i++) {
drivers/gpu/drm/sitronix/st7586.c +6 -9
@@ -347,6 +347,12 @@ static int st7586_probe(struct spi_device *spi)if (ret)return ret; +/* +* Override value set by mipi_dbi_spi_init(). This driver is a bit +* non-standard, so best to set it explicitly here. +*/ + dbi->write_memory_bpw =8 ; +/* Cannot read from this controller via SPI */ dbi->read_commands =NULL ;
@@ -356,15 +362,6 @@ static int st7586_probe(struct spi_device *spi)if (ret)return ret; -/* -* we are using 8-bit data, so we are not actually swapping anything, -* but setting mipi->swap_bytes makes mipi_dbi_typec3_command() do the -* right thing and not use 16-bit transfers (which results in swapped -* bytes on little-endian systems and causes out of order data to be -* sent to the display). -*/ - dbi->swap_bytes = true; -drm_mode_config_reset (drm); ret =drm_dev_register (drm,0 );
drivers/gpu/drm/ttm/ttm_pool_internal.h +1 -1
@@ -17,7 +17,7 @@ static inline bool ttm_pool_uses_dma32(struct ttm_pool *pool)return pool->alloc_flags &TTM_ALLOCATION_POOL_USE_DMA32 ; } -static inline bool ttm_pool_beneficial_order (struct ttm_pool *pool) +static inline unsigned int ttm_pool_beneficial_order (struct ttm_pool *pool) {return pool->alloc_flags &0xff ; }
drivers/gpu/drm/xe/xe_sync.c +21 -9
@@ -146,8 +146,10 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef,if (!signal) { sync->fence =drm_syncobj_fence_get (sync->syncobj); -if (XE_IOCTL_DBG (xe, !sync->fence)) -return -EINVAL ; +if (XE_IOCTL_DBG (xe, !sync->fence)) { + err = -EINVAL ; + goto free_sync; + } }break ;
@@ -167,17 +169,21 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef,if (signal) { sync->chain_fence =dma_fence_chain_alloc (); -if (!sync->chain_fence) -return -ENOMEM ; +if (!sync->chain_fence) { + err = -ENOMEM ; + goto free_sync; + } }else { sync->fence =drm_syncobj_fence_get (sync->syncobj); -if (XE_IOCTL_DBG (xe, !sync->fence)) -return -EINVAL ; +if (XE_IOCTL_DBG (xe, !sync->fence)) { + err = -EINVAL ; + goto free_sync; + } err =dma_fence_chain_find_seqno (&sync->fence, sync_in.timeline_value);if (err) -return err; + goto free_sync; }break ;
@@ -200,8 +206,10 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef,if (XE_IOCTL_DBG (xe,IS_ERR (sync->ufence)))return PTR_ERR (sync->ufence); sync->ufence_chain_fence =dma_fence_chain_alloc (); -if (!sync->ufence_chain_fence) -return -ENOMEM ; +if (!sync->ufence_chain_fence) { + err = -ENOMEM ; + goto free_sync; + } sync->ufence_syncobj = ufence_syncobj; }
@@ -216,6 +224,10 @@ int xe_sync_entry_parse(struct xe_device *xe, struct xe_file *xef, sync->timeline_value = sync_in.timeline_value;return 0 ; + +free_sync: +xe_sync_entry_cleanup (sync); +return err; }ALLOW_ERROR_INJECTION (xe_sync_entry_parse,ERRNO );
drivers/gpu/drm/xe/xe_wa.c +7 -6
@@ -255,12 +255,13 @@ static const struct xe_rtp_entry_sr gt_was[] = { {XE_RTP_NAME ("16025250150" ),XE_RTP_RULES (GRAPHICS_VERSION (2001 )), -XE_RTP_ACTIONS (SET (LSN_VC_REG2 , -LSN_LNI_WGT (1 ) | -LSN_LNE_WGT (1 ) | -LSN_DIM_X_WGT (1 ) | -LSN_DIM_Y_WGT (1 ) | -LSN_DIM_Z_WGT (1 ))) +XE_RTP_ACTIONS (FIELD_SET (LSN_VC_REG2 , +LSN_LNI_WGT_MASK |LSN_LNE_WGT_MASK | +LSN_DIM_X_WGT_MASK |LSN_DIM_Y_WGT_MASK | +LSN_DIM_Z_WGT_MASK , +LSN_LNI_WGT (1 ) |LSN_LNE_WGT (1 ) | +LSN_DIM_X_WGT (1 ) |LSN_DIM_Y_WGT (1 ) | +LSN_DIM_Z_WGT (1 ))) },/* Xe2_HPM */
drivers/hwmon/pmbus/q54sj108a2.c +10 -9
@@ -78,7 +78,8 @@ static ssize_t q54sj108a2_debugfs_read(struct file *file, char __user *buf,int idx = *idxp;struct q54sj108a2_data *psu =to_psu (idxp, idx);char data[I2C_SMBUS_BLOCK_MAX +2 ] = {0 }; -char data_char[I2C_SMBUS_BLOCK_MAX +2 ] = {0 }; +char data_char[I2C_SMBUS_BLOCK_MAX *2 +2 ] = {0 }; +char *out = data;char *res;switch (idx) {
@@ -149,27 +150,27 @@ static ssize_t q54sj108a2_debugfs_read(struct file *file, char __user *buf,if (rc <0 )return rc; - res =bin2hex (data, data_char,32 ); - rc = res - data; - + res =bin2hex (data_char, data, rc); + rc = res - data_char; + out = data_char;break ;case Q54SJ108A2_DEBUGFS_FLASH_KEY : rc =i2c_smbus_read_block_data (psu->client,PMBUS_FLASH_KEY_WRITE , data);if (rc <0 )return rc; - res =bin2hex (data, data_char,4 ); - rc = res - data; - + res =bin2hex (data_char, data, rc); + rc = res - data_char; + out = data_char;break ;default :return -EINVAL ; } - data[rc] ='\n' ; + out[rc] ='\n' ; rc +=2 ; -return simple_read_from_buffer (buf, count, ppos, data, rc); +return simple_read_from_buffer (buf, count, ppos, out, rc); } static ssize_t q54sj108a2_debugfs_write(struct file *file, const char __user *buf,
drivers/i3c/master/dw-i3c-master.c +2 -2
@@ -1010,7 +1010,7 @@ static int dw_i3c_master_reattach_i3c_dev(struct i3c_dev_desc *dev, master->free_pos &= ~BIT (pos); } -writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (dev->info.dyn_addr), +writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (dev->info.dyn_addr) |DEV_ADDR_TABLE_SIR_REJECT , master->regs +DEV_ADDR_TABLE_LOC (master->datstartaddr, data->index));
@@ -1039,7 +1039,7 @@ static int dw_i3c_master_attach_i3c_dev(struct i3c_dev_desc *dev) master->free_pos &= ~BIT (pos);i3c_dev_set_master_data (dev, data); -writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (master->devs[pos].addr), +writel (DEV_ADDR_TABLE_DYNAMIC_ADDR (master->devs[pos].addr) |DEV_ADDR_TABLE_SIR_REJECT , master->regs +DEV_ADDR_TABLE_LOC (master->datstartaddr, data->index));
drivers/i3c/master/mipi-i3c-hci/cmd.h +1 -0
@@ -17,6 +17,7 @@#define CMD_0_TOC W0_BIT_(31)#define CMD_0_ROC W0_BIT_(30)#define CMD_0_ATTR W0_MASK(2, 0) +#define CMD_0_TID W0_MASK(6, 3)/* * Response Descriptor Structure
drivers/i3c/master/mipi-i3c-hci/cmd_v1.c +1 -1
@@ -336,7 +336,7 @@ static int hci_cmd_v1_daa(struct i3c_hci *hci) hci->io->queue_xfer (hci, xfer,1 );if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer,1 )) { - ret = -ETIME ; + ret = -ETIMEDOUT ;break ; } if ((RESP_STATUS(xfer->response) == RESP_ERR_ADDR_HEADER ||
drivers/i3c/master/mipi-i3c-hci/cmd_v2.c +1 -1
@@ -277,7 +277,7 @@ static int hci_cmd_v2_daa(struct i3c_hci *hci) hci->io->queue_xfer (hci, xfer,2 );if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer,2 )) { - ret = -ETIME ; + ret = -ETIMEDOUT ;break ; }if (RESP_STATUS (xfer[0 ].response) !=RESP_SUCCESS ) {
drivers/i3c/master/mipi-i3c-hci/core.c +6 -3
@@ -230,7 +230,7 @@ static int i3c_hci_send_ccc_cmd(struct i3c_master_controller *m, goto out;if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer, nxfers)) { - ret = -ETIME ; + ret = -ETIMEDOUT ; goto out; }for (i = prefixed; i < nxfers; i++) {
@@ -309,7 +309,7 @@ static int i3c_hci_i3c_xfers(struct i3c_dev_desc *dev, goto out;if (!wait_for_completion_timeout (&done,HZ ) && hci->io->dequeue_xfer (hci, xfer, nxfers)) { - ret = -ETIME ; + ret = -ETIMEDOUT ; goto out; }for (i =0 ; i < nxfers; i++) {
@@ -357,7 +357,7 @@ static int i3c_hci_i2c_xfers(struct i2c_dev_desc *dev, goto out;if (!wait_for_completion_timeout (&done, m->i2c.timeout) && hci->io->dequeue_xfer (hci, xfer, nxfers)) { - ret = -ETIME ; + ret = -ETIMEDOUT ; goto out; }for (i =0 ; i < nxfers; i++) {
@@ -631,6 +631,9 @@ static int i3c_hci_init(struct i3c_hci *hci)if (ret)return ret; +spin_lock_init (&hci->lock); +mutex_init (&hci->control_mutex); +/* * Now let's reset the hardware. * SOFT_RST must be clear before we write to it.
drivers/i3c/master/mipi-i3c-hci/dma.c +61 -35
186 lines not on this page · raw message
drivers/i3c/master/mipi-i3c-hci/hci.h +2 -0
@@ -45,6 +45,8 @@ struct i3c_hci {const struct hci_io_ops *io;void *io_data;const struct hci_cmd_ops *cmd; +spinlock_t lock; +struct mutex control_mutex;atomic_t next_cmd_tid;u32 caps;unsigned int quirks;
drivers/i3c/master/mipi-i3c-hci/pio.c +7 -9
@@ -124,7 +124,6 @@ struct hci_pio_ibi_data { };struct hci_pio_data { -spinlock_t lock;struct hci_xfer *curr_xfer, *xfer_queue;struct hci_xfer *curr_rx, *rx_queue;struct hci_xfer *curr_tx, *tx_queue;
@@ -146,7 +145,6 @@ static int hci_pio_init(struct i3c_hci *hci)return -ENOMEM ; hci->io_data = pio; -spin_lock_init (&pio->lock); size_val =pio_reg_read (QUEUE_SIZE ); dev_info(&hci->master.dev, "CMD/RESP FIFO = %ld entries\n",
@@ -609,7 +607,7 @@ static int hci_pio_queue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n) xfer[i].data_left = xfer[i].data_len; } -spin_lock_irq (&pio->lock); +spin_lock_irq (&hci->lock); prev_queue_tail = pio->xfer_queue; pio->xfer_queue = &xfer[n -1 ];if (pio->curr_xfer) {
@@ -623,7 +621,7 @@ static int hci_pio_queue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n)pio_reg_read (INTR_STATUS ), pio_reg_read(INTR_SIGNAL_ENABLE)); } -spin_unlock_irq (&pio->lock); +spin_unlock_irq (&hci->lock);return 0 ; }
@@ -694,14 +692,14 @@ static bool hci_pio_dequeue_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, intstruct hci_pio_data *pio = hci->io_data;int ret; -spin_lock_irq (&pio->lock); +spin_lock_irq (&hci->lock);dev_dbg (&hci->master.dev,"n=%d status=%#x/%#x" , n,pio_reg_read (INTR_STATUS ),pio_reg_read (INTR_SIGNAL_ENABLE )); dev_dbg(&hci->master.dev, "main_status = %#x/%#x",
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_icm42600/inv_icm42600_accel.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_icm42600/inv_icm42600_buffer.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_icm42600/inv_icm42600_gyro.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_icm45600/inv_icm45600.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_icm45600/inv_icm45600_core.c +8 -3
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/iio/imu/inv_mpu6050/inv_mpu_trigger.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/irqchip/irq-riscv-aplic-direct.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/irqchip/irq-riscv-aplic-main.c +184 -3
187 lines not on this page · raw message
drivers/irqchip/irq-riscv-aplic-main.h +19 -0
Lines of this file are not shown. View the raw message.
drivers/net/bonding/bond_main.c +63 -7
70 lines not on this page · raw message
drivers/net/dsa/realtek/rtl8366rb-leds.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-drv.c +10 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c +75 -7
82 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.c +12 -19
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmgenet.h +1 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/broadcom/genet/bcmmii.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/cadence/macb_main.c +95 -3
98 lines not on this page · raw message
drivers/net/ethernet/freescale/enetc/netc_blk_ctrl.c +10 -14
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000/e1000_main.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/e1000e/netdev.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +7 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_ethtool.c +6 -13
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/iavf/iavf_main.c +28 -53
81 lines not on this page · raw message
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/devlink/devlink.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_common.c +10 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_ethtool.c +14 -21
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ixgbevf/vf.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_fs.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +9 -14
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +25 -20
45 lines not on this page · raw message
drivers/net/ethernet/microsoft/mana/gdma_main.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +18 -5
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/spacemit/k1_emac.c +13 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +9 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_ieee80211.c +10 -5
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/usb/core/message.c +79 -21
100 lines not on this page · raw message
drivers/usb/gadget/function/f_mass_storage.c +10 -2
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/f_ncm.c +80 -66
146 lines not on this page · raw message
drivers/usb/gadget/function/u_ether.c +22 -45
67 lines not on this page · raw message
drivers/usb/gadget/function/u_ether.h +26 -30
56 lines not on this page · raw message
drivers/usb/gadget/function/u_ether_configfs.h +0 -176
176 lines not on this page · raw message
drivers/usb/gadget/function/uvc_video.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/typec/altmodes/displayport.c +6 -1
Lines of this file are not shown. View the raw message.
include/kunit/run-in-irq-context.h +28 -16
44 lines not on this page · raw message
kernel/kthread.c +5 -36
41 lines not on this page · raw message
kernel/liveupdate/luo_file.c +25 -16
41 lines not on this page · raw message
kernel/sched/core.c +28 -51
79 lines not on this page · raw message
kernel/sched/ext.c +71 -14
85 lines not on this page · raw message
kernel/trace/trace_events.c +42 -16
58 lines not on this page · raw message
mm/damon/core.c +44 -35
79 lines not on this page · raw message
mm/memfd_luo.c +49 -7
56 lines not on this page · raw message
mm/slub.c +37 -17
54 lines not on this page · raw message
sound/soc/qcom/qdsp6/q6apm-lpass-dais.c +1 -0
Lines of this file are not shown. View the raw message.
sound/usb/format.c +65 -5
70 lines not on this page · raw message
tools/testing/selftests/filesystems/nsfs/iterate_mntns.c +15 -10
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.