Show a cover letter.

GET /api/covers/26507/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 26507,
    "url": "https://patchwork.libcamera.org/api/covers/26507/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/26507/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/projects/1/?format=api",
        "name": "libcamera",
        "link_name": "libcamera",
        "list_id": "libcamera_core",
        "list_email": "libcamera-devel@lists.libcamera.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": ""
    },
    "msgid": "<20260408115630.12456-1-johannes.goede@oss.qualcomm.com>",
    "date": "2026-04-08T11:56:27",
    "name": "[0/3] libcamera: Finer grained MediaDevice locking",
    "submitter": {
        "id": 242,
        "url": "https://patchwork.libcamera.org/api/people/242/?format=api",
        "name": "Hans de Goede",
        "email": "johannes.goede@oss.qualcomm.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/26507/mbox/",
    "series": [
        {
            "id": 5877,
            "url": "https://patchwork.libcamera.org/api/series/5877/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5877",
            "date": "2026-04-08T11:56:27",
            "name": "libcamera: Finer grained MediaDevice locking",
            "version": 1,
            "mbox": "https://patchwork.libcamera.org/series/5877/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/26507/comments/",
    "headers": {
        "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>",
        "X-Original-To": "parsemail@patchwork.libcamera.org",
        "Delivered-To": "parsemail@patchwork.libcamera.org",
        "Received": [
            "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 9F185BDCBD\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed,  8 Apr 2026 11:56:37 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 51E4C62E09;\n\tWed,  8 Apr 2026 13:56:37 +0200 (CEST)",
            "from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n\t[205.220.168.131])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C148662DDA\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed,  8 Apr 2026 13:56:35 +0200 (CEST)",
            "from pps.filterd (m0279867.ppops.net [127.0.0.1])\n\tby mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n\t638BKVet249489 for <libcamera-devel@lists.libcamera.org>;\n\tWed, 8 Apr 2026 11:56:34 GMT",
            "from mail-qt1-f200.google.com (mail-qt1-f200.google.com\n\t[209.85.160.200])\n\tby mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dd8x9ayhs-1\n\t(version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 08 Apr 2026 11:56:34 +0000 (GMT)",
            "by mail-qt1-f200.google.com with SMTP id\n\td75a77b69052e-50b4ca7e7c2so132981681cf.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 08 Apr 2026 04:56:34 -0700 (PDT)",
            "from t14s\n\t(2001-1c00-0c32-7800-07d4-cca3-ec08-7ac7.cable.dynamic.v6.ziggo.nl.\n\t[2001:1c00:c32:7800:7d4:cca3:ec08:7ac7])\n\tby smtp.gmail.com with ESMTPSA id\n\ta640c23a62f3a-b9c3c97219dsm632410766b.5.2026.04.08.04.56.31\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tWed, 08 Apr 2026 04:56:31 -0700 (PDT)"
        ],
        "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=qualcomm.com header.i=@qualcomm.com\n\theader.b=\"pL8fQRLs\"; dkim=pass (2048-bit key;\n\tunprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n\theader.b=\"U3ZGVQyN\"; dkim-atps=neutral",
        "DKIM-Signature": [
            "v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n\tcc:content-transfer-encoding:date:from:message-id:mime-version\n\t:subject:to; s=qcppdkim1; bh=D+n0/a2hdkG0azgrQ5BlNHn/vJ7HC4mxVhS\n\tC6+Od8z4=; b=pL8fQRLs2yDZiY9KAlVYhPvHYaU8s8f1fnWYf7DZLYefjKIilZs\n\tdPeer6N9IDAU2Oo6wpG376vOpNTBaPxg7UunqCXsI73DcFurYK5H2TUCIJqo4bhN\n\tqQbOj+Q/Z0xAuPCJHScJfjegwjeql+T4gJypDz8rgyv+WXNOQAVgFuVbCIlukaTT\n\t5n4UoladEMZjJ7PLeMRytmQ+nWwHqA3j2to6UGTf5ssAltaZOsIb5mXDaXjgkARz\n\tv1yRdwC+Ex5XPheAHoeOHdbjrSV0+ByCcqN9FlSgePniyosUxgnAruTnq+REMrao\n\tFfPV8VuMfYhCzh8eJ0AIQ0ngom9EBnAznPw==",
            "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=oss.qualcomm.com; s=google; t=1775649393; x=1776254193;\n\tdarn=lists.libcamera.org; \n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:from:to:cc:subject:date:message-id:reply-to;\n\tbh=D+n0/a2hdkG0azgrQ5BlNHn/vJ7HC4mxVhSC6+Od8z4=;\n\tb=U3ZGVQyNvgqDLRbV9q1AyfisINyc4WBRY8AhCCA+/ROJTLqRb1eFDP+TdFcMtCLune\n\tDpV8U1Ozy9d42x9wUvHcKJ/nLyw5DTREymYB/Enny2BOm12S6z2xHypsq1eecgJM5ku7\n\ttruwYILlrU8auMvkCx5fAA+O9hEZMcyXfn7iWtZUW/Tev1vV7iO0BAofxHSRRzQlXt9X\n\tb9N/XPjNCjYXq4meosIFrg8hvd87kYNM0WZUn7gvIHUMSqyj5R6u5lF5k/mS9gDWqj5X\n\tvG9gkT30ROh9nPzDHS2BdP9sHifAs9BID1YE+VGrsAb5/i+KqDrC8lKbR6BEFvnoJh4T\n\tgw/w=="
        ],
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20251104; t=1775649393; x=1776254193;\n\th=content-transfer-encoding:mime-version:message-id:date:subject:cc\n\t:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=D+n0/a2hdkG0azgrQ5BlNHn/vJ7HC4mxVhSC6+Od8z4=;\n\tb=cO3poX8TMvML6t5rPtCiuqjDPDHjzGdYp/NDhSf99WEQbfi+0bAF6gbyIu6l8ULM+V\n\tU8yyu5kLht/wwh6rQMTJ5XUDnzBJwwmBX0Rbju3p9NaY6LWv+1XdDI7uAntPHslzpU1i\n\tQBi0psMCmk7xgNHOCxXmuSGK9l+MeDLSFCRievuDDJkaeiERWWWWNDPQTUqKDZsCHYFy\n\tVscEEc0HYCKJGlR+vCZLeVnailqACp+sxPbNZz+fxZV+DFpSmhsd052o+2z6VjdtA59J\n\tQ78/8V5Xk8ypkE8NGHY9PTQeyew9139hYWHihJ02bBrct6oAVWF31Q8/F8so96NQRDLf\n\t1zEQ==",
        "X-Gm-Message-State": "AOJu0YyJnCyFgM7cv1O1skjq9/6EVMvd2YTFFgJkeEwQ2AI6BJrTDV3H\n\t2/MNMl3ZDbUEa9CsnO6kK/ZPgcCPIWR9av9JD2ogxSCZFABto10ETpVESvBgsKR3JFByhwMROGj\n\twpxijV2EZZjMAzmj/DL5Gq+9WIz3f/M7eEZYHfmmM9OssNekodfa83nx/XNzS0mTjN08cuj6ASc\n\tjucb+0eNCg",
        "X-Gm-Gg": "AeBDievclVEA4NZDn0AfZuspjtnugZ2bAIJuugEsJQkPS+Ezvuz+e+mwd93EofeMc7b\n\tMkGPlZExSEs9t/MDH4z51WpH5HZVPX/xJWs1VrM2uX/MLN6uDalDTQ2nTaUxrX09HgsKnlaSUKP\n\tiGWse/DCn+SF4HCXCDzCvgU05wYBJbBtTS/PDChr4V4Gm8DGfkAPxR9gZ9VdudxhkQ8EsTmqVx5\n\tfEiO5cpruAeif19M4vh6rGYVDaQiHywidiWu2dMvlfGjRP9zOcKKSLeflWLjnkLg+2sf+Co6qUF\n\taHN2s+RtzVoBEBAMs4tQvzKolq6W1BrW2bBrnPif8YbWhWqyYOvllQl3rf9b3sXZQKLakUK2lOb\n\t584GJQ4IpTpvAvyTJxadBC9RAps2K8lEs2Px9aESgcsNw9c4EoVn/Nr+OT/jCpELvou/KVQ2GWv\n\tdgG5QQFLvvkX8P+APDnjD8HpLSz5s59B5K",
        "X-Received": [
            "by 2002:a05:622a:1f88:b0:50b:6a79:45c5 with SMTP id\n\td75a77b69052e-50d62b4fa9fmr294237531cf.22.1775649392915; \n\tWed, 08 Apr 2026 04:56:32 -0700 (PDT)",
            "by 2002:a05:622a:1f88:b0:50b:6a79:45c5 with SMTP id\n\td75a77b69052e-50d62b4fa9fmr294237091cf.22.1775649392433; \n\tWed, 08 Apr 2026 04:56:32 -0700 (PDT)"
        ],
        "From": "Hans de Goede <johannes.goede@oss.qualcomm.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Loic Poulain <loic.poulain@oss.qualcomm.com>,\n\tHans de Goede <johannes.goede@oss.qualcomm.com>",
        "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",
        "Content-Transfer-Encoding": "8bit",
        "X-Authority-Analysis": "v=2.4 cv=Rr716imK c=1 sm=1 tr=0 ts=69d64272 cx=c_pps\n\ta=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=A5OVakUREuEA:10\n\ta=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22\n\ta=eoimf2acIAo5FJnRuUoq:22 a=NEAV23lmAAAA:8 a=vij-Psz-cUdvEssJWosA:9\n\ta=uxP6HrT_eTzRwkO_Te1X:22",
        "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDA4MDExMCBTYWx0ZWRfXxyqMX7eX5rwS\n\tjQ+22WrI6/xL/PPm962KE0yVErXHT/Z5PsFu9fTkiaEj/qLPr0AfAkviLd2b1xdd/MPtEY9Nkq6\n\tJR/JlJoLnBQoZ6ydHSuNZVV5DlgXK+CZFY8FWQNY0pNol8tRjL5QutwPlkvSnmZmNCJklIHlEUL\n\te+W+uB/WTRO50YjNKwritauspalHqs2HOirQ7/hjasdUhDNbWW8ntbYWqq383seEnebMl8jsIt1\n\tJZ2FQoDRZu+K1RC/FdeDiRq1k2a3cqb7nyTAehiFZPHKSDKHSzd7FuMnt5gt5/9N6axoKFF9e1C\n\tfTzoFJnBiXiC6XN+tp+17Uv/jHdlB4/yDOZJL2FhdSTsU2eWn+Y+HDQLs2L6a+zpdkmPfA1F//R\n\tr2/nhldzLPBJGkeGLVI0uNR+2EryOz52WIqk/EgDlaiYjkAGp/0ZZjBCIOpr+uPLC0HhqkxIEjf\n\tTknHB3V003VJq+wzAYQ==",
        "X-Proofpoint-ORIG-GUID": "Di0qEjyIRWqTdFdbLoc5BaePg4g7pmGk",
        "X-Proofpoint-GUID": "Di0qEjyIRWqTdFdbLoc5BaePg4g7pmGk",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n\tengine=ICAP:2.0.293, Aquarius:18.0.1143, Hydra:6.1.51,\n\tFMLib:17.12.100.49\n\tdefinitions=2026-04-08_03,2026-04-08_01,2025-10-01_01",
        "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n\timpostorscore=0 priorityscore=1501 suspectscore=0 malwarescore=0\n\tclxscore=1015 bulkscore=0 phishscore=0 adultscore=0 spamscore=0\n\tlowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc=\n\troute=outbound adjust=0 reason=mlx scancount=1\n\tengine=8.22.0-2604010000\n\tdefinitions=main-2604080110",
        "X-BeenThere": "libcamera-devel@lists.libcamera.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "<libcamera-devel.lists.libcamera.org>",
        "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>",
        "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>",
        "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>",
        "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>",
        "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>",
        "Errors-To": "libcamera-devel-bounces@lists.libcamera.org",
        "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"
    },
    "content": "Hi All,\n\nOn Qualcomm chips any CSI-phy can be connected to any CSI-decoder and\nany CSI-decoder can be connected to any Video-Front-End (VFE, DMA write\nengine and co). Basically there are 2 big cross-switches between PHYs\nand decoders and between decoders and VFEs which can be controlled through\nmedia-controller links.\n\nAs such the entite CAMSS block with CSI-phys, decoders and VFEs is\nrepresented to userspace as a single /dev/media# node.\n\nAs long as active links from unrelated cameras are not touched when setting\nup a new camera 2 independent raw data-streams can be run and managed by 2\ndifferent libcamera instances.\n\nBut the standard locking of the /dev/media# node by the first libcamera\ninstance to start streaming from one of the cameras blocks this.\n\nThis patch series allows pipeline-handlers to opt-out of the base\nPipelineHandler MediaDevice locking and adds 2 helpers for pipeline\nhandlers to implement finer grained locking.\n\nThis is the second of 3 series which together introduce the camss pipeline\nhandler. Here is a branch with all 3 series:\nhttps://github.com/jwrdegoede/libcamera/commits/camss_pipeline_v1/\n\nI hope to get this prep series merged while work continues on the camss\npipeline handler itself.\n\nFor an example of how to use this, see this commmit implementing finer\ngrained locking for the camss pipeline handler:\n\nhttps://github.com/jwrdegoede/libcamera/commit/4ffd7b47119978940b543ad0914bf46c767573ad\n\nFor the first patch an alternative approach would be add a lockingRequired\nflag to the MediaDevice class, allowing opting out of the locking on a per\nmedia device base.\n\nRegards,\n\nHans\n\n\nHans de Goede (3):\n  libcamera: pipeline: Allow pipeline-handlers to opt out of locking the\n    media devices\n  libcamera: media_object: Add MediaEntity::disableLinks()\n  libcamera: v4l2_device: add lock() and unlock() methods\n\n include/libcamera/internal/media_object.h     |  1 +\n include/libcamera/internal/pipeline_handler.h |  2 +\n include/libcamera/internal/v4l2_device.h      |  3 ++\n src/libcamera/media_device.cpp                | 16 ++------\n src/libcamera/media_object.cpp                | 27 ++++++++++++++\n src/libcamera/pipeline_handler.cpp            |  8 ++--\n src/libcamera/v4l2_device.cpp                 | 37 +++++++++++++++++++\n 7 files changed, 77 insertions(+), 17 deletions(-)"
}