Cover Letter Detail
Show a cover letter.
GET /api/covers/23954/?format=api
{ "id": 23954, "url": "https://patchwork.libcamera.org/api/covers/23954/?format=api", "web_url": "https://patchwork.libcamera.org/cover/23954/", "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": "<20250725-multicontext-v1-0-ea558291e101@ideasonboard.com>", "date": "2025-07-25T10:33:45", "name": "[0/9] libcamera: Support for multi-context operations", "submitter": { "id": 143, "url": "https://patchwork.libcamera.org/api/people/143/?format=api", "name": "Jacopo Mondi", "email": "jacopo.mondi@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/cover/23954/mbox/", "series": [ { "id": 5329, "url": "https://patchwork.libcamera.org/api/series/5329/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5329", "date": "2025-07-25T10:33:45", "name": "libcamera: Support for multi-context operations", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5329/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/covers/23954/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 2676CC3237\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri, 25 Jul 2025 10:34:00 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C0712690B2;\n\tFri, 25 Jul 2025 12:33:58 +0200 (CEST)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 58F7869071\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri, 25 Jul 2025 12:33:57 +0200 (CEST)", "from [192.168.0.172] (mob-5-90-139-29.net.vodafone.it\n\t[5.90.139.29])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 791F878E;\n\tFri, 25 Jul 2025 12:33:17 +0200 (CEST)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"h98uesZN\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1753439597;\n\tbh=OyxdGg/MnzknpPmqu3CZEm0TiSWf8wMZKkhjSJR7zsc=;\n\th=From:Subject:Date:To:Cc:From;\n\tb=h98uesZNtFBp/IaoVrEU0DXOXd+QxE65YFa9k56LEFQ/C1O1UkoyW1RQrYTYJ9IXF\n\tLiz7nPFWgbyfZKqDaJWibqoSb735JehC7KbEEaDQaRhuILePdRjbOK02+B8h2Yu7vT\n\tnKmQGcdK2f3Zj/kbzN/cLDwUlBGNYUnT21JV9RG8=", "From": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>", "Subject": "[PATCH 0/9] libcamera: Support for multi-context operations", "Date": "Fri, 25 Jul 2025 12:33:45 +0200", "Message-Id": "<20250725-multicontext-v1-0-ea558291e101@ideasonboard.com>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "X-B4-Tracking": "v=1; b=H4sIAIldg2gC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE\n\tvPSU3UzU4B8JSMDI1MDcyMT3dzSnJLM5Py8ktSKEt0U8zQLE1Mzo6S0JHMloJaCotS0zAqwcdG\n\txtbUAmvKHEF4AAAA=", "X-Change-ID": "20250724-multicontext-d7f84562bfb7", "To": "libcamera-devel@lists.libcamera.org", "Cc": "Jacopo Mondi <jacopo.mondi@ideasonboard.com>", "X-Mailer": "b4 0.14.2", "X-Developer-Signature": "v=1; a=openpgp-sha256; l=3073;\n\ti=jacopo.mondi@ideasonboard.com; h=from:subject:message-id;\n\tbh=OyxdGg/MnzknpPmqu3CZEm0TiSWf8wMZKkhjSJR7zsc=;\n\tb=owEBbQKS/ZANAwAKAXI0Bo8WoVY8AcsmYgBog12Th7TKVXBBA/c9Qhk7D9tokzC/FXyURN5tm\n\tpr5UDrYILCJAjMEAAEKAB0WIQS1xD1IgJogio9YOMByNAaPFqFWPAUCaINdkwAKCRByNAaPFqFW\n\tPPDvD/97Q8WD07iQqKwo3JPnS0m7LY6QE5WVywUsuv2BK4RbtsqvcE20H7MWhL2b0GziKNA69PB\n\tHjjXF9t+90VwWFs/ju1IK7h0YwUfVHRE/+D/I+GkT6Qv+yGAZ6+jdpZ75JknfVj4ORX/xkPM7EU\n\tFUXNWGTRtf6WliUdRke0UM+get0kyYhVnXR2b0yw6tD1dkGbigsS+hqShFnyNPBUYMj8ij9P/iL\n\tYwDziVWBDtzjnLJuytUfLJvkLvxtB6PzHAzcz6aNr7/z674jUeY1GxSzo1DPd9lNWwSMvuRn1Vf\n\tDwwjQH5I8w19qjhNdrjA1XNP6SWGmRDGKA15WhgzUs+++DbPfZ4ZM+g5o7TS5CAYBO+VlZMok7H\n\tsSwEOcI8kcY96CEh3q8rSzmmMR6ZL/2i+dk4MQTzUpc3cAywY3h8xcS1fRkp7iynU2G/bi21a8R\n\tWSqW/Xm8etYC28lQ/zqOH0jBo7uiq75vF0yOCo0240jskYT36QCJftzdaP5/qsKzR6PC0Aa/Ag+\n\t9SLs28PyndwTJ7H1fyccMDQ1pq9S2alklQBz8UA72fXbfD1awkCY6Oan633BRxrIJqGbDCCoovb\n\tZKA/y/O/zOQ7brEGYgOWxbOGsZIVPdYUkAR9bqXag2/QUHYWF/38F9i9o3pDP0gtfscOSpIUyuv\n\ttYwXwAQHNugT0mg==", "X-Developer-Key": "i=jacopo.mondi@ideasonboard.com; a=openpgp;\n\tfpr=72392EDC88144A65C701EA9BA5826A2587AD026B", "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": "Support for multi-context operations has been introduced in the Linux\nkernel by patch series\nhttps://patchwork.linuxtv.org/project/linux-media/list/?series=17092\n\nThis series adds support in libcamera for operating a media device\nusing multi-context support.\n\nThe key design point is around the unique ownership of a media device.\nCurrently the MediaDevice class allows a single user to \"acquire\" and\n\"lock\" it for exclusive use, to avoid concurrently running instances of\nlibcamera to operate the same media graph.\n\nWith multi-context support this constraint is not valid anymore, and a\nmedia device that supports multi-context operations can be operated as\nmany times as the kernel driver allows to.\n\nTo represent this, introduce a SharedMediaDevice class that derives from\nMediaDevice and that implements the \"acquire\" and \"lock\" operations as\nnop.\n\nAlso introduce a MediaContext class that can be created both from a\nMediaDevice and from a SharedMediaDevice and that allows to bind\ndevices together.\n\nMediaContext created from MediaDevice implements binding as a nop. This\nis not an issue as a single instance of a MediaDevice can be created and\nhence bindings is effectively only called once.\n\nA MediaContext created from a SharedMediaDevice allows instead to\nperform proper binding of devices and create an isolated execution\ncontext.\n\nTested on Pi5 both with the multi-context kernel support series applied\nand without to validate that the series doesn't break existing users and\ncan be used on both multi-context aware systems and context unaware\nones.\n\nSigned-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>\n---\nJacopo Mondi (9):\n include: linux: Update media.h with media flags\n include: linux: videodev2: Add BIND_CONTEXT\n include: linux: v4l2-subdev: Add SUBDEV_BIND_CONTEXT\n libcamera: v4l2_videodevice: Add bind context\n libcamera: v4l2_subdevice: Add bind context\n libcamera: media-device: Introduce SharedMediaDevice\n libcamera: media-device: Introduce MediaContext\n [DNI] libcamera: rpi/pisp: Bind devices in a context\n [DNI]: rpi/pisp: Set format and bind ISP subdev\n\n include/libcamera/internal/media_device.h | 62 +++++-\n include/libcamera/internal/v4l2_subdevice.h | 2 +\n include/libcamera/internal/v4l2_videodevice.h | 2 +\n include/linux/media.h | 6 +-\n include/linux/v4l2-subdev.h | 11 ++\n include/linux/videodev2.h | 10 +\n src/libcamera/device_enumerator.cpp | 8 +-\n src/libcamera/media_device.cpp | 274 ++++++++++++++++++++++++++\n src/libcamera/pipeline/rpi/pisp/pisp.cpp | 72 ++++++-\n src/libcamera/v4l2_subdevice.cpp | 18 ++\n src/libcamera/v4l2_videodevice.cpp | 18 ++\n 11 files changed, 472 insertions(+), 11 deletions(-)\n---\nbase-commit: b65df7e7554b45e2d3d7fdb5b37c2ab7df3db4fe\nchange-id: 20250724-multicontext-d7f84562bfb7\n\nBest regards," }