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=-10.0 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 3D4A3C433EB for ; Wed, 15 Jul 2020 18:13:11 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 15DAF20672 for ; Wed, 15 Jul 2020 18:13:11 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=ndufresne-ca.20150623.gappssmtp.com header.i=@ndufresne-ca.20150623.gappssmtp.com header.b="hJN5K8k2" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726932AbgGOSNF (ORCPT ); Wed, 15 Jul 2020 14:13:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726916AbgGOSND (ORCPT ); Wed, 15 Jul 2020 14:13:03 -0400 Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F050AC08C5DB for ; Wed, 15 Jul 2020 11:13:02 -0700 (PDT) Received: by mail-qt1-x842.google.com with SMTP id k18so2437018qtm.10 for ; Wed, 15 Jul 2020 11:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=eo3K6+OIsc1ChVT5bUsZTgVhgxOFyjfOCmCYBR+eUH0=; b=hJN5K8k2bmCgm1/IfeUVagCO2sKKaEWZstZfootfBmoGFrVe8BbrkUFGU7wRrj9DfX 1YR8DSD+N6ljMnSWo9XdGCw9A8gxt/qFzXRB1SaqwOvdaP3KN/zhNFueJV4LgpG6xOt9 DCrtBlIvLINyRGA8MiRTqKWy39998JRWJA2epp5AJozIBbLwuBydnJmZYQ8hGz2N4cRY 9FzUnAoM62ndJKwb9jAsHri6g1LPjWL5n7GwI1+c4HoyUIQisWBN+TkXHV/uSkVgewC1 tUDnx8mDToRsCXW+KFEhYw3ObjsmfIG+9ATABtbB9ZneX/8L4iE5aHgfV9H1DSyMQzoW 4Yeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=eo3K6+OIsc1ChVT5bUsZTgVhgxOFyjfOCmCYBR+eUH0=; b=GHgtHzZy3OOBGgV5w469OqAHRGzF7Rf27Kb3RHlOoXqR0p0Q6qJDSwkuPJ5/M8zGDG yMJmT3pBh2Mtwk9zoD1KSLx5Q7JdHEgtzjkB9o9tCZRDqFL+8tCg+QZjun15IzWhvV4C +G5GL61MxNHsDuIBful/ggGRZGo4JR6CyGHuYi0stnyoMVpoxlLJ4l6xP6lXUMF6fMSq mgj7dpcQEXwBlcfPKp/ewosJTZb6lszev2kzG74FoTfSlXOkh8cq3iB/3UN4gautf5fJ POIVJAXvBgMG5cKd0+WtTrJZnT+j+GUHm/N8ziBiyquqBgy24r5PPqf368QEIY3QZ7k1 uXig== X-Gm-Message-State: AOAM531iAYFc6xECoSBO+IuIzlwLxc56pFAZumCa1Eoeayz6GyexHuw+ rsDb9cZYQu4JHSVhKLj7byKf2Q== X-Google-Smtp-Source: ABdhPJwCeXkitxwUD2Mh4ZepcykZg45UDG6DI9XpncKfiapHzFCtI2hZxAc+2bKuvodjL/wmtGd5GQ== X-Received: by 2002:ac8:7602:: with SMTP id t2mr1127096qtq.51.1594836781723; Wed, 15 Jul 2020 11:13:01 -0700 (PDT) Received: from skullcanyon ([192.222.193.21]) by smtp.gmail.com with ESMTPSA id x73sm3648691qkb.20.2020.07.15.11.13.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 11:13:01 -0700 (PDT) Message-ID: Subject: Re: [PATCH 1/4] media: v4l2-ctrl: Add frame-skip std encoder control From: Nicolas Dufresne To: Stanimir Varbanov , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Kyungmin Park , Kamil Debski , Jeongtae Park , Andrzej Hajda , Hans Verkuil , Maheshwar Ajja Date: Wed, 15 Jul 2020 14:12:59 -0400 In-Reply-To: <513fd919-56a2-08b4-c8a7-5d37d7743129@linaro.org> References: <20200705121128.5250-1-stanimir.varbanov@linaro.org> <20200705121128.5250-2-stanimir.varbanov@linaro.org> <513fd919-56a2-08b4-c8a7-5d37d7743129@linaro.org> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.36.3 (3.36.3-1.fc32) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Le mercredi 15 juillet 2020 à 18:42 +0300, Stanimir Varbanov a écrit : > Hi Nicolas, > > On 7/7/20 11:53 PM, Nicolas Dufresne wrote: > > Le dimanche 05 juillet 2020 à 15:11 +0300, Stanimir Varbanov a écrit : > > > Adds encoders standard v4l2 control for frame-skip. The control > > > is a copy of a custom encoder control so that other v4l2 encoder > > > drivers can use it. > > > > > > Signed-off-by: Stanimir Varbanov > > > --- > > > .../media/v4l/ext-ctrls-codec.rst | 32 +++++++++++++++++++ > > > drivers/media/v4l2-core/v4l2-ctrls.c | 10 ++++++ > > > include/uapi/linux/v4l2-controls.h | 6 ++++ > > > 3 files changed, 48 insertions(+) > > > > > > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > > > index d0d506a444b1..a8b4c0b40747 100644 > > > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > > > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-codec.rst > > > @@ -592,6 +592,38 @@ enum v4l2_mpeg_video_bitrate_mode - > > > the average video bitrate. It is ignored if the video bitrate mode > > > is set to constant bitrate. > > > > > > +``V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (enum)`` > > > + > > > +enum v4l2_mpeg_video_frame_skip_mode - > > > + Indicates in what conditions the encoder should skip frames. If > > > + encoding a frame would cause the encoded stream to be larger then a > > > + chosen data limit then the frame will be skipped. Possible values > > > + are: > > > > I have nothing against this API, in fact it's really nice to generalize > > as this is very common. Though, I think we are missing two things. This > > documentation refer to the "chosen data limit". Is there controls to > > configure these *chosen* limit ? The other issue is the vagueness of > > the documented mode, see lower... > > > > > + > > > + > > > +.. tabularcolumns:: |p{9.2cm}|p{8.3cm}| > > > + > > > +.. raw:: latex > > > + > > > + \small > > > + > > > +.. flat-table:: > > > + :header-rows: 0 > > > + :stub-columns: 0 > > > + > > > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_DISABLED`` > > > + - Frame skip mode is disabled. > > > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_LEVEL_LIMIT`` > > > + - Frame skip mode enabled and buffer limit is set by the chosen > > > + level and is defined by the standard. > > > > At least for H.264, a level is compose of 3 limits. One is the maximum > > number of macroblocks, this is is evidently not use for frame skipping > > and already constrained in V4L2 (assuming the driver does not ignore > > the level control of course). The two other limits are decoded > > macroblocks/s and encoded kbits/s. Both are measure over time, which > > means the M2M encoder needs to be timing aware. I think the time source > > should be documented. Perhaps it is mandatory to set a frame interval > > for this to work ? Or we need some timestamp to allow variable frame > > interval ? (I don't think the second is really an option without > > extending the API again, and confusingly, since I think we have used > > the timestamp for other purpose already) > > Do you want to say that the encoder input timestamp, bitrate control > (V4L2_CID_MPEG_VIDEO_BITRATE) and S_PARM is not enough to describe > FRAME_SKIP_MODE_LEVEL_LIMIT mode? I don't think we have spec to give the input timestamp a meaning that driver can interpret. In fact I think we gave it a meaning that the driver must not interpret it (aka driver opaque). So remain S_PARM to give a clue, but some stream don't have a framerate (like RTP streams, unless written in bitstream). > > > > + * - ``V4L2_MPEG_FRAME_SKIP_MODE_BUF_LIMIT`` > > > + - Frame skip mode enabled and buffer limit is set by the VBV > > > + (MPEG1/2/4) or CPB (H264) buffer size control. > > > > The notion of VBV an CPB is unlikely well known. If my memory is right, > > these are constrained in buffering: in bytes (VBV) or bits per frame > > over a window of n-frames (or the gop size for some less flexible > > encoder) (CPB). I think these should be somehow chosen by application > > (with controls), directly or indirectly, and documented here to ensure > > we get consistent implementation across drivers. > > I guess you want me to add here references to the following controls: > > V4L2_CID_MPEG_VIDEO_VBV_SIZE > V4L2_CID_MPEG_VIDEO_VBV_DELAY > V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE Perhaps it would be helpful yes. > > ? > > > > + > > > +.. raw:: latex > > > + > > > + \normalsize > > > + > > > ``V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (integer)`` > > > For every captured frame, skip this many subsequent frames (default > > > 0). > > > diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c > > > index 3f3fbcd60cc6..d088acfa6dd8 100644 > > > --- a/drivers/media/v4l2-core/v4l2-ctrls.c > > > +++ b/drivers/media/v4l2-core/v4l2-ctrls.c > > > @@ -590,6 +590,12 @@ const char * const *v4l2_ctrl_get_menu(u32 id) > > > "External", > > > NULL, > > > }; > > > + static const char * const mpeg_video_frame_skip[] = { > > > + "Disabled", > > > + "Level Limit", > > > + "VBV/CPB Limit", > > > + NULL, > > > + }; > > > > > > switch (id) { > > > case V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ: > > > @@ -651,6 +657,8 @@ const char * const *v4l2_ctrl_get_menu(u32 id) > > > return flash_strobe_source; > > > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: > > > return header_mode; > > > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: > > > + return mpeg_video_frame_skip; > > > case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE: > > > return multi_slice; > > > case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE: > > > @@ -844,6 +852,7 @@ const char *v4l2_ctrl_get_name(u32 id) > > > case V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE: return "H264 MB Level Rate Control"; > > > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: return "Sequence Header Mode"; > > > case V4L2_CID_MPEG_VIDEO_MAX_REF_PIC: return "Max Number of Reference Pics"; > > > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: return "Frame Skip Mode"; > > > case V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP: return "H263 I-Frame QP Value"; > > > case V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP: return "H263 P-Frame QP Value"; > > > case V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP: return "H263 B-Frame QP Value"; > > > @@ -1265,6 +1274,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, > > > case V4L2_CID_FLASH_LED_MODE: > > > case V4L2_CID_FLASH_STROBE_SOURCE: > > > case V4L2_CID_MPEG_VIDEO_HEADER_MODE: > > > + case V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE: > > > case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE: > > > case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE: > > > case V4L2_CID_MPEG_VIDEO_H264_LEVEL: > > > diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h > > > index 62271418c1be..4e1526175a4c 100644 > > > --- a/include/uapi/linux/v4l2-controls.h > > > +++ b/include/uapi/linux/v4l2-controls.h > > > @@ -742,6 +742,12 @@ enum v4l2_cid_mpeg_video_hevc_size_of_length_field { > > > #define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642) > > > #define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643) > > > #define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644) > > > +#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_BASE + 645) > > > +enum v4l2_mpeg_video_frame_skip_mode { > > > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0, > > > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1, > > > + V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2, > > > +}; > > > > > > /* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */ > > > #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000) 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=-10.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 C92B6C433E1 for ; Wed, 15 Jul 2020 18:14:47 +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 8EF552064B for ; Wed, 15 Jul 2020 18:14:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="PQa8dE5+"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=ndufresne-ca.20150623.gappssmtp.com header.i=@ndufresne-ca.20150623.gappssmtp.com header.b="hJN5K8k2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8EF552064B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ndufresne.ca 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=c9pnCJV8PMVxBtudxQhDyFQk1dj4GH4Y/Bz4TtAX/n4=; b=PQa8dE5+RcYlFSg8D6+Asngsr lsD9RgNDn9DS5Jj+NTOZZENEJE2+YN55bw62Q+Ve7v7Xa1fZoxGo3tHWyvajRb++v65ocOW49+giq 6ArOfzOpXK1jRzmYhxD9ZXAUWukS3UhREdiW4eGXKqEf3sa5o7QTT8qx3ZwEZ4V9Mi2V8PJQZB2ZB 0odbpt/2kqV/5wMuTHbKdLQdNyslHXFE6H8tcWhjXWD6tf+bS3wqpmsN8PbZFfn53979NoAcjW81d kF+NgFcDZQBLyYIFW27r08dUFQBDJaYcEgOS4RgKRlHlFndaj33dCZ8Ytyt61Ftg8BLN6JWlSmHOy UvrvPJlLg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvlu1-0005eu-E2; Wed, 15 Jul 2020 18:13:09 +0000 Received: from mail-qt1-x841.google.com ([2607:f8b0:4864:20::841]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvltx-0005eI-Nv for linux-arm-kernel@lists.infradead.org; Wed, 15 Jul 2020 18:13:07 +0000 Received: by mail-qt1-x841.google.com with SMTP id e12so2446914qtr.9 for ; Wed, 15 Jul 2020 11:13:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=eo3K6+OIsc1ChVT5bUsZTgVhgxOFyjfOCmCYBR+eUH0=; b=hJN5K8k2bmCgm1/IfeUVagCO2sKKaEWZstZfootfBmoGFrVe8BbrkUFGU7wRrj9DfX 1YR8DSD+N6ljMnSWo9XdGCw9A8gxt/qFzXRB1SaqwOvdaP3KN/zhNFueJV4LgpG6xOt9 DCrtBlIvLINyRGA8MiRTqKWy39998JRWJA2epp5AJozIBbLwuBydnJmZYQ8hGz2N4cRY 9FzUnAoM62ndJKwb9jAsHri6g1LPjWL5n7GwI1+c4HoyUIQisWBN+TkXHV/uSkVgewC1 tUDnx8mDToRsCXW+KFEhYw3ObjsmfIG+9ATABtbB9ZneX/8L4iE5aHgfV9H1DSyMQzoW 4Yeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=eo3K6+OIsc1ChVT5bUsZTgVhgxOFyjfOCmCYBR+eUH0=; b=XOmehlkiRjAuzXzY8DcFp4x2w6vtXBWm64y2sh6ZhsYrj3Swx9Xxxy6VPa71HWZfbd m88PIXjPuXWgeYRkHZiMMUTacKPFJUJgsl/LJAt9hWl8yRGGY0qTgAh2Do3GK26+fAxS J6xqwZSoL1R9hZlw4dapx4RVOLsmX+BsgQVu+lZ/4nttQCsq9TNRUHvUYwMPf+VBsJWP igNyDcsCmznxM8FJtZAzMf0WxPBERQ3UcIG4KXTlylaTFNUQencN8P7RqIZ6fAZJ6DRc MvFpdyyeuPQXUEW6a3eH4CKn3XrE2//adXlfcUy0CrKdo1eG3Leea4yCd192h5K7Z8YZ ukoQ== X-Gm-Message-State: AOAM53372vP7JZSil4CFQyyNjmHKXopRsuGOjMzLuafvRR7vS3622hA2 CW0ND6IzWoPD/VOLdjQ81Gtpdg== X-Google-Smtp-Source: ABdhPJwCeXkitxwUD2Mh4ZepcykZg45UDG6DI9XpncKfiapHzFCtI2hZxAc+2bKuvodjL/wmtGd5GQ== X-Received: by 2002:ac8:7602:: with SMTP id t2mr1127096qtq.51.1594836781723; Wed, 15 Jul 2020 11:13:01 -0700 (PDT) Received: from skullcanyon ([192.222.193.21]) by smtp.gmail.com with ESMTPSA id x73sm3648691qkb.20.2020.07.15.11.13.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 15 Jul 2020 11:13:01 -0700 (PDT) Message-ID: Subject: Re: [PATCH 1/4] media: v4l2-ctrl: Add frame-skip std encoder control From: Nicolas Dufresne To: Stanimir Varbanov , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-arm-kernel@lists.infradead.org Date: Wed, 15 Jul 2020 14:12:59 -0400 In-Reply-To: <513fd919-56a2-08b4-c8a7-5d37d7743129@linaro.org> References: <20200705121128.5250-1-stanimir.varbanov@linaro.org> <20200705121128.5250-2-stanimir.varbanov@linaro.org> <513fd919-56a2-08b4-c8a7-5d37d7743129@linaro.org> User-Agent: Evolution 3.36.3 (3.36.3-1.fc32) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200715_141305_889672_A27B36C3 X-CRM114-Status: GOOD ( 39.56 ) 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: Maheshwar Ajja , Andrzej Hajda , Kamil Debski , Jeongtae Park , Kyungmin Park , Hans Verkuil 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 TGUgbWVyY3JlZGkgMTUganVpbGxldCAyMDIwIMOgIDE4OjQyICswMzAwLCBTdGFuaW1pciBWYXJi YW5vdiBhIMOpY3JpdCA6Cj4gSGkgTmljb2xhcywKPiAKPiBPbiA3LzcvMjAgMTE6NTMgUE0sIE5p Y29sYXMgRHVmcmVzbmUgd3JvdGU6Cj4gPiBMZSBkaW1hbmNoZSAwNSBqdWlsbGV0IDIwMjAgw6Ag MTU6MTEgKzAzMDAsIFN0YW5pbWlyIFZhcmJhbm92IGEgw6ljcml0IDoKPiA+ID4gQWRkcyBlbmNv ZGVycyBzdGFuZGFyZCB2NGwyIGNvbnRyb2wgZm9yIGZyYW1lLXNraXAuIFRoZSBjb250cm9sCj4g PiA+IGlzIGEgY29weSBvZiBhIGN1c3RvbSBlbmNvZGVyIGNvbnRyb2wgc28gdGhhdCBvdGhlciB2 NGwyIGVuY29kZXIKPiA+ID4gZHJpdmVycyBjYW4gdXNlIGl0Lgo+ID4gPiAKPiA+ID4gU2lnbmVk LW9mZi1ieTogU3RhbmltaXIgVmFyYmFub3YgPHN0YW5pbWlyLnZhcmJhbm92QGxpbmFyby5vcmc+ Cj4gPiA+IC0tLQo+ID4gPiAgLi4uL21lZGlhL3Y0bC9leHQtY3RybHMtY29kZWMucnN0ICAgICAg ICAgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKwo+ID4gPiAgZHJpdmVycy9tZWRpYS92NGwy LWNvcmUvdjRsMi1jdHJscy5jICAgICAgICAgIHwgMTAgKysrKysrCj4gPiA+ICBpbmNsdWRlL3Vh cGkvbGludXgvdjRsMi1jb250cm9scy5oICAgICAgICAgICAgfCAgNiArKysrCj4gPiA+ICAzIGZp bGVzIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9E b2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5yc3Qg Yi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4dC1jdHJscy1jb2RlYy5y c3QKPiA+ID4gaW5kZXggZDBkNTA2YTQ0NGIxLi5hOGI0YzBiNDA3NDcgMTAwNjQ0Cj4gPiA+IC0t LSBhL0RvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvZXh0LWN0cmxzLWNvZGVj LnJzdAo+ID4gPiArKysgYi9Eb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvdjRsL2V4 dC1jdHJscy1jb2RlYy5yc3QKPiA+ID4gQEAgLTU5Miw2ICs1OTIsMzggQEAgZW51bSB2NGwyX21w ZWdfdmlkZW9fYml0cmF0ZV9tb2RlIC0KPiA+ID4gICAgICB0aGUgYXZlcmFnZSB2aWRlbyBiaXRy YXRlLiBJdCBpcyBpZ25vcmVkIGlmIHRoZSB2aWRlbyBiaXRyYXRlIG1vZGUKPiA+ID4gICAgICBp cyBzZXQgdG8gY29uc3RhbnQgYml0cmF0ZS4KPiA+ID4gIAo+ID4gPiArYGBWNEwyX0NJRF9NUEVH X1ZJREVPX0ZSQU1FX1NLSVBfTU9ERSAoZW51bSlgYAo+ID4gPiArCj4gPiA+ICtlbnVtIHY0bDJf bXBlZ192aWRlb19mcmFtZV9za2lwX21vZGUgLQo+ID4gPiArICAgIEluZGljYXRlcyBpbiB3aGF0 IGNvbmRpdGlvbnMgdGhlIGVuY29kZXIgc2hvdWxkIHNraXAgZnJhbWVzLiBJZgo+ID4gPiArICAg IGVuY29kaW5nIGEgZnJhbWUgd291bGQgY2F1c2UgdGhlIGVuY29kZWQgc3RyZWFtIHRvIGJlIGxh cmdlciB0aGVuIGEKPiA+ID4gKyAgICBjaG9zZW4gZGF0YSBsaW1pdCB0aGVuIHRoZSBmcmFtZSB3 aWxsIGJlIHNraXBwZWQuIFBvc3NpYmxlIHZhbHVlcwo+ID4gPiArICAgIGFyZToKPiA+IAo+ID4g SSBoYXZlIG5vdGhpbmcgYWdhaW5zdCB0aGlzIEFQSSwgaW4gZmFjdCBpdCdzIHJlYWxseSBuaWNl IHRvIGdlbmVyYWxpemUKPiA+IGFzIHRoaXMgaXMgdmVyeSBjb21tb24uIFRob3VnaCwgSSB0aGlu ayB3ZSBhcmUgbWlzc2luZyB0d28gdGhpbmdzLiBUaGlzCj4gPiBkb2N1bWVudGF0aW9uIHJlZmVy IHRvIHRoZSAiY2hvc2VuIGRhdGEgbGltaXQiLiBJcyB0aGVyZSBjb250cm9scyB0bwo+ID4gY29u ZmlndXJlIHRoZXNlICpjaG9zZW4qIGxpbWl0ID8gVGhlIG90aGVyIGlzc3VlIGlzIHRoZSB2YWd1 ZW5lc3Mgb2YKPiA+IHRoZSBkb2N1bWVudGVkIG1vZGUsIHNlZSBsb3dlci4uLgo+ID4gCj4gPiA+ ICsKPiA+ID4gKwo+ID4gPiArLi4gdGFidWxhcmNvbHVtbnM6OiB8cHs5LjJjbX18cHs4LjNjbX18 Cj4gPiA+ICsKPiA+ID4gKy4uIHJhdzo6IGxhdGV4Cj4gPiA+ICsKPiA+ID4gKyAgICBcc21hbGwK PiA+ID4gKwo+ID4gPiArLi4gZmxhdC10YWJsZTo6Cj4gPiA+ICsgICAgOmhlYWRlci1yb3dzOiAg MAo+ID4gPiArICAgIDpzdHViLWNvbHVtbnM6IDAKPiA+ID4gKwo+ID4gPiArICAgICogLSBgYFY0 TDJfTVBFR19GUkFNRV9TS0lQX01PREVfRElTQUJMRURgYAo+ID4gPiArICAgICAgLSBGcmFtZSBz a2lwIG1vZGUgaXMgZGlzYWJsZWQuCj4gPiA+ICsgICAgKiAtIGBgVjRMMl9NUEVHX0ZSQU1FX1NL SVBfTU9ERV9MRVZFTF9MSU1JVGBgCj4gPiA+ICsgICAgICAtIEZyYW1lIHNraXAgbW9kZSBlbmFi bGVkIGFuZCBidWZmZXIgbGltaXQgaXMgc2V0IGJ5IHRoZSBjaG9zZW4KPiA+ID4gKwlsZXZlbCBh bmQgaXMgZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQuCj4gPiAKPiA+IEF0IGxlYXN0IGZvciBILjI2 NCwgYSBsZXZlbCBpcyBjb21wb3NlIG9mIDMgbGltaXRzLiBPbmUgaXMgdGhlIG1heGltdW0KPiA+ IG51bWJlciBvZiBtYWNyb2Jsb2NrcywgdGhpcyBpcyBpcyBldmlkZW50bHkgbm90IHVzZSBmb3Ig ZnJhbWUgc2tpcHBpbmcKPiA+IGFuZCBhbHJlYWR5IGNvbnN0cmFpbmVkIGluIFY0TDIgKGFzc3Vt aW5nIHRoZSBkcml2ZXIgZG9lcyBub3QgaWdub3JlCj4gPiB0aGUgbGV2ZWwgY29udHJvbCBvZiBj b3Vyc2UpLiBUaGUgdHdvIG90aGVyIGxpbWl0cyBhcmUgZGVjb2RlZAo+ID4gbWFjcm9ibG9ja3Mv cyBhbmQgZW5jb2RlZCBrYml0cy9zLiBCb3RoIGFyZSBtZWFzdXJlIG92ZXIgdGltZSwgd2hpY2gK PiA+IG1lYW5zIHRoZSBNMk0gZW5jb2RlciBuZWVkcyB0byBiZSB0aW1pbmcgYXdhcmUuIEkgdGhp bmsgdGhlIHRpbWUgc291cmNlCj4gPiBzaG91bGQgYmUgZG9jdW1lbnRlZC4gUGVyaGFwcyBpdCBp cyBtYW5kYXRvcnkgdG8gc2V0IGEgZnJhbWUgaW50ZXJ2YWwKPiA+IGZvciB0aGlzIHRvIHdvcmsg PyBPciB3ZSBuZWVkIHNvbWUgdGltZXN0YW1wIHRvIGFsbG93IHZhcmlhYmxlIGZyYW1lCj4gPiBp bnRlcnZhbCA/IChJIGRvbid0IHRoaW5rIHRoZSBzZWNvbmQgaXMgcmVhbGx5IGFuIG9wdGlvbiB3 aXRob3V0Cj4gPiBleHRlbmRpbmcgdGhlIEFQSSBhZ2FpbiwgYW5kIGNvbmZ1c2luZ2x5LCBzaW5j ZSBJIHRoaW5rIHdlIGhhdmUgdXNlZAo+ID4gdGhlIHRpbWVzdGFtcCBmb3Igb3RoZXIgcHVycG9z ZSBhbHJlYWR5KQo+IAo+IERvIHlvdSB3YW50IHRvIHNheSB0aGF0IHRoZSBlbmNvZGVyIGlucHV0 IHRpbWVzdGFtcCwgYml0cmF0ZSBjb250cm9sCj4gKFY0TDJfQ0lEX01QRUdfVklERU9fQklUUkFU RSkgYW5kIFNfUEFSTSBpcyBub3QgZW5vdWdoIHRvIGRlc2NyaWJlCj4gRlJBTUVfU0tJUF9NT0RF X0xFVkVMX0xJTUlUIG1vZGU/CgpJIGRvbid0IHRoaW5rIHdlIGhhdmUgc3BlYyB0byBnaXZlIHRo ZSBpbnB1dCB0aW1lc3RhbXAgYSBtZWFuaW5nIHRoYXQKZHJpdmVyIGNhbiBpbnRlcnByZXQuIElu IGZhY3QgSSB0aGluayB3ZSBnYXZlIGl0IGEgbWVhbmluZyB0aGF0IHRoZQpkcml2ZXIgbXVzdCBu b3QgaW50ZXJwcmV0IGl0IChha2EgZHJpdmVyIG9wYXF1ZSkuIFNvIHJlbWFpbiBTX1BBUk0gdG8K Z2l2ZSBhIGNsdWUsIGJ1dCBzb21lIHN0cmVhbSBkb24ndCBoYXZlIGEgZnJhbWVyYXRlIChsaWtl IFJUUCBzdHJlYW1zLAp1bmxlc3Mgd3JpdHRlbiBpbiBiaXRzdHJlYW0pLgoKPiAKPiA+ID4gKyAg ICAqIC0gYGBWNEwyX01QRUdfRlJBTUVfU0tJUF9NT0RFX0JVRl9MSU1JVGBgCj4gPiA+ICsgICAg ICAtIEZyYW1lIHNraXAgbW9kZSBlbmFibGVkIGFuZCBidWZmZXIgbGltaXQgaXMgc2V0IGJ5IHRo ZSBWQlYKPiA+ID4gKwkoTVBFRzEvMi80KSBvciBDUEIgKEgyNjQpIGJ1ZmZlciBzaXplIGNvbnRy b2wuCj4gPiAKPiA+IFRoZSBub3Rpb24gb2YgVkJWIGFuIENQQiBpcyB1bmxpa2VseSB3ZWxsIGtu b3duLiBJZiBteSBtZW1vcnkgaXMgcmlnaHQsCj4gPiB0aGVzZSBhcmUgY29uc3RyYWluZWQgaW4g YnVmZmVyaW5nOiBpbiBieXRlcyAoVkJWKSBvciBiaXRzIHBlciBmcmFtZQo+ID4gb3ZlciBhIHdp bmRvdyBvZiBuLWZyYW1lcyAob3IgdGhlIGdvcCBzaXplIGZvciBzb21lIGxlc3MgZmxleGlibGUK PiA+IGVuY29kZXIpIChDUEIpLiBJIHRoaW5rIHRoZXNlIHNob3VsZCBiZSBzb21laG93IGNob3Nl biBieSBhcHBsaWNhdGlvbgo+ID4gKHdpdGggY29udHJvbHMpLCBkaXJlY3RseSBvciBpbmRpcmVj dGx5LCBhbmQgZG9jdW1lbnRlZCBoZXJlIHRvIGVuc3VyZQo+ID4gd2UgZ2V0IGNvbnNpc3RlbnQg aW1wbGVtZW50YXRpb24gYWNyb3NzIGRyaXZlcnMuCj4gCj4gSSBndWVzcyB5b3Ugd2FudCBtZSB0 byBhZGQgaGVyZSByZWZlcmVuY2VzIHRvIHRoZSBmb2xsb3dpbmcgY29udHJvbHM6Cj4gCj4gVjRM Ml9DSURfTVBFR19WSURFT19WQlZfU0laRQo+IFY0TDJfQ0lEX01QRUdfVklERU9fVkJWX0RFTEFZ Cj4gVjRMMl9DSURfTVBFR19WSURFT19IMjY0X0NQQl9TSVpFCgpQZXJoYXBzIGl0IHdvdWxkIGJl IGhlbHBmdWwgeWVzLgoKPiAKPiA/Cj4gCj4gPiA+ICsKPiA+ID4gKy4uIHJhdzo6IGxhdGV4Cj4g PiA+ICsKPiA+ID4gKyAgICBcbm9ybWFsc2l6ZQo+ID4gPiArCj4gPiA+ICBgYFY0TDJfQ0lEX01Q RUdfVklERU9fVEVNUE9SQUxfREVDSU1BVElPTiAoaW50ZWdlcilgYAo+ID4gPiAgICAgIEZvciBl dmVyeSBjYXB0dXJlZCBmcmFtZSwgc2tpcCB0aGlzIG1hbnkgc3Vic2VxdWVudCBmcmFtZXMgKGRl ZmF1bHQKPiA+ID4gICAgICAwKS4KPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRs Mi1jb3JlL3Y0bDItY3RybHMuYyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMu Ywo+ID4gPiBpbmRleCAzZjNmYmNkNjBjYzYuLmQwODhhY2ZhNmRkOCAxMDA2NDQKPiA+ID4gLS0t IGEvZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1jdHJscy5jCj4gPiA+ICsrKyBiL2RyaXZl cnMvbWVkaWEvdjRsMi1jb3JlL3Y0bDItY3RybHMuYwo+ID4gPiBAQCAtNTkwLDYgKzU5MCwxMiBA QCBjb25zdCBjaGFyICogY29uc3QgKnY0bDJfY3RybF9nZXRfbWVudSh1MzIgaWQpCj4gPiA+ICAJ CSJFeHRlcm5hbCIsCj4gPiA+ICAJCU5VTEwsCj4gPiA+ICAJfTsKPiA+ID4gKwlzdGF0aWMgY29u c3QgY2hhciAqIGNvbnN0IG1wZWdfdmlkZW9fZnJhbWVfc2tpcFtdID0gewo+ID4gPiArCQkiRGlz YWJsZWQiLAo+ID4gPiArCQkiTGV2ZWwgTGltaXQiLAo+ID4gPiArCQkiVkJWL0NQQiBMaW1pdCIs Cj4gPiA+ICsJCU5VTEwsCj4gPiA+ICsJfTsKPiA+ID4gIAo+ID4gPiAgCXN3aXRjaCAoaWQpIHsK PiA+ID4gIAljYXNlIFY0TDJfQ0lEX01QRUdfQVVESU9fU0FNUExJTkdfRlJFUToKPiA+ID4gQEAg LTY1MSw2ICs2NTcsOCBAQCBjb25zdCBjaGFyICogY29uc3QgKnY0bDJfY3RybF9nZXRfbWVudSh1 MzIgaWQpCj4gPiA+ICAJCXJldHVybiBmbGFzaF9zdHJvYmVfc291cmNlOwo+ID4gPiAgCWNhc2Ug VjRMMl9DSURfTVBFR19WSURFT19IRUFERVJfTU9ERToKPiA+ID4gIAkJcmV0dXJuIGhlYWRlcl9t b2RlOwo+ID4gPiArCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19GUkFNRV9TS0lQX01PREU6Cj4g PiA+ICsJCXJldHVybiBtcGVnX3ZpZGVvX2ZyYW1lX3NraXA7Cj4gPiA+ICAJY2FzZSBWNEwyX0NJ RF9NUEVHX1ZJREVPX01VTFRJX1NMSUNFX01PREU6Cj4gPiA+ICAJCXJldHVybiBtdWx0aV9zbGlj ZTsKPiA+ID4gIAljYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSDI2NF9FTlRST1BZX01PREU6Cj4g PiA+IEBAIC04NDQsNiArODUyLDcgQEAgY29uc3QgY2hhciAqdjRsMl9jdHJsX2dldF9uYW1lKHUz MiBpZCkKPiA+ID4gIAljYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fTUJfUkNfRU5BQkxFOgkJCXJl dHVybiAiSDI2NCBNQiBMZXZlbCBSYXRlIENvbnRyb2wiOwo+ID4gPiAgCWNhc2UgVjRMMl9DSURf TVBFR19WSURFT19IRUFERVJfTU9ERToJCQlyZXR1cm4gIlNlcXVlbmNlIEhlYWRlciBNb2RlIjsK PiA+ID4gIAljYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fTUFYX1JFRl9QSUM6CQkJcmV0dXJuICJN YXggTnVtYmVyIG9mIFJlZmVyZW5jZSBQaWNzIjsKPiA+ID4gKwljYXNlIFY0TDJfQ0lEX01QRUdf VklERU9fRlJBTUVfU0tJUF9NT0RFOgkJcmV0dXJuICJGcmFtZSBTa2lwIE1vZGUiOwo+ID4gPiAg CWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19IMjYzX0lfRlJBTUVfUVA6CQlyZXR1cm4gIkgyNjMg SS1GcmFtZSBRUCBWYWx1ZSI7Cj4gPiA+ICAJY2FzZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0gyNjNf UF9GUkFNRV9RUDoJCXJldHVybiAiSDI2MyBQLUZyYW1lIFFQIFZhbHVlIjsKPiA+ID4gIAljYXNl IFY0TDJfQ0lEX01QRUdfVklERU9fSDI2M19CX0ZSQU1FX1FQOgkJcmV0dXJuICJIMjYzIEItRnJh bWUgUVAgVmFsdWUiOwo+ID4gPiBAQCAtMTI2NSw2ICsxMjc0LDcgQEAgdm9pZCB2NGwyX2N0cmxf ZmlsbCh1MzIgaWQsIGNvbnN0IGNoYXIgKipuYW1lLCBlbnVtIHY0bDJfY3RybF90eXBlICp0eXBl LAo+ID4gPiAgCWNhc2UgVjRMMl9DSURfRkxBU0hfTEVEX01PREU6Cj4gPiA+ICAJY2FzZSBWNEwy X0NJRF9GTEFTSF9TVFJPQkVfU09VUkNFOgo+ID4gPiAgCWNhc2UgVjRMMl9DSURfTVBFR19WSURF T19IRUFERVJfTU9ERToKPiA+ID4gKwljYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fRlJBTUVfU0tJ UF9NT0RFOgo+ID4gPiAgCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19NVUxUSV9TTElDRV9NT0RF Ogo+ID4gPiAgCWNhc2UgVjRMMl9DSURfTVBFR19WSURFT19IMjY0X0VOVFJPUFlfTU9ERToKPiA+ ID4gIAljYXNlIFY0TDJfQ0lEX01QRUdfVklERU9fSDI2NF9MRVZFTDoKPiA+ID4gZGlmZiAtLWdp dCBhL2luY2x1ZGUvdWFwaS9saW51eC92NGwyLWNvbnRyb2xzLmggYi9pbmNsdWRlL3VhcGkvbGlu dXgvdjRsMi1jb250cm9scy5oCj4gPiA+IGluZGV4IDYyMjcxNDE4YzFiZS4uNGUxNTI2MTc1YTRj IDEwMDY0NAo+ID4gPiAtLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvdjRsMi1jb250cm9scy5oCj4g PiA+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC92NGwyLWNvbnRyb2xzLmgKPiA+ID4gQEAgLTc0 Miw2ICs3NDIsMTIgQEAgZW51bSB2NGwyX2NpZF9tcGVnX3ZpZGVvX2hldmNfc2l6ZV9vZl9sZW5n dGhfZmllbGQgewo+ID4gPiAgI2RlZmluZSBWNEwyX0NJRF9NUEVHX1ZJREVPX0hFVkNfSElFUl9D T0RJTkdfTDZfQlIJKFY0TDJfQ0lEX01QRUdfQkFTRSArIDY0MikKPiA+ID4gICNkZWZpbmUgVjRM Ml9DSURfTVBFR19WSURFT19SRUZfTlVNQkVSX0ZPUl9QRlJBTUVTCShWNEwyX0NJRF9NUEVHX0JB U0UgKyA2NDMpCj4gPiA+ICAjZGVmaW5lIFY0TDJfQ0lEX01QRUdfVklERU9fUFJFUEVORF9TUFNQ UFNfVE9fSURSCShWNEwyX0NJRF9NUEVHX0JBU0UgKyA2NDQpCj4gPiA+ICsjZGVmaW5lIFY0TDJf Q0lEX01QRUdfVklERU9fRlJBTUVfU0tJUF9NT0RFCQkoVjRMMl9DSURfTVBFR19CQVNFICsgNjQ1 KQo+ID4gPiArZW51bSB2NGwyX21wZWdfdmlkZW9fZnJhbWVfc2tpcF9tb2RlIHsKPiA+ID4gKwlW NEwyX01QRUdfVklERU9fRlJBTUVfU0tJUF9NT0RFX0RJU0FCTEVECT0gMCwKPiA+ID4gKwlWNEwy X01QRUdfVklERU9fRlJBTUVfU0tJUF9NT0RFX0xFVkVMX0xJTUlUCT0gMSwKPiA+ID4gKwlWNEwy X01QRUdfVklERU9fRlJBTUVfU0tJUF9NT0RFX0JVRl9MSU1JVAk9IDIsCj4gPiA+ICt9Owo+ID4g PiAgCj4gPiA+ICAvKiAgTVBFRy1jbGFzcyBjb250cm9sIElEcyBzcGVjaWZpYyB0byB0aGUgQ1gy MzQxeCBkcml2ZXIgYXMgZGVmaW5lZCBieSBWNEwyICovCj4gPiA+ICAjZGVmaW5lIFY0TDJfQ0lE X01QRUdfQ1gyMzQxWF9CQVNFCQkJCShWNEwyX0NUUkxfQ0xBU1NfTVBFRyB8IDB4MTAwMCkKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==