Skip to contentSkip to conversation

Linux 7.0.9

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages May 17 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

I'm announcing the release of the 7.0.9 kernel.

All users of the 7.0 kernel series must upgrade.

The updated 7.0.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-7.0.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/devicetree/bindings/media/rockchip,vdec.yaml                                 |   22 
 Makefile                                                                                   |    2 
 arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts                                         |   14 
 arch/arm64/boot/dts/freescale/fsl-lx2160a-cex7.dtsi                                        |    7 
 arch/arm64/boot/dts/freescale/fsl-lx2160a-clearfog-itx.dtsi                                |    2 
 arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi                                             |   24 
 arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts                                     |    2 
 arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi                                      |    7 
 arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi                                     |    1 
 arch/arm64/boot/dts/qcom/kodiak.dtsi                                                       |    2 
 arch/arm64/boot/dts/qcom/lemans.dtsi                                                       |    8 
 arch/arm64/boot/dts/ti/k3-am62a7-sk.dts                                                    |    2 
 arch/arm64/boot/dts/ti/k3-am69-aquila-clover.dts                                           |    2 
 arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts                                              |    2 
 drivers/edac/versalnet_edac.c                                                              |  170 +++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c                                           |    3 
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c                                                 |    6 
 drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c                                                   |   13 
 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h                                                   |   11 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c                                                    |    3 
 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c                                                 |   12 
 drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c                                                     |   31 +
 drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c                                                      |    3 
 drivers/gpu/drm/amd/amdgpu/mes_userqueue.c                                                 |   95 +--
 drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.c                                                   |    9 
 drivers/gpu/drm/amd/amdgpu/psp_v15_0.c                                                     |    1 
 drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c                                                     |    4 
 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c                                                      |   25 
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c                                                      |   46 +
 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c                                                   |   33 +
 drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c                                      |    6 
 drivers/gpu/drm/amd/amdkfd/kfd_priv.h                                                      |   10 
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c                                                       |    4 
 drivers/gpu/drm/amd/amdkfd/kfd_topology.c                                                  |   11 
 drivers/gpu/drm/amd/display/dc/core/dc_resource.c                                          |    2 
 drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/lib_float_math.c |    2 
 drivers/gpu/drm/amd/pm/powerplay/smumgr/ci_smumgr.c                                        |   13 
 drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c                                       |   10 
 drivers/gpu/drm/bridge/tda998x_drv.c                                                       |    2 
 drivers/gpu/drm/drm_atomic.c                                                               |    7 
 drivers/gpu/drm/drm_colorop.c                                                              |   28 -
 drivers/gpu/drm/drm_gem.c                                                                  |   25 
 drivers/gpu/drm/drm_gem_framebuffer_helper.c                                               |    4 
 drivers/gpu/drm/drm_gpusvm.c                                                               |    3 
 drivers/gpu/drm/exynos/exynos_drm_mic.c                                                    |    8 
 drivers/gpu/drm/i915/display/intel_psr.c                                                   |    2 
 drivers/gpu/drm/imx/ipuv3/parallel-display.c                                               |   15 
 drivers/gpu/drm/msm/hdmi/hdmi_bridge.c                                                     |    4 
 drivers/gpu/drm/msm/msm_drv.c                                                              |    7 
 drivers/gpu/drm/msm/msm_gpu.c                                                              |   42 -
 drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c                                             |    2 
 drivers/gpu/drm/panel/panel-himax-hx83102.c                                                |    2 
 drivers/gpu/drm/radeon/ci_dpm.c                                                            |    9 
 drivers/gpu/drm/sti/sti_hda.c                                                              |    8 
 drivers/gpu/drm/tiny/appletbdrm.c                                                          |    4 
 drivers/gpu/drm/udl/udl_main.c                                                             |    3 
 drivers/gpu/drm/udl/udl_modeset.c                                                          |    5 
 drivers/gpu/drm/v3d/v3d_submit.c                                                           |    5 
 drivers/gpu/drm/xe/display/xe_hdcp_gsc.c                                                   |   12 
 drivers/gpu/drm/xe/xe_bo.c                                                                 |    8 
 drivers/gpu/drm/xe/xe_dma_buf.c                                                            |   23 
 drivers/gpu/drm/xe/xe_vm_madvise.c                                                         |   47 +
 drivers/hid/hid-appletb-kbd.c                                                              |   56 +-
 drivers/hid/hid-playstation.c                                                              |    6 
 drivers/hid/usbhid/hid-pidff.c                                                             |    7 
 drivers/media/common/videobuf2/videobuf2-dma-sg.c                                          |    1 
 drivers/media/dvb-frontends/dib8000.c                                                      |    4 
 drivers/media/i2c/imx283.c                                                                 |   15 
 drivers/media/i2c/imx412.c                                                                 |    2 
 drivers/media/i2c/ov08d10.c                                                                |   21 
 drivers/media/i2c/ov5647.c                                                                 |   12 
 drivers/media/i2c/ov8856.c                                                                 |   10 
 drivers/media/pci/intel/ipu-bridge.c                                                       |   14 
 drivers/media/pci/intel/ipu6/ipu6.c                                                        |    2 
 drivers/media/pci/saa7164/saa7164-core.c                                                   |   47 +
 drivers/media/pci/zoran/zoran_card.c                                                       |    2 
 drivers/media/platform/arm/mali-c55/mali-c55-common.h                                      |    2 
 drivers/media/platform/arm/mali-c55/mali-c55-core.c                                        |   35 -
 drivers/media/platform/arm/mali-c55/mali-c55-isp.c                                         |   37 -
 drivers/media/platform/arm/mali-c55/mali-c55-params.c                                      |  122 ++++
 drivers/media/platform/arm/mali-c55/mali-c55-registers.h                                   |    4 
 drivers/media/platform/chips-media/wave5/wave5-vdi.c                                       |    1 
 drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c                                   |   14 
 drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c                                       |    2 
 drivers/media/platform/qcom/camss/camss-csid-gen3.c                                        |    6 
 drivers/media/platform/qcom/camss/camss.c                                                  |   80 +--
 drivers/media/platform/qcom/iris/Kconfig                                                   |    2 
 drivers/media/platform/qcom/iris/iris_buffer.c                                             |    6 
 drivers/media/platform/qcom/iris/iris_core.c                                               |    4 
 drivers/media/platform/qcom/iris/iris_hfi_common.c                                         |    4 
 drivers/media/platform/qcom/iris/iris_hfi_queue.c                                          |    2 
 drivers/media/platform/qcom/iris/iris_vdec.c                                               |    6 
 drivers/media/platform/qcom/iris/iris_vdec.h                                               |    1 
 drivers/media/platform/qcom/iris/iris_venc.c                                               |    6 
 drivers/media/platform/qcom/iris/iris_venc.h                                               |    1 
 drivers/media/platform/qcom/iris/iris_vidc.c                                               |    6 
 drivers/media/platform/qcom/iris/iris_vpu2.c                                               |    1 
 drivers/media/platform/qcom/iris/iris_vpu3x.c                                              |    9 
 drivers/media/platform/qcom/iris/iris_vpu4x.c                                              |   24 
 drivers/media/platform/qcom/iris/iris_vpu_buffer.h                                         |    2 
 drivers/media/platform/qcom/iris/iris_vpu_common.c                                         |   16 
 drivers/media/platform/qcom/iris/iris_vpu_common.h                                         |    3 
 drivers/media/platform/qcom/venus/Kconfig                                                  |    2 
 drivers/media/platform/renesas/rcar-vin/rcar-dma.c                                         |   22 
 drivers/media/platform/renesas/rcar-vin/rcar-v4l2.c                                        |   12 
 drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c                                 |   35 -
 drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h                                       |    8 
 drivers/media/platform/renesas/vsp1/vsp1_drv.c                                             |    8 
 drivers/media/platform/rockchip/rkcif/rkcif-interface.c                                    |    3 
 drivers/media/platform/rockchip/rkcif/rkcif-stream.c                                       |    2 
 drivers/media/platform/ti/omap3isp/ispvideo.c                                              |    1 
 drivers/media/platform/ti/vpe/vip.c                                                        |    1 
 drivers/media/rc/streamzap.c                                                               |   12 
 drivers/media/rc/xbox_remote.c                                                             |    9 
 drivers/media/usb/uvc/uvc_queue.c                                                          |    3 
 drivers/platform/x86/hp/hp-wmi.c                                                           |    5 
 drivers/regulator/act8945a-regulator.c                                                     |    3 
 drivers/regulator/bd9571mwv-regulator.c                                                    |    3 
 drivers/regulator/bq257xx-regulator.c                                                      |    3 
 drivers/regulator/max77650-regulator.c                                                     |    2 
 drivers/regulator/mt6357-regulator.c                                                       |    2 
 drivers/regulator/rk808-regulator.c                                                        |    3 
 drivers/regulator/s2dos05-regulator.c                                                      |    2 
 drivers/spi/spi-amlogic-spisg.c                                                            |    4 
 drivers/spi/spi-aspeed-smc.c                                                               |    9 
 drivers/spi/spi-at91-usart.c                                                               |    8 
 drivers/spi/spi-atmel.c                                                                    |    8 
 drivers/spi/spi-bcm63xx.c                                                                  |    8 
 drivers/spi/spi-bcmbca-hsspi.c                                                             |    4 
 drivers/spi/spi-cadence-quadspi.c                                                          |   40 -
 drivers/spi/spi-cadence.c                                                                  |   21 
 drivers/spi/spi-cavium-octeon.c                                                            |    8 
 drivers/spi/spi-cavium-thunderx.c                                                          |    8 
 drivers/spi/spi-ch341.c                                                                    |    7 
 drivers/spi/spi-coldfire-qspi.c                                                            |   10 
 drivers/spi/spi-dln2.c                                                                     |    8 
 drivers/spi/spi-ep93xx.c                                                                   |    8 
 drivers/spi/spi-fsl-espi.c                                                                 |   10 
 drivers/spi/spi-fsl-spi.c                                                                  |   14 
 drivers/spi/spi-img-spfi.c                                                                 |    8 
 drivers/spi/spi-imx.c                                                                      |    1 
 drivers/spi/spi-lantiq-ssc.c                                                               |    8 
 drivers/spi/spi-meson-spicc.c                                                              |    8 
 drivers/spi/spi-mpc52xx.c                                                                  |    9 
 drivers/spi/spi-mpfs.c                                                                     |    4 
 drivers/spi/spi-mt65xx.c                                                                   |    4 
 drivers/spi/spi-mtk-nor.c                                                                  |    4 
 drivers/spi/spi-mxic.c                                                                     |    3 
 drivers/spi/spi-mxs.c                                                                      |    8 
 drivers/spi/spi-npcm-pspi.c                                                                |    8 
 drivers/spi/spi-omap2-mcspi.c                                                              |    8 
 drivers/spi/spi-orion.c                                                                    |   16 
 drivers/spi/spi-pic32-sqi.c                                                                |    8 
 drivers/spi/spi-pic32.c                                                                    |   11 
 drivers/spi/spi-pl022.c                                                                    |    8 
 drivers/spi/spi-qup.c                                                                      |    8 
 drivers/spi/spi-rspi.c                                                                     |   10 
 drivers/spi/spi-s3c64xx.c                                                                  |    4 
 drivers/spi/spi-sh-hspi.c                                                                  |   10 
 drivers/spi/spi-sh-msiof.c                                                                 |   10 
 drivers/spi/spi-slave-mt27xx.c                                                             |   10 
 drivers/spi/spi-sprd.c                                                                     |    8 
 drivers/spi/spi-st-ssc4.c                                                                  |    8 
 drivers/spi/spi-uniphier.c                                                                 |   24 
 drivers/staging/media/atomisp/pci/atomisp_ioctl.c                                          |    4 
 drivers/staging/media/imx/imx-media-csi.c                                                  |   40 -
 drivers/usb/typec/tcpm/tcpm.c                                                              |    2 
 include/linux/cgroup-defs.h                                                                |    4 
 include/linux/mm.h                                                                         |    2 
 io_uring/zcrx.c                                                                            |   17 
 kernel/cgroup/cgroup.c                                                                     |  254 ++++------
 kernel/liveupdate/kexec_handover.c                                                         |   13 
 kernel/sched/ext.c                                                                         |   12 
 mm/util.c                                                                                  |   51 +-
 mm/vma.c                                                                                   |    3 
 net/batman-adv/bat_iv_ogm.c                                                                |   85 ++-
 net/batman-adv/bridge_loop_avoidance.c                                                     |   11 
 net/batman-adv/main.c                                                                      |    1 
 net/batman-adv/tp_meter.c                                                                  |  116 +++-
 net/batman-adv/tp_meter.h                                                                  |    1 
 net/batman-adv/types.h                                                                     |    4 
 net/sctp/socket.c                                                                          |    9 
 net/vmw_vsock/af_vsock.c                                                                   |    6 
 net/vmw_vsock/virtio_transport_common.c                                                    |   55 --
 tools/perf/pmu-events/Build                                                                |    4 
 tools/testing/vma/include/dup.h                                                            |   41 -
 tools/testing/vma/include/stubs.h                                                          |    3 
 187 files changed, 1815 insertions(+), 937 deletions(-)

Abdun Nihaal (1):
media: pci: zoran: fix potential memory leak in zoran_probe()

Alex Deucher (3):
drm/radeon: add missing revision check for CI drm/amdgpu/pm: add missing revision check for CI drm/amdgpu/pm: align Hawaii mclk workaround with radeon

Alexander Koskovich (1):
media: i2c: ov8856: free control handler on error in ov8856_init_controls()

Alysa Liu (2):
drm/amdkfd: Add upper bound check for num_of_nodes drm/amdkfd: validate SVM ioctl nattr against buffer size

Amir Shetaia (1):
drm/amdkfd: Clear VRAM on allocation to prevent stale data exposure

Amit Sunil Dhamne (1):
usb: typec: tcpm: reset internal port states on soft reset AMS

Andrea Righi (1):
sched_ext: Use HK_TYPE_DOMAIN_BOOT to detect isolcpus= domain isolation

Anna Maniscalco (1):
drm/msm: always recover the gpu

Arnd Bergmann (2):
media: iris: fix QCOM_MDT_LOADER dependency
media: venus: fix QCOM_MDT_LOADER dependency

Ashutosh Desai (2):
drm/v3d: Reject empty multisync extension to prevent infinite loop drm/gem: Fix inconsistent plane dimension calculation in drm_gem_fb_init_with_funcs()

Barnabás Pőcze (3):
media: rzv2h-ivc: Write AXIRX_PIXFMT once
media: rzv2h-ivc: Fix FM_STOP register write
media: rzv2h-ivc: Fix concurrent buffer list access

Ben Morris (1):
sctp: revalidate list cursor after sctp_sendmsg_to_asoc() in SCTP_SENDALL

Benjamin Cheng (7):
drm/amdgpu: Add bounds checking to ib_{get,set}_value drm/amdgpu/vcn4: Prevent OOB reads when parsing IB drm/amdgpu/vce: Prevent partial address patches drm/amdgpu/vcn4: Prevent OOB reads when parsing dec msg drm/amdgpu/vcn3: Prevent OOB reads when parsing dec msg drm/amdgpu/vcn3: Avoid overflow on msg bound check drm/amdgpu/vcn4: Avoid overflow on msg bound check

Breno Leitao (1):
kho: fix error handling in kho_add_subtree()

Chaitanya Kumar Borah (2):
drm/colorop: Preserve bypass value in duplicate_state() drm/atomic: Add affected colorops with affected planes

Chenglei Xie (1):
drm/amdgpu: gate VM CPU HDP flush on reset lock

Cristian Ciocaltea (2):

      media: dt-bindings: rockchip,vdec: Add alternative reg-names order for RK35{76,88}
      media: dt-bindings: rockchip,vdec: Mark reg-names required for RK35{76,88}

Dang Huynh (1):
media: rockchip: rkcif: Add missing MUST_CONNECT flag to pads

Daniel Scally (1):
media: mali-c55: Fix Iridix bypass macros

Dikshita Agarwal (1):
media: iris: Fix use-after-free in iris_release_internal_buffers()

Dmitry Baryshkov (1):
media: qcom: iris: increase H265D_MAX_SLICE to fix H.265 decoding on SC7280

Dudu Lu (1):
vsock/virtio: fix accept queue count leak on transport mismatch

Emanuele Ghidoli (1):
arm64: dts: freescale: imx95-toradex-smarc: fix PMIC_SD2_VSEL label position

Ethan Tidmore (1):
media: intel/ipu6: fix error pointer dereference

Felix Gu (1):
media: ti: vpe: Add missing v4l2_device_unregister in vip_remove()

Felix Kuehling (1):
drm/amdkfd: Make all TLB-flushes heavy-weight

Francis, David (1):
drm: Set old handle to NULL before prime swap in change_handle

Franz Schnyder (2):
arm64: dts: ti: k3-am69-aquila-clover: Fix DP regulator enable GPIO
arm64: dts: ti: k3-am69-aquila-dev: Fix DP regulator enable GPIO

Greg Kroah-Hartman (1):

      Linux 7.0.9

Gregor Herburger (2):
arm64: dts: broadcom: bcm2712-d-rpi-5-b: add fixes for pinctrl/pinctrl_aon
arm64: dts: broadcom: bcm2712-d-rpi-5-b: update uart10 interrupt

Guoniu Zhou (1):
media: nxp: imx8-isi: Reduce minimum queued buffers from 2 to 0

Gustavo Sousa (1):
drm/xe/hdcp: Add NULL check for media_gt in intel_hdcp_gsc_check_status()

Hans de Goede (1):
media: ipu-bridge: Add upside-down sensor DMI quirk for Dell XPS 13 9340 and XPS 14 9440

Haoxiang Li (2):
media: chips-media: wave5: fix a potential memory leak in wave5_vdi_init()
media: omap3isp: drop the use count of v4l2 pipeline

Harry Wentland (1):
drm/colorop: Fix blob property reference tracking in state lifecycle

Icenowy Zheng (2):
drm/panel: himax-hx83102: restore MODE_LPM after sending disable cmds drm/panel: boe-tv101wum-nl6: restore MODE_LPM after sending disable cmds

Jacopo Mondi (3):
media: rzv2h-ivc: Avoid double job scheduling
media: mali-c55: Initialize the ISP in enable_streams()
media: mali-c55: Fully reset the ISP configuration

Jai Luthra (2):
media: i2c: imx283: Enter full standby when stopping streaming
media: i2c: imx283: Fix hang when going from large to small resolution

