From: "Gjorgji Rosikopulos (Consultant)" <gjorgji.rosikopulos@oss.qualcomm.com>
To: bod@kernel.org, Bryan O'Donoghue <bryan.odonoghue@linaro.org>,
Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>,
Loic Poulain <loic.poulain@oss.qualcomm.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
Daniel Scally <dan.scally@ideasonboard.com>,
Keke Li <keke.li@amlogic.com>,
Richard Acayan <mailingradian@gmail.com>,
Hans Verkuil <hverkuil@kernel.org>,
Gjorgji Rosikopulos <quic_grosikop@quicinc.com>,
Radoslav Tsvetkov <quic_rtsvetko@quicinc.com>,
Robert Foss <rfoss@kernel.org>,
Milen Mitkov <quic_mmitkov@quicinc.com>
Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 66/74] media: qcom: camss: vfe-780: Produce the AEC Bayer histogram statistics
Date: Thu, 8 Oct 2026 14:17:14 +0300 [thread overview]
Message-ID: <f3a4b60b-f992-4a0d-af9e-dd0fe7ae1ac8@oss.qualcomm.com> (raw)
In-Reply-To: <20261005-linux-mainline-7-2-sm8650-hdk-rfc-0-v1-66-ed985aefd611@kernel.org>
Hi Bryan,
On 10/5/2026 8:14 PM, bod@kernel.org wrote:
> From: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
>
> Stream the AEC Bayer histogram on the pixel line's statistics node, as
> the V4L2_META_FMT_QCOM_ISP_STATS block CAMSS_STATS_AEC_BHIST.
>
> The AEC BHIST write master is frame based, PLAIN64, in completion group
> 4. Write master addresses are 256 byte aligned and the v4l2-isp block
> payloads are not, so the write master fills a kernel buffer and the
> completion of group 4 serialises it into the next queued statistics
> buffer with v4l2_isp_stats_init_buffer() and
> v4l2_isp_stats_init_block(). The copy runs a frame before the write
> master writes the kernel buffer again.
>
> As with image buffers, each frame consumes one programmed write master
> address, so the write master is handed the kernel buffer once per queued
> statistics buffer. Without a queued buffer it has no address and the
> frame's statistics are dropped; the sequence numbers show the gap.
>
> The statistics output runs when msm_vfeN_stats is streaming as the
> image node starts. The node may stop and start again while the line
> runs: vfe_flush_buffers() now forgets the buffers it returns.
>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
> drivers/media/platform/qcom/camss/camss-vfe-780.c | 64 +++++++++++++++++++++
> drivers/media/platform/qcom/camss/camss-vfe.c | 68 +++++++++++++++++++++++
> drivers/media/platform/qcom/camss/camss-vfe.h | 9 +++
> 3 files changed, 141 insertions(+)
>
> diff --git a/drivers/media/platform/qcom/camss/camss-vfe-780.c b/drivers/media/platform/qcom/camss/camss-vfe-780.c
> index 1d00a3656d7c3..7642d9d4500de 100644
> --- a/drivers/media/platform/qcom/camss/camss-vfe-780.c
> +++ b/drivers/media/platform/qcom/camss/camss-vfe-780.c
> @@ -114,8 +114,49 @@ static void vfe_wm_start_pix(struct vfe_device *vfe, struct vfe_line *line)
> }
> }
>
> +static struct vfe_output *vfe_stats_output(struct vfe_line *line, u8 wm)
> +{
> + unsigned int o;
> +
> + if (!line->is_pix)
> + return NULL;
> +
> + for (o = 1; o < line->num_outputs; o++)
> + if (line->output[o].pad == MSM_VFE_PAD_SRC_STATS &&
> + line->output[o].wm_num &&
> + line->output[o].wm[0].bus_client == wm)
> + return &line->output[o];
> +
> + return NULL;
> +}
> +
> +/* Statistics write masters are frame based and fill the output's kernel buffer */
> +static void vfe_wm_start_stats(struct vfe_device *vfe, struct vfe_output *output)
> +{
> + u8 wm = output->wm[0].bus_client;
> +
> + writel(0, vfe->base + VFE_BUS_WM_IMAGE_CFG_0(wm));
> + writel(0, vfe->base + VFE_BUS_WM_IMAGE_CFG_1(wm));
> + writel(1, vfe->base + VFE_BUS_WM_IMAGE_CFG_2(wm));
> + writel(VFE_BUS_WM_PACKER_FMT_V3_PLAIN_64,
> + vfe->base + VFE_BUS_WM_PACKER_CFG(wm));
> +
> + /* no dropped frames, one irq per frame */
> + writel(0, vfe->base + VFE_BUS_WM_FRAMEDROP_PERIOD(wm));
> + writel(1, vfe->base + VFE_BUS_WM_FRAMEDROP_PATTERN(wm));
> + writel(0, vfe->base + VFE_BUS_WM_IRQ_SUBSAMPLE_PERIOD(wm));
> + writel(1, vfe->base + VFE_BUS_WM_IRQ_SUBSAMPLE_PATTERN(wm));
> +
> + writel(1, vfe->base + VFE_BUS_WM_MMU_PREFETCH_CFG(wm));
> + writel(0xFFFFFFFF, vfe->base + VFE_BUS_WM_MMU_PREFETCH_MAX_OFFSET(wm));
> +
> + writel(WM_CFG_EN | WM_CFG_MODE, vfe->base + VFE_BUS_WM_CFG(wm));
> +}
> +
> static void vfe_wm_start(struct vfe_device *vfe, u8 wm, struct vfe_line *line)
> {
> + struct vfe_output *stats = vfe_stats_output(line, wm);
> +
> struct v4l2_pix_format_mplane *pix =
> &line->output[0].video_out.active_fmt.fmt.pix_mp;
>
> @@ -126,6 +167,11 @@ static void vfe_wm_start(struct vfe_device *vfe, u8 wm, struct vfe_line *line)
>
> writel(0x0, vfe->base + VFE_BUS_WM_TEST_BUS_CTRL);
>
> + if (stats) {
> + vfe_wm_start_stats(vfe, stats);
> + return;
> + }
> +
> if (line->is_pix) {
> vfe_wm_start_pix(vfe, line);
> return;
> @@ -157,6 +203,11 @@ static void vfe_wm_stop(struct vfe_device *vfe, u8 wm, struct vfe_line *line)
> struct vfe_output *output = &line->output[0];
> unsigned int i;
>
> + if (vfe_stats_output(line, wm)) {
> + writel(0, vfe->base + VFE_BUS_WM_CFG(wm));
> + return;
> + }
> +
> for (i = 0; i < output->wm_num; i++)
> writel(0, vfe->base + VFE_BUS_WM_CFG(output->wm[i].bus_client));
> }
> @@ -165,8 +216,19 @@ static void vfe_wm_update(struct vfe_device *vfe, u8 wm, struct camss_buffer *bu
> struct vfe_line *line)
> {
> struct vfe_output *output = &line->output[0];
> + struct vfe_output *stats;
> unsigned int i;
>
> + /*
> + * Each frame consumes one programmed address, as for images: hand the
> + * write master the output's kernel buffer once per queued buffer.
> + */
> + stats = vfe_stats_output(line, wm);
> + if (stats) {
> + writel(stats->dma_addr >> 8, vfe->base + VFE_BUS_WM_IMAGE_ADDR(wm));
> + return;
> + }
> +
> /* camss-video sets addr[1] = addr[0] + bytesperline * height for NV12 */
> for (i = 0; i < output->wm_num; i++) {
> u32 addr = buffer->addr[output->wm[i].plane];
> @@ -237,6 +299,8 @@ static void vfe_subdev_init(struct device *dev, struct vfe_device *vfe)
> vfe_add_ds(&pix->output[1], MSM_VFE_PAD_SRC_DS4, VFE_WM_VIDEO_DS_4, VFE_V3_COMP_GRP_0);
> vfe_add_ds(&pix->output[2], MSM_VFE_PAD_SRC_DS16, VFE_WM_VIDEO_DS_16, VFE_V3_COMP_GRP_0);
> vfe_add_stats(&pix->output[3], VFE_WM_STATS_AEC_BHIST, VFE_V3_COMP_GRP_4);
> + if (vfe_alloc_stats(vfe, &pix->output[3]))
> + pix->output[3].wm_num = 0; /* no statistics without their buffer */
> vfe_add_params(&pix->output[4], VFE_V3_COMP_GRP_0);
>
> /* PIX mode */
> diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c b/drivers/media/platform/qcom/camss/camss-vfe.c
> index b90b538c1aaaf..1522f1046d8dd 100644
> --- a/drivers/media/platform/qcom/camss/camss-vfe.c
> +++ b/drivers/media/platform/qcom/camss/camss-vfe.c
> @@ -623,6 +623,63 @@ u32 vfe_hw_version(struct vfe_device *vfe)
> * @vfe: VFE Device
> * @wm: Write master id
> */
> +static const struct v4l2_isp_stats_block_type_info vfe_stats_block_info[] = {
> + [CAMSS_STATS_AEC_BHIST] = { .size = sizeof(struct camss_stats_bhist) },
> +};
> +
> +/*
> + * vfe_alloc_stats - Allocate the write master target of a statistics output
> + * @vfe: VFE device
> + * @output: statistics output
> + *
> + * Write master addresses are 256 byte aligned and the v4l2-isp block payloads
> + * are not, so statistics are written to a kernel buffer and copied into the
> + * userspace buffer when their completion group fires.
> + *
> + * Return 0 on success or -ENOMEM
> + */
> +int vfe_alloc_stats(struct vfe_device *vfe, struct vfe_output *output)
> +{
> + output->dma_size = sizeof_field(struct camss_stats_bhist, bins);
> + output->dma_vaddr = dmam_alloc_coherent(vfe->camss->dev,
> + output->dma_size,
> + &output->dma_addr, GFP_KERNEL);
> +
> + return output->dma_vaddr ? 0 : -ENOMEM;
> +}
> +
> +/*
> + * vfe_stats_fill - Serialise a frame's statistics into a userspace buffer
> + * @vfe: VFE device
> + * @output: statistics output
> + * @buf: buffer to fill
> + *
> + * Runs from the completion of the statistics group, a frame before the write
> + * master writes the kernel buffer again.
> + */
> +static void vfe_stats_fill(struct vfe_device *vfe, struct vfe_output *output,
> + struct camss_buffer *buf)
> +{
> + struct v4l2_isp_buffer *stats = vb2_plane_vaddr(&buf->vb.vb2_buf, 0);
> + struct v4l2_isp_block_header *block;
> + struct camss_stats_bhist *bhist;
> +
> + v4l2_isp_stats_init_buffer(stats, V4L2_ISP_VERSION_V1);
> +
> + block = v4l2_isp_stats_init_block(vfe->camss->dev, stats,
> + vfe_stats_block_info,
> + ARRAY_SIZE(vfe_stats_block_info),
> + CAMSS_STATS_AEC_BHIST,
> + CAMSS_STATS_MAX_PAYLOAD);
> + if (!IS_ERR(block)) {
> + bhist = container_of(block, struct camss_stats_bhist, header);
> + memcpy(bhist->bins, output->dma_vaddr, sizeof(bhist->bins));
> + }
According to my understanding, the v4l2-isp documentation explains that parameters
are copied to prevent userspace from updating and potentially corrupting the engine
configuration, which could pose a security risk
(though I don't think this concern applies to lookup tables like gamma/lsc).
That's a separate discussion anyway.
What I don't understand is why statistics are being copied. They should work the same way as
image buffers—from the engine's perspective, they're just buffers containing data, and from
userspace's perspective, they should be identical.
I may have missed an earlier discussion about this, but copying one or more statistics on
every frame (and there will be more in the future) doesn't seem right.
~Gjorgji
next prev parent reply other threads:[~2026-10-08 11:17 UTC|newest]
Thread overview: 100+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <2bmnjEGElR9T_ArfViwpYiEKTtnqkmH2Ly0MiZJCxhhVR_O0dZOW-Cl983_7fLBFoxMc_PBuNK6FsBbK1JLXQA==@protonmail.internalid>
2026-10-05 17:13 ` [PATCH 00/74] RFC: Switch on IFE YUV, Stats and Params support for sm8650 Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 01/74] media: qcom: camss: vfe: Rename gen3 back to vfe780 Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 02/74] media: qcom: camss: vfe: Separate VFE 690 from VFE 780/880 Bryan O'Donoghue
2026-10-07 11:07 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:13 ` [PATCH 03/74] media: uapi: v4l2-isp: Add extensible statistics bod
2026-10-05 17:13 ` [PATCH 04/74] media: Documentation: uapi: Update V4L2 ISP for extensible stats bod
2026-10-05 17:13 ` [PATCH 05/74] media: v4l2-isp: Rename v4l2_isp_params_buffer_size bod
2026-10-05 17:13 ` [PATCH 06/74] media: v4l2-isp: Add per-block validation callback bod
2026-10-05 17:13 ` [PATCH 07/74] media: amlogic-c3: Implement per-block validation bod
2026-10-05 17:13 ` [PATCH 08/74] media: v4l2-isp: Add helpers for stats buffer bod
2026-10-05 17:13 ` [PATCH 09/74] media: uapi: Add CAMSS ISP configuration definition bod
2026-10-05 17:13 ` [PATCH 10/74] media: Documentation: uapi: Add qcom-camss ISP params documentation bod
2026-10-05 17:13 ` [PATCH 11/74] media: qcom: camss: Fix invalid declaration of PIX for SDM670 bod
2026-10-05 17:13 ` [PATCH 12/74] media: qcom: camss: Fix invalid declaration of PIX for SDM845 bod
2026-10-05 17:13 ` [PATCH 13/74] media: qcom: camss: Fix invalid declaration of PIX for sc8280xp bod
2026-10-05 17:13 ` [PATCH 14/74] media: qcom: camss: Fix invalid declaration of PIX for x1e80100 bod
2026-10-05 17:13 ` [PATCH 15/74] media: qcom: camss: csid: Configure the stream on every s_stream bod
2026-10-07 8:46 ` Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 16/74] media: qcom: camss: Switch existing vfe_formats_pix_845 to vfe_formats_rdi_845 Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 17/74] media: qcom: camss: Define PIX formats for x1e PIX interface Bryan O'Donoghue
2026-10-07 8:22 ` Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 18/74] media: qcom: camss: vfe: Add helper vfe_bus_v3_packer_fmt() Bryan O'Donoghue
2026-10-07 11:25 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:13 ` [PATCH 19/74] media: qcom: camss: vfe: Represent output as an array instead of a singleton Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 20/74] media: qcom: camss: vfe: Move video_out from vfe_line to vfe_output Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 21/74] media: qcom: camss: vfe: Represent vfe wm inside of a struct Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 22/74] media: qcom: camss: vfe: Add is_pix to struct line Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 23/74] media: qcom: camss: vfe: Add comp_group to struct vfe_wm Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 24/74] media: qcom: camss: vfe: Define vfe v3 completion group enum Bryan O'Donoghue
2026-10-08 5:52 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:13 ` [PATCH 25/74] media: qcom: camss: vfe: Define output based VFE controls Bryan O'Donoghue
2026-10-08 5:55 ` Gjorgji Rosikopulos (Consultant)
2026-10-08 11:17 ` Bryan O'Donoghue
2026-10-08 11:35 ` Gjorgji Rosikopulos (Consultant)
2026-10-08 15:16 ` Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 26/74] media: qcom: camss: vfe: Call vfe_subdev_init after not before significant enumeration Bryan O'Donoghue
2026-10-08 5:55 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:13 ` [PATCH 27/74] media: qcom: camss: vfe: Move legacy VFE bus client assignment to msm_vfe_subdev_init Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 28/74] media: qcom: camss: vfe: Add planes identifier to struct wm Bryan O'Donoghue
2026-10-08 5:56 ` Gjorgji Rosikopulos (Consultant)
2026-10-08 13:08 ` Bryan O'Donoghue
2026-10-05 17:13 ` [PATCH 29/74] media: qcom: camss: vfe: Specify number of pads via line->num_pads Bryan O'Donoghue
2026-10-08 6:03 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:14 ` [PATCH 30/74] media: qcom: camss: vfe: Add support for starting multiple write-masters in one output's group Bryan O'Donoghue
2026-10-08 6:09 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:14 ` [PATCH 31/74] media: qcom: camss: vfe: Add support for updating multiple write-masters within an output group Bryan O'Donoghue
2026-10-08 6:10 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:14 ` [PATCH 32/74] media: qcom: camss: vfe: Update an output group's write masters on buffer done bod
2026-10-05 17:14 ` [PATCH 33/74] media: qcom: camss: vfe: Add support for stopping outputs which contain multiple write masters Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 34/74] media: qcom: camss: vfe: Stop an output group once bod
2026-10-05 17:14 ` [PATCH 35/74] media: qcom: camss: vfe: Add helper __vfe_pix_format_is_raw Bryan O'Donoghue
2026-10-08 6:12 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:14 ` [PATCH 36/74] media: qcom: camss: csid: Add helper function csid_ipp_bayer_pattern bod
2026-10-05 17:14 ` [PATCH 37/74] media: qcom: camss: vfe: Decompose repeated code down to __vfe_src_pad_default() Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 38/74] media: qcom: camss: vfe: Eliminate ever expanding src_pad_code switch logic Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 39/74] media: qcom: camss: vfe: Add Bayer to YUV conversion switch cases for PIX Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 40/74] media: qcom: camss: vfe-gen3: Define full array of write-masters Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 41/74] media: qcom: camss: vfe-gen3: Enable PIX formats on PIX interfaces Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 42/74] media: qcom: camss: vfe: Pass struct line to wm_stop Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 43/74] media: qcom: camss: vfe-780: Use bus-client to derive write master index Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 44/74] media: qcom: camss: vfe-780: Switch on YUV pix path Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 45/74] media: qcom: camss: vfe: Add support for pix pad data-types Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 46/74] media: qcom: camss: vfe: Add helper methods to enumerate output descriptors Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 47/74] media: qcom: camss: Pass new struct camss_buf_done_info to camss_buf_done bod
2026-10-05 17:14 ` [PATCH 48/74] media: qcom: camss: Add a status field to camss_buf_done_info bod
2026-10-05 17:14 ` [PATCH 49/74] media: qcom: camss: csid-gen3: Enable the IPP path bod
2026-10-05 17:14 ` [PATCH 50/74] media: qcom: camss: vfe: Pass the completion info to vfe_buf_done() bod
2026-10-05 17:14 ` [PATCH 51/74] media: qcom: camss: vfe: Pass the buffer to vfe_wm_update() bod
2026-10-05 17:14 ` [PATCH 52/74] media: qcom: camss: Add the SM8650 IFE pixel pipe configuration bod
2026-10-05 17:14 ` [PATCH 53/74] media: qcom: camss: csid-gen3: Define the IPP reg update port in the header bod
2026-10-05 17:14 ` [PATCH 54/74] media: qcom: camss: vfe-880: Program the pixel pipe outside output_lock Bryan O'Donoghue
2026-10-05 17:14 ` [PATCH 55/74] media: qcom: camss: vfe: Make is_pix the only test for the pixel path bod
2026-10-05 17:14 ` [PATCH 56/74] media: qcom: camss: csid-gen3: Route IPP completions to the port the IPP feeds bod
2026-10-05 17:14 ` [PATCH 57/74] media: qcom: camss: vfe-780: Add full-resolution YUV on the PIX line bod
2026-10-05 17:14 ` [PATCH 58/74] media: uapi: Add CAMSS ISP statistics definition bod
2026-10-08 11:23 ` Gjorgji Rosikopulos (Consultant)
2026-10-08 13:40 ` Bryan O'Donoghue
2026-10-08 15:18 ` Gjorgji Rosikopulos (Consultant)
2026-10-05 17:14 ` [PATCH 59/74] media: Documentation: uapi: Add qcom-camss ISP statistics bod
2026-10-05 17:14 ` [PATCH 60/74] media: qcom: camss: vfe: Select line-based mode for the pixel path's video node bod
2026-10-05 17:14 ` [PATCH 61/74] media: qcom: camss: vfe: Size the pixel path clock by its pixels per clock bod
2026-10-05 17:14 ` [PATCH 62/74] media: qcom: camss: vfe: Size the outputs for the PIX line and set up each one bod
2026-10-05 17:14 ` [PATCH 63/74] media: qcom: camss: video: Support metadata capture nodes bod
2026-10-05 17:14 ` [PATCH 64/74] media: qcom: camss: vfe: Register a statistics node for the pixel line bod
2026-10-05 17:14 ` [PATCH 65/74] media: qcom: camss: vfe: Complete pixel line outputs on their own completion group bod
2026-10-05 17:14 ` [PATCH 66/74] media: qcom: camss: vfe-780: Produce the AEC Bayer histogram statistics bod
2026-10-07 8:49 ` Bryan O'Donoghue
2026-10-08 11:17 ` Gjorgji Rosikopulos (Consultant) [this message]
2026-10-05 17:14 ` [PATCH 67/74] media: uapi: Add the CAMSS AEC Bayer histogram configuration bod
2026-10-05 17:14 ` [PATCH 68/74] media: v4l2: Add the Qualcomm CAMSS ISP parameters format bod
2026-10-05 17:14 ` [PATCH 69/74] media: Documentation: uapi: Add the CAMSS IFE parameters bod
2026-10-05 17:14 ` [PATCH 70/74] media: qcom: camss: video: Support metadata output nodes bod
2026-10-05 17:14 ` [PATCH 71/74] media: qcom: camss: vfe: Register and apply a parameters node for the pixel line bod
2026-10-05 17:14 ` [PATCH 72/74] media: qcom: camss: vfe-780: Apply the AEC Bayer histogram parameters bod
2026-10-05 17:14 ` [PATCH 73/74] media: qcom: camss: vfe-780: Drive the write masters through the output ops bod
2026-10-05 17:14 ` [PATCH 74/74] media: qcom: camss: vfe: Pass the write master its address again bod
2026-10-07 8:47 ` Bryan O'Donoghue
2026-10-06 7:06 ` [PATCH 00/74] RFC: Switch on IFE YUV, Stats and Params support for sm8650 Jacopo Mondi
2026-10-07 8:41 ` Bryan O'Donoghue
2026-10-08 12:55 ` Bryan O'Donoghue
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f3a4b60b-f992-4a0d-af9e-dd0fe7ae1ac8@oss.qualcomm.com \
--to=gjorgji.rosikopulos@oss.qualcomm.com \
--cc=bod@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=dan.scally@ideasonboard.com \
--cc=hverkuil@kernel.org \
--cc=jacopo.mondi@ideasonboard.com \
--cc=keke.li@amlogic.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=loic.poulain@oss.qualcomm.com \
--cc=mailingradian@gmail.com \
--cc=mchehab@kernel.org \
--cc=quic_grosikop@quicinc.com \
--cc=quic_mmitkov@quicinc.com \
--cc=quic_rtsvetko@quicinc.com \
--cc=rfoss@kernel.org \
--cc=vladimir.zapolskiy@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®