Linux 7.2.5
Greg Kroah-Hartman
maintainerI'm announcing the release of the 7.2.5 kernel.
All users of the 7.2 kernel series must upgrade.
The updated 7.2.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-7.2.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-kernel-mm-damon | 8 Documentation/admin-guide/cgroup-v1/memory.rst | 49 -- Documentation/devicetree/bindings/media/nxp,imx8-isi.yaml | 4 Documentation/trace/hisi-ptt.rst | 28 - Documentation/userspace-api/media/v4l/ext-ctrls-colorimetry.rst | 12 Makefile | 2 arch/arm64/include/asm/cpu.h | 1 arch/arm64/include/asm/cpufeature.h | 7 arch/arm64/include/asm/kvm_host.h | 3 arch/arm64/include/asm/kvm_nested.h | 20 arch/arm64/kernel/cpu_errata.c | 2 arch/arm64/kernel/cpufeature.c | 33 + arch/arm64/kernel/cpuinfo.c | 2 arch/arm64/kvm/at.c | 2 arch/arm64/kvm/hyp/vhe/switch.c | 3 arch/arm64/kvm/nested.c | 139 ++++-- arch/arm64/kvm/sys_regs.c | 11 arch/arm64/kvm/vgic/vgic-init.c | 1 arch/arm64/kvm/vgic/vgic-its.c | 8 arch/arm64/kvm/vgic/vgic-v3-nested.c | 2 arch/arm64/kvm/vgic/vgic-v3.c | 12 arch/arm64/mm/fault.c | 12 arch/loongarch/Kconfig | 2 arch/loongarch/include/asm/kvm_dmsintc.h | 1 arch/loongarch/include/asm/kvm_eiointc.h | 1 arch/loongarch/include/asm/kvm_host.h | 1 arch/loongarch/include/asm/kvm_ipi.h | 1 arch/loongarch/include/asm/kvm_pch_pic.h | 1 arch/loongarch/include/asm/pgtable.h | 9 arch/loongarch/kernel/acpi.c | 3 arch/loongarch/kernel/kprobes.c | 3 arch/loongarch/kernel/rethook_trampoline.S | 2 arch/loongarch/kvm/exit.c | 1 arch/loongarch/kvm/intc/dmsintc.c | 8 arch/loongarch/kvm/intc/eiointc.c | 5 arch/loongarch/kvm/intc/ipi.c | 5 arch/loongarch/kvm/intc/pch_pic.c | 8 arch/loongarch/kvm/main.c | 39 + arch/loongarch/kvm/mmu.c | 10 arch/loongarch/kvm/vcpu.c | 8 arch/loongarch/kvm/vm.c | 1 arch/loongarch/mm/init.c | 17 arch/loongarch/net/bpf_jit.c | 40 - arch/parisc/kernel/head.S | 1 arch/powerpc/include/asm/papr-watchdog.h | 64 +++ arch/powerpc/include/asm/reg.h | 12 arch/powerpc/kexec/file_load_64.c | 2 arch/powerpc/kexec/ranges.c | 12 arch/powerpc/kvm/book3s_hv.c | 15 arch/powerpc/kvm/powerpc.c | 6 arch/powerpc/mm/book3s64/radix_pgtable.c | 7 arch/powerpc/platforms/pseries/setup.c | 28 + arch/riscv/net/bpf_jit_comp64.c | 10 arch/s390/include/asm/nmi.h | 3 arch/s390/kernel/nmi.c | 5 arch/s390/kvm/guestdbg.c | 9 arch/s390/kvm/interrupt.c | 26 - arch/s390/kvm/kvm-s390.c | 22 - arch/x86/events/intel/core.c | 10 arch/x86/events/intel/lbr.c | 12 arch/x86/events/perf_event.h | 2 arch/x86/include/asm/kvm-x86-ops.h | 4 arch/x86/include/asm/kvm_host.h | 6 arch/x86/kvm/hyperv.c | 25 - arch/x86/kvm/mmu/mmu.c | 107 +++-- arch/x86/kvm/mmu/tdp_iter.h | 7 arch/x86/kvm/mmu/tdp_mmu.c | 20 arch/x86/kvm/svm/sev.c | 80 +++ arch/x86/kvm/svm/svm.c | 6 arch/x86/kvm/svm/svm.h | 2 arch/x86/kvm/vmx/nested.c | 75 ++- arch/x86/kvm/x86.c | 17 arch/x86/kvm/x86.h | 2 block/genhd.c | 7 drivers/accel/amdxdna/amdxdna_gem.c | 3 drivers/accel/ethosu/ethosu_drv.c | 2 drivers/accel/ethosu/ethosu_job.c | 10 drivers/acpi/battery.c | 155 +++++-- drivers/ata/ahci.c | 49 ++ drivers/block/ublk_drv.c | 6 drivers/block/zram/zram_drv.c | 27 - drivers/block/zram/zram_drv.h | 16 drivers/clk/mediatek/Kconfig | 1 drivers/clk/meson/gxbb.c | 2 drivers/clk/microchip/clk-mpfs.c | 2 drivers/clk/qcom/gcc-mdm9607.c | 182 -------- drivers/clk/qcom/gcc-msm8916.c | 5 drivers/clk/qcom/gcc-msm8939.c | 5 drivers/clk/rockchip/clk-rk3588.c | 2 drivers/clk/xilinx/clk-xlnx-clock-wizard.c | 4 drivers/cpuidle/cpuidle-psci.c | 42 -- drivers/cpuidle/dt_idle_genpd.c | 3 drivers/dma-buf/dma-buf.c | 20 drivers/dma-buf/dma-heap.c | 80 +-- drivers/dma/dw-edma/dw-edma-core.c | 24 - drivers/dma/dw-edma/dw-hdma-v0-core.c | 2 drivers/dma/fsl-edma-trace.h | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 59 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c | 6 drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 3 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 8 drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c | 8 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 8 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c | 10 drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c | 10 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 3 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c | 23 + drivers/gpu/drm/amd/amdkfd/kfd_migrate.c | 56 +- drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c | 12 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 6 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c | 13 drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_shared_types.h | 4 drivers/gpu/drm/amd/display/dc/dml2_0/dml2_translation_helper.c | 1 drivers/gpu/drm/amd/display/dc/link/link_factory.c | 2 drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_dpia_bw.c | 5 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 3 drivers/gpu/drm/drm_atomic_uapi.c | 2 drivers/gpu/drm/drm_drv.c | 34 + drivers/gpu/drm/drm_pagemap.c | 128 +++++- drivers/gpu/drm/gud/gud_connector.c | 12 drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c | 52 -- drivers/gpu/drm/i915/display/intel_cursor.c | 15 drivers/gpu/drm/i915/display/skl_universal_plane.c | 15 drivers/gpu/drm/i915/i915_pci.c | 3 drivers/gpu/drm/msm/dsi/dsi_host.c | 12 drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h | 1 drivers/gpu/drm/nouveau/nouveau_chan.c | 9 drivers/gpu/drm/nouveau/nouveau_dmem.c | 18 drivers/gpu/drm/nouveau/nouveau_sgdma.c | 4 drivers/gpu/drm/nouveau/nouveau_uvmm.c | 6 drivers/gpu/drm/nouveau/nvkm/engine/device/base.c | 10 drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild | 1 drivers/gpu/drm/nouveau/nvkm/engine/disp/ga102.c | 13 drivers/gpu/drm/nouveau/nvkm/engine/disp/gb202.c | 191 +++++++++ drivers/gpu/drm/nouveau/nvkm/engine/disp/gv100.c | 4 drivers/gpu/drm/nouveau/nvkm/engine/disp/head.h | 4 drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h | 1 drivers/gpu/drm/nouveau/nvkm/engine/disp/priv.h | 17 drivers/gpu/drm/nouveau/nvkm/engine/disp/tu102.c | 86 ++++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c | 129 ++---- drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/disp.c | 64 +++ drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c | 9 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/disp.h | 2 drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h | 5 drivers/gpu/drm/panel/panel-edp.c | 19 drivers/gpu/drm/panthor/panthor_fw.c | 22 - drivers/gpu/drm/solomon/ssd130x.c | 9 drivers/gpu/drm/sun4i/sun4i_backend.c | 2 drivers/gpu/drm/sysfb/ofdrm.c | 8 drivers/gpu/drm/sysfb/simpledrm.c | 74 ++- drivers/gpu/drm/ttm/ttm_pool.c | 15 drivers/gpu/drm/xe/xe_vram.c | 26 + drivers/hid/bpf/hid_bpf_struct_ops.c | 17 drivers/hid/hid-rmi.c | 46 ++ drivers/hid/hid-sony.c | 87 +--- drivers/hid/wacom_wac.c | 13 drivers/i2c/busses/i2c-designware-platdrv.c | 2 drivers/i2c/busses/i2c-qcom-cci.c | 11 drivers/i2c/busses/i2c-qcom-geni.c | 4 drivers/i2c/i2c-core-base.c | 6 drivers/i2c/i2c-mux.c | 1 drivers/i2c/muxes/i2c-demux-pinctrl.c | 1 drivers/iio/adc/Kconfig | 2 drivers/iio/adc/ad4080.c | 5 drivers/iio/adc/adi-axi-adc.c | 30 + drivers/iio/adc/pac1921.c | 2 drivers/iio/adc/ti-ads7138.c | 42 +- drivers/iio/chemical/atlas-sensor.c | 19 drivers/iio/chemical/sgp30.c | 3 drivers/iio/dac/Kconfig | 1 drivers/iio/dac/ad3552r-hs.c | 2 drivers/iio/dac/ad5446-i2c.c | 2 drivers/iio/dac/m62332.c | 17 drivers/iio/gyro/mpu3050-core.c | 2 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c | 5 drivers/iio/industrialio-buffer.c | 38 - drivers/iio/light/apds9306.c | 8 drivers/iio/light/cm32181.c | 2 drivers/iio/light/gp2ap002.c | 10 drivers/iio/light/ltrf216a.c | 3 drivers/iio/light/opt4001.c | 37 - drivers/iio/light/opt4060.c | 5 drivers/iio/pressure/dps310.c | 3 drivers/iio/pressure/mpl115.c | 11 drivers/iio/proximity/srf04.c | 1 drivers/iio/temperature/hid-sensor-temperature.c | 3 drivers/irqchip/irq-mbigen.c | 20 drivers/irqchip/irq-stm32mp-exti.c | 4 drivers/md/dm.c | 14 drivers/media/cec/core/cec-adap.c | 10 drivers/media/cec/core/cec-core.c | 2 drivers/media/cec/platform/meson/ao-cec-g12a.c | 1 drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c | 3 drivers/media/dvb-frontends/rtl2832_sdr.c | 21 - drivers/media/i2c/alvium-csi2.c | 2 drivers/media/i2c/imx355.c | 3 drivers/media/i2c/imx415.c | 4 drivers/media/i2c/ov02a10.c | 12 drivers/media/i2c/ov7740.c | 4 drivers/media/i2c/ov9282.c | 3 drivers/media/i2c/vd55g1.c | 32 + drivers/media/i2c/video-i2c.c | 8 drivers/media/pci/cobalt/cobalt-alsa-main.c | 1 drivers/media/pci/cx23885/cimax2.c | 1 drivers/media/pci/intel/ipu-bridge.c | 8 drivers/media/pci/intel/ipu6/ipu6-isys.c | 1 drivers/media/pci/saa7164/saa7164-core.c | 8 drivers/media/pci/zoran/zoran_card.c | 2 drivers/media/platform/amphion/venc.c | 2 drivers/media/platform/arm/mali-c55/mali-c55-core.c | 2 drivers/media/platform/arm/mali-c55/mali-c55-params.c | 1 drivers/media/platform/arm/mali-c55/mali-c55-registers.h | 2 drivers/media/platform/arm/mali-c55/mali-c55-resizer.c | 2 drivers/media/platform/broadcom/bcm2835-unicam.c | 3 drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c | 64 ++- drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c | 6 drivers/media/platform/chips-media/wave5/wave5-vpuconfig.h | 2 drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c | 6 drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c | 6 drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c | 2 drivers/media/platform/qcom/iris/iris_ctrls.c | 2 drivers/media/platform/qcom/iris/iris_hfi_gen1.c | 16 drivers/media/platform/qcom/iris/iris_platform_common.h | 1 drivers/media/platform/qcom/iris/iris_state.c | 2 drivers/media/platform/qcom/iris/iris_vidc.c | 11 drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 drivers/media/platform/qcom/venus/hfi_parser.c | 9 drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c | 5 drivers/media/platform/rockchip/rga/rga3-hw.c | 12 drivers/media/platform/rockchip/rkvdec/rkvdec-hevc-common.c | 3 drivers/media/platform/rockchip/rkvdec/rkvdec.c | 8 drivers/media/platform/ti/vpe/vip.c | 37 + drivers/media/rc/sunxi-cir.c | 9 drivers/media/test-drivers/vimc/vimc-capture.c | 4 drivers/media/tuners/tda18250.c | 4 drivers/media/usb/airspy/airspy.c | 17 drivers/media/usb/cx231xx/cx231xx-video.c | 4 drivers/media/usb/em28xx/em28xx-cards.c | 3 drivers/media/usb/em28xx/em28xx-core.c | 2 drivers/media/usb/go7007/snd-go7007.c | 10 drivers/media/usb/s2255/s2255drv.c | 11 drivers/media/usb/usbtv/usbtv-audio.c | 11 drivers/media/v4l2-core/v4l2-async.c | 1 drivers/media/v4l2-core/v4l2-ctrls-core.c | 68 ++- drivers/media/v4l2-core/v4l2-fwnode.c | 2 drivers/misc/fastrpc.c | 16 drivers/mtd/mtdoops.c | 3 drivers/mtd/nand/ecc-realtek.c | 1 drivers/mtd/nand/raw/nand_onfi.c | 27 + drivers/mtd/nand/raw/pl35x-nand-controller.c | 5 drivers/mtd/nand/raw/sunxi_nand.c | 119 ++++- drivers/mtd/parsers/afs.c | 7 drivers/nvdimm/btt.c | 8 drivers/nvme/host/core.c | 24 + drivers/nvme/host/fabrics.c | 2 drivers/nvme/host/fc.c | 26 - drivers/nvme/host/tcp.c | 7 drivers/nvme/target/auth.c | 6 drivers/nvme/target/core.c | 2 drivers/nvme/target/nvmet.h | 2 drivers/nvme/target/tcp.c | 10 drivers/parisc/eisa.c | 5 drivers/pci/hotplug/pnv_php.c | 2 drivers/pci/hotplug/rpaphp_slot.c | 2 drivers/pci/pci.c | 5 drivers/pci/slot.c | 50 +- drivers/pmdomain/mediatek/Kconfig | 5 drivers/pmdomain/qcom/rpmhpd.c | 4 drivers/power/supply/ab8500_fg.c | 32 + drivers/remoteproc/qcom_q6v5_pas.c | 13 drivers/rtc/rtc-rzn1.c | 30 + drivers/s390/crypto/vfio_ap_ops.c | 203 ++++++---- drivers/scsi/megaraid/megaraid_sas_base.c | 13 drivers/scsi/pm8001/pm8001_init.c | 4 drivers/scsi/qla2xxx/qla_attr.c | 6 drivers/scsi/qla2xxx/qla_bsg.c | 46 +- drivers/scsi/qla2xxx/qla_dbg.c | 2 drivers/scsi/qla2xxx/qla_dfs.c | 4 drivers/scsi/qla2xxx/qla_edif.c | 3 drivers/scsi/qla2xxx/qla_gs.c | 4 drivers/scsi/qla2xxx/qla_init.c | 61 ++- drivers/scsi/qla2xxx/qla_inline.h | 13 drivers/scsi/qla2xxx/qla_isr.c | 39 + drivers/scsi/qla2xxx/qla_mbx.c | 28 - drivers/scsi/qla2xxx/qla_nvme.c | 31 + drivers/scsi/qla2xxx/qla_os.c | 14 drivers/scsi/scsi_bsg.c | 47 +- drivers/soc/fsl/qe/qe_ports_ic.c | 7 drivers/soc/qcom/qcom-geni-se.c | 24 - drivers/spi/spi-bcm63xx-hsspi.c | 8 drivers/spi/spi-bcm63xx.c | 6 drivers/spi/spi-bcmbca-hsspi.c | 8 drivers/spi/spi.c | 34 - drivers/staging/media/meson/vdec/vdec.c | 4 drivers/staging/media/sunxi/cedrus/cedrus.c | 4 drivers/staging/rtl8723bs/core/rtw_ieee80211.c | 7 drivers/staging/rtl8723bs/core/rtw_mlme.c | 3 drivers/target/iscsi/iscsi_target_login.c | 2 drivers/thermal/imx_thermal.c | 9 drivers/thermal/qoriq_thermal.c | 13 drivers/usb/cdns3/cdnsp-gadget.c | 111 +++++ drivers/usb/cdns3/cdnsp-gadget.h | 1 drivers/usb/cdns3/cdnsp-mem.c | 98 +--- drivers/usb/dwc3/dwc3-google.c | 1 drivers/usb/dwc3/ep0.c | 2 drivers/usb/dwc3/gadget.c | 21 - drivers/usb/gadget/function/f_fs.c | 31 + drivers/usb/gadget/function/f_mass_storage.c | 5 drivers/usb/gadget/function/f_midi.c | 2 drivers/usb/gadget/function/f_midi2.c | 17 drivers/usb/gadget/functions.c | 2 drivers/usb/gadget/legacy/inode.c | 3 drivers/usb/host/xhci-ring.c | 32 + drivers/usb/image/mdc800.c | 4 drivers/usb/storage/ene_ub6250.c | 2 drivers/usb/storage/realtek_cr.c | 9 drivers/usb/typec/hd3ss3220.c | 9 drivers/usb/typec/mux.c | 21 - drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c | 2 drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c | 5 drivers/usb/typec/tcpm/tcpm.c | 28 + drivers/usb/typec/tipd/core.c | 17 drivers/usb/typec/tipd/tps6598x.h | 4 drivers/usb/typec/ucsi/displayport.c | 2 drivers/watchdog/pseries-wdt.c | 53 -- fs/ceph/crypto.c | 50 +- fs/ceph/mds_client.c | 12 fs/ceph/mds_client.h | 1 fs/f2fs/data.c | 8 fs/f2fs/debug.c | 4 fs/f2fs/dir.c | 7 fs/f2fs/f2fs.h | 29 + fs/f2fs/file.c | 170 ++++++-- fs/f2fs/gc.c | 38 - fs/f2fs/gc.h | 27 - fs/f2fs/inline.c | 2 fs/f2fs/iostat.c | 6 fs/f2fs/namei.c | 17 fs/f2fs/node.c | 10 fs/f2fs/recovery.c | 41 +- fs/f2fs/segment.c | 18 fs/f2fs/super.c | 4 fs/f2fs/sysfs.c | 30 - fs/f2fs/xattr.c | 2 fs/nfsd/nfs4proc.c | 5 fs/nfsd/nfs4state.c | 118 ++++- fs/nfsd/nfsctl.c | 6 fs/ntfs3/frecord.c | 20 fs/smb/server/oplock.c | 79 ++- fs/smb/server/smb2pdu.c | 7 include/linux/dma-buf.h | 1 include/linux/ftrace.h | 5 include/linux/kprobes.h | 1 include/linux/kvm_host.h | 1 include/linux/pci.h | 8 include/linux/sched/rt.h | 2 include/linux/sched/user.h | 3 include/linux/soc/qcom/geni-se.h | 4 include/trace/events/f2fs.h | 20 kernel/bpf/percpu_freelist.c | 35 + kernel/bpf/percpu_freelist.h | 1 kernel/bpf/stackmap.c | 173 +++++--- kernel/dma/direct.c | 18 kernel/events/core.c | 20 kernel/futex/pi.c | 16 kernel/futex/requeue.c | 12 kernel/kprobes.c | 14 kernel/locking/rtmutex_api.c | 2 kernel/sched/core.c | 16 kernel/trace/ftrace.c | 70 ++- kernel/trace/ring_buffer.c | 11 kernel/trace/trace.c | 67 +++ kernel/trace/trace.h | 5 kernel/trace/trace_btf.c | 12 kernel/trace/trace_events.c | 28 + kernel/trace/trace_functions.c | 2 kernel/trace/trace_stack.c | 2 lib/once.c | 2 mm/damon/core.c | 27 - mm/damon/ops-common.c | 5 mm/damon/paddr.c | 20 mm/damon/sysfs-schemes.c | 18 mm/damon/sysfs.c | 29 + mm/damon/tests/core-kunit.h | 33 + mm/damon/tests/vaddr-kunit.h | 5 mm/damon/vaddr.c | 34 - mm/huge_memory.c | 2 mm/hugetlb.c | 20 mm/hugetlb_cgroup.c | 7 mm/hugetlb_cma.c | 21 - mm/khugepaged.c | 6 mm/madvise.c | 8 mm/memcontrol-v1.c | 43 +- mm/memcontrol.c | 113 ++++- mm/mempolicy.c | 2 mm/migrate_device.c | 18 mm/page_alloc.c | 6 mm/secretmem.c | 116 +++++ mm/userfaultfd.c | 4 net/batman-adv/bridge_loop_avoidance.c | 15 net/batman-adv/distributed-arp-table.c | 8 net/batman-adv/main.c | 4 net/batman-adv/mesh-interface.c | 7 net/batman-adv/multicast_forw.c | 7 net/core/skbuff.c | 5 net/sunrpc/xprtrdma/ib_client.c | 24 - rust/kernel/drm/ioctl.rs | 6 samples/damon/mtier.c | 14 samples/damon/prcl.c | 11 samples/damon/wsse.c | 11 security/integrity/ima/ima_appraise.c | 2 sound/core/pcm_native.c | 2 sound/core/rawmidi.c | 2 sound/parisc/harmony.c | 6 sound/soc/codecs/adau1761.c | 34 - sound/soc/codecs/cs35l33.c | 14 sound/soc/codecs/cs35l34.c | 14 sound/soc/codecs/cx2072x.c | 122 +++--- sound/soc/codecs/hdac_hda.c | 4 sound/soc/codecs/max9860.c | 2 sound/soc/codecs/ml26124.c | 4 sound/soc/codecs/pcm512x.c | 40 - sound/soc/codecs/pm4125-sdw.c | 2 sound/soc/codecs/rt1017-sdca-sdw.h | 10 sound/soc/codecs/rt1316-sdw.c | 2 sound/soc/codecs/rt1318-sdw.c | 2 sound/soc/codecs/rt1318.c | 4 sound/soc/codecs/rt274.c | 8 sound/soc/codecs/rt286.c | 12 sound/soc/codecs/rt298.c | 12 sound/soc/codecs/rt700-sdw.h | 11 sound/soc/codecs/rt711-sdca-sdw.h | 6 sound/soc/codecs/rt711-sdw.h | 10 sound/soc/codecs/rt712-sdca-dmic.h | 6 sound/soc/codecs/rt712-sdca-sdw.h | 11 sound/soc/codecs/rt715-sdca-sdw.h | 12 sound/soc/codecs/rt715-sdw.h | 32 - sound/soc/codecs/rt721-sdca-sdw.h | 28 - sound/soc/codecs/sgtl5000.c | 2 sound/soc/codecs/sti-sas.c | 2 sound/soc/codecs/tas2552.c | 14 sound/soc/codecs/tas2764.c | 2 sound/soc/codecs/tas2780.c | 2 sound/soc/codecs/tas2783-sdw.c | 171 ++++---- sound/soc/fsl/fsl_easrc.c | 8 sound/soc/fsl/mpc5200_psc_i2s.c | 1 sound/soc/intel/atom/sst/sst_pci.c | 4 sound/soc/loongson/loongson_card.c | 6 sound/soc/samsung/aries_wm8994.c | 1 sound/usb/midi.c | 2 tools/perf/Makefile.config | 2 tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c | 155 ++++--- tools/perf/util/hisi-ptt-decoder/hisi-ptt-pkt-decoder.c | 47 +- tools/perf/util/hisi-ptt-decoder/hisi-ptt-pkt-decoder.h | 12 tools/testing/selftests/mm/memfd_secret.c | 30 - virt/kvm/guest_memfd.c | 4 462 files changed, 5650 insertions(+), 2710 deletions(-)
Abdifatah Suruur (1):
ksmbd: fix use-after-free in oplock break notification
Abel Vesa (1):
Revert "pmdomain: qcom: rpmhpd: Add missing MXC and MMCX power domains for Eliza"
Ahmad Byagowi (1):
i2c: mux: Fix channel node leak on adapter add failure
Akari Tsuyukusa (1):
clk: mediatek: mt8196: Select REGMAP_MMIO for vlpckgen
Aleksandr Nogikh (1):
usb: gadget: midi2: Fix null-pointer dereference in f_midi2_free_ep_reqs
Alex Deucher (1):
drm/amdgpu/gfx8: only apply compute quantums to KCQs
Amit Barzilai (2):
drm/ssd130x: fix column and row end address in partial updates for ssd132x
drm/ssd130x: fix column and row end address in partial updates in ssd133xAmit Machhiwal (1):
KVM: PPC: Book3S HV: Validate arch_compat against host compatibility mode
Amit Sunil Dhamne (1):
usb: typec: tcpm: constrain TCPM_SOURCING_VBUS event handling
Andy Shevchenko (1):
usb: f_mass_storage: Bump local buffer size in fsg_common_create_luns()
Aneesh Kumar K.V (Arm) (1):
dma-direct: return struct page from dma_direct_alloc_from_pool()
Anthony Krowiak (9):
s390/vfio-ap: fix stale pqap_hook pointer on error in vfio_ap_mdev_set_kvm() s390/vfio-ap: Fix stale do_remove flag across iterations in vfio_ap_mdev_cfg_remove s390/vfio-ap: Fix control domain removal in vfio_ap_mdev_cfg_remove s390/vfio-ap: Fix dereference matrix_mdev->kvm without checking for NULL s390/vfio-ap: Fix hot-unplug skipped when last AP adapter or domain removed s390/vfio-ap: Fix missing lock required to access list of ap_matrix_mdev objects s390/vfio-ap: Fix NULL deref in status_show() during queue probe s390/vfio-ap: fix potential use of uninitialized apm_filtered bitmap s390/vfio-ap: Fix required lock not held during update of ap_matrix_mdev object
Antoniu Miclaus (2):
iio: adc: ad4080: configure backend data size
iio: adc: adi-axi-adc: add data size support for AD408X backend
Arash Golgol (1):
media: vimc: fix pixel format lookup in enum_framesizes
Arthur Gautier (1):
xhci: fix lost bounce buffers on TDs spanning several ring segments
Austin Zheng (1):
drm/amd/display: Remove const Qualifier From Non-Pointer Fields
Babanpreet Singh (1):
iio: dac: ad3552r-hs: fix scnprintf() buffer bound in data source show
Baineng Shou (2):
dma-buf: dma-heap: don't publish fd before copy_to_user() succeeds
misc: fastrpc: don't publish fd before copy_to_user() succeeds
Baolin Wang (1):
mm: fix incorrect vm_flags usage when checking allowable orders for tmpfs
Benjamin Mugnier (2):
media: i2c: vd55g1: Fix manual digital gain on color variant
media: i2c: vd55g1: Fix media bus code initialization
Bibo Mao (3):
LoongArch: KVM: Set vcpu->cpu before IN_GUEST_MODE is set
LoongArch: KVM: Fix uninitialized stack variable issue with dmsintc
LoongArch: Fix acpi_package_ids[] array overflowBinbin Zhou (1):
ASoC: loongson: Fix error handling in ACPI property parsing
Biren Pandya (4):
media: cec: disable delayed work before freeing an interrupted transmit
media: i2c: ov02a10: fix endpoint parsing use-after-free
media: i2c: ov7740: fix use-after-destroy in remove
media: v4l2-fwnode: Fix fwnode leak in v4l2_fwnode_parse_link
Bob Zhou (1):
drm/amdgpu: avoid force-completing uninitialized UVD rings
Bradley Morgan (1):
ima: Check for ERR_PTR from dentry_path() in validate_hash_algo()
Brendan Jackman (1):
mm/page_alloc: don't spin_trylock() in NMI on UP
Bryam Vargas (2):
nvdimm/btt: reject an arena whose nfree is below the lane count
media: cx231xx: reject geometry changes while the VBI queue is busy
Bryan Lim (1):
userfaultfd: reset err to be 0 when move_pages_ptes succeeded
Bryan O'Donoghue (1):
media: iris: Enumerate cap->bus_info to differentiate between encoder and decoder
Can Peng (7):
thermal/drivers/imx: Disable clock on runtime resume failure thermal/drivers/qoriq: Disable clock on resume failure
spi: bcm63xx-hsspi: disable clocks on resume failure
spi: bcm63xx: disable clock on resume failure
spi: bcmbca-hsspi: disable clocks on resume failure
iio: dac: ad5446: fix OF module device table
iio: pressure: mpl115: Fix runtime PM cleanup
Carlos López (1):
KVM: x86: hyper-v: Clamp stimer deadline to avoid livelock
Chaithanya Lagisetty (3):
LoongArch: KVM: Add unregister helpers for the KVM interrupt devices
LoongArch: KVM: Fix resource leak in kvm_loongarch_env_init() error path
LoongArch: KVM: Free init resources if kvm_init() fails
Chang Wu (1):
usb: typec: hd3ss3220: track VBUS enable state per consumer
Chao Shi (1):
nvme: skip the zoned limits update if the zone info query failed
Chao Yu (10):
f2fs: fix to avoid move_range and defragment on device_alias file
f2fs: fix to avoid potential section-unaligned pinfile
f2fs: embed f2fs_gc_kthread in f2fs_sb_info
f2fs: fix to avoid potential deadloop in f2fs_fsync_node_pages()
f2fs: fix to return -EFSCORRUPTED in f2fs_get_node_info() correctly
f2fs: fix to off-by-one issue in f2fs_zero_post_eof_page()
f2fs: fix to clear dirty flag on folio in error path
f2fs: fix to reclaim space in f2fs_allocate_pinning_section()
f2fs: fix to pass folio->index to f2fs_sanity_check_node_footer()
f2fs: fix to zero post-EOF data when extending file size
Chen Changcheng (1):
f2fs: fix valid block count leak on data block allocation failure
Chen Pei (1):
bpf, riscv: Make arena support depend on ZACAS
Christian Borntraeger (11):
KVM: s390: Fix length check __import_wp_info()
KVM: s390: Fix memory leak in guest debug handling
KVM: s390: Fix old_data leak in guest debug error path
KVM: s390: Free guest debug data on vcpu destroy
KVM: s390: Take srcu when importing watchpoint data
KVM: s390: Zero initialize data structures for inject_pfault_token
KVM: s390: Zero initialize irq in reinject_machine_check
KVM: s390: Fix memory corruption by not reinjecting CK machine checks
KVM: s390: keyop: use mmu_lock to read gmap->asce
KVM: s390: pv: Fix rc/rrc offset for PVM_DUMP
KVM: s390: Restore sigset on error path
Christian Hewitt (1):
media: meson: vdec: fix NULL pointer deref in vdec_try_fmt_common
Christian Marangi (1):
pmdomain: airoha: fix unselectable AIROHA_CPU_PM_DOMAIN kconfig
Chuck Lever (7):
NFSD: Annotate caller preconditions for the state-table walkers
NFSD: Guard admin state-revocation walks with NFSD_NET_UP
NFSD: Prevent client use-after-free during export state revocation
NFSD: Consolidate the revocation-path client unpin
NFSD: Prevent client use-after-free during close_lru reaping
NFSD: Prevent client use-after-free during blocked-lock reaping
rpcrdma: arm rn_done before publishing the notification
Cong Nguyen (4):
iio: adc: pac1921: fix wrong channel used in trigger handler read
iio: gyro: mpu3050: fix sign of raw angular velocity readings
iio: srf04: fix pm_runtime handling on probe error path
media: intel/ipu6: fix async notifier cleanup leak on parse error
Daeho Jeong (1):
f2fs: fix to migrate all curseg types during free_segment_range
Damien Le Moal (1):
block: flag zoned disks with GENHD_FL_NO_PART
Danilo Krummrich (2):
rust: drm: ioctl: fix unbounded lifetimes in ioctl handler arguments
drm: fix race between partial drm_dev_register() failure and ioctl
Dapeng Mi (2):
perf/x86/intel: Fix kernel address leakages in LBR stack perf/x86/intel: Remove anythread_deprecated bit from perf_capabilities
Dave Stevenson (1):
media: imx355: Avoid calling imx355_power_off twice in error path
David (Ming Qiang) Wu (1):
drm/amdgpu/vcn: fix integer overflow in dec_msg buffer count check
David Carlier (5):
zram: fix slot lock bit position on big-endian 64-bit
media: mali-c55: fix dropped last AEC histogram zone weight
media: mali-c55: Fix clock leak on reset deassert failure
media: mali-c55: Fix AEXP IHIST disable bit shift
media: mali-c55: Fix scaler factor overflow for large crop sizes
Dawei Feng (1):
media: cedrus: fix memory leak in cedrus_init_ctrls()
Deepanshu Kartikey (2):
drm/i915: Guard against NULL driver_data in i915_pci_probe() drm/gud: NUL-terminate TV mode names read from the device
Diego Fernando Mancera Gomez (1):
media: em28xx: defer audio-only extension registration
Dikshita Agarwal (1):
media: qcom: iris: fix state-change debug log printing stale value
Doruk Tan Ozturk (1):
HID: sony: clean up device list on probe failure
Elson Serrao (1):
usb: dwc3: clear forceRM when issuing EndTransfer
Eric Dumazet (2):
mm/mempolicy: fix sleeping allocation in alloc_pages_bulk_weighted_interleave() Revert "once: don't use a work queue to reset sleepable static key"
Erick Henrique (1):
iio: dac: m62332: Fix regulator reference count imbalance
Eugen Hristev (1):
media: bcm2835-unicam: Fix pipeline wrong validation for unpacked formats
Faith Ekstrand (1):
drm/nouveau: Use write-combined maps for coherent
Fan Wu (7):
usb: typec: qcom-pmic-typec: disable cc_debounce_dwork on stop
usb: typec: qcom-pmic-typec: drain cc_debounce_dwork if port_start() fails
usb: typec: qcom-pmic: cancel reset_work on stop
iio: chemical: atlas-sensor: use iio_trigger_poll_nested() to fix remove UAF
media: cx23885: cancel NetUP CI work before teardown
media: ti: vpe: quiesce overflow recovery before freeing streams
power: supply: ab8500_fg: fix use-after-free on remove
Farhan Ali (2):
PCI: Introduce PCI_SLOT_PLACEHOLDER constant for slot_nr placeholder value
PCI: Allow per function PCI slots to fix slot reset on s390
Francesco Lavra (1):
iio: imu: st_lsm6dsx: Update enable mask when using sensor fusion
Fuad Tabba (3):
arm64: Don't read GMID_EL1 when MTE is disabled
KVM: arm64: vgic: Reset in_kernel on private IRQ allocation failure
KVM: arm64: vgic-its: Don't dereference a NULL collection on ITT save
Gabriel Prostitis (1):
USB: gadget: ffs: fix mm lifetime handling
Giorgi Tchankvetadze (1):
iio: light: cm32181: return zero after writing calibscale
Greg Kroah-Hartman (1):
Linux 7.2.5
Griffin Kroah-Hartman (1):
usb: image: mdc800: change kmalloc() to kzalloc()
Guanghui Yang (1):
f2fs: fix dentry folio leak in find_in_level
Guangshuo Li (4):
i2c: qcom-cci: fix autosuspend cleanup
media: platform: mtk-mdp3: Fix SCP device refcounting
media: saa7164: fix cleanup on resource allocation failure drm/amdgpu: fix autosuspend cleanup during removal
GuoHan Zhao (2):
accel/ethosu: check MMIO mapping errors in probe accel/ethosu: fix job completion fence cleanup
Guoniu Zhou (4):
media: dt-bindings: nxp,imx8-isi: Drop fsl,blk-ctrl requirement for i.MX8ULP
media: nxp: imx8-isi: Fix stream ID validation bypass in crossbar routing
media: nxp: imx8-isi: Correct color map between V4L2 and ISI
media: nxp: imx8-isi: Use BIT_ULL() for 64-bit stream masks
HE WEI(ギカク) (1):
fs/ntfs3: fix slab-out-of-bounds write in ni_create_attr_list()
Haiyong Sun (1):
perf build: Add clang and rust target flags for LoongArch
Hajo Noerenberg (1):
ata: ahci: work around lost interrupts on Marvell 88SE61xx
Han Gao (1):
LoongArch: Add DIRECT_MAP_PHYSMEM_END definition
Hans Verkuil (1):
media: cec: extron-da-hd-4k-plus: add sanity check
Hao-Qun Huang (1):
f2fs: reject overlapping move range after len expansion
Haoxiang Li (3):
ASoC: fsl: mpc5200-i2s: Free DMA resources on probe failure
ASoC: hdac_hda: Fix hlink refcount leak on component registration failure
AsoC: intel: sst: fix PCI device reference leak on probe failure
Hari Mishal (1):
drm/amd/display: fix division by zero in get_estimated_bw()
Harry Wentland (2):
drm/amd/display: avoid divide-by-zero in __is_lut_linear() drm/amd/display: validate plane degamma LUT size for private color prop
Heiko Stuebner (1):
clk: rockchip: rk3588: Don't change PLL rates when setting dclk_vop2_src
Helge Deller (1):
parisc: Fix alignment of asm statements in head.S
Hongbo Yao (1):
i2c: designware: Enable interrupt mask workaround for HJMC3001
Honghui Jiang (1):
spi: Fix DMA mapping ownership on partial map failure
Hui Su (2):
bpf: Fix infinite loop in pcpu_freelist push with one possible CPU mm/migrate_device: avoid out-of-bounds writes for compound folios
Hungyu Lin (1):
media: qcom: iris: use disable_irq() during power-off
HyeongJun An (3):
ALSA: usb-audio: fix OOB write in snd_usbmidi_us122l_output()
ALSA: rawmidi: Return the error from snd_rawmidi_input_params()
media: s2255: bound JPEG frame size before copying into the buffer
Ibrahim Hashimov (1):
HID: wacom: validate report length in wacom_intuos_pro2_bt_irq
Ilya Krutskih (1):
media: tda18250: fix possible integer overflow
Ivy Lopez (1):
usb: gadget: f_midi2: fix use-after-free in string attribute show path
Jackson Lee (7):
media: chips-media: wave5: Guard bit depth check with initial_info_obtained
media: chips-media: wave5: Set inst->std during default format initialization
media: chips-media: wave5: avoid skipping device_run while VPU has work
media: chips-media: wave5: Add timeout while stop_streaming
media: chips-media: wave5: Defer job_finish() only when a DEC_PIC was queued
media: chips-media: wave5: Fix pipeline stall when queuing fails
media: chips-media: wave5: Resume device before setting EOS flag
James Hilliard (3):
mtd: rawnand: sunxi: group controller delay tables
mtd: rawnand: sunxi: describe tADL and tWHR delays
mtd: rawnand: sunxi: fix H6/H616 controller timings
Jameson Thies (1):
usb: typec: ucsi: displayport: Fix OOB altmode array index
Jeffin Philip (3):
usb: gadget: f_mass_storage: fix null pointer dereference in fsg_common_set_num_buffers()
usb: gadget: f_midi: initialize work in f_midi_alloc()
usb: gadget: fix null pointer dereference in usb_put_function_instance()
Jesse Zhang (2):
drm/amdgpu: force complete the KIQ ring fences on reset drm/amdgpu: force complete the MES ring fences on reset
Jiangong.Han (1):
media: em28xx: fix use-after-free of dev_next->devlist on disconnect
Jinjie Ruan (2):
powerpc/kexec_file: Fix null-ptr-def in extra size calculation powerpc/kexec_file: Prevent kexec range truncation
Jiri Olsa (5):
bpf: Factor stackid_init function from __bpf_get_stackid
bpf: Factor stackid_fastpath function from __bpf_get_stackid
bpf: Factor stackid_new_bucket from __bpf_get_stackid
bpf: Use stack id functions instead of __bpf_get_stackid
bpf: Disable preemption in bpf_get_stackid
Joanne Chang (1):
f2fs: dirty directory inodes on mtime/ctime update
Johan Hovold (3):
media: platform: mtk-mdp3: fix NULL deref on failed SCP lookup drm/bridge: dw-hdmi: fix i2c adapter leak on probe failure drm/panel-edp: fix i2c adapter leak on probe failure
Jonas Karlman (1):
media: cec: core: Fix kmemleak due to missed rc_free_device() call
Joshua Crofts (3):
iio: adc: max14001: add missing 'select REGMAP' to Kconfig
iio: adc: max34408: add missing 'select REGMAP_I2C' to Kconfig
iio: dac: mcp47feb02: add missing 'select REGMAP_I2C' to Kconfig
José María Martín (1):
media: ipu-bridge: check all DMI entries when overriding sensor rotation
Ju Nan (1):
irqchip/stm32mp-exti: Fix the unit of the hwspinlock timeout
Jérémy Jean (1):
LoongArch: Avoid preempt count underflow without probe
Kajetan Puchalski (1):
KVM: arm64: vgic: Fix detection of MI on no pending LR
Kanala Ramalingeswara Reddy (1):
drm/amdgpu: Skip accessing psp rum time db for APUs
Kanishka De Silva (1):
ublk: clear VM_MAYWRITE on read-only ublk char device mmap
Karl Mehltretter (1):
arm64: mm: Fix the lockless page-table walk in show_pte()
Kathiravan Thirumoorthy (1):
i2c: qcom-geni: update frequency table to fix timing parameters
Kavan Smith (1):
drm/msm/dsi: round 6G byte clock rate to the PLL-achievable value
Kazuki Hanai (1):
nvmet-auth: Synchronize timeout work during SQ teardown
Khushit Shah (1):
arm64: errata: pass REVIDR when matching target implementation CPUs
Koichiro Den (4):
dmaengine: dw-edma: Fix HDMA channel status register access
dmaengine: dw-edma: Complete descriptors before pausing
dmaengine: dw-edma: Initialize IRQ data before requesting IRQs
dmaengine: dw-edma: Mark emulated IRQ as level-triggered
Lad Prabhakar (4):
rtc: rzn1: Handle EPROBE_DEFER for optional pps interrupt
rtc: rzn1: Fix weekday underflow when alarm crosses month boundary
rtc: rzn1: Handle unset alarm weekday in rzn1_rtc_read_alarm
rtc: rzn1: Disable alarm interrupt before reprogramming alarm registers
Lars-Peter Clausen (3):
iio: buffer: Fix potential use-after-free in anonymous buffer release
iio: buffer: Make IIO DMA fence release RCU-safe
iio: buffer: Tie IIO dma fence lock lifetime to the fence
Laxman Acharya Padhya (1):
iio: light: gp2ap002: Disable regulators on resume failure
Lei Huang (1):
media: s2255: check firmware size before reading trailing marker
Linkai Gong (3):
cpuidle: dt_idle_genpd: kfree() the original name allocation
i2c: mux: demux-pinctrl: fix OF node leak on kstrdup failure drm/amd/display: fix dc_lock leak on GPU reset error paths
Linmao Li (1):
iio: chemical: sgp30: Handle IAQ thread creation failure
Linus Torvalds (1):
drm/xe: Don't hand out the flat CCS storage as usable VRAM
Liu Qi (1):
usb-storage: ene_ub6250: fix race between scan work and probe
Longlong Xia (1):
mm/hugetlb: keep max_huge_pages when dissolving surplus folios
Lorenzo Stoakes (ARM) (1):
mm/secretmem: properly account locked pages
Lovekesh Solanki (1):
USB: gadget: fix NULL pointer dereference in gadget_dev_ioctl()
Lyude Paul (1):
drm/nouveau/disp/r535: Add scanline position support + head state support
Marc Zyngier (8):
KVM: arm64: Consider SCTLR_EL2.M when mapping the L1 VNCR page
KVM: arm64: Handle negative S1 walk levels in VNCR TLB size evaluation
KVM: arm64: Correctly handle end of VA space TLBI invalidation
KVM: arm64: Handle VNCR TLB invalidation race with vcpu_put() VNCR unmapping
KVM: arm64: Make VNCR invalidation participate in MMU invalidation retry
KVM: arm64: Remove VM-wide VNCR mapping counter
KVM: arm64: Sign-extend VA for range-based TLBI invalidation
KVM: arm64: Correctly cap TLBI Range to the architural limit
Marek Czernohous (1):
drm/nouveau: unsubscribe the channel-kill event before the fence context
Marek Vasut (2):
usb: typec: mux: avoid duplicated mux switches
usb: typec: mux: Fix typec_switch_match()
Mario Limonciello (1):
drm/amdkfd: fix scope of mqd_mgr dereference in pqm_debugfs_mqds
Martin Blumenstingl (1):
clk: meson: align gxbb_32k_clk_sel number of parents with actual count
Martin Hecht (1):
media: i2c: alvium: Fix: Correct name of register in alvium_set_ctrl_auto_exposure
Martin Kaiser (1):
dmaengine: fsl-edma: tracing: no ptr dereference during log output
Masami Hiramatsu (Google) (2):
tracing/probes: Fix anon_stack check for unnamed bitfields in btf_find_struct_member
kprobes: Protect kprobe_blacklist with RCU
Matthew Auld (1):
drm/xe/vram: report FLAT_CCS base misalignment
Matthew Brost (2):
drm/ttm: Drop tt->restore after successful restore drm/pagemap: Fix folio allocation fallback and use-after-put
Max Kellermann (1):
ceph: lock mutex in ceph_mds_check_access()
Michael Bommarito (3):
media: rkvdec: hevc: tighten EXT SPS RPS control dimensions
media: rkvdec: hevc: guard INTER_REF_PIC_SET_PRED index underflow
media: v4l2-ctrls: validate HEVC EXT SPS RPS counts
Mikulas Patocka (2):
dm: fix race when loading and unloading a table
dm: fix resume-vs-remove race
Ming Qian (2):
media: amphion: Remove obsolete frame_count check in venc_start_session
media: v4l2-ctrls: Allow unknown HDR10 white point and luminance
Miquel Raynal (DAVE) (1):
mtd: rawnand: pl353: Make sure we use the monolithic helpers for raw accesses
Mohamed Ahmed (8):
drm/nouveau/gsp: use per-version DP_CONFIG_STREAM params on r570 firmware drm/nouveau/disp: move GSP head-timing ISR and vblank helpers to tu102.c drm/nouveau/disp: move the GSP HDMI GCP AVMute write to engine/disp drm/nouveau/disp: route GSP-RM display MMIO through nvkm_disp_func hooks drm/nouveau/disp: fix HDMI vendor infoframes on GB20x drm/nouveau/disp: fix HDMI GCP AVMute register offsets on GB20x drm/nouveau/disp: fix head state readback on GB20x drm/nouveau/gsp: fix vblank interrupts on GB20x
Mohammed EL Kadiri (2):
media: venus: fix payload size returned by parse_caps() and parse_alloc_mode()
media: venus: fix payload size calculation in parse_raw_formats()
Moksh Panicker (2):
iio: chemical: atlas-sensor: fix PM reference leak in buffer postenable
iio: light: apds9306: fix PM reference leak in apds9306_read_data()
Muchun Song (1):
powerpc/mm: fix wrong addr_pfn tracking in compound vmemmap population
Muhammad Bilal (3):
staging: rtl8723bs: fix OOB read / stack overflow in rtw_get_wps_attr()
staging: rtl8723bs: fix OOB read in rtw_action_frame_parse()
staging: rtl8723bs: fix OOB read in rtw_restruct_wmm_ie()
Mukesh Ojha (1):
remoteproc: qcom: pas: Guard dtb metadata release with dtb_pas_id check
Myeonghun Pak (2):
usb: storage: realtek_cr: fix use-after-free on disconnect
media: rc: sunxi-cir: Unregister rc device on probe failure
Namjae Jeon (1):
ksmbd: zero pipe read compound padding
Narasimharao Vadlamudi (3):
media: i2c: imx415: Release runtime PM reference on VBLANK error
media: i2c: imx415: Return test pattern write errors
media: rkvdec: Propagate platform_get_irq() errors
Narek Jilavyan (1):
mm/hugetlb_cgroup: call page_counter_set_max() outside VM_BUG_ON()
Nathan Chancellor (1):
LoongArch: Do not select HAVE_RUST when KASAN is enabled
Neill Kapron (1):
usb: gadget: f_fs: Fix Use-After-Free in AIO error path
Nemesa Garg (1):
drm/i915/display: Clear SEL_FETCH_PLANE_CTL on plane disable
Nikhil Gautam (4):
iio: light: opt4001: Fix power down clearing bits of the wrong register
iio: light: opt4001: Fix incompatible pointer type passed to div_u64_rem()
iio: light: opt4001: Reject integration times with a non-zero seconds part
iio: light: opt4001: Fix reversed GENMASK() arguments in fault count mask
Niklas Cassel (1):
nvme-fc: fix double free of fabrics options when nvme_add_ctrl() fails
Nilesh Javali (30):
scsi: qla2xxx: Zero SFP DMA buffer in FRU/I2C bsg handlers
scsi: qla2xxx: Bound i2c->length in I2C bsg handlers
scsi: qla2xxx: edif: Fix NULL pointer deref in RX SA delete check
scsi: qla2xxx: Fix Name Server logout detection on FWI2 adapters
scsi: qla2xxx: Fix BSG job leak on validate flash image error path
scsi: qla2xxx: Hold vport reference in qla24xx_report_id_acquisition()
scsi: qla2xxx: Initialize NVMe abort_work once at submission
scsi: qla2xxx: Check entry_status in qla24xx_modify_vp_config()
scsi: qla2xxx: Zero dport diagnostics buffer to avoid info leak
scsi: qla2xxx: Bound image count in qla2x00_update_fru_versions()
scsi: qla2xxx: Hold qpair lock when sending NVMe LS reject
scsi: qla2xxx: Clamp MSI-X derived queue counts to avoid truncation
scsi: qla2xxx: Serialize flash version read in reset handler
scsi: qla2xxx: Fix cs84xx use-after-free on host teardown
scsi: qla2xxx: Fix FCE trace use-after-free during firmware dump
scsi: qla2xxx: Zero mailbox struct in qla2x00_get_firmware_state()
scsi: qla2xxx: Fix FCE trace enable parsing in debugfs
scsi: qla2xxx: Don't query firmware state while chip is down
scsi: qla2xxx: Reject non-SCSI SRB on status IOCB fast path
scsi: qla2xxx: Fix response queue over-consumption in __qla_consume_iocb()
scsi: qla2xxx: Quiesce response IRQ before freeing request queue
scsi: qla2xxx: Avoid double completion in async IOCB timeout
scsi: qla2xxx: Bound rsp_info_len to avoid OOB sense-data read
scsi: qla2xxx: Avoid req_q_map double-read in qla2x00_error_entry()
scsi: qla2xxx: Fix NVMe abort reference leak on repeated abort
scsi: qla2xxx: Drop vport reference under lock in report ID acquisition
scsi: qla2xxx: Hold vport_slock for host map update in report ID acquisition
scsi: qla2xxx: Use coherent DMA buffer for D_Port diagnostics
scsi: qla2xxx: Zero-init bsg stack buffers to avoid info leak
scsi: qla2xxx: Skip NVMe LS reject IOCB when FW not started
Norbert Szetei (1):
net: skbuff: don't skb_tx_error() the source skb in skb_zerocopy()
Osama Abdelkader (2):
drm/panthor: harden firmware build-info bounds checks drm/panthor: fix firmware control interface bounds checks
Pan Chuang (1):
power: supply: ab8500_fg: Remove redundant dev_err()/dev_err_probe()
Paul Geurts (1):
iio: ti-ads7138: Disable STATS_EN bit while reading conversion results
Paul Louvel (1):
soc: fsl: qe: Add chained_irq_{enter,exit}() calls in cascade handler
Pavel Löbl (1):
clk: clocking-wizard: fix integer overflow in rate calculation
Pawel Laszczak (1):
usb: cdnsp: fix wakeup from S3 after controller context loss
Pedro Kopper (1):
clk: microchip: mpfs: fix regmap_update_bits() mask/val order
Pei Xiao (1):
parisc: eisa: Fix infinite loop when parsing invalid IRQ value
Pengpeng Hou (3):
mtd: afs: validate v2 image info bounds
mtd: nand: realtek-ecc: add missing MODULE_DEVICE_TABLE()
mtd: rawnand: validate ONFI extended parameter page sections
Peter Ujfalusi (31):
ASoC: adau1761: sort the register default table
ASoC: cx2072x: sort the register default table
ASoC: fsl_easrc: sort the register default table
ASoC: max9860: sort the register default table
ASoC: ml26124: sort the register default table
ASoC: pcm512x: sort the register default table
ASoC: pm4125-sdw: sort the register default table
ASoC: rt1017-sdca-sdw: sort the register default table
ASoC: rt1316-sdw: sort the register default table
ASoC: rt1318-sdw: sort the register default table
ASoC: rt1318: sort the register default table
ASoC: rt274: sort the register default table
ASoC: rt286: sort the register default table
ASoC: rt298: sort the register default table
ASoC: rt700: drop duplicate reg_default entry
ASoC: rt700: sort the register default table
ASoC: rt711-sdca: sort the register default tables
ASoC: rt711: sort the register default table
ASoC: rt712-sdca-dmic: sort the register default table
ASoC: rt712-sdca-sdw: sort the register default table
ASoC: rt715-sdca: drop duplicate reg_default entries
ASoC: rt715-sdca: sort the register default tables
ASoC: rt715: sort the register default table
ASoC: rt721-sdca-sdw: sort the register default table
ASoC: sgtl5000: sort the register default table
ASoC: sti-sas: sort the register default table
ASoC: tas2552: sort the register default table
ASoC: tas2764: sort the register default table
ASoC: tas2780: sort the register default table
ASoC: tas2783-sdw: drop duplicate reg_default entry
ASoC: tas2783-sdw: sort the register default table
Phil Rosenthal (1):
KVM: x86/mmu: Consume the locked rmap value in the lockless rmap walk
Pierre-Eric Pelloux-Prayer (1):
drm/amdgpu: delay ttm buffer func enablement on xgmi
Priya Hosur (1):
drm/amdkfd: Add TLB flush after MES queue eviction/suspension
Qihang (1):
KVM: arm64: vgic-v3: take an LPI reference in vgic_v3_save_pending_tables
Radhey Shyam Pandey (1):
usb: dwc3: google: Initialise probe properties with DWC3_DEFAULT_PROPERTIES
Rahul Chandelkar (1):
scsi: bsg: Fix TOCTOU in io_uring passthrough command setup
Richard Leitner (1):
media: i2c: ov9282: restore flash duration calculation
Roman Li (1):
drm/amd/display: Set gpuvm min page size to 4K on dcn35/36
Rong Zhang (2):
ACPI: battery: Use kstrtoul() over sscanf("%lu\n")
ACPI: battery: Protect all properties with a separated mutex
Rosalie Wanders (1):
HID: sony: use guard() and scoped_guard()
Runyu Xiao (4):
scsi: pm8001: Use rollback index when freeing MSI-X vectors
ALSA: harmony: initialize locks before requesting IRQ
ASoC: cs35l33: drain threaded IRQ before runtime suspend
ASoC: cs35l34: drain threaded IRQ before runtime suspend
Ruoyu Wang (3):
media: cec: Serialize exclusive follower delivery
media: cobalt: Avoid freeing ALSA private data twice
media: zoran: Avoid freeing a registered video_device twice
Rupesh Majhi (1):
iio: pressure: dps310: fix NULL pointer dereference on ACPI probe
SJ Park (28):
mm/damon/sysfs: read addr_unit only once in damon_sysfs_apply_inputs() mm/damon/sysfs: read ops_id only once in damon_sysfs_apply_inputs() mm/damon/tests/core-kunit: catch test failure in test_merge_regions_of() mm/damon/vaddr-kunit: check region count in three_regions test samples/damon/mtier: handle damon_start() failure samples/damon/mtier: handle damon_stop() failure samples/damon/prcl: handle damon_start() failure samples/damon/prcl: stop and free damon ctx when damon_call() fails samples/damon/wsse: handle damon_start() failure samples/damon/wsse: stop and free damon ctx when damon_call() fails mm/damon/sysfs-schemes: kobject_del() scheme action destination dirs mm/damon/sysfs-schemes: kobject_del() scheme dirs mm/damon/sysfs-schemes: kobject_del() scheme filter dirs mm/damon/sysfs-schemes: kobject_del() scheme quota goal dirs mm/damon/sysfs-schemes: kobject_del() scheme region dirs mm/damon/sysfs: kobject_del() region and target (error) dirs mm/damon/sysfs: kobject_del() target (normal), context and kdamond dirs mm/damon/core-kunit: check region count before testing in split_at() mm/damon/core-kunit: handle region split failure in filter_out() mm/damon/core-kunit: skip wrong dest walk in commit_dests_for() mm/damon/core-kunit: skip wrong quota goal walk in commit_quota_goals() mm/damon/core-kunit: skip wrong region walk in commit_target_regions() mm/damon/core: handle region split failure in apply_min_nr_regions() mm/damon/core: initialize damos->last_applied mm/damon/core: avoid infinite kdamond_merge_regions() internal loop mm/damon/ops-common: use nr_accesses moving sum for quota score mm/damon/paddr: drop last same folio access check reuse optimization mm/damon/vaddr: drop last same folio access check optimization
Sam Edwards (1):
ceph: properly decrypt filenames in vmalloc() buffers
Sanjay Chitroda (1):
iio: temperature: hid-sensor-temperature: switch to non-devm iio_device_register()
Sean Christopherson (9):
KVM: x86/mmu: Fold kvm_mmu_zap_memslot() into kvm_arch_flush_shadow_memslot()
KVM: x86/mmu: Split kvm_mmu_zap_all_fast() into "front" and "back" halves
KVM: x86/mmu: Use split "zap all fast" helpers when invalidating memslot
KVM: SEV: Forcefully invalidate SNP VMSA if its backing gmem page is zapped
KVM: nVMX: Decouple INVVPID operand checks from flushing of vpid02
KVM: nVMX: Ensure KVM_REQ_GET_NESTED_STATE_PAGES is cleared on VM-Exit
KVM: x86/mmu: Use CMPXCHG when clearing Accessed bit in TDP MMU
KVM: x86: Serialize writes to disabled_quirks using kvm->lock
KVM: x86: Ensure runtime reads of disabled_quirks are resolved once
Sebastian Andrzej Siewior (2):
zram: move lockmap to be per-zram instead per table
futex: Provide rt_mutex_.*_schedule() equivalents for futex scheduling
Shakeel Butt (3):
memcg: keep folio's objcg same as its node
memcg: bypass the reclaim and oom killer for dying tasks once oom_reaper is done
memcg: make the v1 soft limit knob inert
Shen Yongchao (1):
HID: bpf: serialize device reference release in struct_ops destroy path
Shivam Kumar (2):
nvmet-tcp: fix out-of-bounds write when receiving an over-long PDU
nvmet-tcp: reject unsolicited H2CData PDUs
Shixiong Ou (2):
drm/sysfb: ofdrm: Fix integer overflow in fb_size calculation drm/sysfb: ofdrm: Fix is_avivo() constant comparison bug
Shuangpeng Bai (2):
media: usbtv: keep device alive while ALSA card exists
media: go7007: defer the ALSA v4l2 put until card release
Sizhe Liu (1):
perf hisi-ptt: Fix PTT trace TLP header parsing
Song Hu (1):
Docs/ABI/damon: fix typo in intervals_goal sysfs path
Sourabh Jain (3):
powerpc/pseries: Handle and log pseries-wdt registration failures powerpc/pseries: Move H_WATCHDOG definitions to a common header powerpc/crash: stop watchdogs before booting kdump kernel
Sourav Panda (1):
mm/hugetlb_cma: fix null nodemask dereference in hugetlb_cma_alloc_frozen_folio
Stephan Gerhold (8):
clk: qcom: gcc-mdm9607: Increase delay for USB PHY reset
clk: qcom: gcc-msm8916: Fix enable_reg for gcc_blsp1_sleep_clk
clk: qcom: gcc-msm8939: Fix enable_reg for gcc_blsp1_sleep_clk
clk: qcom: gcc-mdm9607: Drop incorrect apss_tcu_clk_src
clk: qcom: gcc-mdm9607: Drop incorrect system_noc_bfdcd_clk_src
clk: qcom: gcc-mdm9607: Fix enable_reg for gcc_blsp1_sleep_clk
clk: qcom: gcc-mdm9607: Fix halt_reg for gcc_apss_axi_clk
clk: qcom: gcc-mdm9607: Drop incorrect BIMC PLL and related clocks
Steven Rostedt (4):
tracing: Have show_event_filters/triggers files take trace array ref
tracing: Take trace_array reference when opening options file
ftrace: Take trace_array reference before accessing its ftrace_ops
ftrace: Synchronize the initialization of ftrace_ops
Sujal Tuladhar (1):
scsi: target: iscsi: Reserve a terminator byte for the login payload
Sunday Clement (1):
drm/amdkfd: Reject zero-sized AQL queue allocations after size halving
Sunil Khatri (5):
drm/amdgpu: fix byte/dword unit mismatch in coredump IB dump drm/amdgpu: fix Idle BOs list in VM debugfs status info drm/amdgpu: update the fw version for gfx11 userqueues drm/amdgpu: update the fw version for gfx12 userqueues drm/amdgpu: use AMDGPU_GPU_PAGE_SHIFT instead of PAGE_SHIFT
Sven Eckelmann (6):
batman-adv: fix TX priority extraction for BATADV_FORW_MCAST
batman-adv: mcast: ensure unshared skb for multicast packets
batman-adv: mcast: linearize skbuff for packet generation
batman-adv: dat: avoid unaligned fault in IP extraction
batman-adv: bla: fix freeing of claims on meshif deletion
batman-adv: bla: prevent CRC corruptions after claim flush
Sven Peter (1):
usb: typec: tipd: Fix Thunderbolt altmode VDOs for cd321x
Sven Püschel (1):
media: rockchip: rga: don't change RGB quantization
Taimuraz Kaitmazov (1):
accel/amdxdna: return early from a zero-length flush
Takashi Iwai (1):
ALSA: pcm: Fix race between non-atomic ops and trigger-start
Tao Cui (1):
LoongArch: KVM: Fix TOCTOU race on pv_features
Tao Yu (1):
drm/gud: validate TV mode names before creating enum property
Thadeu Lima de Souza Cascardo (1):
drm: Fix drm_crtc_commit leak if signaled when PAGE_FLIP_EVENT is used
Thomas Hellström (1):
drm/amdgpu: Fix init ordering in amdgpu_vram_mgr_init()
Thomas Lamprecht (1):
scsi: megaraid_sas: Limit NVMe request size to the PRP chain frame
Thomas Zimmermann (5):
drm/hibmc: Fix list of formats on the primary plane drm/hibmc: Use drm_atomic_helper_check_plane_state() drm/sysfb: simpledrm: Improve framebuffer-size validation drm/sysfb: simpledrm: Improve panel-size validation drm/sysfb: simpledrm: Improve stride validation
Tiezhu Yang (5):
LoongArch: BPF: Optimize redundant TCC loads in epilogue
LoongArch: BPF: Refactor jump offset calculation in tail call
LoongArch: Expand module virtual address space to 2GB
LoongArch: BPF: Move arena register slot below TCC context
LoongArch: BPF: Fix off-by-one error for insn_is_cast_user()
Timur Kristóf (1):
drm/amd/display: Fix HPD consideration for VGA/LVDS connectors on DCE
Tommaso Merciai (1):
media: rzg2l-cru: Align bytesperline to hardware DMA stride requirement
Tristan Madani (1):
nvme: add missing SRCU grace period in error path
Uday Khare (1):
media: video-i2c: fix kthread error pointer left in kthread_vid_cap on failure
Ulf Hansson (1):
cpuidle: psci: Fix support for probe deferral by dropping the faux device
Usama Arif (1):
mm/huge_memory: transfer the pmd dirty bit to the folio on zap
Valery Borovsky (3):
media: airspy: use vb2_video_unregister_device() on disconnect to fix NULL deref
media: rtl2832_sdr: use vb2_video_unregister_device() on remove to fix DMA leak
media: rtl2832_sdr: release URBs and stream buffers on start_streaming() failure
Vasileios Almpanis (1):
i2c: core: fix debugfs UAF on adapter removal
Vidhu Sarwal (3):
iio: light: ltrf216a: fix runtime PM reference leak in error path
iio: light: opt4060: Reject integration times with a non-zero seconds part
iio: light: opt4060: Fix incorrect register name in threshold read error message
Viken Dadhaniya (1):
soc: qcom: geni-se: Use HW PROG_RAM_DEPTH to validate firmware size
Viktor Malik (2):
perf trace: Factor out BPF loop body
perf trace: Refactor augmented_raw_syscalls using bpf_for
Vincent Donnefort (1):
ring-buffer: Allow splice reads on static buffers
Vladimir Marioukhine (1):
drm/amdkfd: guard against NULL restore_mqd in CRIU queue restore
Wangao Wang (1):
media: qcom: iris: fix missing hfi_id in gen1 GOP_SIZE cap
Wei Jie Law (1):
HID: rmi: fix OOB access with undersized RMI reports
WenTao Liang (1):
ASoC: samsung: aries_audio_probe: double of_node_put due to direct assignment without of_node_get
Wenjie Qi (7):
f2fs: return symlink writeback errors
f2fs: only redirty pinned folios in redirty_blocks
f2fs: validate MOVE_RANGE destination size
f2fs: return writeback error from collapse range
f2fs: limit recovery filename logging to stored length
f2fs: avoid NULL checkpoint thread access in sysfs
f2fs: protect critical_task_priority updates with s_umount
Wentao Guan (1):
LoongArch: Do not save/restore percpu base register in rethook trampoline
Wentao Liang (1):
drm/sun4i: fix refcount leak in sun4i_backend_init_sat()
Wupeng Ma (1):
mm/hugetlb: fix missing migratable flag on same-node hugetlb migration
Xiang Liu (1):
drm/amdgpu: clamp the isolation index for rings outside a partition
Xiaogang Chen (2):
drm/amdkfd: Fix error path at svm_migrate_copy_to_ram drm/amdkfd: Fix the case that vm range is hole at svm_migrate_copy_to_vram
Xu Rao (3):
nvme-fabrics: fix DHCHAP secret leak on parse failure
mtd: mtdoops: free page bitmap when the backing MTD is removed
media: v4l2-async: avoid deleting unlinked ASC entry on link error
Yang Wang (2):
drm/amdgpu: check thunderbolt before switcheroo registration drm/amdgpu: Disable runtime PM for externally attached dGPUs
Yang Xiuwei (1):
scsi: bsg: Cap io_uring sense copy to max_response_len
Yao Kai (1):
futex: Prevent rcuwait use-after-free during requeue PI
Yehyeong Lee (1):
nvme-tcp: check the data direction of a C2HData PDU
Yi Ding (1):
media: cec: meson: ao-cec-g12a: name the CEC core regmap to avoid debugfs clash
Yilin Zhang (1):
perf: Fix use-after-free when perf mmap() revival races with the last munmap()
Yosry Ahmed (4):
KVM: nVMX: Always flush vpid02 on first use
KVM: nVMX: Service local TLB flushes on failed nested VM-Enter
KVM: nVM: Ensure INVVPID is emulated on the correct physical CPU
KVM: x86: Move enabling EFER.SVME and EFER.LMSLE to generic EFER setup
Zeng Chi (3):
LoongArch: KVM: Fix PC double advance in kernel MMIO read fast path
LoongArch: KVM: Preserve memslot arch flags on KVM_MR_FLAGS_ONLY
LoongArch: KVM: Validate MSI data before routing it to EIOINTC
Zhan Xusheng (3):
f2fs: use the mount idmap for the owner check in f2fs_xattr_advise_set()
f2fs: don't drop the top folio order in the f2fs_iostat tracepoint
f2fs: fix i_size when pinned fallocate partially fails
Zhaoyang Huang (1):
f2fs: fix folio_nr_pages() race after put in large folio invalidate
Zhenhao Wan (5):
drm/nouveau/dmem: fix callocated underflow on large folio split drm/nouveau/dmem: fix mismatched DMA unmap size for large folios drm/nouveau/uvmm: fix NULL deref unwinding an OP_MAP_SPARSE op drm/nouveau/uvmm: fix premature region free on failed OP_UNMAP_SPARSE drm/nouveau/uvmm: clear the dirty flag when unwinding an OP_UNMAP_SPARSE
Zhiling Zou (1):
batman-adv: fix stale receive device on merged fragments
caina (1):
Revert "irqchip/mbigen: Fix mbigen node address layout"
wangdicheng (1):
ASoC: fsl_easrc: Use div64_u64 for 64-by-64 division
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-kernel-mm-damon +4 -4
@@ -112,7 +112,7 @@ Description: Writing a value to this file sets the update interval of the DAMON context in microseconds as the value. Reading this file returns the value. -What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intrvals_goal/access_bp +What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intervals_goal/access_bp Date: Feb 2025 Contact: SJ Park <[email protected]> Description: Writing a value to this file sets the monitoring intervals
@@ -120,7 +120,7 @@ Description: Writing a value to this file sets the monitoring intervals the given time interval (aggrs in same directory), in bp (1/10,000). Reading this file returns the value. -What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intrvals_goal/aggrs +What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intervals_goal/aggrs Date: Feb 2025 Contact: SJ Park <[email protected]> Description: Writing a value to this file sets the time interval to achieve
@@ -128,14 +128,14 @@ Description: Writing a value to this file sets the time interval to achieve access events ratio (access_bp in same directory) within. Reading this file returns the value. -What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intrvals_goal/min_sample_us +What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intervals_goal/min_sample_us Date: Feb 2025 Contact: SJ Park <[email protected]> Description: Writing a value to this file sets the minimum value of auto-tuned sampling interval in microseconds. Reading this file returns the value. -What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intrvals_goal/max_sample_us +What: /sys/kernel/mm/damon/admin/kdamonds/<K>/contexts/<C>/monitoring_attrs/intervals/intervals_goal/max_sample_us Date: Feb 2025 Contact: SJ Park <[email protected]> Description: Writing a value to this file sets the maximum value of
Documentation/admin-guide/cgroup-v1/memory.rst +6 -43
74 lines not on this page · raw message
Documentation/devicetree/bindings/media/nxp,imx8-isi.yaml +3 -1
@@ -117,7 +117,9 @@ allOf: compatible: not: contains: - const: fsl,imx91-isi + enum: + - fsl,imx8ulp-isi + - fsl,imx91-isi then: required: - fsl,blk-ctrl
Documentation/trace/hisi-ptt.rst +14 -14
@@ -285,20 +285,20 @@ according to the format described previously (take 8DW as an example): [...perf headers and other information] . ... HISI PTT data: size 4194304 bytes . 00000000: 00 00 00 00 Prefix - . 00000004: 01 00 00 60 Header DW0 - . 00000008: 0f 1e 00 01 Header DW1 - . 0000000c: 04 00 00 00 Header DW2 - . 00000010: 40 00 81 02 Header DW3 - . 00000014: 33 c0 04 00 Time + . 00000004: 60 00 00 01 Header DW0 + . 00000008: 01 00 1e 0f Header DW1 + . 0000000c: 00 00 00 04 Header DW2 + . 00000010: 02 81 00 40 Header DW3 + . 00000014: 00 04 c0 33 Time . 00000020: 00 00 00 00 Prefix - . 00000024: 01 00 00 60 Header DW0 - . 00000028: 0f 1e 00 01 Header DW1 - . 0000002c: 04 00 00 00 Header DW2 - . 00000030: 40 00 81 02 Header DW3 - . 00000034: 02 00 00 00 Time + . 00000024: 60 00 00 01 Header DW0 + . 00000028: 01 00 1e 0f Header DW1 + . 0000002c: 00 00 00 04 Header DW2 + . 00000030: 02 81 00 40 Header DW3 + . 00000034: 00 00 00 02 Time . 00000040: 00 00 00 00 Prefix - . 00000044: 01 00 00 60 Header DW0 - . 00000048: 0f 1e 00 01 Header DW1 - . 0000004c: 04 00 00 00 Header DW2 - . 00000050: 40 00 81 02 Header DW3 + . 00000044: 60 00 00 01 Header DW0 + . 00000048: 01 00 1e 0f Header DW1 + . 0000004c: 00 00 00 04 Header DW2 + . 00000050: 02 81 00 40 Header DW3 [...]
Documentation/userspace-api/media/v4l/ext-ctrls-colorimetry.rst +11 -1
@@ -80,15 +80,25 @@ Colorimetry Control IDs - ``white_point_x`` - Specifies the normalized x chromaticity coordinate of the white point of the mastering display in increments of 0.00002. + When both ``white_point_x`` and ``white_point_y`` are zero, + the white point chromaticity is unknown. If either coordinate is + non-zero, both coordinates shall be within their valid ranges. * - __u16 - ``white_point_y`` - Specifies the normalized y chromaticity coordinate of the white point of the mastering display in increments of 0.00002. + When both ``white_point_x`` and ``white_point_y`` are zero, + the white point chromaticity is unknown. If either coordinate is + non-zero, both coordinates shall be within their valid ranges. * - __u32 - ``max_luminance`` - Specifies the nominal maximum display luminance of the mastering display in units of 0.0001 cd/m\ :sup:`2`. + A value of zero indicates that the nominal maximum display + luminance is unknown. * - __u32 - ``min_luminance`` - - specifies the nominal minimum display luminance of the mastering + - Specifies the nominal minimum display luminance of the mastering display in units of 0.0001 cd/m\ :sup:`2`. + A value of zero indicates that the nominal minimum display + luminance is unknown.
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 7 PATCHLEVEL = 2 -SUBLEVEL = 4 +SUBLEVEL = 5 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm64/include/asm/cpu.h +1 -0
@@ -78,5 +78,6 @@ void __init cpuinfo_store_boot_cpu(void);void __init init_cpu_features (struct cpuinfo_arm64 *info);void update_cpu_features (int cpu,struct cpuinfo_arm64 *info,struct cpuinfo_arm64 *boot); +bool gmid_el1_accessible (const struct cpuinfo_arm64 *info);#endif /* __ASM_CPU_H */
arch/arm64/include/asm/cpufeature.h +0 -7
@@ -627,13 +627,6 @@ static inline bool id_aa64pfr1_mpamfrac(u64 pfr1)return val >0 ; } -static inline bool id_aa64pfr1_mte (u64 pfr1) -{ -u32 val =cpuid_feature_extract_unsigned_field (pfr1,ID_AA64PFR1_EL1_MTE_SHIFT ); - -return val >=ID_AA64PFR1_EL1_MTE_MTE2 ; -} -void __init setup_boot_cpu_features (void );void __init setup_system_features (void );void __init setup_user_features (void );
arch/arm64/include/asm/kvm_host.h +0 -3
@@ -411,9 +411,6 @@ struct kvm_arch {/* Masks for VNCR-backed and general EL2 sysregs */ struct kvm_sysreg_masks *sysreg_masks; -/* Count the number of VNCR_EL2 currently mapped */ -atomic_t vncr_map_count; -/* * For an untrusted host VM, 'pkvm.handle' is used to lookup * the associated pKVM instance in the hypervisor.
arch/arm64/include/asm/kvm_nested.h +20 -0
@@ -291,6 +291,13 @@ static inline u64 decode_range_tlbi(u64 val, u64 *range, u16 *asid) base = (val &GENMASK (36 ,0 )) << shift; +/* +* We only deal with at most 48bit VA/IPA, so 48 is where we +* sign-extend from. Should we support FEAT_L{VP}A* at some point, +* this will need to be revisited. +*/ + base = (u64 )sign_extend64 (base,48 ); +if (asid) *asid =FIELD_GET (TLBIR_ASID_MASK , val);
@@ -298,6 +305,12 @@ static inline u64 decode_range_tlbi(u64 val, u64 *range, u16 *asid) num =FIELD_GET (GENMASK (43 ,39 ), val); *range =__TLBI_RANGE_PAGES (num, scale) << shift; +/* Cap the range to the correct half of the address space */ +if (!(base &BIT (48 ))) + *range =min (*range, (BIT (48 ) - base)); +else + *range =min (*range, ~base +1 ); +return base; }
@@ -388,6 +401,8 @@ struct s1_walk_result {bool failed; }; +#define S1_MMU_DISABLED (-127) +static inline void fail_s1_walk (struct s1_walk_result *wr,u8 fst,bool s1ptw) { wr->fst = fst;
@@ -396,6 +411,11 @@ static inline void fail_s1_walk(struct s1_walk_result *wr, u8 fst, bool s1ptw) wr->failed = true; } +static inline bool s1_walk_translated (struct s1_walk_result *wr) +{ +return wr->level !=S1_MMU_DISABLED ; +} +int __kvm_translate_va (struct kvm_vcpu *vcpu,struct s1_walk_info *wi,struct s1_walk_result *wr,u64 va); int __kvm_find_s1_desc_level(struct kvm_vcpu *vcpu, u64 va, u64 ipa,
arch/arm64/kernel/cpu_errata.c +1 -1
@@ -82,7 +82,7 @@ is_affected_midr_range(const struct arm64_cpu_capabilities *entry, int scope)for (i =0 ; i < target_impl_cpu_num; i++) {if (__is_affected_midr_range (entry, target_impl_cpus[i].midr, - target_impl_cpus[i].midr)) + target_impl_cpus[i].revidr))return true; }return false;
arch/arm64/kernel/cpufeature.c +29 -4
@@ -1176,6 +1176,33 @@ static bool detect_ftr_has_mpam(void)return id_aa64pfr0_mpam (pfr0) ||id_aa64pfr1_mpamfrac (pfr1); } +bool gmid_el1_accessible (const struct cpuinfo_arm64 *info) +{ +const struct arm64_ftr_bits *ftrp; +s64 mte, ovr; +u64 ftr_mask; + +/* No ID register reflects CONFIG_ARM64_MTE. */ +if (!IS_ENABLED (CONFIG_ARM64_MTE )) +return false; + +for (ftrp = ftr_id_aa64pfr1; ftrp->width; ftrp++) { +if (ftrp->shift ==ID_AA64PFR1_EL1_MTE_SHIFT ) +break ; + } + + ftr_mask =arm64_ftr_mask (ftrp); + mte =arm64_ftr_value (ftrp, info->reg_id_aa64pfr1); + +/* The boot CPU runs before init_cpu_ftr_reg() strips unsafe overrides. */ +if ((id_aa64pfr1_override.mask & ftr_mask) == ftr_mask) { + ovr =arm64_ftr_value (ftrp, id_aa64pfr1_override.val); + mte =arm64_ftr_safe_value (ftrp, ovr, mte); + } + +return mte >=ID_AA64PFR1_EL1_MTE_MTE2 ; +} +void __init init_cpu_features (struct cpuinfo_arm64 *info) {/* Before we start using the tables, make sure it is sorted */
@@ -1228,7 +1255,7 @@ void __init init_cpu_features(struct cpuinfo_arm64 *info)init_cpu_ftr_reg (SYS_MPAMIDR_EL1 , info->reg_mpamidr); } -if (id_aa64pfr1_mte (info->reg_id_aa64pfr1)) +if (gmid_el1_accessible (info))init_cpu_ftr_reg (SYS_GMID_EL1 , info->reg_gmid); }
@@ -1490,11 +1517,9 @@ void update_cpu_features(int cpu,* they read/write depends on the GMID_EL1.BS field. Check that the * value is the same on all CPUs. */ -if (IS_ENABLED (CONFIG_ARM64_MTE ) && -id_aa64pfr1_mte (info->reg_id_aa64pfr1)) { +if (gmid_el1_accessible (info)) taint |=check_update_ftr_reg (SYS_GMID_EL1 , cpu, info->reg_gmid, boot->reg_gmid); - }/* * If we don't have AArch32 at all then skip the checks entirely
arch/arm64/kernel/cpuinfo.c +1 -1
@@ -502,7 +502,7 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info) info->reg_id_aa64smfr0 =read_cpuid (ID_AA64SMFR0_EL1 ); info->reg_id_aa64fpfr0 =read_cpuid (ID_AA64FPFR0_EL1 ); -if (id_aa64pfr1_mte (info->reg_id_aa64pfr1)) +if (gmid_el1_accessible (info)) info->reg_gmid =read_cpuid (GMID_EL1 );if (id_aa64pfr0_32bit_el0 (info->reg_id_aa64pfr0))
arch/arm64/kvm/at.c +0 -2
@@ -11,8 +11,6 @@#include <asm/kvm_mmu.h> #include <asm/lsui.h> -#define S1_MMU_DISABLED (-127) -static int get_ia_size (struct s1_walk_info *wi) {return 64 - wi->txsz;
arch/arm64/kvm/hyp/vhe/switch.c +1 -2
@@ -427,8 +427,7 @@ static bool kvm_hyp_handle_tlbi_el2(struct kvm_vcpu *vcpu, u64 *exit_code)* If we have to check for any VNCR mapping being invalidated, * go back to the slow path for further processing. */ -if (vcpu_el2_e2h_is_set (vcpu) &&vcpu_el2_tge_is_set (vcpu) && -atomic_read (&vcpu->kvm->arch.vncr_map_count)) +if (vcpu_el2_e2h_is_set (vcpu) &&vcpu_el2_tge_is_set (vcpu))return false;__kvm_skip_instr (vcpu);
arch/arm64/kvm/nested.c +92 -47
265 lines not on this page · raw message
arch/arm64/kvm/sys_regs.c +11 -0
@@ -4057,6 +4057,7 @@ static bool handle_ripas2e1is(struct kvm_vcpu *vcpu, struct sys_reg_params *p,u32 sys_encoding =sys_insn (p->Op0, p->Op1, p->CRn, p->CRm, p->Op2);u64 vttbr =vcpu_read_sys_reg (vcpu,VTTBR_EL2 );u64 base, range; +int pa_bits;if (!kvm_supported_tlbi_ipas2_op (vcpu, sys_encoding))return undef_access (vcpu, p, r);
@@ -4068,6 +4069,16 @@ static bool handle_ripas2e1is(struct kvm_vcpu *vcpu, struct sys_reg_params *p,*/ base =decode_range_tlbi (p->regval, &range,NULL ); +/* +* Ignore TLBIs that start out of PA_bits range, and cap the +* invalidation to the [base:bit(PA_bits)] interval. +*/ + pa_bits =kvm_get_pa_bits (vcpu->kvm); +if (fls64 (base) > pa_bits) +return true; + + range =min (range,BIT_ULL (pa_bits) - base); + kvm_s2_mmu_iterate_by_vmid(vcpu->kvm, get_vmid(vttbr), &(union tlbi_info) { .range = {
arch/arm64/kvm/vgic/vgic-init.c +1 -0
@@ -176,6 +176,7 @@ int kvm_vgic_create(struct kvm *kvm, u32 type) } kvm->arch.vgic.vgic_model =0 ; + kvm->arch.vgic.in_kernel = false; goto out_unlock; }
arch/arm64/kvm/vgic/vgic-its.c +8 -0
@@ -2119,6 +2119,14 @@ static int vgic_its_save_ite(struct vgic_its *its, struct its_device *dev,u32 next_offset;u64 val; +/* +* MAPC with V=0 keeps the ITEs mapped but drops their collection, +* and with it the ICID. Save a zeroed entry, which the restore path +* reads back as invalid. +*/ +if (!ite->collection) +return vgic_its_write_entry_lock (its, gpa,0ULL , ite); + next_offset =compute_next_eventid_offset (&dev->itt_head, ite); val = ((u64 )next_offset <<KVM_ITS_ITE_NEXT_SHIFT ) | ((u64)ite->irq->intid << KVM_ITS_ITE_PINTID_SHIFT) |
arch/arm64/kvm/vgic/vgic-v3-nested.c +1 -1
@@ -152,7 +152,7 @@ static void vgic_compute_mi_state(struct kvm_vcpu *vcpu, struct mi_state *mi_sta eisr |=BIT (i);if (!(lr &ICH_LR_STATE )) elrsr |=BIT (i); - pend |= (lr &ICH_LR_PENDING_BIT ); + pend |= (lr &ICH_LR_STATE ) ==ICH_LR_PENDING_BIT ; } mi_state->eisr = eisr;
arch/arm64/kvm/vgic/vgic-v3.c +9 -3
@@ -617,9 +617,13 @@ int vgic_v3_save_pending_tables(struct kvm *kvm)bool is_pending;bool stored; + irq =vgic_get_irq (kvm, index); +if (!irq) +continue ; + vcpu = irq->target_vcpu;if (!vcpu) -continue ; + goto put_irq; pendbase =GICR_PENDBASER_ADDRESS (vcpu->arch.vgic_cpu.pendbaser);
@@ -630,7 +634,7 @@ int vgic_v3_save_pending_tables(struct kvm *kvm)if (ptr != last_ptr) { ret =kvm_read_guest_lock (kvm, ptr, &val,1 );if (ret) - goto out; + goto put_irq; last_ptr = ptr; }
@@ -642,7 +646,7 @@ int vgic_v3_save_pending_tables(struct kvm *kvm)vgic_v4_get_vlpi_state (irq, &is_pending);if (stored == is_pending) -continue ; + goto put_irq;if (is_pending) val |=1 << bit_nr;
@@ -650,6 +654,8 @@ int vgic_v3_save_pending_tables(struct kvm *kvm) val &= ~(1 << bit_nr); ret =vgic_write_guest_lock (kvm, ptr, &val,1 ); +put_irq: +vgic_put_irq (kvm, irq);if (ret) goto out; }
arch/arm64/mm/fault.c +8 -4
@@ -16,6 +16,7 @@#include <linux/mm.h> #include <linux/hardirq.h> #include <linux/init.h> +#include <linux/irqflags.h> #include <linux/kasan.h> #include <linux/kprobes.h> #include <linux/uaccess.h>
@@ -154,6 +155,9 @@ static void show_pte(unsigned long addr)pr_alert ("%s pgtable: %luk pages, %llu-bit VAs, pgdp=%016lx\n" , mm == &init_mm ?"swapper" :"user" ,PAGE_SIZE /SZ_1K , vabits_actual,mm_to_pgd_phys (mm)); + +guard (irqsave)(); + pgdp =pgd_offset (mm, addr); pgd =READ_ONCE (*pgdp);pr_alert ("[%016lx] pgd=%016llx" , addr,pgd_val (pgd));
@@ -167,25 +171,25 @@ static void show_pte(unsigned long addr)if (pgd_none (pgd) ||pgd_bad (pgd))break ; - p4dp =p4d_offset (pgdp, addr); + p4dp =p4d_offset_lockless (pgdp, pgd, addr); p4d =READ_ONCE (*p4dp);pr_cont (", p4d=%016llx" ,p4d_val (p4d));if (p4d_none (p4d) ||p4d_bad (p4d))break ; - pudp =pud_offset (p4dp, addr); + pudp =pud_offset_lockless (p4dp, p4d, addr); pud =READ_ONCE (*pudp);pr_cont (", pud=%016llx" ,pud_val (pud));if (pud_none (pud) ||pud_bad (pud))break ; - pmdp =pmd_offset (pudp, addr); + pmdp =pmd_offset_lockless (pudp, pud, addr); pmd =READ_ONCE (*pmdp);pr_cont (", pmd=%016llx" ,pmd_val (pmd));if (pmd_none (pmd) ||pmd_bad (pmd))break ; - ptep =pte_offset_map (pmdp, addr); + ptep =pte_offset_map (&pmd, addr);if (!ptep)break ;
arch/loongarch/Kconfig +1 -1
@@ -175,7 +175,7 @@ config LOONGARCH select HAVE_RELIABLE_STACKTRACE if UNWINDER_ORC select HAVE_RETHOOK select HAVE_RSEQ - select HAVE_RUST + select HAVE_RUST if !KASAN select HAVE_SAMPLE_FTRACE_DIRECT select HAVE_SAMPLE_FTRACE_DIRECT_MULTI select HAVE_SETUP_PER_CPU_AREA if NUMA
arch/loongarch/include/asm/kvm_dmsintc.h +1 -0
@@ -20,6 +20,7 @@ struct dmsintc_state { };int kvm_loongarch_register_dmsintc_device (void ); +void kvm_loongarch_unregister_dmsintc_device (void );void dmsintc_inject_irq (struct kvm_vcpu *vcpu);int dmsintc_set_irq (struct kvm *kvm,u64 addr,int data,int level);int dmsintc_deliver_msi_to_vcpu (struct kvm *kvm,struct kvm_vcpu *vcpu,u32 vector,int level);
arch/loongarch/include/asm/kvm_eiointc.h +1 -0
@@ -79,6 +79,7 @@ struct loongarch_eiointc { };int kvm_loongarch_register_eiointc_device (void ); +void kvm_loongarch_unregister_eiointc_device (void );void eiointc_set_irq (struct loongarch_eiointc *s,int irq,int level);#endif /* __ASM_KVM_EIOINTC_H */
arch/loongarch/include/asm/kvm_host.h +1 -0
@@ -125,6 +125,7 @@ struct kvm_arch {unsigned int pte_shifts[MAX_PGTABLE_LEVELS ];unsigned int root_level;spinlock_t phyid_map_lock; +spinlock_t pv_setting_lock;struct kvm_phyid_map *phyid_map;/* Enabled PV features */ unsigned long pv_features;
arch/loongarch/include/asm/kvm_ipi.h +1 -0
@@ -41,5 +41,6 @@ struct ipi_state {#define IOCSR_ANY_SEND 0x158int kvm_loongarch_register_ipi_device (void ); +void kvm_loongarch_unregister_ipi_device (void );#endif
arch/loongarch/include/asm/kvm_pch_pic.h +1 -0
@@ -70,6 +70,7 @@ struct loongarch_pch_pic {struct kvm_kernel_irq_routing_entry ;int kvm_loongarch_register_pch_pic_device (void ); +void kvm_loongarch_unregister_pch_pic_device (void );void pch_pic_set_irq (struct loongarch_pch_pic *s,int irq,int level);int pch_msi_set_irq (struct kvm *kvm,struct kvm_kernel_irq_routing_entry *e,int level);
arch/loongarch/include/asm/pgtable.h +8 -1
@@ -96,7 +96,7 @@ struct vm_area_struct;#ifdef CONFIG_64BIT #define MODULES_VADDR (vm_map_base + PCI_IOSIZE + (2 * PAGE_SIZE)) -#define MODULES_END (MODULES_VADDR + SZ_256M) +#define MODULES_END (MODULES_VADDR + SZ_2G)/* 256MB for text, rest for data */ #ifdef CONFIG_KFENCE #define KFENCE_AREA_SIZE (((CONFIG_KFENCE_NUM_OBJECTS + 1) * 2 + 2) * PAGE_SIZE)
@@ -125,6 +125,13 @@ struct vm_area_struct;#endif +/* Needed to limit get_free_mem_region() */ +#ifndef CONFIG_SPARSEMEM +#define DIRECT_MAP_PHYSMEM_END ((1ULL << (cpu_pabits + 1)) - 1) +#else +#define DIRECT_MAP_PHYSMEM_END min((1ULL << (cpu_pabits + 1)) - 1, (1ULL << MAX_PHYSMEM_BITS) - 1) +#endif +#define ptep_get (ptep) READ_ONCE(*(ptep))#define pmdp_get (pmdp) READ_ONCE(*(pmdp))
arch/loongarch/kernel/acpi.c +2 -1
@@ -13,6 +13,7 @@#include <linux/export.h> #include <linux/irq.h> #include <linux/irqdomain.h> +#include <linux/kvm_host.h> #include <linux/memblock.h> #include <linux/of_fdt.h> #include <linux/serial_core.h>
@@ -202,7 +203,7 @@ static void __init acpi_process_madt(void)int pptt_enabled;static int acpi_nr_packages; -static int acpi_package_ids[MAX_PACKAGES ]; +static int acpi_package_ids[MAX (MAX_PACKAGES ,KVM_MAX_VCPUS )];int __init parse_acpi_topology (void ) {
arch/loongarch/kernel/kprobes.c +3 -0
@@ -275,6 +275,9 @@ bool kprobe_singlestep_handler(struct pt_regs *regs)struct kprobe_ctlblk *kcb =get_kprobe_ctlblk ();unsigned long addr =instruction_pointer (regs); +if (!cur) +return false; +if (cur && (kcb->kprobe_status & (KPROBE_HIT_SS |KPROBE_REENTER )) && ((unsigned long )&cur->ainsn.insn[1 ] == addr)) {restore_local_irqflag (kcb, regs);
arch/loongarch/kernel/rethook_trampoline.S +0 -2
@@ -24,7 +24,6 @@ cfi_st t6, PT_R18 cfi_st t7, PT_R19 cfi_st t8, PT_R20 - cfi_st u0, PT_R21 cfi_st fp, PT_R22 cfi_st s0, PT_R23 cfi_st s1, PT_R24
@@ -59,7 +58,6 @@ cfi_ld t6, PT_R18 cfi_ld t7, PT_R19 cfi_ld t8, PT_R20 - cfi_ld u0, PT_R21 cfi_ld fp, PT_R22 cfi_ld s0, PT_R23 cfi_ld s1, PT_R24
arch/loongarch/kvm/exit.c +0 -1
@@ -481,7 +481,6 @@ int kvm_emu_mmio_read(struct kvm_vcpu *vcpu, larch_inst inst)srcu_read_unlock (&vcpu->kvm->srcu, idx);if (!ret) {kvm_complete_mmio_read (vcpu, run); -update_pc (&vcpu->arch); vcpu->mmio_needed =0 ;return EMULATE_DONE ; }
arch/loongarch/kvm/intc/dmsintc.c +6 -2
@@ -19,8 +19,7 @@ void dmsintc_inject_irq(struct kvm_vcpu *vcpu)for (i =0 ; i <4 ; i++) { old =atomic64_read (&(ds->vector_map[i])); -if (old) - vector[i] =atomic64_xchg (&(ds->vector_map[i]),0 ); + vector[i] = old ?atomic64_xchg (&(ds->vector_map[i]),0 ) :0 ; }if (vector[0 ]) {
@@ -180,3 +179,8 @@ int kvm_loongarch_register_dmsintc_device(void) {return kvm_register_device_ops (&kvm_dmsintc_dev_ops,KVM_DEV_TYPE_LOONGARCH_DMSINTC ); } + +void kvm_loongarch_unregister_dmsintc_device (void ) +{ +kvm_unregister_device_ops (KVM_DEV_TYPE_LOONGARCH_DMSINTC ); +}
arch/loongarch/kvm/intc/eiointc.c +5 -0
@@ -691,3 +691,8 @@ int kvm_loongarch_register_eiointc_device(void) {return kvm_register_device_ops (&kvm_eiointc_dev_ops,KVM_DEV_TYPE_LOONGARCH_EIOINTC ); } + +void kvm_loongarch_unregister_eiointc_device (void ) +{ +kvm_unregister_device_ops (KVM_DEV_TYPE_LOONGARCH_EIOINTC ); +}
arch/loongarch/kvm/intc/ipi.c +5 -0
@@ -466,3 +466,8 @@ int kvm_loongarch_register_ipi_device(void) {return kvm_register_device_ops (&kvm_ipi_dev_ops,KVM_DEV_TYPE_LOONGARCH_IPI ); } + +void kvm_loongarch_unregister_ipi_device (void ) +{ +kvm_unregister_device_ops (KVM_DEV_TYPE_LOONGARCH_IPI ); +}
arch/loongarch/kvm/intc/pch_pic.c +8 -0
@@ -78,6 +78,9 @@ int pch_msi_set_irq(struct kvm *kvm, struct kvm_kernel_irq_routing_entry *e, intreturn dmsintc_set_irq (kvm, msg_addr, e->msi.data, level); } +if (e->msi.data >=EIOINTC_IRQS ) +return -EINVAL ; +eiointc_set_irq (kvm->arch.eiointc, e->msi.data, level);return 0 ;
@@ -500,3 +503,8 @@ int kvm_loongarch_register_pch_pic_device(void) {return kvm_register_device_ops (&kvm_pch_pic_dev_ops,KVM_DEV_TYPE_LOONGARCH_PCHPIC ); } + +void kvm_loongarch_unregister_pch_pic_device (void ) +{ +kvm_unregister_device_ops (KVM_DEV_TYPE_LOONGARCH_PCHPIC ); +}
arch/loongarch/kvm/main.c +34 -5
@@ -385,27 +385,52 @@ static int kvm_loongarch_env_init(void)/* Register LoongArch IPI interrupt controller interface. */ ret =kvm_loongarch_register_ipi_device ();if (ret) -return ret; + goto err_env;/* Register LoongArch EIOINTC interrupt controller interface. */ ret =kvm_loongarch_register_eiointc_device ();if (ret) -return ret; + goto err_ipi;/* Register LoongArch PCH-PIC interrupt controller interface. */ ret =kvm_loongarch_register_pch_pic_device ();if (ret) -return ret; + goto err_eiointc;/* Register LoongArch DMSINTC interrupt contrroller interface */ -if (cpu_has_msgint) +if (cpu_has_msgint) { ret =kvm_loongarch_register_dmsintc_device (); +if (ret) + goto err_pch_pic; + } + +return 0 ; + +err_pch_pic: +kvm_loongarch_unregister_pch_pic_device (); +err_eiointc: +kvm_loongarch_unregister_eiointc_device (); +err_ipi: +kvm_loongarch_unregister_ipi_device (); +err_env: +kvm_unregister_perf_callbacks (); +kfree (kvm_loongarch_ops); + kvm_loongarch_ops =NULL ; +free_percpu (vmcs); + vmcs =NULL ;return ret; }static void kvm_loongarch_env_exit (void ) { +if (cpu_has_msgint) +kvm_loongarch_unregister_dmsintc_device (); + +kvm_loongarch_unregister_pch_pic_device (); +kvm_loongarch_unregister_eiointc_device (); +kvm_loongarch_unregister_ipi_device (); +if (vmcs)free_percpu (vmcs);
@@ -428,7 +453,11 @@ static int kvm_loongarch_init(void)if (r)return r; -return kvm_init (sizeof (struct kvm_vcpu ),0 ,THIS_MODULE ); + r =kvm_init (sizeof (struct kvm_vcpu ),0 ,THIS_MODULE ); +if (r) +kvm_loongarch_env_exit (); + +return r; }static void kvm_loongarch_exit (void )
arch/loongarch/kvm/mmu.c +10 -0
@@ -383,6 +383,16 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm, const struct kvm_memory_slothva_t hva_start;size_t size, gpa_offset, hva_offset; +/* +* The generic code allocates a fresh, zeroed memslot for every change, +* so the arch flags computed below must be carried over when only the +* userspace flags change, e.g. when dirty logging is toggled. +*/ +if (change ==KVM_MR_FLAGS_ONLY ) { + new->arch = old->arch; +return 0 ; + } +if ((change !=KVM_MR_MOVE ) && (change !=KVM_MR_CREATE ))return 0 ;/*
arch/loongarch/kvm/vcpu.c +6 -2
@@ -300,10 +300,10 @@ static int kvm_pre_enter_guest(struct kvm_vcpu *vcpu)*/ local_irq_disable ();kvm_deliver_exception (vcpu); +kvm_check_vpid (vcpu);/* Make sure the vcpu mode has been written */ smp_store_mb (vcpu->mode,IN_GUEST_MODE );kvm_deliver_intr (vcpu); -kvm_check_vpid (vcpu);/* * Called after function kvm_check_vpid()
@@ -1165,10 +1165,14 @@ static int kvm_loongarch_cpucfg_set_attr(struct kvm_vcpu *vcpu,return -EINVAL ;/* All vCPUs need set the same PV features */ +spin_lock (&kvm->arch.pv_setting_lock);if ((kvm->arch.pv_features &LOONGARCH_PV_FEAT_UPDATED ) - && ((kvm->arch.pv_features & valid) != val)) + && ((kvm->arch.pv_features & valid) != val)) { +spin_unlock (&kvm->arch.pv_setting_lock);return -EINVAL ; + } kvm->arch.pv_features = val |LOONGARCH_PV_FEAT_UPDATED ; +spin_unlock (&kvm->arch.pv_setting_lock);return 0 ;default :return -ENXIO ;
arch/loongarch/kvm/vm.c +1 -0
@@ -76,6 +76,7 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type)return -ENOMEM ; }spin_lock_init (&kvm->arch.phyid_map_lock); +spin_lock_init (&kvm->arch.pv_setting_lock);kvm_init_vmcs (kvm);kvm_vm_init_features (kvm);
arch/loongarch/mm/init.c +14 -3
@@ -237,15 +237,26 @@ pte_t invalid_pte_table[PTRS_PER_PTE] __page_aligned_bss;EXPORT_SYMBOL (invalid_pte_table);#if defined(CONFIG_EXECMEM ) && defined(MODULES_VADDR ) +#define MODULES_TEXT_START (MODULES_VADDR) +#define MODULES_TEXT_END (MODULES_VADDR + SZ_256M) +#define MODULES_DATA_START (MODULES_VADDR + SZ_256M) +#define MODULES_DATA_END (MODULES_END) +static struct execmem_info execmem_info__ro_after_init ;struct execmem_info __init *execmem_arch_setup (void ) { execmem_info = (struct execmem_info ){ .ranges = { - [EXECMEM_DEFAULT ] = { - .start =MODULES_VADDR , - .end =MODULES_END , + [EXECMEM_MODULE_TEXT ] = { + .start =MODULES_TEXT_START , + .end =MODULES_TEXT_END , + .pgprot =PAGE_KERNEL , + .alignment =1 , + }, + [EXECMEM_MODULE_DATA ] = { + .start =MODULES_DATA_START , + .end =MODULES_DATA_END , .pgprot =PAGE_KERNEL , .alignment =1 , },
arch/loongarch/net/bpf_jit.c +18 -22
@@ -124,6 +124,9 @@ static void prepare_bpf_tail_call_cnt(struct jit_ctx *ctx, int *store_offset)* | tcc | * +-------------------------+ * | tcc_ptr | +* +-------------------------+ +* | arena | +* | (optional) | * +-------------------------+ <--BPF_REG_FP * | prog->aux->stack_depth | * | (optional) |
@@ -145,7 +148,7 @@ static void build_prologue(struct jit_ctx *ctx) stack_adjust +=sizeof (long ) *2 ;if (ctx->arena_vm_start) - stack_adjust +=8 ; + stack_adjust +=sizeof (long ); stack_adjust =round_up (stack_adjust,16 ); stack_adjust += bpf_stack_adjust;
@@ -194,13 +197,13 @@ static void build_prologue(struct jit_ctx *ctx) store_offset -=sizeof (long );emit_insn (ctx, std,LOONGARCH_GPR_S5 ,LOONGARCH_GPR_SP , store_offset); +prepare_bpf_tail_call_cnt (ctx, &store_offset); +if (ctx->arena_vm_start) { store_offset -=sizeof (long );emit_insn (ctx, std,REG_ARENA ,LOONGARCH_GPR_SP , store_offset); } -prepare_bpf_tail_call_cnt (ctx, &store_offset); -emit_insn (ctx, addid,LOONGARCH_GPR_FP ,LOONGARCH_GPR_SP , stack_adjust);if (bpf_stack_adjust)
@@ -241,21 +244,18 @@ static void __build_epilogue(struct jit_ctx *ctx, bool is_tail_call) load_offset -=sizeof (long );emit_insn (ctx, ldd,LOONGARCH_GPR_S5 ,LOONGARCH_GPR_SP , load_offset); +/* Only restore the TCC state into REG_TCC from the higher slot */ + load_offset -=sizeof (long ); +emit_insn (ctx, ldd,REG_TCC ,LOONGARCH_GPR_SP , load_offset); + +/* Skip the unused local 'tcc_ptr' slot to align with arena */ + load_offset -=sizeof (long ); +if (ctx->arena_vm_start) { load_offset -=sizeof (long );emit_insn (ctx, ldd,REG_ARENA ,LOONGARCH_GPR_SP , load_offset); } -/* -* When push into the stack, follow the order of tcc then tcc_ptr. -* When pop from the stack, first pop tcc_ptr then followed by tcc. -*/ - load_offset -=2 *sizeof (long ); -emit_insn (ctx, ldd,REG_TCC ,LOONGARCH_GPR_SP , load_offset); - - load_offset +=sizeof (long ); -emit_insn (ctx, ldd,REG_TCC ,LOONGARCH_GPR_SP , load_offset); -emit_insn (ctx, addid,LOONGARCH_GPR_SP ,LOONGARCH_GPR_SP , stack_adjust);if (!is_tail_call) {
@@ -290,17 +290,13 @@ bool bpf_jit_supports_far_kfunc_call(void)static int emit_bpf_tail_call (struct jit_ctx *ctx,int insn) { -int off, tc_ninsn =0 ; +int off, jmp_offset;int tcc_ptr_off =BPF_TAIL_CALL_CNT_PTR_STACK_OFF (ctx->stack_size);u8 a1 =LOONGARCH_GPR_A1 ;u8 a2 =LOONGARCH_GPR_A2 ;u8 t1 =LOONGARCH_GPR_T1 ;u8 t2 =LOONGARCH_GPR_T2 ;u8 t3 =LOONGARCH_GPR_T3 ; -const int idx0 = ctx->idx; - -#define cur_offset (ctx->idx - idx0) -#define jmp_offset (tc_ninsn - (cur_offset))/* * a0: &ctx
@@ -310,12 +306,12 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx, int insn)* if (index >= array->map.max_entries) * goto out; */ - tc_ninsn = insn ? ctx->offset[insn+1 ] - ctx->offset[insn] : ctx->offset[0 ];emit_zext_32 (ctx, a2, true); off = offsetof(struct bpf_array, map.max_entries);emit_insn (ctx, ldwu, t1, a1, off);/* bgeu $a2, $t1, jmp_offset */ + jmp_offset = ctx->image ? (ctx->offset[insn +1 ] - ctx->idx) :0 ;if (emit_tailcall_jmp (ctx,BPF_JGE , a2, t1, jmp_offset) <0 ) goto toofar;
@@ -326,6 +322,7 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx, int insn)emit_insn (ctx, ldd,REG_TCC ,LOONGARCH_GPR_SP , tcc_ptr_off);emit_insn (ctx, ldd, t3,REG_TCC ,0 );emit_insn (ctx, addid, t2,LOONGARCH_GPR_ZERO ,MAX_TAIL_CALL_CNT ); + jmp_offset = ctx->image ? (ctx->offset[insn +1 ] - ctx->idx) :0 ;if (emit_tailcall_jmp (ctx,BPF_JSGE , t3, t2, jmp_offset) <0 ) goto toofar;
@@ -340,6 +337,7 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx, int insn) off = offsetof(struct bpf_array , ptrs);emit_insn (ctx, ldd, t2, t2, off);/* beq $t2, $zero, jmp_offset */ + jmp_offset = ctx->image ? (ctx->offset[insn +1 ] - ctx->idx) :0 ;if (emit_tailcall_jmp (ctx,BPF_JEQ , t2,LOONGARCH_GPR_ZERO , jmp_offset) <0 ) goto toofar;
@@ -355,8 +353,6 @@ static int emit_bpf_tail_call(struct jit_ctx *ctx, int insn) toofar:pr_info_once ("tail_call: jump too far\n" );return -1 ; -#undef cur_offset -#undef jmp_offset }static void emit_store_stack_imm64 (struct jit_ctx *ctx,int reg,int stack_off,u64 imm64)
@@ -738,7 +734,7 @@ static int build_insn(const struct bpf_insn *insn, struct jit_ctx *ctx, bool extmove_reg (ctx, t1, src);emit_zext_32 (ctx, t1, true);move_imm (ctx, dst, (ctx->user_vm_start >>32 ) <<32 , false); -emit_insn (ctx, beq, t1,LOONGARCH_GPR_ZERO ,1 ); +emit_insn (ctx, beq, t1,LOONGARCH_GPR_ZERO ,2 );emit_insn (ctx, or, t1, dst, t1);move_reg (ctx, dst, t1);break ;
arch/parisc/kernel/head.S +1 -0
@@ -105,6 +105,7 @@ $iodc_panic: or %r10,%r10,%r10 /* qemu idle sleep */ msg1: .ascii "Can't boot kernel which was built for PA8x00 CPUs on this machine.\r\n" msg1_end: + .align 4 $cpu_ok: #endif
arch/powerpc/include/asm/papr-watchdog.h new file +64 -0
64 lines not on this page · raw message
arch/powerpc/include/asm/reg.h +12 -0
@@ -1357,6 +1357,18 @@#define PVR_ARCH_31 0x0f000006#define PVR_ARCH_31_P11 0x0f000007 +/* +* Kernel-internal sentinel for invalid processor compatibility modes. +* PAPR specifies that the first byte of a valid logical PVR value is +* 0x0f. So 0xffffffff lies permanently outside the PAPR-defined range +* and is safe to repurpose. KVM stores it in vcpu->arch.arch_compat +* when userspace requests an unsupported compatibility mode (e.g., +* Power11 PVR on a Power11 host booted in Power10 compat). +* kvmppc_sanity_check() detects this and prevents the vCPU from +* running with an unsupported arch_compat. +*/ +#define PVR_ARCH_INVALID 0xffffffff +/* Macros for setting and retrieving special purpose registers */ #ifndef __ASSEMBLER__
arch/powerpc/kexec/file_load_64.c +1 -1
@@ -664,7 +664,7 @@ unsigned int kexec_extra_fdt_size_ppc64(struct kimage *image, struct crash_mem * extra_size += (cpu_nodes - boot_cpu_node_count) *cpu_node_size ();/* Consider extra space for reserved memory ranges if any */ -if (rmem->nr_ranges >0 ) +if (rmem && rmem->nr_ranges >0 ) extra_size +=sizeof (struct fdt_reserve_entry ) * rmem->nr_ranges;return extra_size +kdump_extra_fdt_size_ppc64 (image, cpu_nodes);
arch/powerpc/kexec/ranges.c +5 -7
@@ -21,6 +21,7 @@#include <linux/of.h> #include <linux/slab.h> #include <linux/memblock.h> +#include <linux/minmax.h> #include <linux/crash_core.h> #include <asm/sections.h> #include <asm/kexec_ranges.h>
@@ -105,19 +106,16 @@ static void __merge_memory_ranges(struct crash_mem *mem_rngs)struct range *ranges;int i, idx; -if (!mem_rngs) +if (!mem_rngs || mem_rngs->nr_ranges <=1 )return ; idx =0 ; - ranges = &(mem_rngs->ranges[0 ]); + ranges = mem_rngs->ranges;for (i =1 ; i < mem_rngs->nr_ranges; i++) { -if (ranges[i].start <= (ranges[i-1 ].end +1 )) - ranges[idx].end = ranges[i].end; +if (ranges[i].start <= (ranges[idx].end +1 )) + ranges[idx].end =max (ranges[idx].end, ranges[i].end);else { idx++; -if (i == idx) -continue ; - ranges[idx] = ranges[i]; } }
arch/powerpc/kvm/book3s_hv.c +14 -1
@@ -446,7 +446,19 @@ static int kvmppc_set_arch_compat(struct kvm_vcpu *vcpu, u32 arch_compat) guest_pcr_bit =PCR_ARCH_300 ;break ;case PVR_ARCH_31 : + guest_pcr_bit =PCR_ARCH_31 ; +break ;case PVR_ARCH_31_P11 : +/* +* Need to check this for ISA 3.1, as Power10 and +* Power11 share the same PCR. For any subsequent ISA +* versions, this will be taken care of by the guest vs +* host PCR comparison below. +*/ +if (!cpu_has_feature (CPU_FTR_P11_PVR )) { + arch_compat =PVR_ARCH_INVALID ; + goto out; + } guest_pcr_bit =PCR_ARCH_31 ;break ;default :
@@ -469,6 +481,7 @@ static int kvmppc_set_arch_compat(struct kvm_vcpu *vcpu, u32 arch_compat)return -EINVAL ; } +out:spin_lock (&vc->lock); vc->arch_compat = arch_compat;kvmhv_nestedv2_mark_dirty (vcpu,KVMPPC_GSID_LOGICAL_PVR );
@@ -479,7 +492,7 @@ static int kvmppc_set_arch_compat(struct kvm_vcpu *vcpu, u32 arch_compat) vc->pcr = (host_pcr_bit - guest_pcr_bit) |PCR_MASK ;spin_unlock (&vc->lock); -return 0 ; +return kvmppc_sanity_check (vcpu); }static void kvmppc_dump_regs (struct kvm_vcpu *vcpu)
arch/powerpc/kvm/powerpc.c +6 -0
@@ -258,6 +258,12 @@ int kvmppc_sanity_check(struct kvm_vcpu *vcpu)if (!vcpu->arch.pvr) goto out; +#if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE ) +if (vcpu->arch.vcore && + vcpu->arch.vcore->arch_compat ==PVR_ARCH_INVALID ) + goto out; +#endif +/* PAPR only works with book3s_64 */ if ((vcpu->arch.cpu_type !=KVM_CPU_3S_64 ) && vcpu->arch.papr_enabled) goto out;
arch/powerpc/mm/book3s64/radix_pgtable.c +1 -6
@@ -1314,7 +1314,6 @@ int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,* covering out both edges. */ unsigned long addr; -unsigned long addr_pfn = start_pfn;unsigned long next;pgd_t *pgd;p4d_t *p4d;
@@ -1335,7 +1334,6 @@ int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,if (pmd_leaf (READ_ONCE (*pmd))) {/* existing huge mapping. Skip the range */ - addr_pfn += (PMD_SIZE >>PAGE_SHIFT ); next =pmd_addr_end (addr, end);continue ; }
@@ -1348,11 +1346,11 @@ int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,* page whose VMEMMAP_RESERVE_NR pages were mapped and * this request fall in those pages. */ - addr_pfn +=1 ; next = addr +PAGE_SIZE ;continue ; }else {unsigned long nr_pages =pgmap_vmemmap_nr (pgmap); +unsigned long addr_pfn =page_to_pfn ((struct page *)addr);unsigned long pfn_offset = addr_pfn -ALIGN_DOWN (addr_pfn, nr_pages);pte_t *tail_page_pte;
@@ -1376,7 +1374,6 @@ int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,if (!pte)return -ENOMEM ; - addr_pfn +=2 ; next = addr +2 *PAGE_SIZE ;continue ; }
@@ -1392,7 +1389,6 @@ int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,return -ENOMEM ;vmemmap_verify (pte, node, addr, addr +PAGE_SIZE ); - addr_pfn +=1 ; next = addr +PAGE_SIZE ;continue ; }
@@ -1402,7 +1398,6 @@ int __meminit vmemmap_populate_compound_pages(unsigned long start_pfn,return -ENOMEM ;vmemmap_verify (pte, node, addr, addr +PAGE_SIZE ); - addr_pfn +=1 ; next = addr +PAGE_SIZE ;continue ; }
arch/powerpc/platforms/pseries/setup.c +26 -2
@@ -77,6 +77,7 @@#include <asm/dtl.h> #include <asm/hvconsole.h> #include <asm/setup.h> +#include <asm/papr-watchdog.h> #include "pseries.h"
@@ -185,14 +186,37 @@ static void __init fwnmi_init(void)#endif } +static void pseries_crash_stop_watchdogs (void ) +{ +long rc; + + rc =plpar_hcall_norets_notrace (H_WATCHDOG ,PSERIES_WDTF_OP_STOP , +PSERIES_WDT_NUM_ALL ); +if (rc !=H_SUCCESS && rc !=H_NOOP ) +pr_warn ("Could not stop watchdogs before kdump rc=%ld\n" , rc); +} +/* * Affix a device for the first timer to the platform bus if * we have firmware support for the H_WATCHDOG hypercall. */ static __init int pseries_wdt_init (void ) { -if (firmware_has_feature (FW_FEATURE_WATCHDOG )) -platform_device_register_simple ("pseries-wdt" ,0 ,NULL ,0 ); +struct platform_device *pdev; + +if (!firmware_has_feature (FW_FEATURE_WATCHDOG )) +return 0 ; + + pdev =platform_device_register_simple ("pseries-wdt" ,0 ,NULL ,0 ); + +if (IS_ERR (pdev)) { +pr_err ("Failed to register pseries-wdt platform device\n" ); +return PTR_ERR (pdev); + } + +if (crash_shutdown_register (pseries_crash_stop_watchdogs)) +pr_warn ("Could not register watchdog crash shutdown handler\n" ); +return 0 ; }machine_subsys_initcall (pseries, pseries_wdt_init);
arch/riscv/net/bpf_jit_comp64.c +9 -1
@@ -2114,7 +2114,15 @@ bool bpf_jit_supports_ptr_xchg(void)bool bpf_jit_supports_arena (void ) { -return true; +/* +* The arena range tree uses kmalloc_nolock(), which needs +* cmpxchg128, provided by ZACAS on riscv. +*/ +#ifdef system_has_cmpxchg128 +return system_has_cmpxchg128 (); +#else +return false; +#endif }bool bpf_jit_supports_insn (struct bpf_insn *insn,bool in_arena)
arch/s390/include/asm/nmi.h +3 -0
@@ -22,6 +22,7 @@#define MCCK_CODE_SYSTEM_DAMAGE BIT(63)#define MCCK_CODE_EXT_DAMAGE BIT(63 - 5)#define MCCK_CODE_CP BIT(63 - 9) +#define MCCK_CODE_CK BIT(63 - 11)#define MCCK_CODE_STG_ERROR BIT(63 - 16)#define MCCK_CODE_STG_KEY_ERROR BIT(63 - 18)#define MCCK_CODE_STG_DEGRAD BIT(63 - 19)
@@ -33,6 +34,8 @@#define MCCK_CODE_FC_VALID BIT(63 - 43)#define MCCK_CODE_CPU_TIMER_VALID BIT(63 - 46) +#define MCCK_CODE_NO_GUEST (MCCK_CODE_CP | MCCK_CODE_EXT_DAMAGE | MCCK_CODE_CK) +#ifndef __ASSEMBLER__ union mci {
arch/s390/kernel/nmi.c +1 -4
@@ -344,8 +344,7 @@ static void notrace s390_backup_mcck_info(struct pt_regs *regs) sie_page = container_of(sie_block, struct sie_page, sie_block); mcck_backup = &sie_page->mcck_info; - mcck_backup->mcic =get_lowcore ()->mcck_interruption_code & - ~(MCCK_CODE_CP |MCCK_CODE_EXT_DAMAGE ); + mcck_backup->mcic =get_lowcore ()->mcck_interruption_code & ~MCCK_CODE_NO_GUEST ; mcck_backup->ext_damage_code =get_lowcore ()->external_damage_code; mcck_backup->failing_storage_address =get_lowcore ()->failing_storage_address; }
@@ -357,8 +356,6 @@ NOKPROBE_SYMBOL(s390_backup_mcck_info);#define ED_STP_ISLAND 6/* External damage STP island check */ #define ED_STP_SYNC 7/* External damage STP sync check */ -#define MCCK_CODE_NO_GUEST (MCCK_CODE_CP | MCCK_CODE_EXT_DAMAGE) -/* * machine check handler. */
arch/s390/kvm/guestdbg.c +7 -2
@@ -184,7 +184,7 @@ static int __import_wp_info(struct kvm_vcpu *vcpu,if (wp_info->len <0 || wp_info->len >MAX_WP_SIZE )return -EINVAL ; - wp_info->old_data =kmalloc (bp_data->len,GFP_KERNEL_ACCOUNT ); + wp_info->old_data =kmalloc (wp_info->len,GFP_KERNEL_ACCOUNT );if (!wp_info->old_data)return -ENOMEM ;/* try to backup the original value */
@@ -252,7 +252,7 @@ int kvm_s390_import_bp_data(struct kvm_vcpu *vcpu, ret =__import_wp_info (vcpu, &bp_data[i], &wp_info[nr_wp]);if (ret) - goto error; + goto error_wp; nr_wp++;break ;case KVM_HW_BP :
@@ -267,7 +267,12 @@ int kvm_s390_import_bp_data(struct kvm_vcpu *vcpu, vcpu->arch.guestdbg.hw_bp_info = bp_info; vcpu->arch.guestdbg.nr_hw_wp = nr_wp; vcpu->arch.guestdbg.hw_wp_info = wp_info; +kfree (bp_data);return 0 ; + +error_wp: +while (nr_wp--) +kfree (wp_info[nr_wp].old_data); error:kfree (bp_data);kfree (wp_info);
arch/s390/kvm/interrupt.c +9 -17
@@ -3108,9 +3108,7 @@ static int set_adapter_int(struct kvm_kernel_irq_routing_entry *e,void kvm_s390_reinject_machine_check (struct kvm_vcpu *vcpu,struct mcck_volatile_info *mcck_info) { -struct kvm_s390_interrupt_info inti; -struct kvm_s390_irq irq; -struct kvm_s390_mchk_info *mchk; +struct kvm_s390_irq irq = {};union mci mci;__u64 cr14 =0 ;/* upper bits are not used */ int rc;
@@ -3129,20 +3127,14 @@ void kvm_s390_reinject_machine_check(struct kvm_vcpu *vcpu,if (mci.w) cr14 |=CR14_WARNING_SUBMASK ; - mchk = mci.ck ? &inti.mchk : &irq.u.mchk; - mchk->cr14 = cr14; - mchk->mcic = mcck_info->mcic; - mchk->ext_damage_code = mcck_info->ext_damage_code; - mchk->failing_storage_address = mcck_info->failing_storage_address; -if (mci.ck) { -/* Inject the floating machine check */ - inti.type =KVM_S390_MCHK ; - rc =__inject_vm (vcpu->kvm, &inti); - }else { -/* Inject the machine check to specified vcpu */ - irq.type =KVM_S390_MCHK ; - rc =kvm_s390_inject_vcpu (vcpu, &irq); - } + irq.u.mchk.cr14 = cr14; + irq.u.mchk.mcic = mcck_info->mcic; + irq.u.mchk.ext_damage_code = mcck_info->ext_damage_code; + irq.u.mchk.failing_storage_address = mcck_info->failing_storage_address; + +/* Inject the machine check to specified vcpu */ + irq.type =KVM_S390_MCHK ; + rc =kvm_s390_inject_vcpu (vcpu, &irq);WARN_ON_ONCE (rc); }
arch/s390/kvm/kvm-s390.c +14 -8
@@ -562,11 +562,12 @@ static void __kvm_s390_exit(void)static int kvm_s390_keyop (struct kvm_s390_mmu_cache *mc,struct kvm *kvm,int op,unsigned long addr,union skey skey) { -union asce asce = kvm->arch.gmap->asce;gfn_t gfn =gpa_to_gfn (addr); +union asce asce;int r;guard (read_lock)(&kvm->mmu_lock); + asce = kvm->arch.gmap->asce;switch (op) {case KVM_S390_KEYOP_SSKE :
@@ -3410,6 +3411,7 @@ void kvm_arch_vcpu_destroy(struct kvm_vcpu *vcpu)trace_kvm_s390_destroy_vcpu (vcpu->vcpu_id);kvm_s390_clear_local_irqs (vcpu);kvm_clear_async_pf_completion_queue (vcpu); +kvm_s390_clear_bp_data (vcpu);if (!kvm_is_ucontrol (vcpu->kvm))sca_del_vcpu (vcpu);kvm_s390_update_topology_change_report (vcpu->kvm,1 );
@@ -4248,8 +4250,10 @@ int kvm_arch_vcpu_ioctl_set_guest_debug(struct kvm_vcpu *vcpu,/* enforce guest PER */ kvm_s390_set_cpuflags (vcpu,CPUSTAT_P ); -if (dbg->control &KVM_GUESTDBG_USE_HW_BP ) - rc =kvm_s390_import_bp_data (vcpu, dbg); +if (dbg->control &KVM_GUESTDBG_USE_HW_BP ) { +scoped_guard (srcu, &vcpu->kvm->srcu) + rc = kvm_s390_import_bp_data(vcpu, dbg); + } }else {kvm_s390_clear_cpuflags (vcpu,CPUSTAT_P ); vcpu->arch.guestdbg.last_bp =0 ;
@@ -4474,8 +4478,8 @@ int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clostatic void __kvm_inject_pfault_token (struct kvm_vcpu *vcpu,bool start_token,unsigned long token) { -struct kvm_s390_interrupt inti; -struct kvm_s390_irq irq; +struct kvm_s390_interrupt inti = {}; +struct kvm_s390_irq irq = {};struct kvm_s390_interrupt_info *inti_mem =NULL ;int ret =0 ;
@@ -5069,7 +5073,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)pr_err_ratelimited ("can't run stopped vcpu %d\n" , vcpu->vcpu_id); rc = -EINVAL ; - goto out; + goto out_sigset; }kernel_fpu_begin (&fpu,KERNEL_FPC |KERNEL_VXR );
@@ -5099,9 +5103,11 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)store_regs (vcpu);kernel_fpu_end (&fpu,KERNEL_FPC |KERNEL_VXR ); + vcpu->stat.exit_userspace++; + +out_sigset:kvm_sigset_deactivate (vcpu); - vcpu->stat.exit_userspace++; out:vcpu_put (vcpu);return rc;
@@ -5732,7 +5738,7 @@ long kvm_arch_vcpu_ioctl(struct file *filp, r =kvm_s390_handle_pv_vcpu_dump (vcpu, &cmd);/* Always copy over UV rc / rrc data */ -if (copy_to_user ((__u8 __user *)argp, &cmd.rc, +if (copy_to_user (argp + offsetof(struct kvm_pv_cmd , rc), &cmd.rc,sizeof (cmd.rc) +sizeof (cmd.rrc))) r = -EFAULT ;break ;
arch/x86/events/intel/core.c +3 -7
@@ -7947,12 +7947,6 @@ __init int intel_pmu_init(void)x86_add_quirk (intel_arch_events_quirk);/* Install first, so it runs last */ -if (version >=5 ) { - x86_pmu.intel_cap.anythread_deprecated = edx.split.anythread_deprecated; -if (x86_pmu.intel_cap.anythread_deprecated) -pr_cont (" AnyThread deprecated, " ); - } -/* The perf side of core PMU is ready to support the mediated vPMU. */ x86_get_pmu (smp_processor_id ())->capabilities |=PERF_PMU_CAP_MEDIATED_VPMU ;
@@ -8829,8 +8823,10 @@ __init int intel_pmu_init(void) &x86_pmu.intel_ctrl);/* AnyThread may be deprecated on arch perfmon v5 or later */ -if (x86_pmu.intel_cap.anythread_deprecated) +if (version >=5 && edx.split.anythread_deprecated) { x86_pmu.format_attrs = intel_arch_formats_attr; +pr_cont ("AnyThread deprecated, " ); + }intel_pmu_check_event_constraints_all (NULL );
arch/x86/events/intel/lbr.c +9 -3
@@ -1213,7 +1213,7 @@ intel_pmu_lbr_filter(struct cpu_hw_events *cpuc) {u64 from, to;int br_sel = cpuc->br_sel; -int i, j, type, to_plm; +int i, j, type, from_plm, to_plm;bool compress = false;/* if sampling all branches, then nothing to filter */
@@ -1245,8 +1245,14 @@ intel_pmu_lbr_filter(struct cpu_hw_events *cpuc) type |=X86_BR_NO_TX ; } -/* if type does not correspond, then discard */ -if (type ==X86_BR_NONE || (br_sel & type) != type) { + from_plm =kernel_ip (from) ?X86_BR_KERNEL :X86_BR_USER ; +/* +* If type does not correspond, then discard. +* Specifically reject entries whose from address is in +* kernel space when only X86_BR_USER is requested. +*/ +if (type ==X86_BR_NONE || (br_sel & type) != type || + (!(br_sel &X86_BR_KERNEL ) && (from_plm &X86_BR_KERNEL ))) { cpuc->lbr_entries[i].from =0 ; compress = true; }
arch/x86/events/perf_event.h +1 -1
@@ -668,7 +668,7 @@ union perf_capabilities { u64 perf_metrics:1; u64 pebs_output_pt_available:1; u64 pebs_timing_info:1; - u64 anythread_deprecated:1; + u64 __reserved:1; u64 rdpmc_metrics_clear:1; };u64 capabilities;
arch/x86/include/asm/kvm-x86-ops.h +4 -0
@@ -134,6 +134,7 @@ KVM_X86_OP_OPTIONAL(mem_enc_unregister_region) KVM_X86_OP_OPTIONAL(vm_copy_enc_context_from) KVM_X86_OP_OPTIONAL(vm_move_enc_context_from) KVM_X86_OP_OPTIONAL(guest_memory_reclaimed) +KVM_X86_OP_OPTIONAL(reload_vmsa) KVM_X86_OP(get_feature_msr) KVM_X86_OP(check_emulate_instruction) KVM_X86_OP(apic_init_signal_blocked)
@@ -148,6 +149,9 @@ KVM_X86_OP_OPTIONAL(alloc_apic_backing_page) KVM_X86_OP_OPTIONAL_RET0(gmem_prepare) KVM_X86_OP_OPTIONAL_RET0(gmem_max_mapping_level) KVM_X86_OP_OPTIONAL(gmem_invalidate) +#ifdef CONFIG_HAVE_KVM_ARCH_GMEM_INVALIDATE +KVM_X86_OP_OPTIONAL(gmem_invalidate_range) +#endif #endif #undef KVM_X86_OP
arch/x86/include/asm/kvm_host.h +6 -0
@@ -128,6 +128,8 @@ KVM_ARCH_REQ_FLAGS(31, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)#define KVM_REQ_HV_TLB_FLUSH \ KVM_ARCH_REQ_FLAGS(32, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP) +#define KVM_REQ_VMSA_PAGE_RELOAD \ + KVM_ARCH_REQ_FLAGS(33, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)#define KVM_REQ_UPDATE_PROTECTED_GUEST_STATE \ KVM_ARCH_REQ_FLAGS(34, KVM_REQUEST_WAIT)
@@ -1985,6 +1987,7 @@ struct kvm_x86_ops {int (*vm_copy_enc_context_from)(struct kvm *kvm,unsigned int source_fd);int (*vm_move_enc_context_from)(struct kvm *kvm,unsigned int source_fd);void (*guest_memory_reclaimed)(struct kvm *kvm); +void (*reload_vmsa)(struct kvm_vcpu *vcpu);int (*get_feature_msr)(u32 msr,u64 *data);
@@ -2009,6 +2012,9 @@ struct kvm_x86_ops {void *(*alloc_apic_backing_page)(struct kvm_vcpu *vcpu);int (*gmem_prepare)(struct kvm *kvm,kvm_pfn_t pfn,gfn_t gfn,int max_order);void (*gmem_invalidate)(kvm_pfn_t start,kvm_pfn_t end); +#ifdef CONFIG_HAVE_KVM_ARCH_GMEM_INVALIDATE +void (*gmem_invalidate_range)(struct kvm *kvm,struct kvm_gfn_range *range); +#endif int (*gmem_max_mapping_level)(struct kvm *kvm,kvm_pfn_t pfn,bool is_private); };
arch/x86/kvm/hyperv.c +18 -7
@@ -626,6 +626,18 @@ static enum hrtimer_restart stimer_timer_callback(struct hrtimer *timer)return HRTIMER_NORESTART ; } +/* +* Translate a stimer expiry given in 100ns reference ticks into an +* an absolute deadline. Saturates on overflow. +*/ +static ktime_t stimer_add_delta (ktime_t now,u64 delta_100ns) +{ +if (delta_100ns >=KTIME_MAX /100 ) +return KTIME_MAX ; + +return ktime_add_safe (now,100 * delta_100ns); +} +/* * stimer_start() assumptions: * a) stimer->count is not equal to 0
@@ -635,6 +647,7 @@ static int stimer_start(struct kvm_vcpu_hv_stimer *stimer) {u64 time_now;ktime_t ktime_now; +ktime_t deadline; time_now =get_time_ref_counter (hv_stimer_to_vcpu (stimer)->kvm); ktime_now =ktime_get ();
@@ -657,10 +670,8 @@ static int stimer_start(struct kvm_vcpu_hv_stimer *stimer) stimer->index, time_now, stimer->exp_time); -hrtimer_start (&stimer->timer, -ktime_add_ns (ktime_now, -100 * (stimer->exp_time - time_now)), -HRTIMER_MODE_ABS ); + deadline =stimer_add_delta (ktime_now, stimer->exp_time - time_now); +hrtimer_start (&stimer->timer, deadline,HRTIMER_MODE_ABS );return 0 ; } stimer->exp_time = stimer->count;
@@ -679,9 +690,9 @@ static int stimer_start(struct kvm_vcpu_hv_stimer *stimer) stimer->index, time_now, stimer->count); -hrtimer_start (&stimer->timer, -ktime_add_ns (ktime_now,100 * (stimer->count - time_now)), -HRTIMER_MODE_ABS ); + deadline =stimer_add_delta (ktime_now, stimer->count - time_now); +hrtimer_start (&stimer->timer, deadline,HRTIMER_MODE_ABS ); +return 0 ; }
arch/x86/kvm/mmu/mmu.c +63 -44
171 lines not on this page · raw message
arch/x86/kvm/mmu/tdp_iter.h +7 -0
@@ -19,6 +19,13 @@ static inline u64 kvm_tdp_mmu_read_spte(tdp_ptep_t sptep)return READ_ONCE (*rcu_dereference (sptep)); } +/* +* WARNING! mmu_lock must be held for write when using the "write atomic" or +* "clear bits atomic" APIs, otherwise KVM could overwrite the "wrong" old SPTE +* value, i.e. clobber an update from a different CPU. The only exception is +* when KVM is freezing a leaf SPTE for removal, in which case KVM doesn't care +* about the exact old SPTE value (KVM will react to the actual old value). +*/ static inline u64 kvm_tdp_mmu_write_spte_atomic (tdp_ptep_t sptep,u64 new_spte) {KVM_MMU_WARN_ON (is_ept_ve_possible (new_spte));
arch/x86/kvm/mmu/tdp_mmu.c +9 -11
@@ -1334,19 +1334,17 @@ static void kvm_tdp_mmu_age_spte(struct kvm *kvm, struct tdp_iter *iter)if (WARN_ON_ONCE (is_mirror_sptep (iter->sptep)))return ; -if (spte_ad_enabled (iter->old_spte)) { - iter->old_spte =tdp_mmu_clear_spte_bits_atomic (iter->sptep, - shadow_accessed_mask); +if (spte_ad_enabled (iter->old_spte)) new_spte = iter->old_spte & ~shadow_accessed_mask; - }else { +else new_spte =mark_spte_for_access_track (iter->old_spte); -/* -* It is safe for the following cmpxchg to fail. Leave the -* Accessed bit set, as the spte is most likely young anyway. -*/ -if (__tdp_mmu_set_spte_atomic (kvm, iter, new_spte)) -return ; - } + +/* +* Don't bother retrying if another CPU modified the SPTE, the SPTE is +* either being zapped or is likely still in-use, i.e. is still young. +*/ +if (__tdp_mmu_set_spte_atomic (kvm, iter, new_spte)) +return ;trace_kvm_tdp_mmu_spte_changed (iter->as_id, iter->gfn, iter->level, iter->old_spte, new_spte);
arch/x86/kvm/svm/sev.c +69 -11
128 lines not on this page · raw message
arch/x86/kvm/svm/svm.c +2 -4
@@ -5463,12 +5463,14 @@ struct kvm_x86_ops svm_x86_ops __initdata = { .mem_enc_register_region = sev_mem_enc_register_region, .mem_enc_unregister_region = sev_mem_enc_unregister_region, .guest_memory_reclaimed = sev_guest_memory_reclaimed, + .reload_vmsa = sev_snp_reload_vmsa, .vm_copy_enc_context_from = sev_vm_copy_enc_context_from, .vm_move_enc_context_from = sev_vm_move_enc_context_from, .gmem_prepare = sev_gmem_prepare, .gmem_invalidate = sev_gmem_invalidate, + .gmem_invalidate_range = sev_gmem_invalidate_range, .gmem_max_mapping_level = sev_gmem_max_mapping_level, #endif .check_emulate_instruction = svm_check_emulate_instruction,
@@ -5656,10 +5658,6 @@ static __init int svm_hardware_setup(void)if (nested) {pr_info ("Nested Virtualization enabled\n" ); -kvm_enable_efer_bits (EFER_SVME ); -if (!boot_cpu_has (X86_FEATURE_EFER_LMSLE_MBZ )) -kvm_enable_efer_bits (EFER_LMSLE ); - r =nested_svm_init_msrpm_merge_offsets ();if (r)return r;
arch/x86/kvm/svm/svm.h +2 -0
@@ -997,6 +997,7 @@ static inline struct page *snp_safe_alloc_page(void) {return snp_safe_alloc_page_node (numa_node_id (),GFP_KERNEL_ACCOUNT ); } +void sev_snp_reload_vmsa (struct kvm_vcpu *vcpu);int sev_vcpu_create (struct kvm_vcpu *vcpu);void sev_free_vcpu (struct kvm_vcpu *vcpu);
@@ -1011,6 +1012,7 @@ extern unsigned int max_sev_asid;void sev_handle_rmp_fault (struct kvm_vcpu *vcpu,gpa_t gpa,u64 error_code);int sev_gmem_prepare (struct kvm *kvm,kvm_pfn_t pfn,gfn_t gfn,int max_order);void sev_gmem_invalidate (kvm_pfn_t start,kvm_pfn_t end); +void sev_gmem_invalidate_range (struct kvm *kvm,struct kvm_gfn_range *range);int sev_gmem_max_mapping_level (struct kvm *kvm,kvm_pfn_t pfn,bool is_private);struct vmcb_save_area *sev_decrypt_vmsa (struct kvm_vcpu *vcpu);void sev_free_decrypted_vmsa (struct kvm_vcpu *vcpu,struct vmcb_save_area *vmsa);
arch/x86/kvm/vmx/nested.c +43 -32
127 lines not on this page · raw message
arch/x86/kvm/x86.c +16 -1
@@ -6736,7 +6736,10 @@ int kvm_vm_ioctl_enable_cap(struct kvm *kvm,break ; fallthrough;case KVM_CAP_DISABLE_QUIRKS : - kvm->arch.disabled_quirks |= cap->args[0 ] & kvm_caps.supported_quirks; +mutex_lock (&kvm->lock); +WRITE_ONCE (kvm->arch.disabled_quirks, + kvm->arch.disabled_quirks | (cap->args[0 ] & kvm_caps.supported_quirks)); +mutex_unlock (&kvm->lock); r =0 ;break ;case KVM_CAP_SPLIT_IRQCHIP : {
@@ -10012,6 +10015,12 @@ static void kvm_setup_efer_caps(void)if (kvm_cpu_cap_has (X86_FEATURE_AUTOIBRS ))kvm_enable_efer_bits (EFER_AUTOIBRS ); + +if (kvm_cpu_cap_has (X86_FEATURE_SVM )) { +kvm_enable_efer_bits (EFER_SVME ); +if (!boot_cpu_has (X86_FEATURE_EFER_LMSLE_MBZ )) +kvm_enable_efer_bits (EFER_LMSLE ); + } }static inline void kvm_ops_update (struct kvm_x86_init_ops *ops)
@@ -11278,6 +11287,8 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu) goto out; } } +if (kvm_check_request (KVM_REQ_VMSA_PAGE_RELOAD , vcpu)) +kvm_x86_call (reload_vmsa)(vcpu); } if (kvm_check_request(KVM_REQ_EVENT, vcpu) || req_int_win ||
@@ -14142,6 +14153,10 @@ void kvm_arch_gmem_invalidate(kvm_pfn_t start, kvm_pfn_t end) {kvm_x86_call (gmem_invalidate)(start, end); } +void kvm_arch_gmem_invalidate_range (struct kvm *kvm,struct kvm_gfn_range *range) +{ +kvm_x86_call (gmem_invalidate_range)(kvm, range); +}#endif #endif
arch/x86/kvm/x86.h +1 -1
@@ -367,7 +367,7 @@ static inline bool vcpu_match_mmio_gpa(struct kvm_vcpu *vcpu, gpa_t gpa)static inline bool kvm_check_has_quirk (struct kvm *kvm,u64 quirk) { -return !(kvm->arch.disabled_quirks & quirk); +return !(READ_ONCE (kvm->arch.disabled_quirks) & quirk); } static __always_inline void kvm_request_l1tf_flush_l1d(void)
block/genhd.c +7 -0
@@ -447,6 +447,13 @@ static int __add_disk(struct device *parent, struct gendisk *disk,bdev_set_flag (disk->part0,BD_HAS_SUBMIT_BIO ); } +/* +* We do not support partitions with zoned block devices, so do not try +* to scan the partitions table. +*/ +if (blk_queue_is_zoned (disk->queue)) + disk->flags |=GENHD_FL_NO_PART ; +/* * If the driver provides an explicit major number it also must provide * the number of minors numbers supported, and those will be used to
drivers/accel/amdxdna/amdxdna_gem.c +3 -0
@@ -1247,6 +1247,9 @@ static int amdxdna_flush_bo(struct amdxdna_gem_obj *abo, u64 offset, u64 size)return -EINVAL ; size =min (abo->mem.size, end) - offset; +if (!size) +return 0 ; +if (is_import_bo (abo))drm_clflush_sg (abo->base.sgt);else if (amdxdna_gem_vmap (abo))
drivers/accel/ethosu/ethosu_drv.c +2 -0
@@ -342,6 +342,8 @@ static int ethosu_probe(struct platform_device *pdev)dma_set_mask_and_coherent (&pdev->dev,DMA_BIT_MASK (40 )); ethosudev->regs =devm_platform_ioremap_resource (pdev,0 ); +if (IS_ERR (ethosudev->regs)) +return PTR_ERR (ethosudev->regs); ethosudev->num_clks =devm_clk_bulk_get_all (&pdev->dev, ðosudev->clks);if (ethosudev->num_clks <0 )
drivers/accel/ethosu/ethosu_job.c +8 -2
@@ -152,6 +152,13 @@ static void ethosu_job_err_cleanup(struct ethosu_job *job)drm_gem_object_put (job->cmd_bo); +if (job->done_fence) { +if (dma_fence_was_initialized (job->done_fence)) +dma_fence_put (job->done_fence); +else +dma_fence_free (job->done_fence); + } +kfree (job); }
@@ -162,7 +169,6 @@ static void ethosu_job_cleanup(struct kref *ref)pm_runtime_put_autosuspend (job->dev->base.dev); -dma_fence_put (job->done_fence);dma_fence_put (job->inference_done_fence);ethosu_job_err_cleanup (job);
@@ -393,7 +399,7 @@ static int ethosu_ioctl_submit_job(struct drm_device *dev, struct drm_file *file ejob->done_fence =kzalloc_obj (*ejob->done_fence);if (!ejob->done_fence) { ret = -ENOMEM ; - goto out_cleanup_job; + goto out_put_job; } ret = drm_sched_job_init(&ejob->base,
drivers/acpi/battery.c +107 -48
304 lines not on this page · raw message
drivers/ata/ahci.c +49 -0
61 lines not on this page · raw message
drivers/block/ublk_drv.c +6 -0
@@ -2651,6 +2651,12 @@ static int ublk_ch_mmap(struct file *filp, struct vm_area_struct *vma)if (vma->vm_flags &VM_WRITE )return -EPERM ; +/* +* The per-queue command buffer is kernel-written ABI; prevent +* the daemon from upgrading to writable via mprotect(). +*/ +vm_flags_clear (vma,VM_MAYWRITE ); + end =UBLKSRV_CMD_BUF_OFFSET + ub->dev_info.nr_hw_queues * max_sz;if (phys_off <UBLKSRV_CMD_BUF_OFFSET || phys_off >= end)return -EINVAL ;
drivers/block/zram/zram_drv.c +12 -15
@@ -57,14 +57,12 @@ static size_t huge_class_size;static const struct block_device_operations zram_devops;static void slot_free (struct zram *zram,u32 index); -#define slot_dep_map (zram, index) (&(zram)->table[(index)].dep_map) -static void slot_lock_init (struct zram *zram,u32 index) +static void slot_lock_init (struct zram *zram) {static struct lock_class_key __key; -lockdep_init_map (slot_dep_map (zram, index),"zram->table[index].lock" , - &__key,0 ); +lockdep_init_map (&zram->table_lock_map,"zram->table[index].lock" , &__key,0 ); }/*
@@ -83,9 +81,9 @@ static __must_check bool slot_trylock(struct zram *zram, u32 index) {unsigned long *lock = &zram->table[index].__lock; -if (!test_and_set_bit_lock (ZRAM_ENTRY_LOCK , lock)) { -mutex_acquire (slot_dep_map (zram, index),0 ,1 , _RET_IP_); -lock_acquired (slot_dep_map (zram, index), _RET_IP_); +if (!test_and_set_bit_lock (ZRAM_ENTRY_LOCK_BIT , lock)) { +mutex_acquire (&zram->table_lock_map,0 ,1 , _RET_IP_); +lock_acquired (&zram->table_lock_map, _RET_IP_);return true; }
@@ -96,17 +94,17 @@ static void slot_lock(struct zram *zram, u32 index) {unsigned long *lock = &zram->table[index].__lock; -mutex_acquire (slot_dep_map (zram, index),0 ,0 , _RET_IP_); -wait_on_bit_lock (lock,ZRAM_ENTRY_LOCK ,TASK_UNINTERRUPTIBLE ); -lock_acquired (slot_dep_map (zram, index), _RET_IP_); +mutex_acquire (&zram->table_lock_map,0 ,0 , _RET_IP_); +wait_on_bit_lock (lock,ZRAM_ENTRY_LOCK_BIT ,TASK_UNINTERRUPTIBLE ); +lock_acquired (&zram->table_lock_map, _RET_IP_); }static void slot_unlock (struct zram *zram,u32 index) {unsigned long *lock = &zram->table[index].__lock; -mutex_release (slot_dep_map (zram, index), _RET_IP_); -clear_and_wake_up_bit (ZRAM_ENTRY_LOCK , lock); +mutex_release (&zram->table_lock_map, _RET_IP_); +clear_and_wake_up_bit (ZRAM_ENTRY_LOCK_BIT , lock); }static inline bool init_done (struct zram *zram)
@@ -1989,7 +1987,7 @@ static void zram_meta_free(struct zram *zram, u64 disksize)static bool zram_meta_alloc (struct zram *zram,u64 disksize) { -size_t num_pages, index; +size_t num_pages; num_pages = disksize >>PAGE_SHIFT ; zram->table =vzalloc (array_size (num_pages,sizeof (*zram->table)));
@@ -2006,8 +2004,7 @@ static bool zram_meta_alloc(struct zram *zram, u64 disksize)if (!huge_class_size) huge_class_size =zs_huge_class_size (zram->mem_pool); -for (index =0 ; index < num_pages; index++) -slot_lock_init (zram, index); +slot_lock_init (zram);return true; }
drivers/block/zram/zram_drv.h +15 -1
@@ -15,6 +15,7 @@#ifndef _ZRAM_DRV_H_#define _ZRAM_DRV_H_ +#include <asm/byteorder.h> #include <linux/rwsem.h> #include <linux/zsmalloc.h>
@@ -57,6 +58,19 @@ enum zram_pageflags { __NR_ZRAM_PAGEFLAGS, }; +/* +* The slot lock is a bit-wait lock on the whole __lock word, while +* flags and ac_time alias that word as two u32s. The lock bit must +* land in the slot that ZRAM_ENTRY_LOCK reserves in attr.flags; on +* 64-bit big-endian the flags word maps to the upper half of __lock, +* so the bit position has to be shifted up. +*/ +#if defined(CONFIG_64BIT ) && defined(__BIG_ENDIAN) +#define ZRAM_ENTRY_LOCK_BIT (ZRAM_ENTRY_LOCK + 32) +#else +#define ZRAM_ENTRY_LOCK_BIT ZRAM_ENTRY_LOCK +#endif +/* * Allocated for each disk page. We use bit-lock (ZRAM_ENTRY_LOCK bit * of flags) to save memory. There can be plenty of entries and standard
@@ -74,7 +88,6 @@ struct zram_table_entry {#endif } attr; }; -struct lockdep_map dep_map; };struct zram_stats {
@@ -107,6 +120,7 @@ struct zram_stats {struct zram {struct zram_table_entry *table; +struct lockdep_map table_lock_map;struct zs_pool *mem_pool;struct zcomp *comps[ZRAM_MAX_COMPS ];struct zcomp_params params[ZRAM_MAX_COMPS ];
drivers/clk/mediatek/Kconfig +1 -0
@@ -1006,6 +1006,7 @@ config COMMON_CLK_MT8196 tristate "Clock driver for MediaTek MT8196" depends on ARM64 || COMPILE_TEST select COMMON_CLK_MEDIATEK + select REGMAP_MMIO default ARCH_MEDIATEK help This driver supports MediaTek MT8196 basic clocks.
drivers/clk/meson/gxbb.c +1 -1
@@ -1393,7 +1393,7 @@ static struct clk_regmap gxbb_32k_clk_sel = { .name = "32k_clk_sel", .ops = &clk_regmap_mux_ops, .parent_data = gxbb_32k_clk_parents, - .num_parents = 4, + .num_parents = ARRAY_SIZE(gxbb_32k_clk_parents), .flags = CLK_SET_RATE_PARENT, }, };
drivers/clk/microchip/clk-mpfs.c +1 -1
@@ -285,7 +285,7 @@ static int mpfs_cfg_clk_set_rate(struct clk_hw *hw, unsigned long rate, unsigned mask =clk_div_mask (cfg->width) << cfg->shift; val = divider_setting << cfg->shift; -regmap_update_bits (cfg->map, cfg->map_offset, val, mask); +regmap_update_bits (cfg->map, cfg->map_offset, mask, val);return 0 ; }
drivers/clk/qcom/gcc-mdm9607.c +6 -176
120 lines not on this page · raw message
drivers/clk/xilinx/clk-xlnx-clock-wizard.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/cpuidle/cpuidle-psci.c +16 -26
42 lines not on this page · raw message
drivers/dma-buf/dma-heap.c +40 -40
80 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_dev_coredump.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +51 -8
59 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +22 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/amdkfd/kfd_migrate.c +37 -19
56 lines not on this page · raw message
drivers/gpu/drm/amd/amdkfd/kfd_process_queue_manager.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_color.c +13 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_shared_types.h +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/dml2_0/dml2_translation_helper.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/link/link_factory.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_dpia_bw.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/drm_pagemap.c +103 -25
128 lines not on this page · raw message
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_de.c +16 -36
52 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_cursor.c +10 -5
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/i915/display/skl_universal_plane.c +10 -5
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/include/nvkm/engine/disp.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nouveau_dmem.c +16 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nouveau_sgdma.c +1 -3
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/device/base.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/Kbuild +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/ga102.c +12 -1
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/gb202.c new file +191 -0
191 lines not on this page · raw message
drivers/gpu/drm/nouveau/nvkm/engine/disp/gv100.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/head.h +4 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/priv.h +17 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/engine/disp/tu102.c +85 -1
86 lines not on this page · raw message
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/disp.c +52 -77
129 lines not on this page · raw message
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/disp.c +64 -0
64 lines not on this page · raw message
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/gsp.c +9 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r570/nvrm/disp.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/rm.h +5 -0
Lines of this file are not shown. View the raw message.
drivers/gpu/drm/sysfb/simpledrm.c +58 -16
74 lines not on this page · raw message
drivers/hid/hid-rmi.c +43 -3
46 lines not on this page · raw message
drivers/hid/hid-sony.c +39 -48
87 lines not on this page · raw message
drivers/i2c/busses/i2c-designware-platdrv.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/iio/adc/ti-ads7138.c +33 -9
42 lines not on this page · raw message
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_fusion.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/iio/temperature/hid-sensor-temperature.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/cec/platform/meson/ao-cec-g12a.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/cec/usb/extron-da-hd-4k-plus/extron-da-hd-4k-plus.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/dvb-frontends/rtl2832_sdr.c +16 -5
Lines of this file are not shown. View the raw message.
drivers/media/pci/cobalt/cobalt-alsa-main.c +0 -1
Lines of this file are not shown. View the raw message.
drivers/media/pci/intel/ipu6/ipu6-isys.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/pci/saa7164/saa7164-core.c +5 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/arm/mali-c55/mali-c55-core.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/arm/mali-c55/mali-c55-params.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/arm/mali-c55/mali-c55-registers.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/arm/mali-c55/mali-c55-resizer.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/broadcom/bcm2835-unicam.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +52 -12
64 lines not on this page · raw message
drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c +4 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/chips-media/wave5/wave5-vpuconfig.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/nxp/imx8-isi/imx8-isi-crossbar.c +3 -3
Lines of this file are not shown. View the raw message.
drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/iris/iris_ctrls.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/iris/iris_hfi_gen1.c +4 -12
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/iris/iris_platform_common.h +0 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/iris/iris_state.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/iris/iris_vidc.c +9 -2
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/iris/iris_vpu_common.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/hfi_parser.c +4 -5
Lines of this file are not shown. View the raw message.
drivers/media/platform/renesas/rzg2l-cru/rzg2l-video.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/rockchip/rga/rga3-hw.c +8 -4
Lines of this file are not shown. View the raw message.
drivers/media/platform/rockchip/rkvdec/rkvdec-hevc-common.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/media/platform/rockchip/rkvdec/rkvdec.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/media/test-drivers/vimc/vimc-capture.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/media/usb/cx231xx/cx231xx-video.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/media/usb/em28xx/em28xx-cards.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/media/v4l2-core/v4l2-ctrls-core.c +50 -18
68 lines not on this page · raw message
drivers/mtd/nand/raw/pl35x-nand-controller.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/mtd/nand/raw/sunxi_nand.c +86 -33
119 lines not on this page · raw message
drivers/pci/slot.c +34 -16
50 lines not on this page · raw message
drivers/s390/crypto/vfio_ap_ops.c +142 -61
203 lines not on this page · raw message
drivers/scsi/megaraid/megaraid_sas_base.c +12 -1
Lines of this file are not shown. View the raw message.
drivers/scsi/qla2xxx/qla_bsg.c +32 -14
46 lines not on this page · raw message
drivers/scsi/qla2xxx/qla_init.c +56 -5
61 lines not on this page · raw message
drivers/scsi/scsi_bsg.c +29 -18
47 lines not on this page · raw message
drivers/staging/media/meson/vdec/vdec.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/staging/media/sunxi/cedrus/cedrus.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_ieee80211.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/target/iscsi/iscsi_target_login.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/usb/cdns3/cdnsp-gadget.c +106 -5
111 lines not on this page · raw message
drivers/usb/cdns3/cdnsp-mem.c +35 -63
98 lines not on this page · raw message
drivers/usb/gadget/function/f_mass_storage.c +4 -1
Lines of this file are not shown. View the raw message.
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_pdphy.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/usb/typec/tcpm/qcom/qcom_pmic_typec_port.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/watchdog/pseries-wdt.c +1 -52
53 lines not on this page · raw message
fs/ceph/crypto.c +39 -11
50 lines not on this page · raw message
fs/f2fs/file.c +130 -40
170 lines not on this page · raw message
fs/f2fs/recovery.c +27 -14
41 lines not on this page · raw message
fs/nfsd/nfs4state.c +86 -32
118 lines not on this page · raw message
fs/smb/server/oplock.c +59 -20
79 lines not on this page · raw message
kernel/bpf/stackmap.c +117 -56
173 lines not on this page · raw message
kernel/trace/ftrace.c +48 -22
70 lines not on this page · raw message
kernel/trace/trace.c +63 -4
67 lines not on this page · raw message
mm/memcontrol-v1.c +26 -17
43 lines not on this page · raw message
mm/memcontrol.c +96 -17
113 lines not on this page · raw message
mm/secretmem.c +107 -9
116 lines not on this page · raw message
net/batman-adv/bridge_loop_avoidance.c +1 -14
Lines of this file are not shown. View the raw message.
sound/soc/codecs/cx2072x.c +61 -61
122 lines not on this page · raw message
sound/soc/codecs/tas2783-sdw.c +85 -86
171 lines not on this page · raw message
tools/perf/util/bpf_skel/augmented_raw_syscalls.bpf.c +98 -57
155 lines not on this page · raw message
tools/perf/util/hisi-ptt-decoder/hisi-ptt-pkt-decoder.c +24 -23
47 lines not on this page · raw message
tools/perf/util/hisi-ptt-decoder/hisi-ptt-pkt-decoder.h +12 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/memfd_secret.c +1 -29
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.