Janne Grunau (1):
media: videobuf2: Set vma_flags in vb2_dma_sg_mmap

Jia Yao (1):
drm/xe/uapi: Reject coh_none PAT index for CPU cached memory in madvise

Jiexun Wang (3):
batman-adv: reject new tp_meter sessions during teardown
batman-adv: stop tp_meter sessions during mesh teardown
batman-adv: stop caching unowned originator pointers in BAT IV

Johan Hovold (58):
spi: bcm63xx: fix controller deregistration
spi: atmel: fix controller deregistration
regulator: mt6357: fix OF node reference imbalance
spi: st-ssc4: fix controller deregistration
regulator: max77650: fix OF node reference imbalance
regulator: bq257xx: fix OF node reference imbalance
regulator: rk808: fix OF node reference imbalance
regulator: act8945a: fix OF node reference imbalance
regulator: s2dos05: fix OF node reference imbalance
regulator: bd9571mwv: fix OF node reference imbalance
spi: lantiq-ssc: fix controller deregistration
spi: meson-spicc: fix controller deregistration
spi: qup: fix controller deregistration
spi: at91-usart: fix controller deregistration
spi: amlogic-spisg: fix controller deregistration
spi: aspeed-smc: fix controller deregistration
spi: mxs: fix controller deregistration
spi: mt65xx: fix controller deregistration
spi: dln2: fix controller deregistration
spi: s3c64xx: fix controller deregistration
spi: fsl-espi: fix controller deregistration
spi: omap2-mcspi: fix controller deregistration
spi: pic32: fix controller deregistration
spi: ep93xx: fix controller deregistration
spi: mtk-nor: fix controller deregistration
spi: pl022: fix controller deregistration
spi: ch341: fix devres lifetime
spi: sh-hspi: fix controller deregistration
spi: fsl: fix controller deregistration
spi: bcmbca-hsspi: fix controller deregistration
spi: coldfire-qspi: fix controller deregistration
spi: npcm-pspi: fix controller deregistration
spi: cavium-thunderx: fix controller deregistration
spi: pic32-sqi: fix controller deregistration
spi: sprd: fix controller deregistration
spi: rspi: fix controller deregistration
spi: sh-msiof: fix controller deregistration
spi: slave-mt27xx: fix controller deregistration
spi: img-spfi: fix controller deregistration
spi: mpfs: fix controller deregistration
spi: octeon: fix controller deregistration
spi: imx: fix runtime pm leak on probe deferral
spi: mxic: fix controller deregistration
spi: orion: fix controller deregistration
spi: orion: fix runtime pm leak on unbind
spi: orion: fix clock imbalance on registration failure
spi: mpc52xx: fix use-after-free on registration failure
spi: mpc52xx: fix controller deregistration
spi: mpc52xx: fix use-after-free on unbind
spi: cadence: fix controller deregistration
spi: cadence-quadspi: fix controller deregistration
spi: cadence: fix unclocked access on unbind
spi: cadence: fix clock imbalance on probe failure
spi: cadence-quadspi: fix runtime pm disable imbalance on probe failure
spi: cadence-quadspi: fix clock imbalance on probe failure
spi: cadence-quadspi: fix runtime pm and clock imbalance on unbind
spi: cadence-quadspi: fix unclocked access on unbind
spi: uniphier: fix controller deregistration

John B. Moore (2):
drm/amdgpu/gfx9: drop unnecessary 64-bit fence flag check in KIQ drm/amdgpu/sdma4: replace BUG_ON with WARN_ON in fence emission

Josua Mayer (1):

      arm64: dts: lx2160a-cex7/lx2162a-sr-som: fix usd-cd & gpio pinmux

Jouni Högander (1):
drm/i915/psr: Init variable to avoid early exit from et alignment loop

Kory Maincent (TI) (1):
drm/bridge: tda998x: Use __be32 for audio port OF property pointer

Krishna Chaitanya Chundru (1):
arm64: dts: qcom: kodiak: Fix PCIe1 PHY ref clock voting

Krishna Chomal (1):
platform/x86: hp-wmi: Ignore backlight and FnLock events

Krzysztof Kozlowski (1):
drm/msm/hdmi: Fix wrong CTRL1 register used in writing info frames

Lorenzo Stoakes (1):
mm/vma: do not try to unmap a VMA if mmap_prepare() invoked from mmap()

Luigi Leonardi (1):
vsock/virtio: fix MSG_PEEK ignoring skb offset when calculating bytes to copy

Lyes Bourennani (1):
batman-adv: fix integer overflow on buff_pos

Marek Vasut (1):
drm/imx: parallel-display: Prefer bus format set via legacy "interface-pix-fmt" DT property

Mario Kleiner (1):
drm/amd/display: Change dither policy for 10 bpc output back to dithering

Mario Limonciello (1):
drm/amd: Add missing firmware declaration for PSP v15.0.0

Markus Mayer (1):
perf build: fix "argument list too long" in second location

Matthew Brost (2):
drm/gpusvm: Allow device pages to be mapped in mixed mappings after system pages drm/gpusvm: Force unmapping on error in drm_gpusvm_get_pages

Matthias Fend (2):
media: i2c: ov08d10: fix image vertical start setting
media: i2c: ov08d10: fix runtime PM handling in probe

Michael Tretter (1):
media: staging: imx: request mbus_config in csi_start

Norbert Szetei (1):
vsock: fix buffer size clamping order

Oliver Neukum (2):
media: rc: xbox_remote: heed DMA restrictions
media: rc: streamzap: Error handling in probe

Osama Abdelkader (2):
drm/exynos: remove bridge when component_add fails drm/sti: remove bridge when sti_hda component_add fails

Pavel Begunkov (2):
io_uring/zcrx: use guards for locking
io_uring/zcrx: warn on freelist violations

Pei Xiao (1):
spi: uniphier: Simplify clock handling with devm_clk_get_enabled()

Petr Malat (1):
cgroup: Increment nr_dying_subsys_* from rmdir context

Philip Yang (1):
drm/amdgpu: zero-initialize GART table on allocation

Prasanna Kumar T S M (1):
EDAC/versalnet: Fix device name memory leak

Ramalingeswara Reddy, Kanala (2):
drm/amdgpu: Use NBIF offset for register RCC_STRAP0_RCC_DEV0_EPF0_STRAP0 . drm/amdgpu: Use SMUIO 15.0.0 offsets for TSC upper and lower count.

Ricardo Ribalda (1):
media: uvcvideo: Enable VB2_DMABUF for metadata stream

Sakari Ailus (1):
staging: media: atomisp: Disallow all private IOCTLs

Sangyun Kim (2):
HID: appletb-kbd: fix UAF in inactivity-timer cleanup path
HID: appletb-kbd: run inactivity autodim from workqueues

Sasha Finkelstein (1):
drm/appletbdrm: Use kvzalloc for big allocations

Sergey Shtylyov (1):

      media: dib8000: avoid division by 0 in dib8000_set_dds()

Shixiong Ou (1):
drm/udl: Increase GET_URB_TIMEOUT

Shubhankar Milind Sardeshpande (1):
drm/amdgpu: Avoid reset in AMDGPU unload path for APUs with GFX V11 and higher.

Shubhrajyoti Datta (1):
EDAC/versalnet: Refactor memory controller initialization and cleanup

Shuicheng Lin (4):
drm/xe: Fix bo leak in xe_dma_buf_init_obj() on allocation failure drm/xe/bo: Fix bo leak on GGTT flag validation in xe_bo_init_locked() drm/xe: Fix dma-buf attachment leak in xe_gem_prime_import() drm/xe/bo: Fix bo leak on unaligned size validation in xe_bo_init_locked()

Siddharth Vadapalli (1):
arm64: dts: ti: k3-am62a7-sk: Fix pin name in comment from M19 to N22

Stefano Garzarella (2):
vsock/virtio: fix length and offset in tap skb for split packets vsock/virtio: fix empty payload in tap skb for non-linear buffers

Sunil Khatri (1):
drm/amdgpu/userq: fix access to stale wptr mapping

Sven Eckelmann (4):
batman-adv: tp_meter: fix tp_num leak on kmalloc failure
batman-adv: bla: prevent use-after-free when deleting claims
batman-adv: bla: only purge non-released claims
batman-adv: bla: put backbone reference on failed claim hash insert

T.J. Mercier (1):
HID: playstation: Clamp num_touch_reports

Tejun Heo (2):
cgroup: Defer css percpu_ref kill on rmdir until cgroup is depopulated
sched_ext: Skip tasks with stale task_rq in bypass_lb_cpu()

Thomas Fourier (1):
media: iris: Fix dma_free_attrs() size in iris_hfi_queues_init()

Tomasz Pakuła (1):
HID: pidff: Fix integer overflow in pidff_rescale

Tomi Valkeinen (2):
media: renesas: vsp1: Fix NULL pointer deref on module unload
media: renesas: vin: Fix RAW8 (again)

Vikash Garodia (1):
media: iris: switch to hardware mode after firmware boot

Viken Dadhaniya (1):
arm64: dts: qcom: lemans: Correct QUP interrupt numbers

Vishnu Reddy (1):
media: iris: fix use-after-free of fmt_src during MBPF check

Wang Jun (1):
media: saa7164: add ioremap return checks and cleanups

Wenjing Liu (1):
drm/amd/display: fix math_mod() using arg1 instead of arg2

Wenmeng Liu (4):
media: i2c: imx412: Assert reset GPIO during probe
media: qcom: camss: Fix csid clock configuration for sa8775p
media: qcom: camss: Fix csid IRQ offset for sa8775p
media: qcom: camss: Add missing clocks for VFE lite on sa8775p

Xiaolei Wang (1):
media: i2c: ov5647: Fix runtime PM refcount leak in s_ctrl

Yang Wang (1):
drm/amd/pm: fix incorrect FeatureCtrlMask setting on smu v14.0.x

Yasuaki Torimaru (1):
drm/msm/gem: fix error handling in msm_ioctl_gem_info_get_metadata()

Ziyi Guo (2):
media: chips-media: wave5: add missing spinlock protection for send_eos_event()
media: chips-media: wave5: add missing spinlock protection for handle_dynamic_resolution_change()

author maintainer
#1 lore raw
Documentation/devicetree/bindings/media/rockchip,vdec.yaml +14 -8
index 809fda45b3bd..42022401d0ff 100644
@@ -28,16 +28,20 @@ properties:
 
   reg:
     minItems: 1
-    items:
-      - description: The function configuration registers base
-      - description: The link table configuration registers base
-      - description: The cache configuration registers base
+    maxItems: 3
 
   reg-names:
-    items:
-      - const: function
-      - const: link
-      - const: cache
+    oneOf:
+      - items:
+          - const: link
+          - const: function
+          - const: cache
+      - items:
+          - const: function
+          - const: link
+          - const: cache
+        deprecated: true
+        description: Use link,function,cache block order instead.
 
   interrupts:
     maxItems: 1
@@ -123,6 +127,8 @@ allOf:
           minItems: 5
         reset-names:
           minItems: 5
+      required:
+        - reg-names
     else:
       properties:
         reg:
Makefile +1 -1
index a0565b83ae40..9da9c1f3b238 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 7
 PATCHLEVEL = 0
-SUBLEVEL = 8
+SUBLEVEL = 9
 EXTRAVERSION =
 NAME = Baby Opossum Posse
 
arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts +14 -0
index 7de24d60bcd1..127be0fc27c2 100644
@@ -35,3 +35,17 @@ &gio_aon {
 		"PMIC_SCL", // AON_SGPIO_04
 		"PMIC_SDA"; // AON_SGPIO_05
 };
+
+&pinctrl {
+	compatible = "brcm,bcm2712d0-pinctrl";
+	reg = <0x7d504100 0x20>;
+};
+
+&pinctrl_aon {
+	compatible = "brcm,bcm2712d0-aon-pinctrl";
+	reg = <0x7d510700 0x1c>;
+};
+
+&uart10 {
+	interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
+};
arch/arm64/boot/dts/freescale/fsl-lx2160a-cex7.dtsi +7 -0
index eec2cd6c6d32..7f6e39e27ce5 100644
@@ -162,6 +162,8 @@ rtc@51 {
 };
 
 &fspi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&fspi_data74_pins>, <&fspi_data30_pins>, <&fspi_dqs_sck_cs10_pins>;
 	status = "okay";
 
 	flash@0 {
@@ -177,6 +179,11 @@ flash@0 {
 	};
 };
 
+&pinmux_i2crv {
+	pinctrl-names = "default";
+	pinctrl-0 = <&gpio0_14_12_pins>;
+};
+
 &usb0 {
 	status = "okay";
 };
arch/arm64/boot/dts/freescale/fsl-lx2160a-clearfog-itx.dtsi +2 -0
index af6258b2fe82..580ee9b3026e 100644
@@ -89,6 +89,8 @@ &emdio2 {
 };
 
 &esdhc0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&esdhc0_cd_wp_pins>, <&esdhc0_cmd_data30_clk_vsel_pins>;
 	sd-uhs-sdr104;
 	sd-uhs-sdr50;
 	sd-uhs-sdr25;
arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi +24 -0
index 853b01452813..af74e77efabc 100644
@@ -1721,6 +1721,10 @@ i2c1_scl_gpio: i2c1-scl-gpio-pins {
 				pinctrl-single,bits = <0x0 0x1 0x7>;
 			};
 
+			esdhc0_cd_wp_pins: iic2-sdhc-pins {
+				pinctrl-single,bits = <0x0 0x6 0x7>;
+			};
+
 			i2c2_scl: i2c2-scl-pins {
 				pinctrl-single,bits = <0x0 0 (0x7 << 3)>;
 			};
@@ -1753,6 +1757,26 @@ i2c5_scl_gpio: i2c5-scl-gpio-pins {
 				pinctrl-single,bits = <0x0 (0x1 << 12) (0x7 << 12)>;
 			};
 
+			fspi_data74_pins: xspi1-data74-pins {
+				pinctrl-single,bits = <0x0 0x0 (0x7 << 15)>;
+			};
+
+			fspi_data30_pins: xspi1-data30-pins {
+				pinctrl-single,bits = <0x0 0x0 (0x7 << 18)>;
+			};
+
+			fspi_dqs_sck_cs10_pins: xspi1-base-pins {
+				pinctrl-single,bits = <0x0 0x0 (0x7 << 21)>;
+			};
+
+			esdhc0_cmd_data30_clk_vsel_pins: sdhc1-base-sdhc-vsel-pins {
+				pinctrl-single,bits = <0x0 0x0 (0x7 << 24)>;
+			};
+
+			gpio0_14_12_pins: sdhc1-dir-gpio-pins {
+				pinctrl-single,bits = <0x0 (0x1 << 27) (0x7 << 27)>;
+			};
+
 			i2c6_scl: i2c6-scl-pins {
 				pinctrl-single,bits = <0x4 0x2 0x7>;
 			};
arch/arm64/boot/dts/freescale/fsl-lx2162a-clearfog.dts +2 -0
index eafef8718a0f..8920326a0673 100644
@@ -223,6 +223,8 @@ ethernet_phy8: ethernet-phy@15 {
 };
 
 &esdhc0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&esdhc0_cd_wp_pins>, <&esdhc0_cmd_data30_clk_vsel_pins>;
 	sd-uhs-sdr104;
 	sd-uhs-sdr50;
 	sd-uhs-sdr25;
