Show a cover letter.

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

{
    "id": 20989,
    "url": "https://patchwork.libcamera.org/api/1.1/covers/20989/?format=api",
    "web_url": "https://patchwork.libcamera.org/cover/20989/",
    "project": {
        "id": 1,
        "url": "https://patchwork.libcamera.org/api/1.1/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": "<20240822153527.25320-1-laurent.pinchart+renesas@ideasonboard.com>",
    "date": "2024-08-22T15:35:20",
    "name": "[v2,0/7] media: v4l2: Improve media link validation",
    "submitter": {
        "id": 204,
        "url": "https://patchwork.libcamera.org/api/1.1/people/204/?format=api",
        "name": "Laurent Pinchart",
        "email": "laurent.pinchart+renesas@ideasonboard.com"
    },
    "mbox": "https://patchwork.libcamera.org/cover/20989/mbox/",
    "series": [
        {
            "id": 4533,
            "url": "https://patchwork.libcamera.org/api/1.1/series/4533/?format=api",
            "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=4533",
            "date": "2024-08-22T15:35:20",
            "name": "media: v4l2: Improve media link validation",
            "version": 2,
            "mbox": "https://patchwork.libcamera.org/series/4533/mbox/"
        }
    ],
    "comments": "https://patchwork.libcamera.org/api/covers/20989/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 780C4C323E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu, 22 Aug 2024 15:35:33 +0000 (UTC)",
            "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 839B1633D1;\n\tThu, 22 Aug 2024 17:35:32 +0200 (CEST)",
            "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id DBC9163369\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 22 Aug 2024 17:35:30 +0200 (CEST)",
            "from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9C9BF899;\n\tThu, 22 Aug 2024 17:34:26 +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=\"sGOq2dDg\"; dkim-atps=neutral",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1724340866;\n\tbh=ynR/rlt2GTIBZ6UQWXHvIDOQFJGcuX9UXR6Ua9Iv6O8=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=sGOq2dDgB6V8mJ7SkGjZNeZtyNmsfo5V1Wjxl/UwNwGChBH+Eymh/N7V+QP48kg2H\n\t7X3IZvn8oVJsC0fHCLCtQj73P3D0V6zYUsc/e6sq0+s3vwtI0PJBPbUV0T5m+8q7XL\n\tiKYX4JiLq01dmYQd36s/1/t7SOUa+740kD5ayegU=",
        "From": "Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>",
        "To": "libcamera-devel@lists.libcamera.org",
        "Cc": "Chen-Yu Tsai <wens@csie.org>, Eugen Hristev <eugen.hristev@collabora.com>,\n\tHans Verkuil <hverkuil-cisco@xs4all.nl>,\n\tJacopo Mondi <jacopo.mondi@ideasonboard.com>,\n\tKieran Bingham <kieran.bingham@ideasonboard.com>,\n\tMaxime Ripard <mripard@kernel.org>, Sakari Ailus <sakari.ailus@iki.fi>,\n\tTomi Valkeinen <tomi.valkeinen@ideasonboard.com>,\n\tlinux-renesas-soc@vger.kernel.org, linux-sunxi@lists.linux.dev",
        "Subject": "[PATCH v2 0/7] media: v4l2: Improve media link validation",
        "Date": "Thu, 22 Aug 2024 18:35:20 +0300",
        "Message-ID": "<20240822153527.25320-1-laurent.pinchart+renesas@ideasonboard.com>",
        "X-Mailer": "git-send-email 2.44.2",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "Hello,\n\nThis patch series improves the link validation helpers to make it easier\nfor drivers to validate all links in a pipeline.\n\nThe vast majority of drivers use the v4l2_subdev_link_validate()\nfunction as their .link_validate() handler for subdevs. This correctly\nvalidates subdev-to-subdev links. For links between subdevs and video\ncapture devices, a few drivers implement the .link_validate() operation\nof their video devices, while others implement manual validation in\ntheir .streamon() handler, or don't implement validation at all. Links\nbetween video output devices are in an even worse state, as the link\nvalidation logic at pipeline start time does not call the\n.link_validate() operation on the source side of a link, leaving manual\nvalidation in .streamon() the only option. Adding insult to injury,\nv4l2_subdev_link_validate() prints a warning when the link's source is\nnot a subdev, which forces drivers to implement a manual subdev link\nvalidation handler for subdevs connected to output video nodes.\n\nIt turns out that v4l2_subdev_link_validate() is even used in the\n.link_validate() implementation of video devices by two drivers. This is\nclearly wrong, and is addressed by patches 1/7 to 3/7. Note that patch\n3/7 should ideally implement real validation of the link between the\nsubdev and video capture device, but that requires understanding of the\ndriver's logic as well as testing, so I have left it out as an exercise\nfor the driver's maintainer. The patch doesn't introduce any regression.\n\nPatch 4/7 then starts refactoring the v4l2_subdev_link_validate() to\nseparate the current warning in two categories, with a WARN_ON() for an\nissue that indicates a clear driver bug (and does not occur in any\ndriver in mainline at the moment), and keeping the pr_warn_once() for\nother issues that are present in multiple drivers.\n\nPatch 5/7 continues with expanding v4l2_subdev_link_validate() to better\nsupport links from video output devices to subdevs, delegating the\nvalidation to the video output device's .link_validate() operation. This\nallows using v4l2_subdev_link_validate() for all subdevs in a driver,\nregardless of whether they are connected to other subdevs, video capture\ndevices or video output devices, and implementing all the link\nvalidation for video devices in their .link_validate() operation.\n\nPatches 6/7 and 7/7 then address the v4l2_subdev_link_validate() warning\nfor the vsp1 driver. Patch 6/7 silences the warning. This is\nunfortunately done with a workaround, as the ideal implementation,\nmoving all validation for video devices to their .link_validate()\noperation as showcased in patch 7/7, breaks operation of the vsp1 unit\ntest suite. While that is fixable in the test suite, it indicates that\nother userspace applications may also break as a result.\n\nTo my great sadness, I had to mark patch 7/7 as [DNI]. This does not\nmake the v4l2_subdev_link_validate() improvements in patch 5/7\npointless, as they are useful for new drivers, as well as drivers that\ndon't include multiple video devices in a pipeline.\n\nLaurent Pinchart (7):\n  media: microchip-isc: Drop v4l2_subdev_link_validate() for video\n    devices\n  media: sun4i_csi: Implement link validate for sun4i_csi subdev\n  media: sun4i_csi: Don't use v4l2_subdev_link_validate() for video\n    device\n  media: v4l2-subdev: Refactor warnings in v4l2_subdev_link_validate()\n  media: v4l2-subdev: Support hybrid links in\n    v4l2_subdev_link_validate()\n  media: renesas: vsp1: Implement .link_validate() for video devices\n  [DNI] media: renesas: vsp1: Validate all links through\n    .link_validate()\n\n .../platform/microchip/microchip-isc-base.c   |  19 +---\n .../media/platform/renesas/vsp1/vsp1_video.c  | 104 +++++++++---------\n .../platform/sunxi/sun4i-csi/sun4i_csi.c      |  12 ++\n drivers/media/v4l2-core/v4l2-subdev.c         |  50 +++++++--\n include/media/v4l2-subdev.h                   |   6 +\n 5 files changed, 115 insertions(+), 76 deletions(-)\n\n\nbase-commit: a043ea54bbb975ca9239c69fd17f430488d33522"
}