lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <05bdc515-004e-4a45-bc5c-523be1c0fe3e@ideasonboard.com>
Date: Wed, 24 Sep 2025 12:33:53 +0300
From: Tomi Valkeinen <tomi.valkeinen@...asonboard.com>
To: Rishikesh Donadkar <r-donadkar@...com>, jai.luthra@...ux.dev,
 laurent.pinchart@...asonboard.com, mripard@...nel.org
Cc: y-abhilashchandra@...com, devarsht@...com, s-jain1@...com,
 vigneshr@...com, mchehab@...nel.org, robh@...nel.org, krzk+dt@...nel.org,
 p.zabel@...gutronix.de, conor+dt@...nel.org, sakari.ailus@...ux.intel.com,
 hverkuil-cisco@...all.nl, jai.luthra@...asonboard.com,
 changhuang.liang@...rfivetech.com, jack.zhu@...rfivetech.com,
 sjoerd@...labora.com, hverkuil+cisco@...nel.org,
 linux-kernel@...r.kernel.org, linux-media@...r.kernel.org,
 devicetree@...r.kernel.org
Subject: Re: [PATCH v7 00/16] media: cadence,ti: CSI2RX Multistream Support

Hi,

On 11/09/2025 13:28, Rishikesh Donadkar wrote:
> This series adds multi-stream support and PM support for Cadence CSI2RX
> and TI CSI2RX SHIM drivers.
> 
> PM patches are picked from:
> https://lore.kernel.org/all/20250902-ti_csi_pm-v2-0-59a3be199940@ideasonboard.com/
> 
> PATCH 01 :    Remove word size alignment restriction on frame width
> PATCH 02-07:  Support multiple DMA contexts/video nodes in TI CSI2RX
> PATCH 08-09:  Use get_frame_desc to propagate virtual channel
>               information across Cadence and TI CSI-RX subdevs
> PATCH 10-11:  Use new multi-stream APIs across the drivers to support
>               multiplexed cameras from sources like UB960 (FPDLink)
> PATCH 12:     Optimize stream on by submitting all queued buffers to DMA
> PATCH 13:     Change the drain architecture to support multi-stream and
>               implement completion barriers for last drain.
> PATCH 14-16:  Runtime PM and System PM support for CSI-RX.
> 
> Testing for this series has been done on top of media tree with 4x IMX219
> camera modules connected to TI's AM62A using V3 Link fusion mini board.
> 
> Overlay and defconfig changes for the same can be found below:
> https://github.com/RISHI27-dot/linux/commits/u/multistream_v7/

I made a quick test with this branch, am62a-sk with fpdlink, but:

