From nobody Tue Apr 7 11:40:01 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B9DC9377EA9; Fri, 13 Mar 2026 11:14:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400454; cv=none; b=bnkvstGIeq5X/xgL3v6XWaDVTcfh1msVqXCq8iv1sLTWBVltC4r5fiBiP/FCNw/++JxClvbgRuHK62VboAYdC+JZXK7mr2sA0MeIOSj1Q3oPfA8tV1gh0JVCFJJ2XMNIdjFQHM4glcAwkmLjH8UHmv/jPFkUwjk6ZmTklwldIUU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400454; c=relaxed/simple; bh=PBi8P5i1khh9PfffQeRZH7xdA4AlUrisQPWAXLjqUpk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T55ssle7aOvlh/0bfmauRykw97anG0T2uuQ9tsLEKf3j736TPSUjE6b/Od44i66dc33oSwTFJsTfK2JLyttF/g4CdS+tV1GWo7Je6n62HxbWoS846n4dg8OVBuAt536e/T6Wmx/cvoOqNzuqI2Hm3vlo06uw+cPWpzM+2yt35JI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=IttCBsXG; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="IttCBsXG" Received: from [192.168.224.131] (unknown [37.159.92.229]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 1AEFD1356; Fri, 13 Mar 2026 12:13:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773400383; bh=PBi8P5i1khh9PfffQeRZH7xdA4AlUrisQPWAXLjqUpk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=IttCBsXG3u4XP+j0+Ajel/3T5VM52K1N5XtUIzAXzh8wDmKZjlKK+Vflf5O1Vjjwd Y1Xo0N0EVfXCUKNiSOi3O38MytI9lUe9o1F24WN3BREqDA0nmFYFhpdQLWmB6dFxwq jvqhJsx+T4DEcJ+L1F7ipkLAOtx29RDefQAwkh5M= From: Jacopo Mondi Date: Fri, 13 Mar 2026 12:13:57 +0100 Subject: [PATCH 1/7] media: rzv2h-ivc: Revise default VBLANK formula Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-ivc-fixes-v7-0-v1-1-cb0714cd1279@ideasonboard.com> References: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> In-Reply-To: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> To: Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , Daniel Scally , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1321; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=aADwAwORVgNkbQP67xlyDy3fqg+eAiV6IKfDCHUXOxk=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps/GAKwcccsUu8ka2xR9jDs44/l4lbAvmvq2CF fmDPgfLsSWJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPxgAAKCRByNAaPFqFW PDtkD/4nHAmPHgF3CzH2MQnkQbHy9qk3nsjCNuvYOBVtWFiC/VYIcDaQ95YcVuefVHBXXUmdYE8 GM+bGnxv31SENE0lczHl4aoI9GPV6OKoEpGLFoRpoSSytPAre98hW3+zMPpMMEAmrgFOPLLpSC5 /sdzvFlcCuqOHh0LvIOUM7l4e56tvGVr/ZDaIGV/CGXM8PvO7WQ87rbYTWx85dh4GiYcFDQMSrG Vuw5IqTAPT2rKLpvtkk17frf1ljAPUqP5bvv4osCxpgfJPZgt+lHSKu/C/W1jZyuviAsoy3gkgk ac9JpbIhzQHih3WDdK4mnk8aYN4d8v9PeHMKz7kI11JDqX25Y33Ioqh3WSehvQk4aqc1R/41a7P pCAMRDJAArUsF/SDFk2EFnMk1tyxa+R0BlEJx9HhyajN26BHXYH3rn731t0FcadzCYjVvr+6Fs6 ia/OH9BWOHMoo6O6yUwsOXmSA9mCLCtyySG765UYXX+pez41+qV1KkcuxVR2UZwBNCTltidmrP4 hsa0KJyavvzteJjp+ZTa+Onxmc2zqsd8Dk3e4qrh+Xht9PcluwXCBjnv36h7qVE/cMqPff9kzK+ zCchZ3zIw0w4X7xepFRd0fKHhy6GOtCfABWXs45xeoP5tDwd3+Iz8fuMRhQUw37RStDP6/puuCI XxFzb0YC2ygIEEQ== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Daniel Scally The vertical blanking settings for the IVC block are dependent on settings in the ISP. This was originally set to calculate as the worst-case possible value, but it seems that this can cause the IVC block to hang. Instead calculate the vblank to match the default settings (which are currently all the driver sets anyway). Cc: stable@vger.kernel.org Fixes: f0b3984d821b ("media: platform: Add Renesas Input Video Control bloc= k driver") Signed-off-by: Daniel Scally Signed-off-by: Jacopo Mondi Tested-by: Lad Prabhakar # --- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/d= rivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c index 799453250b85..1e016b17dcee 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c @@ -24,7 +24,7 @@ #include =20 #define RZV2H_IVC_FIXED_HBLANK 0x20 -#define RZV2H_IVC_MIN_VBLANK(hts) max(0x1b, 15 + (120501 / (hts))) +#define RZV2H_IVC_MIN_VBLANK(hts) max(0x1b, 70100 / (hts)) =20 struct rzv2h_ivc_buf { struct vb2_v4l2_buffer vb; --=20 2.53.0 From nobody Tue Apr 7 11:40:01 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 582FC38A716; Fri, 13 Mar 2026 11:14:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400457; cv=none; b=tlS55bj9Bqk1TsdXuKd3+HLEMwMO+dYRG+9BhGc+tsZdLI2Axng3I0slQTKp5sVr+ZKDIArA96nyp21bWKNuSN8NXTt+r+NjMLszkWrVy251cNhNaPdQ1Pm/vvlHk8da2NZq8HQqzZAF/frTCeDz4lUuG+kN4lqWva+q7DqsA8c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400457; c=relaxed/simple; bh=yYQ4TjMGLnAAv3Zoy+v/DOI3B0qDLLqf+szWP7wTvHQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V95HhnuqmR8Kmg7sSpv4K8YnAxoJuxsAm1jcwTUlhmjrjnayE8VaGU8A94Vn3BZSC6omN20yPnQoiuEkI0ly2nDpVoIdZlXzZxlgvwZECoDEKGUMf8xZZpibIDf9Q7u3qIhBvQmXWG4UikqpBSTxVTwhggfX0dud+FH+GZm1lvc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=HRDm9dhy; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="HRDm9dhy" Received: from [192.168.224.131] (unknown [37.159.92.229]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 400BE1783; Fri, 13 Mar 2026 12:13:03 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773400384; bh=yYQ4TjMGLnAAv3Zoy+v/DOI3B0qDLLqf+szWP7wTvHQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=HRDm9dhyoCrI6ZKUBW5TS2tovnSZjTWTuusNfWo5gi/HfarejJubqoyI0iJDLB+L7 DNL8gXi64pYOLo+6+6RAIrqNOc4HnKRcaYrElpy7LLRDRODiUoDL/AyvEOx6tt3tC8 fFDjSH3FatZ/TyEqceAE4ZmG7s1Y8aTDRicYhw/g= From: Jacopo Mondi Date: Fri, 13 Mar 2026 12:13:58 +0100 Subject: [PATCH 2/7] media: rzv2h-ivc: Fix AXIRX_VBLANK register write Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-ivc-fixes-v7-0-v1-2-cb0714cd1279@ideasonboard.com> References: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> In-Reply-To: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> To: Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2300; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=u/qHvnWmPYnguu6xG+vN9zcv3t7ZQuZRHBXM6KPkyH4=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps/GAxw45H+LXGdp6lWpJy0RJpevraTtpyjLEA 9IDyL+7LYyJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPxgAAKCRByNAaPFqFW PHOmD/sFxMXB1JrSctFTWnajjuIERwjowyJBmxQ7ccruT/qrzwZ6D6eWaQo4doMEfQNJOsJf8zB cXL4s0g6/ZY2K3nOIj3zNQAJ5dJgy/3rU7D0owSX1JSS21KUsuQQl8nTMnChW4B9J+34AU6JkpP UxqUfn7vPHfqx6ulIGI/xw9bhham/+WfFzvIk/rQdXVkJLe6xy/XdTCs55ztqx0u7oQwwrDeuMr dGcoLS/C97B/fq+mC6fIWysHGhJCzg9hxUqIrvKiZIE1sAGlscN9pG99k3/b6et5/AxaVAknJ9e J+7trI2kTabl338GtoYnRyf6csIZdSAUt0POJGv/6fV3GQrWPlc5avRMhT6EFzldh8HlT1VLwBm nvB+F0Z2AXPHeGBV6m/Bj08kEL9CUAxUB3BeKUr+QtCbKIwXit5WPJ5jMs2QYjl9QvePZFrlOVL 12kiKaxs/PXfVa+rUuM0d3BrC73dMUj43FpNDuAQpzWE6Ya/ILV7Nt6Q1SF+OurLyCzBIui3ArI 2NdPyHbOKnS+AU2KlFloP/NmdtB7ePOiKiwsoRqOq7741ZPOCVT3Cm8P6J+OfEqlD+YYQGhCd0y 9iYfhkobtheg7j4Gn78uyPp5duhP6kS+9qzz4E+F1TuozbLVNLTA2iu8C4AgyOcbTyFYgFztcWM GCz+lDZev6ucVsQ== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Barnab=C3=A1s P=C5=91cze According to the documentation there are writable reserved bits in the register and those should not be set to 0. So use `rzv2h_ivc_update_bits()` with a proper bitmask. Cc: stable@vger.kernel.org Fixes: f0b3984d821b ("media: platform: Add Renesas Input Video Control bloc= k driver") Signed-off-by: Barnab=C3=A1s P=C5=91cze Signed-off-by: Jacopo Mondi Reviewed-by: Daniel Scally Tested-by: Lad Prabhakar # --- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 7 +++++-- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/d= rivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c index 1e016b17dcee..bfe5b0c7045e 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c @@ -7,6 +7,7 @@ =20 #include "rzv2h-ivc.h" =20 +#include #include #include #include @@ -235,8 +236,10 @@ static void rzv2h_ivc_format_configure(struct rzv2h_iv= c *ivc) hts =3D pix->width + RZV2H_IVC_FIXED_HBLANK; vblank =3D RZV2H_IVC_MIN_VBLANK(hts); =20 - rzv2h_ivc_write(ivc, RZV2H_IVC_REG_AXIRX_BLANK, - RZV2H_IVC_VBLANK(vblank)); + rzv2h_ivc_update_bits(ivc, RZV2H_IVC_REG_AXIRX_BLANK, + RZV2H_IVC_AXIRX_BLANK_FIELD_VBLANK, + FIELD_PREP(RZV2H_IVC_AXIRX_BLANK_FIELD_VBLANK, + vblank)); } =20 static void rzv2h_ivc_return_buffers(struct rzv2h_ivc *ivc, diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h b/drivers= /media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h index 3bcaab990b0f..4ef44c8b4656 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h @@ -34,7 +34,7 @@ #define RZV2H_IVC_REG_AXIRX_HSIZE 0x0020 #define RZV2H_IVC_REG_AXIRX_VSIZE 0x0024 #define RZV2H_IVC_REG_AXIRX_BLANK 0x0028 -#define RZV2H_IVC_VBLANK(x) ((x) << 16) +#define RZV2H_IVC_AXIRX_BLANK_FIELD_VBLANK GENMASK(25, 16) #define RZV2H_IVC_REG_AXIRX_STRD 0x0030 #define RZV2H_IVC_REG_AXIRX_ISSU 0x0040 #define RZV2H_IVC_REG_AXIRX_ERACT 0x0048 --=20 2.53.0 From nobody Tue Apr 7 11:40:01 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55BED386C08; Fri, 13 Mar 2026 11:14:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400457; cv=none; b=bq70yzbFE36Rabn0mdXg9BXRkWRxft14WSlEZZXn43m0LQyOiA54vlJy4ajvLgp02oI8L93OEz39ylRFhh55jWJBAE8yT9yv1OrKTEDW0gM4wIzrakUODfTetjpAzEzP1F3XzoyWv/wbcGG3+IdAfg2lgfDUfrlERALcAgku1hw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400457; c=relaxed/simple; bh=4ptyeyi5GxSJDM048EQyK7eLv/PzQVuFr5JDpZmhkU8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o9x+BodnkHztwgnbDy0X/hBPH+7roowf3KutFDh1e1QVKSUfsHzvAM4ALud0mSbSr1glrNZqw4LwK3FEKCdVbKnjdY5HCQxerAkz/uOZGnELelP0iI0PBCkwiUVX15Mji4nFy1J/O0zdZ/SewI21pDpSY23KDbjFNxw1vv/U6yM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=k1BWPd/H; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="k1BWPd/H" Received: from [192.168.224.131] (unknown [37.159.92.229]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 97E401934; Fri, 13 Mar 2026 12:13:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773400385; bh=4ptyeyi5GxSJDM048EQyK7eLv/PzQVuFr5JDpZmhkU8=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=k1BWPd/H6J/m/sOA0e1EHG+NtvnLu8bnsVZJiubFViTKtAgJU7uNN4u8BYESNxpU2 iPWZcMjaPPokhGiVu6+7baBwQ1k0KNWvnUhhcIXhXV04n/qG7Z18apanMH2jHo9Csd mvlMPAo8j6T2CLEv3b9nXv71K5EM1bftsYjRkzJk= From: Jacopo Mondi Date: Fri, 13 Mar 2026 12:13:59 +0100 Subject: [PATCH 3/7] media: rzv2h-ivc: Write AXIRX_PIXFMT once Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-ivc-fixes-v7-0-v1-3-cb0714cd1279@ideasonboard.com> References: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> In-Reply-To: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> To: Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2514; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=In3K0Hh5a5VAES6eja5NKesKgsMmiywmEDbrhEQG/vw=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps/GAQiXNHQ6D+CGvDeuJ0ni1i2P7tUTFnipur Ez/wMWOZZ+JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPxgAAKCRByNAaPFqFW PCqvEACOM5DLzL/NyB23VkIlPz+lpNzBmBoMaPFZQjkC/JiHYsAGPI79KmYhNTw3T9lsklo3O/C bvk5BAOB6KPFEywhc9+6hynVvA2cSngVPFYhjl75+XcFyRAm9zKZTE3jnAvXGM+N/ipx5SDQJKB rmbmGOYQyPdrPkbrF3tG4cZpxKmWWc7IKwM/jG62BLkQeKKaGJPnT5H+kl7gHW3BHftaFK/DVVJ ziB1bkeHoe38U+Jca2Ug7U1C6tDeVP63jnOcmEFus0+u8ZZO4ppGy/EAKeS9u+T3t8FZnisGlj7 LSD9Yn8LvzIlNhZTjzfpUxtLLoWCkUqsY99mQreac7GvZEvbwigBEv9Y1mRLakml+w7vdn7VArM P2sX0QCIZd65Ai6UxPH0O89e/YC+Hx+49dNHaUuTLW85BrpO6eRK9ZunDExTicyE96jLZ6Jwklg I89Zr6B9KHKGu0uOXaTIYJY1JKaAh+5Vh98bj6f26l44jx/z5Zu71EAqHIcCAB7BTyOKU6xiGkC 8wXZeMlK4dnfQ6ua4hoxsFYyte7YC9vtKDTPbKbGr6CMslhl1QKbMSZqWQtSJ1JVwLW9/DWJ20U Vp+Np4Xl82KGSEGq6DV8uuNf6Qj1ExzaW7zmtt1+frLKeOdoDejQwOZnu5iZqVbUbPpFycZXR2b ZHTSe+NBlYN7lbA== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Barnab=C3=A1s P=C5=91cze The documentation prescribes that invalid formats should not be set, so do a single write to ensure that both the CLFMT and DTYPE fields are set to valid values. Cc: stable@vger.kernel.org Fixes: f0b3984d821b ("media: platform: Add Renesas Input Video Control bloc= k driver") Signed-off-by: Barnab=C3=A1s P=C5=91cze Signed-off-by: Jacopo Mondi Reviewed-by: Daniel Scally Tested-by: Lad Prabhakar # --- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 8 ++++---- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/d= rivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c index bfe5b0c7045e..d894a880c33f 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c @@ -215,10 +215,10 @@ static void rzv2h_ivc_format_configure(struct rzv2h_i= vc *ivc) =20 /* Currently only CRU packed pixel formats are supported */ rzv2h_ivc_write(ivc, RZV2H_IVC_REG_AXIRX_PXFMT, - RZV2H_IVC_INPUT_FMT_CRU_PACKED); - - rzv2h_ivc_update_bits(ivc, RZV2H_IVC_REG_AXIRX_PXFMT, - RZV2H_IVC_PXFMT_DTYPE, fmt->dtype); + FIELD_PREP(RZV2H_IVC_AXIRX_PXFMT_FIELD_DTYPE, + fmt->dtype) | + FIELD_PREP(RZV2H_IVC_AXIRX_PXFMT_FIELD_CLFMT, + RZV2H_IVC_CLFMT_CRU_PACKED)); =20 rzv2h_ivc_write(ivc, RZV2H_IVC_REG_AXIRX_HSIZE, pix->width); rzv2h_ivc_write(ivc, RZV2H_IVC_REG_AXIRX_VSIZE, pix->height); diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h b/drivers= /media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h index 4ef44c8b4656..54c70de31c1e 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h @@ -24,9 +24,10 @@ #define RZV2H_IVC_ONE_EXPOSURE 0x00 #define RZV2H_IVC_TWO_EXPOSURE 0x01 #define RZV2H_IVC_REG_AXIRX_PXFMT 0x0004 -#define RZV2H_IVC_INPUT_FMT_MIPI (0 << 16) -#define RZV2H_IVC_INPUT_FMT_CRU_PACKED BIT(16) -#define RZV2H_IVC_PXFMT_DTYPE GENMASK(7, 0) +#define RZV2H_IVC_AXIRX_PXFMT_FIELD_CLFMT GENMASK(17, 16) +#define RZV2H_IVC_CLFMT_MIPI 0 +#define RZV2H_IVC_CLFMT_CRU_PACKED 1 +#define RZV2H_IVC_AXIRX_PXFMT_FIELD_DTYPE GENMASK(7, 0) #define RZV2H_IVC_REG_AXIRX_SADDL_P0 0x0010 #define RZV2H_IVC_REG_AXIRX_SADDH_P0 0x0014 #define RZV2H_IVC_REG_AXIRX_SADDL_P1 0x0018 --=20 2.53.0 From nobody Tue Apr 7 11:40:01 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C2EE39098F; Fri, 13 Mar 2026 11:14:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400464; cv=none; b=Yea7kbMcaFGPPx4BqB7xMWStBbRPD46jSA/plWllgEaTaSrA8hu05bYauUKX0CC6YN797v1dOn0VePodQe/fK8hmYPEKN7aVt2NdIVAOsnrwwjKZkvgmcJIIsdmEZO6+e3fNtkw8JmFRoJrqmol9kXL3LDswxu02kAg+8bVCRMo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400464; c=relaxed/simple; bh=9Zu3WwvywQQKNDA3rCqLYxT/zjUETeQZZDH2ujiWS6o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ep2Uk8yUBhH4RAAKZ8NWCWJKFZrrLKBnz1ZsDkA936w45eXjK3b5MPEo3WVVwAqpeThYumojZqDODAKpMWX1eIhxQs63IAw2b5FBJ3F8AguHvDuvsoZ38AEiB09tA2lM1GmpeCGJYVy4YPDmRmxj0WUv3hEfrHbJ1YQq7ZXQuow= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=B419UbSG; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="B419UbSG" Received: from [192.168.224.131] (unknown [37.159.92.229]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E91FB103D; Fri, 13 Mar 2026 12:13:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773400387; bh=9Zu3WwvywQQKNDA3rCqLYxT/zjUETeQZZDH2ujiWS6o=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=B419UbSGuj7VmsjAdJkJJEs78oyMlhEr88uP0Tjpz5VGVXj9utwBvl0Rv4DvHxY7D bqrWN2HvMwwvfKbaKRAJ7jTEX/m/TSb8XUJ/+5PLqUnoqrziKbyCPvrxSODiLT8Mdo qpAi6/s6mmMQ1pGB22co+xPgSFPIndXVdFaQwJ3Q= From: Jacopo Mondi Date: Fri, 13 Mar 2026 12:14:00 +0100 Subject: [PATCH 4/7] media: rzv2h-ivc: Fix FM_STOP register write Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-ivc-fixes-v7-0-v1-4-cb0714cd1279@ideasonboard.com> References: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> In-Reply-To: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> To: Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2099; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=PkkTr2oG0V9WpZyCwfGo3ZhNy+4BzlP/M28QLpEzQYw=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps/GA2dLb0w0icatNhX+TeJVJUj2levk3nH0+n W2wo1yy4TuJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPxgAAKCRByNAaPFqFW PLqKEACuzS10CTLy0J7xjCubb39kEHD6XYzGVISDJltws5v/U3iYnAat05OnwJgjV2NyU8ORUsg JjHLhVCaVPRuTFm7/yCz1Ng7SHrJWPFRroZJz7urvY4JOK4mzxgoCjmz1Fgs+OiLcdQi3ouoNl0 KtKso9PJYveKEcfwKnKaEdFSTjNOICj/0JDbxPS3FgnPTCK78/tyGIIXc0eGUk0DZ1FwicmRemI iBu0Xn75gDh1a9a7V74cHav17wtEZFyHh6QFlVZF3TqCmJ/2e1XU7fBAL31dJ0KtLcXBeSwH+A/ aCeEjlEEIsWdG+W7rJX4jVSAkiVyLSWpZY/Wf5zpgnQ1ojPLyxPZsfHoK75KsBOSgitdJJAHEFo FJmu49AZNWUsAiTIyXqdfAqdz8Xb3HA447knMvR4KhsLjmsSMF8XKYoV59twje6PpV/5vrqEMox 0nkPFB+JyVSCmI1CPd2vl9v++gdtIH5cyRHt3xZWdQzPh77N2tJmc2mvUgf7EnQLjuiMOxpunt1 R3cR5FWDexu2DFjnc5rk9oYfjpyBZED4hG+DjrgHkvofIsqreAsv2aXQGHbeoaux5JcIDnZIUWe KrdJovP+PfBkhcNrjpKM3q+PyDXpzp57RKiBSPhPYWCXlqi3VN3S98zaUatflS/0aWT8sYkAAk5 DusgEWEtOxu8SPw== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Barnab=C3=A1s P=C5=91cze Bit 20 should be written in this register to stop frame processing. So fix that, as well as the poll condition. Cc: stable@vger.kernel.org Fixes: f0b3984d821b ("media: platform: Add Renesas Input Video Control bloc= k driver") Signed-off-by: Barnab=C3=A1s P=C5=91cze Signed-off-by: Jacopo Mondi Reviewed-by: Daniel Scally Tested-by: Lad Prabhakar # --- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 5 +++-- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/d= rivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c index d894a880c33f..9b75e4b10e99 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c @@ -297,9 +297,10 @@ static void rzv2h_ivc_stop_streaming(struct vb2_queue = *q) struct rzv2h_ivc *ivc =3D vb2_get_drv_priv(q); u32 val =3D 0; =20 - rzv2h_ivc_write(ivc, RZV2H_IVC_REG_FM_STOP, 0x1); + rzv2h_ivc_write(ivc, RZV2H_IVC_REG_FM_STOP, RZV2H_IVC_REG_FM_STOP_FSTOP); readl_poll_timeout(ivc->base + RZV2H_IVC_REG_FM_STOP, - val, !val, 10 * USEC_PER_MSEC, 250 * USEC_PER_MSEC); + val, !(val & RZV2H_IVC_REG_FM_STOP_FSTOP), + 10 * USEC_PER_MSEC, 250 * USEC_PER_MSEC); =20 rzv2h_ivc_return_buffers(ivc, VB2_BUF_STATE_ERROR); video_device_pipeline_stop(&ivc->vdev.dev); diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h b/drivers= /media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h index 54c70de31c1e..049f223200e3 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h @@ -46,6 +46,7 @@ #define RZV2H_IVC_REG_FM_MCON 0x0104 #define RZV2H_IVC_REG_FM_FRCON 0x0108 #define RZV2H_IVC_REG_FM_STOP 0x010c +#define RZV2H_IVC_REG_FM_STOP_FSTOP BIT(20) #define RZV2H_IVC_REG_FM_INT_EN 0x0120 #define RZV2H_IVC_VVAL_IFPE BIT(0) #define RZV2H_IVC_REG_FM_INT_STA 0x0124 --=20 2.53.0 From nobody Tue Apr 7 11:40:01 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4262A3815F4; Fri, 13 Mar 2026 11:14:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400460; cv=none; b=bR2Gq0HqkMKcF/KJ/+AtxGoTg/s2hMC/b8clVjQxys8WS5wq0M+friEDKANHbjMhc/Odw3+GU6jDuiMavCjCFe8LOT2l7rFItQBlVo3Mxef5i5G3xaO4VLSN/4OveYFnhfs/Sjdbn0LonY+nJue+1O53A3Fya0gqjw1QKQSvaGk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400460; c=relaxed/simple; bh=2vjfmNRK6NCrgsI9jMmVTWUnzjDZIxh8672M67eU4U4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hAy9D3IxH+oHvt6AlnGHqNlMP9mqvmugWvUzpzaJzaF/Y8j6VpKJ0wwmH88tXwnzNk8SsLmtW/kPlSJD7/QbnhRow+al7C86yCQWdpa4osi4ISTwGWEVxP9Zw90GrE08wbHYh+0LoCS8Zf0Efcb6ghq5ZSrtAxD5XYd3xtBDGkc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=NuN4iG4l; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="NuN4iG4l" Received: from [192.168.224.131] (unknown [37.159.92.229]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 3A6E5F52; Fri, 13 Mar 2026 12:13:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773400388; bh=2vjfmNRK6NCrgsI9jMmVTWUnzjDZIxh8672M67eU4U4=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NuN4iG4lHSvTnVr4TDI6kh8yeYW+BmY4Wrxjq3a7Gqtym/H1ellUi9lwcWf2YSfk1 Bf2krhjFYIg4tOUzN4nR84/Ih1l2iE+sQxkBRTKWcqJtnNtOl2FFhJap6/ON3RIHk/ e37X08bEColSry1ECT/lxvUQ9JKNqwzAedVG2k8k= From: Jacopo Mondi Date: Fri, 13 Mar 2026 12:14:01 +0100 Subject: [PATCH 5/7] media: rzv2h-ivc: Fix concurrent buffer list access Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-ivc-fixes-v7-0-v1-5-cb0714cd1279@ideasonboard.com> References: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> In-Reply-To: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> To: Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=1746; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=F4PFojuBms+JkHMba5rVpVUdG0Zz8csyM/6PENMaCLc=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps/GAT1JEF5uRbEGGnTov3OAPkEMr7YW1JIRFp JCf3ccCD4OJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPxgAAKCRByNAaPFqFW PA+/D/9Mvr7OAc5UR+kFz1MdXW3kq/SJOUZYwT0pu+2X+dDgrFWrIDMq1EHvzR6jKFHnhaYy5wA M+49wvxBnekcaBQnqSUA6fG+ZYw1ilnBNupHkGaNITEBCJdG6Rzbvf5C5cr0hW0udWnUSIGPYVF tnqnaJHP9rZFd+S576IJ4FyS2Dbz8U98pRN0HZCMWaADPh1YXh1qdYOv4i/J/QzZklhTag5S0cl Q2bALpuR6VRdtQak9ZB2kVh4Kn5Y1sJM6f6SZu3lPHWzovmSMtHkvYThzwYwfyoqqRu3QtMNEpm dfz0InXMafX+TUtM8ldifWXQBZx53psrkdvd+OLaY1qvW+TThFy+NDMsils5bEk3t34UlfG2+Sm 4+1M8frWeSiF/k/TOnWS6fPEk6ALjXhDUazBDKMsmbisszRTSq/Kvp9m6bpVGI6NqV2cnR8J3p5 ybE72RYijwPisqVGhOBhgKc8UqAlh4VIqcXifxAnnFd7xp1mbQ2jqUTHaljbAUrZzSFvlgPZycA 7Goh+5Kr63NXyQV5SzDglAaMte5Sy11futzqaLehG7J1AKb+XFHPhmgx8NLDQNUiXvqHCxYtBOi JMtY8+TUHS05g1HvqP2xNDPzflWhOJlveLREbhRbN0atQIEw/UXOsRbWgpre36idZrgYmknbL16 ODemG7RVpHEOJhA== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Barnab=C3=A1s P=C5=91cze The list of buffers (`rzv2h_ivc::buffers.queue`) is protected by a spinlock (`rzv2h_ivc::buffers.lock`). However, in `rzv2h_ivc_transfer_buffer()`, which runs in a separate workqueue, the `list_del()` call is executed without holding the spinlock, which makes it possible for the list to be concurrently modified Fix that by removing a buffer from the list in the lock protected section. Cc: stable@vger.kernel.org Fixes: f0b3984d821b ("media: platform: Add Renesas Input Video Control bloc= k driver") Signed-off-by: Barnab=C3=A1s P=C5=91cze [assign ivc->buffers.curr in critical section as reported by Barnabas] Signed-off-by: Jacopo Mondi Reviewed-by: Daniel Scally Tested-by: Lad Prabhakar # --- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/d= rivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c index 9b75e4b10e99..a22aee0fe1cf 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c @@ -153,14 +153,13 @@ static void rzv2h_ivc_transfer_buffer(struct work_str= uct *work) scoped_guard(spinlock_irqsave, &ivc->buffers.lock) { buf =3D list_first_entry_or_null(&ivc->buffers.queue, struct rzv2h_ivc_buf, queue); - } - - if (!buf) - return; + if (!buf) + return; =20 - list_del(&buf->queue); + list_del(&buf->queue); + ivc->buffers.curr =3D buf; + } =20 - ivc->buffers.curr =3D buf; buf->addr =3D vb2_dma_contig_plane_dma_addr(&buf->vb.vb2_buf, 0); rzv2h_ivc_write(ivc, RZV2H_IVC_REG_AXIRX_SADDL_P0, buf->addr); =20 --=20 2.53.0 From nobody Tue Apr 7 11:40:01 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1993538655A; Fri, 13 Mar 2026 11:14:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400463; cv=none; b=NDZO4+V+wC58XUVJrs6a4brtRsgqs+yWtj3GGrwwfHuyPQ0nRku/GMPMTYn13G9ghhG+b/80A8XCsJmFb9J+W2u8q/97o3fMUBd+pp5Nc6Q42OodAD8pwn6lb9D5rWPM+fJUnxGYqMU2U8375JTljUkjQPSlUlQg2cy45i59rZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400463; c=relaxed/simple; bh=P3uc4qnZHOzWKLHJudBY2BQ1MWjlXY7iFwr9QoH8j+A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hCzraDeFqlXwwY9Va6q4m0t9Wv4Ym+n2Udnpuxk1PsdDzW5JZR85XGscMWW7wbucjvqSppBJY01GXxuMFCcsK/RF6OjOgX2dwcqQen31g1qM2soHGdWe4YP01kN5PfQVuFf/mnkPUZgv0KFEGIl4nYVvQAO3REqRrsx7i1nvq4A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=PakPyhtg; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="PakPyhtg" Received: from [192.168.224.131] (unknown [37.159.92.229]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 88B4E1356; Fri, 13 Mar 2026 12:13:08 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773400389; bh=P3uc4qnZHOzWKLHJudBY2BQ1MWjlXY7iFwr9QoH8j+A=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PakPyhtgKVXNfmCkHarcs3kbNl5WUaQwnbm2wkAK2fTrT7CR6fevcWb4eFC2qEZJP dgPt57gh417HsO2vhgbCV9WcjiAQxHgwq1CYc8BpZZUe8unYWBxK8QGbVOEUd9DdWU /YvdI6djLM7+J7vXoZHltFqL4pI+8ZLzLNnC4uk0= From: Jacopo Mondi Date: Fri, 13 Mar 2026 12:14:02 +0100 Subject: [PATCH 6/7] media: rzv2h-ivc: Avoid double job scheduling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-ivc-fixes-v7-0-v1-6-cb0714cd1279@ideasonboard.com> References: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> In-Reply-To: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> To: Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi , stable@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2950; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=sfEMevA0cXM3xUNs6qpK+yeWyMARLiV0CQVjh5pXC+E=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps/GB5pPOblfljFPN7rugR/tOQbvAHqCAUInmJ YlSq/aJlQ2JAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPxgQAKCRByNAaPFqFW PLbTEACuGP0di4covh8CNHddpTrXSPwYr8owQdoJ1CtaErzSGiBT7acGh1/PK+3lNpXZ8kmqhdd Q3oR/YOi/zK2BStdwzUdevXO5VPn/uLlLx10UanKfQRJE76wI8Z6LcyUYPi+XxgjwBlBcnvbanD TN/CzxP0rtY8RYb2EjPnH3p3cqQp4T/V6atgxSmfkkow4W5g3eNtGoTo6C8eiC1yq1DrICUKeKM V7O/e1vyW6Gd1LTVRoXinUDoEdiR4IXcX8xrFitRrIcPKL564llPJdXS8cWE7soYBWXk12nX7zS PtyTJ3tzMkhBz9/TMvmCz6DtXEcECiyP1XC1qoWHTk+WGzEQiPpawhAKf1nouA6EK5nnjYfPphz llwaVGGDnpDL2LlZgO/2tJie5pjrrMpHx5wT9DpMXkgPe1oCGrr20iF/QzzQh3E7Iz6JMExB1a3 YJ6YD8n+kFgFMAQtecz0m2T9olIasRTKXHfBDsELgdQ25JDaNL91jNiF2OZsNKejU4/thpIpRq2 8h9jlgc5/co+OX+m/B+Y5FExOZZVH5zTR4Na5+A9chnhX2cf2zfFEPZv7M0W09nHWU3jQQ8OlON wfiQ3pvlX6OGvk/QaZj4hKtsy57XxcC+m85lqedjH5ewQtYjfed5RILocpZimvDz0Mwjd4UyfPR UE8A7tUYNxWRPjw== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Jacopo Mondi The scheduling of a new buffer transfer in the IVC driver is triggered by two occurrences of the "frame completed" interrupt. The first interrupt occurrence identifies when all image data have been transferred to the ISP, the second occurrence identifies when the post-transfer VBLANK has completed and a new buffer can be transferred. Under heavy system load conditions the actual execution of the workqueue item might be delayed and two items might happen to run concurrently, leading to a new frame transfer being triggered while the previous one has not yet finished. This error condition is only visible because the driver maintains a status variable that counts the number of interrupts since the last transfer, and warns in case an IRQ happens before the counter has been reset. To ensure sequential execution of the worqueue items and avoid a double buffer transfer to run concurrently, protect the whole function body with the spinlock that so far was solely used to reset the counter and inspect the interrupt counter variable at the beginning of the buffer transfer function. and return As soon as the ongoing transfer completes, the workqueue item will be re-scheduled and will consume the pending buffer. Cc: stable@vger.kernel.org Fixes: f0b3984d821b ("media: platform: Add Renesas Input Video Control bloc= k driver") Signed-off-by: Jacopo Mondi Reviewed-by: Barnab=C3=A1s P=C5=91cze Reviewed-by: Daniel Scally Tested-by: Lad Prabhakar # --- drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/d= rivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c index a22aee0fe1cf..3580a57738a6 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c @@ -149,6 +149,11 @@ static void rzv2h_ivc_transfer_buffer(struct work_stru= ct *work) buffers.work); struct rzv2h_ivc_buf *buf; =20 + guard(spinlock_irqsave)(&ivc->spinlock); + + if (ivc->vvalid_ifp) + return; + /* Setup buffers */ scoped_guard(spinlock_irqsave, &ivc->buffers.lock) { buf =3D list_first_entry_or_null(&ivc->buffers.queue, @@ -163,9 +168,7 @@ static void rzv2h_ivc_transfer_buffer(struct work_struc= t *work) buf->addr =3D vb2_dma_contig_plane_dma_addr(&buf->vb.vb2_buf, 0); rzv2h_ivc_write(ivc, RZV2H_IVC_REG_AXIRX_SADDL_P0, buf->addr); =20 - scoped_guard(spinlock_irqsave, &ivc->spinlock) { - ivc->vvalid_ifp =3D 2; - } + ivc->vvalid_ifp =3D 2; rzv2h_ivc_write(ivc, RZV2H_IVC_REG_FM_FRCON, 0x1); } =20 @@ -200,7 +203,7 @@ static void rzv2h_ivc_buf_queue(struct vb2_buffer *vb) } =20 scoped_guard(spinlock_irq, &ivc->spinlock) { - if (vb2_is_streaming(vb->vb2_queue) && !ivc->vvalid_ifp) + if (vb2_is_streaming(vb->vb2_queue)) queue_work(ivc->buffers.async_wq, &ivc->buffers.work); } } --=20 2.53.0 From nobody Tue Apr 7 11:40:01 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F1E7538CFED; Fri, 13 Mar 2026 11:14:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400478; cv=none; b=KzMR3dSMpPrihWnrCK9j1XZAcvDmMsDl+3TD8gTYmb4ij/yMyffWjrKvx+51BGfXz+S4aA+M3ceIge9sdZq4knW5benDF2MiaL6xB30ybYj+odtEBpy9iE718YpOvMOS5kvBE4n1pskwE/v1DG2AR4HyxTPYlwZag3OqFoSCLBI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773400478; c=relaxed/simple; bh=adhoSvnhWHsnz+gAqddMsvFxEj6E+iuaCoKJ6szkzfQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dQJni+gtTUSa7jutMyQhvkXtYIDjzc4DD6JNitR/5+ufIbr93Ul+jW4klWBJoS8wThQ8z6MY59RPEZ8LCDwRo+VZD3SBJaSHG0FJD9UwC8nhGJ3D9k22OMxb16IJK/lSzau1mYODZHspUs7DVkCTIKYY9GhjlH1f/7FL1QHz6Vg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=q62C+uRg; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="q62C+uRg" Received: from [192.168.224.131] (unknown [37.159.92.229]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AC0B61934; Fri, 13 Mar 2026 12:13:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1773400390; bh=adhoSvnhWHsnz+gAqddMsvFxEj6E+iuaCoKJ6szkzfQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=q62C+uRg1XqjxsKsK6aLacr6AAymii7t6oxYduAzuNdCnuiB4HNyvM9GQfeVRc9ks l4oYt/0Qn/NDyuc9BKLQOdaoCbGInd/vWkHtqX2iO1a+YqkW3ghE8ScIrM9DVfOqsp tQ50OgCoizp4QPiCA7hvLpktVaBTDRVPkz1EwAUE= From: Jacopo Mondi Date: Fri, 13 Mar 2026 12:14:03 +0100 Subject: [PATCH 7/7] media: rzv2h-ivc: Replace workqueue with direct function call Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-mali-ivc-fixes-v7-0-v1-7-cb0714cd1279@ideasonboard.com> References: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> In-Reply-To: <20260313-mali-ivc-fixes-v7-0-v1-0-cb0714cd1279@ideasonboard.com> To: Daniel Scally , =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Mauro Carvalho Chehab , Hans Verkuil Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Jacopo Mondi X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=4599; i=jacopo.mondi@ideasonboard.com; h=from:subject:message-id; bh=RLxKh9LLFJfWQAEK94Cwm+qxy9A5QI8aeTsdnt+gvpo=; b=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBps/GBMMivD6HKWbmCpaQUkXkFczR8IcsNlE4Ye +UKCs2ewguJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCabPxgQAKCRByNAaPFqFW PGfjD/9VgF84T/beep+NWluqFz4YxAL0pvaGrYjTG2DM2KTTxc+o4RsOR8CbZw9C3yBfvYe3C3X yyHyG8ymTg4YEwiIHldnVu45NkFyW+DNDVPJ2fbscVUItl5aP7ctuDMwnEMC3XIv81UlTz5kGMM KDqKrNyOFQPdGyXewJD4MAZnvEezNqZwT0VNRii8L/rd3uYtI9Ekt55bAB64uLUnD2NmwQugb2x U3cXEsw80cu/SPhWzsZGTLW8K2g4fRsNvnUfrg0uiYZT9xgVF9gRCC9rR7kQ9sMegqo06e0cD+a 5GpD9sMuIljlv7UNjiDxd9p+M7VHQ42UnXgGjRQOzOVEfKySHgzXZmHiU64iQjuvr1KXlZ6f87U jgddy9BiX8AQ5sTNuw2HE7UAOpclR/1s4Mjxz4yDYKkS5LcVXxUa14+jP3pWgemSZWdZJFjzkKv NRR6kRpf2CFseYk/fYrHmnHkcRBNYoqI3SL5BOSTXXCWxx2l9JEP0ZKSLskYwDn+bZr4j0wQQDx OGBTZbl3ybc4rzz4vgUp7pAKL+1+MNzftnkdJyYzL6BiPNDJPhj6qJcpKNzaajbDoPfG69Jn0uQ AXwcF/d/t/e186n/0G2ItE4wklnsFu+WcwrC/GDLOkng6XxbJWA3s5MEuMqwvWsj7zyJmBB52nv aobimz3G8Q0zU8g== X-Developer-Key: i=jacopo.mondi@ideasonboard.com; a=openpgp; fpr=72392EDC88144A65C701EA9BA5826A2587AD026B From: Jacopo Mondi Scheduling of work items with an async workqueue opens the door to potential races between multiple instances of a work item. While the frame transfer function is now protected agains races, using a workqueue doesn't provide much benefit considering the limited cost of creating a job transfer. Replace usage of the work queue with direct function calls. Signed-off-by: Jacopo Mondi Reviewed-by: Daniel Scally Tested-by: Lad Prabhakar # --- .../platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c | 2 +- .../platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 21 +++++++----------= ---- .../media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h | 3 +-- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c b/dri= vers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c index e9857eb5b51a..355842abb24b 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-dev.c @@ -119,7 +119,7 @@ static irqreturn_t rzv2h_ivc_isr(int irq, void *context) * The second interrupt indicates that the post-frame transfer VBLANK * has completed, we can now schedule a new frame transfer, if any. */ - queue_work(ivc->buffers.async_wq, &ivc->buffers.work); + rzv2h_ivc_transfer_buffer(ivc); =20 return IRQ_HANDLED; } diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/d= rivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c index 3580a57738a6..b167f1bab7ef 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c @@ -143,13 +143,11 @@ void rzv2h_ivc_buffer_done(struct rzv2h_ivc *ivc) vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_DONE); } =20 -static void rzv2h_ivc_transfer_buffer(struct work_struct *work) +void rzv2h_ivc_transfer_buffer(struct rzv2h_ivc *ivc) { - struct rzv2h_ivc *ivc =3D container_of(work, struct rzv2h_ivc, - buffers.work); struct rzv2h_ivc_buf *buf; =20 - guard(spinlock_irqsave)(&ivc->spinlock); + lockdep_assert_held(&ivc->spinlock); =20 if (ivc->vvalid_ifp) return; @@ -204,7 +202,7 @@ static void rzv2h_ivc_buf_queue(struct vb2_buffer *vb) =20 scoped_guard(spinlock_irq, &ivc->spinlock) { if (vb2_is_streaming(vb->vb2_queue)) - queue_work(ivc->buffers.async_wq, &ivc->buffers.work); + rzv2h_ivc_transfer_buffer(ivc); } } =20 @@ -282,7 +280,9 @@ static int rzv2h_ivc_start_streaming(struct vb2_queue *= q, unsigned int count) =20 rzv2h_ivc_format_configure(ivc); =20 - queue_work(ivc->buffers.async_wq, &ivc->buffers.work); + scoped_guard(spinlock_irq, &ivc->spinlock) { + rzv2h_ivc_transfer_buffer(ivc); + } =20 return 0; =20 @@ -449,11 +449,6 @@ int rzv2h_ivc_init_vdev(struct rzv2h_ivc *ivc, struct = v4l2_device *v4l2_dev) =20 spin_lock_init(&ivc->buffers.lock); INIT_LIST_HEAD(&ivc->buffers.queue); - INIT_WORK(&ivc->buffers.work, rzv2h_ivc_transfer_buffer); - - ivc->buffers.async_wq =3D alloc_workqueue("rzv2h-ivc", 0, 0); - if (!ivc->buffers.async_wq) - return -EINVAL; =20 /* Initialise vb2 queue */ vb2q =3D &ivc->vdev.vb2q; @@ -471,7 +466,7 @@ int rzv2h_ivc_init_vdev(struct rzv2h_ivc *ivc, struct v= 4l2_device *v4l2_dev) ret =3D vb2_queue_init(vb2q); if (ret) { dev_err(ivc->dev, "vb2 queue init failed\n"); - goto err_destroy_workqueue; + return ret; } =20 /* Initialise Video Device */ @@ -520,8 +515,6 @@ int rzv2h_ivc_init_vdev(struct rzv2h_ivc *ivc, struct v= 4l2_device *v4l2_dev) media_entity_cleanup(&vdev->entity); err_release_vb2q: vb2_queue_release(vb2q); -err_destroy_workqueue: - destroy_workqueue(ivc->buffers.async_wq); =20 return ret; } diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h b/drivers= /media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h index 049f223200e3..6f644ba796a9 100644 --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc.h @@ -104,8 +104,6 @@ struct rzv2h_ivc { struct { /* Spinlock to guard buffer queue */ spinlock_t lock; - struct workqueue_struct *async_wq; - struct work_struct work; struct list_head queue; struct rzv2h_ivc_buf *curr; unsigned int sequence; @@ -130,3 +128,4 @@ void rzv2h_ivc_deinit_subdevice(struct rzv2h_ivc *ivc); void rzv2h_ivc_write(struct rzv2h_ivc *ivc, u32 addr, u32 val); void rzv2h_ivc_update_bits(struct rzv2h_ivc *ivc, unsigned int addr, u32 mask, u32 val); +void rzv2h_ivc_transfer_buffer(struct rzv2h_ivc *ivc); --=20 2.53.0