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 C9A30C433DB for ; Mon, 22 Feb 2021 20:02:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8788164DF2 for ; Mon, 22 Feb 2021 20:02:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232792AbhBVUCb (ORCPT ); Mon, 22 Feb 2021 15:02:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46196 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231288AbhBVUCT (ORCPT ); Mon, 22 Feb 2021 15:02:19 -0500 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 4745FC06174A; Mon, 22 Feb 2021 12:01:39 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: nicolas) with ESMTPSA id 0BA431F45319 Message-ID: Subject: Re: [PATCH v2 1/9] media: hevc: Modify structures to follow H265 ITU spec From: Nicolas Dufresne To: Benjamin Gaignard , John Cox Cc: ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, robh+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, peng.fan@nxp.com, hverkuil-cisco@xs4all.nl, dan.carpenter@oracle.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com Date: Mon, 22 Feb 2021 15:01:25 -0500 In-Reply-To: <4cd4a009-9552-03a5-a49d-de16c55c63da@collabora.com> References: <20210218191844.297869-1-benjamin.gaignard@collabora.com> <20210218191844.297869-2-benjamin.gaignard@collabora.com> <4cd4a009-9552-03a5-a49d-de16c55c63da@collabora.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.38.3 (3.38.3-1.fc33) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi John, Le lundi 22 février 2021 à 17:39 +0100, Benjamin Gaignard a écrit : > > Le 22/02/2021 à 17:24, John Cox a écrit : > > > The H.265 ITU specification (section 7.4) define the general > > > slice segment header semantics. > > > Modified/added fields are: > > > - video_parameter_set_id: (7.4.3.1) identifies the VPS for > > > reference by other syntax elements. > > > - seq_parameter_set_id: (7.4.3.2.1) specifies the value of > > > the vps_video_parameter_set_id of the active VPS. > > > - chroma_format_idc: (7.4.3.2.1) specifies the chroma sampling > > > relative to the luma sampling > > > - pic_parameter_set_id: (7.4.3.3.1) identifies the PPS for > > > reference by other syntax elements > > > - num_ref_idx_l0_default_active_minus1: (7.4.3.3.1) specifies > > > the inferred value of num_ref_idx_l0_active_minus1 > > > - num_ref_idx_l1_default_active_minus1: (7.4.3.3.1) specifies > > > the inferred value of num_ref_idx_l1_active_minus1 > > > - slice_segment_addr: (7.4.7.1) specifies the address of > > > the first coding tree block in the slice segment > > > - num_entry_point_offsets: (7.4.7.1) specifies the number of > > > entry_point_offset_minus1[ i ] syntax elements in the slice header > > > > > > Add HEVC decode params contains the information used in section > > > "8.3 Slice decoding process" of the specification to let the hardware > > > perform decoding of a slices. > > > > > > Adapt Cedrus driver according to these changes. > > > > > > Signed-off-by: Benjamin Gaignard > > > --- > > > version 2: > > > - remove all change related to scaling > > > - squash commits to a coherent split > > > - be more verbose about the added fields > > > > > > drivers/media/v4l2-core/v4l2-ctrls.c          | 26 ++++++++--- > > > drivers/staging/media/sunxi/cedrus/cedrus.c   |  6 +++ > > > drivers/staging/media/sunxi/cedrus/cedrus.h   |  1 + > > > .../staging/media/sunxi/cedrus/cedrus_dec.c   |  2 + > > > .../staging/media/sunxi/cedrus/cedrus_h265.c  |  6 ++- > > > include/media/hevc-ctrls.h                    | 45 +++++++++++++++---- > > > 6 files changed, 69 insertions(+), 17 deletions(-) > > > > > > diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2- > > > core/v4l2-ctrls.c > > > index 016cf6204cbb..4060b5bcc3c0 100644 > > > --- a/drivers/media/v4l2-core/v4l2-ctrls.c > > > +++ b/drivers/media/v4l2-core/v4l2-ctrls.c > > > @@ -1028,6 +1028,7 @@ const char *v4l2_ctrl_get_name(u32 id) > > >         case V4L2_CID_MPEG_VIDEO_HEVC_SPS:                      return > > > "HEVC Sequence Parameter Set"; > > >         case V4L2_CID_MPEG_VIDEO_HEVC_PPS:                      return > > > "HEVC Picture Parameter Set"; > > >         case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS:             return > > > "HEVC Slice Parameters"; > > > +       case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS:            return > > > "HEVC Decode Parameters"; > > >         case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE:              return > > > "HEVC Decode Mode"; > > >         case V4L2_CID_MPEG_VIDEO_HEVC_START_CODE:               return > > > "HEVC Start Code"; > > > > > > @@ -1482,6 +1483,9 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum > > > v4l2_ctrl_type *type, > > >         case V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS: > > >                 *type = V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS; > > >                 break; > > > +       case V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS: > > > +               *type = V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS; > > > +               break; > > >         case V4L2_CID_UNIT_CELL_SIZE: > > >                 *type = V4L2_CTRL_TYPE_AREA; > > >                 *flags |= V4L2_CTRL_FLAG_READ_ONLY; > > > @@ -1833,6 +1837,7 @@ static int std_validate_compound(const struct > > > v4l2_ctrl *ctrl, u32 idx, > > >         struct v4l2_ctrl_hevc_sps *p_hevc_sps; > > >         struct v4l2_ctrl_hevc_pps *p_hevc_pps; > > >         struct v4l2_ctrl_hevc_slice_params *p_hevc_slice_params; > > > +       struct v4l2_ctrl_hevc_decode_params *p_hevc_decode_params; > > >         struct v4l2_area *area; > > >         void *p = ptr.p + idx * ctrl->elem_size; > > >         unsigned int i; > > > @@ -2108,23 +2113,27 @@ static int std_validate_compound(const struct > > > v4l2_ctrl *ctrl, u32 idx, > > >                 zero_padding(*p_hevc_pps); > > >                 break; > > > > > > -       case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS: > > > -               p_hevc_slice_params = p; > > > +       case V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS: > > > +               p_hevc_decode_params = p; > > > > > > -               if (p_hevc_slice_params->num_active_dpb_entries > > > > +               if (p_hevc_decode_params->num_active_dpb_entries > > > >                     V4L2_HEVC_DPB_ENTRIES_NUM_MAX) > > >                         return -EINVAL; > > > > > > -               zero_padding(p_hevc_slice_params->pred_weight_table); > > > - > > > -               for (i = 0; i < p_hevc_slice_params- > > > >num_active_dpb_entries; > > > +               for (i = 0; i < p_hevc_decode_params- > > > >num_active_dpb_entries; > > >                      i++) { > > >                         struct v4l2_hevc_dpb_entry *dpb_entry = > > > -                               &p_hevc_slice_params->dpb[i]; > > > +                               &p_hevc_decode_params->dpb[i]; > > > > > >                         zero_padding(*dpb_entry); > > >                 } > > > > > > +               break; > > > + > > > +       case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS: > > > +               p_hevc_slice_params = p; > > > + > > > +               zero_padding(p_hevc_slice_params->pred_weight_table); > > >                 zero_padding(*p_hevc_slice_params); > > >                 break; > > > > > > @@ -2821,6 +2830,9 @@ static struct v4l2_ctrl *v4l2_ctrl_new(struct > > > v4l2_ctrl_handler *hdl, > > >         case V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS: > > >                 elem_size = sizeof(struct v4l2_ctrl_hevc_slice_params); > > >                 break; > > > +       case V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS: > > > +               elem_size = sizeof(struct v4l2_ctrl_hevc_decode_params); > > > +               break; > > >         case V4L2_CTRL_TYPE_AREA: > > >                 elem_size = sizeof(struct v4l2_area); > > >                 break; > > > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.c > > > b/drivers/staging/media/sunxi/cedrus/cedrus.c > > > index 7bd9291c8d5f..4cd3cab1a257 100644 > > > --- a/drivers/staging/media/sunxi/cedrus/cedrus.c > > > +++ b/drivers/staging/media/sunxi/cedrus/cedrus.c > > > @@ -151,6 +151,12 @@ static const struct cedrus_control cedrus_controls[] > > > = { > > >                 }, > > >                 .codec          = CEDRUS_CODEC_VP8, > > >         }, > > > +       { > > > +               .cfg = { > > > +                       .id = V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS, > > > +               }, > > > +               .codec          = CEDRUS_CODEC_H265, > > > +       }, > > > }; > > > > > > #define CEDRUS_CONTROLS_COUNT   ARRAY_SIZE(cedrus_controls) > > > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus.h > > > b/drivers/staging/media/sunxi/cedrus/cedrus.h > > > index 251a6a660351..2ca33ac38b9a 100644 > > > --- a/drivers/staging/media/sunxi/cedrus/cedrus.h > > > +++ b/drivers/staging/media/sunxi/cedrus/cedrus.h > > > @@ -76,6 +76,7 @@ struct cedrus_h265_run { > > >         const struct v4l2_ctrl_hevc_sps                 *sps; > > >         const struct v4l2_ctrl_hevc_pps                 *pps; > > >         const struct v4l2_ctrl_hevc_slice_params        *slice_params; > > > +       const struct v4l2_ctrl_hevc_decode_params       *decode_params; > > > }; > > > > > > struct cedrus_vp8_run { > > > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c > > > b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c > > > index a9090daf626a..cd821f417a14 100644 > > > --- a/drivers/staging/media/sunxi/cedrus/cedrus_dec.c > > > +++ b/drivers/staging/media/sunxi/cedrus/cedrus_dec.c > > > @@ -68,6 +68,8 @@ void cedrus_device_run(void *priv) > > >                         V4L2_CID_MPEG_VIDEO_HEVC_PPS); > > >                 run.h265.slice_params = cedrus_find_control_data(ctx, > > >                         V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS); > > > +               run.h265.decode_params = cedrus_find_control_data(ctx, > > > +                       V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS); > > >                 break; > > > > > >         case V4L2_PIX_FMT_VP8_FRAME: > > > diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c > > > b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c > > > index ce497d0197df..dce5db6be13a 100644 > > > --- a/drivers/staging/media/sunxi/cedrus/cedrus_h265.c > > > +++ b/drivers/staging/media/sunxi/cedrus/cedrus_h265.c > > > @@ -245,6 +245,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, > > >         const struct v4l2_ctrl_hevc_sps *sps; > > >         const struct v4l2_ctrl_hevc_pps *pps; > > >         const struct v4l2_ctrl_hevc_slice_params *slice_params; > > > +       const struct v4l2_ctrl_hevc_decode_params *decode_params; > > >         const struct v4l2_hevc_pred_weight_table *pred_weight_table; > > >         dma_addr_t src_buf_addr; > > >         dma_addr_t src_buf_end_addr; > > > @@ -256,6 +257,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, > > >         sps = run->h265.sps; > > >         pps = run->h265.pps; > > >         slice_params = run->h265.slice_params; > > > +       decode_params = run->h265.decode_params; > > >         pred_weight_table = &slice_params->pred_weight_table; > > > > > >         /* MV column buffer size and allocation. */ > > > @@ -487,7 +489,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, > > > > > >         reg = > > > VE_DEC_H265_DEC_SLICE_HDR_INFO1_SLICE_TC_OFFSET_DIV2(slice_params- > > > >slice_tc_offset_div2) | > > >               > > > VE_DEC_H265_DEC_SLICE_HDR_INFO1_SLICE_BETA_OFFSET_DIV2(slice_params- > > > >slice_beta_offset_div2) | > > > -             > > > VE_DEC_H265_DEC_SLICE_HDR_INFO1_SLICE_POC_BIGEST_IN_RPS_ST(slice_params- > > > >num_rps_poc_st_curr_after == 0) | > > > +             > > > VE_DEC_H265_DEC_SLICE_HDR_INFO1_SLICE_POC_BIGEST_IN_RPS_ST(decode_params- > > > >num_rps_poc_st_curr_after == 0) | > > >               > > > VE_DEC_H265_DEC_SLICE_HDR_INFO1_SLICE_CR_QP_OFFSET(slice_params- > > > >slice_cr_qp_offset) | > > >               > > > VE_DEC_H265_DEC_SLICE_HDR_INFO1_SLICE_CB_QP_OFFSET(slice_params- > > > >slice_cb_qp_offset) | > > >               VE_DEC_H265_DEC_SLICE_HDR_INFO1_SLICE_QP_DELTA(slice_params- > > > >slice_qp_delta); > > > @@ -528,7 +530,7 @@ static void cedrus_h265_setup(struct cedrus_ctx *ctx, > > > > > >         /* Write decoded picture buffer in pic list. */ > > >         cedrus_h265_frame_info_write_dpb(ctx, slice_params->dpb, > > > -                                        slice_params- > > > >num_active_dpb_entries); > > > +                                        decode_params- > > > >num_active_dpb_entries); > > > > > >         /* Output frame. */ > > > > > > diff --git a/include/media/hevc-ctrls.h b/include/media/hevc-ctrls.h > > > index b4cb2ef02f17..7fe704a08f77 100644 > > > --- a/include/media/hevc-ctrls.h > > > +++ b/include/media/hevc-ctrls.h > > > @@ -19,6 +19,7 @@ > > > #define V4L2_CID_MPEG_VIDEO_HEVC_SPS            (V4L2_CID_CODEC_BASE + > > > 1008) > > > #define V4L2_CID_MPEG_VIDEO_HEVC_PPS            (V4L2_CID_CODEC_BASE + > > > 1009) > > > #define V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS   (V4L2_CID_CODEC_BASE + > > > 1010) > > > +#define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_BASE + > > > 1012) > > > #define V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODE    (V4L2_CID_CODEC_BASE + > > > 1015) > > > #define V4L2_CID_MPEG_VIDEO_HEVC_START_CODE     (V4L2_CID_CODEC_BASE + > > > 1016) > > > > > > @@ -26,6 +27,7 @@ > > > #define V4L2_CTRL_TYPE_HEVC_SPS 0x0120 > > > #define V4L2_CTRL_TYPE_HEVC_PPS 0x0121 > > > #define V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS 0x0122 > > > +#define V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS 0x0124 > > > > > > enum v4l2_mpeg_video_hevc_decode_mode { > > >         V4L2_MPEG_VIDEO_HEVC_DECODE_MODE_SLICE_BASED, > > > @@ -54,6 +56,9 @@ enum v4l2_mpeg_video_hevc_start_code { > > > /* The controls are not stable at the moment and will likely be reworked. > > > */ > > > struct v4l2_ctrl_hevc_sps { > > >         /* ISO/IEC 23008-2, ITU-T Rec. H.265: Sequence parameter set */ > > > +       __u8    video_parameter_set_id; > > Whilst I don't object to the addition of vps id why do we need > > it if the VPS is never passed? > > You are right I could remove it. > > > > > > +       __u8    seq_parameter_set_id; > > > +       __u8    chroma_format_idc; > > >         __u16   pic_width_in_luma_samples; > > >         __u16   pic_height_in_luma_samples; > > >         __u8    bit_depth_luma_minus8; > > > @@ -74,9 +79,9 @@ struct v4l2_ctrl_hevc_sps { > > >         __u8    log2_diff_max_min_pcm_luma_coding_block_size; > > >         __u8    num_short_term_ref_pic_sets; > > >         __u8    num_long_term_ref_pics_sps; > > > -       __u8    chroma_format_idc; > > > > > > -       __u8    padding; > > > +       __u8    num_slices; > > > +       __u8    padding[6]; > > > > > >         __u64   flags; > > > }; > > > @@ -100,10 +105,15 @@ struct v4l2_ctrl_hevc_sps { > > > #define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER        (1ULL << > > > 16) > > > #define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT           (1ULL << > > > 17) > > > #define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << > > > 18) > > > +#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT   (1ULL << > > > 19) > > > +#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING                     (1ULL << > > > 20) > > > > > > struct v4l2_ctrl_hevc_pps { > > >         /* ISO/IEC 23008-2, ITU-T Rec. H.265: Picture parameter set */ > > > +       __u8    pic_parameter_set_id; > > >         __u8    num_extra_slice_header_bits; > > > +       __u8    num_ref_idx_l0_default_active_minus1; > > > +       __u8    num_ref_idx_l1_default_active_minus1; > > >         __s8    init_qp_minus26; > > >         __u8    diff_cu_qp_delta_depth; > > >         __s8    pps_cb_qp_offset; > > > @@ -116,7 +126,7 @@ struct v4l2_ctrl_hevc_pps { > > >         __s8    pps_tc_offset_div2; > > >         __u8    log2_parallel_merge_level_minus2; > > > > > > -       __u8    padding[4]; > > > +       __u8    padding; > > >         __u64   flags; > > > }; > > > > > > @@ -165,6 +175,10 @@ struct v4l2_ctrl_hevc_slice_params { > > >         __u32   bit_size; > > >         __u32   data_bit_offset; > > > > > > +       /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header > > > */ > > > +       __u32   slice_segment_addr; > > > +       __u32   num_entry_point_offsets; > > > + > > >         /* ISO/IEC 23008-2, ITU-T Rec. H.265: NAL unit header */ > > >         __u8    nal_unit_type; > > >         __u8    nuh_temporal_id_plus1; > > > @@ -190,15 +204,13 @@ struct v4l2_ctrl_hevc_slice_params { > > >         __u8    pic_struct; > > > > > >         /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header > > > */ > > > -       __u8    num_active_dpb_entries; > > >         __u8    ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; > > >         __u8    ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; > > > > > > -       __u8    num_rps_poc_st_curr_before; > > > -       __u8    num_rps_poc_st_curr_after; > > > -       __u8    num_rps_poc_lt_curr; > > > +       __u16   short_term_ref_pic_set_size; > > > +       __u16   long_term_ref_pic_set_size; > > > > > > -       __u8    padding; > > > +       __u8    padding[5]; > > > > > >         /* ISO/IEC 23008-2, ITU-T Rec. H.265: General slice segment header > > > */ > > >         struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; > > > @@ -209,4 +221,21 @@ struct v4l2_ctrl_hevc_slice_params { > > >         __u64   flags; > > > }; > > > > > > +#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC           0x1 > > > +#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC            0x2 > > > +#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR  0x4 > > > + > > > +struct v4l2_ctrl_hevc_decode_params { > > > +       __s32   pic_order_cnt_val; > > > +       __u8    num_active_dpb_entries; > > > +       struct  v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; > > > +       __u8    num_rps_poc_st_curr_before; > > > +       __u8    num_rps_poc_st_curr_after; > > > +       __u8    num_rps_poc_lt_curr; > > > +       __u8    rps_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; > > > +       __u8    rps_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; > > > +       __u8    rps_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX]; > > > +       __u64   flags; > > > +}; > > > + > > > #endif > > While you are adding stuff is there any chance you could also add: > > > > #define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT     (1ULL << 9) > > > > to the slice flags?  The rpi H265 decoder needs it to deal with > > cases where dependant_slice_segment is set in the slice header. > > Remarks on previous versions suggest to only add what it is used by driver > (like scaling feature) so I will wait to have an usage of this flag to > introduce it. Any chance we can have a link to the related kernel code ? Userspace is already expected to fill the blank in the slice_params, but perhaps we missed something. > > Benjamin > > > > > Thanks > > > > John Cox > > > 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.8 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 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 E0502C433DB for ; Mon, 22 Feb 2021 20:01:52 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 845D064DF2 for ; Mon, 22 Feb 2021 20:01:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 845D064DF2 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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date: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=xKza0h1VHfrcKPn86WZ/uFgNcAFNIImlWmJCHvVIyeg=; b=DQCLLsZ4l+e4HApz91dLaSYTt qs30lpFn+fAiTPjHZnphILVjGWi3Slt/XHhraLwDo4e93EC94iSPOTMwRoXfzRaCAcKO3M0KLhCyp UK+IQPPmWtSsmNJ/0AJOw/NU+3HHsD4jmZm2gfQW9LNeKVpZmPmH0GV3scER6PGiAB5E/rE94Pkt5 jmpPhNadxaUH+AoMS6/zqwXJFdw3LWz2ftyDnfD4iI3R7qxFz5/StmZQqpFti4WNRZVBE8RBIhUAb 396PQwBq/ceUw6nrZOQBKTDB9Tgenzw1wGZEb6hrvg1Df5ELwrUBwAyTmtXD3WS6bCAR/Rh9PuOrE ezjP2I8Cw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEHOr-0005aZ-BE; Mon, 22 Feb 2021 20:01:45 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEHOm-0005Zf-8w; Mon, 22 Feb 2021 20:01:42 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: nicolas) with ESMTPSA id 0BA431F45319 Message-ID: Subject: Re: [PATCH v2 1/9] media: hevc: Modify structures to follow H265 ITU spec From: Nicolas Dufresne To: Benjamin Gaignard , John Cox Date: Mon, 22 Feb 2021 15:01:25 -0500 In-Reply-To: <4cd4a009-9552-03a5-a49d-de16c55c63da@collabora.com> References: <20210218191844.297869-1-benjamin.gaignard@collabora.com> <20210218191844.297869-2-benjamin.gaignard@collabora.com> <4cd4a009-9552-03a5-a49d-de16c55c63da@collabora.com> User-Agent: Evolution 3.38.3 (3.38.3-1.fc33) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210222_150140_541486_9E9A7A9B X-CRM114-Status: GOOD ( 26.91 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peng.fan@nxp.com, kernel@collabora.com, festevam@gmail.com, linux-rockchip@lists.infradead.org, wens@csie.org, linux-imx@nxp.com, dan.carpenter@oracle.com, linux-media@vger.kernel.org, devicetree@vger.kernel.org, p.zabel@pengutronix.de, s.hauer@pengutronix.de, mripard@kernel.org, robh+dt@kernel.org, mchehab@kernel.org, ezequiel@collabora.com, linux-arm-kernel@lists.infradead.org, jernej.skrabec@siol.net, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, paul.kocialkowski@bootlin.com, kernel@pengutronix.de, hverkuil-cisco@xs4all.nl, shawnguo@kernel.org 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 SGkgSm9obiwKCkxlIGx1bmRpIDIyIGbDqXZyaWVyIDIwMjEgw6AgMTc6MzkgKzAxMDAsIEJlbmph bWluIEdhaWduYXJkIGEgw6ljcml0wqA6Cj4gCj4gTGUgMjIvMDIvMjAyMSDDoCAxNzoyNCwgSm9o biBDb3ggYSDDqWNyaXTCoDoKPiA+ID4gVGhlIEguMjY1IElUVSBzcGVjaWZpY2F0aW9uIChzZWN0 aW9uIDcuNCkgZGVmaW5lIHRoZSBnZW5lcmFsCj4gPiA+IHNsaWNlIHNlZ21lbnQgaGVhZGVyIHNl bWFudGljcy4KPiA+ID4gTW9kaWZpZWQvYWRkZWQgZmllbGRzIGFyZToKPiA+ID4gLSB2aWRlb19w YXJhbWV0ZXJfc2V0X2lkOiAoNy40LjMuMSkgaWRlbnRpZmllcyB0aGUgVlBTIGZvcgo+ID4gPiBy ZWZlcmVuY2UgYnkgb3RoZXIgc3ludGF4IGVsZW1lbnRzLgo+ID4gPiAtIHNlcV9wYXJhbWV0ZXJf c2V0X2lkOiAoNy40LjMuMi4xKSBzcGVjaWZpZXMgdGhlIHZhbHVlIG9mCj4gPiA+IHRoZSB2cHNf dmlkZW9fcGFyYW1ldGVyX3NldF9pZCBvZiB0aGUgYWN0aXZlIFZQUy4KPiA+ID4gLSBjaHJvbWFf Zm9ybWF0X2lkYzogKDcuNC4zLjIuMSkgc3BlY2lmaWVzIHRoZSBjaHJvbWEgc2FtcGxpbmcKPiA+ ID4gcmVsYXRpdmUgdG8gdGhlIGx1bWEgc2FtcGxpbmcKPiA+ID4gLSBwaWNfcGFyYW1ldGVyX3Nl dF9pZDogKDcuNC4zLjMuMSkgaWRlbnRpZmllcyB0aGUgUFBTIGZvcgo+ID4gPiByZWZlcmVuY2Ug Ynkgb3RoZXIgc3ludGF4IGVsZW1lbnRzCj4gPiA+IC0gbnVtX3JlZl9pZHhfbDBfZGVmYXVsdF9h Y3RpdmVfbWludXMxOiAoNy40LjMuMy4xKSBzcGVjaWZpZXMKPiA+ID4gdGhlIGluZmVycmVkIHZh bHVlIG9mIG51bV9yZWZfaWR4X2wwX2FjdGl2ZV9taW51czEKPiA+ID4gLSBudW1fcmVmX2lkeF9s MV9kZWZhdWx0X2FjdGl2ZV9taW51czE6ICg3LjQuMy4zLjEpIHNwZWNpZmllcwo+ID4gPiB0aGUg aW5mZXJyZWQgdmFsdWUgb2YgbnVtX3JlZl9pZHhfbDFfYWN0aXZlX21pbnVzMQo+ID4gPiAtIHNs aWNlX3NlZ21lbnRfYWRkcjogKDcuNC43LjEpIHNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZgo+ID4g PiB0aGUgZmlyc3QgY29kaW5nIHRyZWUgYmxvY2sgaW4gdGhlIHNsaWNlIHNlZ21lbnQKPiA+ID4g LSBudW1fZW50cnlfcG9pbnRfb2Zmc2V0czogKDcuNC43LjEpIHNwZWNpZmllcyB0aGUgbnVtYmVy IG9mCj4gPiA+IGVudHJ5X3BvaW50X29mZnNldF9taW51czFbIGkgXSBzeW50YXggZWxlbWVudHMg aW4gdGhlIHNsaWNlIGhlYWRlcgo+ID4gPiAKPiA+ID4gQWRkIEhFVkMgZGVjb2RlIHBhcmFtcyBj b250YWlucyB0aGUgaW5mb3JtYXRpb24gdXNlZCBpbiBzZWN0aW9uCj4gPiA+ICI4LjMgU2xpY2Ug ZGVjb2RpbmcgcHJvY2VzcyIgb2YgdGhlIHNwZWNpZmljYXRpb24gdG8gbGV0IHRoZSBoYXJkd2Fy ZQo+ID4gPiBwZXJmb3JtIGRlY29kaW5nIG9mIGEgc2xpY2VzLgo+ID4gPiAKPiA+ID4gQWRhcHQg Q2VkcnVzIGRyaXZlciBhY2NvcmRpbmcgdG8gdGhlc2UgY2hhbmdlcy4KPiA+ID4gCj4gPiA+IFNp Z25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBjb2xsYWJv cmEuY29tPgo+ID4gPiAtLS0KPiA+ID4gdmVyc2lvbiAyOgo+ID4gPiAtIHJlbW92ZSBhbGwgY2hh bmdlIHJlbGF0ZWQgdG8gc2NhbGluZwo+ID4gPiAtIHNxdWFzaCBjb21taXRzIHRvIGEgY29oZXJl bnQgc3BsaXQKPiA+ID4gLSBiZSBtb3JlIHZlcmJvc2UgYWJvdXQgdGhlIGFkZGVkIGZpZWxkcwo+ ID4gPiAKPiA+ID4gZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy5jwqDCoMKgwqDC oMKgwqDCoMKgIHwgMjYgKysrKysrKystLS0KPiA+ID4gZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1 bnhpL2NlZHJ1cy9jZWRydXMuY8KgwqAgfMKgIDYgKysrCj4gPiA+IGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzLmjCoMKgIHzCoCAxICsKPiA+ID4gLi4uL3N0YWdpbmcv bWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19kZWMuY8KgwqAgfMKgIDIgKwo+ID4gPiAuLi4vc3Rh Z2luZy9tZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzX2gyNjUuY8KgIHzCoCA2ICsrLQo+ID4gPiBp bmNsdWRlL21lZGlhL2hldmMtY3RybHMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNDUgKysrKysrKysrKysrKysrLS0tLQo+ID4gPiA2IGZpbGVzIGNoYW5nZWQsIDY5 IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMuYyBiL2RyaXZlcnMvbWVkaWEvdjRs Mi0KPiA+ID4gY29yZS92NGwyLWN0cmxzLmMKPiA+ID4gaW5kZXggMDE2Y2Y2MjA0Y2JiLi40MDYw YjViY2MzYzAgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDIt Y3RybHMuYwo+ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLmMK PiA+ID4gQEAgLTEwMjgsNiArMTAyOCw3IEBAIGNvbnN0IGNoYXIgKnY0bDJfY3RybF9nZXRfbmFt ZSh1MzIgaWQpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9f SEVWQ19TUFM6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4KPiA+ID4gIkhFVkMgU2VxdWVuY2UgUGFyYW1ldGVyIFNldCI7Cj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19QUFM6wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4KPiA+ID4gIkhFVkMgUGljdHVyZSBQYXJh bWV0ZXIgU2V0IjsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DSURfTVBFR19WSURF T19IRVZDX1NMSUNFX1BBUkFNUzrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybgo+ID4g PiAiSEVWQyBTbGljZSBQYXJhbWV0ZXJzIjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgY2FzZSBWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUzrCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4KPiA+ID4gIkhFVkMgRGVjb2RlIFBhcmFtZXRlcnMiOwo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREU6wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybgo+ID4gPiAiSEVWQyBEZWNvZGUgTW9kZSI7Cj4gPiA+ IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TVEFSVF9DT0RF OsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybgo+ID4gPiAiSEVWQyBTdGFydCBD b2RlIjsKPiA+ID4gCj4gPiA+IEBAIC0xNDgyLDYgKzE0ODMsOSBAQCB2b2lkIHY0bDJfY3RybF9m aWxsKHUzMiBpZCwgY29uc3QgY2hhciAqKm5hbWUsIGVudW0KPiA+ID4gdjRsMl9jdHJsX3R5cGUg KnR5cGUsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSEVW Q19TTElDRV9QQVJBTVM6Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnR5 cGUgPSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NMSUNFX1BBUkFNUzsKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgY2FzZSBWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUzoKPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCp0eXBlID0gVjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1T Owo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+IMKgwqDC oMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX1VOSVRfQ0VMTF9TSVpFOgo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCp0eXBlID0gVjRMMl9DVFJMX1RZUEVfQVJFQTsKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdf UkVBRF9PTkxZOwo+ID4gPiBAQCAtMTgzMyw2ICsxODM3LDcgQEAgc3RhdGljIGludCBzdGRfdmFs aWRhdGVfY29tcG91bmQoY29uc3Qgc3RydWN0Cj4gPiA+IHY0bDJfY3RybCAqY3RybCwgdTMyIGlk eCwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnBfaGV2 Y19zcHM7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfcHBzICpw X2hldmNfcHBzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfY3RybF9oZXZjX3Ns aWNlX3BhcmFtcyAqcF9oZXZjX3NsaWNlX3BhcmFtczsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJhbXMgKnBfaGV2Y19kZWNvZGVfcGFyYW1zOwo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfYXJlYSAqYXJlYTsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHZvaWQgKnAgPSBwdHIucCArIGlkeCAqIGN0cmwtPmVsZW1fc2l6ZTsKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBpOwo+ID4gPiBAQCAtMjEwOCwyMyArMjExMywy NyBAQCBzdGF0aWMgaW50IHN0ZF92YWxpZGF0ZV9jb21wb3VuZChjb25zdCBzdHJ1Y3QKPiA+ID4g djRsMl9jdHJsICpjdHJsLCB1MzIgaWR4LAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHplcm9fcGFkZGluZygqcF9oZXZjX3Bwcyk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+IAo+ID4gPiAtwqDCoMKgwqDCoMKgwqBjYXNlIFY0 TDJfQ1RSTF9UWVBFX0hFVkNfU0xJQ0VfUEFSQU1TOgo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcF9oZXZjX3NsaWNlX3BhcmFtcyA9IHA7Cj4gPiA+ICvCoMKgwqDCoMKgwqDC oGNhc2UgVjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1TOgo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcF9oZXZjX2RlY29kZV9wYXJhbXMgPSBwOwo+ID4gPiAKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChwX2hldmNfc2xpY2VfcGFyYW1z LT5udW1fYWN0aXZlX2RwYl9lbnRyaWVzID4KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChwX2hldmNfZGVjb2RlX3BhcmFtcy0+bnVtX2FjdGl2ZV9kcGJfZW50cmllcyA+ Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFY0TDJfSEVWQ19E UEJfRU5UUklFU19OVU1fTUFYKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiA+ID4gCj4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB6ZXJvX3BhZGRpbmcocF9oZXZjX3NsaWNlX3BhcmFtcy0+cHJl ZF93ZWlnaHRfdGFibGUpOwo+ID4gPiAtCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmb3IgKGkgPSAwOyBpIDwgcF9oZXZjX3NsaWNlX3BhcmFtcy0KPiA+ID4gPm51bV9hY3Rp dmVfZHBiX2VudHJpZXM7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3Ig KGkgPSAwOyBpIDwgcF9oZXZjX2RlY29kZV9wYXJhbXMtCj4gPiA+ID5udW1fYWN0aXZlX2RwYl9l bnRyaWVzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGkr Kykgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgdjRsMl9oZXZjX2RwYl9lbnRyeSAqZHBiX2VudHJ5ID0KPiA+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJnBf aGV2Y19zbGljZV9wYXJhbXMtPmRwYltpXTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJnBfaGV2Y19kZWNvZGVfcGFy YW1zLT5kcGJbaV07Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB6ZXJvX3BhZGRpbmcoKmRwYl9lbnRyeSk7Cj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiAKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGNhc2UgVjRM Ml9DVFJMX1RZUEVfSEVWQ19TTElDRV9QQVJBTVM6Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBwX2hldmNfc2xpY2VfcGFyYW1zID0gcDsKPiA+ID4gKwo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgemVyb19wYWRkaW5nKHBfaGV2Y19zbGljZV9wYXJhbXMt PnByZWRfd2VpZ2h0X3RhYmxlKTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB6ZXJvX3BhZGRpbmcoKnBfaGV2Y19zbGljZV9wYXJhbXMpOwo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gPiAKPiA+ID4gQEAgLTI4MjEsNiArMjgzMCw5 IEBAIHN0YXRpYyBzdHJ1Y3QgdjRsMl9jdHJsICp2NGwyX2N0cmxfbmV3KHN0cnVjdAo+ID4gPiB2 NGwyX2N0cmxfaGFuZGxlciAqaGRsLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NU UkxfVFlQRV9IRVZDX1NMSUNFX1BBUkFNUzoKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBlbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3Bh cmFtcyk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1TOgo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxlbV9zaXplID0gc2l6ZW9mKHN0 cnVjdCB2NGwyX2N0cmxfaGV2Y19kZWNvZGVfcGFyYW1zKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NU UkxfVFlQRV9BUkVBOgo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsZW1f c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdjRsMl9hcmVhKTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzLmMKPiA+ID4gYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEv c3VueGkvY2VkcnVzL2NlZHJ1cy5jCj4gPiA+IGluZGV4IDdiZDkyOTFjOGQ1Zi4uNGNkM2NhYjFh MjU3IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVz L2NlZHJ1cy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9jZWRydXMv Y2VkcnVzLmMKPiA+ID4gQEAgLTE1MSw2ICsxNTEsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBj ZWRydXNfY29udHJvbCBjZWRydXNfY29udHJvbHNbXQo+ID4gPiA9IHsKPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9LAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC5jb2RlY8KgwqDCoMKgwqDCoMKgwqDCoMKgPSBDRURSVVNfQ09ERUNfVlA4LAo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgfSwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgewo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmNmZyA9IHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuaWQgPSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hF VkNfREVDT0RFX1BBUkFNUywKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0s Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuY29kZWPCoMKgwqDCoMKgwqDC oMKgwqDCoD0gQ0VEUlVTX0NPREVDX0gyNjUsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoH0sCj4gPiA+ IH07Cj4gPiA+IAo+ID4gPiAjZGVmaW5lIENFRFJVU19DT05UUk9MU19DT1VOVMKgwqDCoEFSUkFZ X1NJWkUoY2VkcnVzX2NvbnRyb2xzKQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L21lZGlhL3N1bnhpL2NlZHJ1cy9jZWRydXMuaAo+ID4gPiBiL2RyaXZlcnMvc3RhZ2luZy9tZWRp YS9zdW54aS9jZWRydXMvY2VkcnVzLmgKPiA+ID4gaW5kZXggMjUxYTZhNjYwMzUxLi4yY2EzM2Fj MzhiOWEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9jZWRy dXMvY2VkcnVzLmgKPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL2NlZHJ1 cy9jZWRydXMuaAo+ID4gPiBAQCAtNzYsNiArNzYsNyBAQCBzdHJ1Y3QgY2VkcnVzX2gyNjVfcnVu IHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnNwczsKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19wcHPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKnBwczsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwy X2N0cmxfaGV2Y19zbGljZV9wYXJhbXPCoMKgwqDCoMKgwqDCoMKgKnNsaWNlX3BhcmFtczsKPiA+ ID4gK8KgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJh bXPCoMKgwqDCoMKgwqDCoCpkZWNvZGVfcGFyYW1zOwo+ID4gPiB9Owo+ID4gPiAKPiA+ID4gc3Ry dWN0IGNlZHJ1c192cDhfcnVuIHsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzX2RlYy5jCj4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL21l ZGlhL3N1bnhpL2NlZHJ1cy9jZWRydXNfZGVjLmMKPiA+ID4gaW5kZXggYTkwOTBkYWY2MjZhLi5j ZDgyMWY0MTdhMTQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54 aS9jZWRydXMvY2VkcnVzX2RlYy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9z dW54aS9jZWRydXMvY2VkcnVzX2RlYy5jCj4gPiA+IEBAIC02OCw2ICs2OCw4IEBAIHZvaWQgY2Vk cnVzX2RldmljZV9ydW4odm9pZCAqcHJpdikKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1BQUyk7Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVuLmgyNjUuc2xpY2VfcGFyYW1z ID0gY2VkcnVzX2ZpbmRfY29udHJvbF9kYXRhKGN0eCwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NM SUNFX1BBUkFNUyk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW4uaDI2 NS5kZWNvZGVfcGFyYW1zID0gY2VkcnVzX2ZpbmRfY29udHJvbF9kYXRhKGN0eCwKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBWNEwyX0NJRF9NUEVH X1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUyk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYnJlYWs7Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX1BJ WF9GTVRfVlA4X0ZSQU1FOgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlh L3N1bnhpL2NlZHJ1cy9jZWRydXNfaDI2NS5jCj4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL21lZGlh L3N1bnhpL2NlZHJ1cy9jZWRydXNfaDI2NS5jCj4gPiA+IGluZGV4IGNlNDk3ZDAxOTdkZi4uZGNl NWRiNmJlMTNhIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkv Y2VkcnVzL2NlZHJ1c19oMjY1LmMKPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1 bnhpL2NlZHJ1cy9jZWRydXNfaDI2NS5jCj4gPiA+IEBAIC0yNDUsNiArMjQ1LDcgQEAgc3RhdGlj IHZvaWQgY2VkcnVzX2gyNjVfc2V0dXAoc3RydWN0IGNlZHJ1c19jdHggKmN0eCwKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnNwczsKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19wcHMgKnBwczsKPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zbGljZV9wYXJh bXMgKnNsaWNlX3BhcmFtczsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IHY0bDJf Y3RybF9oZXZjX2RlY29kZV9wYXJhbXMgKmRlY29kZV9wYXJhbXM7Cj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBjb25zdCBzdHJ1Y3QgdjRsMl9oZXZjX3ByZWRfd2VpZ2h0X3RhYmxlICpwcmVkX3dlaWdo dF90YWJsZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGRtYV9hZGRyX3Qgc3JjX2J1Zl9hZGRyOwo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgZG1hX2FkZHJfdCBzcmNfYnVmX2VuZF9hZGRyOwo+ID4gPiBA QCAtMjU2LDYgKzI1Nyw3IEBAIHN0YXRpYyB2b2lkIGNlZHJ1c19oMjY1X3NldHVwKHN0cnVjdCBj ZWRydXNfY3R4ICpjdHgsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzcHMgPSBydW4tPmgyNjUuc3Bz Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgcHBzID0gcnVuLT5oMjY1LnBwczsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHNsaWNlX3BhcmFtcyA9IHJ1bi0+aDI2NS5zbGljZV9wYXJhbXM7Cj4gPiA+ICvC oMKgwqDCoMKgwqDCoGRlY29kZV9wYXJhbXMgPSBydW4tPmgyNjUuZGVjb2RlX3BhcmFtczsKPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoHByZWRfd2VpZ2h0X3RhYmxlID0gJnNsaWNlX3BhcmFtcy0+cHJl ZF93ZWlnaHRfdGFibGU7Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogTVYgY29sdW1u IGJ1ZmZlciBzaXplIGFuZCBhbGxvY2F0aW9uLiAqLwo+ID4gPiBAQCAtNDg3LDcgKzQ4OSw3IEBA IHN0YXRpYyB2b2lkIGNlZHJ1c19oMjY1X3NldHVwKHN0cnVjdCBjZWRydXNfY3R4ICpjdHgsCj4g PiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgcmVnID0KPiA+ID4gVkVfREVDX0gyNjVfREVDX1NM SUNFX0hEUl9JTkZPMV9TTElDRV9UQ19PRkZTRVRfRElWMihzbGljZV9wYXJhbXMtCj4gPiA+ID5z bGljZV90Y19vZmZzZXRfZGl2MikgfAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ ID4gPiBWRV9ERUNfSDI2NV9ERUNfU0xJQ0VfSERSX0lORk8xX1NMSUNFX0JFVEFfT0ZGU0VUX0RJ VjIoc2xpY2VfcGFyYW1zLQo+ID4gPiA+c2xpY2VfYmV0YV9vZmZzZXRfZGl2MikgfAo+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IFZFX0RFQ19IMjY1X0RFQ19TTElDRV9IRFJf SU5GTzFfU0xJQ0VfUE9DX0JJR0VTVF9JTl9SUFNfU1Qoc2xpY2VfcGFyYW1zLQo+ID4gPiA+bnVt X3Jwc19wb2Nfc3RfY3Vycl9hZnRlciA9PSAwKSB8Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAKPiA+ID4gVkVfREVDX0gyNjVfREVDX1NMSUNFX0hEUl9JTkZPMV9TTElDRV9QT0NfQklH RVNUX0lOX1JQU19TVChkZWNvZGVfcGFyYW1zLQo+ID4gPiA+bnVtX3Jwc19wb2Nfc3RfY3Vycl9h ZnRlciA9PSAwKSB8Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IFZFX0RF Q19IMjY1X0RFQ19TTElDRV9IRFJfSU5GTzFfU0xJQ0VfQ1JfUVBfT0ZGU0VUKHNsaWNlX3BhcmFt cy0KPiA+ID4gPnNsaWNlX2NyX3FwX29mZnNldCkgfAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoAo+ID4gPiBWRV9ERUNfSDI2NV9ERUNfU0xJQ0VfSERSX0lORk8xX1NMSUNFX0NCX1FQ X09GRlNFVChzbGljZV9wYXJhbXMtCj4gPiA+ID5zbGljZV9jYl9xcF9vZmZzZXQpIHwKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkVfREVDX0gyNjVfREVDX1NMSUNFX0hEUl9JTkZP MV9TTElDRV9RUF9ERUxUQShzbGljZV9wYXJhbXMtCj4gPiA+ID5zbGljZV9xcF9kZWx0YSk7Cj4g PiA+IEBAIC01MjgsNyArNTMwLDcgQEAgc3RhdGljIHZvaWQgY2VkcnVzX2gyNjVfc2V0dXAoc3Ry dWN0IGNlZHJ1c19jdHggKmN0eCwKPiA+ID4gCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBXcml0 ZSBkZWNvZGVkIHBpY3R1cmUgYnVmZmVyIGluIHBpYyBsaXN0LiAqLwo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgY2VkcnVzX2gyNjVfZnJhbWVfaW5mb193cml0ZV9kcGIoY3R4LCBzbGljZV9wYXJhbXMt PmRwYiwKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzbGljZV9wYXJhbXMtCj4gPiA+ID5u dW1fYWN0aXZlX2RwYl9lbnRyaWVzKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWNv ZGVfcGFyYW1zLQo+ID4gPiA+bnVtX2FjdGl2ZV9kcGJfZW50cmllcyk7Cj4gPiA+IAo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgLyogT3V0cHV0IGZyYW1lLiAqLwo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbWVkaWEvaGV2Yy1jdHJscy5oIGIvaW5jbHVkZS9tZWRpYS9oZXZjLWN0cmxz LmgKPiA+ID4gaW5kZXggYjRjYjJlZjAyZjE3Li43ZmU3MDRhMDhmNzcgMTAwNjQ0Cj4gPiA+IC0t LSBhL2luY2x1ZGUvbWVkaWEvaGV2Yy1jdHJscy5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvbWVkaWEv aGV2Yy1jdHJscy5oCj4gPiA+IEBAIC0xOSw2ICsxOSw3IEBACj4gPiA+ICNkZWZpbmUgVjRMMl9D SURfTVBFR19WSURFT19IRVZDX1NQU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChWNEwyX0NJRF9D T0RFQ19CQVNFICsKPiA+ID4gMTAwOCkKPiA+ID4gI2RlZmluZSBWNEwyX0NJRF9NUEVHX1ZJREVP X0hFVkNfUFBTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKFY0TDJfQ0lEX0NPREVDX0JBU0UgKwo+ ID4gPiAxMDA5KQo+ID4gPiAjZGVmaW5lIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TTElDRV9Q QVJBTVPCoMKgwqAoVjRMMl9DSURfQ09ERUNfQkFTRSArCj4gPiA+IDEwMTApCj4gPiA+ICsjZGVm aW5lIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19ERUNPREVfUEFSQU1TwqAoVjRMMl9DSURfQ09E RUNfQkFTRSArCj4gPiA+IDEwMTIpCj4gPiA+ICNkZWZpbmUgVjRMMl9DSURfTVBFR19WSURFT19I RVZDX0RFQ09ERV9NT0RFwqDCoMKgwqAoVjRMMl9DSURfQ09ERUNfQkFTRSArCj4gPiA+IDEwMTUp Cj4gPiA+ICNkZWZpbmUgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NUQVJUX0NPREXCoMKgwqDC oMKgKFY0TDJfQ0lEX0NPREVDX0JBU0UgKwo+ID4gPiAxMDE2KQo+ID4gPiAKPiA+ID4gQEAgLTI2 LDYgKzI3LDcgQEAKPiA+ID4gI2RlZmluZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NQUyAweDAxMjAK PiA+ID4gI2RlZmluZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1BQUyAweDAxMjEKPiA+ID4gI2RlZmlu ZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NMSUNFX1BBUkFNUyAweDAxMjIKPiA+ID4gKyNkZWZpbmUg VjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1TIDB4MDEyNAo+ID4gPiAKPiA+ID4gZW51 bSB2NGwyX21wZWdfdmlkZW9faGV2Y19kZWNvZGVfbW9kZSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKg wqBWNEwyX01QRUdfVklERU9fSEVWQ19ERUNPREVfTU9ERV9TTElDRV9CQVNFRCwKPiA+ID4gQEAg LTU0LDYgKzU2LDkgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19zdGFydF9jb2RlIHsKPiA+ ID4gLyogVGhlIGNvbnRyb2xzIGFyZSBub3Qgc3RhYmxlIGF0IHRoZSBtb21lbnQgYW5kIHdpbGwg bGlrZWx5IGJlIHJld29ya2VkLgo+ID4gPiAqLwo+ID4gPiBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNf c3BzIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIElTTy9JRUMgMjMwMDgtMiwgSVRVLVQgUmVj LiBILjI2NTogU2VxdWVuY2UgcGFyYW1ldGVyIHNldCAqLwo+ID4gPiArwqDCoMKgwqDCoMKgwqBf X3U4wqDCoMKgwqB2aWRlb19wYXJhbWV0ZXJfc2V0X2lkOwo+ID4gV2hpbHN0IEkgZG9uJ3Qgb2Jq ZWN0IHRvIHRoZSBhZGRpdGlvbiBvZiB2cHMgaWQgd2h5IGRvIHdlIG5lZWQKPiA+IGl0IGlmIHRo ZSBWUFMgaXMgbmV2ZXIgcGFzc2VkPwo+IAo+IFlvdSBhcmUgcmlnaHQgSSBjb3VsZCByZW1vdmUg aXQuCj4gCj4gPiAKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgc2VxX3BhcmFtZXRl cl9zZXRfaWQ7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoGNocm9tYV9mb3JtYXRf aWRjOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191MTbCoMKgwqBwaWNfd2lkdGhfaW5fbHVtYV9z YW1wbGVzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191MTbCoMKgwqBwaWNfaGVpZ2h0X2luX2x1 bWFfc2FtcGxlczsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoGJpdF9kZXB0aF9s dW1hX21pbnVzODsKPiA+ID4gQEAgLTc0LDkgKzc5LDkgQEAgc3RydWN0IHY0bDJfY3RybF9oZXZj X3NwcyB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBsb2cyX2RpZmZfbWF4X21p bl9wY21fbHVtYV9jb2RpbmdfYmxvY2tfc2l6ZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fdTjC oMKgwqDCoG51bV9zaG9ydF90ZXJtX3JlZl9waWNfc2V0czsKPiA+ID4gwqDCoMKgwqDCoMKgwqDC oF9fdTjCoMKgwqDCoG51bV9sb25nX3Rlcm1fcmVmX3BpY3Nfc3BzOwo+ID4gPiAtwqDCoMKgwqDC oMKgwqBfX3U4wqDCoMKgwqBjaHJvbWFfZm9ybWF0X2lkYzsKPiA+ID4gCj4gPiA+IC3CoMKgwqDC oMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmc7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKg wqDCoG51bV9zbGljZXM7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmdb Nl07Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191NjTCoMKgwqBmbGFnczsKPiA+ID4g fTsKPiA+ID4gQEAgLTEwMCwxMCArMTA1LDE1IEBAIHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMg ewo+ID4gPiAjZGVmaW5lIFY0TDJfSEVWQ19QUFNfRkxBR19QUFNfRElTQUJMRV9ERUJMT0NLSU5H X0ZJTFRFUsKgwqDCoMKgwqDCoMKgwqAoMVVMTCA8PAo+ID4gPiAxNikKPiA+ID4gI2RlZmluZSBW NEwyX0hFVkNfUFBTX0ZMQUdfTElTVFNfTU9ESUZJQ0FUSU9OX1BSRVNFTlTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKDFVTEwgPDwKPiA+ID4gMTcpCj4gPiA+ICNkZWZpbmUgVjRMMl9IRVZDX1BQU19G TEFHX1NMSUNFX1NFR01FTlRfSEVBREVSX0VYVEVOU0lPTl9QUkVTRU5UICgxVUxMIDw8Cj4gPiA+ IDE4KQo+ID4gPiArI2RlZmluZSBWNEwyX0hFVkNfUFBTX0ZMQUdfREVCTE9DS0lOR19GSUxURVJf Q09OVFJPTF9QUkVTRU5UwqDCoMKgKDFVTEwgPDwKPiA+ID4gMTkpCj4gPiA+ICsjZGVmaW5lIFY0 TDJfSEVWQ19QUFNfRkxBR19VTklGT1JNX1NQQUNJTkfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAoMVVMTCA8PAo+ID4gPiAyMCkKPiA+ID4gCj4gPiA+IHN0cnVjdCB2 NGwyX2N0cmxfaGV2Y19wcHMgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogSVNPL0lFQyAyMzAw OC0yLCBJVFUtVCBSZWMuIEguMjY1OiBQaWN0dXJlIHBhcmFtZXRlciBzZXQgKi8KPiA+ID4gK8Kg wqDCoMKgwqDCoMKgX191OMKgwqDCoMKgcGljX3BhcmFtZXRlcl9zZXRfaWQ7Cj4gPiA+IMKgwqDC oMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBudW1fZXh0cmFfc2xpY2VfaGVhZGVyX2JpdHM7Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoG51bV9yZWZfaWR4X2wwX2RlZmF1bHRfYWN0aXZl X21pbnVzMTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVtX3JlZl9pZHhfbDFf ZGVmYXVsdF9hY3RpdmVfbWludXMxOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX19zOMKgwqDCoMKg aW5pdF9xcF9taW51czI2Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgZGlmZl9j dV9xcF9kZWx0YV9kZXB0aDsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fczjCoMKgwqDCoHBwc19j Yl9xcF9vZmZzZXQ7Cj4gPiA+IEBAIC0xMTYsNyArMTI2LDcgQEAgc3RydWN0IHY0bDJfY3RybF9o ZXZjX3BwcyB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3M4wqDCoMKgwqBwcHNfdGNfb2Zmc2V0 X2RpdjI7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBsb2cyX3BhcmFsbGVsX21l cmdlX2xldmVsX21pbnVzMjsKPiA+ID4gCj4gPiA+IC3CoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDC oHBhZGRpbmdbNF07Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmc7Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U2NMKgwqDCoGZsYWdzOwo+ID4gPiB9Owo+ID4gPiAKPiA+ ID4gQEAgLTE2NSw2ICsxNzUsMTAgQEAgc3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3BhcmFt cyB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3UzMsKgwqDCoGJpdF9zaXplOwo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgX191MzLCoMKgwqBkYXRhX2JpdF9vZmZzZXQ7Cj4gPiA+IAo+ID4gPiArwqDC oMKgwqDCoMKgwqAvKiBJU08vSUVDIDIzMDA4LTIsIElUVS1UIFJlYy4gSC4yNjU6IEdlbmVyYWwg c2xpY2Ugc2VnbWVudCBoZWFkZXIKPiA+ID4gKi8KPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191MzLC oMKgwqBzbGljZV9zZWdtZW50X2FkZHI7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTMywqDCoMKg bnVtX2VudHJ5X3BvaW50X29mZnNldHM7Cj4gPiA+ICsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8q IElTTy9JRUMgMjMwMDgtMiwgSVRVLVQgUmVjLiBILjI2NTogTkFMIHVuaXQgaGVhZGVyICovCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBuYWxfdW5pdF90eXBlOwo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVoX3RlbXBvcmFsX2lkX3BsdXMxOwo+ID4gPiBAQCAt MTkwLDE1ICsyMDQsMTMgQEAgc3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3BhcmFtcyB7Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBwaWNfc3RydWN0Owo+ID4gPiAKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoC8qIElTTy9JRUMgMjMwMDgtMiwgSVRVLVQgUmVjLiBILjI2NTogR2Vu ZXJhbCBzbGljZSBzZWdtZW50IGhlYWRlcgo+ID4gPiAqLwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBf X3U4wqDCoMKgwqBudW1fYWN0aXZlX2RwYl9lbnRyaWVzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKg X191OMKgwqDCoMKgcmVmX2lkeF9sMFtWNEwyX0hFVkNfRFBCX0VOVFJJRVNfTlVNX01BWF07Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqByZWZfaWR4X2wxW1Y0TDJfSEVWQ19EUEJf RU5UUklFU19OVU1fTUFYXTsKPiA+ID4gCj4gPiA+IC3CoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDC oG51bV9ycHNfcG9jX3N0X2N1cnJfYmVmb3JlOwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBfX3U4wqDC oMKgwqBudW1fcnBzX3BvY19zdF9jdXJyX2FmdGVyOwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBfX3U4 wqDCoMKgwqBudW1fcnBzX3BvY19sdF9jdXJyOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBfX3UxNsKg wqDCoHNob3J0X3Rlcm1fcmVmX3BpY19zZXRfc2l6ZTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191 MTbCoMKgwqBsb25nX3Rlcm1fcmVmX3BpY19zZXRfc2l6ZTsKPiA+ID4gCj4gPiA+IC3CoMKgwqDC oMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmc7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKg wqDCoHBhZGRpbmdbNV07Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogSVNPL0lFQyAy MzAwOC0yLCBJVFUtVCBSZWMuIEguMjY1OiBHZW5lcmFsIHNsaWNlIHNlZ21lbnQgaGVhZGVyCj4g PiA+ICovCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9oZXZjX2RwYl9lbnRyeSBk cGJbVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVhdOwo+ID4gPiBAQCAtMjA5LDQgKzIyMSwy MSBAQCBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfc2xpY2VfcGFyYW1zIHsKPiA+ID4gwqDCoMKgwqDC oMKgwqDCoF9fdTY0wqDCoMKgZmxhZ3M7Cj4gPiA+IH07Cj4gPiA+IAo+ID4gPiArI2RlZmluZSBW NEwyX0hFVkNfREVDT0RFX1BBUkFNX0ZMQUdfSVJBUF9QSUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg MHgxCj4gPiA+ICsjZGVmaW5lIFY0TDJfSEVWQ19ERUNPREVfUEFSQU1fRkxBR19JRFJfUElDwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgyCj4gPiA+ICsjZGVmaW5lIFY0TDJfSEVWQ19ERUNPREVf UEFSQU1fRkxBR19OT19PVVRQVVRfT0ZfUFJJT1LCoCAweDQKPiA+ID4gKwo+ID4gPiArc3RydWN0 IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJhbXMgewo+ID4gPiArwqDCoMKgwqDCoMKgwqBfX3Mz MsKgwqDCoHBpY19vcmRlcl9jbnRfdmFsOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKg wqBudW1fYWN0aXZlX2RwYl9lbnRyaWVzOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3TCoMKg djRsMl9oZXZjX2RwYl9lbnRyeSBkcGJbVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVhdOwo+ ID4gPiArwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBudW1fcnBzX3BvY19zdF9jdXJyX2JlZm9y ZTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVtX3Jwc19wb2Nfc3RfY3Vycl9h ZnRlcjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVtX3Jwc19wb2NfbHRfY3Vy cjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgcnBzX3N0X2N1cnJfYmVmb3JlW1Y0 TDJfSEVWQ19EUEJfRU5UUklFU19OVU1fTUFYXTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKg wqDCoMKgcnBzX3N0X2N1cnJfYWZ0ZXJbVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVhdOwo+ ID4gPiArwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBycHNfbHRfY3VycltWNEwyX0hFVkNfRFBC X0VOVFJJRVNfTlVNX01BWF07Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTY0wqDCoMKgZmxhZ3M7 Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICNlbmRpZgo+ID4gV2hpbGUgeW91IGFyZSBhZGRpbmcg c3R1ZmYgaXMgdGhlcmUgYW55IGNoYW5jZSB5b3UgY291bGQgYWxzbyBhZGQ6Cj4gPiAKPiA+ICNk ZWZpbmUgVjRMMl9IRVZDX1NMSUNFX1BBUkFNU19GTEFHX0RFUEVOREVOVF9TTElDRV9TRUdNRU5U wqDCoMKgwqDCoCgxVUxMIDw8IDkpCj4gPiAKPiA+IHRvIHRoZSBzbGljZSBmbGFncz/CoCBUaGUg cnBpIEgyNjUgZGVjb2RlciBuZWVkcyBpdCB0byBkZWFsIHdpdGgKPiA+IGNhc2VzIHdoZXJlIGRl cGVuZGFudF9zbGljZV9zZWdtZW50IGlzIHNldCBpbiB0aGUgc2xpY2UgaGVhZGVyLgo+IAo+IFJl bWFya3Mgb24gcHJldmlvdXMgdmVyc2lvbnMgc3VnZ2VzdCB0byBvbmx5IGFkZCB3aGF0IGl0IGlz IHVzZWQgYnkgZHJpdmVyCj4gKGxpa2Ugc2NhbGluZyBmZWF0dXJlKSBzbyBJIHdpbGwgd2FpdCB0 byBoYXZlIGFuIHVzYWdlIG9mIHRoaXMgZmxhZyB0bwo+IGludHJvZHVjZSBpdC4KCkFueSBjaGFu Y2Ugd2UgY2FuIGhhdmUgYSBsaW5rIHRvIHRoZSByZWxhdGVkIGtlcm5lbCBjb2RlID8gVXNlcnNw YWNlIGlzIGFscmVhZHkKZXhwZWN0ZWQgdG8gZmlsbCB0aGUgYmxhbmsgaW4gdGhlIHNsaWNlX3Bh cmFtcywgYnV0IHBlcmhhcHMgd2UgbWlzc2VkIHNvbWV0aGluZy4KCj4gCj4gQmVuamFtaW4KPiAK PiA+IAo+ID4gVGhhbmtzCj4gPiAKPiA+IEpvaG4gQ294Cj4gPiAKPiAKCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAgbWFpbGlu ZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmlu ZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo= 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,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 DFC9DC433E0 for ; Mon, 22 Feb 2021 20:03:19 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 80D7264E02 for ; Mon, 22 Feb 2021 20:03:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 80D7264E02 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=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Date: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=v11Y6YI5azw6r23lMVN6kI7oXoxOQod1Xa4ICge6now=; b=q5CEwmKj7dLDoMtCv5b6q7CWP oqmUAiamLzoEVkNZCkAmxQBWeJmYp/3+W3u8daCs5y8tz6L+NmwnzxuXGmjoQ9SrGG8AaD+qwB8hq sDChID+5tnbOyNz05leumYCFMJhzwAvEn6SbnF3SG3x1EPOe7dz81lj8OFh0NZxe0ZCbEcMoHD5uJ Mbknh9rVNkenP3dT9lT/e48zYb9OKG2p8oW21IUxcZYZVChe+BNBKAz3+RyBUprwsdpaZrLaPBR2k SNEjGekpkdRxRr7YgENNh+xbqL1WW3oxvtrCZu9a89G+8mWlbmzg33Cq9/0cnJrJEa4L/jL5bsZw4 fSe/sjL9Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEHOp-0005aN-Vq; Mon, 22 Feb 2021 20:01:44 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lEHOm-0005Zf-8w; Mon, 22 Feb 2021 20:01:42 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: nicolas) with ESMTPSA id 0BA431F45319 Message-ID: Subject: Re: [PATCH v2 1/9] media: hevc: Modify structures to follow H265 ITU spec From: Nicolas Dufresne To: Benjamin Gaignard , John Cox Date: Mon, 22 Feb 2021 15:01:25 -0500 In-Reply-To: <4cd4a009-9552-03a5-a49d-de16c55c63da@collabora.com> References: <20210218191844.297869-1-benjamin.gaignard@collabora.com> <20210218191844.297869-2-benjamin.gaignard@collabora.com> <4cd4a009-9552-03a5-a49d-de16c55c63da@collabora.com> User-Agent: Evolution 3.38.3 (3.38.3-1.fc33) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210222_150140_541486_9E9A7A9B X-CRM114-Status: GOOD ( 26.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peng.fan@nxp.com, kernel@collabora.com, festevam@gmail.com, linux-rockchip@lists.infradead.org, wens@csie.org, linux-imx@nxp.com, dan.carpenter@oracle.com, linux-media@vger.kernel.org, devicetree@vger.kernel.org, p.zabel@pengutronix.de, s.hauer@pengutronix.de, mripard@kernel.org, robh+dt@kernel.org, mchehab@kernel.org, ezequiel@collabora.com, linux-arm-kernel@lists.infradead.org, jernej.skrabec@siol.net, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, paul.kocialkowski@bootlin.com, kernel@pengutronix.de, hverkuil-cisco@xs4all.nl, shawnguo@kernel.org 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 SGkgSm9obiwKCkxlIGx1bmRpIDIyIGbDqXZyaWVyIDIwMjEgw6AgMTc6MzkgKzAxMDAsIEJlbmph bWluIEdhaWduYXJkIGEgw6ljcml0wqA6Cj4gCj4gTGUgMjIvMDIvMjAyMSDDoCAxNzoyNCwgSm9o biBDb3ggYSDDqWNyaXTCoDoKPiA+ID4gVGhlIEguMjY1IElUVSBzcGVjaWZpY2F0aW9uIChzZWN0 aW9uIDcuNCkgZGVmaW5lIHRoZSBnZW5lcmFsCj4gPiA+IHNsaWNlIHNlZ21lbnQgaGVhZGVyIHNl bWFudGljcy4KPiA+ID4gTW9kaWZpZWQvYWRkZWQgZmllbGRzIGFyZToKPiA+ID4gLSB2aWRlb19w YXJhbWV0ZXJfc2V0X2lkOiAoNy40LjMuMSkgaWRlbnRpZmllcyB0aGUgVlBTIGZvcgo+ID4gPiBy ZWZlcmVuY2UgYnkgb3RoZXIgc3ludGF4IGVsZW1lbnRzLgo+ID4gPiAtIHNlcV9wYXJhbWV0ZXJf c2V0X2lkOiAoNy40LjMuMi4xKSBzcGVjaWZpZXMgdGhlIHZhbHVlIG9mCj4gPiA+IHRoZSB2cHNf dmlkZW9fcGFyYW1ldGVyX3NldF9pZCBvZiB0aGUgYWN0aXZlIFZQUy4KPiA+ID4gLSBjaHJvbWFf Zm9ybWF0X2lkYzogKDcuNC4zLjIuMSkgc3BlY2lmaWVzIHRoZSBjaHJvbWEgc2FtcGxpbmcKPiA+ ID4gcmVsYXRpdmUgdG8gdGhlIGx1bWEgc2FtcGxpbmcKPiA+ID4gLSBwaWNfcGFyYW1ldGVyX3Nl dF9pZDogKDcuNC4zLjMuMSkgaWRlbnRpZmllcyB0aGUgUFBTIGZvcgo+ID4gPiByZWZlcmVuY2Ug Ynkgb3RoZXIgc3ludGF4IGVsZW1lbnRzCj4gPiA+IC0gbnVtX3JlZl9pZHhfbDBfZGVmYXVsdF9h Y3RpdmVfbWludXMxOiAoNy40LjMuMy4xKSBzcGVjaWZpZXMKPiA+ID4gdGhlIGluZmVycmVkIHZh bHVlIG9mIG51bV9yZWZfaWR4X2wwX2FjdGl2ZV9taW51czEKPiA+ID4gLSBudW1fcmVmX2lkeF9s MV9kZWZhdWx0X2FjdGl2ZV9taW51czE6ICg3LjQuMy4zLjEpIHNwZWNpZmllcwo+ID4gPiB0aGUg aW5mZXJyZWQgdmFsdWUgb2YgbnVtX3JlZl9pZHhfbDFfYWN0aXZlX21pbnVzMQo+ID4gPiAtIHNs aWNlX3NlZ21lbnRfYWRkcjogKDcuNC43LjEpIHNwZWNpZmllcyB0aGUgYWRkcmVzcyBvZgo+ID4g PiB0aGUgZmlyc3QgY29kaW5nIHRyZWUgYmxvY2sgaW4gdGhlIHNsaWNlIHNlZ21lbnQKPiA+ID4g LSBudW1fZW50cnlfcG9pbnRfb2Zmc2V0czogKDcuNC43LjEpIHNwZWNpZmllcyB0aGUgbnVtYmVy IG9mCj4gPiA+IGVudHJ5X3BvaW50X29mZnNldF9taW51czFbIGkgXSBzeW50YXggZWxlbWVudHMg aW4gdGhlIHNsaWNlIGhlYWRlcgo+ID4gPiAKPiA+ID4gQWRkIEhFVkMgZGVjb2RlIHBhcmFtcyBj b250YWlucyB0aGUgaW5mb3JtYXRpb24gdXNlZCBpbiBzZWN0aW9uCj4gPiA+ICI4LjMgU2xpY2Ug ZGVjb2RpbmcgcHJvY2VzcyIgb2YgdGhlIHNwZWNpZmljYXRpb24gdG8gbGV0IHRoZSBoYXJkd2Fy ZQo+ID4gPiBwZXJmb3JtIGRlY29kaW5nIG9mIGEgc2xpY2VzLgo+ID4gPiAKPiA+ID4gQWRhcHQg Q2VkcnVzIGRyaXZlciBhY2NvcmRpbmcgdG8gdGhlc2UgY2hhbmdlcy4KPiA+ID4gCj4gPiA+IFNp Z25lZC1vZmYtYnk6IEJlbmphbWluIEdhaWduYXJkIDxiZW5qYW1pbi5nYWlnbmFyZEBjb2xsYWJv cmEuY29tPgo+ID4gPiAtLS0KPiA+ID4gdmVyc2lvbiAyOgo+ID4gPiAtIHJlbW92ZSBhbGwgY2hh bmdlIHJlbGF0ZWQgdG8gc2NhbGluZwo+ID4gPiAtIHNxdWFzaCBjb21taXRzIHRvIGEgY29oZXJl bnQgc3BsaXQKPiA+ID4gLSBiZSBtb3JlIHZlcmJvc2UgYWJvdXQgdGhlIGFkZGVkIGZpZWxkcwo+ ID4gPiAKPiA+ID4gZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy5jwqDCoMKgwqDC oMKgwqDCoMKgIHwgMjYgKysrKysrKystLS0KPiA+ID4gZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1 bnhpL2NlZHJ1cy9jZWRydXMuY8KgwqAgfMKgIDYgKysrCj4gPiA+IGRyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzLmjCoMKgIHzCoCAxICsKPiA+ID4gLi4uL3N0YWdpbmcv bWVkaWEvc3VueGkvY2VkcnVzL2NlZHJ1c19kZWMuY8KgwqAgfMKgIDIgKwo+ID4gPiAuLi4vc3Rh Z2luZy9tZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzX2gyNjUuY8KgIHzCoCA2ICsrLQo+ID4gPiBp bmNsdWRlL21lZGlhL2hldmMtY3RybHMuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwgNDUgKysrKysrKysrKysrKysrLS0tLQo+ID4gPiA2IGZpbGVzIGNoYW5nZWQsIDY5 IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMuYyBiL2RyaXZlcnMvbWVkaWEvdjRs Mi0KPiA+ID4gY29yZS92NGwyLWN0cmxzLmMKPiA+ID4gaW5kZXggMDE2Y2Y2MjA0Y2JiLi40MDYw YjViY2MzYzAgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDIt Y3RybHMuYwo+ID4gPiArKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92NGwyLWN0cmxzLmMK PiA+ID4gQEAgLTEwMjgsNiArMTAyOCw3IEBAIGNvbnN0IGNoYXIgKnY0bDJfY3RybF9nZXRfbmFt ZSh1MzIgaWQpCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9f SEVWQ19TUFM6wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1 cm4KPiA+ID4gIkhFVkMgU2VxdWVuY2UgUGFyYW1ldGVyIFNldCI7Cj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19QUFM6wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4KPiA+ID4gIkhFVkMgUGljdHVyZSBQYXJh bWV0ZXIgU2V0IjsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DSURfTVBFR19WSURF T19IRVZDX1NMSUNFX1BBUkFNUzrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybgo+ID4g PiAiSEVWQyBTbGljZSBQYXJhbWV0ZXJzIjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgY2FzZSBWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUzrCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm4KPiA+ID4gIkhFVkMgRGVjb2RlIFBhcmFtZXRlcnMiOwo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX01PREU6wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybgo+ID4gPiAiSEVWQyBEZWNvZGUgTW9kZSI7Cj4gPiA+ IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TVEFSVF9DT0RF OsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybgo+ID4gPiAiSEVWQyBTdGFydCBD b2RlIjsKPiA+ID4gCj4gPiA+IEBAIC0xNDgyLDYgKzE0ODMsOSBAQCB2b2lkIHY0bDJfY3RybF9m aWxsKHUzMiBpZCwgY29uc3QgY2hhciAqKm5hbWUsIGVudW0KPiA+ID4gdjRsMl9jdHJsX3R5cGUg KnR5cGUsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSEVW Q19TTElDRV9QQVJBTVM6Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnR5 cGUgPSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NMSUNFX1BBUkFNUzsKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgY2FzZSBWNEwy X0NJRF9NUEVHX1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUzoKPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCp0eXBlID0gVjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1T Owo+ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+IMKgwqDC oMKgwqDCoMKgwqBjYXNlIFY0TDJfQ0lEX1VOSVRfQ0VMTF9TSVpFOgo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCp0eXBlID0gVjRMMl9DVFJMX1RZUEVfQVJFQTsKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAqZmxhZ3MgfD0gVjRMMl9DVFJMX0ZMQUdf UkVBRF9PTkxZOwo+ID4gPiBAQCAtMTgzMyw2ICsxODM3LDcgQEAgc3RhdGljIGludCBzdGRfdmFs aWRhdGVfY29tcG91bmQoY29uc3Qgc3RydWN0Cj4gPiA+IHY0bDJfY3RybCAqY3RybCwgdTMyIGlk eCwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnBfaGV2 Y19zcHM7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfcHBzICpw X2hldmNfcHBzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfY3RybF9oZXZjX3Ns aWNlX3BhcmFtcyAqcF9oZXZjX3NsaWNlX3BhcmFtczsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgc3Ry dWN0IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJhbXMgKnBfaGV2Y19kZWNvZGVfcGFyYW1zOwo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHY0bDJfYXJlYSAqYXJlYTsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHZvaWQgKnAgPSBwdHIucCArIGlkeCAqIGN0cmwtPmVsZW1fc2l6ZTsKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludCBpOwo+ID4gPiBAQCAtMjEwOCwyMyArMjExMywy NyBAQCBzdGF0aWMgaW50IHN0ZF92YWxpZGF0ZV9jb21wb3VuZChjb25zdCBzdHJ1Y3QKPiA+ID4g djRsMl9jdHJsICpjdHJsLCB1MzIgaWR4LAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHplcm9fcGFkZGluZygqcF9oZXZjX3Bwcyk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+IAo+ID4gPiAtwqDCoMKgwqDCoMKgwqBjYXNlIFY0 TDJfQ1RSTF9UWVBFX0hFVkNfU0xJQ0VfUEFSQU1TOgo+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcF9oZXZjX3NsaWNlX3BhcmFtcyA9IHA7Cj4gPiA+ICvCoMKgwqDCoMKgwqDC oGNhc2UgVjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1TOgo+ID4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcF9oZXZjX2RlY29kZV9wYXJhbXMgPSBwOwo+ID4gPiAKPiA+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChwX2hldmNfc2xpY2VfcGFyYW1z LT5udW1fYWN0aXZlX2RwYl9lbnRyaWVzID4KPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChwX2hldmNfZGVjb2RlX3BhcmFtcy0+bnVtX2FjdGl2ZV9kcGJfZW50cmllcyA+ Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFY0TDJfSEVWQ19E UEJfRU5UUklFU19OVU1fTUFYKQo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gLUVJTlZBTDsKPiA+ID4gCj4gPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB6ZXJvX3BhZGRpbmcocF9oZXZjX3NsaWNlX3BhcmFtcy0+cHJl ZF93ZWlnaHRfdGFibGUpOwo+ID4gPiAtCj4gPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBmb3IgKGkgPSAwOyBpIDwgcF9oZXZjX3NsaWNlX3BhcmFtcy0KPiA+ID4gPm51bV9hY3Rp dmVfZHBiX2VudHJpZXM7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3Ig KGkgPSAwOyBpIDwgcF9oZXZjX2RlY29kZV9wYXJhbXMtCj4gPiA+ID5udW1fYWN0aXZlX2RwYl9l bnRyaWVzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGkr Kykgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBzdHJ1Y3QgdjRsMl9oZXZjX2RwYl9lbnRyeSAqZHBiX2VudHJ5ID0KPiA+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJnBf aGV2Y19zbGljZV9wYXJhbXMtPmRwYltpXTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgJnBfaGV2Y19kZWNvZGVfcGFy YW1zLT5kcGJbaV07Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB6ZXJvX3BhZGRpbmcoKmRwYl9lbnRyeSk7Cj4gPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gPiAKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gPiArCj4gPiA+ICvCoMKgwqDCoMKgwqDCoGNhc2UgVjRM Ml9DVFJMX1RZUEVfSEVWQ19TTElDRV9QQVJBTVM6Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBwX2hldmNfc2xpY2VfcGFyYW1zID0gcDsKPiA+ID4gKwo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgemVyb19wYWRkaW5nKHBfaGV2Y19zbGljZV9wYXJhbXMt PnByZWRfd2VpZ2h0X3RhYmxlKTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB6ZXJvX3BhZGRpbmcoKnBfaGV2Y19zbGljZV9wYXJhbXMpOwo+ID4gPiDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gPiAKPiA+ID4gQEAgLTI4MjEsNiArMjgzMCw5 IEBAIHN0YXRpYyBzdHJ1Y3QgdjRsMl9jdHJsICp2NGwyX2N0cmxfbmV3KHN0cnVjdAo+ID4gPiB2 NGwyX2N0cmxfaGFuZGxlciAqaGRsLAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NU UkxfVFlQRV9IRVZDX1NMSUNFX1BBUkFNUzoKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBlbGVtX3NpemUgPSBzaXplb2Yoc3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3Bh cmFtcyk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYnJlYWs7Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoGNhc2UgVjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1TOgo+ ID4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZWxlbV9zaXplID0gc2l6ZW9mKHN0 cnVjdCB2NGwyX2N0cmxfaGV2Y19kZWNvZGVfcGFyYW1zKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX0NU UkxfVFlQRV9BUkVBOgo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsZW1f c2l6ZSA9IHNpemVvZihzdHJ1Y3QgdjRsMl9hcmVhKTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBicmVhazsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzLmMKPiA+ID4gYi9kcml2ZXJzL3N0YWdpbmcvbWVkaWEv c3VueGkvY2VkcnVzL2NlZHJ1cy5jCj4gPiA+IGluZGV4IDdiZDkyOTFjOGQ1Zi4uNGNkM2NhYjFh MjU3IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvY2VkcnVz L2NlZHJ1cy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9jZWRydXMv Y2VkcnVzLmMKPiA+ID4gQEAgLTE1MSw2ICsxNTEsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBj ZWRydXNfY29udHJvbCBjZWRydXNfY29udHJvbHNbXQo+ID4gPiA9IHsKPiA+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9LAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoC5jb2RlY8KgwqDCoMKgwqDCoMKgwqDCoMKgPSBDRURSVVNfQ09ERUNfVlA4LAo+ID4g PiDCoMKgwqDCoMKgwqDCoMKgfSwKPiA+ID4gK8KgwqDCoMKgwqDCoMKgewo+ID4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLmNmZyA9IHsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuaWQgPSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hF VkNfREVDT0RFX1BBUkFNUywKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0s Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAuY29kZWPCoMKgwqDCoMKgwqDC oMKgwqDCoD0gQ0VEUlVTX0NPREVDX0gyNjUsCj4gPiA+ICvCoMKgwqDCoMKgwqDCoH0sCj4gPiA+ IH07Cj4gPiA+IAo+ID4gPiAjZGVmaW5lIENFRFJVU19DT05UUk9MU19DT1VOVMKgwqDCoEFSUkFZ X1NJWkUoY2VkcnVzX2NvbnRyb2xzKQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5n L21lZGlhL3N1bnhpL2NlZHJ1cy9jZWRydXMuaAo+ID4gPiBiL2RyaXZlcnMvc3RhZ2luZy9tZWRp YS9zdW54aS9jZWRydXMvY2VkcnVzLmgKPiA+ID4gaW5kZXggMjUxYTZhNjYwMzUxLi4yY2EzM2Fj MzhiOWEgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54aS9jZWRy dXMvY2VkcnVzLmgKPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1bnhpL2NlZHJ1 cy9jZWRydXMuaAo+ID4gPiBAQCAtNzYsNiArNzYsNyBAQCBzdHJ1Y3QgY2VkcnVzX2gyNjVfcnVu IHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKnNwczsKPiA+ID4gwqDCoMKgwqDCoMKg wqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19wcHPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgKnBwczsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwy X2N0cmxfaGV2Y19zbGljZV9wYXJhbXPCoMKgwqDCoMKgwqDCoMKgKnNsaWNlX3BhcmFtczsKPiA+ ID4gK8KgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJh bXPCoMKgwqDCoMKgwqDCoCpkZWNvZGVfcGFyYW1zOwo+ID4gPiB9Owo+ID4gPiAKPiA+ID4gc3Ry dWN0IGNlZHJ1c192cDhfcnVuIHsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9t ZWRpYS9zdW54aS9jZWRydXMvY2VkcnVzX2RlYy5jCj4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL21l ZGlhL3N1bnhpL2NlZHJ1cy9jZWRydXNfZGVjLmMKPiA+ID4gaW5kZXggYTkwOTBkYWY2MjZhLi5j ZDgyMWY0MTdhMTQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9zdW54 aS9jZWRydXMvY2VkcnVzX2RlYy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9tZWRpYS9z dW54aS9jZWRydXMvY2VkcnVzX2RlYy5jCj4gPiA+IEBAIC02OCw2ICs2OCw4IEBAIHZvaWQgY2Vk cnVzX2RldmljZV9ydW4odm9pZCAqcHJpdikKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1BQUyk7Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcnVuLmgyNjUuc2xpY2VfcGFyYW1z ID0gY2VkcnVzX2ZpbmRfY29udHJvbF9kYXRhKGN0eCwKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NM SUNFX1BBUkFNUyk7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBydW4uaDI2 NS5kZWNvZGVfcGFyYW1zID0gY2VkcnVzX2ZpbmRfY29udHJvbF9kYXRhKGN0eCwKPiA+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBWNEwyX0NJRF9NUEVH X1ZJREVPX0hFVkNfREVDT0RFX1BBUkFNUyk7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgYnJlYWs7Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgY2FzZSBWNEwyX1BJ WF9GTVRfVlA4X0ZSQU1FOgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lZGlh L3N1bnhpL2NlZHJ1cy9jZWRydXNfaDI2NS5jCj4gPiA+IGIvZHJpdmVycy9zdGFnaW5nL21lZGlh L3N1bnhpL2NlZHJ1cy9jZWRydXNfaDI2NS5jCj4gPiA+IGluZGV4IGNlNDk3ZDAxOTdkZi4uZGNl NWRiNmJlMTNhIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkv Y2VkcnVzL2NlZHJ1c19oMjY1LmMKPiA+ID4gKysrIGIvZHJpdmVycy9zdGFnaW5nL21lZGlhL3N1 bnhpL2NlZHJ1cy9jZWRydXNfaDI2NS5jCj4gPiA+IEBAIC0yNDUsNiArMjQ1LDcgQEAgc3RhdGlj IHZvaWQgY2VkcnVzX2gyNjVfc2V0dXAoc3RydWN0IGNlZHJ1c19jdHggKmN0eCwKPiA+ID4gwqDC oMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMgKnNwczsKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19wcHMgKnBwczsKPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zbGljZV9wYXJh bXMgKnNsaWNlX3BhcmFtczsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IHY0bDJf Y3RybF9oZXZjX2RlY29kZV9wYXJhbXMgKmRlY29kZV9wYXJhbXM7Cj4gPiA+IMKgwqDCoMKgwqDC oMKgwqBjb25zdCBzdHJ1Y3QgdjRsMl9oZXZjX3ByZWRfd2VpZ2h0X3RhYmxlICpwcmVkX3dlaWdo dF90YWJsZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoGRtYV9hZGRyX3Qgc3JjX2J1Zl9hZGRyOwo+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgZG1hX2FkZHJfdCBzcmNfYnVmX2VuZF9hZGRyOwo+ID4gPiBA QCAtMjU2LDYgKzI1Nyw3IEBAIHN0YXRpYyB2b2lkIGNlZHJ1c19oMjY1X3NldHVwKHN0cnVjdCBj ZWRydXNfY3R4ICpjdHgsCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzcHMgPSBydW4tPmgyNjUuc3Bz Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgcHBzID0gcnVuLT5oMjY1LnBwczsKPiA+ID4gwqDCoMKg wqDCoMKgwqDCoHNsaWNlX3BhcmFtcyA9IHJ1bi0+aDI2NS5zbGljZV9wYXJhbXM7Cj4gPiA+ICvC oMKgwqDCoMKgwqDCoGRlY29kZV9wYXJhbXMgPSBydW4tPmgyNjUuZGVjb2RlX3BhcmFtczsKPiA+ ID4gwqDCoMKgwqDCoMKgwqDCoHByZWRfd2VpZ2h0X3RhYmxlID0gJnNsaWNlX3BhcmFtcy0+cHJl ZF93ZWlnaHRfdGFibGU7Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogTVYgY29sdW1u IGJ1ZmZlciBzaXplIGFuZCBhbGxvY2F0aW9uLiAqLwo+ID4gPiBAQCAtNDg3LDcgKzQ4OSw3IEBA IHN0YXRpYyB2b2lkIGNlZHJ1c19oMjY1X3NldHVwKHN0cnVjdCBjZWRydXNfY3R4ICpjdHgsCj4g PiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgcmVnID0KPiA+ID4gVkVfREVDX0gyNjVfREVDX1NM SUNFX0hEUl9JTkZPMV9TTElDRV9UQ19PRkZTRVRfRElWMihzbGljZV9wYXJhbXMtCj4gPiA+ID5z bGljZV90Y19vZmZzZXRfZGl2MikgfAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoAo+ ID4gPiBWRV9ERUNfSDI2NV9ERUNfU0xJQ0VfSERSX0lORk8xX1NMSUNFX0JFVEFfT0ZGU0VUX0RJ VjIoc2xpY2VfcGFyYW1zLQo+ID4gPiA+c2xpY2VfYmV0YV9vZmZzZXRfZGl2MikgfAo+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IFZFX0RFQ19IMjY1X0RFQ19TTElDRV9IRFJf SU5GTzFfU0xJQ0VfUE9DX0JJR0VTVF9JTl9SUFNfU1Qoc2xpY2VfcGFyYW1zLQo+ID4gPiA+bnVt X3Jwc19wb2Nfc3RfY3Vycl9hZnRlciA9PSAwKSB8Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAKPiA+ID4gVkVfREVDX0gyNjVfREVDX1NMSUNFX0hEUl9JTkZPMV9TTElDRV9QT0NfQklH RVNUX0lOX1JQU19TVChkZWNvZGVfcGFyYW1zLQo+ID4gPiA+bnVtX3Jwc19wb2Nfc3RfY3Vycl9h ZnRlciA9PSAwKSB8Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgCj4gPiA+IFZFX0RF Q19IMjY1X0RFQ19TTElDRV9IRFJfSU5GTzFfU0xJQ0VfQ1JfUVBfT0ZGU0VUKHNsaWNlX3BhcmFt cy0KPiA+ID4gPnNsaWNlX2NyX3FwX29mZnNldCkgfAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoAo+ID4gPiBWRV9ERUNfSDI2NV9ERUNfU0xJQ0VfSERSX0lORk8xX1NMSUNFX0NCX1FQ X09GRlNFVChzbGljZV9wYXJhbXMtCj4gPiA+ID5zbGljZV9jYl9xcF9vZmZzZXQpIHwKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkVfREVDX0gyNjVfREVDX1NMSUNFX0hEUl9JTkZP MV9TTElDRV9RUF9ERUxUQShzbGljZV9wYXJhbXMtCj4gPiA+ID5zbGljZV9xcF9kZWx0YSk7Cj4g PiA+IEBAIC01MjgsNyArNTMwLDcgQEAgc3RhdGljIHZvaWQgY2VkcnVzX2gyNjVfc2V0dXAoc3Ry dWN0IGNlZHJ1c19jdHggKmN0eCwKPiA+ID4gCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqAvKiBXcml0 ZSBkZWNvZGVkIHBpY3R1cmUgYnVmZmVyIGluIHBpYyBsaXN0LiAqLwo+ID4gPiDCoMKgwqDCoMKg wqDCoMKgY2VkcnVzX2gyNjVfZnJhbWVfaW5mb193cml0ZV9kcGIoY3R4LCBzbGljZV9wYXJhbXMt PmRwYiwKPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzbGljZV9wYXJhbXMtCj4gPiA+ID5u dW1fYWN0aXZlX2RwYl9lbnRyaWVzKTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWNv ZGVfcGFyYW1zLQo+ID4gPiA+bnVtX2FjdGl2ZV9kcGJfZW50cmllcyk7Cj4gPiA+IAo+ID4gPiDC oMKgwqDCoMKgwqDCoMKgLyogT3V0cHV0IGZyYW1lLiAqLwo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvbWVkaWEvaGV2Yy1jdHJscy5oIGIvaW5jbHVkZS9tZWRpYS9oZXZjLWN0cmxz LmgKPiA+ID4gaW5kZXggYjRjYjJlZjAyZjE3Li43ZmU3MDRhMDhmNzcgMTAwNjQ0Cj4gPiA+IC0t LSBhL2luY2x1ZGUvbWVkaWEvaGV2Yy1jdHJscy5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvbWVkaWEv aGV2Yy1jdHJscy5oCj4gPiA+IEBAIC0xOSw2ICsxOSw3IEBACj4gPiA+ICNkZWZpbmUgVjRMMl9D SURfTVBFR19WSURFT19IRVZDX1NQU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoChWNEwyX0NJRF9D T0RFQ19CQVNFICsKPiA+ID4gMTAwOCkKPiA+ID4gI2RlZmluZSBWNEwyX0NJRF9NUEVHX1ZJREVP X0hFVkNfUFBTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgKFY0TDJfQ0lEX0NPREVDX0JBU0UgKwo+ ID4gPiAxMDA5KQo+ID4gPiAjZGVmaW5lIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19TTElDRV9Q QVJBTVPCoMKgwqAoVjRMMl9DSURfQ09ERUNfQkFTRSArCj4gPiA+IDEwMTApCj4gPiA+ICsjZGVm aW5lIFY0TDJfQ0lEX01QRUdfVklERU9fSEVWQ19ERUNPREVfUEFSQU1TwqAoVjRMMl9DSURfQ09E RUNfQkFTRSArCj4gPiA+IDEwMTIpCj4gPiA+ICNkZWZpbmUgVjRMMl9DSURfTVBFR19WSURFT19I RVZDX0RFQ09ERV9NT0RFwqDCoMKgwqAoVjRMMl9DSURfQ09ERUNfQkFTRSArCj4gPiA+IDEwMTUp Cj4gPiA+ICNkZWZpbmUgVjRMMl9DSURfTVBFR19WSURFT19IRVZDX1NUQVJUX0NPREXCoMKgwqDC oMKgKFY0TDJfQ0lEX0NPREVDX0JBU0UgKwo+ID4gPiAxMDE2KQo+ID4gPiAKPiA+ID4gQEAgLTI2 LDYgKzI3LDcgQEAKPiA+ID4gI2RlZmluZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NQUyAweDAxMjAK PiA+ID4gI2RlZmluZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1BQUyAweDAxMjEKPiA+ID4gI2RlZmlu ZSBWNEwyX0NUUkxfVFlQRV9IRVZDX1NMSUNFX1BBUkFNUyAweDAxMjIKPiA+ID4gKyNkZWZpbmUg VjRMMl9DVFJMX1RZUEVfSEVWQ19ERUNPREVfUEFSQU1TIDB4MDEyNAo+ID4gPiAKPiA+ID4gZW51 bSB2NGwyX21wZWdfdmlkZW9faGV2Y19kZWNvZGVfbW9kZSB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKg wqBWNEwyX01QRUdfVklERU9fSEVWQ19ERUNPREVfTU9ERV9TTElDRV9CQVNFRCwKPiA+ID4gQEAg LTU0LDYgKzU2LDkgQEAgZW51bSB2NGwyX21wZWdfdmlkZW9faGV2Y19zdGFydF9jb2RlIHsKPiA+ ID4gLyogVGhlIGNvbnRyb2xzIGFyZSBub3Qgc3RhYmxlIGF0IHRoZSBtb21lbnQgYW5kIHdpbGwg bGlrZWx5IGJlIHJld29ya2VkLgo+ID4gPiAqLwo+ID4gPiBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNf c3BzIHsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8qIElTTy9JRUMgMjMwMDgtMiwgSVRVLVQgUmVj LiBILjI2NTogU2VxdWVuY2UgcGFyYW1ldGVyIHNldCAqLwo+ID4gPiArwqDCoMKgwqDCoMKgwqBf X3U4wqDCoMKgwqB2aWRlb19wYXJhbWV0ZXJfc2V0X2lkOwo+ID4gV2hpbHN0IEkgZG9uJ3Qgb2Jq ZWN0IHRvIHRoZSBhZGRpdGlvbiBvZiB2cHMgaWQgd2h5IGRvIHdlIG5lZWQKPiA+IGl0IGlmIHRo ZSBWUFMgaXMgbmV2ZXIgcGFzc2VkPwo+IAo+IFlvdSBhcmUgcmlnaHQgSSBjb3VsZCByZW1vdmUg aXQuCj4gCj4gPiAKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgc2VxX3BhcmFtZXRl cl9zZXRfaWQ7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoGNocm9tYV9mb3JtYXRf aWRjOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191MTbCoMKgwqBwaWNfd2lkdGhfaW5fbHVtYV9z YW1wbGVzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191MTbCoMKgwqBwaWNfaGVpZ2h0X2luX2x1 bWFfc2FtcGxlczsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoGJpdF9kZXB0aF9s dW1hX21pbnVzODsKPiA+ID4gQEAgLTc0LDkgKzc5LDkgQEAgc3RydWN0IHY0bDJfY3RybF9oZXZj X3NwcyB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBsb2cyX2RpZmZfbWF4X21p bl9wY21fbHVtYV9jb2RpbmdfYmxvY2tfc2l6ZTsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fdTjC oMKgwqDCoG51bV9zaG9ydF90ZXJtX3JlZl9waWNfc2V0czsKPiA+ID4gwqDCoMKgwqDCoMKgwqDC oF9fdTjCoMKgwqDCoG51bV9sb25nX3Rlcm1fcmVmX3BpY3Nfc3BzOwo+ID4gPiAtwqDCoMKgwqDC oMKgwqBfX3U4wqDCoMKgwqBjaHJvbWFfZm9ybWF0X2lkYzsKPiA+ID4gCj4gPiA+IC3CoMKgwqDC oMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmc7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKg wqDCoG51bV9zbGljZXM7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmdb Nl07Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191NjTCoMKgwqBmbGFnczsKPiA+ID4g fTsKPiA+ID4gQEAgLTEwMCwxMCArMTA1LDE1IEBAIHN0cnVjdCB2NGwyX2N0cmxfaGV2Y19zcHMg ewo+ID4gPiAjZGVmaW5lIFY0TDJfSEVWQ19QUFNfRkxBR19QUFNfRElTQUJMRV9ERUJMT0NLSU5H X0ZJTFRFUsKgwqDCoMKgwqDCoMKgwqAoMVVMTCA8PAo+ID4gPiAxNikKPiA+ID4gI2RlZmluZSBW NEwyX0hFVkNfUFBTX0ZMQUdfTElTVFNfTU9ESUZJQ0FUSU9OX1BSRVNFTlTCoMKgwqDCoMKgwqDC oMKgwqDCoMKgKDFVTEwgPDwKPiA+ID4gMTcpCj4gPiA+ICNkZWZpbmUgVjRMMl9IRVZDX1BQU19G TEFHX1NMSUNFX1NFR01FTlRfSEVBREVSX0VYVEVOU0lPTl9QUkVTRU5UICgxVUxMIDw8Cj4gPiA+ IDE4KQo+ID4gPiArI2RlZmluZSBWNEwyX0hFVkNfUFBTX0ZMQUdfREVCTE9DS0lOR19GSUxURVJf Q09OVFJPTF9QUkVTRU5UwqDCoMKgKDFVTEwgPDwKPiA+ID4gMTkpCj4gPiA+ICsjZGVmaW5lIFY0 TDJfSEVWQ19QUFNfRkxBR19VTklGT1JNX1NQQUNJTkfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAoMVVMTCA8PAo+ID4gPiAyMCkKPiA+ID4gCj4gPiA+IHN0cnVjdCB2 NGwyX2N0cmxfaGV2Y19wcHMgewo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogSVNPL0lFQyAyMzAw OC0yLCBJVFUtVCBSZWMuIEguMjY1OiBQaWN0dXJlIHBhcmFtZXRlciBzZXQgKi8KPiA+ID4gK8Kg wqDCoMKgwqDCoMKgX191OMKgwqDCoMKgcGljX3BhcmFtZXRlcl9zZXRfaWQ7Cj4gPiA+IMKgwqDC oMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBudW1fZXh0cmFfc2xpY2VfaGVhZGVyX2JpdHM7Cj4gPiA+ ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoG51bV9yZWZfaWR4X2wwX2RlZmF1bHRfYWN0aXZl X21pbnVzMTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVtX3JlZl9pZHhfbDFf ZGVmYXVsdF9hY3RpdmVfbWludXMxOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX19zOMKgwqDCoMKg aW5pdF9xcF9taW51czI2Owo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgZGlmZl9j dV9xcF9kZWx0YV9kZXB0aDsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoF9fczjCoMKgwqDCoHBwc19j Yl9xcF9vZmZzZXQ7Cj4gPiA+IEBAIC0xMTYsNyArMTI2LDcgQEAgc3RydWN0IHY0bDJfY3RybF9o ZXZjX3BwcyB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3M4wqDCoMKgwqBwcHNfdGNfb2Zmc2V0 X2RpdjI7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBsb2cyX3BhcmFsbGVsX21l cmdlX2xldmVsX21pbnVzMjsKPiA+ID4gCj4gPiA+IC3CoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDC oHBhZGRpbmdbNF07Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmc7Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U2NMKgwqDCoGZsYWdzOwo+ID4gPiB9Owo+ID4gPiAKPiA+ ID4gQEAgLTE2NSw2ICsxNzUsMTAgQEAgc3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3BhcmFt cyB7Cj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBfX3UzMsKgwqDCoGJpdF9zaXplOwo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgX191MzLCoMKgwqBkYXRhX2JpdF9vZmZzZXQ7Cj4gPiA+IAo+ID4gPiArwqDC oMKgwqDCoMKgwqAvKiBJU08vSUVDIDIzMDA4LTIsIElUVS1UIFJlYy4gSC4yNjU6IEdlbmVyYWwg c2xpY2Ugc2VnbWVudCBoZWFkZXIKPiA+ID4gKi8KPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191MzLC oMKgwqBzbGljZV9zZWdtZW50X2FkZHI7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTMywqDCoMKg bnVtX2VudHJ5X3BvaW50X29mZnNldHM7Cj4gPiA+ICsKPiA+ID4gwqDCoMKgwqDCoMKgwqDCoC8q IElTTy9JRUMgMjMwMDgtMiwgSVRVLVQgUmVjLiBILjI2NTogTkFMIHVuaXQgaGVhZGVyICovCj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBuYWxfdW5pdF90eXBlOwo+ID4gPiDCoMKg wqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVoX3RlbXBvcmFsX2lkX3BsdXMxOwo+ID4gPiBAQCAt MTkwLDE1ICsyMDQsMTMgQEAgc3RydWN0IHY0bDJfY3RybF9oZXZjX3NsaWNlX3BhcmFtcyB7Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBwaWNfc3RydWN0Owo+ID4gPiAKPiA+ID4g wqDCoMKgwqDCoMKgwqDCoC8qIElTTy9JRUMgMjMwMDgtMiwgSVRVLVQgUmVjLiBILjI2NTogR2Vu ZXJhbCBzbGljZSBzZWdtZW50IGhlYWRlcgo+ID4gPiAqLwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBf X3U4wqDCoMKgwqBudW1fYWN0aXZlX2RwYl9lbnRyaWVzOwo+ID4gPiDCoMKgwqDCoMKgwqDCoMKg X191OMKgwqDCoMKgcmVmX2lkeF9sMFtWNEwyX0hFVkNfRFBCX0VOVFJJRVNfTlVNX01BWF07Cj4g PiA+IMKgwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqByZWZfaWR4X2wxW1Y0TDJfSEVWQ19EUEJf RU5UUklFU19OVU1fTUFYXTsKPiA+ID4gCj4gPiA+IC3CoMKgwqDCoMKgwqDCoF9fdTjCoMKgwqDC oG51bV9ycHNfcG9jX3N0X2N1cnJfYmVmb3JlOwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBfX3U4wqDC oMKgwqBudW1fcnBzX3BvY19zdF9jdXJyX2FmdGVyOwo+ID4gPiAtwqDCoMKgwqDCoMKgwqBfX3U4 wqDCoMKgwqBudW1fcnBzX3BvY19sdF9jdXJyOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBfX3UxNsKg wqDCoHNob3J0X3Rlcm1fcmVmX3BpY19zZXRfc2l6ZTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191 MTbCoMKgwqBsb25nX3Rlcm1fcmVmX3BpY19zZXRfc2l6ZTsKPiA+ID4gCj4gPiA+IC3CoMKgwqDC oMKgwqDCoF9fdTjCoMKgwqDCoHBhZGRpbmc7Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTjCoMKg wqDCoHBhZGRpbmdbNV07Cj4gPiA+IAo+ID4gPiDCoMKgwqDCoMKgwqDCoMKgLyogSVNPL0lFQyAy MzAwOC0yLCBJVFUtVCBSZWMuIEguMjY1OiBHZW5lcmFsIHNsaWNlIHNlZ21lbnQgaGVhZGVyCj4g PiA+ICovCj4gPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdjRsMl9oZXZjX2RwYl9lbnRyeSBk cGJbVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVhdOwo+ID4gPiBAQCAtMjA5LDQgKzIyMSwy MSBAQCBzdHJ1Y3QgdjRsMl9jdHJsX2hldmNfc2xpY2VfcGFyYW1zIHsKPiA+ID4gwqDCoMKgwqDC oMKgwqDCoF9fdTY0wqDCoMKgZmxhZ3M7Cj4gPiA+IH07Cj4gPiA+IAo+ID4gPiArI2RlZmluZSBW NEwyX0hFVkNfREVDT0RFX1BBUkFNX0ZMQUdfSVJBUF9QSUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKg MHgxCj4gPiA+ICsjZGVmaW5lIFY0TDJfSEVWQ19ERUNPREVfUEFSQU1fRkxBR19JRFJfUElDwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgMHgyCj4gPiA+ICsjZGVmaW5lIFY0TDJfSEVWQ19ERUNPREVf UEFSQU1fRkxBR19OT19PVVRQVVRfT0ZfUFJJT1LCoCAweDQKPiA+ID4gKwo+ID4gPiArc3RydWN0 IHY0bDJfY3RybF9oZXZjX2RlY29kZV9wYXJhbXMgewo+ID4gPiArwqDCoMKgwqDCoMKgwqBfX3Mz MsKgwqDCoHBpY19vcmRlcl9jbnRfdmFsOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKg wqBudW1fYWN0aXZlX2RwYl9lbnRyaWVzOwo+ID4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3TCoMKg djRsMl9oZXZjX2RwYl9lbnRyeSBkcGJbVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVhdOwo+ ID4gPiArwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBudW1fcnBzX3BvY19zdF9jdXJyX2JlZm9y ZTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVtX3Jwc19wb2Nfc3RfY3Vycl9h ZnRlcjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgbnVtX3Jwc19wb2NfbHRfY3Vy cjsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKgwqDCoMKgcnBzX3N0X2N1cnJfYmVmb3JlW1Y0 TDJfSEVWQ19EUEJfRU5UUklFU19OVU1fTUFYXTsKPiA+ID4gK8KgwqDCoMKgwqDCoMKgX191OMKg wqDCoMKgcnBzX3N0X2N1cnJfYWZ0ZXJbVjRMMl9IRVZDX0RQQl9FTlRSSUVTX05VTV9NQVhdOwo+ ID4gPiArwqDCoMKgwqDCoMKgwqBfX3U4wqDCoMKgwqBycHNfbHRfY3VycltWNEwyX0hFVkNfRFBC X0VOVFJJRVNfTlVNX01BWF07Cj4gPiA+ICvCoMKgwqDCoMKgwqDCoF9fdTY0wqDCoMKgZmxhZ3M7 Cj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICNlbmRpZgo+ID4gV2hpbGUgeW91IGFyZSBhZGRpbmcg c3R1ZmYgaXMgdGhlcmUgYW55IGNoYW5jZSB5b3UgY291bGQgYWxzbyBhZGQ6Cj4gPiAKPiA+ICNk ZWZpbmUgVjRMMl9IRVZDX1NMSUNFX1BBUkFNU19GTEFHX0RFUEVOREVOVF9TTElDRV9TRUdNRU5U wqDCoMKgwqDCoCgxVUxMIDw8IDkpCj4gPiAKPiA+IHRvIHRoZSBzbGljZSBmbGFncz/CoCBUaGUg cnBpIEgyNjUgZGVjb2RlciBuZWVkcyBpdCB0byBkZWFsIHdpdGgKPiA+IGNhc2VzIHdoZXJlIGRl cGVuZGFudF9zbGljZV9zZWdtZW50IGlzIHNldCBpbiB0aGUgc2xpY2UgaGVhZGVyLgo+IAo+IFJl bWFya3Mgb24gcHJldmlvdXMgdmVyc2lvbnMgc3VnZ2VzdCB0byBvbmx5IGFkZCB3aGF0IGl0IGlz IHVzZWQgYnkgZHJpdmVyCj4gKGxpa2Ugc2NhbGluZyBmZWF0dXJlKSBzbyBJIHdpbGwgd2FpdCB0 byBoYXZlIGFuIHVzYWdlIG9mIHRoaXMgZmxhZyB0bwo+IGludHJvZHVjZSBpdC4KCkFueSBjaGFu Y2Ugd2UgY2FuIGhhdmUgYSBsaW5rIHRvIHRoZSByZWxhdGVkIGtlcm5lbCBjb2RlID8gVXNlcnNw YWNlIGlzIGFscmVhZHkKZXhwZWN0ZWQgdG8gZmlsbCB0aGUgYmxhbmsgaW4gdGhlIHNsaWNlX3Bh cmFtcywgYnV0IHBlcmhhcHMgd2UgbWlzc2VkIHNvbWV0aGluZy4KCj4gCj4gQmVuamFtaW4KPiAK PiA+IAo+ID4gVGhhbmtzCj4gPiAKPiA+IEpvaG4gQ294Cj4gPiAKPiAKCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWls aW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0 cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=