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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1AAAC43334 for ; Thu, 16 Jun 2022 07:30:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1359298AbiFPHao (ORCPT ); Thu, 16 Jun 2022 03:30:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1359278AbiFPHan (ORCPT ); Thu, 16 Jun 2022 03:30:43 -0400 Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50042.outbound.protection.outlook.com [40.107.5.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6D5CD4FC47; Thu, 16 Jun 2022 00:30:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K3IHn8DtcHzeU1PBhwLyfxyVE/80H8TvfHp51lh7Zlg3yK+D8jedHqRh0HfYdr6i2KEbkBIiPyh66TGkpY04Qp4cPdPdZO+jQSAgn5JqH9vFWzYux6aL/5Qt1dzPsPYeM9gudF+R7yG/+osO14nOWk6Ga9YUV45uFj4eO5EI6T4o/KzalVfvj+XG/ZEt+2lQLi5U3gDrvlbMzESeuVtLVdmFB2dfRqQBsiH7084xxBO9qu6pFtkvAco/Cj9Sdy53NZqoHPqGd6vjseoTYM5HuJr+tx18m1SADq5j8tUQ+SWWHGbiqwK86uU6XhQOlPvQHsDqjSLy2UVx5ndhSgr01Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5YD8pYbmGmAC5FIH+meWEXIyihyhzOQBuKvIzyV+FYw=; b=dThoqRQK8Ke0mBISJJfYWwSRSs3zC6oLTOYz9zE7CcExhGz+KPKABJJrZISlC75kaT4JhX3X53H9KB7vUSfNO/X2HuYb8HqnrKJJjgtLRA32RUMyUEC5iFr7m4qJMtW0OaAcmRdxy1U/rO3ITwdQjGTmoPP0tMbrvmMPLUixkt3G4X8QSmjk+dg13A5VrhHVc+bm9yz6LeVtvNx7Ve7WSuL9wmLk+W3gKWMSLOjr4KP10FYti5G8SYCY8/EzPlDYo2TBEHn79sO9cnSFvTZF71iVqUUttGEZMVc7ktJouaUe687MhkhNIM0bs/CJ5U+BlIxBCgUUzOpit+76Z9AJRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5YD8pYbmGmAC5FIH+meWEXIyihyhzOQBuKvIzyV+FYw=; b=NvDGqsIv2zJx166z5xoEwnxfMrfAt27U/dgKPxYZcpmUQ6+HrxmD2/a8iRQR6Ka85GKGOsg83Uk46IztdpU4sx1IKZbVVl8KZ/OutkupTQNbJa36xbDY1AzaTSLz5A4oGjKBrVAvFBdVZWoROleqHSQ29CNq1dx66gPwfHFi5wg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AS4PR04MB9244.eurprd04.prod.outlook.com (2603:10a6:20b:4e3::9) by DB7PR04MB5083.eurprd04.prod.outlook.com (2603:10a6:10:15::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15; Thu, 16 Jun 2022 07:30:37 +0000 Received: from AS4PR04MB9244.eurprd04.prod.outlook.com ([fe80::d5cb:2760:c9ca:4351]) by AS4PR04MB9244.eurprd04.prod.outlook.com ([fe80::d5cb:2760:c9ca:4351%5]) with mapi id 15.20.5353.014; Thu, 16 Jun 2022 07:30:37 +0000 Message-ID: Date: Thu, 16 Jun 2022 10:30:35 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [PATCH v2] media: imx-jpeg: Align upwards buffer size Content-Language: en-US To: Ming Qian , "mchehab@kernel.org" , "hverkuil-cisco@xs4all.nl" Cc: "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "linux-media@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" References: <20220530074919.14982-1-ming.qian@nxp.com> <0859ab90-4cb4-a2d0-c3af-84a372742634@oss.nxp.com> From: "mirela.rabulea@oss.nxp.com" In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-ClientProxiedBy: AM4PR0101CA0070.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::38) To AS4PR04MB9244.eurprd04.prod.outlook.com (2603:10a6:20b:4e3::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 768996bb-f5d7-493c-3ca0-08da4f6a1b71 X-MS-TrafficTypeDiagnostic: DB7PR04MB5083:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gIwSbJ6RvRj0fMUWET455ayqNMRIBMaBKcsfCTGffRrUzT164Jpc+dXs/MpVaUomOfEBRLEMCnPAkTmxXyKwS2we3QkqflPcJ2Otc7iB5vZ3qiYW3NvfSQU6qc7545up33KnBJKP7bWQQq2a1QKr6xdfiYVFyI1pia5TSdrFvmj/Fi3SlHGdtLi4LBn8AzSahJOR39OIda4wxRp0s+cWiMKdG+2jyrL+Ztrcfny0L5iQps7Mca3rgyTsUR/+JFFIxM4JLE3hgvvuGwWHPcBFk4orJi6vhevGh1SlbI/MNu7nLiD2PuoUWQBdtJCgsG6WCdDvD245HLD0Y+Ty6R+k3OZhvs/tXxnDnkdgeMWYsWCPZOF4l7vpIGQIljhUEvAQYGtPMSSRNurfx9xOstC21GR7owTJqPv5/fwxncWGJenvbf/MJFbYUuoqeLHtC5Ofs66jWTTFq6NO1NgGu7mxiGwo2KhpEK/ZIwE2Z9YT33DsqD+wtmRui7oU8SgDcx0oOuxfNfhyA2pk1naq0T78L2h++YGLV0fDfJQeSKkm11kvBt/nxByJUoL99/6dgeAtLgAcgCZ88uLSQJnu7sNmrWxPq2zvgNhBth+gYcTAph3cA5U7dnBM6mQu02f/v7RNafgkb5Qi2uXkn2alH8T5tBykmMientCc7hHh5rKMx/7/WAIWdZ87dIQoKlNC1GVJ+d1l2ZHQwRxJ5DafscszUQv3x/uDYCs5EKEOP6yHjEXE/b+0JBETM+sKAbw6aHUqaF/3L1tk7l+ByLdHFE+spz8nrI1sxwCezPvIAFet5gPjj9ev1WDADxDSwAwbjnUlbhLVK7pNdpL7ROGo8FopqHhcQjsQsea7uSYR4WzorFg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR04MB9244.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(4326008)(2906002)(31696002)(6486002)(966005)(6506007)(31686004)(110136005)(316002)(26005)(53546011)(508600001)(6512007)(52116002)(54906003)(66556008)(83380400001)(2616005)(38100700002)(186003)(38350700002)(30864003)(5660300002)(66476007)(7416002)(8676002)(8936002)(86362001)(66946007)(45980500001)(43740500002)(460985005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NG01Um1xRDJlQldSWHpUdG9jMmx1Q1NOeWFzdEphdFZRdkhmbG1tYzNjbVNP?= =?utf-8?B?RTRKUEVPaEdCS1o3NENWU05nKy9qalg3ek9tTjE0eU04OVlwVG0xOVJRTkFS?= =?utf-8?B?U1Bob3VhdHJiOWpvRnlsblJLS2hWa0pOSlltdWQ4MmFFT25YVDFreVdsYVF5?= =?utf-8?B?MWVXa25kWHJSODFzVVh6TVVtRDE0QUpXYkVVQkl2Y2lJYXR3OTZET2h5SDdN?= =?utf-8?B?ZG1mMnRNazZTWlhCVm5Cbjd6dno2dlhFZGVaNlArczVvSDhTQ3J6OUpnOWdm?= =?utf-8?B?WTBBWm1jelJuQmxHOUp4cFVSaCtiUTZKL3RCVmhKUkEyUkFqSjZhZ1I0Z3Zj?= =?utf-8?B?dnh4MEp1S2xaRllGU1BTc1hLZC93ZEw0Y1ZBSDV2dGd1NE5iMjBlUzJxU1l6?= =?utf-8?B?Rk5BMjI3d1pLdDJwRm0zbExsMWpwYkhsQVVvbzNTQUUvNlp0NXlZWXpKUU9V?= =?utf-8?B?T2RpZnlTMzByM3hoOXRuci9Ld1RGb2Y3eFlna0xmU1dHSURqV2xyNHBzUHMr?= =?utf-8?B?Zmx2QzFiYUp3eEpLUHFuNFZSN3N0Z3A3c1A5dklTVDlJSlZzd2tYdVhlNm9v?= =?utf-8?B?cnlieEI4aTN5VmVZWUZ5Ykh4S3VqQnFoTWhXTmozYWh5NDN0TVgrWHBsVDdl?= =?utf-8?B?ZGxpcFlENFBzQ2NyMzhPMG1ydGEwemVFbk40MmtMNGtrRm1Hd3Q1cXZ5QnRX?= =?utf-8?B?VkZiNUFlTFRzTkpaeGtJc2QySnQwMkx2b292RjdWWTRMZ0tVaXgzL3JZMUNn?= =?utf-8?B?RXFYTVA1NDNqUGI5VDVtS1ZKTGxhSVZWcGY1bTZoMk9oM2c5TEM3U1ZZYWhj?= =?utf-8?B?VTZDdWRKdXpta3FrazgyZGZnWXJOcUJQcjlXS2p3eHpOZmFUeUFGV0ZQd01R?= =?utf-8?B?RDV0b2wraGdwK3QySzFsYlQyNE40RUVWc21qeVZqVFBTRnVuT0xLYktVVERz?= =?utf-8?B?bU0waC9KWHU0d3RKNGw3UGswTUtjOXhwUDhQME5SNjBDM2xFQWdlT2ljdlQ1?= =?utf-8?B?dEZwQTV2cVdaVUpwZEY5eEpEeTBnbUhEYkdmSlI0ejFPZmUrbW1mR21ESXVY?= =?utf-8?B?VkZvMlpIRHk1dkJXSUUxbVUzcXFqVWVrODUzOGJQME1PdXY5MkYybXNMVVBT?= =?utf-8?B?bzZ5VUxyK3NGRlFBUmV5M215SmR0dlcwT25hY0I1NGxZbnR6UWZSUzgrVGpJ?= =?utf-8?B?WGI1cEdTTk9EZnIyQ1V0TmNMOXdQSkZTOWwyNlJpNnBOUHNaSmRaelQxWnF1?= =?utf-8?B?czBDWDRUb21GUFI4cFJGUjlJVWpXYkdlRzI5bmdaM3AxS09HZ29HVWJzYnJj?= =?utf-8?B?UGtNRlRHYjN0aHJlL0VtcDhRYU13SjZSN1NnQTRLclBqMVdvcHdCQlE3SXFM?= =?utf-8?B?WGxnbVNPcFAweW5kbExJdGRpVElZSTMydXYyek1hWTE4QkZzMjIyYVRXb21X?= =?utf-8?B?RWd4QkdrWmJVTTVRb2tVWUsyc0N1Ky9zUCtoakNHVnpYdmlRTGZvaXY4VzVU?= =?utf-8?B?M1N5blVRdkltYWNvd3p1RmJtcmpUYmFQUGpjTkg1RXZyTm9PNUJlbXpuUlVk?= =?utf-8?B?RXVuNHo1bDAweG4rUE1yYWtqb0pTNW5vZUxIMmp4K3JtaGRyTXc1TXFydmNG?= =?utf-8?B?ZWxPK2VLWW9LZkxUYStIUndZOWlkb0ttcktFUDBlVnB0YS9QanZwYlVKcGVr?= =?utf-8?B?K0gyVmZ0ZFlMMUFNT0EwRmwxQndKQnRtT1BaZnBxRXVFWTVKUXB4c1JiRzFG?= =?utf-8?B?eDFQbGdZdE14NFVPTm16eGNMVS9CejdDT3dVODA2RXJ6VU80WXd0RzgvMWJN?= =?utf-8?B?MDNGZUcrVk0vOWVWdGIrT0lCeU1HT2JuQ2dOUldWTEdkTGdPY1RtY0RJZTVD?= =?utf-8?B?Sk9GaXFEZXZzQ3pWUGYyVDBGRU5PaGRaTVcxbmM0WFpNbkpTKzhrZC9OOEFm?= =?utf-8?B?cy84UkE5dy9FajhBRFRsNTMvSU9SMStQeFNPTGVIREwwVWVmZmxvdVdlaVlS?= =?utf-8?B?NDZ0cTVMS3R2L1lZWTROUXlZYmlUelo2YXpXVGt3VXpWL1o1YkwyU05XRS9R?= =?utf-8?B?ZkREMzhkeVFxajJpa04rNVc4ellPaTZYOFdOYzJ4TVFxV0FJT2Q0VEdCMm05?= =?utf-8?B?SmdnbTNVSU84aHRJNW1sV1JKcUVWS0lseE1kSEpseWh1RFVXNGNxalVXZmdY?= =?utf-8?B?Y1UxaURzamFWN3RMM1k5YUNGL3VJVG5xZ1RSNDNhQUxiazVqckJDVjRNanRt?= =?utf-8?B?Rlphbk93K1hqKzF5cVBIb3EyTTNpbGxPQWJWQTVOdFljb1JBN0RXNW9LNHpZ?= =?utf-8?B?aExGeUNGMFI0czVpYlpYTEFKcUNaaUxMUlVISkNkTC9CbXFYWXkvVGpsRThp?= =?utf-8?Q?eyri9TYD5qASbqtM=3D?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 768996bb-f5d7-493c-3ca0-08da4f6a1b71 X-MS-Exchange-CrossTenant-AuthSource: AS4PR04MB9244.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2022 07:30:37.4692 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ss0csJlR7UnSx5tXdLqcc9YcVgNaE3sQx9ysOt2RRZaXXJ917m5bOxqWLLGXKuKCMzdx0VSAg5HWCJLdboAAxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5083 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Ming, On 13.06.2022 08:25, Ming Qian wrote: >> From: Mirela Rabulea (OSS) >> Sent: 2022年6月13日 6:56 >> To: Ming Qian ; mchehab@kernel.org; >> hverkuil-cisco@xs4all.nl >> Cc: shawnguo@kernel.org; s.hauer@pengutronix.de; kernel@pengutronix.de; >> festevam@gmail.com; dl-linux-imx ; >> linux-media@vger.kernel.org; linux-kernel@vger.kernel.org; >> devicetree@vger.kernel.org; linux-arm-kernel@lists.infradead.org >> Subject: Re: [PATCH v2] media: imx-jpeg: Align upwards buffer size >> >> Hi Ming, >> >> On 30.05.2022 10:49, Ming Qian wrote: >>> The hardware can support any image size WxH, with arbitrary W (image >>> width) and H (image height) dimensions. >>> >>> Align upwards buffer size for both encoder and decoder. >>> and leave the picture resolution unchanged. >>> >>> For decoder, the risk of memory out of bounds can be avoided. >>> For both encoder and decoder, the driver will lift the limitation of >>> resolution alignment. >>> >>> For example, the decoder can support jpeg whose resolution is 227x149 >> >> I doubt 227x149 is working. I have tried 127x127, with your patch applied, >> both on encoder and decoder, the image does not look ok. The >> 126x127 seems to work. Having an odd resolution seems strange, I see not >> even gstreamer supports it (tried videotestsrc & filesink with BGR, >> 127x128 produces a 128x128 size). >> >> We need to gain more clarity on this one. >> And when we do, if we really can support any arbitrary resolution, from both >> the jpeg core and wrapper point of view, we have stuff to clean up. >> The assumption that I started with was, as stated in the comments: >> * The alignment requirements for the resolution depend on the format, >> * multiple of 16 resolutions should work for all formats. >> * Special workarounds are made in the driver to support NV12 1080p. >> With h_align/v_align defined in mxc_formats[]. >> >> Regards, >> Mirela > > Hi Mirela, > I think you are confusing picture size and buffer size. > In this patch, driver will enlarge the buffer size to align 16x16. But let the picture size unchanged. > And if you display the decoded 227x149 picture directly on imx8q, you may meet some drm error, and the display looks abnormal, > The error message like below: > [ 36.381015] [drm] [CRTC:38:crtc-0] dpu_crtc_atomic_flush: wait for content shdld done timeout > [ 36.389630] [drm] [CRTC:38:crtc-0] dpu_crtc_atomic_flush: FrameGen requests to read empty FIFO > [ 49.469022] [drm] [CRTC:38:crtc-0] dpu_crtc_atomic_flush: wait for content shdld done timeout > > But if you save the decoded picture data in to a file, then check the data, you will find it's correct. > And if you treat the decoded buffer as a picture with resolution 240x160, and with some padding content, it's also correct. > > So in my first patch, I let the driver report the aligned resolution in g_fmt, > and implement a g_selection to report the actual resolution through the crop info. > but this solution will fail your labgrid jpeg test. > > So I choose the current solution that keep the actual picture size, and align upwards the buffer size. > > The display of 227x149 is abnormal, I think it's not the jpeg codec's limitation, but the imx8q drm's limitation. I did not try to display with gstreamer. I just tried to generate some test files. For example, this one: gst-launch-1.0 videotestsrc pattern=smpte75 num-buffers=1 ! video/x-raw,width=227,height=149,format=BGR ! filesink location=bgr_227x149.raw generates a 228x149 file, not 227x149, with the 228 column black (padding?). For visualizing, I used vooya, on host machine. I then tried the pattern generator: https://github.com/NXPmicro/nxp-patgen ./patgen.exe -pix_fmt yuv444 -p colorbar -vsize 227x149 This generates a raw yuv444 227x149, without padding. I used the unit test application to encode it. The resulting jpeg is reported by JPEGSnoop to have Image Size = 227x149, and it looks bad, every line is shifted, as if it would have 228 width. I did not check yet to see if any adjustments are needed in the unit test. I'll send you my test files. Regards, Mirela > > And in my opinion, I prefer the first solution that implementing a g_selection to report the actual picture size. > If you can accept that changing your labgrid jpeg testcase, I can prepare a v3 patch to switch to this solution. > > Ming > >> >>> the encoder can support nv12 1080P, won't change it to 1920x1072. >>> >>> Fixes: 2db16c6ed72ce ("media: imx-jpeg: Add V4L2 driver for i.MX8 JPEG >>> Encoder/Decoder") >>> Signed-off-by: Ming Qian >>> --- >>> v2 >>> - add Fixes tag >>> .../media/platform/nxp/imx-jpeg/mxc-jpeg.c | 88 ++++++++----------- >>> 1 file changed, 37 insertions(+), 51 deletions(-) >>> >>> diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c >>> b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c >>> index c0fd030d0f19..9a1c8df522ed 100644 >>> --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c >>> +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c >>> @@ -894,8 +894,8 @@ static void mxc_jpeg_config_enc_desc(struct >> vb2_buffer *out_buf, >>> jpeg->slot_data[slot].cfg_stream_size = >>> mxc_jpeg_setup_cfg_stream(cfg_stream_vaddr, >>> q_data->fmt->fourcc, >>> - q_data->w_adjusted, >>> - q_data->h_adjusted); >>> + q_data->w, >>> + q_data->h); >>> >>> /* chain the config descriptor with the encoding descriptor */ >>> cfg_desc->next_descpt_ptr = desc_handle | MXC_NXT_DESCPT_EN; @@ >>> -977,7 +977,7 @@ static bool mxc_jpeg_source_change(struct mxc_jpeg_ctx >> *ctx, >>> &q_data_cap->h_adjusted, >>> q_data_cap->h_adjusted, /* adjust up */ >>> MXC_JPEG_MAX_HEIGHT, >>> - q_data_cap->fmt->v_align, >>> + 0, >>> 0); >>> >>> /* setup bytesperline/sizeimage for capture queue */ @@ -1161,18 >>> +1161,30 @@ static int mxc_jpeg_queue_setup(struct vb2_queue *q, >>> { >>> struct mxc_jpeg_ctx *ctx = vb2_get_drv_priv(q); >>> struct mxc_jpeg_q_data *q_data = NULL; >>> + struct mxc_jpeg_q_data tmp_q; >>> int i; >>> >>> q_data = mxc_jpeg_get_q_data(ctx, q->type); >>> if (!q_data) >>> return -EINVAL; >>> >>> + tmp_q.fmt = q_data->fmt; >>> + tmp_q.w = q_data->w_adjusted; >>> + tmp_q.h = q_data->h_adjusted; >>> + for (i = 0; i < MXC_JPEG_MAX_PLANES; i++) { >>> + tmp_q.bytesperline[i] = q_data->bytesperline[i]; >>> + tmp_q.sizeimage[i] = q_data->sizeimage[i]; >>> + } >>> + mxc_jpeg_sizeimage(&tmp_q); >>> + for (i = 0; i < MXC_JPEG_MAX_PLANES; i++) >>> + tmp_q.sizeimage[i] = max(tmp_q.sizeimage[i], q_data->sizeimage[i]); >>> + >>> /* Handle CREATE_BUFS situation - *nplanes != 0 */ >>> if (*nplanes) { >>> if (*nplanes != q_data->fmt->colplanes) >>> return -EINVAL; >>> for (i = 0; i < *nplanes; i++) { >>> - if (sizes[i] < q_data->sizeimage[i]) >>> + if (sizes[i] < tmp_q.sizeimage[i]) >>> return -EINVAL; >>> } >>> return 0; >>> @@ -1181,7 +1193,7 @@ static int mxc_jpeg_queue_setup(struct >> vb2_queue *q, >>> /* Handle REQBUFS situation */ >>> *nplanes = q_data->fmt->colplanes; >>> for (i = 0; i < *nplanes; i++) >>> - sizes[i] = q_data->sizeimage[i]; >>> + sizes[i] = tmp_q.sizeimage[i]; >>> >>> return 0; >>> } >>> @@ -1381,11 +1393,6 @@ static int mxc_jpeg_parse(struct mxc_jpeg_ctx >> *ctx, struct vb2_buffer *vb) >>> } >>> q_data_out->w = header.frame.width; >>> q_data_out->h = header.frame.height; >>> - if (header.frame.width % 8 != 0 || header.frame.height % 8 != 0) { >>> - dev_err(dev, "JPEG width or height not multiple of 8: %dx%d\n", >>> - header.frame.width, header.frame.height); >>> - return -EINVAL; >>> - } >>> if (header.frame.width > MXC_JPEG_MAX_WIDTH || >>> header.frame.height > MXC_JPEG_MAX_HEIGHT) { >>> dev_err(dev, "JPEG width or height should be <= 8192: %dx%d\n", >> @@ >>> -1748,22 +1755,17 @@ static int mxc_jpeg_try_fmt(struct v4l2_format *f, >> const struct mxc_jpeg_fmt *fm >>> pix_mp->num_planes = fmt->colplanes; >>> pix_mp->pixelformat = fmt->fourcc; >>> >>> - /* >>> - * use MXC_JPEG_H_ALIGN instead of fmt->v_align, for vertical >>> - * alignment, to loosen up the alignment to multiple of 8, >>> - * otherwise NV12-1080p fails as 1080 is not a multiple of 16 >>> - */ >>> + pix_mp->width = w; >>> + pix_mp->height = h; >>> v4l_bound_align_image(&w, >>> - MXC_JPEG_MIN_WIDTH, >>> - w, /* adjust downwards*/ >>> + w, /* adjust upwards*/ >>> + MXC_JPEG_MAX_WIDTH, >>> fmt->h_align, >>> &h, >>> - MXC_JPEG_MIN_HEIGHT, >>> - h, /* adjust downwards*/ >>> - MXC_JPEG_H_ALIGN, >>> + h, /* adjust upwards*/ >>> + MXC_JPEG_MAX_HEIGHT, >>> + 0, >>> 0); >>> - pix_mp->width = w; /* negotiate the width */ >>> - pix_mp->height = h; /* negotiate the height */ >>> >>> /* get user input into the tmp_q */ >>> tmp_q.w = w; >>> @@ -1889,35 +1891,19 @@ static int mxc_jpeg_s_fmt(struct mxc_jpeg_ctx >>> *ctx, >>> >>> q_data->w_adjusted = q_data->w; >>> q_data->h_adjusted = q_data->h; >>> - if (jpeg->mode == MXC_JPEG_DECODE) { >>> - /* >>> - * align up the resolution for CAST IP, >>> - * but leave the buffer resolution unchanged >>> - */ >>> - v4l_bound_align_image(&q_data->w_adjusted, >>> - q_data->w_adjusted, /* adjust upwards */ >>> - MXC_JPEG_MAX_WIDTH, >>> - q_data->fmt->h_align, >>> - &q_data->h_adjusted, >>> - q_data->h_adjusted, /* adjust upwards */ >>> - MXC_JPEG_MAX_HEIGHT, >>> - q_data->fmt->v_align, >>> - 0); >>> - } else { >>> - /* >>> - * align down the resolution for CAST IP, >>> - * but leave the buffer resolution unchanged >>> - */ >>> - v4l_bound_align_image(&q_data->w_adjusted, >>> - MXC_JPEG_MIN_WIDTH, >>> - q_data->w_adjusted, /* adjust downwards*/ >>> - q_data->fmt->h_align, >>> - &q_data->h_adjusted, >>> - MXC_JPEG_MIN_HEIGHT, >>> - q_data->h_adjusted, /* adjust downwards*/ >>> - q_data->fmt->v_align, >>> - 0); >>> - } >>> + /* >>> + * align up the resolution for CAST IP, >>> + * but leave the buffer resolution unchanged >>> + */ >>> + v4l_bound_align_image(&q_data->w_adjusted, >>> + q_data->w_adjusted, /* adjust upwards */ >>> + MXC_JPEG_MAX_WIDTH, >>> + q_data->fmt->h_align, >>> + &q_data->h_adjusted, >>> + q_data->h_adjusted, /* adjust upwards */ >>> + MXC_JPEG_MAX_HEIGHT, >>> + q_data->fmt->v_align, >>> + 0); >>> >>> for (i = 0; i < pix_mp->num_planes; i++) { >>> q_data->bytesperline[i] = pix_mp->plane_fmt[i].bytesperline; 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 33959C43334 for ; Thu, 16 Jun 2022 07:51:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From:References:Cc:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=H4mIEq910eJ3pFlCsQWKg62n1ekaZavmPXyOJNZ3LIc=; b=niXoYp3Rn/RX3QLALpLinGar7y ORwYBKakDb8JhmTnMQwOCARjlYedkbquVlwW3veh+AGozRrhHqD9MbVE1IsiL3/1TlNJ+NlN/djHH 8csh3QIOAQUcDBw7/wjhJCMxiWGPAbswgkoyFqPzsu1gTDqx3WMqAFexGdBUuc/fVmuvE0RPSSxV7 4X1u90XrscleKG6dfGEBPesAJQkUMOqW+tfxsh8odo9TSepdUStzuXFIPgjDQyxiBGDM5beLwaBlz Y00yyvl0XFQs33lVND7FFnzg0OhgPXD6lvMcAkVtSRrFXytfiEImYCH80FtSbdo/07IHfGolNl2Ul p8eiwVeQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1o1kFp-001BEQ-OX; Thu, 16 Jun 2022 07:49:26 +0000 Received: from mail-am6eur05on20603.outbound.protection.outlook.com ([2a01:111:f400:7e1b::603] helo=EUR05-AM6-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1o1kCu-0019WJ-LL for linux-arm-kernel@lists.infradead.org; Thu, 16 Jun 2022 07:46:27 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K3IHn8DtcHzeU1PBhwLyfxyVE/80H8TvfHp51lh7Zlg3yK+D8jedHqRh0HfYdr6i2KEbkBIiPyh66TGkpY04Qp4cPdPdZO+jQSAgn5JqH9vFWzYux6aL/5Qt1dzPsPYeM9gudF+R7yG/+osO14nOWk6Ga9YUV45uFj4eO5EI6T4o/KzalVfvj+XG/ZEt+2lQLi5U3gDrvlbMzESeuVtLVdmFB2dfRqQBsiH7084xxBO9qu6pFtkvAco/Cj9Sdy53NZqoHPqGd6vjseoTYM5HuJr+tx18m1SADq5j8tUQ+SWWHGbiqwK86uU6XhQOlPvQHsDqjSLy2UVx5ndhSgr01Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=5YD8pYbmGmAC5FIH+meWEXIyihyhzOQBuKvIzyV+FYw=; b=dThoqRQK8Ke0mBISJJfYWwSRSs3zC6oLTOYz9zE7CcExhGz+KPKABJJrZISlC75kaT4JhX3X53H9KB7vUSfNO/X2HuYb8HqnrKJJjgtLRA32RUMyUEC5iFr7m4qJMtW0OaAcmRdxy1U/rO3ITwdQjGTmoPP0tMbrvmMPLUixkt3G4X8QSmjk+dg13A5VrhHVc+bm9yz6LeVtvNx7Ve7WSuL9wmLk+W3gKWMSLOjr4KP10FYti5G8SYCY8/EzPlDYo2TBEHn79sO9cnSFvTZF71iVqUUttGEZMVc7ktJouaUe687MhkhNIM0bs/CJ5U+BlIxBCgUUzOpit+76Z9AJRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5YD8pYbmGmAC5FIH+meWEXIyihyhzOQBuKvIzyV+FYw=; b=NvDGqsIv2zJx166z5xoEwnxfMrfAt27U/dgKPxYZcpmUQ6+HrxmD2/a8iRQR6Ka85GKGOsg83Uk46IztdpU4sx1IKZbVVl8KZ/OutkupTQNbJa36xbDY1AzaTSLz5A4oGjKBrVAvFBdVZWoROleqHSQ29CNq1dx66gPwfHFi5wg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=oss.nxp.com; Received: from AS4PR04MB9244.eurprd04.prod.outlook.com (2603:10a6:20b:4e3::9) by DB7PR04MB5083.eurprd04.prod.outlook.com (2603:10a6:10:15::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.15; Thu, 16 Jun 2022 07:30:37 +0000 Received: from AS4PR04MB9244.eurprd04.prod.outlook.com ([fe80::d5cb:2760:c9ca:4351]) by AS4PR04MB9244.eurprd04.prod.outlook.com ([fe80::d5cb:2760:c9ca:4351%5]) with mapi id 15.20.5353.014; Thu, 16 Jun 2022 07:30:37 +0000 Message-ID: Date: Thu, 16 Jun 2022 10:30:35 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 Subject: Re: [PATCH v2] media: imx-jpeg: Align upwards buffer size Content-Language: en-US To: Ming Qian , "mchehab@kernel.org" , "hverkuil-cisco@xs4all.nl" Cc: "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , dl-linux-imx , "linux-media@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" References: <20220530074919.14982-1-ming.qian@nxp.com> <0859ab90-4cb4-a2d0-c3af-84a372742634@oss.nxp.com> From: "mirela.rabulea@oss.nxp.com" In-Reply-To: X-ClientProxiedBy: AM4PR0101CA0070.eurprd01.prod.exchangelabs.com (2603:10a6:200:41::38) To AS4PR04MB9244.eurprd04.prod.outlook.com (2603:10a6:20b:4e3::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 768996bb-f5d7-493c-3ca0-08da4f6a1b71 X-MS-TrafficTypeDiagnostic: DB7PR04MB5083:EE_ X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: gIwSbJ6RvRj0fMUWET455ayqNMRIBMaBKcsfCTGffRrUzT164Jpc+dXs/MpVaUomOfEBRLEMCnPAkTmxXyKwS2we3QkqflPcJ2Otc7iB5vZ3qiYW3NvfSQU6qc7545up33KnBJKP7bWQQq2a1QKr6xdfiYVFyI1pia5TSdrFvmj/Fi3SlHGdtLi4LBn8AzSahJOR39OIda4wxRp0s+cWiMKdG+2jyrL+Ztrcfny0L5iQps7Mca3rgyTsUR/+JFFIxM4JLE3hgvvuGwWHPcBFk4orJi6vhevGh1SlbI/MNu7nLiD2PuoUWQBdtJCgsG6WCdDvD245HLD0Y+Ty6R+k3OZhvs/tXxnDnkdgeMWYsWCPZOF4l7vpIGQIljhUEvAQYGtPMSSRNurfx9xOstC21GR7owTJqPv5/fwxncWGJenvbf/MJFbYUuoqeLHtC5Ofs66jWTTFq6NO1NgGu7mxiGwo2KhpEK/ZIwE2Z9YT33DsqD+wtmRui7oU8SgDcx0oOuxfNfhyA2pk1naq0T78L2h++YGLV0fDfJQeSKkm11kvBt/nxByJUoL99/6dgeAtLgAcgCZ88uLSQJnu7sNmrWxPq2zvgNhBth+gYcTAph3cA5U7dnBM6mQu02f/v7RNafgkb5Qi2uXkn2alH8T5tBykmMientCc7hHh5rKMx/7/WAIWdZ87dIQoKlNC1GVJ+d1l2ZHQwRxJ5DafscszUQv3x/uDYCs5EKEOP6yHjEXE/b+0JBETM+sKAbw6aHUqaF/3L1tk7l+ByLdHFE+spz8nrI1sxwCezPvIAFet5gPjj9ev1WDADxDSwAwbjnUlbhLVK7pNdpL7ROGo8FopqHhcQjsQsea7uSYR4WzorFg= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AS4PR04MB9244.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(4326008)(2906002)(31696002)(6486002)(966005)(6506007)(31686004)(110136005)(316002)(26005)(53546011)(508600001)(6512007)(52116002)(54906003)(66556008)(83380400001)(2616005)(38100700002)(186003)(38350700002)(30864003)(5660300002)(66476007)(7416002)(8676002)(8936002)(86362001)(66946007)(45980500001)(43740500002)(460985005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?NG01Um1xRDJlQldSWHpUdG9jMmx1Q1NOeWFzdEphdFZRdkhmbG1tYzNjbVNP?= =?utf-8?B?RTRKUEVPaEdCS1o3NENWU05nKy9qalg3ek9tTjE0eU04OVlwVG0xOVJRTkFS?= =?utf-8?B?U1Bob3VhdHJiOWpvRnlsblJLS2hWa0pOSlltdWQ4MmFFT25YVDFreVdsYVF5?= =?utf-8?B?MWVXa25kWHJSODFzVVh6TVVtRDE0QUpXYkVVQkl2Y2lJYXR3OTZET2h5SDdN?= =?utf-8?B?ZG1mMnRNazZTWlhCVm5Cbjd6dno2dlhFZGVaNlArczVvSDhTQ3J6OUpnOWdm?= =?utf-8?B?WTBBWm1jelJuQmxHOUp4cFVSaCtiUTZKL3RCVmhKUkEyUkFqSjZhZ1I0Z3Zj?= =?utf-8?B?dnh4MEp1S2xaRllGU1BTc1hLZC93ZEw0Y1ZBSDV2dGd1NE5iMjBlUzJxU1l6?= =?utf-8?B?Rk5BMjI3d1pLdDJwRm0zbExsMWpwYkhsQVVvbzNTQUUvNlp0NXlZWXpKUU9V?= =?utf-8?B?T2RpZnlTMzByM3hoOXRuci9Ld1RGb2Y3eFlna0xmU1dHSURqV2xyNHBzUHMr?= =?utf-8?B?Zmx2QzFiYUp3eEpLUHFuNFZSN3N0Z3A3c1A5dklTVDlJSlZzd2tYdVhlNm9v?= =?utf-8?B?cnlieEI4aTN5VmVZWUZ5Ykh4S3VqQnFoTWhXTmozYWh5NDN0TVgrWHBsVDdl?= =?utf-8?B?ZGxpcFlENFBzQ2NyMzhPMG1ydGEwemVFbk40MmtMNGtrRm1Hd3Q1cXZ5QnRX?= =?utf-8?B?VkZiNUFlTFRzTkpaeGtJc2QySnQwMkx2b292RjdWWTRMZ0tVaXgzL3JZMUNn?= =?utf-8?B?RXFYTVA1NDNqUGI5VDVtS1ZKTGxhSVZWcGY1bTZoMk9oM2c5TEM3U1ZZYWhj?= =?utf-8?B?VTZDdWRKdXpta3FrazgyZGZnWXJOcUJQcjlXS2p3eHpOZmFUeUFGV0ZQd01R?= =?utf-8?B?RDV0b2wraGdwK3QySzFsYlQyNE40RUVWc21qeVZqVFBTRnVuT0xLYktVVERz?= =?utf-8?B?bU0waC9KWHU0d3RKNGw3UGswTUtjOXhwUDhQME5SNjBDM2xFQWdlT2ljdlQ1?= =?utf-8?B?dEZwQTV2cVdaVUpwZEY5eEpEeTBnbUhEYkdmSlI0ejFPZmUrbW1mR21ESXVY?= =?utf-8?B?VkZvMlpIRHk1dkJXSUUxbVUzcXFqVWVrODUzOGJQME1PdXY5MkYybXNMVVBT?= =?utf-8?B?bzZ5VUxyK3NGRlFBUmV5M215SmR0dlcwT25hY0I1NGxZbnR6UWZSUzgrVGpJ?= =?utf-8?B?WGI1cEdTTk9EZnIyQ1V0TmNMOXdQSkZTOWwyNlJpNnBOUHNaSmRaelQxWnF1?= =?utf-8?B?czBDWDRUb21GUFI4cFJGUjlJVWpXYkdlRzI5bmdaM3AxS09HZ29HVWJzYnJj?= =?utf-8?B?UGtNRlRHYjN0aHJlL0VtcDhRYU13SjZSN1NnQTRLclBqMVdvcHdCQlE3SXFM?= =?utf-8?B?WGxnbVNPcFAweW5kbExJdGRpVElZSTMydXYyek1hWTE4QkZzMjIyYVRXb21X?= =?utf-8?B?RWd4QkdrWmJVTTVRb2tVWUsyc0N1Ky9zUCtoakNHVnpYdmlRTGZvaXY4VzVU?= =?utf-8?B?M1N5blVRdkltYWNvd3p1RmJtcmpUYmFQUGpjTkg1RXZyTm9PNUJlbXpuUlVk?= =?utf-8?B?RXVuNHo1bDAweG4rUE1yYWtqb0pTNW5vZUxIMmp4K3JtaGRyTXc1TXFydmNG?= =?utf-8?B?ZWxPK2VLWW9LZkxUYStIUndZOWlkb0ttcktFUDBlVnB0YS9QanZwYlVKcGVr?= =?utf-8?B?K0gyVmZ0ZFlMMUFNT0EwRmwxQndKQnRtT1BaZnBxRXVFWTVKUXB4c1JiRzFG?= =?utf-8?B?eDFQbGdZdE14NFVPTm16eGNMVS9CejdDT3dVODA2RXJ6VU80WXd0RzgvMWJN?= =?utf-8?B?MDNGZUcrVk0vOWVWdGIrT0lCeU1HT2JuQ2dOUldWTEdkTGdPY1RtY0RJZTVD?= =?utf-8?B?Sk9GaXFEZXZzQ3pWUGYyVDBGRU5PaGRaTVcxbmM0WFpNbkpTKzhrZC9OOEFm?= =?utf-8?B?cy84UkE5dy9FajhBRFRsNTMvSU9SMStQeFNPTGVIREwwVWVmZmxvdVdlaVlS?= =?utf-8?B?NDZ0cTVMS3R2L1lZWTROUXlZYmlUelo2YXpXVGt3VXpWL1o1YkwyU05XRS9R?= =?utf-8?B?ZkREMzhkeVFxajJpa04rNVc4ellPaTZYOFdOYzJ4TVFxV0FJT2Q0VEdCMm05?= =?utf-8?B?SmdnbTNVSU84aHRJNW1sV1JKcUVWS0lseE1kSEpseWh1RFVXNGNxalVXZmdY?= =?utf-8?B?Y1UxaURzamFWN3RMM1k5YUNGL3VJVG5xZ1RSNDNhQUxiazVqckJDVjRNanRt?= =?utf-8?B?Rlphbk93K1hqKzF5cVBIb3EyTTNpbGxPQWJWQTVOdFljb1JBN0RXNW9LNHpZ?= =?utf-8?B?aExGeUNGMFI0czVpYlpYTEFKcUNaaUxMUlVISkNkTC9CbXFYWXkvVGpsRThp?= =?utf-8?Q?eyri9TYD5qASbqtM=3D?= X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 768996bb-f5d7-493c-3ca0-08da4f6a1b71 X-MS-Exchange-CrossTenant-AuthSource: AS4PR04MB9244.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2022 07:30:37.4692 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ss0csJlR7UnSx5tXdLqcc9YcVgNaE3sQx9ysOt2RRZaXXJ917m5bOxqWLLGXKuKCMzdx0VSAg5HWCJLdboAAxQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR04MB5083 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220616_004624_876989_04296678 X-CRM114-Status: GOOD ( 31.51 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgTWluZywKCk9uIDEzLjA2LjIwMjIgMDg6MjUsIE1pbmcgUWlhbiB3cm90ZToKPj4gRnJvbTog TWlyZWxhIFJhYnVsZWEgKE9TUykgPG1pcmVsYS5yYWJ1bGVhQG9zcy5ueHAuY29tPgo+PiBTZW50 OiAyMDIy5bm0NuaciDEz5pelIDY6NTYKPj4gVG86IE1pbmcgUWlhbiA8bWluZy5xaWFuQG54cC5j b20+OyBtY2hlaGFiQGtlcm5lbC5vcmc7Cj4+IGh2ZXJrdWlsLWNpc2NvQHhzNGFsbC5ubAo+PiBD Yzogc2hhd25ndW9Aa2VybmVsLm9yZzsgcy5oYXVlckBwZW5ndXRyb25peC5kZTsga2VybmVsQHBl bmd1dHJvbml4LmRlOwo+PiBmZXN0ZXZhbUBnbWFpbC5jb207IGRsLWxpbnV4LWlteCA8bGludXgt aW14QG54cC5jb20+Owo+PiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5l bEB2Z2VyLmtlcm5lbC5vcmc7Cj4+IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC1h cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKPj4gU3ViamVjdDogUmU6IFtQQVRDSCB2Ml0g bWVkaWE6IGlteC1qcGVnOiBBbGlnbiB1cHdhcmRzIGJ1ZmZlciBzaXplCj4+Cj4+IEhpIE1pbmcs Cj4+Cj4+IE9uIDMwLjA1LjIwMjIgMTA6NDksIE1pbmcgUWlhbiB3cm90ZToKPj4+IFRoZSBoYXJk d2FyZSBjYW4gc3VwcG9ydCBhbnkgaW1hZ2Ugc2l6ZSBXeEgsIHdpdGggYXJiaXRyYXJ5IFcgKGlt YWdlCj4+PiB3aWR0aCkgYW5kIEggKGltYWdlIGhlaWdodCkgZGltZW5zaW9ucy4KPj4+Cj4+PiBB bGlnbiB1cHdhcmRzIGJ1ZmZlciBzaXplIGZvciBib3RoIGVuY29kZXIgYW5kIGRlY29kZXIuCj4+ PiBhbmQgbGVhdmUgdGhlIHBpY3R1cmUgcmVzb2x1dGlvbiB1bmNoYW5nZWQuCj4+Pgo+Pj4gRm9y IGRlY29kZXIsIHRoZSByaXNrIG9mIG1lbW9yeSBvdXQgb2YgYm91bmRzIGNhbiBiZSBhdm9pZGVk Lgo+Pj4gRm9yIGJvdGggZW5jb2RlciBhbmQgZGVjb2RlciwgdGhlIGRyaXZlciB3aWxsIGxpZnQg dGhlIGxpbWl0YXRpb24gb2YKPj4+IHJlc29sdXRpb24gYWxpZ25tZW50Lgo+Pj4KPj4+IEZvciBl eGFtcGxlLCB0aGUgZGVjb2RlciBjYW4gc3VwcG9ydCBqcGVnIHdob3NlIHJlc29sdXRpb24gaXMg MjI3eDE0OQo+Pgo+PiBJIGRvdWJ0IDIyN3gxNDkgaXMgd29ya2luZy4gSSBoYXZlIHRyaWVkIDEy N3gxMjcsIHdpdGggeW91ciBwYXRjaCBhcHBsaWVkLAo+PiBib3RoIG9uIGVuY29kZXIgYW5kIGRl Y29kZXIsIHRoZSBpbWFnZSBkb2VzIG5vdCBsb29rIG9rLiBUaGUKPj4gMTI2eDEyNyBzZWVtcyB0 byB3b3JrLiBIYXZpbmcgYW4gb2RkIHJlc29sdXRpb24gc2VlbXMgc3RyYW5nZSwgSSBzZWUgbm90 Cj4+IGV2ZW4gZ3N0cmVhbWVyIHN1cHBvcnRzIGl0ICh0cmllZCB2aWRlb3Rlc3RzcmMgJiBmaWxl c2luayB3aXRoIEJHUiwKPj4gMTI3eDEyOCBwcm9kdWNlcyBhIDEyOHgxMjggc2l6ZSkuCj4+Cj4+ IFdlIG5lZWQgdG8gZ2FpbiBtb3JlIGNsYXJpdHkgb24gdGhpcyBvbmUuCj4+IEFuZCB3aGVuIHdl IGRvLCBpZiB3ZSByZWFsbHkgY2FuIHN1cHBvcnQgYW55IGFyYml0cmFyeSByZXNvbHV0aW9uLCBm cm9tIGJvdGgKPj4gdGhlIGpwZWcgY29yZSBhbmQgd3JhcHBlciBwb2ludCBvZiB2aWV3LCB3ZSBo YXZlIHN0dWZmIHRvIGNsZWFuIHVwLgo+PiBUaGUgYXNzdW1wdGlvbiB0aGF0IEkgc3RhcnRlZCB3 aXRoIHdhcywgYXMgc3RhdGVkIGluIHRoZSBjb21tZW50czoKPj4gICAgKiBUaGUgYWxpZ25tZW50 IHJlcXVpcmVtZW50cyBmb3IgdGhlIHJlc29sdXRpb24gZGVwZW5kIG9uIHRoZSBmb3JtYXQsCj4+ ICAgICogbXVsdGlwbGUgb2YgMTYgcmVzb2x1dGlvbnMgc2hvdWxkIHdvcmsgZm9yIGFsbCBmb3Jt YXRzLgo+PiAgICAqIFNwZWNpYWwgd29ya2Fyb3VuZHMgYXJlIG1hZGUgaW4gdGhlIGRyaXZlciB0 byBzdXBwb3J0IE5WMTIgMTA4MHAuCj4+IFdpdGggaF9hbGlnbi92X2FsaWduIGRlZmluZWQgaW4g bXhjX2Zvcm1hdHNbXS4KPj4KPj4gUmVnYXJkcywKPj4gTWlyZWxhCj4gCj4gSGkgTWlyZWxhLAo+ ICAgICAgSSB0aGluayB5b3UgYXJlIGNvbmZ1c2luZyBwaWN0dXJlIHNpemUgYW5kIGJ1ZmZlciBz aXplLgo+ICAgICAgSW4gdGhpcyBwYXRjaCwgZHJpdmVyIHdpbGwgZW5sYXJnZSB0aGUgYnVmZmVy IHNpemUgdG8gYWxpZ24gMTZ4MTYuIEJ1dCBsZXQgdGhlIHBpY3R1cmUgc2l6ZSB1bmNoYW5nZWQu Cj4gICAgICBBbmQgaWYgeW91IGRpc3BsYXkgdGhlIGRlY29kZWQgMjI3eDE0OSBwaWN0dXJlIGRp cmVjdGx5IG9uIGlteDhxLCB5b3UgbWF5IG1lZXQgc29tZSBkcm0gZXJyb3IsIGFuZCB0aGUgZGlz cGxheSBsb29rcyBhYm5vcm1hbCwKPiBUaGUgZXJyb3IgbWVzc2FnZSBsaWtlIGJlbG93Ogo+IFsg ICAzNi4zODEwMTVdIFtkcm1dIFtDUlRDOjM4OmNydGMtMF0gZHB1X2NydGNfYXRvbWljX2ZsdXNo OiB3YWl0IGZvciBjb250ZW50IHNoZGxkIGRvbmUgdGltZW91dAo+IFsgICAzNi4zODk2MzBdIFtk cm1dIFtDUlRDOjM4OmNydGMtMF0gZHB1X2NydGNfYXRvbWljX2ZsdXNoOiBGcmFtZUdlbiByZXF1 ZXN0cyB0byByZWFkIGVtcHR5IEZJRk8KPiBbICAgNDkuNDY5MDIyXSBbZHJtXSBbQ1JUQzozODpj cnRjLTBdIGRwdV9jcnRjX2F0b21pY19mbHVzaDogd2FpdCBmb3IgY29udGVudCBzaGRsZCBkb25l IHRpbWVvdXQKPiAKPiBCdXQgaWYgeW91IHNhdmUgdGhlIGRlY29kZWQgcGljdHVyZSBkYXRhIGlu IHRvIGEgZmlsZSwgdGhlbiBjaGVjayB0aGUgZGF0YSwgeW91IHdpbGwgZmluZCBpdCdzIGNvcnJl Y3QuCj4gQW5kIGlmIHlvdSB0cmVhdCB0aGUgZGVjb2RlZCBidWZmZXIgYXMgYSBwaWN0dXJlIHdp dGggcmVzb2x1dGlvbiAyNDB4MTYwLCBhbmQgd2l0aCBzb21lIHBhZGRpbmcgY29udGVudCwgaXQn cyBhbHNvIGNvcnJlY3QuCj4gCj4gU28gaW4gbXkgZmlyc3QgcGF0Y2gsIEkgbGV0IHRoZSBkcml2 ZXIgcmVwb3J0IHRoZSBhbGlnbmVkIHJlc29sdXRpb24gaW4gZ19mbXQsCj4gYW5kIGltcGxlbWVu dCBhIGdfc2VsZWN0aW9uIHRvIHJlcG9ydCB0aGUgYWN0dWFsIHJlc29sdXRpb24gdGhyb3VnaCB0 aGUgY3JvcCBpbmZvLgo+IGJ1dCB0aGlzIHNvbHV0aW9uIHdpbGwgZmFpbCB5b3VyIGxhYmdyaWQg anBlZyB0ZXN0Lgo+IAo+IFNvIEkgY2hvb3NlIHRoZSBjdXJyZW50IHNvbHV0aW9uIHRoYXQga2Vl cCB0aGUgYWN0dWFsIHBpY3R1cmUgc2l6ZSwgYW5kIGFsaWduIHVwd2FyZHMgdGhlIGJ1ZmZlciBz aXplLgo+IAo+IFRoZSBkaXNwbGF5IG9mIDIyN3gxNDkgaXMgYWJub3JtYWwsIEkgdGhpbmsgaXQn cyBub3QgdGhlIGpwZWcgY29kZWMncyBsaW1pdGF0aW9uLCBidXQgdGhlIGlteDhxIGRybSdzIGxp bWl0YXRpb24uCgpJIGRpZCBub3QgdHJ5IHRvIGRpc3BsYXkgd2l0aCBnc3RyZWFtZXIuIEkganVz dCB0cmllZCB0byBnZW5lcmF0ZSBzb21lIAp0ZXN0IGZpbGVzLiBGb3IgZXhhbXBsZSwgdGhpcyBv bmU6CmdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBwYXR0ZXJuPXNtcHRlNzUgbnVtLWJ1ZmZl cnM9MSAhIAp2aWRlby94LXJhdyx3aWR0aD0yMjcsaGVpZ2h0PTE0OSxmb3JtYXQ9QkdSICEgZmls ZXNpbmsgCmxvY2F0aW9uPWJncl8yMjd4MTQ5LnJhdwpnZW5lcmF0ZXMgYSAyMjh4MTQ5IGZpbGUs IG5vdCAyMjd4MTQ5LCB3aXRoIHRoZSAyMjggY29sdW1uIGJsYWNrIAoocGFkZGluZz8pLiBGb3Ig dmlzdWFsaXppbmcsIEkgdXNlZCB2b295YSwgb24gaG9zdCBtYWNoaW5lLgoKSSB0aGVuIHRyaWVk IHRoZSBwYXR0ZXJuIGdlbmVyYXRvcjogaHR0cHM6Ly9naXRodWIuY29tL05YUG1pY3JvL254cC1w YXRnZW4KLi9wYXRnZW4uZXhlIC1waXhfZm10IHl1djQ0NCAtcCBjb2xvcmJhciAtdnNpemUgMjI3 eDE0OQoKVGhpcyBnZW5lcmF0ZXMgYSByYXcgeXV2NDQ0IDIyN3gxNDksIHdpdGhvdXQgcGFkZGlu Zy4KSSB1c2VkIHRoZSB1bml0IHRlc3QgYXBwbGljYXRpb24gdG8gZW5jb2RlIGl0LgpUaGUgcmVz dWx0aW5nIGpwZWcgaXMgcmVwb3J0ZWQgYnkgSlBFR1Nub29wIHRvIGhhdmUgSW1hZ2UgU2l6ZSA9 IAoyMjd4MTQ5LCBhbmQgaXQgbG9va3MgYmFkLCBldmVyeSBsaW5lIGlzIHNoaWZ0ZWQsIGFzIGlm IGl0IHdvdWxkIGhhdmUgCjIyOCB3aWR0aC4KSSBkaWQgbm90IGNoZWNrIHlldCB0byBzZWUgaWYg YW55IGFkanVzdG1lbnRzIGFyZSBuZWVkZWQgaW4gdGhlIHVuaXQgdGVzdC4KCkknbGwgc2VuZCB5 b3UgbXkgdGVzdCBmaWxlcy4KClJlZ2FyZHMsCk1pcmVsYQoKPiAKPiBBbmQgaW4gbXkgb3Bpbmlv biwgSSBwcmVmZXIgdGhlIGZpcnN0IHNvbHV0aW9uIHRoYXQgaW1wbGVtZW50aW5nIGEgZ19zZWxl Y3Rpb24gdG8gcmVwb3J0IHRoZSBhY3R1YWwgcGljdHVyZSBzaXplLgo+IElmIHlvdSBjYW4gYWNj ZXB0IHRoYXQgY2hhbmdpbmcgeW91ciBsYWJncmlkIGpwZWcgdGVzdGNhc2UsIEkgY2FuIHByZXBh cmUgYSB2MyBwYXRjaCB0byBzd2l0Y2ggdG8gdGhpcyBzb2x1dGlvbi4KPiAKPiBNaW5nCj4gCj4+ Cj4+PiB0aGUgZW5jb2RlciBjYW4gc3VwcG9ydCBudjEyIDEwODBQLCB3b24ndCBjaGFuZ2UgaXQg dG8gMTkyMHgxMDcyLgo+Pj4KPj4+IEZpeGVzOiAyZGIxNmM2ZWQ3MmNlICgibWVkaWE6IGlteC1q cGVnOiBBZGQgVjRMMiBkcml2ZXIgZm9yIGkuTVg4IEpQRUcKPj4+IEVuY29kZXIvRGVjb2RlciIp Cj4+PiBTaWduZWQtb2ZmLWJ5OiBNaW5nIFFpYW4gPG1pbmcucWlhbkBueHAuY29tPgo+Pj4gLS0t Cj4+PiB2Mgo+Pj4gLSBhZGQgRml4ZXMgdGFnCj4+PiAgICAuLi4vbWVkaWEvcGxhdGZvcm0vbnhw L2lteC1qcGVnL214Yy1qcGVnLmMgICAgfCA4OCArKysrKysrKy0tLS0tLS0tLS0tCj4+PiAgICAx IGZpbGUgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCj4+Pgo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnhwL2lteC1qcGVnL214Yy1qcGVn LmMKPj4+IGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9ueHAvaW14LWpwZWcvbXhjLWpwZWcuYwo+ Pj4gaW5kZXggYzBmZDAzMGQwZjE5Li45YTFjOGRmNTIyZWQgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL254cC9pbXgtanBlZy9teGMtanBlZy5jCj4+PiArKysgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL254cC9pbXgtanBlZy9teGMtanBlZy5jCj4+PiBAQCAtODk0LDgg Kzg5NCw4IEBAIHN0YXRpYyB2b2lkIG14Y19qcGVnX2NvbmZpZ19lbmNfZGVzYyhzdHJ1Y3QKPj4g dmIyX2J1ZmZlciAqb3V0X2J1ZiwKPj4+ICAgIAlqcGVnLT5zbG90X2RhdGFbc2xvdF0uY2ZnX3N0 cmVhbV9zaXplID0KPj4+ICAgIAkJCW14Y19qcGVnX3NldHVwX2NmZ19zdHJlYW0oY2ZnX3N0cmVh bV92YWRkciwKPj4+ICAgIAkJCQkJCSAgcV9kYXRhLT5mbXQtPmZvdXJjYywKPj4+IC0JCQkJCQkg IHFfZGF0YS0+d19hZGp1c3RlZCwKPj4+IC0JCQkJCQkgIHFfZGF0YS0+aF9hZGp1c3RlZCk7Cj4+ PiArCQkJCQkJICBxX2RhdGEtPncsCj4+PiArCQkJCQkJICBxX2RhdGEtPmgpOwo+Pj4KPj4+ICAg IAkvKiBjaGFpbiB0aGUgY29uZmlnIGRlc2NyaXB0b3Igd2l0aCB0aGUgZW5jb2RpbmcgZGVzY3Jp cHRvciAqLwo+Pj4gICAgCWNmZ19kZXNjLT5uZXh0X2Rlc2NwdF9wdHIgPSBkZXNjX2hhbmRsZSB8 IE1YQ19OWFRfREVTQ1BUX0VOOyBAQAo+Pj4gLTk3Nyw3ICs5NzcsNyBAQCBzdGF0aWMgYm9vbCBt eGNfanBlZ19zb3VyY2VfY2hhbmdlKHN0cnVjdCBteGNfanBlZ19jdHgKPj4gKmN0eCwKPj4+ICAg IAkJCQkgICAgICAmcV9kYXRhX2NhcC0+aF9hZGp1c3RlZCwKPj4+ICAgIAkJCQkgICAgICBxX2Rh dGFfY2FwLT5oX2FkanVzdGVkLCAvKiBhZGp1c3QgdXAgKi8KPj4+ICAgIAkJCQkgICAgICBNWENf SlBFR19NQVhfSEVJR0hULAo+Pj4gLQkJCQkgICAgICBxX2RhdGFfY2FwLT5mbXQtPnZfYWxpZ24s Cj4+PiArCQkJCSAgICAgIDAsCj4+PiAgICAJCQkJICAgICAgMCk7Cj4+Pgo+Pj4gICAgCQkvKiBz ZXR1cCBieXRlc3BlcmxpbmUvc2l6ZWltYWdlIGZvciBjYXB0dXJlIHF1ZXVlICovIEBAIC0xMTYx LDE4Cj4+PiArMTE2MSwzMCBAQCBzdGF0aWMgaW50IG14Y19qcGVnX3F1ZXVlX3NldHVwKHN0cnVj dCB2YjJfcXVldWUgKnEsCj4+PiAgICB7Cj4+PiAgICAJc3RydWN0IG14Y19qcGVnX2N0eCAqY3R4 ID0gdmIyX2dldF9kcnZfcHJpdihxKTsKPj4+ICAgIAlzdHJ1Y3QgbXhjX2pwZWdfcV9kYXRhICpx X2RhdGEgPSBOVUxMOwo+Pj4gKwlzdHJ1Y3QgbXhjX2pwZWdfcV9kYXRhIHRtcF9xOwo+Pj4gICAg CWludCBpOwo+Pj4KPj4+ICAgIAlxX2RhdGEgPSBteGNfanBlZ19nZXRfcV9kYXRhKGN0eCwgcS0+ dHlwZSk7Cj4+PiAgICAJaWYgKCFxX2RhdGEpCj4+PiAgICAJCXJldHVybiAtRUlOVkFMOwo+Pj4K Pj4+ICsJdG1wX3EuZm10ID0gcV9kYXRhLT5mbXQ7Cj4+PiArCXRtcF9xLncgPSBxX2RhdGEtPndf YWRqdXN0ZWQ7Cj4+PiArCXRtcF9xLmggPSBxX2RhdGEtPmhfYWRqdXN0ZWQ7Cj4+PiArCWZvciAo aSA9IDA7IGkgPCBNWENfSlBFR19NQVhfUExBTkVTOyBpKyspIHsKPj4+ICsJCXRtcF9xLmJ5dGVz cGVybGluZVtpXSA9IHFfZGF0YS0+Ynl0ZXNwZXJsaW5lW2ldOwo+Pj4gKwkJdG1wX3Euc2l6ZWlt YWdlW2ldID0gcV9kYXRhLT5zaXplaW1hZ2VbaV07Cj4+PiArCX0KPj4+ICsJbXhjX2pwZWdfc2l6 ZWltYWdlKCZ0bXBfcSk7Cj4+PiArCWZvciAoaSA9IDA7IGkgPCBNWENfSlBFR19NQVhfUExBTkVT OyBpKyspCj4+PiArCQl0bXBfcS5zaXplaW1hZ2VbaV0gPSBtYXgodG1wX3Euc2l6ZWltYWdlW2ld LCBxX2RhdGEtPnNpemVpbWFnZVtpXSk7Cj4+PiArCj4+PiAgICAJLyogSGFuZGxlIENSRUFURV9C VUZTIHNpdHVhdGlvbiAtICpucGxhbmVzICE9IDAgKi8KPj4+ICAgIAlpZiAoKm5wbGFuZXMpIHsK Pj4+ICAgIAkJaWYgKCpucGxhbmVzICE9IHFfZGF0YS0+Zm10LT5jb2xwbGFuZXMpCj4+PiAgICAJ CQlyZXR1cm4gLUVJTlZBTDsKPj4+ICAgIAkJZm9yIChpID0gMDsgaSA8ICpucGxhbmVzOyBpKysp IHsKPj4+IC0JCQlpZiAoc2l6ZXNbaV0gPCBxX2RhdGEtPnNpemVpbWFnZVtpXSkKPj4+ICsJCQlp ZiAoc2l6ZXNbaV0gPCB0bXBfcS5zaXplaW1hZ2VbaV0pCj4+PiAgICAJCQkJcmV0dXJuIC1FSU5W QUw7Cj4+PiAgICAJCX0KPj4+ICAgIAkJcmV0dXJuIDA7Cj4+PiBAQCAtMTE4MSw3ICsxMTkzLDcg QEAgc3RhdGljIGludCBteGNfanBlZ19xdWV1ZV9zZXR1cChzdHJ1Y3QKPj4gdmIyX3F1ZXVlICpx LAo+Pj4gICAgCS8qIEhhbmRsZSBSRVFCVUZTIHNpdHVhdGlvbiAqLwo+Pj4gICAgCSpucGxhbmVz ID0gcV9kYXRhLT5mbXQtPmNvbHBsYW5lczsKPj4+ICAgIAlmb3IgKGkgPSAwOyBpIDwgKm5wbGFu ZXM7IGkrKykKPj4+IC0JCXNpemVzW2ldID0gcV9kYXRhLT5zaXplaW1hZ2VbaV07Cj4+PiArCQlz aXplc1tpXSA9IHRtcF9xLnNpemVpbWFnZVtpXTsKPj4+Cj4+PiAgICAJcmV0dXJuIDA7Cj4+PiAg ICB9Cj4+PiBAQCAtMTM4MSwxMSArMTM5Myw2IEBAIHN0YXRpYyBpbnQgbXhjX2pwZWdfcGFyc2Uo c3RydWN0IG14Y19qcGVnX2N0eAo+PiAqY3R4LCBzdHJ1Y3QgdmIyX2J1ZmZlciAqdmIpCj4+PiAg ICAJfQo+Pj4gICAgCXFfZGF0YV9vdXQtPncgPSBoZWFkZXIuZnJhbWUud2lkdGg7Cj4+PiAgICAJ cV9kYXRhX291dC0+aCA9IGhlYWRlci5mcmFtZS5oZWlnaHQ7Cj4+PiAtCWlmIChoZWFkZXIuZnJh bWUud2lkdGggJSA4ICE9IDAgfHwgaGVhZGVyLmZyYW1lLmhlaWdodCAlIDggIT0gMCkgewo+Pj4g LQkJZGV2X2VycihkZXYsICJKUEVHIHdpZHRoIG9yIGhlaWdodCBub3QgbXVsdGlwbGUgb2YgODog JWR4JWRcbiIsCj4+PiAtCQkJaGVhZGVyLmZyYW1lLndpZHRoLCBoZWFkZXIuZnJhbWUuaGVpZ2h0 KTsKPj4+IC0JCXJldHVybiAtRUlOVkFMOwo+Pj4gLQl9Cj4+PiAgICAJaWYgKGhlYWRlci5mcmFt ZS53aWR0aCA+IE1YQ19KUEVHX01BWF9XSURUSCB8fAo+Pj4gICAgCSAgICBoZWFkZXIuZnJhbWUu aGVpZ2h0ID4gTVhDX0pQRUdfTUFYX0hFSUdIVCkgewo+Pj4gICAgCQlkZXZfZXJyKGRldiwgIkpQ RUcgd2lkdGggb3IgaGVpZ2h0IHNob3VsZCBiZSA8PSA4MTkyOiAlZHglZFxuIiwKPj4gQEAKPj4+ IC0xNzQ4LDIyICsxNzU1LDE3IEBAIHN0YXRpYyBpbnQgbXhjX2pwZWdfdHJ5X2ZtdChzdHJ1Y3Qg djRsMl9mb3JtYXQgKmYsCj4+IGNvbnN0IHN0cnVjdCBteGNfanBlZ19mbXQgKmZtCj4+PiAgICAJ cGl4X21wLT5udW1fcGxhbmVzID0gZm10LT5jb2xwbGFuZXM7Cj4+PiAgICAJcGl4X21wLT5waXhl bGZvcm1hdCA9IGZtdC0+Zm91cmNjOwo+Pj4KPj4+IC0JLyoKPj4+IC0JICogdXNlIE1YQ19KUEVH X0hfQUxJR04gaW5zdGVhZCBvZiBmbXQtPnZfYWxpZ24sIGZvciB2ZXJ0aWNhbAo+Pj4gLQkgKiBh bGlnbm1lbnQsIHRvIGxvb3NlbiB1cCB0aGUgYWxpZ25tZW50IHRvIG11bHRpcGxlIG9mIDgsCj4+ PiAtCSAqIG90aGVyd2lzZSBOVjEyLTEwODBwIGZhaWxzIGFzIDEwODAgaXMgbm90IGEgbXVsdGlw bGUgb2YgMTYKPj4+IC0JICovCj4+PiArCXBpeF9tcC0+d2lkdGggPSB3Owo+Pj4gKwlwaXhfbXAt PmhlaWdodCA9IGg7Cj4+PiAgICAJdjRsX2JvdW5kX2FsaWduX2ltYWdlKCZ3LAo+Pj4gLQkJCSAg ICAgIE1YQ19KUEVHX01JTl9XSURUSCwKPj4+IC0JCQkgICAgICB3LCAvKiBhZGp1c3QgZG93bndh cmRzKi8KPj4+ICsJCQkgICAgICB3LCAvKiBhZGp1c3QgdXB3YXJkcyovCj4+PiArCQkJICAgICAg TVhDX0pQRUdfTUFYX1dJRFRILAo+Pj4gICAgCQkJICAgICAgZm10LT5oX2FsaWduLAo+Pj4gICAg CQkJICAgICAgJmgsCj4+PiAtCQkJICAgICAgTVhDX0pQRUdfTUlOX0hFSUdIVCwKPj4+IC0JCQkg ICAgICBoLCAvKiBhZGp1c3QgZG93bndhcmRzKi8KPj4+IC0JCQkgICAgICBNWENfSlBFR19IX0FM SUdOLAo+Pj4gKwkJCSAgICAgIGgsIC8qIGFkanVzdCB1cHdhcmRzKi8KPj4+ICsJCQkgICAgICBN WENfSlBFR19NQVhfSEVJR0hULAo+Pj4gKwkJCSAgICAgIDAsCj4+PiAgICAJCQkgICAgICAwKTsK Pj4+IC0JcGl4X21wLT53aWR0aCA9IHc7IC8qIG5lZ290aWF0ZSB0aGUgd2lkdGggKi8KPj4+IC0J cGl4X21wLT5oZWlnaHQgPSBoOyAvKiBuZWdvdGlhdGUgdGhlIGhlaWdodCAqLwo+Pj4KPj4+ICAg IAkvKiBnZXQgdXNlciBpbnB1dCBpbnRvIHRoZSB0bXBfcSAqLwo+Pj4gICAgCXRtcF9xLncgPSB3 Owo+Pj4gQEAgLTE4ODksMzUgKzE4OTEsMTkgQEAgc3RhdGljIGludCBteGNfanBlZ19zX2ZtdChz dHJ1Y3QgbXhjX2pwZWdfY3R4Cj4+PiAqY3R4LAo+Pj4KPj4+ICAgIAlxX2RhdGEtPndfYWRqdXN0 ZWQgPSBxX2RhdGEtPnc7Cj4+PiAgICAJcV9kYXRhLT5oX2FkanVzdGVkID0gcV9kYXRhLT5oOwo+ Pj4gLQlpZiAoanBlZy0+bW9kZSA9PSBNWENfSlBFR19ERUNPREUpIHsKPj4+IC0JCS8qCj4+PiAt CQkgKiBhbGlnbiB1cCB0aGUgcmVzb2x1dGlvbiBmb3IgQ0FTVCBJUCwKPj4+IC0JCSAqIGJ1dCBs ZWF2ZSB0aGUgYnVmZmVyIHJlc29sdXRpb24gdW5jaGFuZ2VkCj4+PiAtCQkgKi8KPj4+IC0JCXY0 bF9ib3VuZF9hbGlnbl9pbWFnZSgmcV9kYXRhLT53X2FkanVzdGVkLAo+Pj4gLQkJCQkgICAgICBx X2RhdGEtPndfYWRqdXN0ZWQsICAvKiBhZGp1c3QgdXB3YXJkcyAqLwo+Pj4gLQkJCQkgICAgICBN WENfSlBFR19NQVhfV0lEVEgsCj4+PiAtCQkJCSAgICAgIHFfZGF0YS0+Zm10LT5oX2FsaWduLAo+ Pj4gLQkJCQkgICAgICAmcV9kYXRhLT5oX2FkanVzdGVkLAo+Pj4gLQkJCQkgICAgICBxX2RhdGEt PmhfYWRqdXN0ZWQsIC8qIGFkanVzdCB1cHdhcmRzICovCj4+PiAtCQkJCSAgICAgIE1YQ19KUEVH X01BWF9IRUlHSFQsCj4+PiAtCQkJCSAgICAgIHFfZGF0YS0+Zm10LT52X2FsaWduLAo+Pj4gLQkJ CQkgICAgICAwKTsKPj4+IC0JfSBlbHNlIHsKPj4+IC0JCS8qCj4+PiAtCQkgKiBhbGlnbiBkb3du IHRoZSByZXNvbHV0aW9uIGZvciBDQVNUIElQLAo+Pj4gLQkJICogYnV0IGxlYXZlIHRoZSBidWZm ZXIgcmVzb2x1dGlvbiB1bmNoYW5nZWQKPj4+IC0JCSAqLwo+Pj4gLQkJdjRsX2JvdW5kX2FsaWdu X2ltYWdlKCZxX2RhdGEtPndfYWRqdXN0ZWQsCj4+PiAtCQkJCSAgICAgIE1YQ19KUEVHX01JTl9X SURUSCwKPj4+IC0JCQkJICAgICAgcV9kYXRhLT53X2FkanVzdGVkLCAvKiBhZGp1c3QgZG93bndh cmRzKi8KPj4+IC0JCQkJICAgICAgcV9kYXRhLT5mbXQtPmhfYWxpZ24sCj4+PiAtCQkJCSAgICAg ICZxX2RhdGEtPmhfYWRqdXN0ZWQsCj4+PiAtCQkJCSAgICAgIE1YQ19KUEVHX01JTl9IRUlHSFQs Cj4+PiAtCQkJCSAgICAgIHFfZGF0YS0+aF9hZGp1c3RlZCwgLyogYWRqdXN0IGRvd253YXJkcyov Cj4+PiAtCQkJCSAgICAgIHFfZGF0YS0+Zm10LT52X2FsaWduLAo+Pj4gLQkJCQkgICAgICAwKTsK Pj4+IC0JfQo+Pj4gKwkvKgo+Pj4gKwkgKiBhbGlnbiB1cCB0aGUgcmVzb2x1dGlvbiBmb3IgQ0FT VCBJUCwKPj4+ICsJICogYnV0IGxlYXZlIHRoZSBidWZmZXIgcmVzb2x1dGlvbiB1bmNoYW5nZWQK Pj4+ICsJICovCj4+PiArCXY0bF9ib3VuZF9hbGlnbl9pbWFnZSgmcV9kYXRhLT53X2FkanVzdGVk LAo+Pj4gKwkJCSAgICAgIHFfZGF0YS0+d19hZGp1c3RlZCwgIC8qIGFkanVzdCB1cHdhcmRzICov Cj4+PiArCQkJICAgICAgTVhDX0pQRUdfTUFYX1dJRFRILAo+Pj4gKwkJCSAgICAgIHFfZGF0YS0+ Zm10LT5oX2FsaWduLAo+Pj4gKwkJCSAgICAgICZxX2RhdGEtPmhfYWRqdXN0ZWQsCj4+PiArCQkJ ICAgICAgcV9kYXRhLT5oX2FkanVzdGVkLCAvKiBhZGp1c3QgdXB3YXJkcyAqLwo+Pj4gKwkJCSAg ICAgIE1YQ19KUEVHX01BWF9IRUlHSFQsCj4+PiArCQkJICAgICAgcV9kYXRhLT5mbXQtPnZfYWxp Z24sCj4+PiArCQkJICAgICAgMCk7Cj4+Pgo+Pj4gICAgCWZvciAoaSA9IDA7IGkgPCBwaXhfbXAt Pm51bV9wbGFuZXM7IGkrKykgewo+Pj4gICAgCQlxX2RhdGEtPmJ5dGVzcGVybGluZVtpXSA9IHBp eF9tcC0+cGxhbmVfZm10W2ldLmJ5dGVzcGVybGluZTsKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0Cmxp bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFk Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK