From patchwork Wed Apr 8 11:56:27 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hans de Goede X-Patchwork-Id: 26507 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 9F185BDCBD for ; Wed, 8 Apr 2026 11:56:37 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 51E4C62E09; Wed, 8 Apr 2026 13:56:37 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.b="pL8fQRLs"; dkim=pass (2048-bit key; unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="U3ZGVQyN"; dkim-atps=neutral Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id C148662DDA for ; Wed, 8 Apr 2026 13:56:35 +0200 (CEST) Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 638BKVet249489 for ; Wed, 8 Apr 2026 11:56:34 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=D+n0/a2hdkG0azgrQ5BlNHn/vJ7HC4mxVhS C6+Od8z4=; b=pL8fQRLs2yDZiY9KAlVYhPvHYaU8s8f1fnWYf7DZLYefjKIilZs dPeer6N9IDAU2Oo6wpG376vOpNTBaPxg7UunqCXsI73DcFurYK5H2TUCIJqo4bhN qQbOj+Q/Z0xAuPCJHScJfjegwjeql+T4gJypDz8rgyv+WXNOQAVgFuVbCIlukaTT 5n4UoladEMZjJ7PLeMRytmQ+nWwHqA3j2to6UGTf5ssAltaZOsIb5mXDaXjgkARz v1yRdwC+Ex5XPheAHoeOHdbjrSV0+ByCcqN9FlSgePniyosUxgnAruTnq+REMrao FfPV8VuMfYhCzh8eJ0AIQ0ngom9EBnAznPw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd8x9ayhs-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 08 Apr 2026 11:56:34 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50b4ca7e7c2so132981681cf.3 for ; Wed, 08 Apr 2026 04:56:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775649393; x=1776254193; darn=lists.libcamera.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=D+n0/a2hdkG0azgrQ5BlNHn/vJ7HC4mxVhSC6+Od8z4=; b=U3ZGVQyNvgqDLRbV9q1AyfisINyc4WBRY8AhCCA+/ROJTLqRb1eFDP+TdFcMtCLune DpV8U1Ozy9d42x9wUvHcKJ/nLyw5DTREymYB/Enny2BOm12S6z2xHypsq1eecgJM5ku7 truwYILlrU8auMvkCx5fAA+O9hEZMcyXfn7iWtZUW/Tev1vV7iO0BAofxHSRRzQlXt9X b9N/XPjNCjYXq4meosIFrg8hvd87kYNM0WZUn7gvIHUMSqyj5R6u5lF5k/mS9gDWqj5X vG9gkT30ROh9nPzDHS2BdP9sHifAs9BID1YE+VGrsAb5/i+KqDrC8lKbR6BEFvnoJh4T gw/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775649393; x=1776254193; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=D+n0/a2hdkG0azgrQ5BlNHn/vJ7HC4mxVhSC6+Od8z4=; b=cO3poX8TMvML6t5rPtCiuqjDPDHjzGdYp/NDhSf99WEQbfi+0bAF6gbyIu6l8ULM+V U8yyu5kLht/wwh6rQMTJ5XUDnzBJwwmBX0Rbju3p9NaY6LWv+1XdDI7uAntPHslzpU1i QBi0psMCmk7xgNHOCxXmuSGK9l+MeDLSFCRievuDDJkaeiERWWWWNDPQTUqKDZsCHYFy VscEEc0HYCKJGlR+vCZLeVnailqACp+sxPbNZz+fxZV+DFpSmhsd052o+2z6VjdtA59J Q78/8V5Xk8ypkE8NGHY9PTQeyew9139hYWHihJ02bBrct6oAVWF31Q8/F8so96NQRDLf 1zEQ== X-Gm-Message-State: AOJu0YyJnCyFgM7cv1O1skjq9/6EVMvd2YTFFgJkeEwQ2AI6BJrTDV3H 2/MNMl3ZDbUEa9CsnO6kK/ZPgcCPIWR9av9JD2ogxSCZFABto10ETpVESvBgsKR3JFByhwMROGj wpxijV2EZZjMAzmj/DL5Gq+9WIz3f/M7eEZYHfmmM9OssNekodfa83nx/XNzS0mTjN08cuj6ASc jucb+0eNCg X-Gm-Gg: AeBDievclVEA4NZDn0AfZuspjtnugZ2bAIJuugEsJQkPS+Ezvuz+e+mwd93EofeMc7b MkGPlZExSEs9t/MDH4z51WpH5HZVPX/xJWs1VrM2uX/MLN6uDalDTQ2nTaUxrX09HgsKnlaSUKP iGWse/DCn+SF4HCXCDzCvgU05wYBJbBtTS/PDChr4V4Gm8DGfkAPxR9gZ9VdudxhkQ8EsTmqVx5 fEiO5cpruAeif19M4vh6rGYVDaQiHywidiWu2dMvlfGjRP9zOcKKSLeflWLjnkLg+2sf+Co6qUF aHN2s+RtzVoBEBAMs4tQvzKolq6W1BrW2bBrnPif8YbWhWqyYOvllQl3rf9b3sXZQKLakUK2lOb 584GJQ4IpTpvAvyTJxadBC9RAps2K8lEs2Px9aESgcsNw9c4EoVn/Nr+OT/jCpELvou/KVQ2GWv dgG5QQFLvvkX8P+APDnjD8HpLSz5s59B5K X-Received: by 2002:a05:622a:1f88:b0:50b:6a79:45c5 with SMTP id d75a77b69052e-50d62b4fa9fmr294237531cf.22.1775649392915; Wed, 08 Apr 2026 04:56:32 -0700 (PDT) X-Received: by 2002:a05:622a:1f88:b0:50b:6a79:45c5 with SMTP id d75a77b69052e-50d62b4fa9fmr294237091cf.22.1775649392433; Wed, 08 Apr 2026 04:56:32 -0700 (PDT) Received: from t14s (2001-1c00-0c32-7800-07d4-cca3-ec08-7ac7.cable.dynamic.v6.ziggo.nl. [2001:1c00:c32:7800:7d4:cca3:ec08:7ac7]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b9c3c97219dsm632410766b.5.2026.04.08.04.56.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Apr 2026 04:56:31 -0700 (PDT) From: Hans de Goede To: libcamera-devel@lists.libcamera.org Cc: Loic Poulain , Hans de Goede Subject: [PATCH 0/3] libcamera: Finer grained MediaDevice locking Date: Wed, 8 Apr 2026 13:56:27 +0200 Message-ID: <20260408115630.12456-1-johannes.goede@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 MIME-Version: 1.0 X-Authority-Analysis: v=2.4 cv=Rr716imK c=1 sm=1 tr=0 ts=69d64272 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=NEAV23lmAAAA:8 a=vij-Psz-cUdvEssJWosA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA4MDExMCBTYWx0ZWRfXxyqMX7eX5rwS jQ+22WrI6/xL/PPm962KE0yVErXHT/Z5PsFu9fTkiaEj/qLPr0AfAkviLd2b1xdd/MPtEY9Nkq6 JR/JlJoLnBQoZ6ydHSuNZVV5DlgXK+CZFY8FWQNY0pNol8tRjL5QutwPlkvSnmZmNCJklIHlEUL e+W+uB/WTRO50YjNKwritauspalHqs2HOirQ7/hjasdUhDNbWW8ntbYWqq383seEnebMl8jsIt1 JZ2FQoDRZu+K1RC/FdeDiRq1k2a3cqb7nyTAehiFZPHKSDKHSzd7FuMnt5gt5/9N6axoKFF9e1C fTzoFJnBiXiC6XN+tp+17Uv/jHdlB4/yDOZJL2FhdSTsU2eWn+Y+HDQLs2L6a+zpdkmPfA1F//R r2/nhldzLPBJGkeGLVI0uNR+2EryOz52WIqk/EgDlaiYjkAGp/0ZZjBCIOpr+uPLC0HhqkxIEjf TknHB3V003VJq+wzAYQ== X-Proofpoint-ORIG-GUID: Di0qEjyIRWqTdFdbLoc5BaePg4g7pmGk X-Proofpoint-GUID: Di0qEjyIRWqTdFdbLoc5BaePg4g7pmGk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293, Aquarius:18.0.1143, Hydra:6.1.51, FMLib:17.12.100.49 definitions=2026-04-08_03,2026-04-08_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 clxscore=1015 bulkscore=0 phishscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604080110 X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Hi All, On Qualcomm chips any CSI-phy can be connected to any CSI-decoder and any CSI-decoder can be connected to any Video-Front-End (VFE, DMA write engine and co). Basically there are 2 big cross-switches between PHYs and decoders and between decoders and VFEs which can be controlled through media-controller links. As such the entite CAMSS block with CSI-phys, decoders and VFEs is represented to userspace as a single /dev/media# node. As long as active links from unrelated cameras are not touched when setting up a new camera 2 independent raw data-streams can be run and managed by 2 different libcamera instances. But the standard locking of the /dev/media# node by the first libcamera instance to start streaming from one of the cameras blocks this. This patch series allows pipeline-handlers to opt-out of the base PipelineHandler MediaDevice locking and adds 2 helpers for pipeline handlers to implement finer grained locking. This is the second of 3 series which together introduce the camss pipeline handler. Here is a branch with all 3 series: https://github.com/jwrdegoede/libcamera/commits/camss_pipeline_v1/ I hope to get this prep series merged while work continues on the camss pipeline handler itself. For an example of how to use this, see this commmit implementing finer grained locking for the camss pipeline handler: https://github.com/jwrdegoede/libcamera/commit/4ffd7b47119978940b543ad0914bf46c767573ad For the first patch an alternative approach would be add a lockingRequired flag to the MediaDevice class, allowing opting out of the locking on a per media device base. Regards, Hans Hans de Goede (3): libcamera: pipeline: Allow pipeline-handlers to opt out of locking the media devices libcamera: media_object: Add MediaEntity::disableLinks() libcamera: v4l2_device: add lock() and unlock() methods include/libcamera/internal/media_object.h | 1 + include/libcamera/internal/pipeline_handler.h | 2 + include/libcamera/internal/v4l2_device.h | 3 ++ src/libcamera/media_device.cpp | 16 ++------ src/libcamera/media_object.cpp | 27 ++++++++++++++ src/libcamera/pipeline_handler.cpp | 8 ++-- src/libcamera/v4l2_device.cpp | 37 +++++++++++++++++++ 7 files changed, 77 insertions(+), 17 deletions(-)