arch/arm64/boot/dts/freescale/fsl-lx2162a-sr-som.dtsi +7 -0
index e914291e63a1..e1344942eaae 100644
@@ -30,6 +30,8 @@ &esdhc1 {
 };
 
 &fspi {
+	pinctrl-names = "default";
+	pinctrl-0 = <&fspi_data74_pins>, <&fspi_data30_pins>, <&fspi_dqs_sck_cs10_pins>;
 	status = "okay";
 
 	flash@0 {
@@ -80,3 +82,8 @@ rtc@6f {
 		reg = <0x6f>;
 	};
 };
+
+&pinmux_i2crv {
+	pinctrl-names = "default";
+	pinctrl-0 = <&gpio0_14_12_pins>;
+};
arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi +0 -1
index 5932ba238a8a..f64c05dc50f8 100644
@@ -262,7 +262,6 @@ &gpio3 {
 			  "",
 			  "",
 			  "",
-			  "",
 			  "PMIC_SD2_VSEL";
 	status = "okay";
 };
arch/arm64/boot/dts/qcom/kodiak.dtsi +1 -1
index 6079e67ea829..ba0f7e5c89a0 100644
@@ -2445,7 +2445,7 @@ pcie1_phy: phy@1c0e000 {
 			reg = <0 0x01c0e000 0 0x1000>;
 			clocks = <&gcc GCC_PCIE_1_AUX_CLK>,
 				 <&gcc GCC_PCIE_1_CFG_AHB_CLK>,
-				 <&gcc GCC_PCIE_CLKREF_EN>,
+				 <&rpmhcc RPMH_CXO_CLK>,
 				 <&gcc GCC_PCIE1_PHY_RCHNG_CLK>,
 				 <&gcc GCC_PCIE_1_PIPE_CLK>;
 			clock-names = "aux",
arch/arm64/boot/dts/qcom/lemans.dtsi +4 -4
index 808827b83553..2db2ab9cb2e0 100644
@@ -1512,7 +1512,7 @@ i2c20: i2c@898000 {
 				reg = <0x0 0x898000 0x0 0x4000>;
 				#address-cells = <1>;
 				#size-cells = <0>;
-				interrupts = <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>;
+				interrupts = <GIC_SPI 833 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
 				clock-names = "se";
 				pinctrl-0 = <&qup_i2c20_default>;
@@ -1539,7 +1539,7 @@ spi20: spi@898000 {
 				reg = <0x0 0x898000 0x0 0x4000>;
 				#address-cells = <1>;
 				#size-cells = <0>;
-				interrupts = <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>;
+				interrupts = <GIC_SPI 833 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
 				clock-names = "se";
 				pinctrl-0 = <&qup_spi20_default>;
@@ -1564,7 +1564,7 @@ &config_noc SLAVE_QUP_2 QCOM_ICC_TAG_ALWAYS>,
 			uart20: serial@898000 {
 				compatible = "qcom,geni-uart";
 				reg = <0x0 0x00898000 0x0 0x4000>;
-				interrupts = <GIC_SPI 834 IRQ_TYPE_LEVEL_HIGH>;
+				interrupts = <GIC_SPI 833 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&gcc GCC_QUPV3_WRAP2_S6_CLK>;
 				clock-names = "se";
 				pinctrl-0 = <&qup_uart20_default>;
@@ -2510,7 +2510,7 @@ i2c13: i2c@a98000 {
 				reg = <0x0 0xa98000 0x0 0x4000>;
 				#address-cells = <1>;
 				#size-cells = <0>;
-				interrupts = <GIC_SPI 836 IRQ_TYPE_LEVEL_HIGH>;
+				interrupts = <GIC_SPI 835 IRQ_TYPE_LEVEL_HIGH>;
 				clocks = <&gcc GCC_QUPV3_WRAP1_S6_CLK>;
 				clock-names = "se";
 				pinctrl-0 = <&qup_i2c13_default>;
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts +1 -1
index e99bdbc2e0cb..b1a6f10adf26 100644
@@ -398,7 +398,7 @@ AM62AX_IOPAD(0x01d4, PIN_INPUT, 7) /* (C15) UART0_RTSn.GPIO1_23 */
 
 	vddshv_sdio_pins_default: vddshv-sdio-default-pins {
 		pinctrl-single,pins = <
-			AM62AX_IOPAD(0x07c, PIN_OUTPUT, 7) /* (M19) GPMC0_CLK.GPIO0_31 */
+			AM62AX_IOPAD(0x07c, PIN_OUTPUT, 7) /* (N22) GPMC0_CLK.GPIO0_31 */
 		>;
 	};
 
arch/arm64/boot/dts/ti/k3-am69-aquila-clover.dts +1 -1
index ec8ff4587715..dc0d3cf2f985 100644
@@ -26,7 +26,7 @@ reg_3v3_dp: regulator-3v3-dp {
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_gpio_21_dp>;
 		/* Aquila GPIO_21_DP (AQUILA B57) */
-		gpio = <&main_gpio0 37 GPIO_ACTIVE_HIGH>;
+		gpio = <&main_gpio0 21 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 		regulator-max-microvolt = <3300000>;
 		regulator-min-microvolt = <3300000>;
arch/arm64/boot/dts/ti/k3-am69-aquila-dev.dts +1 -1
index f48601ae38b7..d3677c2c2547 100644
@@ -33,7 +33,7 @@ reg_3v3_dp: regulator-3v3-dp {
 		pinctrl-names = "default";
 		pinctrl-0 = <&pinctrl_gpio_21_dp>;
 		/* Aquila GPIO_21_DP (AQUILA B57) */
-		gpio = <&main_gpio0 37 GPIO_ACTIVE_HIGH>;
+		gpio = <&main_gpio0 21 GPIO_ACTIVE_HIGH>;
 		enable-active-high;
 		regulator-max-microvolt = <3300000>;
 		regulator-min-microvolt = <3300000>;
drivers/edac/versalnet_edac.c +92 -78

208 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2 -1
index 29b400cdd6d5..72a5a29e63f6 100644
@@ -1735,7 +1735,8 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
 			alloc_domain = AMDGPU_GEM_DOMAIN_GTT;
 			alloc_flags = 0;
 		} else {
-			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE;
+			alloc_flags = AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE |
+				AMDGPU_GEM_CREATE_VRAM_CLEARED;
 			alloc_flags |= (flags & KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC) ?
 			AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED : 0;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +5 -1
index 6d8531f9b882..2ec69fa05cb1 100644
@@ -3539,8 +3539,12 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
 	 * that checks whether the PSP is running. A solution for those issues
 	 * in the APU is to trigger a GPU reset, but this should be done during
 	 * the unload phase to avoid adding boot latency and screen flicker.
+	 * GFX V11 has GC block as default off IP. Every time AMDGPU driver sends
+	 * a request to PMFW to unload MP1, PMFW will put GC in reset and power down
+	 * the voltage. Hence, skipping reset for APUs with GFX V11 or later.
 	 */
-	if ((adev->flags & AMD_IS_APU) && !adev->gmc.is_app_apu) {
+	if ((adev->flags & AMD_IS_APU) && !adev->gmc.is_app_apu &&
+		amdgpu_ip_version(adev, GC_HWIP, 0) < IP_VERSION(11, 0, 0)) {
 		r = amdgpu_asic_reset(adev);
 		if (r)
 			dev_err(adev->dev, "asic reset on %s failed\n", __func__);
drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +10 -3
index bc772ca3dab7..b6f849d51c2e 100644
@@ -262,12 +262,19 @@ void amdgpu_gart_table_ram_free(struct amdgpu_device *adev)
  */
 int amdgpu_gart_table_vram_alloc(struct amdgpu_device *adev)
 {
+	int r;
+
 	if (adev->gart.bo != NULL)
 		return 0;
 
-	return amdgpu_bo_create_kernel(adev,  adev->gart.table_size, PAGE_SIZE,
-				       AMDGPU_GEM_DOMAIN_VRAM, &adev->gart.bo,
-				       NULL, (void *)&adev->gart.ptr);
+	r = amdgpu_bo_create_kernel(adev,  adev->gart.table_size, PAGE_SIZE,
+				    AMDGPU_GEM_DOMAIN_VRAM, &adev->gart.bo,
+				    NULL, (void *)&adev->gart.ptr);
+	if (r)
+		return r;
+
+	memset_io(adev->gart.ptr, adev->gart.gart_pte_flags, adev->gart.table_size);
+	return 0;
 }
 
 /**
drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h +7 -4
index cb0fb1a989d2..14fd31d3437a 100644
@@ -553,15 +553,18 @@ void amdgpu_debugfs_ring_init(struct amdgpu_device *adev,
 
 int amdgpu_ring_init_mqd(struct amdgpu_ring *ring);
 
-static inline u32 amdgpu_ib_get_value(struct amdgpu_ib *ib, int idx)
+static inline u32 amdgpu_ib_get_value(struct amdgpu_ib *ib, uint32_t idx)
 {
-	return ib->ptr[idx];
+	if (idx < ib->length_dw)
+		return ib->ptr[idx];
+	return 0;
 }
 
-static inline void amdgpu_ib_set_value(struct amdgpu_ib *ib, int idx,
+static inline void amdgpu_ib_set_value(struct amdgpu_ib *ib, uint32_t idx,
 				       uint32_t value)
 {
-	ib->ptr[idx] = value;
+	if (idx < ib->length_dw)
+		ib->ptr[idx] = value;
 }
 
 int amdgpu_ib_get(struct amdgpu_device *adev, struct amdgpu_vm *vm,
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +3 -0
index a7d8f1ce6ac2..97cf2f4c58a6 100644
@@ -698,6 +698,9 @@ static int amdgpu_vce_cs_reloc(struct amdgpu_cs_parser *p, struct amdgpu_ib *ib,
 	uint64_t addr;
 	int r;
 
+	if (lo >= ib->length_dw || hi >= ib->length_dw)
+		return -EINVAL;
+
 	if (index == 0xffffffff)
 		index = 0;
 
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_cpu.c +11 -1
index 22e2e5b47341..f078db3fef79 100644
@@ -21,6 +21,8 @@
  */
 
 #include "amdgpu_vm.h"
+#include "amdgpu.h"
+#include "amdgpu_reset.h"
 #include "amdgpu_object.h"
 #include "amdgpu_trace.h"
 
@@ -108,11 +110,19 @@ static int amdgpu_vm_cpu_update(struct amdgpu_vm_update_params *p,
 static int amdgpu_vm_cpu_commit(struct amdgpu_vm_update_params *p,
 				struct dma_fence **fence)
 {
+	struct amdgpu_device *adev = p->adev;
+
 	if (p->needs_flush)
 		atomic64_inc(&p->vm->tlb_seq);
 
 	mb();
-	amdgpu_device_flush_hdp(p->adev, NULL);
+	/* A reset flushed the HDP anyway, so that here can be skipped when a reset is ongoing */
+	if (!down_read_trylock(&adev->reset_domain->sem))
+		return 0;
+
+	amdgpu_device_flush_hdp(adev, NULL);
+	up_read(&adev->reset_domain->sem);
+
 	return 0;
 }
 
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c +26 -5
index 427975b5a1d9..8d73193de06f 100644
@@ -64,6 +64,11 @@
 #define regPC_CONFIG_CNTL_1		0x194d
 #define regPC_CONFIG_CNTL_1_BASE_IDX	1
 
+#define regGOLDEN_TSC_COUNT_UPPER_smu_15_0_0               0x0030
+#define regGOLDEN_TSC_COUNT_UPPER_smu_15_0_0_BASE_IDX      1
+#define regGOLDEN_TSC_COUNT_LOWER_smu_15_0_0               0x0031
+#define regGOLDEN_TSC_COUNT_LOWER_smu_15_0_0_BASE_IDX      1
+
 #define regCP_GFX_MQD_CONTROL_DEFAULT                                             0x00000100
 #define regCP_GFX_HQD_VMID_DEFAULT                                                0x00000000
 #define regCP_GFX_HQD_QUEUE_PRIORITY_DEFAULT                                      0x00000000
@@ -5187,11 +5192,27 @@ static uint64_t gfx_v11_0_get_gpu_clock_counter(struct amdgpu_device *adev)
 		amdgpu_gfx_off_ctrl(adev, true);
 	} else {
 		preempt_disable();
-		clock_counter_hi_pre = (uint64_t)RREG32_SOC15(SMUIO, 0, regGOLDEN_TSC_COUNT_UPPER);
-		clock_counter_lo = (uint64_t)RREG32_SOC15(SMUIO, 0, regGOLDEN_TSC_COUNT_LOWER);
-		clock_counter_hi_after = (uint64_t)RREG32_SOC15(SMUIO, 0, regGOLDEN_TSC_COUNT_UPPER);
-		if (clock_counter_hi_pre != clock_counter_hi_after)
-			clock_counter_lo = (uint64_t)RREG32_SOC15(SMUIO, 0, regGOLDEN_TSC_COUNT_LOWER);
+		if (amdgpu_ip_version(adev, SMUIO_HWIP, 0) < IP_VERSION(15, 0, 0)) {
+			clock_counter_hi_pre = (uint64_t)RREG32_SOC15(SMUIO, 0,
+					regGOLDEN_TSC_COUNT_UPPER);
+			clock_counter_lo = (uint64_t)RREG32_SOC15(SMUIO, 0,
+					regGOLDEN_TSC_COUNT_LOWER);
+			clock_counter_hi_after = (uint64_t)RREG32_SOC15(SMUIO, 0,
+					regGOLDEN_TSC_COUNT_UPPER);
+			if (clock_counter_hi_pre != clock_counter_hi_after)
+				clock_counter_lo = (uint64_t)RREG32_SOC15(SMUIO, 0,
+						regGOLDEN_TSC_COUNT_LOWER);
+		} else {
+			clock_counter_hi_pre = (uint64_t)RREG32_SOC15(SMUIO, 0,
+					regGOLDEN_TSC_COUNT_UPPER_smu_15_0_0);
+			clock_counter_lo = (uint64_t)RREG32_SOC15(SMUIO, 0,
+					regGOLDEN_TSC_COUNT_LOWER_smu_15_0_0);
+			clock_counter_hi_after = (uint64_t)RREG32_SOC15(SMUIO, 0,
+					regGOLDEN_TSC_COUNT_UPPER_smu_15_0_0);
+			if (clock_counter_hi_pre != clock_counter_hi_after)
+				clock_counter_lo = (uint64_t)RREG32_SOC15(SMUIO, 0,
+						regGOLDEN_TSC_COUNT_LOWER_smu_15_0_0);
+		}
 		preempt_enable();
 	}
 	clock = clock_counter_lo | (clock_counter_hi_after << 32ULL);
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +0 -3
index 7e9d753f4a80..8fe6d0db3dad 100644
@@ -5660,9 +5660,6 @@ static void gfx_v9_0_ring_emit_fence_kiq(struct amdgpu_ring *ring, u64 addr,
 {
 	struct amdgpu_device *adev = ring->adev;
 
-	/* we only allocate 32bit for each seq wb address */
-	BUG_ON(flags & AMDGPU_FENCE_FLAG_64BIT);
-
 	/* write fence seq to the "addr" */
 	amdgpu_ring_write(ring, PACKET3(PACKET3_WRITE_DATA, 3));
 	amdgpu_ring_write(ring, (WRITE_DATA_ENGINE_SEL(0) |
drivers/gpu/drm/amd/amdgpu/mes_userqueue.c +37 -58

126 lines not on this page · raw message

drivers/gpu/drm/amd/amdgpu/nbif_v6_3_1.c +8 -1
index db14a1a326d2..b6f832c53860 100644
@@ -54,6 +54,8 @@
 #define regGDC_S2A0_S2A_DOORBELL_ENTRY_5_CTRL_nbif_4_10_BASE_IDX                                                  3
 #define regGDC_S2A0_S2A_DOORBELL_ENTRY_5_CTRL1_nbif_4_10                                                          0x4f0af6
 #define regGDC_S2A0_S2A_DOORBELL_ENTRY_5_CTRL1_nbif_4_10_BASE_IDX                                                 3
+#define regRCC_STRAP0_RCC_DEV0_EPF0_STRAP0_nbif_4_10                                                              0x0021
+#define regRCC_STRAP0_RCC_DEV0_EPF0_STRAP0_nbif_4_10_BASE_IDX                                                     2
 
 static void nbif_v6_3_1_remap_hdp_registers(struct amdgpu_device *adev)
 {
@@ -65,7 +67,12 @@ static void nbif_v6_3_1_remap_hdp_registers(struct amdgpu_device *adev)
 
 static u32 nbif_v6_3_1_get_rev_id(struct amdgpu_device *adev)
 {
-	u32 tmp = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_DEV0_EPF0_STRAP0);
+	u32 tmp;
+
+	if (amdgpu_ip_version(adev, NBIO_HWIP, 0) == IP_VERSION(7, 11, 4))
+		tmp = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_DEV0_EPF0_STRAP0_nbif_4_10);
+	else
+		tmp = RREG32_SOC15(NBIO, 0, regRCC_STRAP0_RCC_DEV0_EPF0_STRAP0);
 
 	tmp &= RCC_STRAP0_RCC_DEV0_EPF0_STRAP0__STRAP_ATI_REV_ID_DEV0_F0_MASK;
 	tmp >>= RCC_STRAP0_RCC_DEV0_EPF0_STRAP0__STRAP_ATI_REV_ID_DEV0_F0__SHIFT;
drivers/gpu/drm/amd/amdgpu/psp_v15_0.c +1 -0
index 73a709773e85..2a8582e87f2b 100644
@@ -32,6 +32,7 @@
 #include "mp/mp_15_0_0_sh_mask.h"
 
 MODULE_FIRMWARE("amdgpu/psp_15_0_0_toc.bin");
+MODULE_FIRMWARE("amdgpu/psp_15_0_0_ta.bin");
 
 static int psp_v15_0_0_init_microcode(struct psp_context *psp)
 {
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +2 -2
index f38004e6064e..4d0dc58c9045 100644
@@ -890,7 +890,7 @@ static void sdma_v4_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se
 	/* write the fence */
 	amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
 	/* zero in first two bits */
-	BUG_ON(addr & 0x3);
+	WARN_ON(addr & 0x3);
 	amdgpu_ring_write(ring, lower_32_bits(addr));
 	amdgpu_ring_write(ring, upper_32_bits(addr));
 	amdgpu_ring_write(ring, lower_32_bits(seq));
@@ -900,7 +900,7 @@ static void sdma_v4_0_ring_emit_fence(struct amdgpu_ring *ring, u64 addr, u64 se
 		addr += 4;
 		amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_FENCE));
 		/* zero in first two bits */
-		BUG_ON(addr & 0x3);
+		WARN_ON(addr & 0x3);
 		amdgpu_ring_write(ring, lower_32_bits(addr));
 		amdgpu_ring_write(ring, upper_32_bits(addr));
 		amdgpu_ring_write(ring, upper_32_bits(seq));
drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c +21 -4
index 02d5c5af65f2..2fe5b3fe287f 100644
@@ -1909,7 +1909,7 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
 	struct ttm_operation_ctx ctx = { false, false };
 	struct amdgpu_device *adev = p->adev;
 	struct amdgpu_bo_va_mapping *map;
-	uint32_t *msg, num_buffers;
+	uint32_t *msg, num_buffers, len_dw;
 	struct amdgpu_bo *bo;
 	uint64_t start, end;
 	unsigned int i;
@@ -1930,6 +1930,11 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
 		return -EINVAL;
 	}
 
+	if (end - addr < 16) {
+		DRM_ERROR("VCN messages must be at least 4 DWORDs!\n");
+		return -EINVAL;
+	}
+
 	bo->flags |= AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED;
 	amdgpu_bo_placement_from_domain(bo, bo->allowed_domains);
 	r = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
@@ -1946,8 +1951,8 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
 
 	msg = ptr + addr - start;
 
-	/* Check length */
 	if (msg[1] > end - addr) {
+		DRM_ERROR("VCN message header does not fit in BO!\n");
 		r = -EINVAL;
 		goto out;
 	}
@@ -1955,9 +1960,19 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
 	if (msg[3] != RDECODE_MSG_CREATE)
 		goto out;
 
+	len_dw = msg[1] / 4;
 	num_buffers = msg[2];
+
+	/* Verify that all indices fit within the claimed length. Each index is 4 DWORDs */
+	if (num_buffers > len_dw || 6 + num_buffers * 4 > len_dw) {
+		DRM_ERROR("VCN message has too many buffers!\n");
+		r = -EINVAL;
+		goto out;
+	}
+
 	for (i = 0, msg = &msg[6]; i < num_buffers; ++i, msg += 4) {
 		uint32_t offset, size, *create;
+		uint64_t buf_end;
 
 		if (msg[0] != RDECODE_MESSAGE_CREATE)
 			continue;
@@ -1965,14 +1980,16 @@ static int vcn_v3_0_dec_msg(struct amdgpu_cs_parser *p, struct amdgpu_job *job,
 		offset = msg[1];
 		size = msg[2];
 
-		if (offset + size > end) {
+		if (size < 4 || check_add_overflow(offset, size, &buf_end) ||
+		    buf_end > end - addr) {
+			DRM_ERROR("VCN message buffer exceeds BO bounds!\n");
 			r = -EINVAL;
 			goto out;
 		}
 
 		create = ptr + addr + offset - start;
 
-		/* H246, HEVC and VP9 can run on any instance */
+		/* H264, HEVC and VP9 can run on any instance */
 		if (create[0] == 0x7 || create[0] == 0x10 || create[0] == 0x11)
 			continue;
 
drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c +32 -14

106 lines not on this page · raw message

drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +29 -4
index 462a32abf720..f95bf6d95534 100644
@@ -25,6 +25,7 @@
 #include <linux/err.h>
 #include <linux/fs.h>
 #include <linux/file.h>
+#include <linux/overflow.h>
 #include <linux/sched.h>
 #include <linux/slab.h>
 #include <linux/uaccess.h>
@@ -776,6 +777,9 @@ static int kfd_ioctl_get_process_apertures_new(struct file *filp,
 		goto out_unlock;
 	}
 
+	if (args->num_of_nodes > kfd_topology_get_num_devices())
+		return -EINVAL;
+
 	/* Fill in process-aperture information for all available
 	 * nodes, but not more than args->num_of_nodes as that is
 	 * the amount of memory allocated by user
@@ -1356,7 +1360,7 @@ static int kfd_ioctl_map_memory_to_gpu(struct file *filep,
 		peer_pdd = kfd_process_device_data_by_id(p, devices_arr[i]);
 		if (WARN_ON_ONCE(!peer_pdd))
 			continue;
-		kfd_flush_tlb(peer_pdd, TLB_FLUSH_LEGACY);
+		kfd_flush_tlb(peer_pdd);
 	}
 	kfree(devices_arr);
 
@@ -1451,7 +1455,7 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep,
 		if (WARN_ON_ONCE(!peer_pdd))
 			continue;
 		if (flush_tlb)
-			kfd_flush_tlb(peer_pdd, TLB_FLUSH_HEAVYWEIGHT);
+			kfd_flush_tlb(peer_pdd);
 
 		/* Remove dma mapping after tlb flush to avoid IO_PAGE_FAULT */
 		err = amdgpu_amdkfd_gpuvm_dmaunmap_mem(mem, peer_pdd->drm_priv);
@@ -1692,6 +1696,16 @@ static int kfd_ioctl_smi_events(struct file *filep,
 	return kfd_smi_event_open(pdd->dev, &args->anon_fd);
 }
 
+static int kfd_ioctl_svm_validate(void *kdata, unsigned int usize)
+{
+	struct kfd_ioctl_svm_args *args = kdata;
+	size_t expected = struct_size(args, attrs, args->nattr);
+
+	if (expected == SIZE_MAX || usize < expected)
+		return -EINVAL;
+	return 0;
+}
+
 #if IS_ENABLED(CONFIG_HSA_AMD_SVM)
 
 static int kfd_ioctl_set_xnack_mode(struct file *filep,
@@ -3206,7 +3220,11 @@ static int kfd_ioctl_create_process(struct file *filep, struct kfd_process *p, v
 
 #define AMDKFD_IOCTL_DEF(ioctl, _func, _flags) \
 	[_IOC_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags, \
-			    .cmd_drv = 0, .name = #ioctl}
+			    .validate = NULL, .cmd_drv = 0, .name = #ioctl}
+
+#define AMDKFD_IOCTL_DEF_V(ioctl, _func, _validate, _flags) \
+	[_IOC_NR(ioctl)] = {.cmd = ioctl, .func = _func, .flags = _flags, \
+			    .validate = _validate, .cmd_drv = 0, .name = #ioctl}
 
 /** Ioctl table */
 static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = {
@@ -3303,7 +3321,8 @@ static const struct amdkfd_ioctl_desc amdkfd_ioctls[] = {
 	AMDKFD_IOCTL_DEF(AMDKFD_IOC_SMI_EVENTS,
 			kfd_ioctl_smi_events, 0),
 
-	AMDKFD_IOCTL_DEF(AMDKFD_IOC_SVM, kfd_ioctl_svm, 0),
+	AMDKFD_IOCTL_DEF_V(AMDKFD_IOC_SVM, kfd_ioctl_svm,
+			   kfd_ioctl_svm_validate, 0),
 
 	AMDKFD_IOCTL_DEF(AMDKFD_IOC_SET_XNACK_MODE,
 			kfd_ioctl_set_xnack_mode, 0),
@@ -3428,6 +3447,12 @@ static long kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
 		memset(kdata, 0, usize);
 	}
 
+	if (ioctl->validate) {
+		retcode = ioctl->validate(kdata, usize);
+		if (retcode)
+			goto err_i1;
+	}
+
 	retcode = func(filep, process, kdata);
 
 	if (cmd & IOC_OUT)
drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c +3 -3
index 3ddf06c755b5..c4cf595abca6 100644
@@ -572,7 +572,7 @@ static int allocate_vmid(struct device_queue_manager *dqm,
 			qpd->vmid,
 			qpd->page_table_base);
 	/* invalidate the VM context after pasid and vmid mapping is set up */
-	kfd_flush_tlb(qpd_to_pdd(qpd), TLB_FLUSH_LEGACY);
+	kfd_flush_tlb(qpd_to_pdd(qpd));
 
 	if (dqm->dev->kfd2kgd->set_scratch_backing_va)
 		dqm->dev->kfd2kgd->set_scratch_backing_va(dqm->dev->adev,
@@ -610,7 +610,7 @@ static void deallocate_vmid(struct device_queue_manager *dqm,
 		if (flush_texture_cache_nocpsch(q->device, qpd))
 			dev_err(dev, "Failed to flush TC\n");
 
-	kfd_flush_tlb(qpd_to_pdd(qpd), TLB_FLUSH_LEGACY);
+	kfd_flush_tlb(qpd_to_pdd(qpd));
 
 	/* Release the vmid mapping */
 	set_pasid_vmid_mapping(dqm, 0, qpd->vmid);
@@ -1284,7 +1284,7 @@ static int restore_process_queues_nocpsch(struct device_queue_manager *dqm,
 				dqm->dev->adev,
 				qpd->vmid,
 				qpd->page_table_base);
-		kfd_flush_tlb(pdd, TLB_FLUSH_LEGACY);
+		kfd_flush_tlb(pdd);
 	}
 
 	/* Take a safe reference to the mm_struct, which may otherwise
drivers/gpu/drm/amd/amdkfd/kfd_priv.h +7 -3
index 035687a17d89..c8a2a3eb46ff 100644
@@ -1047,10 +1047,13 @@ extern struct srcu_struct kfd_processes_srcu;
 typedef int amdkfd_ioctl_t(struct file *filep, struct kfd_process *p,
 				void *data);
 
+typedef int amdkfd_ioctl_validate_t(void *kdata, unsigned int usize);
+
 struct amdkfd_ioctl_desc {
 	unsigned int cmd;
 	int flags;
 	amdkfd_ioctl_t *func;
+	amdkfd_ioctl_validate_t *validate;
 	unsigned int cmd_drv;
 	const char *name;
 };
@@ -1191,6 +1194,7 @@ static inline struct kfd_node *kfd_node_by_irq_ids(struct amdgpu_device *adev,
 	return NULL;
 }
 int kfd_topology_enum_kfd_devices(uint8_t idx, struct kfd_node **kdev);
+uint32_t kfd_topology_get_num_devices(void);
 int kfd_numa_node_to_apic_id(int numa_node_id);
 uint32_t kfd_gpu_node_num(void);
 
@@ -1550,13 +1554,13 @@ void kfd_signal_reset_event(struct kfd_node *dev);
 void kfd_signal_poison_consumed_event(struct kfd_node *dev, u32 pasid);
 void kfd_signal_process_terminate_event(struct kfd_process *p);
 
-static inline void kfd_flush_tlb(struct kfd_process_device *pdd,
-				 enum TLB_FLUSH_TYPE type)
+static inline void kfd_flush_tlb(struct kfd_process_device *pdd)
 {
 	struct amdgpu_device *adev = pdd->dev->adev;
 	struct amdgpu_vm *vm = drm_priv_to_vm(pdd->drm_priv);
 
-	amdgpu_vm_flush_compute_tlb(adev, vm, type, pdd->dev->xcc_mask);
+	amdgpu_vm_flush_compute_tlb(adev, vm, TLB_FLUSH_HEAVYWEIGHT,
+				    pdd->dev->xcc_mask);
 }
 
 static inline bool kfd_flush_tlb_after_unmap(struct kfd_dev *dev)
drivers/gpu/drm/amd/amdkfd/kfd_svm.c +2 -2
index 080242f9981b..3d2c603f2085 100644
@@ -1415,7 +1415,7 @@ svm_range_unmap_from_gpus(struct svm_range *prange, unsigned long start,
 			if (r)
 				break;
 		}
-		kfd_flush_tlb(pdd, TLB_FLUSH_HEAVYWEIGHT);
+		kfd_flush_tlb(pdd);
 	}
 
 	return r;
@@ -1557,7 +1557,7 @@ svm_range_map_to_gpus(struct svm_range *prange, unsigned long offset,
 			}
 		}
 
-		kfd_flush_tlb(pdd, TLB_FLUSH_LEGACY);
+		kfd_flush_tlb(pdd);
 	}
 
 	return r;
drivers/gpu/drm/amd/amdkfd/kfd_topology.c +11 -0
index 995f2c2528a9..29dee26261ab 100644
@@ -2297,6 +2297,17 @@ int kfd_topology_remove_device(struct kfd_node *gpu)
 	return res;
 }
 
+uint32_t kfd_topology_get_num_devices(void)
+{
+	uint32_t num_devices;
+
+	down_read(&topology_lock);
+	num_devices = sys_props.num_devices;
+	up_read(&topology_lock);
+
+	return num_devices;
+}
+
 /* kfd_topology_enum_kfd_devices - Enumerate through all devices in KFD
  *	topology. If GPU device is found @idx, then valid kfd_dev pointer is
  *	returned through @kdev
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +1 -1
index 03d125f794b0..896f4719cf7b 100644
@@ -5049,7 +5049,7 @@ void resource_build_bit_depth_reduction_params(struct dc_stream_state *stream,
 			option = DITHER_OPTION_SPATIAL8;
 			break;
 		case COLOR_DEPTH_101010:
-			option = DITHER_OPTION_TRUN10;
+			option = DITHER_OPTION_SPATIAL10;
 			break;
 		default:
 			option = DITHER_OPTION_DISABLE;
drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_standalone_libraries/lib_float_math.c +1 -1
index e17b5ceba447..dc5bc649f3ac 100644
@@ -23,7 +23,7 @@ double math_mod(const double arg1, const double arg2)
 		return arg2;
 	if (isNaN(arg2))
 		return arg1;
-	return arg1 - arg1 * ((int)(arg1 / arg2));
+	return arg1 - arg2 * ((int)(arg1 / arg2));
 }
 
 double math_min2(const double arg1, const double arg2)
drivers/gpu/drm/amd/pm/powerplay/smumgr/ci_smumgr.c +7 -6
index 62ebec1c6fe3..7d5df18db8d2 100644
@@ -1326,12 +1326,13 @@ static int ci_populate_all_memory_levels(struct pp_hwmgr *hwmgr)
 
 	dev_id = adev->pdev->device;
 
-	if ((dpm_table->mclk_table.count >= 2)
-		&& ((dev_id == 0x67B0) ||  (dev_id == 0x67B1))) {
-		smu_data->smc_state_table.MemoryLevel[1].MinVddci =
-				smu_data->smc_state_table.MemoryLevel[0].MinVddci;
-		smu_data->smc_state_table.MemoryLevel[1].MinMvdd =
-				smu_data->smc_state_table.MemoryLevel[0].MinMvdd;
+	if ((dpm_table->mclk_table.count >= 2) &&
+	    ((dev_id == 0x67B0) ||  (dev_id == 0x67B1)) &&
+	    (adev->pdev->revision == 0)) {
+		smu_data->smc_state_table.MemoryLevel[1].MinVddc =
+				smu_data->smc_state_table.MemoryLevel[0].MinVddc;
+		smu_data->smc_state_table.MemoryLevel[1].MinVddcPhases =
+				smu_data->smc_state_table.MemoryLevel[0].MinVddcPhases;
 	}
 	smu_data->smc_state_table.MemoryLevel[0].ActivityLevel = 0x1F;
 	CONVERT_FROM_HOST_TO_SMC_US(smu_data->smc_state_table.MemoryLevel[0].ActivityLevel);
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +7 -3
index c3ebfac062a7..58d12073f7b7 100644
@@ -2372,6 +2372,7 @@ static int smu_v14_0_2_od_restore_table_single(struct smu_context *smu, long inp
 		}
 		od_table->OverDriveTable.FanMode = FAN_MODE_AUTO;
 		od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_FAN_CURVE_BIT);
+		od_table->OverDriveTable.FeatureCtrlMask &= ~BIT(PP_OD_FEATURE_FAN_LEGACY_BIT);
 		break;
 	case PP_OD_EDIT_FAN_ZERO_RPM_ENABLE:
 		od_table->OverDriveTable.FanZeroRpmEnable =
@@ -2400,7 +2401,8 @@ static int smu_v14_0_2_od_restore_table_single(struct smu_context *smu, long inp
 		od_table->OverDriveTable.FanMinimumPwm =
 					boot_overdrive_table->OverDriveTable.FanMinimumPwm;
 		od_table->OverDriveTable.FanMode = FAN_MODE_AUTO;
-		od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_FAN_CURVE_BIT);
+		od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_FAN_LEGACY_BIT);
+		od_table->OverDriveTable.FeatureCtrlMask &= ~BIT(PP_OD_FEATURE_FAN_CURVE_BIT);
 		break;
 	default:
 		dev_info(adev->dev, "Invalid table index: %ld\n", input);
@@ -2570,6 +2572,7 @@ static int smu_v14_0_2_od_edit_dpm_table(struct smu_context *smu,
 		od_table->OverDriveTable.FanLinearPwmPoints[input[0]] = input[2];
 		od_table->OverDriveTable.FanMode = FAN_MODE_MANUAL_LINEAR;
 		od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_FAN_CURVE_BIT);
+		od_table->OverDriveTable.FeatureCtrlMask &= ~BIT(PP_OD_FEATURE_FAN_LEGACY_BIT);
 		break;
 
 	case PP_OD_EDIT_ACOUSTIC_LIMIT:
@@ -2639,7 +2642,7 @@ static int smu_v14_0_2_od_edit_dpm_table(struct smu_context *smu,
 		break;
 
 	case PP_OD_EDIT_FAN_MINIMUM_PWM:
-		if (!smu_v14_0_2_is_od_feature_supported(smu, PP_OD_FEATURE_FAN_CURVE_BIT)) {
+		if (!smu_v14_0_2_is_od_feature_supported(smu, PP_OD_FEATURE_FAN_LEGACY_BIT)) {
 			dev_warn(adev->dev, "Fan curve setting not supported!\n");
 			return -ENOTSUPP;
 		}
@@ -2657,7 +2660,8 @@ static int smu_v14_0_2_od_edit_dpm_table(struct smu_context *smu,
 
 		od_table->OverDriveTable.FanMinimumPwm = input[0];
 		od_table->OverDriveTable.FanMode = FAN_MODE_AUTO;
-		od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_FAN_CURVE_BIT);
+		od_table->OverDriveTable.FeatureCtrlMask |= BIT(PP_OD_FEATURE_FAN_LEGACY_BIT);
+		od_table->OverDriveTable.FeatureCtrlMask &= ~BIT(PP_OD_FEATURE_FAN_CURVE_BIT);
 		break;
 
 	case PP_OD_EDIT_FAN_ZERO_RPM_ENABLE:
drivers/gpu/drm/bridge/tda998x_drv.c +1 -1
index e636459d9185..f90b08869267 100644
@@ -1697,7 +1697,7 @@ static const struct drm_bridge_funcs tda998x_bridge_funcs = {
 static int tda998x_get_audio_ports(struct tda998x_priv *priv,
 				   struct device_node *np)
 {
-	const u32 *port_data;
+	const __be32 *port_data;
 	u32 size;
 	int i;
 
drivers/gpu/drm/drm_atomic.c +7 -0
index f2cd2e25f009..ec7534227f66 100644
@@ -1569,6 +1569,7 @@ drm_atomic_add_affected_planes(struct drm_atomic_state *state,
 	const struct drm_crtc_state *old_crtc_state =
 		drm_atomic_get_old_crtc_state(state, crtc);
 	struct drm_plane *plane;
+	int ret;
 
 	WARN_ON(!drm_atomic_get_new_crtc_state(state, crtc));
 
@@ -1582,6 +1583,12 @@ drm_atomic_add_affected_planes(struct drm_atomic_state *state,
 
 		if (IS_ERR(plane_state))
 			return PTR_ERR(plane_state);
+
+		if (plane_state->color_pipeline) {
+			ret = drm_atomic_add_affected_colorops(state, plane);
+			if (ret)
+				return ret;
+		}
 	}
 	return 0;
 }
drivers/gpu/drm/drm_colorop.c +19 -9
index 398cc81ae588..27139862b120 100644
@@ -169,12 +169,8 @@ void drm_colorop_cleanup(struct drm_colorop *colorop)
 	list_del(&colorop->head);
 	config->num_colorop--;
 
-	if (colorop->state && colorop->state->data) {
-		drm_property_blob_put(colorop->state->data);
-		colorop->state->data = NULL;
-	}
-
-	kfree(colorop->state);
+	if (colorop->state)
+		drm_colorop_atomic_destroy_state(colorop, colorop->state);
 }
 EXPORT_SYMBOL(drm_colorop_cleanup);
 
@@ -441,8 +437,6 @@ static void __drm_atomic_helper_colorop_duplicate_state(struct drm_colorop *colo
 
 	if (state->data)
 		drm_property_blob_get(state->data);
-
-	state->bypass = true;
 }
 
 struct drm_colorop_state *
@@ -460,9 +454,23 @@ drm_atomic_helper_colorop_duplicate_state(struct drm_colorop *colorop)
 	return state;
 }
 
+/**
+ * __drm_atomic_helper_colorop_destroy_state - release colorop state
+ * @state: colorop state object to release
+ *
+ * Releases all resources stored in the colorop state without actually freeing
+ * the memory of the colorop state. This is useful for drivers that subclass the
+ * colorop state.
+ */
+static void __drm_atomic_helper_colorop_destroy_state(struct drm_colorop_state *state)
+{
+	drm_property_blob_put(state->data);
+}
+
 void drm_colorop_atomic_destroy_state(struct drm_colorop *colorop,
 				      struct drm_colorop_state *state)
 {
+	__drm_atomic_helper_colorop_destroy_state(state);
 	kfree(state);
 }
 
@@ -513,7 +521,9 @@ static void __drm_colorop_reset(struct drm_colorop *colorop,
 
 void drm_colorop_reset(struct drm_colorop *colorop)
 {
-	kfree(colorop->state);
+	if (colorop->state)
+		drm_colorop_atomic_destroy_state(colorop, colorop->state);
+
 	colorop->state = kzalloc_obj(*colorop->state);
 
 	if (colorop->state)
drivers/gpu/drm/drm_gem.c +24 -1
index 891c3bff5ae0..ebf21b403b11 100644
@@ -1001,7 +1001,7 @@ int drm_gem_change_handle_ioctl(struct drm_device *dev, void *data,
 				struct drm_file *file_priv)
 {
 	struct drm_gem_change_handle *args = data;
-	struct drm_gem_object *obj;
+	struct drm_gem_object *obj, *idrobj;
 	int handle, ret;
 
 	if (!drm_core_check_feature(dev, DRIVER_GEM))
@@ -1024,8 +1024,29 @@ int drm_gem_change_handle_ioctl(struct drm_device *dev, void *data,
 	mutex_lock(&file_priv->prime.lock);
 
 	spin_lock(&file_priv->table_lock);
+
+       /* When create_tail allocs an obj idr, it needs to first alloc as NULL,
+	* then later replace with the correct object. This is not necessary
+	* here, because the only operations that could race are drm_prime
+	* bookkeeping, and we hold the prime lock.
+	*/
 	ret = idr_alloc(&file_priv->object_idr, obj, handle, handle + 1,
 			GFP_NOWAIT);
+
+       if (ret < 0) {
+	       spin_unlock(&file_priv->table_lock);
+	       goto out_unlock;
+       }
+
+       idrobj = idr_replace(&file_priv->object_idr, NULL, handle);
+       if (idrobj != obj) {
+	       idr_replace(&file_priv->object_idr, idrobj, handle);
+	       idr_remove(&file_priv->object_idr, args->new_handle);
+	       spin_unlock(&file_priv->table_lock);
+	       ret = -ENOENT;
+	       goto out_unlock;
+       }
+
 	spin_unlock(&file_priv->table_lock);
 
 	if (ret < 0)
@@ -1037,6 +1058,8 @@ int drm_gem_change_handle_ioctl(struct drm_device *dev, void *data,
 		if (ret < 0) {
 			spin_lock(&file_priv->table_lock);
 			idr_remove(&file_priv->object_idr, handle);
+			idrobj = idr_replace(&file_priv->object_idr, obj, handle);
+			WARN_ON(idrobj != NULL);
 			spin_unlock(&file_priv->table_lock);
 			goto out_unlock;
 		}
drivers/gpu/drm/drm_gem_framebuffer_helper.c +2 -2
index 9166c353f131..88808e972cc1 100644
@@ -172,8 +172,8 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev,
 	}
 
 	for (i = 0; i < info->num_planes; i++) {
-		unsigned int width = mode_cmd->width / (i ? info->hsub : 1);
-		unsigned int height = mode_cmd->height / (i ? info->vsub : 1);
+		unsigned int width = drm_format_info_plane_width(info, mode_cmd->width, i);
+		unsigned int height = drm_format_info_plane_height(info, mode_cmd->height, i);
 		unsigned int min_size;
 
 		objs[i] = drm_gem_object_lookup(file, mode_cmd->handles[i]);
drivers/gpu/drm/drm_gpusvm.c +2 -1
index 9ef9e52c0547..04bdc386c3fd 100644
@@ -1495,7 +1495,7 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
 			}
 			zdd = page->zone_device_data;
 			if (pagemap != page_pgmap(page)) {
-				if (i > 0) {
+				if (pagemap) {
 					err = -EOPNOTSUPP;
 					goto err_unmap;
 				}
@@ -1572,6 +1572,7 @@ int drm_gpusvm_get_pages(struct drm_gpusvm *gpusvm,
 	return 0;
 
 err_unmap:
+	svm_pages->flags.has_dma_mapping = true;
 	__drm_gpusvm_unmap_pages(gpusvm, svm_pages, num_dma_mapped);
 	drm_gpusvm_notifier_unlock(gpusvm);
 err_free:
drivers/gpu/drm/exynos/exynos_drm_mic.c +3 -5
index 29a8366513fa..e68c954ec3e6 100644
@@ -423,7 +423,9 @@ static int exynos_mic_probe(struct platform_device *pdev)
 
 	mic->bridge.of_node = dev->of_node;
 
-	drm_bridge_add(&mic->bridge);
+	ret = devm_drm_bridge_add(dev, &mic->bridge);
+	if (ret)
+		goto err;
 
 	pm_runtime_enable(dev);
 
@@ -443,12 +445,8 @@ static int exynos_mic_probe(struct platform_device *pdev)
 
 static void exynos_mic_remove(struct platform_device *pdev)
 {
-	struct exynos_mic *mic = platform_get_drvdata(pdev);
-
 	component_del(&pdev->dev, &exynos_mic_component_ops);
 	pm_runtime_disable(&pdev->dev);
-
-	drm_bridge_remove(&mic->bridge);
 }
 
 static const struct of_device_id exynos_mic_of_match[] = {
drivers/gpu/drm/i915/display/intel_psr.c +1 -1
index 097e18c1adb2..8a7075c4a248 100644
@@ -2970,7 +2970,7 @@ int intel_psr2_sel_fetch_update(struct intel_atomic_state *state,
 		return ret;
 
 	do {
-		bool cursor_in_su_area;
+		bool cursor_in_su_area = false;
 
 		/*
 		 * Adjust su area to cover cursor fully as necessary
drivers/gpu/drm/imx/ipuv3/parallel-display.c +12 -3
index 4ce772bc3cb3..a356f0b764cb 100644
@@ -110,8 +110,7 @@ imx_pd_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
 		output_fmt = imxpd->bus_format ? : MEDIA_BUS_FMT_RGB888_1X24;
 
 	/* Now make sure the requested output format is supported. */
-	if ((imxpd->bus_format && imxpd->bus_format != output_fmt) ||
-	    !imx_pd_format_supported(output_fmt)) {
+	if (!imx_pd_format_supported(output_fmt)) {
 		*num_input_fmts = 0;
 		return NULL;
 	}
@@ -121,7 +120,17 @@ imx_pd_bridge_atomic_get_input_bus_fmts(struct drm_bridge *bridge,
 	if (!input_fmts)
 		return NULL;
 
-	input_fmts[0] = output_fmt;
+	/*
+	 * Prefer bus format set via legacy "interface-pix-fmt" DT property
+	 * over panel bus format. This is necessary to retain support for
+	 * DTs which configure the IPUv3 parallel output as 24bit, but
+	 * connect 18bit DPI panels to it with hardware swizzling.
+	 */
+	if (imxpd->bus_format && imxpd->bus_format != output_fmt)
+		input_fmts[0] = imxpd->bus_format;
+	else
+		input_fmts[0] = output_fmt;
+
 	return input_fmts;
 }
 
drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +2 -2
index 98cd490e7ab0..9b7012692ece 100644
@@ -153,7 +153,7 @@ static int msm_hdmi_bridge_write_avi_infoframe(struct drm_bridge *bridge,
 	for (i = 0; i < ARRAY_SIZE(buf); i++)
 		hdmi_write(hdmi, REG_HDMI_AVI_INFO(i), buf[i]);
 
-	val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1);
+	val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0);
 	val |= HDMI_INFOFRAME_CTRL0_AVI_SEND |
 		HDMI_INFOFRAME_CTRL0_AVI_CONT;
 	hdmi_write(hdmi, REG_HDMI_INFOFRAME_CTRL0, val);
@@ -193,7 +193,7 @@ static int msm_hdmi_bridge_write_audio_infoframe(struct drm_bridge *bridge,
 		   buffer[9] << 16 |
 		   buffer[10] << 24);
 
-	val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL1);
+	val = hdmi_read(hdmi, REG_HDMI_INFOFRAME_CTRL0);
 	val |= HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SEND |
 		HDMI_INFOFRAME_CTRL0_AUDIO_INFO_CONT |
 		HDMI_INFOFRAME_CTRL0_AUDIO_INFO_SOURCE |
drivers/gpu/drm/msm/msm_drv.c +6 -1
index e5ab1e28851d..195f40e331e5 100644
@@ -536,6 +536,11 @@ static int msm_ioctl_gem_info_get_metadata(struct drm_gem_object *obj,
 	len = msm_obj->metadata_size;
 	buf = kmemdup(msm_obj->metadata, len, GFP_KERNEL);
 
+	if (!buf) {
+		msm_gem_unlock(obj);
+		return -ENOMEM;
+	}
+
 	msm_gem_unlock(obj);
 
 	if (*metadata_size < len) {
@@ -548,7 +553,7 @@ static int msm_ioctl_gem_info_get_metadata(struct drm_gem_object *obj,
 
 	kfree(buf);
 
-	return 0;
+	return ret;
 }
 
 static int msm_ioctl_gem_info(struct drm_device *dev, void *data,
drivers/gpu/drm/msm/msm_gpu.c +20 -22

52 lines not on this page · raw message

drivers/gpu/drm/panel/panel-boe-tv101wum-nl6.c +2 -0
index d5fe105bdbdd..658ce64c71eb 100644
@@ -1324,6 +1324,8 @@ static int boe_panel_disable(struct drm_panel *panel)
 	mipi_dsi_dcs_set_display_off_multi(&ctx);
 	mipi_dsi_dcs_enter_sleep_mode_multi(&ctx);
 
+	boe->dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
 	mipi_dsi_msleep(&ctx, 150);
 
 	return ctx.accum_err;
drivers/gpu/drm/panel/panel-himax-hx83102.c +2 -0
index 1d3bb5dca559..5dfec2a958f7 100644
@@ -850,6 +850,8 @@ static int hx83102_disable(struct drm_panel *panel)
 	mipi_dsi_dcs_set_display_off_multi(&dsi_ctx);
 	mipi_dsi_dcs_enter_sleep_mode_multi(&dsi_ctx);
 
+	dsi->mode_flags |= MIPI_DSI_MODE_LPM;
+
 	mipi_dsi_msleep(&dsi_ctx, 150);
 
 	return dsi_ctx.accum_err;
drivers/gpu/drm/radeon/ci_dpm.c +6 -3
index 22321eb95b7d..703848fac189 100644
@@ -2461,7 +2461,8 @@ static void ci_register_patching_mc_arb(struct radeon_device *rdev,
 
 	if (patch &&
 	    ((rdev->pdev->device == 0x67B0) ||
-	     (rdev->pdev->device == 0x67B1))) {
+	     (rdev->pdev->device == 0x67B1)) &&
+	    (rdev->pdev->revision == 0)) {
 		if ((memory_clock > 100000) && (memory_clock <= 125000)) {
 			tmp2 = (((0x31 * engine_clock) / 125000) - 1) & 0xff;
 			*dram_timimg2 &= ~0x00ff0000;
@@ -3304,7 +3305,8 @@ static int ci_populate_all_memory_levels(struct radeon_device *rdev)
 	pi->smc_state_table.MemoryLevel[0].EnabledForActivity = 1;
 
 	if ((dpm_table->mclk_table.count >= 2) &&
-	    ((rdev->pdev->device == 0x67B0) || (rdev->pdev->device == 0x67B1))) {
+	    ((rdev->pdev->device == 0x67B0) || (rdev->pdev->device == 0x67B1)) &&
+	    (rdev->pdev->revision == 0)) {
 		pi->smc_state_table.MemoryLevel[1].MinVddc =
 			pi->smc_state_table.MemoryLevel[0].MinVddc;
 		pi->smc_state_table.MemoryLevel[1].MinVddcPhases =
@@ -4493,7 +4495,8 @@ static int ci_register_patching_mc_seq(struct radeon_device *rdev,
 
 	if (patch &&
 	    ((rdev->pdev->device == 0x67B0) ||
-	     (rdev->pdev->device == 0x67B1))) {
+	     (rdev->pdev->device == 0x67B1)) &&
+	    (rdev->pdev->revision == 0)) {
 		for (i = 0; i < table->last; i++) {
 			if (table->last >= SMU7_DISCRETE_MC_REGISTER_ARRAY_SIZE)
 				return -EINVAL;
drivers/gpu/drm/sti/sti_hda.c +4 -4
index b7397827889c..360a88ca8f0c 100644
@@ -741,6 +741,7 @@ static int sti_hda_probe(struct platform_device *pdev)
 	struct device *dev = &pdev->dev;
 	struct sti_hda *hda;
 	struct resource *res;
+	int ret;
 
 	DRM_INFO("%s\n", __func__);
 
@@ -779,7 +780,9 @@ static int sti_hda_probe(struct platform_device *pdev)
 		return PTR_ERR(hda->clk_hddac);
 	}
 
-	drm_bridge_add(&hda->bridge);
+	ret = devm_drm_bridge_add(dev, &hda->bridge);
+	if (ret)
+		return ret;
 
 	platform_set_drvdata(pdev, hda);
 
@@ -788,10 +791,7 @@ static int sti_hda_probe(struct platform_device *pdev)
 
 static void sti_hda_remove(struct platform_device *pdev)
 {
-	struct sti_hda *hda = platform_get_drvdata(pdev);
-
 	component_del(&pdev->dev, &sti_hda_ops);
-	drm_bridge_remove(&hda->bridge);
 }
 
 static const struct of_device_id hda_of_match[] = {
drivers/gpu/drm/tiny/appletbdrm.c +2 -2
index 3bae91d7eefe..278bb23fe4c8 100644
@@ -353,7 +353,7 @@ static int appletbdrm_primary_plane_helper_atomic_check(struct drm_plane *plane,
 		       frames_size +
 		       sizeof(struct appletbdrm_fb_request_footer), 16);
 
-	appletbdrm_state->request = kzalloc(request_size, GFP_KERNEL);
+	appletbdrm_state->request = kvzalloc(request_size, GFP_KERNEL);
 
 	if (!appletbdrm_state->request)
 		return -ENOMEM;
@@ -543,7 +543,7 @@ static void appletbdrm_primary_plane_destroy_state(struct drm_plane *plane,
 {
 	struct appletbdrm_plane_state *appletbdrm_state = to_appletbdrm_plane_state(state);
 
-	kfree(appletbdrm_state->request);
+	kvfree(appletbdrm_state->request);
 	kfree(appletbdrm_state->response);
 
 	__drm_gem_destroy_shadow_plane_state(&appletbdrm_state->base);
drivers/gpu/drm/udl/udl_main.c +1 -2
index 08a0e9480d70..17950fe3a0ec 100644
@@ -285,13 +285,12 @@ static struct urb *udl_get_urb_locked(struct udl_device *udl, long timeout)
 	return unode->urb;
 }
 
-#define GET_URB_TIMEOUT	HZ
 struct urb *udl_get_urb(struct udl_device *udl)
 {
 	struct urb *urb;
 
 	spin_lock_irq(&udl->urbs.lock);
-	urb = udl_get_urb_locked(udl, GET_URB_TIMEOUT);
+	urb = udl_get_urb_locked(udl, HZ * 2);
 	spin_unlock_irq(&udl->urbs.lock);
 	return urb;
 }
drivers/gpu/drm/udl/udl_modeset.c +4 -1
index 231e829bd709..1ca073a4ecb2 100644
@@ -21,6 +21,7 @@
 #include <drm/drm_gem_framebuffer_helper.h>
 #include <drm/drm_gem_shmem_helper.h>
 #include <drm/drm_modeset_helper_vtables.h>
+#include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_vblank.h>
 
@@ -342,8 +343,10 @@ static void udl_crtc_helper_atomic_enable(struct drm_crtc *crtc, struct drm_atom
 		return;
 
 	urb = udl_get_urb(udl);
-	if (!urb)
+	if (!urb) {
+		drm_err_ratelimited(dev, "get urb failed when enabling crtc\n");
 		goto out;
+	}
 
 	buf = (char *)urb->transfer_buffer;
 	buf = udl_vidreg_lock(buf);
drivers/gpu/drm/v3d/v3d_submit.c +5 -0
index 18f2bf1fe89f..fc74351efad5 100644
@@ -393,6 +393,11 @@ v3d_get_multisync_submit_deps(struct drm_file *file_priv,
 	if (multisync.pad)
 		return -EINVAL;
 
+	if (!multisync.in_sync_count && !multisync.out_sync_count) {
+		drm_dbg(&v3d->drm, "Empty multisync extension\n");
+		return -EINVAL;
+	}
+
 	ret = v3d_get_multisync_post_deps(file_priv, se, multisync.out_sync_count,
 					  multisync.out_syncs);
 	if (ret)
drivers/gpu/drm/xe/display/xe_hdcp_gsc.c +10 -2
index 29c72aa4b0d2..33494b86205d 100644
@@ -37,9 +37,17 @@ static bool intel_hdcp_gsc_check_status(struct drm_device *drm)
 	struct xe_device *xe = to_xe_device(drm);
 	struct xe_tile *tile = xe_device_get_root_tile(xe);
 	struct xe_gt *gt = tile->media_gt;
-	struct xe_gsc *gsc = &gt->uc.gsc;
+	struct xe_gsc *gsc;
+
+	if (!gt) {
+		drm_dbg_kms(&xe->drm,
+			    "not checking GSC status for HDCP2.x: media GT not present or disabled\n");
+		return false;
+	}
+
+	gsc = &gt->uc.gsc;
 
-	if (!gsc || !xe_uc_fw_is_available(&gsc->fw)) {
+	if (!xe_uc_fw_is_available(&gsc->fw)) {
 		drm_dbg_kms(&xe->drm,
 			    "GSC Components not ready for HDCP2.x\n");
 		return false;
drivers/gpu/drm/xe/xe_bo.c +6 -2
index 29fffc81f240..8a182611ddad 100644
@@ -2154,8 +2154,10 @@ struct xe_bo *xe_bo_init_locked(struct xe_device *xe, struct xe_bo *bo,
 	}
 
 	/* XE_BO_FLAG_GGTTx requires XE_BO_FLAG_GGTT also be set */
-	if ((flags & XE_BO_FLAG_GGTT_ALL) && !(flags & XE_BO_FLAG_GGTT))
+	if ((flags & XE_BO_FLAG_GGTT_ALL) && !(flags & XE_BO_FLAG_GGTT)) {
+		xe_bo_free(bo);
 		return ERR_PTR(-EINVAL);
+	}
 
 	if (flags & (XE_BO_FLAG_VRAM_MASK | XE_BO_FLAG_STOLEN) &&
 	    !(flags & XE_BO_FLAG_IGNORE_MIN_PAGE_SIZE) &&
@@ -2174,8 +2176,10 @@ struct xe_bo *xe_bo_init_locked(struct xe_device *xe, struct xe_bo *bo,
 		alignment = SZ_4K >> PAGE_SHIFT;
 	}
 
-	if (type == ttm_bo_type_device && aligned_size != size)
+	if (type == ttm_bo_type_device && aligned_size != size) {
+		xe_bo_free(bo);
 		return ERR_PTR(-EINVAL);
+	}
 
 	if (!bo) {
 		bo = xe_bo_alloc();
drivers/gpu/drm/xe/xe_dma_buf.c +18 -5
index 7c74a31d4486..19a8aba33085 100644
@@ -238,6 +238,13 @@ struct dma_buf *xe_gem_prime_export(struct drm_gem_object *obj, int flags)
 	return buf;
 }
 
+/*
+ * Takes ownership of @storage: on success it is transferred to the returned
+ * drm_gem_object; on failure it is freed before returning the error.
+ * This matches the contract of xe_bo_init_locked() which frees @storage on
+ * its error paths, so callers need not (and must not) free @storage after
+ * this call.
+ */
 static struct drm_gem_object *
 xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage,
 		    struct dma_buf *dma_buf)
@@ -251,8 +258,10 @@ xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage,
 	int ret = 0;
 
 	dummy_obj = drm_gpuvm_resv_object_alloc(&xe->drm);
-	if (!dummy_obj)
+	if (!dummy_obj) {
+		xe_bo_free(storage);
 		return ERR_PTR(-ENOMEM);
+	}
 
 	dummy_obj->resv = resv;
 	xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {}, ret) {
@@ -261,6 +270,7 @@ xe_dma_buf_init_obj(struct drm_device *dev, struct xe_bo *storage,
 		if (ret)
 			break;
 
+		/* xe_bo_init_locked() frees storage on error */
 		bo = xe_bo_init_locked(xe, storage, NULL, resv, NULL, dma_buf->size,
 				       0, /* Will require 1way or 2way for vm_bind */
 				       ttm_bo_type_sg, XE_BO_FLAG_SYSTEM, &exec);
@@ -348,12 +358,15 @@ struct drm_gem_object *xe_gem_prime_import(struct drm_device *dev,
 		goto out_err;
 	}
 
-	/* Errors here will take care of freeing the bo. */
+	/*
+	 * xe_dma_buf_init_obj() takes ownership of bo on both success
+	 * and failure, so we must not touch bo after this call.
+	 */
 	obj = xe_dma_buf_init_obj(dev, bo, dma_buf);
-	if (IS_ERR(obj))
+	if (IS_ERR(obj)) {
+		dma_buf_detach(dma_buf, attach);
 		return obj;
-
-
+	}
 	get_dma_buf(dma_buf);
 	obj->import_attach = attach;
 	return obj;
drivers/gpu/drm/xe/xe_vm_madvise.c +47 -0

59 lines not on this page · raw message

drivers/hid/hid-appletb-kbd.c +36 -20

117 lines not on this page · raw message

drivers/hid/hid-playstation.c +4 -2
index 3c0db8f93c82..8d06ddff356a 100644
@@ -2378,7 +2378,8 @@ static int dualshock4_parse_report(struct ps_device *ps_dev, struct hid_report *
 			(struct dualshock4_input_report_usb *)data;
 
 		ds4_report = &usb->common;
-		num_touch_reports = usb->num_touch_reports;
+		num_touch_reports = min_t(u8, usb->num_touch_reports,
+					  ARRAY_SIZE(usb->touch_reports));
 		touch_reports = usb->touch_reports;
 	} else if (hdev->bus == BUS_BLUETOOTH && report->id == DS4_INPUT_REPORT_BT &&
 		   size == DS4_INPUT_REPORT_BT_SIZE) {
@@ -2392,7 +2393,8 @@ static int dualshock4_parse_report(struct ps_device *ps_dev, struct hid_report *
 		}
 
 		ds4_report = &bt->common;
-		num_touch_reports = bt->num_touch_reports;
+		num_touch_reports = min_t(u8, bt->num_touch_reports,
+					  ARRAY_SIZE(bt->touch_reports));
 		touch_reports = bt->touch_reports;
 	} else if (hdev->bus == BUS_BLUETOOTH &&
 		   report->id == DS4_INPUT_REPORT_BT_MINIMAL &&
drivers/hid/usbhid/hid-pidff.c +5 -2
index fbf3dbc92e66..fad166ab21d6 100644
@@ -11,6 +11,7 @@
 #include "hid-pidff.h"
 #include <linux/hid.h>
 #include <linux/input.h>
+#include <linux/math64.h>
 #include <linux/minmax.h>
 #include <linux/slab.h>
 #include <linux/usb.h>
@@ -325,8 +326,10 @@ static s32 pidff_clamp(s32 i, struct hid_field *field)
  */
 static int pidff_rescale(int i, int max, struct hid_field *field)
 {
-	return i * (field->logical_maximum - field->logical_minimum) / max +
-	       field->logical_minimum;
+	/* 64 bits needed for big values during rescale */
+	s64 result = field->logical_maximum - field->logical_minimum;
+
+	return div_s64(result * i, max) + field->logical_minimum;
 }
 
 /*
drivers/media/common/videobuf2/videobuf2-dma-sg.c +1 -0
index 982021d547e5..b1d0695cda26 100644
@@ -345,6 +345,7 @@ static int vb2_dma_sg_mmap(void *buf_priv, struct vm_area_struct *vma)
 		return err;
 	}
 
+	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	/*
 	 * Use common vm_area operations to track buffer refcount.
 	 */
drivers/media/dvb-frontends/dib8000.c +2 -2
index ebef27bcc989..d291113291e0 100644
@@ -2695,7 +2695,7 @@ static void dib8000_viterbi_state(struct dib8000_state *state, u8 onoff)
 
 static void dib8000_set_dds(struct dib8000_state *state, s32 offset_khz)
 {
-	s16 unit_khz_dds_val;
+	s32 unit_khz_dds_val;
 	u32 abs_offset_khz = abs(offset_khz);
 	u32 dds = state->cfg.pll->ifreq & 0x1ffffff;
 	u8 invert = !!(state->cfg.pll->ifreq & (1 << 25));
@@ -2716,7 +2716,7 @@ static void dib8000_set_dds(struct dib8000_state *state, s32 offset_khz)
 			dds = (1<<26) - dds;
 	} else {
 		ratio = 2;
-		unit_khz_dds_val = (u16) (67108864 / state->cfg.pll->internal);
+		unit_khz_dds_val = 67108864 / state->cfg.pll->internal;
 
 		if (offset_khz < 0)
 			unit_khz_dds_val *= -1;
drivers/media/i2c/imx283.c +10 -5
index 8ab63ad8f385..1be6164c2d15 100644
@@ -129,7 +129,8 @@
 
 /* Master Mode Operation Control */
 #define IMX283_REG_XMSTA		CCI_REG8(0x3105)
-#define   IMX283_XMSTA			BIT(0)
+#define   IMX283_XMSTA_START		0
+#define   IMX283_XMSTA_STOP		BIT(0)
 
 #define IMX283_REG_SYNCDRV		CCI_REG8(0x3107)
 #define   IMX283_SYNCDRV_XHS_XVS	(0xa0 | 0x02)
@@ -1023,8 +1024,6 @@ static int imx283_standby_cancel(struct imx283 *imx283)
 	usleep_range(19000, 20000);
 
 	cci_write(imx283->cci, IMX283_REG_CLAMP, IMX283_CLPSQRST, &ret);
-	cci_write(imx283->cci, IMX283_REG_XMSTA, 0, &ret);
-	cci_write(imx283->cci, IMX283_REG_SYNCDRV, IMX283_SYNCDRV_XHS_XVS, &ret);
 
 	return ret;
 }
@@ -1117,6 +1116,10 @@ static int imx283_start_streaming(struct imx283 *imx283,
 	/* Apply customized values from controls (HMAX/VMAX/SHR) */
 	ret =  __v4l2_ctrl_handler_setup(imx283->sd.ctrl_handler);
 
+	/* Start master mode */
+	cci_write(imx283->cci, IMX283_REG_XMSTA, IMX283_XMSTA_START, &ret);
+	cci_write(imx283->cci, IMX283_REG_SYNCDRV, IMX283_SYNCDRV_XHS_XVS, &ret);
+
 	return ret;
 }
 
@@ -1153,12 +1156,14 @@ static int imx283_disable_streams(struct v4l2_subdev *sd,
 				  u64 streams_mask)
 {
 	struct imx283 *imx283 = to_imx283(sd);
-	int ret;
+	int ret = 0;
 
 	if (pad != IMAGE_PAD)
 		return -EINVAL;
 
-	ret = cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STBLOGIC, NULL);
+	cci_write(imx283->cci, IMX283_REG_XMSTA, IMX283_XMSTA_STOP, &ret);
+	cci_write(imx283->cci, IMX283_REG_STANDBY, IMX283_STANDBY, &ret);
+
 	if (ret)
 		dev_err(imx283->dev, "Failed to stop stream\n");
 
drivers/media/i2c/imx412.c +1 -1
index b3826f803547..aa63dfc34918 100644
@@ -925,7 +925,7 @@ static int imx412_parse_hw_config(struct imx412 *imx412)
 
 	/* Request optional reset pin */
 	imx412->reset_gpio = devm_gpiod_get_optional(imx412->dev, "reset",
-						     GPIOD_OUT_LOW);
+						     GPIOD_OUT_HIGH);
 	if (IS_ERR(imx412->reset_gpio)) {
 		dev_err(imx412->dev, "failed to get reset gpio %pe\n",
 			imx412->reset_gpio);
drivers/media/i2c/ov08d10.c +10 -11
index 43ec2a1f2fcf..5e1b8b58b3d6 100644
@@ -217,7 +217,7 @@ static const struct ov08d10_reg lane_2_mode_3280x2460[] = {
 	{0x9a, 0x30},
 	{0xa8, 0x02},
 	{0xfd, 0x02},
-	{0xa1, 0x01},
+	{0xa1, 0x00},
 	{0xa2, 0x09},
 	{0xa3, 0x9c},
 	{0xa5, 0x00},
@@ -335,7 +335,7 @@ static const struct ov08d10_reg lane_2_mode_3264x2448[] = {
 	{0x9a, 0x30},
 	{0xa8, 0x02},
 	{0xfd, 0x02},
-	{0xa1, 0x09},
+	{0xa1, 0x08},
 	{0xa2, 0x09},
 	{0xa3, 0x90},
 	{0xa5, 0x08},
@@ -467,7 +467,7 @@ static const struct ov08d10_reg lane_2_mode_1632x1224[] = {
 	{0xaa, 0xd0},
 	{0xab, 0x06},
 	{0xac, 0x68},
-	{0xa1, 0x09},
+	{0xa1, 0x04},
 	{0xa2, 0x04},
 	{0xa3, 0xc8},
 	{0xa5, 0x04},
@@ -613,8 +613,8 @@ static const struct ov08d10_lane_cfg lane_cfg_2 = {
 static u32 ov08d10_get_format_code(struct ov08d10 *ov08d10)
 {
 	static const u32 codes[2][2] = {
-		{ MEDIA_BUS_FMT_SGRBG10_1X10, MEDIA_BUS_FMT_SRGGB10_1X10},
-		{ MEDIA_BUS_FMT_SBGGR10_1X10, MEDIA_BUS_FMT_SGBRG10_1X10},
+		{ MEDIA_BUS_FMT_SBGGR10_1X10, MEDIA_BUS_FMT_SGBRG10_1X10 },
+		{ MEDIA_BUS_FMT_SGRBG10_1X10, MEDIA_BUS_FMT_SRGGB10_1X10 },
 	};
 
 	return codes[ov08d10->vflip->val][ov08d10->hflip->val];
@@ -1430,6 +1430,9 @@ static int ov08d10_probe(struct i2c_client *client)
 		goto probe_error_v4l2_ctrl_handler_free;
 	}
 
+	pm_runtime_set_active(ov08d10->dev);
+	pm_runtime_enable(ov08d10->dev);
+
 	ret = v4l2_async_register_subdev_sensor(&ov08d10->sd);
 	if (ret < 0) {
 		dev_err(ov08d10->dev, "failed to register V4L2 subdev: %d",
@@ -1437,17 +1440,13 @@ static int ov08d10_probe(struct i2c_client *client)
 		goto probe_error_media_entity_cleanup;
 	}
 
-	/*
-	 * Device is already turned on by i2c-core with ACPI domain PM.
-	 * Enable runtime PM and turn off the device.
-	 */
-	pm_runtime_set_active(ov08d10->dev);
-	pm_runtime_enable(ov08d10->dev);
 	pm_runtime_idle(ov08d10->dev);
 
 	return 0;
 
 probe_error_media_entity_cleanup:
+	pm_runtime_disable(ov08d10->dev);
+	pm_runtime_set_suspended(ov08d10->dev);
 	media_entity_cleanup(&ov08d10->sd.entity);
 
 probe_error_v4l2_ctrl_handler_free:
drivers/media/i2c/ov5647.c +6 -6
index 6a46ef7233ac..db9bd2892140 100644
@@ -967,21 +967,21 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl)
 		break;
 	case V4L2_CID_AUTOGAIN:
 		/* Non-zero turns on AGC by clearing bit 1.*/
-		return cci_update_bits(sensor->regmap, OV5647_REG_AEC_AGC, BIT(1),
-				       ctrl->val ? 0 : BIT(1), NULL);
+		ret = cci_update_bits(sensor->regmap, OV5647_REG_AEC_AGC, BIT(1),
+				      ctrl->val ? 0 : BIT(1), NULL);
 		break;
 	case V4L2_CID_EXPOSURE_AUTO:
 		/*
 		 * Everything except V4L2_EXPOSURE_MANUAL turns on AEC by
 		 * clearing bit 0.
 		 */
-		return cci_update_bits(sensor->regmap, OV5647_REG_AEC_AGC, BIT(0),
-				       ctrl->val == V4L2_EXPOSURE_MANUAL ? BIT(0) : 0, NULL);
+		ret = cci_update_bits(sensor->regmap, OV5647_REG_AEC_AGC, BIT(0),
+				      ctrl->val == V4L2_EXPOSURE_MANUAL ? BIT(0) : 0, NULL);
 		break;
 	case V4L2_CID_ANALOGUE_GAIN:
 		/* 10 bits of gain, 2 in the high register. */
-		return cci_write(sensor->regmap, OV5647_REG_GAIN,
-				 ctrl->val & 0x3ff, NULL);
+		ret = cci_write(sensor->regmap, OV5647_REG_GAIN,
+				ctrl->val & 0x3ff, NULL);
 		break;
 	case V4L2_CID_EXPOSURE:
 		/*
drivers/media/i2c/ov8856.c +8 -2
index e2998cfa0d18..dd01e1d515ff 100644
@@ -1951,12 +1951,18 @@ static int ov8856_init_controls(struct ov8856 *ov8856)
 			  V4L2_CID_HFLIP, 0, 1, 1, 0);
 	v4l2_ctrl_new_std(ctrl_hdlr, &ov8856_ctrl_ops,
 			  V4L2_CID_VFLIP, 0, 1, 1, 0);
-	if (ctrl_hdlr->error)
-		return ctrl_hdlr->error;
+	if (ctrl_hdlr->error) {
+		ret = ctrl_hdlr->error;
+		goto err_ctrl_handler_free;
+	}
 
 	ov8856->sd.ctrl_handler = ctrl_hdlr;
 
 	return 0;
+
+err_ctrl_handler_free:
+	v4l2_ctrl_handler_free(ctrl_hdlr);
+	return ret;
 }
 
 static void ov8856_update_pad_format(struct ov8856 *ov8856,
drivers/media/pci/intel/ipu-bridge.c +14 -0
index 32cc95a766b7..3028293eeb75 100644
@@ -104,6 +104,13 @@ static const struct ipu_sensor_config ipu_supported_sensors[] = {
  * without reporting a rotation of 180° in neither the SSDB nor the _PLD.
  */
 static const struct dmi_system_id upside_down_sensor_dmi_ids[] = {
+	{
+		.matches = {
+			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS 13 9340"),
+		},
+		.driver_data = "OVTI02C1",
+	},
 	{
 		.matches = {
 			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
@@ -111,6 +118,13 @@ static const struct dmi_system_id upside_down_sensor_dmi_ids[] = {
 		},
 		.driver_data = "OVTI02C1",
 	},
+	{
+		.matches = {
+			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "XPS 14 9440"),
+		},
+		.driver_data = "OVTI02C1",
+	},
 	{
 		.matches = {
 			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
drivers/media/pci/intel/ipu6/ipu6.c +1 -1
index 34f67f4f1bb5..d033d4618169 100644
@@ -686,7 +686,7 @@ static int ipu6_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 out_ipu6_rpm_put:
 	pm_runtime_put_sync(&isp->psys->auxdev.dev);
 out_ipu6_bus_del_devices:
-	if (isp->psys) {
+	if (!IS_ERR_OR_NULL(isp->psys)) {
 		ipu6_cpd_free_pkg_dir(isp->psys);
 		ipu6_buttress_unmap_fw_image(isp->psys, &isp->psys->fw_sgt);
 	}
drivers/media/pci/saa7164/saa7164-core.c +35 -12

78 lines not on this page · raw message

drivers/media/pci/zoran/zoran_card.c +1 -1
index d81facf735d9..f707bdc1fb0f 100644
@@ -1373,7 +1373,7 @@ static int zoran_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 		}
 		if (zr->codec->type != zr->card.video_codec) {
 			pci_err(pdev, "%s - wrong codec\n", __func__);
-			goto zr_unreg_videocodec;
+			goto zr_detach_codec;
 		}
 	}
 	if (zr->card.video_vfe != 0) {
drivers/media/platform/arm/mali-c55/mali-c55-common.h +2 -0
index 31c1deaca146..13a3e9dc4243 100644
@@ -306,5 +306,7 @@ bool mali_c55_pipeline_ready(struct mali_c55 *mali_c55);
 void mali_c55_stats_fill_buffer(struct mali_c55 *mali_c55,
 				enum mali_c55_config_spaces cfg_space);
 void mali_c55_params_write_config(struct mali_c55 *mali_c55);
+void mali_c55_params_init_isp_config(struct mali_c55 *mali_c55,
+				     const struct v4l2_subdev_state *state);
 
 #endif /* _MALI_C55_COMMON_H */
drivers/media/platform/arm/mali-c55/mali-c55-core.c +0 -35
index 43b834459ccf..c1a562cd214e 100644
@@ -663,41 +663,6 @@ static int mali_c55_init_context(struct mali_c55 *mali_c55,
 		      mali_c55->base + config_space_addrs[MALI_C55_CONFIG_PING],
 		      MALI_C55_CONFIG_SPACE_SIZE);
 
-	/*
-	 * Some features of the ISP need to be disabled by default and only
-	 * enabled at the same time as they're configured by a parameters buffer
-	 */
-
-	/* Bypass the sqrt and square compression and expansion modules */
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_1,
-				 MALI_C55_REG_BYPASS_1_FE_SQRT,
-				 MALI_C55_REG_BYPASS_1_FE_SQRT);
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BYPASS_3,
-				 MALI_C55_REG_BYPASS_3_SQUARE_BE,
-				 MALI_C55_REG_BYPASS_3_SQUARE_BE);
-
-	/* Bypass the temper module */
-	mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_2,
-			   MALI_C55_REG_BYPASS_2_TEMPER);
-
-	/* Disable the temper module's DMA read/write */
-	mali_c55_ctx_write(mali_c55, MALI_C55_REG_TEMPER_DMA_IO, 0x0);
-
-	/* Bypass the colour noise reduction  */
-	mali_c55_ctx_write(mali_c55, MALI_C55_REG_BYPASS_4,
-			   MALI_C55_REG_BYPASS_4_CNR);
-
-	/* Disable the sinter module */
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_SINTER_CONFIG,
-				 MALI_C55_SINTER_ENABLE_MASK, 0);
-
-	/* Disable the RGB Gamma module for each output */
-	mali_c55_ctx_write(mali_c55, MALI_C55_REG_FR_GAMMA_RGB_ENABLE, 0);
-	mali_c55_ctx_write(mali_c55, MALI_C55_REG_DS_GAMMA_RGB_ENABLE, 0);
-
-	/* Disable the colour correction matrix */
-	mali_c55_ctx_write(mali_c55, MALI_C55_REG_CCM_ENABLE, 0);
-
 	return 0;
 }
 
drivers/media/platform/arm/mali-c55/mali-c55-isp.c +5 -32
index 497f25fbdd13..4c0fd1ec741c 100644
@@ -112,9 +112,6 @@ static int mali_c55_isp_start(struct mali_c55 *mali_c55,
 			      const struct v4l2_subdev_state *state)
 {
 	struct mali_c55_context *ctx = mali_c55_get_active_context(mali_c55);
-	const struct mali_c55_isp_format_info *cfg;
-	const struct v4l2_mbus_framefmt *format;
-	const struct v4l2_rect *crop;
 	u32 val;
 	int ret;
 
@@ -122,35 +119,11 @@ static int mali_c55_isp_start(struct mali_c55 *mali_c55,
 			     MALI_C55_REG_MCU_CONFIG_WRITE_MASK,
 			     MALI_C55_REG_MCU_CONFIG_WRITE_PING);
 
-	/* Apply input windowing */
-	crop = v4l2_subdev_state_get_crop(state, MALI_C55_ISP_PAD_SINK_VIDEO);
-	format = v4l2_subdev_state_get_format(state,
-					      MALI_C55_ISP_PAD_SINK_VIDEO);
-	cfg = mali_c55_isp_get_mbus_config_by_code(format->code);
-
-	mali_c55_write(mali_c55, MALI_C55_REG_HC_START,
-		       MALI_C55_HC_START(crop->left));
-	mali_c55_write(mali_c55, MALI_C55_REG_HC_SIZE,
-		       MALI_C55_HC_SIZE(crop->width));
-	mali_c55_write(mali_c55, MALI_C55_REG_VC_START_SIZE,
-		       MALI_C55_VC_START(crop->top) |
-		       MALI_C55_VC_SIZE(crop->height));
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BASE_ADDR,
-				 MALI_C55_REG_ACTIVE_WIDTH_MASK, format->width);
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BASE_ADDR,
-				 MALI_C55_REG_ACTIVE_HEIGHT_MASK,
-				 format->height << 16);
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_BAYER_ORDER,
-				 MALI_C55_BAYER_ORDER_MASK, cfg->order);
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_INPUT_WIDTH,
-				 MALI_C55_INPUT_WIDTH_MASK,
-				 MALI_C55_INPUT_WIDTH_20BIT);
-
-	mali_c55_ctx_update_bits(mali_c55, MALI_C55_REG_ISP_RAW_BYPASS,
-				 MALI_C55_ISP_RAW_BYPASS_BYPASS_MASK,
-				 cfg->bypass ? MALI_C55_ISP_RAW_BYPASS_BYPASS_MASK :
-					     0x00);
-
+	/*
+	 * Apply default ISP configuration and the apply configurations from
+	 * the first available parameters buffer.
+	 */
+	mali_c55_params_init_isp_config(mali_c55, state);
 	mali_c55_params_write_config(mali_c55);
 	ret = mali_c55_config_write(ctx, MALI_C55_CONFIG_PING, true);
 	if (ret) {
drivers/media/platform/arm/mali-c55/mali-c55-params.c +122 -0

128 lines not on this page · raw message

drivers/media/platform/arm/mali-c55/mali-c55-registers.h +2 -2
index f5a148add1c8..f098effde7b4 100644
@@ -128,8 +128,8 @@ enum mali_c55_interrupts {
 #define MALI_C55_REG_BYPASS_3_SENSOR_OFFSET_PRE_SH	BIT(1)
 #define MALI_C55_REG_BYPASS_3_MESH_SHADING		BIT(3)
 #define MALI_C55_REG_BYPASS_3_WHITE_BALANCE		BIT(4)
-#define MALI_C55_REG_BYPASS_3_IRIDIX			BIT(5)
-#define MALI_C55_REG_BYPASS_3_IRIDIX_GAIN		BIT(6)
+#define MALI_C55_REG_BYPASS_3_IRIDIX_GAIN		BIT(5)
+#define MALI_C55_REG_BYPASS_3_IRIDIX			BIT(6)
 #define MALI_C55_REG_BYPASS_4				0x18ec0
 #define MALI_C55_REG_BYPASS_4_DEMOSAIC_RGB		BIT(1)
 #define MALI_C55_REG_BYPASS_4_PF_CORRECTION		BIT(3)
drivers/media/platform/chips-media/wave5/wave5-vdi.c +1 -0
index bb13267ced38..8f71920a8a35 100644
@@ -49,6 +49,7 @@ int wave5_vdi_init(struct device *dev)
 
 	if (!PRODUCT_CODE_W_SERIES(vpu_dev->product_code)) {
 		WARN_ONCE(1, "unsupported product code: 0x%x\n", vpu_dev->product_code);
+		wave5_vdi_free_dma_memory(vpu_dev, &vpu_dev->common_mem);
 		return -EOPNOTSUPP;
 	}
 
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c +13 -1
index 80e1831a42e0..d419076d7052 100644
@@ -1303,13 +1303,17 @@ static void wave5_vpu_dec_buf_queue_dst(struct vb2_buffer *vb)
 
 	if (vb2_is_streaming(vb->vb2_queue) && v4l2_m2m_dst_buf_is_last(m2m_ctx)) {
 		unsigned int i;
+		unsigned long flags;
 
 		for (i = 0; i < vb->num_planes; i++)
 			vb2_set_plane_payload(vb, i, 0);
 
 		vbuf->field = V4L2_FIELD_NONE;
 
+		spin_lock_irqsave(&inst->state_spinlock, flags);
 		send_eos_event(inst);
+		spin_unlock_irqrestore(&inst->state_spinlock, flags);
+
 		v4l2_m2m_last_buffer_done(m2m_ctx, vbuf);
 	} else {
 		v4l2_m2m_buf_queue(m2m_ctx, vbuf);
@@ -1462,8 +1466,13 @@ static int streamoff_output(struct vb2_queue *q)
 	inst->codec_info->dec_info.stream_rd_ptr = new_rd_ptr;
 	inst->codec_info->dec_info.stream_wr_ptr = new_rd_ptr;
 
-	if (v4l2_m2m_has_stopped(m2m_ctx))
+	if (v4l2_m2m_has_stopped(m2m_ctx)) {
+		unsigned long flags;
+
+		spin_lock_irqsave(&inst->state_spinlock, flags);
 		send_eos_event(inst);
+		spin_unlock_irqrestore(&inst->state_spinlock, flags);
+	}
 
 	/* streamoff on output cancels any draining operation */
 	inst->eos = false;
@@ -1584,6 +1593,7 @@ static int initialize_sequence(struct vpu_instance *inst)
 {
 	struct dec_initial_info initial_info;
 	int ret = 0;
+	unsigned long flags;
 
 	memset(&initial_info, 0, sizeof(struct dec_initial_info));
 
@@ -1605,7 +1615,9 @@ static int initialize_sequence(struct vpu_instance *inst)
 		return ret;
 	}
 
+	spin_lock_irqsave(&inst->state_spinlock, flags);
 	handle_dynamic_resolution_change(inst);
+	spin_unlock_irqrestore(&inst->state_spinlock, flags);
 
 	return 0;
 }
drivers/media/platform/nxp/imx8-isi/imx8-isi-video.c +1 -1
index 13682bf6e9f8..1be3a728f32f 100644
@@ -1410,7 +1410,7 @@ int mxc_isi_video_register(struct mxc_isi_pipe *pipe,
 	q->mem_ops = &vb2_dma_contig_memops;
 	q->buf_struct_size = sizeof(struct mxc_isi_buffer);
 	q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
-	q->min_queued_buffers = 2;
+	q->min_queued_buffers = 0;
 	q->lock = &video->lock;
 	q->dev = pipe->isi->dev;
 
drivers/media/platform/qcom/camss/camss-csid-gen3.c +3 -3
index 664245cf6eb0..bd059243790e 100644
@@ -48,9 +48,9 @@
 #define IS_CSID_690(csid)	((csid->camss->res->version == CAMSS_8775P) \
 				 || (csid->camss->res->version == CAMSS_8300))
 #define CSID_BUF_DONE_IRQ_STATUS	0x8C
-#define BUF_DONE_IRQ_STATUS_RDI_OFFSET  (csid_is_lite(csid) ?\
-						1 : (IS_CSID_690(csid) ?\
-						13 : 14))
+#define BUF_DONE_IRQ_STATUS_RDI_OFFSET  (csid_is_lite(csid) ? \
+						((IS_CSID_690(csid) ? 0 : 1)) : \
+						((IS_CSID_690(csid) ? 13 : 14)))
 #define CSID_BUF_DONE_IRQ_MASK		0x90
 #define CSID_BUF_DONE_IRQ_CLEAR		0x94
 #define CSID_BUF_DONE_IRQ_SET		0x98
drivers/media/platform/qcom/camss/camss.c +40 -40

175 lines not on this page · raw message

drivers/media/platform/qcom/iris/Kconfig +1 -1
index 3c803a05305a..5498f48362d1 100644
@@ -3,7 +3,7 @@ config VIDEO_QCOM_IRIS
         depends on VIDEO_DEV
         depends on ARCH_QCOM || COMPILE_TEST
         select V4L2_MEM2MEM_DEV
-        select QCOM_MDT_LOADER if ARCH_QCOM
+        select QCOM_MDT_LOADER
         select QCOM_SCM
         select VIDEOBUF2_DMA_CONTIG
         help
drivers/media/platform/qcom/iris/iris_buffer.c +4 -2
index 9151f43bc6b9..1d53c7414b75 100644
@@ -582,10 +582,12 @@ static int iris_release_internal_buffers(struct iris_inst *inst,
 			continue;
 		if (!(buffer->attr & BUF_ATTR_QUEUED))
 			continue;
+		buffer->attr |= BUF_ATTR_PENDING_RELEASE;
 		ret = hfi_ops->session_release_buf(inst, buffer);
-		if (ret)
+		if (ret) {
+			buffer->attr &= ~BUF_ATTR_PENDING_RELEASE;
 			return ret;
-		buffer->attr |= BUF_ATTR_PENDING_RELEASE;
+		}
 	}
 
 	return 0;
drivers/media/platform/qcom/iris/iris_core.c +4 -0
index 8406c48d635b..dbaac01eb15a 100644
@@ -75,6 +75,10 @@ int iris_core_init(struct iris_core *core)
 	if (ret)
 		goto error_unload_fw;
 
+	ret = iris_vpu_switch_to_hwmode(core);
+	if (ret)
+		goto error_unload_fw;
+
 	ret = iris_hfi_core_init(core);
 	if (ret)
 		goto error_unload_fw;
drivers/media/platform/qcom/iris/iris_hfi_common.c +4 -0
index 92112eb16c11..621c66593d88 100644
@@ -159,6 +159,10 @@ int iris_hfi_pm_resume(struct iris_core *core)
 	if (ret)
 		goto err_suspend_hw;
 
+	ret = iris_vpu_switch_to_hwmode(core);
+	if (ret)
+		goto err_suspend_hw;
+
 	ret = ops->sys_interframe_powercollapse(core);
 	if (ret)
 		goto err_suspend_hw;
drivers/media/platform/qcom/iris/iris_hfi_queue.c +1 -1
index b3ed06297953..bf6db23b53e2 100644
@@ -263,7 +263,7 @@ int iris_hfi_queues_init(struct iris_core *core)
 					  GFP_KERNEL, DMA_ATTR_WRITE_COMBINE);
 	if (!core->sfr_vaddr) {
 		dev_err(core->dev, "sfr alloc and map failed\n");
-		dma_free_attrs(core->dev, sizeof(*q_tbl_hdr), core->iface_q_table_vaddr,
+		dma_free_attrs(core->dev, queue_size, core->iface_q_table_vaddr,
 			       core->iface_q_table_daddr, DMA_ATTR_WRITE_COMBINE);
 		return -ENOMEM;
 	}
drivers/media/platform/qcom/iris/iris_vdec.c +0 -6
index 719217399a30..99d544e2af4f 100644
@@ -61,12 +61,6 @@ int iris_vdec_inst_init(struct iris_inst *inst)
 	return iris_ctrls_init(inst);
 }
 
-void iris_vdec_inst_deinit(struct iris_inst *inst)
-{
-	kfree(inst->fmt_dst);
-	kfree(inst->fmt_src);
-}
-
 static const struct iris_fmt iris_vdec_formats_cap[] = {
 	[IRIS_FMT_NV12] = {
 		.pixfmt = V4L2_PIX_FMT_NV12,
drivers/media/platform/qcom/iris/iris_vdec.h +0 -1
index ec1ce55d1375..5123d2a340e1 100644
@@ -9,7 +9,6 @@
 struct iris_inst;
 
 int iris_vdec_inst_init(struct iris_inst *inst);
-void iris_vdec_inst_deinit(struct iris_inst *inst);
 int iris_vdec_enum_fmt(struct iris_inst *inst, struct v4l2_fmtdesc *f);
 int iris_vdec_try_fmt(struct iris_inst *inst, struct v4l2_format *f);
 int iris_vdec_s_fmt(struct iris_inst *inst, struct v4l2_format *f);
drivers/media/platform/qcom/iris/iris_venc.c +0 -6
index aa27b22704eb..4d886769d958 100644
@@ -79,12 +79,6 @@ int iris_venc_inst_init(struct iris_inst *inst)
 	return iris_ctrls_init(inst);
 }
 
-void iris_venc_inst_deinit(struct iris_inst *inst)
-{
-	kfree(inst->fmt_dst);
-	kfree(inst->fmt_src);
-}
-
 static const struct iris_fmt iris_venc_formats_cap[] = {
 	[IRIS_FMT_H264] = {
 		.pixfmt = V4L2_PIX_FMT_H264,
drivers/media/platform/qcom/iris/iris_venc.h +0 -1
index c4db7433da53..00c1716b2747 100644
@@ -9,7 +9,6 @@
 struct iris_inst;
 
 int iris_venc_inst_init(struct iris_inst *inst);
-void iris_venc_inst_deinit(struct iris_inst *inst);
 int iris_venc_enum_fmt(struct iris_inst *inst, struct v4l2_fmtdesc *f);
 int iris_venc_try_fmt(struct iris_inst *inst, struct v4l2_format *f);
 int iris_venc_s_fmt(struct iris_inst *inst, struct v4l2_format *f);
drivers/media/platform/qcom/iris/iris_vidc.c +2 -4
index bd38d84c9cc7..5eb1786b0737 100644
@@ -289,10 +289,6 @@ int iris_close(struct file *filp)
 	v4l2_m2m_ctx_release(inst->m2m_ctx);
 	v4l2_m2m_release(inst->m2m_dev);
 	mutex_lock(&inst->lock);
-	if (inst->domain == DECODER)
-		iris_vdec_inst_deinit(inst);
-	else if (inst->domain == ENCODER)
-		iris_venc_inst_deinit(inst);
 	iris_session_close(inst);
 	iris_inst_change_state(inst, IRIS_INST_DEINIT);
 	iris_v4l2_fh_deinit(inst, filp);
@@ -304,6 +300,8 @@ int iris_close(struct file *filp)
 	mutex_unlock(&inst->lock);
 	mutex_destroy(&inst->ctx_q_lock);
 	mutex_destroy(&inst->lock);
+	kfree(inst->fmt_src);
+	kfree(inst->fmt_dst);
 	kfree(inst);
 
 	return 0;
drivers/media/platform/qcom/iris/iris_vpu2.c +1 -0
index 9c103a2e4e4e..01ef40f38957 100644
@@ -44,4 +44,5 @@ const struct vpu_ops iris_vpu2_ops = {
 	.power_off_controller = iris_vpu_power_off_controller,
 	.power_on_controller = iris_vpu_power_on_controller,
 	.calc_freq = iris_vpu2_calc_freq,
+	.set_hwmode = iris_vpu_set_hwmode,
 };
drivers/media/platform/qcom/iris/iris_vpu3x.c +3 -6
index fe4423b951b1..3dad47be78b5 100644
@@ -234,14 +234,8 @@ static int iris_vpu35_power_on_hw(struct iris_core *core)
 	if (ret)
 		goto err_disable_hw_free_clk;
 
-	ret = dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN], true);
-	if (ret)
-		goto err_disable_hw_clk;
-
 	return 0;
 
-err_disable_hw_clk:
-	iris_disable_unprepare_clock(core, IRIS_HW_CLK);
 err_disable_hw_free_clk:
 	iris_disable_unprepare_clock(core, IRIS_HW_FREERUN_CLK);
 err_disable_axi_clk:
@@ -266,6 +260,7 @@ const struct vpu_ops iris_vpu3_ops = {
 	.power_off_controller = iris_vpu_power_off_controller,
 	.power_on_controller = iris_vpu_power_on_controller,
 	.calc_freq = iris_vpu3x_vpu4x_calculate_frequency,
+	.set_hwmode = iris_vpu_set_hwmode,
 };
 
 const struct vpu_ops iris_vpu33_ops = {
@@ -274,6 +269,7 @@ const struct vpu_ops iris_vpu33_ops = {
 	.power_off_controller = iris_vpu33_power_off_controller,
 	.power_on_controller = iris_vpu_power_on_controller,
 	.calc_freq = iris_vpu3x_vpu4x_calculate_frequency,
+	.set_hwmode = iris_vpu_set_hwmode,
 };
 
 const struct vpu_ops iris_vpu35_ops = {
@@ -283,4 +279,5 @@ const struct vpu_ops iris_vpu35_ops = {
 	.power_on_controller = iris_vpu35_vpu4x_power_on_controller,
 	.program_bootup_registers = iris_vpu35_vpu4x_program_bootup_registers,
 	.calc_freq = iris_vpu3x_vpu4x_calculate_frequency,
+	.set_hwmode = iris_vpu_set_hwmode,
 };
drivers/media/platform/qcom/iris/iris_vpu4x.c +13 -11
index a8db02ce5c5e..02e100a4045f 100644
@@ -252,21 +252,10 @@ static int iris_vpu4x_power_on_hardware(struct iris_core *core)
 		ret = iris_vpu4x_power_on_apv(core);
 		if (ret)
 			goto disable_hw_clocks;
-
-		iris_vpu4x_ahb_sync_reset_apv(core);
 	}
 
-	iris_vpu4x_ahb_sync_reset_hardware(core);
-
-	ret = iris_vpu4x_genpd_set_hwmode(core, true, efuse_value);
-	if (ret)
-		goto disable_apv_power_domain;
-
 	return 0;
 
-disable_apv_power_domain:
-	if (!(efuse_value & DISABLE_VIDEO_APV_BIT))
-		iris_vpu4x_power_off_apv(core);
 disable_hw_clocks:
 	iris_vpu4x_disable_hardware_clocks(core, efuse_value);
 disable_vpp1_power_domain:
@@ -359,6 +348,18 @@ static void iris_vpu4x_power_off_hardware(struct iris_core *core)
 	iris_disable_power_domains(core, core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN]);
 }
 
+static int iris_vpu4x_set_hwmode(struct iris_core *core)
+{
+	u32 efuse_value = readl(core->reg_base + WRAPPER_EFUSE_MONITOR);
+
+	if (!(efuse_value & DISABLE_VIDEO_APV_BIT))
+		iris_vpu4x_ahb_sync_reset_apv(core);
+
+	iris_vpu4x_ahb_sync_reset_hardware(core);
+
+	return iris_vpu4x_genpd_set_hwmode(core, true, efuse_value);
+}
+
 const struct vpu_ops iris_vpu4x_ops = {
 	.power_off_hw = iris_vpu4x_power_off_hardware,
 	.power_on_hw = iris_vpu4x_power_on_hardware,
@@ -366,4 +367,5 @@ const struct vpu_ops iris_vpu4x_ops = {
 	.power_on_controller = iris_vpu35_vpu4x_power_on_controller,
 	.program_bootup_registers = iris_vpu35_vpu4x_program_bootup_registers,
 	.calc_freq = iris_vpu3x_vpu4x_calculate_frequency,
+	.set_hwmode = iris_vpu4x_set_hwmode,
 };
drivers/media/platform/qcom/iris/iris_vpu_buffer.h +1 -1
index 12640eb5ed8c..8c0d6b7b5de8 100644
@@ -67,7 +67,7 @@ struct iris_inst;
 #define SIZE_DOLBY_RPU_METADATA (41 * 1024)
 #define H264_CABAC_HDR_RATIO_HD_TOT	1
 #define H264_CABAC_RES_RATIO_HD_TOT	3
-#define H265D_MAX_SLICE	1200
+#define H265D_MAX_SLICE	3600
 #define SIZE_H265D_HW_PIC_T SIZE_H264D_HW_PIC_T
 #define H265_CABAC_HDR_RATIO_HD_TOT 2
 #define H265_CABAC_RES_RATIO_HD_TOT 2
drivers/media/platform/qcom/iris/iris_vpu_common.c +10 -6
index 548e5f1727fd..69e6126dc4d9 100644
@@ -292,14 +292,8 @@ int iris_vpu_power_on_hw(struct iris_core *core)
 	if (ret && ret != -ENOENT)
 		goto err_disable_hw_clock;
 
-	ret = dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN], true);
-	if (ret)
-		goto err_disable_hw_ahb_clock;
-
 	return 0;
 
-err_disable_hw_ahb_clock:
-	iris_disable_unprepare_clock(core, IRIS_HW_AHB_CLK);
 err_disable_hw_clock:
 	iris_disable_unprepare_clock(core, IRIS_HW_CLK);
 err_disable_power:
@@ -308,6 +302,16 @@ int iris_vpu_power_on_hw(struct iris_core *core)
 	return ret;
 }
 
+int iris_vpu_set_hwmode(struct iris_core *core)
+{
+	return dev_pm_genpd_set_hwmode(core->pmdomain_tbl->pd_devs[IRIS_HW_POWER_DOMAIN], true);
+}
+
+int iris_vpu_switch_to_hwmode(struct iris_core *core)
+{
+	return core->iris_platform_data->vpu_ops->set_hwmode(core);
+}
+
 int iris_vpu35_vpu4x_power_off_controller(struct iris_core *core)
 {
 	u32 clk_rst_tbl_size = core->iris_platform_data->clk_rst_tbl_size;
drivers/media/platform/qcom/iris/iris_vpu_common.h +3 -0
index f6dffc613b82..dee3b1349c5e 100644
@@ -21,6 +21,7 @@ struct vpu_ops {
 	int (*power_on_controller)(struct iris_core *core);
 	void (*program_bootup_registers)(struct iris_core *core);
 	u64 (*calc_freq)(struct iris_inst *inst, size_t data_size);
+	int (*set_hwmode)(struct iris_core *core);
 };
 
 int iris_vpu_boot_firmware(struct iris_core *core);
@@ -30,6 +31,8 @@ int iris_vpu_watchdog(struct iris_core *core, u32 intr_status);
 int iris_vpu_prepare_pc(struct iris_core *core);
 int iris_vpu_power_on_controller(struct iris_core *core);
 int iris_vpu_power_on_hw(struct iris_core *core);
+int iris_vpu_set_hwmode(struct iris_core *core);
+int iris_vpu_switch_to_hwmode(struct iris_core *core);
 int iris_vpu_power_on(struct iris_core *core);
 int iris_vpu_power_off_controller(struct iris_core *core);
 void iris_vpu_power_off_hw(struct iris_core *core);
drivers/media/platform/qcom/venus/Kconfig +1 -1
index ffb731ecd48c..63ee8c78dc6d 100644
@@ -4,7 +4,7 @@ config VIDEO_QCOM_VENUS
 	depends on VIDEO_DEV && QCOM_SMEM
 	depends on (ARCH_QCOM && ARM64 && IOMMU_API) || COMPILE_TEST
 	select OF_DYNAMIC if ARCH_QCOM
-	select QCOM_MDT_LOADER if ARCH_QCOM
+	select QCOM_MDT_LOADER
 	select QCOM_SCM
 	select VIDEOBUF2_DMA_CONTIG
 	select V4L2_MEM2MEM_DEV
drivers/media/platform/renesas/rcar-vin/rcar-dma.c +22 -0
index b619d1436a41..f9af9177e02f 100644
@@ -676,8 +676,30 @@ void rvin_crop_scale_comp(struct rvin_dev *vin)
 	if (vin->scaler)
 		vin->scaler(vin);
 
+	/*
+	 * VNIS_REG has four lowest bits always 0, i.e. the stride has to be
+	 * aligned to 16 bytes. This is done in rvin_format_bytesperline().
+	 */
+
 	fmt = rvin_format_from_pixel(vin, vin->format.pixelformat);
 	stride = vin->format.bytesperline / fmt->bpp;
+
+	/*
+	 * RAW8 format bpp is 1, but the hardware process RAW8 format in 2 pixel
+	 * units, so we need to divide the stride by 2.
+	 */
+	switch (vin->format.pixelformat) {
+	case V4L2_PIX_FMT_SBGGR8:
+	case V4L2_PIX_FMT_SGBRG8:
+	case V4L2_PIX_FMT_SGRBG8:
+	case V4L2_PIX_FMT_SRGGB8:
+	case V4L2_PIX_FMT_GREY:
+		stride /= 2;
+		break;
+	default:
+		break;
+	}
+
 	rvin_write(vin, stride, VNIS_REG);
 }
 
drivers/media/platform/renesas/rcar-vin/rcar-v4l2.c +12 -0
index 079dbaf016c2..9d45e11898c1 100644
@@ -155,6 +155,18 @@ static u32 rvin_format_bytesperline(struct rvin_dev *vin,
 	case V4L2_PIX_FMT_NV16:
 		align = 0x20;
 		break;
+	case V4L2_PIX_FMT_SBGGR8:
+	case V4L2_PIX_FMT_SGBRG8:
+	case V4L2_PIX_FMT_SGRBG8:
+	case V4L2_PIX_FMT_SRGGB8:
+	case V4L2_PIX_FMT_GREY:
+		/*
+		 * RAW8 format bpp is 1, but the hardware process RAW8 format in
+		 * 2 pixel units, and we need to align to 32 bytes. See
+		 * rvin_crop_scale_comp().
+		 */
+		align = 0x20;
+		break;
 	default:
 		align = 0x10;
 		break;
drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +19 -16
index bfe5b0c7045e..3580a57738a6 100644
@@ -149,24 +149,26 @@ static void rzv2h_ivc_transfer_buffer(struct work_struct *work)
 					     buffers.work);
 	struct rzv2h_ivc_buf *buf;
 
+	guard(spinlock_irqsave)(&ivc->spinlock);
+
+	if (ivc->vvalid_ifp)
+		return;
+
 	/* Setup buffers */
 	scoped_guard(spinlock_irqsave, &ivc->buffers.lock) {
 		buf = list_first_entry_or_null(&ivc->buffers.queue,
 					       struct rzv2h_ivc_buf, queue);
-	}
-
-	if (!buf)
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h +5 -3
index 4ef44c8b4656..049f223200e3 100644

Lines of this file are not shown. View the raw message.

drivers/media/platform/renesas/vsp1/vsp1_drv.c +6 -2
index 2de515c497eb..627b5046fa80 100644

Lines of this file are not shown. View the raw message.

drivers/media/platform/rockchip/rkcif/rkcif-interface.c +2 -1
index 523103872b7a..414a9980cf2e 100644

Lines of this file are not shown. View the raw message.

drivers/media/platform/rockchip/rkcif/rkcif-stream.c +1 -1
index f15bee4f7cd7..3130d420ad55 100644

Lines of this file are not shown. View the raw message.

drivers/media/platform/ti/omap3isp/ispvideo.c +1 -0
index 64e76e3576a8..b946c8087c77 100644

Lines of this file are not shown. View the raw message.

drivers/media/platform/ti/vpe/vip.c +1 -0
index a4b616a5ece7..0e91e87bda9b 100644

Lines of this file are not shown. View the raw message.

drivers/media/rc/streamzap.c +8 -4
index 5a18603f9a95..6587c64a9d93 100644

Lines of this file are not shown. View the raw message.

drivers/media/rc/xbox_remote.c +8 -1
index 3e3da70cf8da..e2ed2e2c2723 100644

Lines of this file are not shown. View the raw message.

drivers/media/usb/uvc/uvc_queue.c +1 -2
index 8b8f44b4a045..0eddd4f872ca 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/hp/hp-wmi.c +5 -0
index 988a0acc9622..62fd2fe0d8d0 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/act8945a-regulator.c +2 -1
index 24cbdd833863..5bbe2bce740e 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/bd9571mwv-regulator.c +2 -1
index 209beabb5c37..f4de24a281b1 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/bq257xx-regulator.c +1 -2
index dab8f1ab4450..711dbe045383 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/max77650-regulator.c +1 -1
index a809264c77fc..11b04a13f889 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/mt6357-regulator.c +1 -1
index 1eb69c7a6acb..09feb454ab6b 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/rk808-regulator.c +1 -2
index e66408f23bb6..1e956153427e 100644

Lines of this file are not shown. View the raw message.

drivers/regulator/s2dos05-regulator.c +1 -1
index 1463585c4565..a1c394ddbaff 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-amlogic-spisg.c +3 -1
index 9d568e385f05..e15d7112bb55 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-aspeed-smc.c +6 -3
index 9c286e534bf0..c21323e07d3c 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-at91-usart.c +7 -1
index 76eb3ba75ab1..79edc1cd13c0 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-atmel.c +7 -1
index 445d645585bf..42db85d7ff8e 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-bcm63xx.c +7 -1
index 47266bb23a33..40cd7efc4b54 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-bcmbca-hsspi.c +3 -1
index ece22260f570..4ea8cc784e9e 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-cadence-quadspi.c +20 -20
index 2ead419e896e..1b0d6186c7ef 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-cadence.c +18 -3
index caa7a57e6d27..891e2ba36958 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-cavium-octeon.c +7 -1
index 155085a053a1..b95bfa6a3013 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-cavium-thunderx.c +7 -1
index 99aac40a1bba..f1a9aa696c87 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-ch341.c +3 -4
index ded093566260..3eaa8f176f63 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-coldfire-qspi.c +8 -2
index fdf37636cb9f..b45f44de85dc 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-dln2.c +7 -1
index d90282960ab6..392f0d05f508 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-ep93xx.c +7 -1
index 90d5f3ea6508..db50018050e5 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-fsl-espi.c +9 -1
index 56270f8fdc17..45b9974ae911 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-fsl-spi.c +13 -1
index bf3fc3ce0cc2..1252c41c206f 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-img-spfi.c +7 -1
index 902fb64815c9..57625a3ce2f2 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-imx.c +1 -0
index a8d90c86a8a1..164167b593ef 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-lantiq-ssc.c +7 -1
index f83cb63c9d0c..75b9af8cb5db 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-meson-spicc.c +7 -1
index 57768da3205d..b80f9f457b66 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-mpc52xx.c +7 -2
index 05bbd3795e7d..924d820448fb 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-mpfs.c +3 -1
index 64d15a6188ac..989a379b0700 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-mt65xx.c +3 -1
index 0368a26bca9a..96f8555be983 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-mtk-nor.c +3 -1
index 1e5ec0840174..74f34537b02c 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-mxic.c +2 -1
index f9369c69911c..b0e7fc828a50 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-mxs.c +7 -1
index b3301c69e2de..0164e04d59a1 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-npcm-pspi.c +7 -1
index e60b3cc398ec..cffef0a5977d 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-omap2-mcspi.c +7 -1
index 2207e05c9d06..cd6d9bf9eaa4 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-orion.c +15 -1
index 7a2186b51b4c..a5ce970ff5a8 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-pic32-sqi.c +7 -1
index 051590038895..41662992dbe5 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-pic32.c +8 -3
index 369850d14313..70427e529945 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-pl022.c +7 -1
index c82cc522776d..e97ffcd13c62 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-qup.c +7 -1
index 6cbdcd060e8c..45d9b4cb75e4 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-rspi.c +8 -2
index c739c1998b4c..a8180dece716 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-s3c64xx.c +3 -1
index 96f39b5ae9df..37176e557099 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-sh-hspi.c +8 -2
index e03eaca1b1a7..1e3ca718ca73 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-sh-msiof.c +8 -2
index 7f3e08810560..f114b6313f4f 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-slave-mt27xx.c +9 -1
index ce889cb33228..7aedeaa5889d 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-sprd.c +6 -2
index 0f9fc320363c..fd3fd0ce122c 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-st-ssc4.c +7 -1
index b173ef70d77e..9c8099fe6e19 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-uniphier.c +10 -14
index 9e1d364a6198..eac6c3e8908b 100644

Lines of this file are not shown. View the raw message.

drivers/staging/media/atomisp/pci/atomisp_ioctl.c +4 -0
index a7f22de1c889..50366bf10f32 100644

Lines of this file are not shown. View the raw message.

drivers/staging/media/imx/imx-media-csi.c +24 -16
index fd7e37d803e7..55a7d8f38465 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/tcpm/tcpm.c +2 -0
index a3b04f0608c1..7612a078bdd1 100644

Lines of this file are not shown. View the raw message.

include/linux/cgroup-defs.h +2 -2
index 7f87399938fa..8e7afb5a5980 100644

Lines of this file are not shown. View the raw message.

include/linux/mm.h +1 -1
index 0ceba2c86d9c..2d6d268a2798 100644

Lines of this file are not shown. View the raw message.

io_uring/zcrx.c +9 -8
index af4b88e106ab..4eb08c832f0b 100644

Lines of this file are not shown. View the raw message.

kernel/cgroup/cgroup.c +120 -134

254 lines not on this page · raw message

kernel/liveupdate/kexec_handover.c +9 -4
index cc68a3692905..479c42e08b74 100644

Lines of this file are not shown. View the raw message.

kernel/sched/ext.c +10 -2
index c07996aeb2f4..9c7ff5179e4f 100644

Lines of this file are not shown. View the raw message.

mm/util.c +29 -22

51 lines not on this page · raw message

mm/vma.c +1 -2
index 30e8a2d254b8..5cd80cdcf82f 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/bat_iv_ogm.c +60 -25

85 lines not on this page · raw message

net/batman-adv/bridge_loop_avoidance.c +10 -1
index 51fe028b9088..cec11f1251d6 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/main.c +1 -0
index 3a35aadd8b41..a4d33ee0fda5 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/tp_meter.c +96 -20

116 lines not on this page · raw message

net/batman-adv/tp_meter.h +1 -0
index f0046d366eac..4e97cd10cd02 100644

Lines of this file are not shown. View the raw message.

net/batman-adv/types.h +4 -0
index 8fc5fe0e9b05..daa06f421154 100644

Lines of this file are not shown. View the raw message.

net/sctp/socket.c +9 -0
index 05fb00c9c335..48759da0a026 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/af_vsock.c +3 -3
index d912ed2f012a..08f4dfb9782c 100644

Lines of this file are not shown. View the raw message.

net/vmw_vsock/virtio_transport_common.c +19 -36

55 lines not on this page · raw message

tools/perf/pmu-events/Build +2 -2
index dc5f94862a3b..dc1df2d57ddc 100644

Lines of this file are not shown. View the raw message.

tools/testing/vma/include/dup.h +20 -21

41 lines not on this page · raw message

tools/testing/vma/include/stubs.h +2 -1
index 11192a6c6978..c56d96979d4d 100644

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.