[  214.387480] ======================================================
[  214.393648] WARNING: possible circular locking dependency detected
[  214.399817] 6.17.0-rc1+ #1 Not tainted
[  214.403557] ------------------------------------------------------
[  214.409723] python3/408 is trying to acquire lock:
[  214.414506] ffff0008079e00f8 (&csi->mutex){+.+.}-{4:4}, at:
ti_csi2rx_sd_enable_streams+0x80/0xc0 [j721e_csi2rx]
[  214.424701]
[  214.424701] but task is already holding lock:
[  214.430520] ffff000803de5568
(j721e_csi2rx:1471:sd->active_state->lock){+.+.}-{4:4}, at:
v4l2_subdev_enable_streams+0xc0/0x
3a0 [videodev]
[  214.442977]
[  214.442977] which lock already depends on the new lock.
[  214.442977]
[  214.451135]
[  214.451135] the existing dependency chain (in reverse order) is:
[  214.458601]
[  214.458601] -> #1 (j721e_csi2rx:1471:sd->active_state->lock){+.+.}-{4:4}:
[  214.466864]        __mutex_lock+0xc8/0x8a8
[  214.470959]        mutex_lock_nested+0x2c/0x40
[  214.475395]        ti_csi2rx_get_route+0x50/0xe8 [j721e_csi2rx]
[  214.481312]        ti_csi2rx_get_vc.isra.0+0xe4/0x1b8 [j721e_csi2rx]
[  214.487661]        ti_csi2rx_start_streaming+0xe8/0x250 [j721e_csi2rx]
[  214.494182]        vb2_start_streaming+0x74/0x190 [videobuf2_common]
[  214.500552]        vb2_core_streamon+0x108/0x1d8 [videobuf2_common]
[  214.506829]        vb2_ioctl_streamon+0x54/0xa0 [videobuf2_v4l2]
[  214.512842]        v4l_streamon+0x2c/0x40 [videodev]
[  214.517890]        __video_do_ioctl+0x2e0/0x3d8 [videodev]
[  214.523447]        video_usercopy+0x310/0x870 [videodev]
[  214.528831]        video_ioctl2+0x20/0x38 [videodev]
[  214.533869]        v4l2_ioctl+0x48/0x70 [videodev]
[  214.538730]        __arm64_sys_ioctl+0xb4/0x118
[  214.543259]        invoke_syscall+0x50/0x120
[  214.547524]        el0_svc_common.constprop.0+0x48/0xf0
[  214.552740]        do_el0_svc+0x24/0x38
[  214.556570]        el0_svc+0x4c/0x178
[  214.560229]        el0t_64_sync_handler+0xa0/0xe8
[  214.564926]        el0t_64_sync+0x1a4/0x1a8
[  214.569104]
[  214.569104] -> #0 (&csi->mutex){+.+.}-{4:4}:
[  214.574855]        __lock_acquire+0x136c/0x1f78
[  214.579381]        lock_acquire+0x250/0x350
[  214.583557]        __mutex_lock+0xc8/0x8a8
[  214.587647]        mutex_lock_nested+0x2c/0x40
[  214.592082]        ti_csi2rx_sd_enable_streams+0x80/0xc0 [j721e_csi2rx]
[  214.598694]        v4l2_subdev_enable_streams+0x208/0x3a0 [videodev]
[  214.605128]        ti_csi2rx_start_streaming+0x158/0x250 [j721e_csi2rx]
[  214.611738]        vb2_start_streaming+0x74/0x190 [videobuf2_common]
[  214.618107]        vb2_core_streamon+0x108/0x1d8 [videobuf2_common]
[  214.624383]        vb2_ioctl_streamon+0x54/0xa0 [videobuf2_v4l2]
[  214.630395]        v4l_streamon+0x2c/0x40 [videodev]
[  214.635436]        __video_do_ioctl+0x2e0/0x3d8 [videodev]
[  214.640994]        video_usercopy+0x310/0x870 [videodev]
[  214.646379]        video_ioctl2+0x20/0x38 [videodev]
[  214.651415]        v4l2_ioctl+0x48/0x70 [videodev]
[  214.656280]        __arm64_sys_ioctl+0xb4/0x118
[  214.660807]        invoke_syscall+0x50/0x120
[  214.665071]        el0_svc_common.constprop.0+0x48/0xf0
[  214.670288]        do_el0_svc+0x24/0x38
[  214.674117]        el0_svc+0x4c/0x178
[  214.677775]        el0t_64_sync_handler+0xa0/0xe8
[  214.682472]        el0t_64_sync+0x1a4/0x1a8
[  214.686649]
[  214.686649] other info that might help us debug this:
[  214.686649]
[  214.694637]  Possible unsafe locking scenario:
[  214.694637]
[  214.700543]        CPU0                    CPU1
[  214.705061]        ----                    ----
[  214.709579]   lock(j721e_csi2rx:1471:sd->active_state->lock);
[  214.715320]                                lock(&csi->mutex);
[  214.721060]
lock(j721e_csi2rx:1471:sd->active_state->lock);
[  214.729314]   lock(&csi->mutex);
[  214.732540]
[  214.732540]  *** DEADLOCK ***
[  214.732540]
[  214.738447] 2 locks held by python3/408:
[  214.742361]  #0: ffff0008079e18f0 (&ctx->mutex){+.+.}-{4:4}, at:
__video_do_ioctl+0xe8/0x3d8 [videodev]
[  214.751844]  #1: ffff000803de5568
(j721e_csi2rx:1471:sd->active_state->lock){+.+.}-{4:4}, at:
v4l2_subdev_enable_streams+0x
c0/0x3a0 [videodev]
[  214.764705]
[  214.764705] stack backtrace:
[  214.769054] CPU: 2 UID: 0 PID: 408 Comm: python3 Not tainted
6.17.0-rc1+ #1 PREEMPT
[  214.769064] Hardware name: Texas Instruments AM62A7 SK (DT)
[  214.769068] Call trace:
[  214.769073]  show_stack+0x20/0x38 (C)
[  214.769084]  dump_stack_lvl+0x8c/0xd0
[  214.769094]  dump_stack+0x18/0x28
[  214.769102]  print_circular_bug+0x28c/0x370
[  214.769110]  check_noncircular+0x170/0x188
[  214.769117]  __lock_acquire+0x136c/0x1f78
[  214.769125]  lock_acquire+0x250/0x350
[  214.769133]  __mutex_lock+0xc8/0x8a8
[  214.769141]  mutex_lock_nested+0x2c/0x40
[  214.769148]  ti_csi2rx_sd_enable_streams+0x80/0xc0 [j721e_csi2rx]
[  214.769164]  v4l2_subdev_enable_streams+0x208/0x3a0 [videodev]
[  214.769255]  ti_csi2rx_start_streaming+0x158/0x250 [j721e_csi2rx]
[  214.769268]  vb2_start_streaming+0x74/0x190 [videobuf2_common]
[  214.769298]  vb2_core_streamon+0x108/0x1d8 [videobuf2_common]
[  214.769326]  vb2_ioctl_streamon+0x54/0xa0 [videobuf2_v4l2]
[  214.769348]  v4l_streamon+0x2c/0x40 [videodev]
[  214.769438]  __video_do_ioctl+0x2e0/0x3d8 [videodev]
[  214.769528]  video_usercopy+0x310/0x870 [videodev]
[  214.769617]  video_ioctl2+0x20/0x38 [videodev]
[  214.769704]  v4l2_ioctl+0x48/0x70 [videodev]
[  214.769793]  __arm64_sys_ioctl+0xb4/0x118
[  214.769804]  invoke_syscall+0x50/0x120
[  214.769812]  el0_svc_common.constprop.0+0x48/0xf0
[  214.769819]  do_el0_svc+0x24/0x38
[  214.769826]  el0_svc+0x4c/0x178
[  214.769835]  el0t_64_sync_handler+0xa0/0xe8
[  214.769844]  el0t_64_sync+0x1a4/0x1a8

 Tomi


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