From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FE2CC49361 for ; Fri, 18 Jun 2021 19:24:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3F9A36113E for ; Fri, 18 Jun 2021 19:24:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232895AbhFRT04 (ORCPT ); Fri, 18 Jun 2021 15:26:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230433AbhFRT0z (ORCPT ); Fri, 18 Jun 2021 15:26:55 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 95168C061574; Fri, 18 Jun 2021 12:24:45 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id E7E7C1F44CE8 Message-ID: <4d41485bb1452ec6b9dfa0a23a925c5dd2af72da.camel@collabora.com> Subject: Re: [PATCH v3 6/8] media: hantro: enumerate scaled output formats From: Ezequiel Garcia To: Benjamin Gaignard , hverkuil@xs4all.nl, p.zabel@pengutronix.de, mchehab@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, emil.l.velikov@gmail.com, andrzej.p@collabora.com, jc@kynesim.co.uk, jernej.skrabec@gmail.com, nicolas@ndufresne.ca Cc: kernel@pengutronix.de, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Fri, 18 Jun 2021 16:24:32 -0300 In-Reply-To: <20210618131526.566762-7-benjamin.gaignard@collabora.com> References: <20210618131526.566762-1-benjamin.gaignard@collabora.com> <20210618131526.566762-7-benjamin.gaignard@collabora.com> Organization: Collabora Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.2-1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Benjamin, Thanks for working on this. On Fri, 2021-06-18 at 15:15 +0200, Benjamin Gaignard wrote: > When enumerating the output formats take care of the hardware scaling > capabilities. > For a given input size G2 hardware block is capable of down scale the > output by 2, 4 or 8 factor. When decoding 4K streams that to be could > helpful to save memory bandwidth. > Looking at https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/dev-stateless-decoder.html I see that this case should be covered by the spec. If I understand correctly, it would be: 1. VIDIOC_S_FMT(OUTPUT) 2. VIDIOC_ENUM_FMT(CAPTURE) / VIDIOC_ENUM_FRAMESIZES(CAPTURE) 3. VIDIOC_S_FMT(CAPTURE) 4. VIDIOC_G_FMT(CAPTURE) again to get buffer information. Does v4l2codecs support this case as-is, if changes are needed, I'd like to have the MR ready and reviewed by Nicolas. I know it's a staging driver, but I believe it's important to have users for new cases/feature to avoid bitrotting. > Signed-off-by: Benjamin Gaignard > --- >  drivers/staging/media/hantro/hantro.h         |  4 ++ >  .../staging/media/hantro/hantro_g2_hevc_dec.c | 46 ++++++++++++++++++- >  drivers/staging/media/hantro/hantro_g2_regs.h |  6 +++ >  drivers/staging/media/hantro/hantro_hw.h      |  1 + >  drivers/staging/media/hantro/hantro_v4l2.c    | 10 ++-- >  drivers/staging/media/hantro/imx8m_vpu_hw.c   |  1 + >  6 files changed, 63 insertions(+), 5 deletions(-) > > diff --git a/drivers/staging/media/hantro/hantro.h b/drivers/staging/media/hantro/hantro.h > index 6a21d1e95b34..ca9038b0384a 100644 > --- a/drivers/staging/media/hantro/hantro.h > +++ b/drivers/staging/media/hantro/hantro.h > @@ -71,6 +71,9 @@ struct hantro_irq { >   * @reg_names:                 array of register range names >   * @num_regs:                  number of register range names in the array >   * @postproc_regs:             &struct hantro_postproc_regs pointer > + * @scaling:                   Set possible scaled output formats. > + *                             Returns zero if OK, a negative value in error cases. > + *                             Optional. >   */ >  struct hantro_variant { >         unsigned int enc_offset; > @@ -92,6 +95,7 @@ struct hantro_variant { >         const char * const *reg_names; >         int num_regs; >         const struct hantro_postproc_regs *postproc_regs; > +       int (*scaling)(struct hantro_ctx *ctx, struct v4l2_frmsizeenum *fsize); Please add some .ops field, so we can put this and move init and runtime_resume as well. >  }; >   >  /** > diff --git a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c > index 41dc89ec926c..3a8aa2ff109c 100644 > --- a/drivers/staging/media/hantro/hantro_g2_hevc_dec.c > +++ b/drivers/staging/media/hantro/hantro_g2_hevc_dec.c > @@ -396,6 +396,17 @@ static void set_ref_pic_list(struct hantro_ctx *ctx) >         } >  } >   > +static int down_scale_factor(struct hantro_ctx *ctx) > +{ > +       const struct hantro_hevc_dec_ctrls *ctrls = &ctx->hevc_dec.ctrls; > +       const struct v4l2_ctrl_hevc_sps *sps = ctrls->sps; > + > +       if (sps->pic_width_in_luma_samples == ctx->dst_fmt.width) > +               return 0; > + > +       return DIV_ROUND_CLOSEST(sps->pic_width_in_luma_samples, ctx->dst_fmt.width); > +} > + >  static int set_ref(struct hantro_ctx *ctx) >  { >         const struct hantro_hevc_dec_ctrls *ctrls = &ctx->hevc_dec.ctrls; > @@ -409,6 +420,7 @@ static int set_ref(struct hantro_ctx *ctx) >         size_t mv_offset = hantro_hevc_motion_vectors_offset(sps); >         size_t compress_luma_offset = hantro_hevc_luma_compress_offset(sps); >         size_t compress_chroma_offset = hantro_hevc_chroma_compress_offset(sps); > +       int down_scale = down_scale_factor(ctx); >         u32 max_ref_frames; >         u16 dpb_longterm_e; >         static const struct hantro_reg cur_poc[] = { > @@ -521,8 +533,18 @@ static int set_ref(struct hantro_ctx *ctx) >         hantro_write_addr(vpu, G2_REG_CHR_REF(i), chroma_addr); >         hantro_write_addr(vpu, G2_REG_DMV_REF(i++), mv_addr); >   > -       hantro_write_addr(vpu, G2_ADDR_DST, luma_addr); > -       hantro_write_addr(vpu, G2_ADDR_DST_CHR, chroma_addr); > +       if (down_scale) { > +               chroma_addr = luma_addr + (cr_offset >> down_scale); > +               hantro_reg_write(vpu, &g2_down_scale_e, 1); > +               hantro_reg_write(vpu, &g2_down_scale_y, down_scale >> 2); > +               hantro_reg_write(vpu, &g2_down_scale_x, down_scale >> 2); > +               hantro_write_addr(vpu, G2_DS_DST, luma_addr); > +               hantro_write_addr(vpu, G2_DS_DST_CHR, chroma_addr); > +       } else { > +               hantro_write_addr(vpu, G2_ADDR_DST, luma_addr); > +               hantro_write_addr(vpu, G2_ADDR_DST_CHR, chroma_addr); > +       } > + >         hantro_write_addr(vpu, G2_ADDR_DST_MV, mv_addr); >         hantro_write_addr(vpu, G2_COMP_ADDR_DST, compress_luma_addr); >         hantro_write_addr(vpu, G2_COMP_CHR, compress_chroma_addr); > @@ -603,6 +625,26 @@ static void hantro_g2_check_idle(struct hantro_dev *vpu) >         } >  } >   > +int hantro_g2_hevc_dec_scaling(struct hantro_ctx *ctx, > +                              struct v4l2_frmsizeenum *fsize) Maybe s/hantro_g2_hevc_dec_scaling/hantro_g2_hevc_enum_framesizes would be clear? Is this restricted to HEVC or is it something that will work on VP9 as well? > +{ > +       /** > +        * G2 scaler can scale down by 0, 2, 4 or 8 > +        * use fsize->index has power of 2 diviser > +        **/ Please use /* * */ style. > +       if (fsize->index > 3) > +               return -EINVAL; > + > +       if (!ctx->src_fmt.width || !ctx->src_fmt.height) > +               return -EINVAL; > + > +       fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE; > +       fsize->discrete.width = ctx->src_fmt.width >> fsize->index; > +       fsize->discrete.height = ctx->src_fmt.height >> fsize->index; > + > +       return 0; > +} > + [..] > - /* This only makes sense for coded formats */ > - if (fmt->codec_mode == HANTRO_MODE_NONE) > + /* For non-coded formats check if scaling is possible */ > + if (fmt->codec_mode == HANTRO_MODE_NONE) { > + if (ctx->dev->variant->scaling) > + return ctx->dev->variant->scaling(ctx, fsize); > + > return -EINVAL; I wonder why we are returning EINVAL here. Can we support .vidioc_enum_framesizes for coded and non-coded? Thanks, Ezequiel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C2D4C48BDF for ; Fri, 18 Jun 2021 19:25:04 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D9E186113E for ; Fri, 18 Jun 2021 19:25:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D9E186113E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=2lvSWbxGRhATA/zV6b8C+yaqvPDql++NoM04+g4h8ag=; b=Xpg/QWUdqaPc2+ NiHDvLiAy6PsuMLGcnfvIBSDl2YB0sdt05MuFZr+dNFH6yV9HOrS4GaScbarbjL1Wqhy51yHYqQoU 50OcZU+X7qlnqEhUVOAZqinxOsQk8hAn1Ckg+iP3uGxRpzX7aXJjLKFAyikfcmNdzLsBTqZvi3/Do KHmanSS+zf6fELu6prUg1krRJdzwm9GpVtlQmxsp/uYe/2icdhD+RddBeCy1hP1SOheUx9IbQF34I +nCU0txNUHmuNTbJPPuKGhQr3D5zjTnhKt/xYIqMInjRLYIlWKHG6MTDXwAhwTuc+bSrd9sD2Kljr +LgKnvY0Ry20NBUGJLEg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1luK6t-00FI0e-8G; Fri, 18 Jun 2021 19:24:59 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1luK6f-00FHxw-Lm; Fri, 18 Jun 2021 19:24:47 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id E7E7C1F44CE8 Message-ID: <4d41485bb1452ec6b9dfa0a23a925c5dd2af72da.camel@collabora.com> Subject: Re: [PATCH v3 6/8] media: hantro: enumerate scaled output formats From: Ezequiel Garcia To: Benjamin Gaignard , hverkuil@xs4all.nl, p.zabel@pengutronix.de, mchehab@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, emil.l.velikov@gmail.com, andrzej.p@collabora.com, jc@kynesim.co.uk, jernej.skrabec@gmail.com, nicolas@ndufresne.ca Cc: kernel@pengutronix.de, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Fri, 18 Jun 2021 16:24:32 -0300 In-Reply-To: <20210618131526.566762-7-benjamin.gaignard@collabora.com> References: <20210618131526.566762-1-benjamin.gaignard@collabora.com> <20210618131526.566762-7-benjamin.gaignard@collabora.com> Organization: Collabora User-Agent: Evolution 3.38.2-1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210618_122446_018517_1D390F0C X-CRM114-Status: GOOD ( 30.36 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgQmVuamFtaW4sCgpUaGFua3MgZm9yIHdvcmtpbmcgb24gdGhpcy4KCk9uIEZyaSwgMjAyMS0w Ni0xOCBhdCAxNToxNSArMDIwMCwgQmVuamFtaW4gR2FpZ25hcmQgd3JvdGU6Cj4gV2hlbiBlbnVt ZXJhdGluZyB0aGUgb3V0cHV0IGZvcm1hdHMgdGFrZSBjYXJlIG9mIHRoZSBoYXJkd2FyZSBzY2Fs aW5nCj4gY2FwYWJpbGl0aWVzLgo+IEZvciBhIGdpdmVuIGlucHV0IHNpemUgRzIgaGFyZHdhcmUg YmxvY2sgaXMgY2FwYWJsZSBvZiBkb3duIHNjYWxlIHRoZQo+IG91dHB1dCBieSAyLCA0IG9yIDgg ZmFjdG9yLiBXaGVuIGRlY29kaW5nIDRLIHN0cmVhbXMgdGhhdCB0byBiZSBjb3VsZAo+IGhlbHBm dWwgdG8gc2F2ZSBtZW1vcnkgYmFuZHdpZHRoLgo+IAoKTG9va2luZyBhdCBodHRwczovL3d3dy5r ZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9kZXYtc3Rh dGVsZXNzLWRlY29kZXIuaHRtbApJIHNlZSB0aGF0IHRoaXMgY2FzZSBzaG91bGQgYmUgY292ZXJl ZCBieSB0aGUgc3BlYy4KCklmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIGl0IHdvdWxkIGJlOgoK MS4gVklESU9DX1NfRk1UKE9VVFBVVCkKMi4gVklESU9DX0VOVU1fRk1UKENBUFRVUkUpIC8gVklE SU9DX0VOVU1fRlJBTUVTSVpFUyhDQVBUVVJFKQozLiBWSURJT0NfU19GTVQoQ0FQVFVSRSkKNC4g VklESU9DX0dfRk1UKENBUFRVUkUpIGFnYWluIHRvIGdldCBidWZmZXIgaW5mb3JtYXRpb24uCgpE b2VzIHY0bDJjb2RlY3Mgc3VwcG9ydCB0aGlzIGNhc2UgYXMtaXMsIGlmIGNoYW5nZXMgYXJlIG5l ZWRlZCwKSSdkIGxpa2UgdG8gaGF2ZSB0aGUgTVIgcmVhZHkgYW5kIHJldmlld2VkIGJ5IE5pY29s YXMuCgpJIGtub3cgaXQncyBhIHN0YWdpbmcgZHJpdmVyLCBidXQgSSBiZWxpZXZlIGl0J3MgaW1w b3J0YW50CnRvIGhhdmUgdXNlcnMgZm9yIG5ldyBjYXNlcy9mZWF0dXJlIHRvIGF2b2lkIGJpdHJv dHRpbmcuCgo+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWln bmFyZEBjb2xsYWJvcmEuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm8uaMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKysKPiDCoC4uLi9zdGFnaW5nL21lZGlh L2hhbnRyby9oYW50cm9fZzJfaGV2Y19kZWMuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKy0KPiDC oGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX3JlZ3MuaCB8wqAgNiArKysK PiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3LmjCoMKgwqDCoMKgIHzC oCAxICsKPiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuY8KgwqDC oCB8IDEwICsrLS0KPiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3 LmPCoMKgIHzCoCAxICsKPiDCoDYgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm8uaCBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPiBpbmRl eCA2YTIxZDFlOTViMzQuLmNhOTAzOGIwMzg0YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyby5oCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hh bnRyby9oYW50cm8uaAo+IEBAIC03MSw2ICs3MSw5IEBAIHN0cnVjdCBoYW50cm9faXJxIHsKPiDC oCAqIEByZWdfbmFtZXM6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFycmF5IG9m IHJlZ2lzdGVyIHJhbmdlIG5hbWVzCj4gwqAgKiBAbnVtX3JlZ3M6wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbnVtYmVyIG9mIHJlZ2lzdGVyIHJhbmdlIG5hbWVzIGluIHRoZSBh cnJheQo+IMKgICogQHBvc3Rwcm9jX3JlZ3M6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmc3Ry dWN0IGhhbnRyb19wb3N0cHJvY19yZWdzIHBvaW50ZXIKPiArICogQHNjYWxpbmc6wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBTZXQgcG9zc2libGUgc2NhbGVkIG91dHB1dCBm b3JtYXRzLgo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBSZXR1cm5zIHplcm8gaWYgT0ssIGEgbmVnYXRpdmUgdmFsdWUgaW4gZXJy b3IgY2FzZXMuCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoE9wdGlvbmFsLgo+IMKgICovCj4gwqBzdHJ1Y3QgaGFudHJvX3Zhcmlh bnQgewo+IMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgZW5jX29mZnNldDsKPiBAQCAtOTIs NiArOTUsNyBAQCBzdHJ1Y3QgaGFudHJvX3ZhcmlhbnQgewo+IMKgwqDCoMKgwqDCoMKgwqBjb25z dCBjaGFyICogY29uc3QgKnJlZ19uYW1lczsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IG51bV9yZWdz Owo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX3Bvc3Rwcm9jX3JlZ3MgKnBv c3Rwcm9jX3JlZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgaW50ICgqc2NhbGluZykoc3RydWN0IGhhbnRy b19jdHggKmN0eCwgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKTsKClBsZWFzZSBhZGQg c29tZSAub3BzIGZpZWxkLCBzbyB3ZSBjYW4gcHV0IHRoaXMKYW5kIG1vdmUgaW5pdCBhbmQgcnVu dGltZV9yZXN1bWUgYXMgd2VsbC4KIAo+IMKgfTsKPiDCoAo+IMKgLyoqCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMgYi9kcml2 ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9oZXZjX2RlYy5jCj4gaW5kZXggNDFk Yzg5ZWM5MjZjLi4zYThhYTJmZjEwOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21l ZGlhL2hhbnRyby9oYW50cm9fZzJfaGV2Y19kZWMuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9oYW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMKPiBAQCAtMzk2LDYgKzM5NiwxNyBAQCBz dGF0aWMgdm9pZCBzZXRfcmVmX3BpY19saXN0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gwqDC oMKgwqDCoMKgwqDCoH0KPiDCoH0KPiDCoAo+ICtzdGF0aWMgaW50IGRvd25fc2NhbGVfZmFjdG9y KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1 Y3QgaGFudHJvX2hldmNfZGVjX2N0cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+ ICvCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnNwcyA9IGN0 cmxzLT5zcHM7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChzcHMtPnBpY193aWR0aF9pbl9sdW1h X3NhbXBsZXMgPT0gY3R4LT5kc3RfZm10LndpZHRoKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIERJVl9ST1VORF9D TE9TRVNUKHNwcy0+cGljX3dpZHRoX2luX2x1bWFfc2FtcGxlcywgY3R4LT5kc3RfZm10LndpZHRo KTsKPiArfQo+ICsKPiDCoHN0YXRpYyBpbnQgc2V0X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX2hldmNfZGVjX2N0 cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+IEBAIC00MDksNiArNDIwLDcgQEAg c3RhdGljIGludCBzZXRfcmVmKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gwqDCoMKgwqDCoMKg wqDCoHNpemVfdCBtdl9vZmZzZXQgPSBoYW50cm9faGV2Y19tb3Rpb25fdmVjdG9yc19vZmZzZXQo c3BzKTsKPiDCoMKgwqDCoMKgwqDCoMKgc2l6ZV90IGNvbXByZXNzX2x1bWFfb2Zmc2V0ID0gaGFu dHJvX2hldmNfbHVtYV9jb21wcmVzc19vZmZzZXQoc3BzKTsKPiDCoMKgwqDCoMKgwqDCoMKgc2l6 ZV90IGNvbXByZXNzX2Nocm9tYV9vZmZzZXQgPSBoYW50cm9faGV2Y19jaHJvbWFfY29tcHJlc3Nf b2Zmc2V0KHNwcyk7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IGRvd25fc2NhbGUgPSBkb3duX3NjYWxl X2ZhY3RvcihjdHgpOwo+IMKgwqDCoMKgwqDCoMKgwqB1MzIgbWF4X3JlZl9mcmFtZXM7Cj4gwqDC oMKgwqDCoMKgwqDCoHUxNiBkcGJfbG9uZ3Rlcm1fZTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBoYW50cm9fcmVnIGN1cl9wb2NbXSA9IHsKPiBAQCAtNTIxLDggKzUzMywx OCBAQCBzdGF0aWMgaW50IHNldF9yZWYoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiDCoMKgwqDC oMKgwqDCoMKgaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUdfQ0hSX1JFRihpKSwgY2hyb21h X2FkZHIpOwo+IMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX1JFR19E TVZfUkVGKGkrKyksIG12X2FkZHIpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaGFudHJvX3dyaXRl X2FkZHIodnB1LCBHMl9BRERSX0RTVCwgbHVtYV9hZGRyKTsKPiAtwqDCoMKgwqDCoMKgwqBoYW50 cm9fd3JpdGVfYWRkcih2cHUsIEcyX0FERFJfRFNUX0NIUiwgY2hyb21hX2FkZHIpOwo+ICvCoMKg wqDCoMKgwqDCoGlmIChkb3duX3NjYWxlKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNocm9tYV9hZGRyID0gbHVtYV9hZGRyICsgKGNyX29mZnNldCA+PiBkb3duX3NjYWxlKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFudHJvX3JlZ193cml0ZSh2cHUsICZn Ml9kb3duX3NjYWxlX2UsIDEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50 cm9fcmVnX3dyaXRlKHZwdSwgJmcyX2Rvd25fc2NhbGVfeSwgZG93bl9zY2FsZSA+PiAyKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFudHJvX3JlZ193cml0ZSh2cHUsICZnMl9k b3duX3NjYWxlX3gsIGRvd25fc2NhbGUgPj4gMik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfRFNfRFNULCBsdW1hX2FkZHIpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0RT X0RTVF9DSFIsIGNocm9tYV9hZGRyKTsKPiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0FERFJf RFNULCBsdW1hX2FkZHIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50cm9f d3JpdGVfYWRkcih2cHUsIEcyX0FERFJfRFNUX0NIUiwgY2hyb21hX2FkZHIpOwo+ICvCoMKgwqDC oMKgwqDCoH0KPiArCj4gwqDCoMKgwqDCoMKgwqDCoGhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJf QUREUl9EU1RfTVYsIG12X2FkZHIpOwo+IMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRk cih2cHUsIEcyX0NPTVBfQUREUl9EU1QsIGNvbXByZXNzX2x1bWFfYWRkcik7Cj4gwqDCoMKgwqDC oMKgwqDCoGhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfQ09NUF9DSFIsIGNvbXByZXNzX2Nocm9t YV9hZGRyKTsKPiBAQCAtNjAzLDYgKzYyNSwyNiBAQCBzdGF0aWMgdm9pZCBoYW50cm9fZzJfY2hl Y2tfaWRsZShzdHJ1Y3QgaGFudHJvX2RldiAqdnB1KQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqB9 Cj4gwqAKPiAraW50IGhhbnRyb19nMl9oZXZjX2RlY19zY2FsaW5nKHN0cnVjdCBoYW50cm9fY3R4 ICpjdHgsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKQoKTWF5YmUKCnMvaGFu dHJvX2cyX2hldmNfZGVjX3NjYWxpbmcvaGFudHJvX2cyX2hldmNfZW51bV9mcmFtZXNpemVzCgp3 b3VsZCBiZSBjbGVhcj8KCklzIHRoaXMgcmVzdHJpY3RlZCB0byBIRVZDIG9yIGlzIGl0IHNvbWV0 aGluZyB0aGF0IHdpbGwKd29yayBvbiBWUDkgYXMgd2VsbD8KCj4gK3sKPiArwqDCoMKgwqDCoMKg wqAvKioKPiArwqDCoMKgwqDCoMKgwqAgKiBHMiBzY2FsZXIgY2FuIHNjYWxlIGRvd24gYnkgMCwg MiwgNCBvciA4Cj4gK8KgwqDCoMKgwqDCoMKgICogdXNlIGZzaXplLT5pbmRleCBoYXMgcG93ZXIg b2YgMiBkaXZpc2VyCj4gK8KgwqDCoMKgwqDCoMKgICoqLwoKUGxlYXNlIHVzZQoKLyoKICoKICov CgpzdHlsZS4KCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGZzaXplLT5pbmRleCA+IDMpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDC oMKgwqBpZiAoIWN0eC0+c3JjX2ZtdC53aWR0aCB8fCAhY3R4LT5zcmNfZm10LmhlaWdodCkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoGZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfRElTQ1JFVEU7Cj4gK8Kg wqDCoMKgwqDCoMKgZnNpemUtPmRpc2NyZXRlLndpZHRoID0gY3R4LT5zcmNfZm10LndpZHRoID4+ IGZzaXplLT5pbmRleDsKPiArwqDCoMKgwqDCoMKgwqBmc2l6ZS0+ZGlzY3JldGUuaGVpZ2h0ID0g Y3R4LT5zcmNfZm10LmhlaWdodCA+PiBmc2l6ZS0+aW5kZXg7Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+ICt9Cj4gKwpbLi5dCj4gLSAgICAgICAvKiBUaGlzIG9ubHkgbWFrZXMgc2Vu c2UgZm9yIGNvZGVkIGZvcm1hdHMgKi8KPiAtICAgICAgIGlmIChmbXQtPmNvZGVjX21vZGUgPT0g SEFOVFJPX01PREVfTk9ORSkKPiArICAgICAgIC8qIEZvciBub24tY29kZWQgZm9ybWF0cyBjaGVj ayBpZiBzY2FsaW5nIGlzIHBvc3NpYmxlICovCj4gKyAgICAgICBpZiAoZm10LT5jb2RlY19tb2Rl ID09IEhBTlRST19NT0RFX05PTkUpIHsKPiArICAgICAgICAgICAgICAgaWYgKGN0eC0+ZGV2LT52 YXJpYW50LT5zY2FsaW5nKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHgtPmRl di0+dmFyaWFudC0+c2NhbGluZyhjdHgsIGZzaXplKTsKPiArCj4gICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwoKSSB3b25kZXIgd2h5IHdlIGFyZSByZXR1cm5pbmcgRUlOVkFMIGhlcmUu IENhbiB3ZSBzdXBwb3J0Ci52aWRpb2NfZW51bV9mcmFtZXNpemVzIGZvciBjb2RlZCBhbmQgbm9u LWNvZGVkPwoKVGhhbmtzLApFemVxdWllbAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2Nr Y2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB7EAC48BDF for ; Fri, 18 Jun 2021 19:26:35 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A4D566113E for ; Fri, 18 Jun 2021 19:26:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A4D566113E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=UWbt2FmyMTDteuMgMKM8Qoz2rP7yGQMUIiZHwf5kcNE=; b=HcQKyuN0CdS6nM h0UvaUSR9jLIW3cd2+K6BW+EbxGiPeEU4JK0XdDBKdKQqZAIo1K1b9otYBv1SQKOylnKKs7Ofl0fQ FL+CexfwcT77neNj/npBNA9YpFR0+XZsI7vRzE4tfVSLUf0UD3mL/w5CSkepagPjds8/fHRCIXs8Z WkBHXD8ewTpyaszyoCejy+RCaZShVHWIaiWKIlWoIaVVp8FMtyPGH1wOr/qknR3ElAKpn92X4WX6J UvTQzhg18i5+iWHc3ZBTBkpQV0K1/CjW1PeODMaZmG437AAJj3LNm/KY6NP4aEliZUxMTd19+TjYg i8t3FSv3au5Bz44F8C7A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1luK6k-00FHz8-4L; Fri, 18 Jun 2021 19:24:50 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1luK6f-00FHxw-Lm; Fri, 18 Jun 2021 19:24:47 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: ezequiel) with ESMTPSA id E7E7C1F44CE8 Message-ID: <4d41485bb1452ec6b9dfa0a23a925c5dd2af72da.camel@collabora.com> Subject: Re: [PATCH v3 6/8] media: hantro: enumerate scaled output formats From: Ezequiel Garcia To: Benjamin Gaignard , hverkuil@xs4all.nl, p.zabel@pengutronix.de, mchehab@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, emil.l.velikov@gmail.com, andrzej.p@collabora.com, jc@kynesim.co.uk, jernej.skrabec@gmail.com, nicolas@ndufresne.ca Cc: kernel@pengutronix.de, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Fri, 18 Jun 2021 16:24:32 -0300 In-Reply-To: <20210618131526.566762-7-benjamin.gaignard@collabora.com> References: <20210618131526.566762-1-benjamin.gaignard@collabora.com> <20210618131526.566762-7-benjamin.gaignard@collabora.com> Organization: Collabora User-Agent: Evolution 3.38.2-1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210618_122446_018517_1D390F0C X-CRM114-Status: GOOD ( 30.36 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQmVuamFtaW4sCgpUaGFua3MgZm9yIHdvcmtpbmcgb24gdGhpcy4KCk9uIEZyaSwgMjAyMS0w Ni0xOCBhdCAxNToxNSArMDIwMCwgQmVuamFtaW4gR2FpZ25hcmQgd3JvdGU6Cj4gV2hlbiBlbnVt ZXJhdGluZyB0aGUgb3V0cHV0IGZvcm1hdHMgdGFrZSBjYXJlIG9mIHRoZSBoYXJkd2FyZSBzY2Fs aW5nCj4gY2FwYWJpbGl0aWVzLgo+IEZvciBhIGdpdmVuIGlucHV0IHNpemUgRzIgaGFyZHdhcmUg YmxvY2sgaXMgY2FwYWJsZSBvZiBkb3duIHNjYWxlIHRoZQo+IG91dHB1dCBieSAyLCA0IG9yIDgg ZmFjdG9yLiBXaGVuIGRlY29kaW5nIDRLIHN0cmVhbXMgdGhhdCB0byBiZSBjb3VsZAo+IGhlbHBm dWwgdG8gc2F2ZSBtZW1vcnkgYmFuZHdpZHRoLgo+IAoKTG9va2luZyBhdCBodHRwczovL3d3dy5r ZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9kZXYtc3Rh dGVsZXNzLWRlY29kZXIuaHRtbApJIHNlZSB0aGF0IHRoaXMgY2FzZSBzaG91bGQgYmUgY292ZXJl ZCBieSB0aGUgc3BlYy4KCklmIEkgdW5kZXJzdGFuZCBjb3JyZWN0bHksIGl0IHdvdWxkIGJlOgoK MS4gVklESU9DX1NfRk1UKE9VVFBVVCkKMi4gVklESU9DX0VOVU1fRk1UKENBUFRVUkUpIC8gVklE SU9DX0VOVU1fRlJBTUVTSVpFUyhDQVBUVVJFKQozLiBWSURJT0NfU19GTVQoQ0FQVFVSRSkKNC4g VklESU9DX0dfRk1UKENBUFRVUkUpIGFnYWluIHRvIGdldCBidWZmZXIgaW5mb3JtYXRpb24uCgpE b2VzIHY0bDJjb2RlY3Mgc3VwcG9ydCB0aGlzIGNhc2UgYXMtaXMsIGlmIGNoYW5nZXMgYXJlIG5l ZWRlZCwKSSdkIGxpa2UgdG8gaGF2ZSB0aGUgTVIgcmVhZHkgYW5kIHJldmlld2VkIGJ5IE5pY29s YXMuCgpJIGtub3cgaXQncyBhIHN0YWdpbmcgZHJpdmVyLCBidXQgSSBiZWxpZXZlIGl0J3MgaW1w b3J0YW50CnRvIGhhdmUgdXNlcnMgZm9yIG5ldyBjYXNlcy9mZWF0dXJlIHRvIGF2b2lkIGJpdHJv dHRpbmcuCgo+IFNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWln bmFyZEBjb2xsYWJvcmEuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm8uaMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQgKysKPiDCoC4uLi9zdGFnaW5nL21lZGlh L2hhbnRyby9oYW50cm9fZzJfaGV2Y19kZWMuYyB8IDQ2ICsrKysrKysrKysrKysrKysrKy0KPiDC oGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX3JlZ3MuaCB8wqAgNiArKysK PiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2h3LmjCoMKgwqDCoMKgIHzC oCAxICsKPiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX3Y0bDIuY8KgwqDC oCB8IDEwICsrLS0KPiDCoGRyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaW14OG1fdnB1X2h3 LmPCoMKgIHzCoCAxICsKPiDCoDYgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgNSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hhbnRy by9oYW50cm8uaCBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvLmgKPiBpbmRl eCA2YTIxZDFlOTViMzQuLmNhOTAzOGIwMzg0YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3N0YWdp bmcvbWVkaWEvaGFudHJvL2hhbnRyby5oCj4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL2hh bnRyby9oYW50cm8uaAo+IEBAIC03MSw2ICs3MSw5IEBAIHN0cnVjdCBoYW50cm9faXJxIHsKPiDC oCAqIEByZWdfbmFtZXM6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGFycmF5IG9m IHJlZ2lzdGVyIHJhbmdlIG5hbWVzCj4gwqAgKiBAbnVtX3JlZ3M6wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgbnVtYmVyIG9mIHJlZ2lzdGVyIHJhbmdlIG5hbWVzIGluIHRoZSBh cnJheQo+IMKgICogQHBvc3Rwcm9jX3JlZ3M6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAmc3Ry dWN0IGhhbnRyb19wb3N0cHJvY19yZWdzIHBvaW50ZXIKPiArICogQHNjYWxpbmc6wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBTZXQgcG9zc2libGUgc2NhbGVkIG91dHB1dCBm b3JtYXRzLgo+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBSZXR1cm5zIHplcm8gaWYgT0ssIGEgbmVnYXRpdmUgdmFsdWUgaW4gZXJy b3IgY2FzZXMuCj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoE9wdGlvbmFsLgo+IMKgICovCj4gwqBzdHJ1Y3QgaGFudHJvX3Zhcmlh bnQgewo+IMKgwqDCoMKgwqDCoMKgwqB1bnNpZ25lZCBpbnQgZW5jX29mZnNldDsKPiBAQCAtOTIs NiArOTUsNyBAQCBzdHJ1Y3QgaGFudHJvX3ZhcmlhbnQgewo+IMKgwqDCoMKgwqDCoMKgwqBjb25z dCBjaGFyICogY29uc3QgKnJlZ19uYW1lczsKPiDCoMKgwqDCoMKgwqDCoMKgaW50IG51bV9yZWdz Owo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX3Bvc3Rwcm9jX3JlZ3MgKnBv c3Rwcm9jX3JlZ3M7Cj4gK8KgwqDCoMKgwqDCoMKgaW50ICgqc2NhbGluZykoc3RydWN0IGhhbnRy b19jdHggKmN0eCwgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKTsKClBsZWFzZSBhZGQg c29tZSAub3BzIGZpZWxkLCBzbyB3ZSBjYW4gcHV0IHRoaXMKYW5kIG1vdmUgaW5pdCBhbmQgcnVu dGltZV9yZXN1bWUgYXMgd2VsbC4KIAo+IMKgfTsKPiDCoAo+IMKgLyoqCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9oYW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMgYi9kcml2 ZXJzL3N0YWdpbmcvbWVkaWEvaGFudHJvL2hhbnRyb19nMl9oZXZjX2RlYy5jCj4gaW5kZXggNDFk Yzg5ZWM5MjZjLi4zYThhYTJmZjEwOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL21l ZGlhL2hhbnRyby9oYW50cm9fZzJfaGV2Y19kZWMuYwo+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9oYW50cm8vaGFudHJvX2cyX2hldmNfZGVjLmMKPiBAQCAtMzk2LDYgKzM5NiwxNyBAQCBz dGF0aWMgdm9pZCBzZXRfcmVmX3BpY19saXN0KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gwqDC oMKgwqDCoMKgwqDCoH0KPiDCoH0KPiDCoAo+ICtzdGF0aWMgaW50IGRvd25fc2NhbGVfZmFjdG9y KHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1 Y3QgaGFudHJvX2hldmNfZGVjX2N0cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+ ICvCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnNwcyA9IGN0 cmxzLT5zcHM7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoGlmIChzcHMtPnBpY193aWR0aF9pbl9sdW1h X3NhbXBsZXMgPT0gY3R4LT5kc3RfZm10LndpZHRoKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqByZXR1cm4gMDsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIERJVl9ST1VORF9D TE9TRVNUKHNwcy0+cGljX3dpZHRoX2luX2x1bWFfc2FtcGxlcywgY3R4LT5kc3RfZm10LndpZHRo KTsKPiArfQo+ICsKPiDCoHN0YXRpYyBpbnQgc2V0X3JlZihzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4 KQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaGFudHJvX2hldmNfZGVjX2N0 cmxzICpjdHJscyA9ICZjdHgtPmhldmNfZGVjLmN0cmxzOwo+IEBAIC00MDksNiArNDIwLDcgQEAg c3RhdGljIGludCBzZXRfcmVmKHN0cnVjdCBoYW50cm9fY3R4ICpjdHgpCj4gwqDCoMKgwqDCoMKg wqDCoHNpemVfdCBtdl9vZmZzZXQgPSBoYW50cm9faGV2Y19tb3Rpb25fdmVjdG9yc19vZmZzZXQo c3BzKTsKPiDCoMKgwqDCoMKgwqDCoMKgc2l6ZV90IGNvbXByZXNzX2x1bWFfb2Zmc2V0ID0gaGFu dHJvX2hldmNfbHVtYV9jb21wcmVzc19vZmZzZXQoc3BzKTsKPiDCoMKgwqDCoMKgwqDCoMKgc2l6 ZV90IGNvbXByZXNzX2Nocm9tYV9vZmZzZXQgPSBoYW50cm9faGV2Y19jaHJvbWFfY29tcHJlc3Nf b2Zmc2V0KHNwcyk7Cj4gK8KgwqDCoMKgwqDCoMKgaW50IGRvd25fc2NhbGUgPSBkb3duX3NjYWxl X2ZhY3RvcihjdHgpOwo+IMKgwqDCoMKgwqDCoMKgwqB1MzIgbWF4X3JlZl9mcmFtZXM7Cj4gwqDC oMKgwqDCoMKgwqDCoHUxNiBkcGJfbG9uZ3Rlcm1fZTsKPiDCoMKgwqDCoMKgwqDCoMKgc3RhdGlj IGNvbnN0IHN0cnVjdCBoYW50cm9fcmVnIGN1cl9wb2NbXSA9IHsKPiBAQCAtNTIxLDggKzUzMywx OCBAQCBzdGF0aWMgaW50IHNldF9yZWYoc3RydWN0IGhhbnRyb19jdHggKmN0eCkKPiDCoMKgwqDC oMKgwqDCoMKgaGFudHJvX3dyaXRlX2FkZHIodnB1LCBHMl9SRUdfQ0hSX1JFRihpKSwgY2hyb21h X2FkZHIpOwo+IMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX1JFR19E TVZfUkVGKGkrKyksIG12X2FkZHIpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaGFudHJvX3dyaXRl X2FkZHIodnB1LCBHMl9BRERSX0RTVCwgbHVtYV9hZGRyKTsKPiAtwqDCoMKgwqDCoMKgwqBoYW50 cm9fd3JpdGVfYWRkcih2cHUsIEcyX0FERFJfRFNUX0NIUiwgY2hyb21hX2FkZHIpOwo+ICvCoMKg wqDCoMKgwqDCoGlmIChkb3duX3NjYWxlKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNocm9tYV9hZGRyID0gbHVtYV9hZGRyICsgKGNyX29mZnNldCA+PiBkb3duX3NjYWxlKTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFudHJvX3JlZ193cml0ZSh2cHUsICZn Ml9kb3duX3NjYWxlX2UsIDEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50 cm9fcmVnX3dyaXRlKHZwdSwgJmcyX2Rvd25fc2NhbGVfeSwgZG93bl9zY2FsZSA+PiAyKTsKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaGFudHJvX3JlZ193cml0ZSh2cHUsICZnMl9k b3duX3NjYWxlX3gsIGRvd25fc2NhbGUgPj4gMik7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfRFNfRFNULCBsdW1hX2FkZHIpOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0RT X0RTVF9DSFIsIGNocm9tYV9hZGRyKTsKPiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRkcih2cHUsIEcyX0FERFJf RFNULCBsdW1hX2FkZHIpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBoYW50cm9f d3JpdGVfYWRkcih2cHUsIEcyX0FERFJfRFNUX0NIUiwgY2hyb21hX2FkZHIpOwo+ICvCoMKgwqDC oMKgwqDCoH0KPiArCj4gwqDCoMKgwqDCoMKgwqDCoGhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJf QUREUl9EU1RfTVYsIG12X2FkZHIpOwo+IMKgwqDCoMKgwqDCoMKgwqBoYW50cm9fd3JpdGVfYWRk cih2cHUsIEcyX0NPTVBfQUREUl9EU1QsIGNvbXByZXNzX2x1bWFfYWRkcik7Cj4gwqDCoMKgwqDC oMKgwqDCoGhhbnRyb193cml0ZV9hZGRyKHZwdSwgRzJfQ09NUF9DSFIsIGNvbXByZXNzX2Nocm9t YV9hZGRyKTsKPiBAQCAtNjAzLDYgKzYyNSwyNiBAQCBzdGF0aWMgdm9pZCBoYW50cm9fZzJfY2hl Y2tfaWRsZShzdHJ1Y3QgaGFudHJvX2RldiAqdnB1KQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqB9 Cj4gwqAKPiAraW50IGhhbnRyb19nMl9oZXZjX2RlY19zY2FsaW5nKHN0cnVjdCBoYW50cm9fY3R4 ICpjdHgsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgc3RydWN0IHY0bDJfZnJtc2l6ZWVudW0gKmZzaXplKQoKTWF5YmUKCnMvaGFu dHJvX2cyX2hldmNfZGVjX3NjYWxpbmcvaGFudHJvX2cyX2hldmNfZW51bV9mcmFtZXNpemVzCgp3 b3VsZCBiZSBjbGVhcj8KCklzIHRoaXMgcmVzdHJpY3RlZCB0byBIRVZDIG9yIGlzIGl0IHNvbWV0 aGluZyB0aGF0IHdpbGwKd29yayBvbiBWUDkgYXMgd2VsbD8KCj4gK3sKPiArwqDCoMKgwqDCoMKg wqAvKioKPiArwqDCoMKgwqDCoMKgwqAgKiBHMiBzY2FsZXIgY2FuIHNjYWxlIGRvd24gYnkgMCwg MiwgNCBvciA4Cj4gK8KgwqDCoMKgwqDCoMKgICogdXNlIGZzaXplLT5pbmRleCBoYXMgcG93ZXIg b2YgMiBkaXZpc2VyCj4gK8KgwqDCoMKgwqDCoMKgICoqLwoKUGxlYXNlIHVzZQoKLyoKICoKICov CgpzdHlsZS4KCj4gK8KgwqDCoMKgwqDCoMKgaWYgKGZzaXplLT5pbmRleCA+IDMpCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiAtRUlOVkFMOwo+ICsKPiArwqDCoMKgwqDC oMKgwqBpZiAoIWN0eC0+c3JjX2ZtdC53aWR0aCB8fCAhY3R4LT5zcmNfZm10LmhlaWdodCkKPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICvCoMKg wqDCoMKgwqDCoGZzaXplLT50eXBlID0gVjRMMl9GUk1TSVpFX1RZUEVfRElTQ1JFVEU7Cj4gK8Kg wqDCoMKgwqDCoMKgZnNpemUtPmRpc2NyZXRlLndpZHRoID0gY3R4LT5zcmNfZm10LndpZHRoID4+ IGZzaXplLT5pbmRleDsKPiArwqDCoMKgwqDCoMKgwqBmc2l6ZS0+ZGlzY3JldGUuaGVpZ2h0ID0g Y3R4LT5zcmNfZm10LmhlaWdodCA+PiBmc2l6ZS0+aW5kZXg7Cj4gKwo+ICvCoMKgwqDCoMKgwqDC oHJldHVybiAwOwo+ICt9Cj4gKwpbLi5dCj4gLSAgICAgICAvKiBUaGlzIG9ubHkgbWFrZXMgc2Vu c2UgZm9yIGNvZGVkIGZvcm1hdHMgKi8KPiAtICAgICAgIGlmIChmbXQtPmNvZGVjX21vZGUgPT0g SEFOVFJPX01PREVfTk9ORSkKPiArICAgICAgIC8qIEZvciBub24tY29kZWQgZm9ybWF0cyBjaGVj ayBpZiBzY2FsaW5nIGlzIHBvc3NpYmxlICovCj4gKyAgICAgICBpZiAoZm10LT5jb2RlY19tb2Rl ID09IEhBTlRST19NT0RFX05PTkUpIHsKPiArICAgICAgICAgICAgICAgaWYgKGN0eC0+ZGV2LT52 YXJpYW50LT5zY2FsaW5nKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdHgtPmRl di0+dmFyaWFudC0+c2NhbGluZyhjdHgsIGZzaXplKTsKPiArCj4gICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwoKSSB3b25kZXIgd2h5IHdlIGFyZSByZXR1cm5pbmcgRUlOVkFMIGhlcmUu IENhbiB3ZSBzdXBwb3J0Ci52aWRpb2NfZW51bV9mcmFtZXNpemVzIGZvciBjb2RlZCBhbmQgbm9u LWNvZGVkPwoKVGhhbmtzLApFemVxdWllbAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFy bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK